@1money/component-ui 0.0.70 → 0.0.73

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (247) 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.d.ts +10 -2
  31. package/es/components/ProForm/ProForm.js +60 -24
  32. package/es/components/ProForm/ProFormDependency.js +4 -1
  33. package/es/components/ProForm/ProFormGroup.js +2 -2
  34. package/es/components/ProForm/ProFormItem.js +73 -36
  35. package/es/components/ProForm/ProFormList.js +3 -2
  36. package/es/components/ProForm/SchemaForm.d.ts +7 -0
  37. package/es/components/ProForm/SchemaForm.js +103 -0
  38. package/es/components/ProForm/Submitter.js +13 -3
  39. package/es/components/ProForm/context.d.ts +22 -3
  40. package/es/components/ProForm/context.js +49 -10
  41. package/es/components/ProForm/core/constants.d.ts +8 -1
  42. package/es/components/ProForm/core/constants.js +9 -6
  43. package/es/components/ProForm/core/hooks/useForm.js +174 -320
  44. package/es/components/ProForm/core/hooks/useFormCore.js +84 -178
  45. package/es/components/ProForm/core/interface.d.ts +33 -12
  46. package/es/components/ProForm/core/pathUtils.d.ts +6 -0
  47. package/es/components/ProForm/core/pathUtils.js +59 -0
  48. package/es/components/ProForm/core/runRules.d.ts +23 -0
  49. package/es/components/ProForm/core/runRules.js +233 -0
  50. package/es/components/ProForm/core/useFormItem.d.ts +10 -1
  51. package/es/components/ProForm/core/useFormItem.js +105 -61
  52. package/es/components/ProForm/fields/ProFormDatePicker.js +4 -1
  53. package/es/components/ProForm/fields/createProFormField.js +64 -59
  54. package/es/components/ProForm/hooks/useFieldRequest.js +7 -5
  55. package/es/components/ProForm/index.d.ts +11 -4
  56. package/es/components/ProForm/index.js +7 -2
  57. package/es/components/ProForm/interface.d.ts +89 -14
  58. package/es/components/ProForm/layouts/DialogForm.d.ts +5 -1
  59. package/es/components/ProForm/layouts/DialogForm.js +2 -1
  60. package/es/components/ProForm/layouts/DrawerForm.d.ts +5 -1
  61. package/es/components/ProForm/layouts/DrawerForm.js +2 -1
  62. package/es/components/ProForm/layouts/QueryFilter.d.ts +5 -2
  63. package/es/components/ProForm/layouts/QueryFilter.js +79 -13
  64. package/es/components/ProForm/layouts/useOverlayForm.js +23 -21
  65. package/es/components/ProForm/style/ProForm.css +6 -0
  66. package/es/components/ProForm/utils.d.ts +14 -3
  67. package/es/components/ProForm/utils.js +73 -70
  68. package/es/components/ProTable/ProTable.js +3 -2
  69. package/es/components/ProTable/core/useAwaitableReload.js +3 -2
  70. package/es/components/ProTable/useFetchData.js +4 -2
  71. package/es/components/Radio/Radio.js +3 -2
  72. package/es/components/Radio/RadioGroup.js +3 -2
  73. package/es/components/ResizeObserver/useResizeObserver.js +2 -2
  74. package/es/components/Segment/Segment.js +4 -2
  75. package/es/components/Select/Select.js +3 -2
  76. package/es/components/Select/SelectCustom.js +2 -2
  77. package/es/components/Select/useSelectShell.js +3 -2
  78. package/es/components/Slider/Slider.js +3 -2
  79. package/es/components/Switch/Switch.js +3 -2
  80. package/es/components/Table/Table.js +14 -28
  81. package/es/components/Table/VirtualTable.js +18 -28
  82. package/es/components/Table/core/columnUtil.d.ts +9 -0
  83. package/es/components/Table/core/columnUtil.js +34 -0
  84. package/es/components/Table/core/useTableColumns.d.ts +4 -13
  85. package/es/components/Table/core/useTableColumns.js +55 -24
  86. package/es/components/Table/core/useTableDataPipeline.d.ts +11 -16
  87. package/es/components/Table/core/useTableDataPipeline.js +66 -73
  88. package/es/components/Table/core/useTableExpand.js +3 -2
  89. package/es/components/Table/core/useTableSelection.js +7 -4
  90. package/es/components/Table/core/useTableSetup.js +4 -2
  91. package/es/components/Table/features/ExpandTrigger.d.ts +9 -3
  92. package/es/components/Table/features/ExpandTrigger.js +14 -8
  93. package/es/components/Table/features/FilterTrigger.js +21 -17
  94. package/es/components/Table/features/SelectionColumn.d.ts +11 -6
  95. package/es/components/Table/features/SelectionColumn.js +12 -5
  96. package/es/components/Table/features/SortTrigger.d.ts +4 -2
  97. package/es/components/Table/features/SortTrigger.js +8 -3
  98. package/es/components/Table/internal/kernel/Body/MeasureCell.js +2 -2
  99. package/es/components/Table/internal/kernel/Cell/index.js +2 -2
  100. package/es/components/Table/internal/kernel/Table.js +3 -3
  101. package/es/components/Table/internal/kernel/VirtualTable/index.js +2 -2
  102. package/es/components/Table/internal/kernel/hooks/useRowInfo.js +2 -2
  103. package/es/components/Table/internal/kernel/selector-context/context.js +3 -3
  104. package/es/components/Table/renderers/HeaderCell.js +3 -2
  105. package/es/components/Table/renderers/TableShell.d.ts +13 -0
  106. package/es/components/Table/renderers/TableShell.js +25 -0
  107. package/es/components/Table/style/Table.css +3 -0
  108. package/es/components/Tabs/Tabs.js +4 -2
  109. package/es/components/Tooltip/Tooltip.js +3 -2
  110. package/es/components/Tooltip/style/Tooltip.css +1 -0
  111. package/es/components/Tour/Tour.js +3 -2
  112. package/es/components/Trigger/Trigger.js +3 -2
  113. package/es/components/Typography/Typography.js +2 -2
  114. package/es/components/Typography/useTypographyEnhancements.js +3 -2
  115. package/es/components/Upload/Upload.js +2 -2
  116. package/es/components/Upload/UploadFileBar.js +2 -2
  117. package/es/components/VirtualList/VirtualList.js +3 -2
  118. package/es/components/VirtualList/hooks/useMobileTouchMove.js +2 -2
  119. package/es/components/VirtualList/hooks/useScrollTo.js +2 -2
  120. package/es/index.css +1 -1
  121. package/es/index.d.ts +2 -2
  122. package/es/index.js +2 -2
  123. package/lib/business/Dialog/VerificationDialog/hooks/useOtpVerification.js +9 -8
  124. package/lib/business/Dialog/VerificationDialog/hooks/useResendCountdown.js +3 -3
  125. package/lib/business/Select/Network/NetworkSelect.js +3 -3
  126. package/lib/components/Accordion/Accordion.js +5 -4
  127. package/lib/components/Calendar/Calendar.js +6 -5
  128. package/lib/components/Carousel/Carousel.js +5 -4
  129. package/lib/components/Checkbox/BaseCheckbox.js +5 -4
  130. package/lib/components/Checkbox/Checkbox.js +3 -3
  131. package/lib/components/Checkbox/CheckboxGroup.js +7 -6
  132. package/lib/components/CoachMark/CoachMark.js +7 -6
  133. package/lib/components/Copy/Copy.js +3 -3
  134. package/lib/components/Dialog/Dialog.js +6 -6
  135. package/lib/components/Drawer/Drawer.js +10 -10
  136. package/lib/components/Input/Amount/Amount.js +6 -5
  137. package/lib/components/Input/Input/Input.js +7 -6
  138. package/lib/components/Input/Mask/Mask.js +9 -8
  139. package/lib/components/Input/OTP/OTP.js +9 -8
  140. package/lib/components/Input/Password/Password.js +6 -5
  141. package/lib/components/Input/Search/Search.js +8 -7
  142. package/lib/components/Input/TextArea/TextArea.js +5 -4
  143. package/lib/components/Input/Trade/Trade.js +5 -4
  144. package/lib/components/Input/useAmountInput.js +13 -11
  145. package/lib/components/Input/useSyncRef.js +4 -3
  146. package/lib/components/Navigation/Nav.js +3 -3
  147. package/lib/components/Navigation/Navigation.js +10 -7
  148. package/lib/components/Pagination/Pagination.js +4 -3
  149. package/lib/components/Pagination/usePagination.js +7 -6
  150. package/lib/components/Popconfirm/Popconfirm.js +3 -3
  151. package/lib/components/Portal/Portal.js +4 -4
  152. package/lib/components/ProForm/ProForm.d.ts +10 -2
  153. package/lib/components/ProForm/ProForm.js +66 -30
  154. package/lib/components/ProForm/ProFormDependency.js +4 -1
  155. package/lib/components/ProForm/ProFormGroup.js +3 -3
  156. package/lib/components/ProForm/ProFormItem.js +72 -34
  157. package/lib/components/ProForm/ProFormList.js +10 -9
  158. package/lib/components/ProForm/SchemaForm.d.ts +7 -0
  159. package/lib/components/ProForm/SchemaForm.js +110 -0
  160. package/lib/components/ProForm/Submitter.js +15 -5
  161. package/lib/components/ProForm/context.d.ts +22 -3
  162. package/lib/components/ProForm/context.js +49 -10
  163. package/lib/components/ProForm/core/constants.d.ts +8 -1
  164. package/lib/components/ProForm/core/constants.js +10 -7
  165. package/lib/components/ProForm/core/hooks/useForm.js +181 -327
  166. package/lib/components/ProForm/core/hooks/useFormCore.js +96 -190
  167. package/lib/components/ProForm/core/interface.d.ts +33 -12
  168. package/lib/components/ProForm/core/pathUtils.d.ts +6 -0
  169. package/lib/components/ProForm/core/pathUtils.js +68 -0
  170. package/lib/components/ProForm/core/runRules.d.ts +23 -0
  171. package/lib/components/ProForm/core/runRules.js +242 -0
  172. package/lib/components/ProForm/core/useFormItem.d.ts +10 -1
  173. package/lib/components/ProForm/core/useFormItem.js +106 -62
  174. package/lib/components/ProForm/fields/ProFormDatePicker.js +4 -1
  175. package/lib/components/ProForm/fields/createProFormField.js +63 -58
  176. package/lib/components/ProForm/hooks/useFieldRequest.js +9 -7
  177. package/lib/components/ProForm/index.d.ts +11 -4
  178. package/lib/components/ProForm/index.js +16 -1
  179. package/lib/components/ProForm/interface.d.ts +89 -14
  180. package/lib/components/ProForm/layouts/DialogForm.d.ts +5 -1
  181. package/lib/components/ProForm/layouts/DialogForm.js +2 -1
  182. package/lib/components/ProForm/layouts/DrawerForm.d.ts +5 -1
  183. package/lib/components/ProForm/layouts/DrawerForm.js +2 -1
  184. package/lib/components/ProForm/layouts/QueryFilter.d.ts +5 -2
  185. package/lib/components/ProForm/layouts/QueryFilter.js +84 -18
  186. package/lib/components/ProForm/layouts/useOverlayForm.js +27 -27
  187. package/lib/components/ProForm/style/ProForm.css +6 -0
  188. package/lib/components/ProForm/utils.d.ts +14 -3
  189. package/lib/components/ProForm/utils.js +91 -74
  190. package/lib/components/ProTable/ProTable.js +10 -9
  191. package/lib/components/ProTable/core/useAwaitableReload.js +6 -5
  192. package/lib/components/ProTable/useFetchData.js +15 -13
  193. package/lib/components/Radio/Radio.js +6 -5
  194. package/lib/components/Radio/RadioGroup.js +5 -4
  195. package/lib/components/ResizeObserver/useResizeObserver.js +4 -3
  196. package/lib/components/Segment/Segment.js +7 -5
  197. package/lib/components/Select/Select.js +23 -22
  198. package/lib/components/Select/SelectCustom.js +8 -8
  199. package/lib/components/Select/useSelectShell.js +5 -4
  200. package/lib/components/Slider/Slider.js +6 -5
  201. package/lib/components/Switch/Switch.js +5 -4
  202. package/lib/components/Table/Table.js +13 -27
  203. package/lib/components/Table/VirtualTable.js +17 -27
  204. package/lib/components/Table/core/columnUtil.d.ts +9 -0
  205. package/lib/components/Table/core/columnUtil.js +42 -0
  206. package/lib/components/Table/core/useTableColumns.d.ts +4 -13
  207. package/lib/components/Table/core/useTableColumns.js +57 -26
  208. package/lib/components/Table/core/useTableDataPipeline.d.ts +11 -16
  209. package/lib/components/Table/core/useTableDataPipeline.js +73 -80
  210. package/lib/components/Table/core/useTableExpand.js +6 -5
  211. package/lib/components/Table/core/useTableSelection.js +13 -10
  212. package/lib/components/Table/core/useTableSetup.js +8 -5
  213. package/lib/components/Table/features/ExpandTrigger.d.ts +9 -3
  214. package/lib/components/Table/features/ExpandTrigger.js +14 -8
  215. package/lib/components/Table/features/FilterTrigger.js +21 -17
  216. package/lib/components/Table/features/SelectionColumn.d.ts +11 -6
  217. package/lib/components/Table/features/SelectionColumn.js +12 -5
  218. package/lib/components/Table/features/SortTrigger.d.ts +4 -2
  219. package/lib/components/Table/features/SortTrigger.js +8 -3
  220. package/lib/components/Table/internal/kernel/Body/MeasureCell.js +3 -3
  221. package/lib/components/Table/internal/kernel/Cell/index.js +4 -4
  222. package/lib/components/Table/internal/kernel/Table.js +7 -6
  223. package/lib/components/Table/internal/kernel/VirtualTable/index.js +4 -4
  224. package/lib/components/Table/internal/kernel/hooks/useRowInfo.js +3 -3
  225. package/lib/components/Table/internal/kernel/selector-context/context.js +6 -5
  226. package/lib/components/Table/renderers/HeaderCell.js +3 -2
  227. package/lib/components/Table/renderers/TableShell.d.ts +13 -0
  228. package/lib/components/Table/renderers/TableShell.js +31 -0
  229. package/lib/components/Table/style/Table.css +3 -0
  230. package/lib/components/Tabs/Tabs.js +7 -5
  231. package/lib/components/Tooltip/Tooltip.js +5 -4
  232. package/lib/components/Tooltip/style/Tooltip.css +1 -0
  233. package/lib/components/Tour/Tour.js +7 -6
  234. package/lib/components/Trigger/Trigger.js +5 -4
  235. package/lib/components/Typography/Typography.js +5 -4
  236. package/lib/components/Typography/useTypographyEnhancements.js +8 -7
  237. package/lib/components/Upload/Upload.js +5 -4
  238. package/lib/components/Upload/UploadFileBar.js +4 -3
  239. package/lib/components/VirtualList/VirtualList.js +8 -7
  240. package/lib/components/VirtualList/hooks/useMobileTouchMove.js +4 -3
  241. package/lib/components/VirtualList/hooks/useScrollTo.js +3 -3
  242. package/lib/index.css +1 -1
  243. package/lib/index.d.ts +2 -2
  244. package/lib/index.js +13 -1
  245. package/package.json +2 -2
  246. package/scripts/mcp-server/examples.generated.json +54 -0
  247. package/scripts/mcp-server/index.generated.json +1212 -80
@@ -1,13 +1,14 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
1
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
3
  import React, { memo, useEffect } from 'react';
3
4
  import { Col } from '../Grid';
4
5
  import { TypographyBody, TypographyLabel } from '../Typography';
5
6
  import { default as classnames, joinCls } from '../../utils/classnames';
6
7
  import { useFormItem } from './core/useFormItem';
7
- import { FORM_ERROR_COLOR, FORM_ERROR_SIZE, FORM_DESCRIPTION_COLOR, FORM_DESCRIPTION_SIZE, FORM_FEEDBACK_COLOR, FORM_FEEDBACK_SIZE, FORM_LABEL_COLOR, FORM_LABEL_SIZE } from './core/constants';
8
+ import { FORM_ERROR_COLOR, FORM_ERROR_SIZE, FORM_WARNING_COLOR, FORM_WARNING_SIZE, FORM_DESCRIPTION_COLOR, FORM_DESCRIPTION_SIZE, FORM_FEEDBACK_COLOR, FORM_FEEDBACK_SIZE, FORM_LABEL_COLOR, FORM_LABEL_SIZE } from './core/constants';
8
9
  import { useProFormContext } from './context';
9
10
  import { DEFAULT_COL_SPAN } from './constants';
10
- import { valueEnumToOptions } from './utils';
11
+ import { valueEnumToOptions, formatDateByPattern, DATE_FORMAT, DATE_TIME_FORMAT } from './utils';
11
12
  var EMPTY_TEXT_DEFAULT = '-';
12
13
  // ---------------------------------------------------------------------------
13
14
  // Read-mode rendering for each supported valueType
@@ -37,7 +38,9 @@ function renderByValueType(valueType, value, props) {
37
38
  return match ? match.label : String(value);
38
39
  }
39
40
  case 'date':
41
+ return value instanceof Date ? formatDateByPattern(value, DATE_FORMAT) : String(value);
40
42
  case 'dateTime':
43
+ return value instanceof Date ? formatDateByPattern(value, DATE_TIME_FORMAT) : String(value);
41
44
  case 'text':
42
45
  default:
43
46
  return String(value);
@@ -77,14 +80,14 @@ var ReadonlyChild = /*#__PURE__*/memo(ReadonlyChildBase);
77
80
  var ConvertValueChildBase = function ConvertValueChildBase(_ref2) {
78
81
  var name = _ref2.name,
79
82
  convertValue = _ref2.convertValue,
83
+ _ref2$valuePropName = _ref2.valuePropName,
84
+ valuePropName = _ref2$valuePropName === void 0 ? 'value' : _ref2$valuePropName,
80
85
  children = _ref2.children;
81
86
  var _useProFormContext2 = useProFormContext(),
82
87
  values = _useProFormContext2.values;
83
88
  var raw = values[name];
84
89
  var converted = convertValue ? convertValue(raw, name) : raw;
85
- return /*#__PURE__*/React.cloneElement(children, {
86
- value: converted
87
- });
90
+ return /*#__PURE__*/React.cloneElement(children, _defineProperty({}, valuePropName, converted));
88
91
  };
89
92
  ConvertValueChildBase.displayName = 'ProFormItemConvertValue';
90
93
  var ConvertValueChild = /*#__PURE__*/memo(ConvertValueChildBase);
@@ -92,38 +95,57 @@ var ConvertValueChild = /*#__PURE__*/memo(ConvertValueChildBase);
92
95
  // ProFormItem
93
96
  // ---------------------------------------------------------------------------
94
97
  var ProFormItemBase = function ProFormItemBase(props) {
95
- var children = props.children,
96
- name = props.name,
97
- label = props.label,
98
- description = props.description,
99
- rules = props.rules,
100
- required = props.required,
101
- feedback = props.feedback,
102
- validateStatus = props.validateStatus,
103
- _props$className = props.className,
104
- className = _props$className === void 0 ? '' : _props$className,
105
- _props$prefixCls = props.prefixCls,
106
- prefixCls = _props$prefixCls === void 0 ? 'form-item' : _props$prefixCls,
107
- hidden = props.hidden,
108
- transform = props.transform,
109
- convertValue = props.convertValue,
110
- valueType = props.valueType,
111
- readonlyRender = props.readonlyRender,
112
- colProps = props.colProps,
113
- modeProp = props.mode,
114
- _props$emptyText = props.emptyText,
115
- emptyText = _props$emptyText === void 0 ? EMPTY_TEXT_DEFAULT : _props$emptyText,
116
- valueEnum = props.valueEnum;
117
98
  var ctx = useProFormContext();
99
+ // Form-level `formItemProps` act as DEFAULTS; props explicitly set on the
100
+ // item win. JSX frequently passes `undefined` for unset props (e.g. the
101
+ // createProFormField pass-through), so only defined values may override.
102
+ var mergedProps = props;
103
+ if (ctx.formItemProps) {
104
+ var merged = Object.assign({}, ctx.formItemProps);
105
+ for (var _i = 0, _Object$keys = Object.keys(props); _i < _Object$keys.length; _i++) {
106
+ var key = _Object$keys[_i];
107
+ var value = props[key];
108
+ if (value !== undefined) merged[key] = value;
109
+ }
110
+ mergedProps = merged;
111
+ }
112
+ var _mergedProps = mergedProps,
113
+ children = _mergedProps.children,
114
+ name = _mergedProps.name,
115
+ label = _mergedProps.label,
116
+ description = _mergedProps.description,
117
+ rules = _mergedProps.rules,
118
+ required = _mergedProps.required,
119
+ feedback = _mergedProps.feedback,
120
+ validateStatus = _mergedProps.validateStatus,
121
+ _mergedProps$classNam = _mergedProps.className,
122
+ className = _mergedProps$classNam === void 0 ? '' : _mergedProps$classNam,
123
+ _mergedProps$prefixCl = _mergedProps.prefixCls,
124
+ prefixCls = _mergedProps$prefixCl === void 0 ? 'form-item' : _mergedProps$prefixCl,
125
+ hidden = _mergedProps.hidden,
126
+ transform = _mergedProps.transform,
127
+ convertValue = _mergedProps.convertValue,
128
+ valueType = _mergedProps.valueType,
129
+ readonlyRender = _mergedProps.readonlyRender,
130
+ colProps = _mergedProps.colProps,
131
+ modeProp = _mergedProps.mode,
132
+ _mergedProps$emptyTex = _mergedProps.emptyText,
133
+ emptyText = _mergedProps$emptyTex === void 0 ? EMPTY_TEXT_DEFAULT : _mergedProps$emptyTex,
134
+ valueEnum = _mergedProps.valueEnum,
135
+ valuePropName = _mergedProps.valuePropName,
136
+ validateDebounce = _mergedProps.validateDebounce;
118
137
  var mergedMode = modeProp !== null && modeProp !== void 0 ? modeProp : ctx.mode;
119
138
  var isReadonly = mergedMode === 'read';
120
139
  var _useFormItem = useFormItem({
121
140
  name: name,
122
141
  rules: rules,
123
142
  required: required,
124
- validateStatus: validateStatus
143
+ validateStatus: validateStatus,
144
+ valuePropName: valuePropName,
145
+ validateDebounce: validateDebounce
125
146
  }),
126
147
  fieldError = _useFormItem.fieldError,
148
+ fieldWarning = _useFormItem.fieldWarning,
127
149
  isRequired = _useFormItem.isRequired,
128
150
  size = _useFormItem.size,
129
151
  labelAlign = _useFormItem.labelAlign,
@@ -137,6 +159,14 @@ var ProFormItemBase = function ProFormItemBase(props) {
137
159
  ctx.unregisterTransform(name);
138
160
  };
139
161
  }, [name, transform, ctx.registerTransform, ctx.unregisterTransform]);
162
+ // Register / unregister valueType (drives valueType-aware dateFormatter)
163
+ useEffect(function () {
164
+ if (!name || !valueType) return;
165
+ ctx.registerValueType(name, valueType);
166
+ return function () {
167
+ ctx.unregisterValueType(name);
168
+ };
169
+ }, [name, valueType, ctx.registerValueType, ctx.unregisterValueType]);
140
170
  if (hidden) return null;
141
171
  var controlChild;
142
172
  if (isReadonly) {
@@ -156,6 +186,7 @@ var ProFormItemBase = function ProFormItemBase(props) {
156
186
  controlChild = _jsx(ConvertValueChild, {
157
187
  name: name,
158
188
  convertValue: convertValue,
189
+ valuePropName: valuePropName,
159
190
  children: injected
160
191
  });
161
192
  } else {
@@ -164,7 +195,7 @@ var ProFormItemBase = function ProFormItemBase(props) {
164
195
  }
165
196
  var classes = classnames(prefixCls);
166
197
  var shell = _jsxs("div", {
167
- className: classes(undefined, joinCls(size === 'small' && classes('small'), className)),
198
+ className: classes(undefined, joinCls(classes(size), className)),
168
199
  children: [label && _jsxs("div", {
169
200
  className: classes('label-wrapper', joinCls(classes('label-wrapper-vertical'), labelAlign && classes("label-wrapper-".concat(labelAlign)))),
170
201
  children: [_jsx(TypographyLabel, {
@@ -188,7 +219,13 @@ var ProFormItemBase = function ProFormItemBase(props) {
188
219
  size: FORM_ERROR_SIZE,
189
220
  color: FORM_ERROR_COLOR,
190
221
  children: fieldError
191
- }), !fieldError && feedback && _jsx(TypographyBody, {
222
+ }), !fieldError && fieldWarning && _jsx(TypographyBody, {
223
+ as: "div",
224
+ className: classes('warning'),
225
+ size: FORM_WARNING_SIZE,
226
+ color: FORM_WARNING_COLOR,
227
+ children: fieldWarning
228
+ }), !fieldError && !fieldWarning && feedback && _jsx(TypographyBody, {
192
229
  as: "div",
193
230
  className: classes('feedback'),
194
231
  size: FORM_FEEDBACK_SIZE,
@@ -198,12 +235,12 @@ var ProFormItemBase = function ProFormItemBase(props) {
198
235
  })]
199
236
  });
200
237
  if (ctx.grid) {
201
- var merged = Object.assign(Object.assign({}, ctx.colProps), colProps);
202
- var _merged$span = merged.span,
238
+ var _merged = Object.assign(Object.assign({}, ctx.colProps), colProps);
239
+ var _merged$span = _merged.span,
203
240
  span = _merged$span === void 0 ? DEFAULT_COL_SPAN : _merged$span,
204
- sm = merged.sm,
205
- md = merged.md,
206
- lg = merged.lg;
241
+ sm = _merged.sm,
242
+ md = _merged.md,
243
+ lg = _merged.lg;
207
244
  return _jsx(Col, {
208
245
  span: span,
209
246
  sm: sm,
@@ -217,4 +254,4 @@ var ProFormItemBase = function ProFormItemBase(props) {
217
254
  ProFormItemBase.displayName = 'ProFormItem';
218
255
  export var ProFormItem = /*#__PURE__*/memo(ProFormItemBase);
219
256
  export default ProFormItem;
220
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtSXRlbS5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtSXRlbS50c3giXSwibmFtZXMiOlsianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIlJlYWN0IiwibWVtbyIsInVzZUVmZmVjdCIsIkNvbCIsIlR5cG9ncmFwaHlCb2R5IiwiVHlwb2dyYXBoeUxhYmVsIiwiZGVmYXVsdCIsImNsYXNzbmFtZXMiLCJqb2luQ2xzIiwidXNlRm9ybUl0ZW0iLCJGT1JNX0VSUk9SX0NPTE9SIiwiRk9STV9FUlJPUl9TSVpFIiwiRk9STV9ERVNDUklQVElPTl9DT0xPUiIsIkZPUk1fREVTQ1JJUFRJT05fU0laRSIsIkZPUk1fRkVFREJBQ0tfQ09MT1IiLCJGT1JNX0ZFRURCQUNLX1NJWkUiLCJGT1JNX0xBQkVMX0NPTE9SIiwiRk9STV9MQUJFTF9TSVpFIiwidXNlUHJvRm9ybUNvbnRleHQiLCJERUZBVUxUX0NPTF9TUEFOIiwidmFsdWVFbnVtVG9PcHRpb25zIiwiRU1QVFlfVEVYVF9ERUZBVUxUIiwicmVuZGVyQnlWYWx1ZVR5cGUiLCJ2YWx1ZVR5cGUiLCJ2YWx1ZSIsInByb3BzIiwidW5kZWZpbmVkIiwicmVwZWF0IiwiU3RyaW5nIiwibGVuZ3RoIiwibnVtIiwiTnVtYmVyIiwiaXNOYU4iLCJ0b0xvY2FsZVN0cmluZyIsInZhbHVlRW51bSIsIm9wdGlvbnMiLCJtYXRjaCIsImZpbmQiLCJvIiwibGFiZWwiLCJSZWFkb25seUNoaWxkQmFzZSIsIl9yZWYiLCJuYW1lIiwiY29udmVydFZhbHVlIiwicmVhZG9ubHlSZW5kZXIiLCJlbXB0eVRleHQiLCJfdXNlUHJvRm9ybUNvbnRleHQiLCJ2YWx1ZXMiLCJyYXciLCJub2RlIiwiY2hpbGRyZW4iLCJyZW5kZXJlZCIsImRpc3BsYXlOYW1lIiwiUmVhZG9ubHlDaGlsZCIsIkNvbnZlcnRWYWx1ZUNoaWxkQmFzZSIsIl9yZWYyIiwiX3VzZVByb0Zvcm1Db250ZXh0MiIsImNvbnZlcnRlZCIsImNsb25lRWxlbWVudCIsIkNvbnZlcnRWYWx1ZUNoaWxkIiwiUHJvRm9ybUl0ZW1CYXNlIiwiZGVzY3JpcHRpb24iLCJydWxlcyIsInJlcXVpcmVkIiwiZmVlZGJhY2siLCJ2YWxpZGF0ZVN0YXR1cyIsIl9wcm9wcyRjbGFzc05hbWUiLCJjbGFzc05hbWUiLCJfcHJvcHMkcHJlZml4Q2xzIiwicHJlZml4Q2xzIiwiaGlkZGVuIiwidHJhbnNmb3JtIiwiY29sUHJvcHMiLCJtb2RlUHJvcCIsIm1vZGUiLCJfcHJvcHMkZW1wdHlUZXh0IiwiY3R4IiwibWVyZ2VkTW9kZSIsImlzUmVhZG9ubHkiLCJfdXNlRm9ybUl0ZW0iLCJmaWVsZEVycm9yIiwiaXNSZXF1aXJlZCIsInNpemUiLCJsYWJlbEFsaWduIiwicmVxdWlyZWRNYXJrIiwiaW5qZWN0RmllbGQiLCJyZWdpc3RlclRyYW5zZm9ybSIsInVucmVnaXN0ZXJUcmFuc2Zvcm0iLCJjb250cm9sQ2hpbGQiLCJpbmplY3RlZCIsImlzVmFsaWRFbGVtZW50IiwiY2xhc3NlcyIsInNoZWxsIiwiY29uY2F0IiwiYXMiLCJjb2xvciIsImdyaWQiLCJtZXJnZWQiLCJPYmplY3QiLCJhc3NpZ24iLCJfbWVyZ2VkJHNwYW4iLCJzcGFuIiwic20iLCJtZCIsImxnIiwiUHJvRm9ybUl0ZW0iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLEdBQUcsSUFBSUMsSUFBSSxFQUFFQyxJQUFJLElBQUlDLEtBQUssUUFBUSxtQkFBbUI7QUNBOUQsT0FBT0MsS0FBSyxJQUFJQyxJQUFJLEVBQUVDLFNBQVMsUUFBUSxPQUFPO0FBRTlDLFNBQVNDLEdBQUcsUUFBUSxTQUFTO0FBQzdCLFNBQVNDLGNBQWMsRUFBRUMsZUFBZSxRQUFRLGVBQWU7QUFDL0QsU0FBU0MsT0FBTyxJQUFJQyxVQUFVLEVBQUVDLE9BQU8sUUFBUSx3QkFBd0I7QUFDdkUsU0FBU0MsV0FBVyxRQUFRLG9CQUFvQjtBQUNoRCxTQUNFQyxnQkFBZ0IsRUFDaEJDLGVB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QUNiMEYsRUFBRSxFQUFDLEtBQUs7UUFDUjNCLFNBQVMsRUFBRXdCLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFDOUJULElBQUksRUFBRW5FLGtCQUFrQjtRQUN4QmdGLEtBQUssRUFBRWpGLG1CQUFtQjtRQUFBb0MsUUFBQSxFQUV6QmM7TUFBUSxDQUFBLENBRVo7SUFBQSxDQUFBLENBQ0c7RUFBQSxDQUFBLENBRVQ7RUFFRCxJQUFJWSxHQUFHLENBQUNvQixJQUFJLEVBQUU7SUFDWixJQUFNQyxNQUFNLEdBQUFDLE1BQUEsQ0FBQUMsTUFBQSxDQUFBRCxNQUFBLENBQUFDLE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFBUXZCLEdBQUcsQ0FBQ0osUUFBUSxDQUFBLEVBQUtBLFFBQVEsQ0FBRTtJQUMvQyxJQUFBNEIsWUFBQSxHQUFnREgsTUFBTSxDQUE5Q0ksSUFBSTtNQUFKQSxJQUFJLEdBQUFELFlBQUEsY0FBR2pGLGdCQUFnQixHQUFBaUYsWUFBQTtNQUFFRSxFQUFFLEdBQWFMLE1BQU0sQ0FBckJLLEVBQUU7TUFBRUMsRUFBRSxHQUFTTixNQUFNLENBQWpCTSxFQUFFO01BQUVDLEVBQUUsR0FBS1AsTUFBTSxDQUFiTyxFQUFFO0lBQzNDLE9BQU8zRyxJQUFBLENBQUNNLEdBQUcsRUFBQTtNQUFDa0csSUFBSSxFQUFFQSxJQUFJO01BQUVDLEVBQUUsRUFBRUEsRUFBRTtNQUFFQyxFQUFFLEVBQUVBLEVBQUU7TUFBRUMsRUFBRSxFQUFFQSxFQUFFO01BQUF0RCxRQUFBLEVBQUcwQztJQUFLLENBQUEsQ0FBTztFQUMvRDtFQUVBLE9BQU9BLEtBQUs7QUFDZCxDQUFDO0FBRURoQyxlQUFlLENBQUNSLFdBQVcsR0FBRyxhQUFhO0FBRTNDLE9BQU8sSUFBTXFELFdBQVcsZ0JBQUd4RyxJQUFJLENBQUMyRCxlQUFlLENBQUM7QUFFaEQsZUFBZTZDLFdBQVciLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL1Byb0Zvcm1JdGVtLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBSZWFjdCwgeyBtZW1vLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBDb2wgfSBmcm9tICcuLi9HcmlkJztcbmltcG9ydCB7IFR5cG9ncmFwaHlCb2R5LCBUeXBvZ3JhcGh5TGFiZWwgfSBmcm9tICcuLi9UeXBvZ3JhcGh5JztcbmltcG9ydCB7IGRlZmF1bHQgYXMgY2xhc3NuYW1lcywgam9pbkNscyB9IGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgdXNlRm9ybUl0ZW0gfSBmcm9tICcuL2NvcmUvdXNlRm9ybUl0ZW0nO1xuaW1wb3J0IHsgRk9STV9FUlJPUl9DT0xPUiwgRk9STV9FUlJPUl9TSVpFLCBGT1JNX0RFU0NSSVBUSU9OX0NPTE9SLCBGT1JNX0RFU0NSSVBUSU9OX1NJWkUsIEZPUk1fRkVFREJBQ0tfQ09MT1IsIEZPUk1fRkVFREJBQ0tfU0laRSwgRk9STV9MQUJFTF9DT0xPUiwgRk9STV9MQUJFTF9TSVpFLCB9IGZyb20gJy4vY29yZS9jb25zdGFudHMnO1xuaW1wb3J0IHsgdXNlUHJvRm9ybUNvbnRleHQgfSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IHsgREVGQVVMVF9DT0xfU1BBTiB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IHZhbHVlRW51bVRvT3B0aW9ucyB9IGZyb20gJy4vdXRpbHMnO1xuY29uc3QgRU1QVFlfVEVYVF9ERUZBVUxUID0gJy0nO1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZWFkLW1vZGUgcmVuZGVyaW5nIGZvciBlYWNoIHN1cHBvcnRlZCB2YWx1ZVR5cGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gcmVuZGVyQnlWYWx1ZVR5cGUodmFsdWVUeXBlLCB2YWx1ZSwgcHJvcHMpIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycpXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIHN3aXRjaCAodmFsdWVUeXBlKSB7XG4gICAgICAgIGNhc2UgJ3Bhc3N3b3JkJzpcbiAgICAgICAgICAgIHJldHVybiAnKicucmVwZWF0KFN0cmluZyh2YWx1ZSkubGVuZ3RoKTtcbiAgICAgICAgY2FzZSAnc3dpdGNoJzpcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZSA/ICdPbicgOiAnT2ZmJztcbiAgICAgICAgY2FzZSAnZGlnaXQnOiB7XG4gICAgICAgICAgICBjb25zdCBudW0gPSBOdW1iZXIodmFsdWUpO1xuICAgICAgICAgICAgaWYgKE51bWJlci5pc05hTihudW0pKVxuICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIG51bS50b0xvY2FsZVN0cmluZygpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICAgIGNhc2UgJ3JhZGlvJzpcbiAgICAgICAgY2FzZSAndGFnJzoge1xuICAgICAgICAgICAgaWYgKCFwcm9wcy52YWx1ZUVudW0pXG4gICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gdmFsdWVFbnVtVG9PcHRpb25zKHByb3BzLnZhbHVlRW51bSk7XG4gICAgICAgICAgICBjb25zdCBtYXRjaCA9IG9wdGlvbnMuZmluZCgobykgPT4gU3RyaW5nKG8udmFsdWUpID09PSBTdHJpbmcodmFsdWUpKTtcbiAgICAgICAgICAgIHJldHVybiBtYXRjaCA/IG1hdGNoLmxhYmVsIDogU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgY2FzZSAnZGF0ZVRpbWUnOlxuICAgICAgICBjYXNlICd0ZXh0JzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgIH1cbn1cbmNvbnN0IFJlYWRvbmx5Q2hpbGRCYXNlID0gKHsgbmFtZSwgdmFsdWVUeXBlLCB2YWx1ZUVudW0sIGNvbnZlcnRWYWx1ZSwgcmVhZG9ubHlSZW5kZXIsIGVtcHR5VGV4dCwgfSkgPT4ge1xuICAgIGNvbnN0IHsgdmFsdWVzIH0gPSB1c2VQcm9Gb3JtQ29udGV4dCgpO1xuICAgIGNvbnN0IHJhdyA9IG5hbWUgPyB2YWx1ZXNbbmFtZV0gOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgdmFsdWUgPSBjb252ZXJ0VmFsdWUgJiYgbmFtZSA/IGNvbnZlcnRWYWx1ZShyYXcsIG5hbWUpIDogcmF3O1xuICAgIGlmIChyZWFkb25seVJlbmRlcikge1xuICAgICAgICBjb25zdCBub2RlID0gcmVhZG9ubHlSZW5kZXIodmFsdWUsIHZhbHVlcyk7XG4gICAgICAgIHJldHVybiBfanN4KFwic3BhblwiLCB7IGNoaWxkcmVuOiBub2RlICE9PSBudWxsICYmIG5vZGUgIT09IHZvaWQgMCA/IG5vZGUgOiBlbXB0eVRleHQgfSk7XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJykge1xuICAgICAgICByZXR1cm4gX2pzeChcInNwYW5cIiwgeyBjaGlsZHJlbjogZW1wdHlUZXh0IH0pO1xuICAgIH1cbiAgICBjb25zdCByZW5kZXJlZCA9IHJlbmRlckJ5VmFsdWVUeXBlKHZhbHVlVHlwZSwgdmFsdWUsIHsgdmFsdWVFbnVtIH0pO1xuICAgIHJldHVybiBfanN4KFwic3BhblwiLCB7IGNoaWxkcmVuOiByZW5kZXJlZCAhPT0gbnVsbCAmJiByZW5kZXJlZCAhPT0gdm9pZCAwID8gcmVuZGVyZWQgOiBlbXB0eVRleHQgfSk7XG59O1xuUmVhZG9ubHlDaGlsZEJhc2UuZGlzcGxheU5hbWUgPSAnUHJvRm9ybUl0ZW1SZWFkb25seSc7XG5jb25zdCBSZWFkb25seUNoaWxkID0gbWVtbyhSZWFkb25seUNoaWxkQmFzZSk7XG5jb25zdCBDb252ZXJ0VmFsdWVDaGlsZEJhc2UgPSAoeyBuYW1lLCBjb252ZXJ0VmFsdWUsIGNoaWxkcmVuIH0pID0+IHtcbiAgICBjb25zdCB7IHZhbHVlcyB9ID0gdXNlUHJvRm9ybUNvbnRleHQoKTtcbiAgICBjb25zdCByYXcgPSB2YWx1ZXNbbmFtZV07XG4gICAgY29uc3QgY29udmVydGVkID0gY29udmVydFZhbHVlID8gY29udmVydFZhbHVlKHJhdywgbmFtZSkgOiByYXc7XG4gICAgcmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudChjaGlsZHJlbiwgeyB2YWx1ZTogY29udmVydGVkIH0pO1xufTtcbkNvbnZlcnRWYWx1ZUNoaWxkQmFzZS5kaXNwbGF5TmFtZSA9ICdQcm9Gb3JtSXRlbUNvbnZlcnRWYWx1ZSc7XG5jb25zdCBDb252ZXJ0VmFsdWVDaGlsZCA9IG1lbW8oQ29udmVydFZhbHVlQ2hpbGRCYXNlKTtcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUHJvRm9ybUl0ZW1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuY29uc3QgUHJvRm9ybUl0ZW1CYXNlID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyBjaGlsZHJlbiwgbmFtZSwgbGFiZWwsIGRlc2NyaXB0aW9uLCBydWxlcywgcmVxdWlyZWQsIGZlZWRiYWNrLCB2YWxpZGF0ZVN0YXR1cywgY2xhc3NOYW1lID0gJycsIHByZWZpeENscyA9ICdmb3JtLWl0ZW0nLCBoaWRkZW4sIHRyYW5zZm9ybSwgY29udmVydFZhbHVlLCB2YWx1ZVR5cGUsIHJlYWRvbmx5UmVuZGVyLCBjb2xQcm9wcywgbW9kZTogbW9kZVByb3AsIGVtcHR5VGV4dCA9IEVNUFRZX1RFWFRfREVGQVVMVCwgdmFsdWVFbnVtLCB9ID0gcHJvcHM7XG4gICAgY29uc3QgY3R4ID0gdXNlUHJvRm9ybUNvbnRleHQoKTtcbiAgICBjb25zdCBtZXJnZWRNb2RlID0gbW9kZVByb3AgIT09IG51bGwgJiYgbW9kZVByb3AgIT09IHZvaWQgMCA/IG1vZGVQcm9wIDogY3R4Lm1vZGU7XG4gICAgY29uc3QgaXNSZWFkb25seSA9IG1lcmdlZE1vZGUgPT09ICdyZWFkJztcbiAgICBjb25zdCB7IGZpZWxkRXJyb3IsIGlzUmVxdWlyZWQsIHNpemUsIGxhYmVsQWxpZ24sIHJlcXVpcmVkTWFyaywgaW5qZWN0RmllbGQsIH0gPSB1c2VGb3JtSXRlbSh7IG5hbWUsIHJ1bGVzLCByZXF1aXJlZCwgdmFsaWRhdGVTdGF0dXMgfSk7XG4gICAgLy8gUmVnaXN0ZXIgLyB1bnJlZ2lzdGVyIHRyYW5zZm9ybVxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghbmFtZSB8fCAhdHJhbnNmb3JtKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjdHgucmVnaXN0ZXJUcmFuc2Zvcm0obmFtZSwgdHJhbnNmb3JtKTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGN0eC51bnJlZ2lzdGVyVHJhbnNmb3JtKG5hbWUpO1xuICAgICAgICB9O1xuICAgIH0sIFtuYW1lLCB0cmFuc2Zvcm0sIGN0eC5yZWdpc3RlclRyYW5zZm9ybSwgY3R4LnVucmVnaXN0ZXJUcmFuc2Zvcm1dKTtcbiAgICBpZiAoaGlkZGVuKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICBsZXQgY29udHJvbENoaWxkO1xuICAgIGlmIChpc1JlYWRvbmx5KSB7XG4gICAgICAgIGNvbnRyb2xDaGlsZCA9IChfanN4KFJlYWRvbmx5Q2hpbGQsIHsgbmFtZTogbmFtZSwgdmFsdWVUeXBlOiB2YWx1ZVR5cGUsIHZhbHVlRW51bTogdmFsdWVFbnVtLCBjb252ZXJ0VmFsdWU6IGNvbnZlcnRWYWx1ZSwgcmVhZG9ubHlSZW5kZXI6IHJlYWRvbmx5UmVuZGVyLCBlbXB0eVRleHQ6IGVtcHR5VGV4dCB9KSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICAvLyBJbmplY3QgZmlyc3Qgc28gdGhlIHJlYWwgZmllbGQgcmVjZWl2ZXMgdmFsdWUvb25DaGFuZ2Uvb25CbHVyLFxuICAgICAgICAvLyB0aGVuIG9wdGlvbmFsbHkgd3JhcCBpbiBDb252ZXJ0VmFsdWVDaGlsZCB0byBvdmVycmlkZSB0aGUgZGlzcGxheWVkIHZhbHVlLlxuICAgICAgICBjb25zdCBpbmplY3RlZCA9IGluamVjdEZpZWxkKGNoaWxkcmVuKTtcbiAgICAgICAgaWYgKGNvbnZlcnRWYWx1ZSAmJiBuYW1lICYmIFJlYWN0LmlzVmFsaWRFbGVtZW50KGluamVjdGVkKSkge1xuICAgICAgICAgICAgY29udHJvbENoaWxkID0gKF9qc3goQ29udmVydFZhbHVlQ2hpbGQsIHsgbmFtZTogbmFtZSwgY29udmVydFZhbHVlOiBjb252ZXJ0VmFsdWUsIGNoaWxkcmVuOiBpbmplY3RlZCB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb250cm9sQ2hpbGQgPSBpbmplY3RlZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhwcmVmaXhDbHMpO1xuICAgIGNvbnN0IHNoZWxsID0gKF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKHVuZGVmaW5lZCwgam9pbkNscyhzaXplID09PSAnc21hbGwnICYmIGNsYXNzZXMoJ3NtYWxsJyksIGNsYXNzTmFtZSkpLCBjaGlsZHJlbjogW2xhYmVsICYmIChfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnbGFiZWwtd3JhcHBlcicsIGpvaW5DbHMoY2xhc3NlcygnbGFiZWwtd3JhcHBlci12ZXJ0aWNhbCcpLCBsYWJlbEFsaWduICYmIGNsYXNzZXMoYGxhYmVsLXdyYXBwZXItJHtsYWJlbEFsaWdufWApKSksIGNoaWxkcmVuOiBbX2pzeChUeXBvZ3JhcGh5TGFiZWwsIHsgYXM6IFwibGFiZWxcIiwgc2l6ZTogRk9STV9MQUJFTF9TSVpFLCBjb2xvcjogRk9STV9MQUJFTF9DT0xPUiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdsYWJlbCcpLCBjaGlsZHJlbjogbGFiZWwgfSksIGRlc2NyaXB0aW9uICYmIChfanN4KFR5cG9ncmFwaHlCb2R5LCB7IGFzOiBcImRpdlwiLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2Rlc2NyaXB0aW9uJyksIHNpemU6IEZPUk1fREVTQ1JJUFRJT05fU0laRSwgY29sb3I6IEZPUk1fREVTQ1JJUFRJT05fQ09MT1IsIGNoaWxkcmVuOiBkZXNjcmlwdGlvbiB9KSldIH0pKSwgX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2NvbnRyb2wnKSwgY2hpbGRyZW46IFtjb250cm9sQ2hpbGQsIGZpZWxkRXJyb3IgJiYgKF9qc3goVHlwb2dyYXBoeUJvZHksIHsgYXM6IFwiZGl2XCIsIGNsYXNzTmFtZTogY2xhc3NlcygnZXJyb3InKSwgc2l6ZTogRk9STV9FUlJPUl9TSVpFLCBjb2xvcjogRk9STV9FUlJPUl9DT0xPUiwgY2hpbGRyZW46IGZpZWxkRXJyb3IgfSkpLCAhZmllbGRFcnJvciAmJiBmZWVkYmFjayAmJiAoX2pzeChUeXBvZ3JhcGh5Qm9keSwgeyBhczogXCJkaXZcIiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdmZWVkYmFjaycpLCBzaXplOiBGT1JNX0ZFRURCQUNLX1NJWkUsIGNvbG9yOiBGT1JNX0ZFRURCQUNLX0NPTE9SLCBjaGlsZHJlbjogZmVlZGJhY2sgfSkpXSB9KV0gfSkpO1xuICAgIGlmIChjdHguZ3JpZCkge1xuICAgICAgICBjb25zdCBtZXJnZWQgPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGN0eC5jb2xQcm9wcyksIGNvbFByb3BzKTtcbiAgICAgICAgY29uc3QgeyBzcGFuID0gREVGQVVMVF9DT0xfU1BBTiwgc20sIG1kLCBsZyB9ID0gbWVyZ2VkO1xuICAgICAgICByZXR1cm4gX2pzeChDb2wsIHsgc3Bhbjogc3Bhbiwgc206IHNtLCBtZDogbWQsIGxnOiBsZywgY2hpbGRyZW46IHNoZWxsIH0pO1xuICAgIH1cbiAgICByZXR1cm4gc2hlbGw7XG59O1xuUHJvRm9ybUl0ZW1CYXNlLmRpc3BsYXlOYW1lID0gJ1Byb0Zvcm1JdGVtJztcbmV4cG9ydCBjb25zdCBQcm9Gb3JtSXRlbSA9IG1lbW8oUHJvRm9ybUl0ZW1CYXNlKTtcbmV4cG9ydCBkZWZhdWx0IFByb0Zvcm1JdGVtOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
257
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtSXRlbS5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtSXRlbS50c3giXSwibmFtZXMiOlsianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIlJlYWN0IiwibWVtbyIsInVzZUVmZmVjdCIsIkNvbCIsIlR5cG9ncmFwaHlCb2R5IiwiVHlwb2dyYXBoeUxhYmVsIiwiZGVmYXVsdCIsImNsYXNzbmFtZXMiLCJqb2luQ2xzIiwidXNlRm9ybUl0ZW0iLCJGT1JNX0VSUk9SX0NPTE9SIiwiRk9STV9FUlJPUl9TSVpFIiwiRk9STV9XQVJOSU5HX0NPTE9SIiwiRk9STV9XQVJOSU5HX1NJWkUiLCJGT1JNX0RFU0NSSVBUSU9OX0NPTE9SIiwiRk9STV9ERVNDUklQVElPTl9TSVpFIiwiRk9STV9GRUVEQkFDS19DT0xPUiIsIkZPUk1fRkVFREJBQ0tfU0laRSIsIkZPUk1fTEFCRUxfQ09MT1IiLCJGT1JNX0xBQkVMX1NJWkUiLCJ1c2VQcm9Gb3JtQ29udGV4dCIsIkRFRkFVTFRfQ09MX1NQQU4iLCJ2YWx1ZUVudW1Ub09wdGlvbnMiLCJmb3JtYXREYXRlQnlQYXR0ZXJuIiwiREFURV9GT1JNQVQiLCJEQVRFX1RJTUVfRk9STUFUIiwiRU1QVFlfVEVYVF9ERUZBVUxUIiwicmVuZGVyQnlWYWx1ZVR5cGUiLCJ2YWx1ZVR5cGUiLCJ2YWx1ZSIsInByb3BzIiwidW5kZWZpbmVkIiwicmVwZWF0IiwiU3RyaW5nIiwibGVuZ3RoIiwibnVtIiwiTnVtYmVyIiwiaXNOYU4iLCJ0b0xvY2FsZVN0cmluZyIsInZhbHVlRW51bSIsIm9wdGlvbnMiLCJtYXRjaCIsImZpbmQiLCJvIiwibGFiZWwiLCJEYXRlIiwiUmVhZG9ubHlDaGlsZEJhc2UiLCJfcmVmIiwibmFtZSIsImNvbnZlcnRWYWx1ZSIsInJlYWRvbmx5UmVuZGVyIiwiZW1wdHlUZXh0IiwiX3VzZVByb0Zvcm1Db250ZXh0IiwidmFsdWVzIiwicmF3Iiwibm9kZSIsImNoaWxkcmVuIiwicmVuZGVyZWQiLCJkaXNwbGF5TmFtZSIsIlJlYWRvbmx5Q2hpbGQiLCJDb252ZXJ0VmFsdWVDaGlsZEJhc2UiLCJfcmVmMiIsIl9yZWYyJHZhbHVlUHJvcE5hbWUiLCJ2YWx1ZVByb3BOYW1lIiwiX3VzZVByb0Zvcm1Db250ZXh0MiIsImNvbnZlcnRlZCIsImNsb25lRWxlbWVudCIsIl9kZWZpbmVQcm9wZXJ0eSIsIkNvbnZlcnRWYWx1ZUNoaWxkIiwiUHJvRm9ybUl0ZW1CYXNlIiwiY3R4IiwibWVyZ2VkUHJvcHMiLCJmb3JtSXRlbVByb3BzIiwibWVyZ2VkIiwiT2JqZWN0IiwiYXNzaWduIiwiX2kiLCJfT2JqZWN0JGtleXMiLCJrZXlzIiwia2V5IiwiX21lcmdlZFByb3BzIiwiZGVzY3JpcHRpb24iLCJydWxlcyIsInJlcXVpcmVkIiwiZmVlZGJhY2siLCJ2YWxpZGF0ZVN0YXR1cyIsIl9tZXJnZWRQcm9wcyRjbGFzc05hbSIsImNsYXNzTmFtZSIsIl9tZXJnZWRQcm9wcyRwcmVmaXhDbCIsInByZWZpeENscyIsImhpZGRlbiIsInRyYW5zZm9ybSIsImNvbFByb3BzIiwibW9kZVByb3AiLCJtb2RlIiwiX21lcmdlZFByb3BzJGVtcHR5VGV4IiwidmFsaWRhdGVEZWJvdW5jZSIsIm1lcmdlZE1vZGUiLCJpc1JlYWRvbmx5IiwiX3VzZUZvcm1JdGVtIiwiZmllbGRFcnJvciIsImZpZWxkV2FybmluZyIsImlzUmVxdWlyZWQiLCJzaXplIiwibGFiZWxBbGlnbiIsInJlcXVpcmVkTWFyayIsImluamVjdEZpZWxkIiwicmVnaXN0ZXJUcmFuc2Zvcm0iLCJ1bnJlZ2lzdGVyVHJhbnNmb3JtIiwicmVnaXN0ZXJWYWx1ZVR5cGUiLCJ1bnJlZ2lzdGVyVmFsdWVUeXBlIiwiY29udHJvbENoaWxkIiwiaW5qZWN0ZWQiLCJpc1ZhbGlkRWxlbWVudCIsImNsYXNzZXMiLCJzaGVsbCIsImNvbmNhdCIsImFzIiwiY29sb3IiLCJncmlkIiwiX21lcmdlZCRzcGFuIiwic3Bh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cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgUmVhY3QsIHsgbWVtbywgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQ29sIH0gZnJvbSAnLi4vR3JpZCc7XG5pbXBvcnQgeyBUeXBvZ3JhcGh5Qm9keSwgVHlwb2dyYXBoeUxhYmVsIH0gZnJvbSAnLi4vVHlwb2dyYXBoeSc7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMsIGpvaW5DbHMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCB7IHVzZUZvcm1JdGVtIH0gZnJvbSAnLi9jb3JlL3VzZUZvcm1JdGVtJztcbmltcG9ydCB7IEZPUk1fRVJST1JfQ09MT1IsIEZPUk1fRVJST1JfU0laRSwgRk9STV9XQVJOSU5HX0NPTE9SLCBGT1JNX1dBUk5JTkdfU0laRSwgRk9STV9ERVNDUklQVElPTl9DT0xPUiwgRk9STV9ERVNDUklQVElPTl9TSVpFLCBGT1JNX0ZFRURCQUNLX0NPTE9SLCBGT1JNX0ZFRURCQUNLX1NJWkUsIEZPUk1fTEFCRUxfQ09MT1IsIEZPUk1fTEFCRUxfU0laRSwgfSBmcm9tICcuL2NvcmUvY29uc3RhbnRzJztcbmltcG9ydCB7IHVzZVByb0Zvcm1Db250ZXh0IH0gZnJvbSAnLi9jb250ZXh0JztcbmltcG9ydCB7IERFRkFVTFRfQ09MX1NQQU4gfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyB2YWx1ZUVudW1Ub09wdGlvbnMsIGZvcm1hdERhdGVCeVBhdHRlcm4sIERBVEVfRk9STUFULCBEQVRFX1RJTUVfRk9STUFUIH0gZnJvbSAnLi91dGlscyc7XG5jb25zdCBFTVBUWV9URVhUX0RFRkFVTFQgPSAnLSc7XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJlYWQtbW9kZSByZW5kZXJpbmcgZm9yIGVhY2ggc3VwcG9ydGVkIHZhbHVlVHlwZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiByZW5kZXJCeVZhbHVlVHlwZSh2YWx1ZVR5cGUsIHZhbHVlLCBwcm9wcykge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJylcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgc3dpdGNoICh2YWx1ZVR5cGUpIHtcbiAgICAgICAgY2FzZSAncGFzc3dvcmQnOlxuICAgICAgICAgICAgcmV0dXJuICcqJy5yZXBlYXQoU3RyaW5nKHZhbHVlKS5sZW5ndGgpO1xuICAgICAgICBjYXNlICdzd2l0Y2gnOlxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlID8gJ09uJyA6ICdPZmYnO1xuICAgICAgICBjYXNlICdkaWdpdCc6IHtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IE51bWJlcih2YWx1ZSk7XG4gICAgICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKG51bSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gbnVtLnRvTG9jYWxlU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnc2VsZWN0JzpcbiAgICAgICAgY2FzZSAncmFkaW8nOlxuICAgICAgICBjYXNlICd0YWcnOiB7XG4gICAgICAgICAgICBpZiAoIXByb3BzLnZhbHVlRW51bSlcbiAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB2YWx1ZUVudW1Ub09wdGlvbnMocHJvcHMudmFsdWVFbnVtKTtcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gb3B0aW9ucy5maW5kKChvKSA9PiBTdHJpbmcoby52YWx1ZSkgPT09IFN0cmluZyh2YWx1ZSkpO1xuICAgICAgICAgICAgcmV0dXJuIG1hdGNoID8gbWF0Y2gubGFiZWwgOiBTdHJpbmcodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IGZvcm1hdERhdGVCeVBhdHRlcm4odmFsdWUsIERBVEVfRk9STUFUKSA6IFN0cmluZyh2YWx1ZSk7XG4gICAgICAgIGNhc2UgJ2RhdGVUaW1lJzpcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyBmb3JtYXREYXRlQnlQYXR0ZXJuKHZhbHVlLCBEQVRFX1RJTUVfRk9STUFUKSA6IFN0cmluZyh2YWx1ZSk7XG4gICAgICAgIGNhc2UgJ3RleHQnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgfVxufVxuY29uc3QgUmVhZG9ubHlDaGlsZEJhc2UgPSAoeyBuYW1lLCB2YWx1ZVR5cGUsIHZhbHVlRW51bSwgY29udmVydFZhbHVlLCByZWFkb25seVJlbmRlciwgZW1wdHlUZXh0LCB9KSA9PiB7XG4gICAgY29uc3QgeyB2YWx1ZXMgfSA9IHVzZVByb0Zvcm1Db250ZXh0KCk7XG4gICAgY29uc3QgcmF3ID0gbmFtZSA/IHZhbHVlc1tuYW1lXSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCB2YWx1ZSA9IGNvbnZlcnRWYWx1ZSAmJiBuYW1lID8gY29udmVydFZhbHVlKHJhdywgbmFtZSkgOiByYXc7XG4gICAgaWYgKHJlYWRvbmx5UmVuZGVyKSB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSByZWFkb25seVJlbmRlcih2YWx1ZSwgdmFsdWVzKTtcbiAgICAgICAgcmV0dXJuIF9qc3goXCJzcGFuXCIsIHsgY2hpbGRyZW46IG5vZGUgIT09IG51bGwgJiYgbm9kZSAhPT0gdm9pZCAwID8gbm9kZSA6IGVtcHR5VGV4dCB9KTtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnKSB7XG4gICAgICAgIHJldHVybiBfanN4KFwic3BhblwiLCB7IGNoaWxkcmVuOiBlbXB0eVRleHQgfSk7XG4gICAgfVxuICAgIGNvbnN0IHJlbmRlcmVkID0gcmVuZGVyQnlWYWx1ZVR5cGUodmFsdWVUeXBlLCB2YWx1ZSwgeyB2YWx1ZUVudW0gfSk7XG4gICAgcmV0dXJuIF9qc3goXCJzcGFuXCIsIHsgY2hpbGRyZW46IHJlbmRlcmVkICE9PSBudWxsICYmIHJlbmRlcmVkICE9PSB2b2lkIDAgPyByZW5kZXJlZCA6IGVtcHR5VGV4dCB9KTtcbn07XG5SZWFkb25seUNoaWxkQmFzZS5kaXNwbGF5TmFtZSA9ICdQcm9Gb3JtSXRlbVJlYWRvbmx5JztcbmNvbnN0IFJlYWRvbmx5Q2hpbGQgPSBtZW1vKFJlYWRvbmx5Q2hpbGRCYXNlKTtcbmNvbnN0IENvbnZlcnRWYWx1ZUNoaWxkQmFzZSA9ICh7IG5hbWUsIGNvbnZlcnRWYWx1ZSwgdmFsdWVQcm9wTmFtZSA9ICd2YWx1ZScsIGNoaWxkcmVuLCB9KSA9PiB7XG4gICAgY29uc3QgeyB2YWx1ZXMgfSA9IHVzZVByb0Zvcm1Db250ZXh0KCk7XG4gICAgY29uc3QgcmF3ID0gdmFsdWVzW25hbWVdO1xuICAgIGNvbnN0IGNvbnZlcnRlZCA9IGNvbnZlcnRWYWx1ZSA/IGNvbnZlcnRWYWx1ZShyYXcsIG5hbWUpIDogcmF3O1xuICAgIHJldHVybiBSZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGRyZW4sIHsgW3ZhbHVlUHJvcE5hbWVdOiBjb252ZXJ0ZWQgfSk7XG59O1xuQ29udmVydFZhbHVlQ2hpbGRCYXNlLmRpc3BsYXlOYW1lID0gJ1Byb0Zvcm1JdGVtQ29udmVydFZhbHVlJztcbmNvbnN0IENvbnZlcnRWYWx1ZUNoaWxkID0gbWVtbyhDb252ZXJ0VmFsdWVDaGlsZEJhc2UpO1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQcm9Gb3JtSXRlbVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5jb25zdCBQcm9Gb3JtSXRlbUJhc2UgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCBjdHggPSB1c2VQcm9Gb3JtQ29udGV4dCgpO1xuICAgIC8vIEZvcm0tbGV2ZWwgYGZvcm1JdGVtUHJvcHNgIGFjdCBhcyBERUZBVUxUUzsgcHJvcHMgZXhwbGljaXRseSBzZXQgb24gdGhlXG4gICAgLy8gaXRlbSB3aW4uIEpTWCBmcmVxdWVudGx5IHBhc3NlcyBgdW5kZWZpbmVkYCBmb3IgdW5zZXQgcHJvcHMgKGUuZy4gdGhlXG4gICAgLy8gY3JlYXRlUHJvRm9ybUZpZWxkIHBhc3MtdGhyb3VnaCksIHNvIG9ubHkgZGVmaW5lZCB2YWx1ZXMgbWF5IG92ZXJyaWRlLlxuICAgIGxldCBtZXJnZWRQcm9wcyA9IHByb3BzO1xuICAgIGlmIChjdHguZm9ybUl0ZW1Qcm9wcykge1xuICAgICAgICBjb25zdCBtZXJnZWQgPSBPYmplY3QuYXNzaWduKHt9LCBjdHguZm9ybUl0ZW1Qcm9wcyk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHByb3BzKSkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBwcm9wc1trZXldO1xuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgbWVyZ2VkW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBtZXJnZWRQcm9wcyA9IG1lcmdlZDtcbiAgICB9XG4gICAgY29uc3QgeyBjaGlsZHJlbiwgbmFtZSwgbGFiZWwsIGRlc2NyaXB0aW9uLCBydWxlcywgcmVxdWlyZWQsIGZlZWRiYWNrLCB2YWxpZGF0ZVN0YXR1cywgY2xhc3NOYW1lID0gJycsIHByZWZpeENscyA9ICdmb3JtLWl0ZW0nLCBoaWRkZW4sIHRyYW5zZm9ybSwgY29udmVydFZhbHVlLCB2YWx1ZVR5cGUsIHJlYWRvbmx5UmVuZGVyLCBjb2xQcm9wcywgbW9kZTogbW9kZVByb3AsIGVtcHR5VGV4dCA9IEVNUFRZX1RFWFRfREVGQVVMVCwgdmFsdWVFbnVtLCB2YWx1ZVByb3BOYW1lLCB2YWxpZGF0ZURlYm91bmNlLCB9ID0gbWVyZ2VkUHJvcHM7XG4gICAgY29uc3QgbWVyZ2VkTW9kZSA9IG1vZGVQcm9wICE9PSBudWxsICYmIG1vZGVQcm9wICE9PSB2b2lkIDAgPyBtb2RlUHJvcCA6IGN0eC5tb2RlO1xuICAgIGNvbnN0IGlzUmVhZG9ubHkgPSBtZXJnZWRNb2RlID09PSAncmVhZCc7XG4gICAgY29uc3QgeyBmaWVsZEVycm9yLCBmaWVsZFdhcm5pbmcsIGlzUmVxdWlyZWQsIHNpemUsIGxhYmVsQWxpZ24sIHJlcXVpcmVkTWFyaywgaW5qZWN0RmllbGQsIH0gPSB1c2VGb3JtSXRlbSh7IG5hbWUsIHJ1bGVzLCByZXF1aXJlZCwgdmFsaWRhdGVTdGF0dXMsIHZhbHVlUHJvcE5hbWUsIHZhbGlkYXRlRGVib3VuY2UgfSk7XG4gICAgLy8gUmVnaXN0ZXIgLyB1bnJlZ2lzdGVyIHRyYW5zZm9ybVxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghbmFtZSB8fCAhdHJhbnNmb3JtKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjdHgucmVnaXN0ZXJUcmFuc2Zvcm0obmFtZSwgdHJhbnNmb3JtKTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGN0eC51bnJlZ2lzdGVyVHJhbnNmb3JtKG5hbWUpO1xuICAgICAgICB9O1xuICAgIH0sIFtuYW1lLCB0cmFuc2Zvcm0sIGN0eC5yZWdpc3RlclRyYW5zZm9ybSwgY3R4LnVucmVnaXN0ZXJUcmFuc2Zvcm1dKTtcbiAgICAvLyBSZWdpc3RlciAvIHVucmVnaXN0ZXIgdmFsdWVUeXBlIChkcml2ZXMgdmFsdWVUeXBlLWF3YXJlIGRhdGVGb3JtYXR0ZXIpXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFuYW1lIHx8ICF2YWx1ZVR5cGUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGN0eC5yZWdpc3RlclZhbHVlVHlwZShuYW1lLCB2YWx1ZVR5cGUpO1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgY3R4LnVucmVnaXN0ZXJWYWx1ZVR5cGUobmFtZSk7XG4gICAgICAgIH07XG4gICAgfSwgW25hbWUsIHZhbHVlVHlwZSwgY3R4LnJlZ2lzdGVyVmFsdWVUeXBlLCBjdHgudW5yZWdpc3RlclZhbHVlVHlwZV0pO1xuICAgIGlmIChoaWRkZW4pXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIGxldCBjb250cm9sQ2hpbGQ7XG4gICAgaWYgKGlzUmVhZG9ubHkpIHtcbiAgICAgICAgY29udHJvbENoaWxkID0gKF9qc3goUmVhZG9ubHlDaGlsZCwgeyBuYW1lOiBuYW1lLCB2YWx1ZVR5cGU6IHZhbHVlVHlwZSwgdmFsdWVFbnVtOiB2YWx1ZUVudW0sIGNvbnZlcnRWYWx1ZTogY29udmVydFZhbHVlLCByZWFkb25seVJlbmRlcjogcmVhZG9ubHlSZW5kZXIsIGVtcHR5VGV4dDogZW1wdHlUZXh0IH0pKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIC8vIEluamVjdCBmaXJzdCBzbyB0aGUgcmVhbCBmaWVsZCByZWNlaXZlcyB2YWx1ZS9vbkNoYW5nZS9vbkJsdXIsXG4gICAgICAgIC8vIHRoZW4gb3B0aW9uYWxseSB3cmFwIGluIENvbnZlcnRWYWx1ZUNoaWxkIHRvIG92ZXJyaWRlIHRoZSBkaXNwbGF5ZWQgdmFsdWUuXG4gICAgICAgIGNvbnN0IGluamVjdGVkID0gaW5qZWN0RmllbGQoY2hpbGRyZW4pO1xuICAgICAgICBpZiAoY29udmVydFZhbHVlICYmIG5hbWUgJiYgUmVhY3QuaXNWYWxpZEVsZW1lbnQoaW5qZWN0ZWQpKSB7XG4gICAgICAgICAgICBjb250cm9sQ2hpbGQgPSAoX2pzeChDb252ZXJ0VmFsdWVDaGlsZCwgeyBuYW1lOiBuYW1lLCBjb252ZXJ0VmFsdWU6IGNvbnZlcnRWYWx1ZSwgdmFsdWVQcm9wTmFtZTogdmFsdWVQcm9wTmFtZSwgY2hpbGRyZW46IGluamVjdGVkIH0pKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRyb2xDaGlsZCA9IGluamVjdGVkO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKHByZWZpeENscyk7XG4gICAgY29uc3Qgc2hlbGwgPSAoX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXModW5kZWZpbmVkLCBqb2luQ2xzKGNsYXNzZXMoc2l6ZSksIGNsYXNzTmFtZSkpLCBjaGlsZHJlbjogW2xhYmVsICYmIChfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnbGFiZWwtd3JhcHBlcicsIGpvaW5DbHMoY2xhc3NlcygnbGFiZWwtd3JhcHBlci12ZXJ0aWNhbCcpLCBsYWJlbEFsaWduICYmIGNsYXNzZXMoYGxhYmVsLXdyYXBwZXItJHtsYWJlbEFsaWdufWApKSksIGNoaWxkcmVuOiBbX2pzeChUeXBvZ3JhcGh5TGFiZWwsIHsgYXM6IFwibGFiZWxcIiwgc2l6ZTogRk9STV9MQUJFTF9TSVpFLCBjb2xvcjogRk9STV9MQUJFTF9DT0xPUiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdsYWJlbCcpLCBjaGlsZHJlbjogbGFiZWwgfSksIGRlc2NyaXB0aW9uICYmIChfanN4KFR5cG9ncmFwaHlCb2R5LCB7IGFzOiBcImRpdlwiLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2Rlc2NyaXB0aW9uJyksIHNpemU6IEZPUk1fREVTQ1JJUFRJT05fU0laRSwgY29sb3I6IEZPUk1fREVTQ1JJUFRJT05fQ09MT1IsIGNoaWxkcmVuOiBkZXNjcmlwdGlvbiB9KSldIH0pKSwgX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2NvbnRyb2wnKSwgY2hpbGRyZW46IFtjb250cm9sQ2hpbGQsIGZpZWxkRXJyb3IgJiYgKF9qc3goVHlwb2dyYXBoeUJvZHksIHsgYXM6IFwiZGl2XCIsIGNsYXNzTmFtZTogY2xhc3NlcygnZXJyb3InKSwgc2l6ZTogRk9STV9FUlJPUl9TSVpFLCBjb2xvcjogRk9STV9FUlJPUl9DT0xPUiwgY2hpbGRyZW46IGZpZWxkRXJyb3IgfSkpLCAhZmllbGRFcnJvciAmJiBmaWVsZFdhcm5pbmcgJiYgKF9qc3goVHlwb2dyYXBoeUJvZHksIHsgYXM6IFwiZGl2XCIsIGNsYXNzTmFtZTogY2xhc3Nlcygnd2FybmluZycpLCBzaXplOiBGT1JNX1dBUk5JTkdfU0laRSwgY29sb3I6IEZPUk1fV0FSTklOR19DT0xPUiwgY2hpbGRyZW46IGZpZWxkV2FybmluZyB9KSksICFmaWVsZEVycm9yICYmICFmaWVsZFdhcm5pbmcgJiYgZmVlZGJhY2sgJiYgKF9qc3goVHlwb2dyYXBoeUJvZHksIHsgYXM6IFwiZGl2XCIsIGNsYXNzTmFtZTogY2xhc3NlcygnZmVlZGJhY2snKSwgc2l6ZTogRk9STV9GRUVEQkFDS19TSVpFLCBjb2xvcjogRk9STV9GRUVEQkFDS19DT0xPUiwgY2hpbGRyZW46IGZlZWRiYWNrIH0pKV0gfSldIH0pKTtcbiAgICBpZiAoY3R4LmdyaWQpIHtcbiAgICAgICAgY29uc3QgbWVyZ2VkID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBjdHguY29sUHJvcHMpLCBjb2xQcm9wcyk7XG4gICAgICAgIGNvbnN0IHsgc3BhbiA9IERFRkFVTFRfQ09MX1NQQU4sIHNtLCBtZCwgbGcgfSA9IG1lcmdlZDtcbiAgICAgICAgcmV0dXJuIF9qc3goQ29sLCB7IHNwYW46IHNwYW4sIHNtOiBzbSwgbWQ6IG1kLCBsZzogbGcsIGNoaWxkcmVuOiBzaGVsbCB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHNoZWxsO1xufTtcblByb0Zvcm1JdGVtQmFzZS5kaXNwbGF5TmFtZSA9ICdQcm9Gb3JtSXRlbSc7XG5leHBvcnQgY29uc3QgUHJvRm9ybUl0ZW0gPSBtZW1vKFByb0Zvcm1JdGVtQmFzZSk7XG5leHBvcnQgZGVmYXVsdCBQcm9Gb3JtSXRlbTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -3,7 +3,8 @@ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
3
3
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
4
4
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
5
  import { memo, useEffect, useMemo, useRef } from 'react';
6
- import { useMemoizedFn, useSafeState } from '@1money/hooks';
6
+ import useMemoizedFn from '@1money/hooks/useMemoizedFn';
7
+ import useSafeState from '@1money/hooks/useSafeState';
7
8
  import { default as classnames } from '../../utils/classnames';
8
9
  import { Button } from '../Button';
9
10
  import { TypographyLabel, TypographyBody } from '../Typography';
@@ -249,4 +250,4 @@ var ProFormListBase = function ProFormListBase(props) {
249
250
  ProFormListBase.displayName = 'ProFormList';
250
251
  export var ProFormList = /*#__PURE__*/memo(ProFormListBase);
251
252
  export default ProFormList;
252
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtTGlzdC5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtTGlzdC50c3giXSwibmFtZXMiOlsianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIm1lbW8iLCJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlUmVmIiwidXNlTWVtb2l6ZWRGbiIsInVzZVNhZmVTdGF0ZSIsImRlZmF1bHQiLCJjbGFzc25hbWVzIiwiQnV0dG9uIiwiVHlwb2dyYXBoeUxhYmVsIiwiVHlwb2dyYXBoeUJvZHkiLCJGb3JtTGlzdENvbnRleHQiLCJ1c2VGb3JtTGlzdENvbnRleHQiLCJ1c2VQcm9Gb3JtQ29udGV4dCIsIkNTU19QUkVGSVgiLCJERUZBVUxUX1RFWFQiLCJQUk9GT1JNX0xJU1RfTEFCRUxfU0laRSIsIlBST0ZPUk1fTElTVF9MQUJFTF9DT0xPUiIsImV4dHJhY3RCdXR0b25Qcm9wcyIsImdldE5lc3RlZFZhbHVlIiwiY2xhc3NlcyIsImNvbmNhdCIsImxpc3RLZXlDb3VudGVyIiwiZ2VuZXJhdGVLZXkiLCJQcm9Gb3JtTGlzdEJhc2UiLCJwcm9wcyIsIl9hIiwiX2IiLCJyYXdOYW1lIiwibmFtZSIsImxhYmVsIiwibWluIiwibWF4IiwicmVxdWlyZWQiLCJfcHJvcHMkcmVxdWlyZWRNZXNzYWciLCJyZXF1aXJlZE1lc3NhZ2UiLCJpbml0aWFsVmFsdWUiLCJjb3B5SWNvblByb3BzIiwiZGVsZXRlSWNvblByb3BzIiwiY3JlYXRvckJ1dHRvblByb3BzIiwiaXRlbVJlbmRlciIsImFjdGlvblJlbmRlciIsImNoaWxkcmVuIiwib25BZnRlckFkZCIsIm9uQWZ0ZXJSZW1vdmUiLCJwYXJlbnRDdHgiLCJmdWxsTmFtZSIsImxpc3ROYW1lIiwiX3VzZVByb0Zvcm1Db250ZXh0IiwidmFsdWVzIiwic2V0RmllbGRWYWx1ZSIsImluaXRpYWxBcHBsaWVkIiwia2V5c1JlZiIsIl91c2VTYWZlU3RhdGUiLCJfdXNlU2FmZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwibGlzdEVycm9yIiwic2V0TGlzdEVycm9yIiwibGlzdCIsInJhdyIsImluY2x1ZGVzIiwiQXJyYXkiLCJpc0FycmF5IiwiY3VycmVudCIsImxlbmd0aCIsInB1c2giLCJzbGljZSIsIl90b0NvbnN1bWFibGVBcnJheSIsIm1hcCIsImNhbkFkZCIsImNhblJlbW92ZSIsInZhbGlkYXRlTGlzdCIsImFkZCIsImRlZmF1bHRWYWx1ZSIsImluZGV4IiwidmFsdWUiLCJuZXdMaXN0IiwibmV3S2V5cyIsImluc2VydEluZGV4Iiwic3BsaWNlIiwicmVtb3ZlQXQiLCJjb3B5IiwiT2JqZWN0IiwiYXNzaWduIiwibW92ZSIsImZyb20iLCJ0byIsIl9uZXdMaXN0JHNwbGljZSIsIl9uZXdMaXN0JHNwbGljZTIiLCJtb3ZlZEl0ZW0iLCJfbmV3S2V5cyRzcGxpY2UiLCJfbmV3S2V5cyRzcGxpY2UyIiwibW92ZWRLZXkiLCJnZXRMaXN0IiwiYWN0aW9uIiwicmVtb3ZlIiwibWFwcGVkRmllbGRzIiwiX2l0ZW0iLCJrZXkiLCJsaXN0RG9tIiwiYWN0aW9uUm93cyIsInJlY29yZCIsImNvcHlCdG5Qcm9wcyIsImRlbGV0ZUJ0blByb3BzIiwiZGVmYXVsdERvbSIsInR5cGUiLCJjb2xvciIsInNpemUiLCJyZXN0Iiwib25DbGljayIsImRpc2FibGVkIiwicmVuZGVyZWRBY3Rpb25zIiwiZmlsdGVyIiwiQm9vbGVhbiIsInJvd05vZGUiLCJjbGFzc05hbWUiLCJoYXNDcmVhdG9yIiwiY3JlYXRvckNvbmZpZyIsIl90eXBlb2YiLCJjcmVhdG9yUG9zaXRpb24iLCJwb3NpdGlvbiIsImNyZWF0b3JUZXh0IiwidGV4dCIsImNyZWF0b3JCdXR0b24iLCJmb3JtTGlzdENvbnRleHRWYWx1ZSIsIlByb3ZpZGVyIiwiYXMiLCJkaXNwbGF5TmFtZSIsIlByb0Zvcm1MaXN0Il0sIm1hcHBpbmdzIjoiOzs7QUFBQSxTQUFTQSxHQUFHLElBQUlDLElBQUksRUFBRUMsSUFB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aW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8sIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlTWVtb2l6ZWRGbiwgdXNlU2FmZVN0YXRlIH0gZnJvbSAnQDFtb25leS9ob29rcyc7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4uL0J1dHRvbic7XG5pbXBvcnQgeyBUeXBvZ3JhcGh5TGFiZWwsIFR5cG9ncmFwaHlCb2R5IH0gZnJvbSAnLi4vVHlwb2dyYXBoeSc7XG5pbXBvcnQgeyBGb3JtTGlzdENvbnRleHQsIHVzZUZvcm1MaXN0Q29udGV4dCwgdXNlUHJvRm9ybUNvbnRleHQgfSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IHsgQ1NTX1BSRUZJWCwgREVGQVVMVF9URVhULCBQUk9GT1JNX0xJU1RfTEFCRUxfU0laRSwgUFJPRk9STV9MSVNUX0xBQkVMX0NPTE9SIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZXh0cmFjdEJ1dHRvblByb3BzLCBnZXROZXN0ZWRWYWx1ZSB9IGZyb20gJy4vdXRpbHMnO1xuY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMoYCR7Q1NTX1BSRUZJWH0tbGlzdGApO1xubGV0IGxpc3RLZXlDb3VudGVyID0gMDtcbmNvbnN0IGdlbmVyYXRlS2V5ID0gKCkgPT4gYGxpc3RfJHsrK2xpc3RLZXlDb3VudGVyfWA7XG5jb25zdCBQcm9Gb3JtTGlzdEJhc2UgPSAocHJvcHMpID0+IHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGNvbnN0IHsgbmFtZTogcmF3TmFtZSwgbGFiZWwsIG1pbiwgbWF4LCByZXF1aXJlZCwgcmVxdWlyZWRNZXNzYWdlID0gJ1RoaXMgbGlzdCBjYW5ub3QgYmUgZW1wdHknLCBpbml0aWFsVmFsdWUsIGNvcHlJY29uUHJvcHMsIGRlbGV0ZUljb25Qcm9wcywgY3JlYXRvckJ1dHRvblByb3BzLCBpdGVtUmVuZGVyLCBhY3Rpb25SZW5kZXIsIGNoaWxkcmVuLCBvbkFmdGVyQWRkLCBvbkFmdGVyUmVtb3ZlLCB9ID0gcHJvcHM7XG4gICAgLy8g4pSA4pSAIE5lc3RlZCBsaXN0OiBwcmVwZW5kIHBhcmVudCBsaXN0IG5hbWUg4pSA4pSAXG4gICAgY29uc3QgcGFyZW50Q3R4ID0gdXNlRm9ybUxpc3RDb250ZXh0KCk7XG4gICAgY29uc3QgZnVsbE5hbWUgPSBwYXJlbnRDdHgubGlzdE5hbWUgPyBgJHtwYXJlbnRDdHgubGlzdE5hbWV9LiR7cmF3TmFtZX1gIDogcmF3TmFtZTtcbiAgICBjb25zdCB7IHZhbHVlcywgc2V0RmllbGRWYWx1ZSB9ID0gdXNlUHJvRm9ybUNvbnRleHQoKTtcbiAgICBjb25zdCBpbml0aWFsQXBwbGllZCA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3Qga2V5c1JlZiA9IHVzZVJlZihbXSk7XG4gICAgY29uc3QgW2xpc3RFcnJvciwgc2V0TGlzdEVycm9yXSA9IHVzZVNhZmVTdGF0ZShudWxsKTtcbiAgICBjb25zdCBsaXN0ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJhdyA9IGZ1bGxOYW1lLmluY2x1ZGVzKCcuJylcbiAgICAgICAgICAgID8gZ2V0TmVzdGVkVmFsdWUodmFsdWVzLCBmdWxsTmFtZSlcbiAgICAgICAgICAgIDogdmFsdWVzW2Z1bGxOYW1lXTtcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkocmF3KSA/IHJhdyA6IFtdO1xuICAgIH0sIFt2YWx1ZXMsIGZ1bGxOYW1lXSk7XG4gICAgLy8gU3luYyBrZXlzIHdpdGggbGlzdCBsZW5ndGhcbiAgICB3aGlsZSAoa2V5c1JlZi5jdXJyZW50Lmxlbmd0aCA8IGxpc3QubGVuZ3RoKSB7XG4gICAgICAgIGtleXNSZWYuY3VycmVudC5wdXNoKGdlbmVyYXRlS2V5KCkpO1xuICAgIH1cbiAgICBpZiAoa2V5c1JlZi5jdXJyZW50Lmxlbmd0aCA+IGxpc3QubGVuZ3RoKSB7XG4gICAgICAgIGtleXNSZWYuY3VycmVudCA9IGtleXNSZWYuY3VycmVudC5zbGljZSgwLCBsaXN0Lmxlbmd0aCk7XG4gICAgfVxuICAgIC8vIEFwcGx5IGluaXRpYWwgdmFsdWUgb25jZVxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChpbml0aWFsQXBwbGllZC5jdXJyZW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAobGlzdC5sZW5ndGggIT09IDApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShpbml0aWFsVmFsdWUpIHx8IGluaXRpYWxWYWx1ZS5sZW5ndGggPT09IDApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGluaXRpYWxBcHBsaWVkLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICBzZXRGaWVsZFZhbHVlKGZ1bGxOYW1lLCBbLi4uaW5pdGlhbFZhbHVlXSk7XG4gICAgICAgIGtleXNSZWYuY3VycmVudCA9IGluaXRpYWxWYWx1ZS5tYXAoKCkgPT4gZ2VuZXJhdGVLZXkoKSk7XG4gICAgfSwgW2xpc3QubGVuZ3RoLCBpbml0aWFsVmFsdWUsIGZ1bGxOYW1lLCBzZXRGaWVsZFZhbHVlXSk7XG4gICAgLy8gQ2xlYXIgZXJyb3Igd2hlbiBsaXN0IGJlY29tZXMgbm9uLWVtcHR5XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHJlcXVpcmVkICYmIGxpc3QubGVuZ3RoID4gMCAmJiBsaXN0RXJyb3IpIHtcbiAgICAgICAgICAgIHNldExpc3RFcnJvcihudWxsKTtcbiAgICAgICAgfVxuICAgIH0sIFtsaXN0Lmxlbmd0aCwgcmVxdWlyZWQsIGxpc3RFcnJvciwgc2V0TGlzdEVycm9yXSk7XG4gICAgY29uc3QgY2FuQWRkID0gbWF4ID09IG51bGwgfHwgbGlzdC5sZW5ndGggPCBtYXg7XG4gICAgY29uc3QgY2FuUmVtb3ZlID0gbWluID09IG51bGwgfHwgbGlzdC5sZW5ndGggPiBtaW47XG4gICAgY29uc3QgdmFsaWRhdGVMaXN0ID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIGlmICghcmVxdWlyZWQpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKGxpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBzZXRMaXN0RXJyb3IocmVxdWlyZWRNZXNzYWdlKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBzZXRMaXN0RXJyb3IobnVsbCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICAgIGNvbnN0IGFkZCA9IHVzZU1lbW9pemVkRm4oKGRlZmF1bHRWYWx1ZSwgaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKCFjYW5BZGQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZGVmYXVsdFZhbHVlICE9PSBudWxsICYmIGRlZmF1bHRWYWx1ZSAhPT0gdm9pZCAwID8gZGVmYXVsdFZhbHVlIDoge307XG4gICAgICAgIGNvbnN0IG5ld0xpc3QgPSBbLi4ubGlzdF07XG4gICAgICAgIGNvbnN0IG5ld0tleXMgPSBbLi4ua2V5c1JlZi5jdXJyZW50XTtcbiAgICAgICAgY29uc3QgaW5zZXJ0SW5kZXggPSB0eXBlb2YgaW5kZXggPT09ICdudW1iZXInID8gaW5kZXggOiBuZXdMaXN0Lmxlbmd0aDtcbiAgICAgICAgbmV3TGlzdC5zcGxpY2UoaW5zZXJ0SW5kZXgsIDAsIHZhbHVlKTtcbiAgICAgICAgbmV3S2V5cy5zcGxpY2UoaW5zZXJ0SW5kZXgsIDAsIGdlbmVyYXRlS2V5KCkpO1xuICAgICAgICBrZXlzUmVmLmN1cnJlbnQgPSBuZXdLZXlzO1xuICAgICAgICBzZXRGaWVsZFZhbHVlKGZ1bGxOYW1lLCBuZXdMaXN0KTtcbiAgICAgICAgb25BZnRlckFkZCA9PT0gbnVsbCB8fCBvbkFmdGVyQWRkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkFmdGVyQWRkKHZhbHVlLCBpbnNlcnRJbmRleCk7XG4gICAgfSk7XG4gICAgY29uc3QgcmVtb3ZlQXQgPSB1c2VNZW1vaXplZEZuKChpbmRleCkgPT4ge1xuICAgICAgICBpZiAoIWNhblJlbW92ZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgbmV3TGlzdCA9IFsuLi5saXN0XTtcbiAgICAgICAgY29uc3QgbmV3S2V5cyA9IFsuLi5rZXlzUmVmLmN1cnJlbnRdO1xuICAgICAgICBuZXdMaXN0LnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIG5ld0tleXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAga2V5c1JlZi5jdXJyZW50ID0gbmV3S2V5cztcbiAgICAgICAgc2V0RmllbGRWYWx1ZShmdWxsTmFtZSwgbmV3TGlzdCk7XG4gICAgICAgIG9uQWZ0ZXJSZW1vdmUgPT09IG51bGwgfHwgb25BZnRlclJlbW92ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25BZnRlclJlbW92ZShpbmRleCk7XG4gICAgICAgIC8vIFZhbGlkYXRlIGFmdGVyIHJlbW92ZVxuICAgICAgICBpZiAocmVxdWlyZWQgJiYgbmV3TGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHNldExpc3RFcnJvcihyZXF1aXJlZE1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgY29weSA9IHVzZU1lbW9pemVkRm4oKGluZGV4KSA9PiB7XG4gICAgICAgIGlmICghY2FuQWRkKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGxpc3RbaW5kZXhdID8gT2JqZWN0LmFzc2lnbih7fSwgbGlzdFtpbmRleF0pIDoge307XG4gICAgICAgIGFkZCh2YWx1ZSwgaW5kZXggKyAxKTtcbiAgICB9KTtcbiAgICBjb25zdCBtb3ZlID0gdXNlTWVtb2l6ZWRGbigoZnJvbSwgdG8pID0+IHtcbiAgICAgICAgaWYgKGZyb20gPT09IHRvKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAoZnJvbSA8IDAgfHwgZnJvbSA+PSBsaXN0Lmxlbmd0aCB8fCB0byA8IDAgfHwgdG8gPj0gbGlzdC5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IG5ld0xpc3QgPSBbLi4ubGlzdF07XG4gICAgICAgIGNvbnN0IG5ld0tleXMgPSBbLi4ua2V5c1JlZi5jdXJyZW50XTtcbiAgICAgICAgY29uc3QgW21vdmVkSXRlbV0gPSBuZXdMaXN0LnNwbGljZShmcm9tLCAxKTtcbiAgICAgICAgY29uc3QgW21vdmVkS2V5XSA9IG5ld0tleXMuc3BsaWNlKGZyb20sIDEpO1xuICAgICAgICBuZXdMaXN0LnNwbGljZSh0bywgMCwgbW92ZWRJdGVtKTtcbiAgICAgICAgbmV3S2V5cy5zcGxpY2UodG8sIDAsIG1vdmVkS2V5KTtcbiAgICAgICAga2V5c1JlZi5jdXJyZW50ID0gbmV3S2V5cztcbiAgICAgICAgc2V0RmllbGRWYWx1ZShmdWxsTmFtZSwgbmV3TGlzdCk7XG4gICAgfSk7XG4gICAgY29uc3QgZ2V0TGlzdCA9IHVzZU1lbW9pemVkRm4oKCkgPT4gbGlzdCk7XG4gICAgY29uc3QgYWN0aW9uID0gdXNlTWVtbygoKSA9PiAoeyBhZGQsIHJlbW92ZTogcmVtb3ZlQXQsIG1vdmUsIGNvcHksIGdldExpc3QgfSksIFthZGQsIHJlbW92ZUF0LCBtb3ZlLCBjb3B5LCBnZXRMaXN0XSk7XG4gICAgY29uc3QgbWFwcGVkRmllbGRzID0gdXNlTWVtbygoKSA9PiBsaXN0Lm1hcCgoX2l0ZW0sIGluZGV4KSA9PiAoe1xuICAgICAgICBuYW1lOiBgJHtmdWxsTmFtZX0uJHtpbmRleH1gLFxuICAgICAgICBrZXk6IGtleXNSZWYuY3VycmVudFtpbmRleF0gfHwgYGZhbGxiYWNrXyR7aW5kZXh9YCxcbiAgICB9KSksIFtsaXN0LCBmdWxsTmFtZV0pO1xuICAgIC8vIFJlbmRlciBjaGlsZHJlblxuICAgIGNvbnN0IGxpc3REb20gPSB0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyBjaGlsZHJlbihtYXBwZWRGaWVsZHMsIGFjdGlvbilcbiAgICAgICAgOiBjaGlsZHJlbjtcbiAgICAvLyBBY3Rpb24gYnV0dG9ucyBwZXIgcm93XG4gICAgY29uc3QgYWN0aW9uUm93cyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICByZXR1cm4gbGlzdC5tYXAoKHJlY29yZCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvcHlCdG5Qcm9wcyA9IGV4dHJhY3RCdXR0b25Qcm9wcyhjb3B5SWNvblByb3BzKTtcbiAgICAgICAgICAgIGNvbnN0IGRlbGV0ZUJ0blByb3BzID0gZXh0cmFjdEJ1dHRvblByb3BzKGRlbGV0ZUljb25Qcm9wcyk7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0RG9tID0ge1xuICAgICAgICAgICAgICAgIGNvcHk6IGNvcHlJY29uUHJvcHMgIT09IGZhbHNlID8gKF9qc3goQnV0dG9uLCBPYmplY3QuYXNzaWduKHsgdHlwZTogXCJidXR0b25cIiwgY29sb3I6IFwic2Vjb25kYXJ5XCIsIHNpemU6IFwic21hbGxcIiB9LCBjb3B5QnRuUHJvcHMucmVzdCwgeyBvbkNsaWNrOiAoKSA9PiBjb3B5KGluZGV4KSwgZGlzYWJsZWQ6ICFjYW5BZGQgfHwgY29weUJ0blByb3BzLmRpc2FibGVkLCBjaGlsZHJlbjogREVGQVVMVF9URVhULmNvcHkgfSksIGBjb3B5LSR7aW5kZXh9YCkpIDogbnVsbCxcbiAgICAgICAgICAgICAgICBkZWxldGU6IGRlbGV0ZUljb25Qcm9wcyAhPT0gZmFsc2UgPyAoX2pzeChCdXR0b24sIE9iamVjdC5hc3NpZ24oeyB0eXBlOiBcImJ1dHRvblwiLCBjb2xvcjogXCJzZWNvbmRhcnlcIiwgc2l6ZTogXCJzbWFsbFwiIH0sIGRlbGV0ZUJ0blByb3BzLnJlc3QsIHsgb25DbGljazogKCkgPT4gcmVtb3ZlQXQoaW5kZXgpLCBkaXNhYmxlZDogIWNhblJlbW92ZSB8fCBkZWxldGVCdG5Qcm9wcy5kaXNhYmxlZCwgY2hpbGRyZW46IERFRkFVTFRfVEVYVC5kZWxldGUgfSksIGBkZWxldGUtJHtpbmRleH1gKSkgOiBudWxsLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IHJlbmRlcmVkQWN0aW9ucyA9IGFjdGlvblJlbmRlclxuICAgICAgICAgICAgICAgID8gYWN0aW9uUmVuZGVyKHsgaW5kZXgsIHJlY29yZCB9LCBhY3Rpb24sIGRlZmF1bHREb20pXG4gICAgICAgICAgICAgICAgOiBbZGVmYXVsdERvbS5jb3B5LCBkZWZhdWx0RG9tLmRlbGV0ZV0uZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgICAgICAgY29uc3Qgcm93Tm9kZSA9IChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdyb3ctYWN0aW9ucycpLCBjaGlsZHJlbjogcmVuZGVyZWRBY3Rpb25zIH0sIGtleXNSZWYuY3VycmVudFtpbmRleF0gfHwgaW5kZXgpKTtcbiAgICAgICAgICAgIGlmIChpdGVtUmVuZGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1SZW5kZXIoeyBsaXN0RG9tOiByb3dOb2RlLCBhY3Rpb24gfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcm93Tm9kZTtcbiAgICAgICAgfSk7XG4gICAgfSwgW2xpc3QsIGNvcHlJY29uUHJvcHMsIGRlbGV0ZUljb25Qcm9wcywgY2FuQWRkLCBjYW5SZW1vdmUsIGNvcHksIHJlbW92ZUF0LCBhY3Rpb24sIGFjdGlvblJlbmRlciwgaXRlbVJlbmRlcl0pO1xuICAgIC8vIENyZWF0b3IgYnV0dG9uXG4gICAgY29uc3QgaGFzQ3JlYXRvciA9IGNyZWF0b3JCdXR0b25Qcm9wcyAhPT0gZmFsc2U7XG4gICAgY29uc3QgY3JlYXRvckNvbmZpZyA9IGhhc0NyZWF0b3IgJiYgdHlwZW9mIGNyZWF0b3JCdXR0b25Qcm9wcyA9PT0gJ29iamVjdCcgPyBjcmVhdG9yQnV0dG9uUHJvcHMgOiB7fTtcbiAgICBjb25zdCBjcmVhdG9yUG9zaXRpb24gPSAoX2EgPSBjcmVhdG9yQ29uZmlnID09PSBudWxsIHx8IGNyZWF0b3JDb25maWcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNyZWF0b3JDb25maWcucG9zaXRpb24pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICdib3R0b20nO1xuICAgIGNvbnN0IGNyZWF0b3JUZXh0ID0gKF9iID0gY3JlYXRvckNvbmZpZyA9PT0gbnVsbCB8fCBjcmVhdG9yQ29uZmlnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjcmVhdG9yQ29uZmlnLnRleHQpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IERFRkFVTFRfVEVYVC5hZGQ7XG4gICAgY29uc3QgY3JlYXRvckJ1dHRvbiA9IGhhc0NyZWF0b3IgPyAoX2pzeChCdXR0b24sIHsgdHlwZTogXCJidXR0b25cIiwgY29sb3I6IFwic2Vjb25kYXJ5XCIsIG9uQ2xpY2s6ICgpID0+IHtcbiAgICAgICAgICAgIGlmIChjcmVhdG9yUG9zaXRpb24gPT09ICd0b3AnKSB7XG4gICAgICAgICAgICAgICAgYWRkKHt9LCAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGFkZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBkaXNhYmxlZDogIWNhbkFkZCwgY2hpbGRyZW46IGNyZWF0b3JUZXh0IH0pKSA6IG51bGw7XG4gICAgY29uc3QgZm9ybUxpc3RDb250ZXh0VmFsdWUgPSB1c2VNZW1vKCgpID0+ICh7IGxpc3ROYW1lOiBmdWxsTmFtZSB9KSwgW2Z1bGxOYW1lXSk7XG4gICAgcmV0dXJuIChfanN4KEZvcm1MaXN0Q29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogZm9ybUxpc3RDb250ZXh0VmFsdWUsIGNoaWxkcmVuOiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygpLCBjaGlsZHJlbjogW2xhYmVsICYmIF9qc3goVHlwb2dyYXBoeUxhYmVsLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnbGFiZWwnKSwgc2l6ZTogUFJPRk9STV9MSVNUX0xBQkVMX1NJWkUsIGNvbG9yOiBQUk9GT1JNX0xJU1RfTEFCRUxfQ09MT1IsIGNoaWxkcmVuOiBsYWJlbCB9KSwgY3JlYXRvclBvc2l0aW9uID09PSAndG9wJyAmJiBjcmVhdG9yQnV0dG9uLCBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdjb250ZW50JyksIGNoaWxkcmVuOiBsaXN0RG9tIH0pLCBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdhY3Rpb25zJyksIGNoaWxkcmVuOiBhY3Rpb25Sb3dzIH0pLCBjcmVhdG9yUG9zaXRpb24gPT09ICdib3R0b20nICYmIGNyZWF0b3JCdXR0b24sIGxpc3RFcnJvciAmJiBfanN4KFR5cG9ncmFwaHlCb2R5LCB7IGFzOiBcImRpdlwiLCBzaXplOiBcInNtXCIsIGNvbG9yOiBcImRhbmdlclwiLCBjaGlsZHJlbjogbGlzdEVycm9yIH0pXSB9KSB9KSk7XG59O1xuUHJvRm9ybUxpc3RCYXNlLmRpc3BsYXlOYW1lID0gJ1Byb0Zvcm1MaXN0JztcbmV4cG9ydCBjb25zdCBQcm9Gb3JtTGlzdCA9IG1lbW8oUHJvRm9ybUxpc3RCYXNlKTtcbmV4cG9ydCBkZWZhdWx0IFByb0Zvcm1MaXN0OyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
253
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtTGlzdC5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtTGlzdC50c3giXSwibmFtZXMiOlsianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIm1lbW8iLCJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlUmVmIiwidXNlTWVtb2l6ZWRGbiIsInVzZVNhZmVTdGF0ZSIsImRlZmF1bHQiLCJjbGFzc25hbWVzIiwiQnV0dG9uIiwiVHlwb2dyYXBoeUxhYmVsIiwiVHlwb2dyYXBoeUJvZHkiLCJGb3JtTGlzdENvbnRleHQiLCJ1c2VGb3JtTGlzdENvbnRleHQiLCJ1c2VQcm9Gb3JtQ29udGV4dCIsIkNTU19QUkVGSVgiLCJERUZBVUxUX1RFWFQiLCJQUk9GT1JNX0xJU1RfTEFCRUxfU0laRSIsIlBST0ZPUk1fTElTVF9MQUJFTF9DT0xPUiIsImV4dHJhY3RCdXR0b25Qcm9wcyIsImdldE5lc3RlZFZhbHVlIiwiY2xhc3NlcyIsImNvbmNhdCIsImxpc3RLZXlDb3VudGVyIiwiZ2VuZXJhdGVLZXkiLCJQcm9Gb3JtTGlzdEJhc2UiLCJwcm9wcyIsIl9hIiwiX2IiLCJyYXdOYW1lIiwibmFtZSIsImxhYmVsIiwibWluIiwibWF4IiwicmVxdWlyZWQiLCJfcHJvcHMkcmVxdWlyZWRNZXNzYWciLCJyZXF1aXJlZE1lc3NhZ2UiLCJpbml0aWFsVmFsdWUiLCJjb3B5SWNvblByb3BzIiwiZGVsZXRlSWNvblByb3BzIiwiY3JlYXRvckJ1dHRvblByb3BzIiwiaXRlbVJlbmRlciIsImFjdGlvblJlbmRlciIsImNoaWxkcmVuIiwib25BZnRlckFkZCIsIm9uQWZ0ZXJSZW1vdmUiLCJwYXJlbnRDdHgiLCJmdWxsTmFtZSIsImxpc3ROYW1lIiwiX3VzZVByb0Zvcm1Db250ZXh0IiwidmFsdWVzIiwic2V0RmllbGRWYWx1ZSIsImluaXRpYWxBcHBsaWVkIiwia2V5c1JlZiIsIl91c2VTYWZlU3RhdGUiLCJfdXNlU2FmZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwibGlzdEVycm9yIiwic2V0TGlzdEVycm9yIiwibGlzdCIsInJhdyIsImluY2x1ZGVzIiwiQXJyYXkiLCJpc0FycmF5IiwiY3VycmVudCIsImxlbmd0aCIsInB1c2giLCJzbGljZSIsIl90b0NvbnN1bWFibGVBcnJheSIsIm1hcCIsImNhbkFkZCIsImNhblJlbW92ZSIsInZhbGlkYXRlTGlzdCIsImFkZCIsImRlZmF1bHRWYWx1ZSIsImluZGV4IiwidmFsdWUiLCJuZXdMaXN0IiwibmV3S2V5cyIsImluc2VydEluZGV4Iiwic3BsaWNlIiwicmVtb3ZlQXQiLCJjb3B5IiwiT2JqZWN0IiwiYXNzaWduIiwibW92ZSIsImZyb20iLCJ0byIsIl9uZXdMaXN0JHNwbGljZSIsIl9uZXdMaXN0JHNwbGljZTIiLCJtb3ZlZEl0ZW0iLCJfbmV3S2V5cyRzcGxpY2UiLCJfbmV3S2V5cyRzcGxpY2UyIiwibW92ZWRLZXkiLCJnZXRMaXN0IiwiYWN0aW9uIiwicmVtb3ZlIiwibWFwcGVkRmllbGRzIiwiX2l0ZW0iLCJrZXkiLCJsaXN0RG9tIiwiYWN0aW9uUm93cyIsInJlY29yZCIsImNvcHlCdG5Qcm9wcyIsImRlbGV0ZUJ0blByb3BzIiwiZGVmYXVsdERvbSIsInR5cGUiLCJjb2xvciIsInNpemUiLCJyZXN0Iiwib25DbGljayIsImRpc2FibGVkIiwicmVuZGVyZWRBY3Rpb25zIiwiZmlsdGVyIiwiQm9vbGVhbiIsInJvd05vZGUiLCJjbGFzc05hbWUiLCJoYXNDcmVhdG9yIiwiY3JlYXRvckNvbmZpZyIsIl90eXBlb2YiLCJjcmVhdG9yUG9zaXRpb24iLCJwb3NpdGlvbiIsImNyZWF0b3JUZXh0IiwidGV4dCIsImNyZWF0b3JCdXR0b24iLCJmb3JtTGlzdENvbnRleHRWYWx1ZSIsIlByb3ZpZGVyIiwiYXMiLCJkaXNwbGF5TmFtZSIsIlByb0Zvcm1MaXN0Il0sIm1hcHBpbmdzIjoiOzs7QUFBQSxTQUFTQSxHQUFHLElBQUlDLElBQUksRUFBRUMsSUFBSSxJQUFJQyxLQUFLLFFBQVEsbUJBQW1CO0FDQTlELFNBQVNDLElBQUksRUFBRUMsU0FBUyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sUUFBUSxPQUFPO0FBRXhELE9BQU9DLGFBQWEsTUFBTSw2QkFBNkI7QUFDdkQsT0FBT0MsWUFBWSxNQUFNLDRCQUE0QjtBQUNyRCxTQUFTQyxPQUFPLElBQUlDLFVBQVUsUUFBUSx3QkFBd0I7QUFDOUQsU0FBU0MsTUFBTSxRQUFRLFdBQVc7QUFDbEMsU0FBU0MsZUFBZSxFQUFFQyxjQUFjLFFBQVEsZUFBZTtBQUMvRCxTQUFTQyxlQUFlLEVBQUVDLGtCQUFrQixFQUFFQyxpQkFBaUIsUUFBUSxXQUFXO0FBQ2xGLFNBQVNDLFVBQVUsRUFBRUMsWUFBWSxFQUFFQyx1QkFBdUIsRUFBRUMsd0JBQXdCLFFBQVEsYUFBYTtBQUN6RyxTQUFTQyxrQkFBa0IsRUFBRUMsY0FBYyxRQUFRLFNBQVM7QUFHNUQsSUFBTUMsT0FBTyxHQUFHYixVQUFVLElBQUFjLE1BQUEsQ0FBSVAsVUFBVSxVQUFPLENBQUM7QUFFaEQsSUFBSVEsY0FBYyxHQUFHLENBQUM7QUFDdEIsSUFBTUMsV0FBVyxHQUFHLFNBQWRBLFdBQVdBLENBQUE7RUFBQSxlQUFBRixNQUFBLENBQXlCLEVBQUVDLGNBQWM7QUFBQSxDQUFFO0FBRTVELElBQU1FLGVBQWUsR0FBeUIsU0FBeENBLGVBQWVBLENBQTBCQyxLQUFLLEVBQUk7RURIcEQsSUFBSUMsRUFBRSxFQUFFQyxFQUFFO0VDSVosSUFDUUMsT0FBTyxHQWVYSCxLQUFLLENBZlBJLElBQUk7SUFDSkMsS0FBSyxHQWNITCxLQUFLLENBZFBLLEtBQUs7SUFDTEMsR0FBRyxHQWFETixLQUFLLENBYlBNLEdBQUc7SUFDSEMsR0FBRyxHQVlEUCxLQUFLLENBWlBPLEdBQUc7SUFDSEMsUUFBUSxHQVdOUixLQUFLLENBWFBRLFFBQVE7SUFBQUMscUJBQUEsR0FXTlQsS0FBSyxDQVZQVSxlQUFlO0lBQWZBLGVBQWUsR0FBQUQscUJBQUEsY0FBRywyQkFBMkIsR0FBQUEscUJBQUE7SUFDN0NFLFlBQVksR0FTVlgsS0FBSyxDQVRQVyxZQUFZO0lBQ1pDLGFBQWEsR0FRWFosS0FBSyxDQVJQWSxhQUFhO0lBQ2JDLGVBQWUsR0FPYmIsS0FBSyxDQVBQYSxlQUFlO0lBQ2ZDLGtCQUFrQixHQU1oQmQsS0FBSyxDQU5QYyxrQkFBa0I7SUFDbEJDLFVBQVUsR0FLUmYsS0FBSyxDQUxQZSxVQUFVO0lBQ1ZDLFlBQVksR0FJVmhCLEtBQUssQ0FKUGdCLFlBQVk7SUFDWkMsUUFBUSxHQUdOakIsS0FBSyxDQUhQaUIsUUFBUTtJQUNSQyxVQUFVLEdBRVJsQixLQUFLLENBRlBrQixVQUFVO0lBQ1ZDLGFBQWEsR0FDWG5CLEtBQUssQ0FEUG1CLGFBQWE7RUFHZjtFQUNBLElBQU1DLFNBQVMsR0FBR2pDLGtCQUFrQixDQUFBLENBQUU7RUFDdEMsSUFBTWtDLFFBQVEsR0FBR0QsU0FBUyxDQUFDRSxRQUFRLE1BQUExQixNQUFBLENBQU13QixTQUFTLENBQUNFLFFBQVEsT0FBQTFCLE1BQUEsQ0FBSU8sT0FBTyxJQUFLQSxPQUFPO0VBRWxGLElBQUFvQixrQkFBQSxHQUFrQ25DLGlCQUFpQixDQUFBLENBQUU7SUFBN0NvQyxNQUFNLEdBQUFELGtCQUFBLENBQU5DLE1BQU07SUFBRUMsYUFBYSxHQUFBRixrQkFBQSxDQUFiRSxhQUFhO0VBQzdCLElBQU1DLGNBQWMsR0FBR2hELE1BQU0sQ0FBQyxLQUFLLENBQUM7RUFDcEMsSUFBTWlELE9BQU8sR0FBR2pELE1BQU0sQ0FBVyxFQUFFLENBQUM7RUFDcEMsSUFBQWtELGFBQUEsR0FBa0NoRCxZQUFZLENBQWdCLElBQUksQ0FBQztJQUFBaUQsY0FBQSxHQUFBQyxjQUFBLENBQUFGLGFBQUE7SUFBNURHLFNBQVMsR0FBQUYsY0FBQTtJQUFFRyxZQUFZLEdBQUFILGNBQUE7RUFFOUIsSUFBTUksSUFBSSxHQUFHeEQsT0FBTyxDQUFDLFlBQUs7SUFDeEIsSUFBTXlELEdBQUcsR0FBR2IsUUFBUSxDQUFDYyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQzlCekMsY0FBYyxDQUFDOEIsTUFBTSxFQUFFSCxRQUFRLENBQUMsR0FDaENHLE1BQU0sQ0FBQ0gsUUFBUSxDQUFDO0lBQ3BCLE9BQU9lLEtBQUssQ0FBQ0MsT0FBTyxDQUFDSCxHQUFHLENBQUMsR0FBSUEsR0FBaUMsR0FBRyxFQUFFO0VBQ3JFLENBQUMsRUFBRSxDQUFDVixNQUFNLEVBQUVILFFBQVEsQ0FBQyxDQUFDO0VBRXRCO0VBQ0EsT0FBT00sT0FBTyxDQUFDVyxPQUFPLENBQUNDLE1BQU0sR0FBR04sSUFBSSxDQUFDTSxNQUFNLEVBQUU7SUFDM0NaLE9BQU8sQ0FBQ1csT0FBTyxDQUFDRSxJQUFJLENBQUMxQyxXQUFXLENBQUEsQ0FBRSxDQUFDO0VBQ3JDO0VBQ0EsSUFBSTZCLE9BQU8sQ0FBQ1csT0FBTyxDQUFDQyxNQUFNLEdBQUdOLElBQUksQ0FBQ00sTUFBTSxFQUFFO0lBQ3hDWixPQUFPLENBQUNXLE9BQU8sR0FBR1gsT0FBTyxDQUFDVyxPQUFPLENBQUNHLEtBQUssQ0FBQyxDQUFDLEVBQUVSLElBQUksQ0FBQ00sTUFBTSxDQUFDO0VBQ3pEO0VBRUE7RUFDQS9ELFNBQVMsQ0FBQyxZQUFLO0lBQ2IsSUFBSWtELGNBQWMsQ0FBQ1ksT0FBTyxFQUFFO0lBQzVCLElBQUlMLElBQUksQ0FBQ00sTUFBTSxLQUFLLENBQUMsRUFBRTtJQUN2QixJQUFJLENBQUNILEtBQUssQ0FBQ0MsT0FBTyxDQUFDMUIsWUFBWSxDQUFDLElBQUlBLFlBQVksQ0FBQzRCLE1BQU0sS0FBSyxDQUFDLEVBQUU7SUFDL0RiLGNBQWMsQ0FBQ1ksT0FBTyxHQUFHLElBQUk7SUFDN0JiLGFBQWEsQ0FBQ0osUUFBUSxFQUFBcUIsa0JBQUEsQ0FBTS9CLFlBQVksQ0FBQyxDQUFDO0lBQzFDZ0IsT0FBTyxDQUFDVyxPQUFPLEdBQUczQixZQUFZLENBQUNnQyxHQUFHLENBQUM7TUFBQSxPQUFNN0MsV0FBVyxDQUFBLENBQUU7SUFBQSxFQUFDO0VBQ3pELENBQUMsRUFBRSxDQUFDbUMsSUFBSSxDQUFDTSxNQUFNLEVBQUU1QixZQUFZLEVBQUVVLFFBQVEsRUFBRUksYUFBYSxDQUFDLENBQUM7RUFFeEQ7RUFDQWpELFNBQVMsQ0FBQyxZQUFLO0lBQ2IsSUFBSWdDLFFBQVEsSUFBSXlCLElBQUksQ0FBQ00sTUFBTSxHQUFHLENBQUMsSUFBSVIsU0FBUyxFQUFFO01BQzVDQyxZQUFZLENBQUMsSUFBSSxDQUFDO0lBQ3BCO0VBQ0YsQ0FBQyxFQUFFLENBQUNDLElBQUksQ0FBQ00sTUFBTSxFQUFFL0IsUUFBUSxFQUFFdUIsU0FBUyxFQUFFQyxZQUFZLENBQUMsQ0FBQztFQUVwRCxJQUFNWSxNQUFNLEdBQUdyQyxHQUFHLElBQUksSUFBSSxJQUFJMEIsSUFBSSxDQUFDTSxNQUFNLEdBQUdoQyxHQUFHO0VBQy9DLElBQU1zQyxTQUFTLEdBQUd2QyxHQUFHLElBQUksSUFBSSxJQUFJMkIsSUFBSSxDQUFDTSxNQUFNLEdBQUdqQyxHQUFHO0VBRWxELElBQU13QyxZQUFZLEdBQUduRSxhQUFhLENBQUMsWUFBYztJQUMvQyxJQUFJLENBQUM2QixRQUFRLEVBQUUsT0FBTyxJQUFJO0lBQzFCLElBQUl5QixJQUFJLENBQUNNLE1BQU0sS0FBSyxDQUFDLEVBQUU7TUFDckJQLFlBQVksQ0FBQ3RCLGVBQWUsQ0FBQztNQUM3QixPQUFPLEtBQUs7SUFDZDtJQUNBc0IsWUFBWSxDQUFDLElBQUksQ0FBQztJQUNsQixPQUFPLElBQUk7RUFDYixDQUFDLENBQUM7RUFFRixJQUFNZSxHQUFHLEdBQUdwRSxhQUFhLENBQUMsVUFBQ3FFLFlBQXNDLEVBQUVDLEtBQWMsRUFBSTtJQUNuRixJQUFJLENBQUNMLE1BQU0sRUFBRTtJQUNiLElBQU1NLEtBQUssR0FBR0YsWUFBWSxLQUFBLElBQUEsSUFBWkEsWUFBWSxLQUFBLEtBQUEsQ0FBQSxHQUFaQSxZQUFZLEdBQUksQ0FBQSxDQUFFO0lBQ2hDLElBQU1HLE9BQU8sR0FBQVQsa0JBQUEsQ0FBT1QsSUFBSSxDQUFDO0lBQ3pCLElBQU1tQixPQUFPLEdBQUFWLGtCQUFBLENBQU9mLE9BQU8sQ0FBQ1csT0FBTyxDQUFDO0lBQ3BDLElBQU1lLFdBQVcsR0FBRyxPQUFPSixLQUFLLEtBQUssUUFBUSxHQUFHQSxLQUFLLEdBQUdFLE9BQU8sQ0FBQ1osTUFBTTtJQUV0RVksT0FBTyxDQUFDRyxNQUFNLENBQUNELFdBQVcsRUFBRSxDQUFDLEVBQUVILEtBQUssQ0FBQztJQUNyQ0UsT0FBTyxDQUFDRSxNQUFNLENBQUNELFdBQVcsRUFBRSxDQUFDLEVBQUV2RCxXQUFXLENBQUEsQ0FBRSxDQUFDO0lBRTdDNkIsT0FBTyxDQUFDVyxPQUFPLEdBQUdjLE9BQU87SUFDekIzQixhQUFhLENBQUNKLFFBQVEsRUFBRThCLE9BQU8sQ0FBQztJQUNoQ2pDLFVBQVUsS0FBQSxJQUFBLElBQVZBLFVBQVUsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBVkEsVUFBVSxDQUFHZ0MsS0FBSyxFQUFFRyxXQUFXLENBQUM7RUFDbEMsQ0FBQyxDQUFDO0VBRUYsSUFBTUUsUUFBUSxHQUFHNUUsYUFBYSxDQUFDLFVBQUNzRSxLQUFhLEVBQUk7SUFDL0MsSUFBSSxDQUFDSixTQUFTLEVBQUU7SUFDaEIsSUFBTU0sT0FBTyxHQUFBVCxrQkFBQSxDQUFPVCxJQUFJLENBQUM7SUFDekIsSUFBTW1CLE9BQU8sR0FBQVYsa0JBQUEsQ0FBT2YsT0FBTyxDQUFDVyxPQUFPLENBQUM7SUFFcENhLE9BQU8sQ0FBQ0csTUFBTSxDQUFDTCxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCRyxPQUFPLENBQUNFLE1BQU0sQ0FBQ0wsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUV4QnRCLE9BQU8sQ0FBQ1csT0FBTyxHQUFHYyxPQUFPO0lBQ3pCM0IsYUFBYSxDQUFDSixRQUFRLEVBQUU4QixPQUFPLENBQUM7SUFDaENoQyxhQUFhLEtBQUEsSUFBQSxJQUFiQSxhQUFhLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQWJBLGFBQWEsQ0FBRzhCLEtBQUssQ0FBQztJQUV0QjtJQUNBLElBQUl6QyxRQUFRLElBQUkyQyxPQUFPLENBQUNaLE1BQU0sS0FBSyxDQUFDLEVBQUU7TUFDcENQLFlBQVksQ0FBQ3RCLGVBQWUsQ0FBQztJQUMvQjtFQUNGLENBQUMsQ0FBQztFQUVGLElBQU04QyxJQUFJLEdBQUc3RSxhQUFhLENBQUMsVUFBQ3NFLEtBQWEsRUFBSTtJQUMzQyxJQUFJLENBQUNMLE1BQU0sRUFBRTtJQUNiLElBQU1NLEtBQUssR0FBR2pCLElBQUksQ0FBQ2dCLEtBQUssQ0FBQyxHQUFFUSxNQUFBLENBQUFDLE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFBTXpCLElBQUksQ0FBQ2dCLEtBQUssQ0FBQyxDQUFBLEdBQUssQ0FBQSxDQUFFO0lBQ25ERixHQUFHLENBQUNHLEtBQUssRUFBRUQsS0FBSyxHQUFHLENBQUMsQ0FBQztFQUN2QixDQUFDLENBQUM7RUFFRixJQUFNVSxJQUFJLEdBQUdoRixhQUFhLENBQUMsVUFBQ2lGLElBQVksRUFBRUMsRUFBVSxFQUFJO0lBQ3RELElBQUlELElBQUksS0FBS0MsRUFBRSxFQUFFO0lBQ2pCLElBQUlELElBQUksR0FBRyxDQUFDLElBQUlBLElBQUksSUFBSTNCLElBQUksQ0FBQ00sTUFBTSxJQUFJc0IsRUFBRSxHQUFHLENBQUMsSUFBSUEsRUFBRSxJQUFJNUIsSUFBSSxDQUFDTSxNQUFNLEVBQUU7SUFFcEUsSUFBTVksT0FBTyxHQUFBVCxrQkFBQSxDQUFPVCxJQUFJLENBQUM7SUFDekIsSUFBTW1CLE9BQU8sR0FBQVYsa0JBQUEsQ0FBT2YsT0FBTyxDQUFDVyxPQUFPLENBQUM7SUFDcEMsSUFBQXdCLGVBQUEsR0FBb0JYLE9BQU8sQ0FBQ0csTUFBTSxDQUFDTSxJQUFJLEVBQUUsQ0FBQyxDQUFDO01BQUFHLGdCQUFBLEdBQUFqQyxjQUFBLENBQUFnQyxlQUFBO01BQXBDRSxTQUFTLEdBQUFELGdCQUFBO0lBQ2hCLElBQUFFLGVBQUEsR0FBbUJiLE9BQU8sQ0FBQ0UsTUFBTSxDQUFDTSxJQUFJLEVBQUUsQ0FBQyxDQUFDO01BQUFNLGdCQUFBLEdBQUFwQyxjQUFBLENBQUFtQyxlQUFBO01BQW5DRSxRQUFRLEdBQUFELGdCQUFBO0lBRWZmLE9BQU8sQ0FBQ0csTUFBTSxDQUFDTyxFQUFFLEVBQUUsQ0FBQyxFQUFFRyxTQUFTLENBQUM7SUFDaENaLE9BQU8sQ0FBQ0UsTUFBTSxDQUFDTyxFQUFFLEVBQUUsQ0FBQyxFQUFFTSxRQUFRLENBQUM7SUFFL0J4QyxPQUFPLENBQUNXLE9BQU8sR0FBR2MsT0FBTztJQUN6QjNCLGFBQWEsQ0FBQ0osUUFBUSxFQUFFOEIsT0FBTyxDQUFDO0VBQ2xDLENBQUMsQ0FBQztFQUVGLElBQU1pQixPQUFPLEdBQUd6RixhQUFhLENBQUM7SUFBQSxPQUFNc0QsSUFBSTtFQUFBLEVBQUM7RUFFekMsSUFBTW9DLE1BQU0sR0FBRzVGLE9BQU8sQ0FDcEI7SUFBQSxPQUFPO01BQUVzRSxHQUFHLEVBQUhBLEdBQUc7TUFBRXVCLE1BQU0sRUFBRWYsUUFBUTtNQUFFSSxJQUFJLEVBQUpBLElBQUk7TUFBRUgsSUFBSSxFQUFKQSxJQUFJO01BQUVZLE9BQU8sRUFBUEE7SUFBTyxDQUFFO0VBQUEsQ0FBQyxFQUN0RCxDQUFDckIsR0FBRyxFQUFFUSxRQUFRLEVBQUVJLElBQUksRUFBRUgsSUFBSSxFQUFFWSxPQUFPLENBQUMsQ0FDckM7RUFFRCxJQUFNRyxZQUFZLEdBQUc5RixPQUFPLENBQzFCO0lBQUEsT0FDRXdELElBQUksQ0FBQ1UsR0FBRyxDQUFDLFVBQUM2QixLQUFLLEVBQUV2QixLQUFLO01BQUEsT0FBTTtRQUMxQjdDLElBQUksS0FBQVIsTUFBQSxDQUFLeUIsUUFBUSxPQUFBekIsTUFBQSxDQUFJcUQsS0FBSyxDQUFFO1FBQzVCd0IsR0FBRyxFQUFFOUMsT0FBTyxDQUFDVyxPQUFPLENBQUNXLEtBQUssQ0FBQyxnQkFBQXJELE1BQUEsQ0FBZ0JxRCxLQUFLO01EckNwRCxDQ3NDRztJQUFBLENBQUMsQ0FBQztFQUFBLEdBQ0wsQ0FBQ2hCLElBQUksRUFBRVosUUFBUSxDQUFDLENBQ2pCO0VBRUQ7RUFDQSxJQUFNcUQsT0FBTyxHQUFHLE9BQU96RCxRQUFRLEtBQUssVUFBVSxHQUMxQ0EsUUFBUSxDQUFDc0QsWUFBWSxFQUFFRixNQUFNLENBQUMsR0FDOUJwRCxRQUFRO0VBRVo7RUFDQSxJQUFNMEQsVUFBVSxHQUFHbEcsT0FBTyxDQUFDLFlBQUs7SUFDOUIsT0FBT3dELElBQUksQ0FBQ1UsR0FBRyxDQUFDLFVBQUNpQyxNQUFNLEVBQUUzQixLQUFLLEVBQUk7TUFDaEMsSUFBTTRCLFlBQVksR0FBR3BGLGtCQUFrQixDQUFDbUIsYUFBYSxDQUFDO01BQ3RELElBQU1rRSxjQUFjLEdBQUdyRixrQkFBa0IsQ0FBQ29CLGVBQWUsQ0FBQztNQUUxRCxJQUFNa0UsVUFBVSxHQUFHO1FBQ2pCdkIsSUFBSSxFQUFFNUMsYUFBYSxLQUFLLEtBQUssR0FDM0J4QyxJQUFBLENBQUNXLE1BQU0sRUFBQTBFLE1BQUEsQ0FBQUMsTUFBQSxDQUFBO1VBRUxzQixJQUFJLEVBQUMsUUFBUTtVQUNiQyxLQUFLLEVBQUMsV0FBVztVQUNqQkMsSUFBSSxFQUFDO1FBQU8sQ0FBQSxFQUNSTCxZQUFZLENBQUNNLElBQUksRUFBQTtVQUNyQkMsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUE7WUFBQSxPQUFRNUIsSUFBSSxDQUFDUCxLQUFLLENBQUM7VUFBQTtVQUMxQm9DLFFBQVEsRUFBRSxDQUFDekMsTUFBTSxJQUFJaUMsWUFBWSxDQUFDUSxRQUFRO1VBQUFwRSxRQUFBLEVBRXpDM0IsWUFBWSxDQUFDa0U7UUFBSSxDQUFBLENBQUEsVUFBQTVELE1BQUEsQ0FSTHFELEtBQUssQ0FBRSxDQVNiLEdBQ1AsSUFBSTtRQUNSLFVBQVFwQyxlQUFlLEtBQUssS0FBSyxHQUMvQnpDLElBQUEsQ0FBQ1csTUFBTSxFQUFBMEUsTUFBQSxDQUFBQyxNQUFBLENBQUE7VUFFTHNCLElBQUksRUFBQyxRQUFRO1VBQ2JDLEtBQUssRUFBQyxXQUFXO1VBQ2pCQyxJQUFJLEVBQUM7UUFBTyxDQUFBLEVBQ1JKLGNBQWMsQ0FBQ0ssSUFBSSxFQUFBO1VBQ3ZCQyxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBQTtZQUFBLE9BQVE3QixRQUFRLENBQUNOLEtBQUssQ0FBQztVQUFBO1VBQzlCb0MsUUFBUSxFQUFFLENBQUN4QyxTQUFTLElBQUlpQyxjQUFjLENBQUNPLFFBQVE7VUFBQXBFLFFBQUEsRUFFOUMzQixZQUFZO1FBQU8sQ0FBQSxDQUFBLFlBQUFNLE1BQUEsQ0FSTHFELEtBQUssQ0FBRSxDQVNmLEdBQ1A7TURsRUEsQ0NtRUw7TUFFRCxJQUFNcUMsZUFBZSxHQUFHdEUsWUFBWSxHQUNoQ0EsWUFBWSxDQUFDO1FBQUVpQyxLQUFLLEVBQUxBLEtBQUs7UUFBRTJCLE1BQU0sRUFBTkE7TUFBTSxDQUFFLEVBQUVQLE1BQU0sRUFBRVUsVUFBVSxDQUFDLEdBQ25ELENBQUNBLFVBQVUsQ0FBQ3ZCLElBQUksRUFBRXVCLFVBQVUsVUFBTyxDQUFDLENBQUNRLE1BQU0sQ0FBQ0MsT0FBTyxDQUFDO01BRXhELElBQU1DLE9BQU8sR0FDWHJILElBQUEsQ0FBQSxLQUFBLEVBQUE7UUFBMkNzSCxTQUFTLEVBQUUvRixPQUFPLENBQUMsYUFBYSxDQUFDO1FBQUFzQixRQUFBLEVBQ3pFcUU7TUFBNEIsQ0FBQSxFQURyQjNELE9BQU8sQ0FBQ1csT0FBTyxDQUFDVyxLQUFLLENBQUMsSUFBSUEsS0FBSyxDQUcxQztNQUVELElBQUlsQyxVQUFVLEVBQUU7UUFDZCxPQUFPQSxVQUFVLENBQUM7VUFBRTJELE9BQU8sRUFBRWUsT0FBTztVQUFFcEIsTUFBTSxFQUFOQTtRQUFNLENBQUUsQ0FBQztNQUNqRDtNQUVBLE9BQU9vQixPQUFPO0lBQ2hCLENBQUMsQ0FBQztFQUNKLENBQUMsRUFBRSxDQUFDeEQsSUFBSSxFQUFFckIsYUFBYSxFQUFFQyxlQUFlLEVBQUUrQixNQUFNLEVBQUVDLFNBQVMsRUFBRVcsSUFBSSxFQUFFRCxRQUFRLEVBQUVjLE1BQU0sRUFBRXJELFlBQVksRUFBRUQsVUFBVSxDQUFDLENBQUM7RUFFL0c7RUFDQSxJQUFNNEUsVUFBVSxHQUFHN0Usa0JBQWtCLEtBQUssS0FBSztFQUMvQyxJQUFNOEUsYUFBYSxHQUFHRCxVQUFVLElBQUlFLE9BQUEsQ0FBTy9FLGtCQUFrQixNQUFLLFFBQVEsR0FBR0Esa0JBQWtCLEdBQUcsQ0FBQSxDQUFFO0VBQ3BHLElBQU1nRixlQUFlLEdBQUcsQ0FBQTdGLEVBQUEsR0FBQzJGLGFBQXlDLEtBQUEsSUFBQSxJQUF6Q0EsYUFBYSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFiQSxhQUFhLENBQThCRyxRQUFRLE1BQUEsSUFBQSxJQUFBOUYsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLEdBQUksUUFBUTtFQUN4RixJQUFNK0YsV0FBVyxHQUFHLENBQUE5RixFQUFBLEdBQUMwRixhQUF5QyxLQUFBLElBQUEsSUFBekNBLGFBQWEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBYkEsYUFBYSxDQUE4QkssSUFBSSxNQUFBLElBQUEsSUFBQS9GLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxHQUFJWixZQUFZLENBQUN5RCxHQUFHO0VBRXhGLElBQU1tRCxhQUFhLEdBQUdQLFVBQVUsR0FDOUJ2SCxJQUFBLENBQUNXLE1BQU0sRUFBQTtJQUNMaUcsSUFBSSxFQUFDLFFBQVE7SUFDYkMsS0FBSyxFQUFDLFdBQVc7SUFDakJHLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFBLEVBQU87TUFDWixJQUFJVSxlQUFlLEtBQUssS0FBSyxFQUFFO1FBQzdCL0MsR0FBRyxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUMsQ0FBQztNQUNaLENBQUMsTUFBTTtRQUNMQSxHQUFHLENBQUEsQ0FBRTtNQUNQO0lBQ0YsQ0FBQztJQUNEc0MsUUFBUSxFQUFFLENBQUN6QyxNQUFNO0lBQUEzQixRQUFBLEVBRWhCK0U7RUFBd0IsQ0FBQSxDQUNsQixHQUNQLElBQUk7RUFFUixJQUFNRyxvQkFBb0IsR0FBRzFILE9BQU8sQ0FBQztJQUFBLE9BQU87TUFBRTZDLFFBQVEsRUFBRUQ7SUFBUSxDQUFFO0VBQUEsQ0FBQyxFQUFFLENBQUNBLFFBQVEsQ0FBQyxDQUFDO0VBRWhGLE9BQ0VqRCxJQUFBLENBQUNjLGVBQWUsQ0FBQ2tILFFBQVEsRUFBQTtJQUFDbEQsS0FBSyxFQUFFaUQsb0JBQW9CO0lBQUFsRixRQUFBLEVBQ25EM0MsS0FBQSxDQUFBLEtBQUEsRUFBQTtNQUFLb0gsU0FBUyxFQUFFL0YsT0FBTyxDQUFBLENBQUU7TUFBQXNCLFFBQUEsRUFBQSxDQUN0QlosS0FBSyxJQUFJakMsSUFBQSxDQUFDWSxlQUFlLEVBQUE7UUFBQzBHLFNBQVMsRUFBRS9GLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFBRXVGLElBQUksRUFBRTNGLHVCQUF1QjtRQUFFMEYsS0FBSyxFQUFFekYsd0JBQXdCO1FBQUF5QixRQUFBLEVBQUdaO01BQUssQ0FBQSxDQUFtQixFQUNoSnlGLGVBQWUsS0FBSyxLQUFLLElBQUlJLGFBQWEsRUFDM0M5SCxJQUFBLENBQUEsS0FBQSxFQUFBO1FBQUtzSCxTQUFTLEVBQUUvRixPQUFPLENBQUMsU0FBUyxDQUFDO1FBQUFzQixRQUFBLEVBQUd5RDtNQUFPLENBQUEsQ0FBTyxFQUNuRHRHLElBQUEsQ0FBQSxLQUFBLEVBQUE7UUFBS3NILFNBQVMsRUFBRS9GLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFBQXNCLFFBQUEsRUFBRzBEO01BQVUsQ0FBQSxDQUFPLEVBQ3JEbUIsZUFBZSxLQUFLLFFBQVEsSUFBSUksYUFBYSxFQUM3Q25FLFNBQVMsSUFBSTNELElBQUEsQ0FBQ2EsY0FBYyxFQUFBO1FBQUNvSCxFQUFFLEVBQUMsS0FBSztRQUFDbkIsSUFBSSxFQUFDLElBQUk7UUFBQ0QsS0FBSyxFQUFDLFFBQVE7UUFBQWhFLFFBQUEsRUFBRWM7TUFBUyxDQUFBLENBQWtCO0lBQUEsQ0FBQTtFQUN4RixDQUFBLENBQ21CO0FBRS9CLENBQUM7QUFFRGhDLGVBQWUsQ0FBQ3VHLFdBQVcsR0FBRyxhQUFhO0FBRTNDLE9BQU8sSUFBTUMsV0FBVyxnQkFBR2hJLElBQUksQ0FBQ3dCLGVBQWUsQ0FBQztBQUVoRCxlQUFld0csV0FBVyIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vUHJvRm9ybUxpc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgbWVtbywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlTWVtb2l6ZWRGbiBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZU1lbW9pemVkRm4nO1xuaW1wb3J0IHVzZVNhZmVTdGF0ZSBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZVNhZmVTdGF0ZSc7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4uL0J1dHRvbic7XG5pbXBvcnQgeyBUeXBvZ3JhcGh5TGFiZWwsIFR5cG9ncmFwaHlCb2R5IH0gZnJvbSAnLi4vVHlwb2dyYXBoeSc7XG5pbXBvcnQgeyBGb3JtTGlzdENvbnRleHQsIHVzZUZvcm1MaXN0Q29udGV4dCwgdXNlUHJvRm9ybUNvbnRleHQgfSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IHsgQ1NTX1BSRUZJWCwgREVGQVVMVF9URVhULCBQUk9GT1JNX0xJU1RfTEFCRUxfU0laRSwgUFJPRk9STV9MSVNUX0xBQkVMX0NPTE9SIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZXh0cmFjdEJ1dHRvblByb3BzLCBnZXROZXN0ZWRWYWx1ZSB9IGZyb20gJy4vdXRpbHMnO1xuY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMoYCR7Q1NTX1BSRUZJWH0tbGlzdGApO1xubGV0IGxpc3RLZXlDb3VudGVyID0gMDtcbmNvbnN0IGdlbmVyYXRlS2V5ID0gKCkgPT4gYGxpc3RfJHsrK2xpc3RLZXlDb3VudGVyfWA7XG5jb25zdCBQcm9Gb3JtTGlzdEJhc2UgPSAocHJvcHMpID0+IHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGNvbnN0IHsgbmFtZTogcmF3TmFtZSwgbGFiZWwsIG1pbiwgbWF4LCByZXF1aXJlZCwgcmVxdWlyZWRNZXNzYWdlID0gJ1RoaXMgbGlzdCBjYW5ub3QgYmUgZW1wdHknLCBpbml0aWFsVmFsdWUsIGNvcHlJY29uUHJvcHMsIGRlbGV0ZUljb25Qcm9wcywgY3JlYXRvckJ1dHRvblByb3BzLCBpdGVtUmVuZGVyLCBhY3Rpb25SZW5kZXIsIGNoaWxkcmVuLCBvbkFmdGVyQWRkLCBvbkFmdGVyUmVtb3ZlLCB9ID0gcHJvcHM7XG4gICAgLy8g4pSA4pSAIE5lc3RlZCBsaXN0OiBwcmVwZW5kIHBhcmVudCBsaXN0IG5hbWUg4pSA4pSAXG4gICAgY29uc3QgcGFyZW50Q3R4ID0gdXNlRm9ybUxpc3RDb250ZXh0KCk7XG4gICAgY29uc3QgZnVsbE5hbWUgPSBwYXJlbnRDdHgubGlzdE5hbWUgPyBgJHtwYXJlbnRDdHgubGlzdE5hbWV9LiR7cmF3TmFtZX1gIDogcmF3TmFtZTtcbiAgICBjb25zdCB7IHZhbHVlcywgc2V0RmllbGRWYWx1ZSB9ID0gdXNlUHJvRm9ybUNvbnRleHQoKTtcbiAgICBjb25zdCBpbml0aWFsQXBwbGllZCA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3Qga2V5c1JlZiA9IHVzZVJlZihbXSk7XG4gICAgY29uc3QgW2xpc3RFcnJvciwgc2V0TGlzdEVycm9yXSA9IHVzZVNhZmVTdGF0ZShudWxsKTtcbiAgICBjb25zdCBsaXN0ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJhdyA9IGZ1bGxOYW1lLmluY2x1ZGVzKCcuJylcbiAgICAgICAgICAgID8gZ2V0TmVzdGVkVmFsdWUodmFsdWVzLCBmdWxsTmFtZSlcbiAgICAgICAgICAgIDogdmFsdWVzW2Z1bGxOYW1lXTtcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkocmF3KSA/IHJhdyA6IFtdO1xuICAgIH0sIFt2YWx1ZXMsIGZ1bGxOYW1lXSk7XG4gICAgLy8gU3luYyBrZXlzIHdpdGggbGlzdCBsZW5ndGhcbiAgICB3aGlsZSAoa2V5c1JlZi5jdXJyZW50Lmxlbmd0aCA8IGxpc3QubGVuZ3RoKSB7XG4gICAgICAgIGtleXNSZWYuY3VycmVudC5wdXNoKGdlbmVyYXRlS2V5KCkpO1xuICAgIH1cbiAgICBpZiAoa2V5c1JlZi5jdXJyZW50Lmxlbmd0aCA+IGxpc3QubGVuZ3RoKSB7XG4gICAgICAgIGtleXNSZWYuY3VycmVudCA9IGtleXNSZWYuY3VycmVudC5zbGljZSgwLCBsaXN0Lmxlbmd0aCk7XG4gICAgfVxuICAgIC8vIEFwcGx5IGluaXRpYWwgdmFsdWUgb25jZVxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChpbml0aWFsQXBwbGllZC5jdXJyZW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAobGlzdC5sZW5ndGggIT09IDApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShpbml0aWFsVmFsdWUpIHx8IGluaXRpYWxWYWx1ZS5sZW5ndGggPT09IDApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGluaXRpYWxBcHBsaWVkLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICBzZXRGaWVsZFZhbHVlKGZ1bGxOYW1lLCBbLi4uaW5pdGlhbFZhbHVlXSk7XG4gICAgICAgIGtleXNSZWYuY3VycmVudCA9IGluaXRpYWxWYWx1ZS5tYXAoKCkgPT4gZ2VuZXJhdGVLZXkoKSk7XG4gICAgfSwgW2xpc3QubGVuZ3RoLCBpbml0aWFsVmFsdWUsIGZ1bGxOYW1lLCBzZXRGaWVsZFZhbHVlXSk7XG4gICAgLy8gQ2xlYXIgZXJyb3Igd2hlbiBsaXN0IGJlY29tZXMgbm9uLWVtcHR5XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHJlcXVpcmVkICYmIGxpc3QubGVuZ3RoID4gMCAmJiBsaXN0RXJyb3IpIHtcbiAgICAgICAgICAgIHNldExpc3RFcnJvcihudWxsKTtcbiAgICAgICAgfVxuICAgIH0sIFtsaXN0Lmxlbmd0aCwgcmVxdWlyZWQsIGxpc3RFcnJvciwgc2V0TGlzdEVycm9yXSk7XG4gICAgY29uc3QgY2FuQWRkID0gbWF4ID09IG51bGwgfHwgbGlzdC5sZW5ndGggPCBtYXg7XG4gICAgY29uc3QgY2FuUmVtb3ZlID0gbWluID09IG51bGwgfHwgbGlzdC5sZW5ndGggPiBtaW47XG4gICAgY29uc3QgdmFsaWRhdGVMaXN0ID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIGlmICghcmVxdWlyZWQpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKGxpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBzZXRMaXN0RXJyb3IocmVxdWlyZWRNZXNzYWdlKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBzZXRMaXN0RXJyb3IobnVsbCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICAgIGNvbnN0IGFkZCA9IHVzZU1lbW9pemVkRm4oKGRlZmF1bHRWYWx1ZSwgaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKCFjYW5BZGQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZGVmYXVsdFZhbHVlICE9PSBudWxsICYmIGRlZmF1bHRWYWx1ZSAhPT0gdm9pZCAwID8gZGVmYXVsdFZhbHVlIDoge307XG4gICAgICAgIGNvbnN0IG5ld0xpc3QgPSBbLi4ubGlzdF07XG4gICAgICAgIGNvbnN0IG5ld0tleXMgPSBbLi4ua2V5c1JlZi5jdXJyZW50XTtcbiAgICAgICAgY29uc3QgaW5zZXJ0SW5kZXggPSB0eXBlb2YgaW5kZXggPT09ICdudW1iZXInID8gaW5kZXggOiBuZXdMaXN0Lmxlbmd0aDtcbiAgICAgICAgbmV3TGlzdC5zcGxpY2UoaW5zZXJ0SW5kZXgsIDAsIHZhbHVlKTtcbiAgICAgICAgbmV3S2V5cy5zcGxpY2UoaW5zZXJ0SW5kZXgsIDAsIGdlbmVyYXRlS2V5KCkpO1xuICAgICAgICBrZXlzUmVmLmN1cnJlbnQgPSBuZXdLZXlzO1xuICAgICAgICBzZXRGaWVsZFZhbHVlKGZ1bGxOYW1lLCBuZXdMaXN0KTtcbiAgICAgICAgb25BZnRlckFkZCA9PT0gbnVsbCB8fCBvbkFmdGVyQWRkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkFmdGVyQWRkKHZhbHVlLCBpbnNlcnRJbmRleCk7XG4gICAgfSk7XG4gICAgY29uc3QgcmVtb3ZlQXQgPSB1c2VNZW1vaXplZEZuKChpbmRleCkgPT4ge1xuICAgICAgICBpZiAoIWNhblJlbW92ZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgbmV3TGlzdCA9IFsuLi5saXN0XTtcbiAgICAgICAgY29uc3QgbmV3S2V5cyA9IFsuLi5rZXlzUmVmLmN1cnJlbnRdO1xuICAgICAgICBuZXdMaXN0LnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIG5ld0tleXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAga2V5c1JlZi5jdXJyZW50ID0gbmV3S2V5cztcbiAgICAgICAgc2V0RmllbGRWYWx1ZShmdWxsTmFtZSwgbmV3TGlzdCk7XG4gICAgICAgIG9uQWZ0ZXJSZW1vdmUgPT09IG51bGwgfHwgb25BZnRlclJlbW92ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25BZnRlclJlbW92ZShpbmRleCk7XG4gICAgICAgIC8vIFZhbGlkYXRlIGFmdGVyIHJlbW92ZVxuICAgICAgICBpZiAocmVxdWlyZWQgJiYgbmV3TGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHNldExpc3RFcnJvcihyZXF1aXJlZE1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgY29weSA9IHVzZU1lbW9pemVkRm4oKGluZGV4KSA9PiB7XG4gICAgICAgIGlmICghY2FuQWRkKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGxpc3RbaW5kZXhdID8gT2JqZWN0LmFzc2lnbih7fSwgbGlzdFtpbmRleF0pIDoge307XG4gICAgICAgIGFkZCh2YWx1ZSwgaW5kZXggKyAxKTtcbiAgICB9KTtcbiAgICBjb25zdCBtb3ZlID0gdXNlTWVtb2l6ZWRGbigoZnJvbSwgdG8pID0+IHtcbiAgICAgICAgaWYgKGZyb20gPT09IHRvKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAoZnJvbSA8IDAgfHwgZnJvbSA+PSBsaXN0Lmxlbmd0aCB8fCB0byA8IDAgfHwgdG8gPj0gbGlzdC5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IG5ld0xpc3QgPSBbLi4ubGlzdF07XG4gICAgICAgIGNvbnN0IG5ld0tleXMgPSBbLi4ua2V5c1JlZi5jdXJyZW50XTtcbiAgICAgICAgY29uc3QgW21vdmVkSXRlbV0gPSBuZXdMaXN0LnNwbGljZShmcm9tLCAxKTtcbiAgICAgICAgY29uc3QgW21vdmVkS2V5XSA9IG5ld0tleXMuc3BsaWNlKGZyb20sIDEpO1xuICAgICAgICBuZXdMaXN0LnNwbGljZSh0bywgMCwgbW92ZWRJdGVtKTtcbiAgICAgICAgbmV3S2V5cy5zcGxpY2UodG8sIDAsIG1vdmVkS2V5KTtcbiAgICAgICAga2V5c1JlZi5jdXJyZW50ID0gbmV3S2V5cztcbiAgICAgICAgc2V0RmllbGRWYWx1ZShmdWxsTmFtZSwgbmV3TGlzdCk7XG4gICAgfSk7XG4gICAgY29uc3QgZ2V0TGlzdCA9IHVzZU1lbW9pemVkRm4oKCkgPT4gbGlzdCk7XG4gICAgY29uc3QgYWN0aW9uID0gdXNlTWVtbygoKSA9PiAoeyBhZGQsIHJlbW92ZTogcmVtb3ZlQXQsIG1vdmUsIGNvcHksIGdldExpc3QgfSksIFthZGQsIHJlbW92ZUF0LCBtb3ZlLCBjb3B5LCBnZXRMaXN0XSk7XG4gICAgY29uc3QgbWFwcGVkRmllbGRzID0gdXNlTWVtbygoKSA9PiBsaXN0Lm1hcCgoX2l0ZW0sIGluZGV4KSA9PiAoe1xuICAgICAgICBuYW1lOiBgJHtmdWxsTmFtZX0uJHtpbmRleH1gLFxuICAgICAgICBrZXk6IGtleXNSZWYuY3VycmVudFtpbmRleF0gfHwgYGZhbGxiYWNrXyR7aW5kZXh9YCxcbiAgICB9KSksIFtsaXN0LCBmdWxsTmFtZV0pO1xuICAgIC8vIFJlbmRlciBjaGlsZHJlblxuICAgIGNvbnN0IGxpc3REb20gPSB0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyBjaGlsZHJlbihtYXBwZWRGaWVsZHMsIGFjdGlvbilcbiAgICAgICAgOiBjaGlsZHJlbjtcbiAgICAvLyBBY3Rpb24gYnV0dG9ucyBwZXIgcm93XG4gICAgY29uc3QgYWN0aW9uUm93cyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICByZXR1cm4gbGlzdC5tYXAoKHJlY29yZCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvcHlCdG5Qcm9wcyA9IGV4dHJhY3RCdXR0b25Qcm9wcyhjb3B5SWNvblByb3BzKTtcbiAgICAgICAgICAgIGNvbnN0IGRlbGV0ZUJ0blByb3BzID0gZXh0cmFjdEJ1dHRvblByb3BzKGRlbGV0ZUljb25Qcm9wcyk7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0RG9tID0ge1xuICAgICAgICAgICAgICAgIGNvcHk6IGNvcHlJY29uUHJvcHMgIT09IGZhbHNlID8gKF9qc3goQnV0dG9uLCBPYmplY3QuYXNzaWduKHsgdHlwZTogXCJidXR0b25cIiwgY29sb3I6IFwic2Vjb25kYXJ5XCIsIHNpemU6IFwic21hbGxcIiB9LCBjb3B5QnRuUHJvcHMucmVzdCwgeyBvbkNsaWNrOiAoKSA9PiBjb3B5KGluZGV4KSwgZGlzYWJsZWQ6ICFjYW5BZGQgfHwgY29weUJ0blByb3BzLmRpc2FibGVkLCBjaGlsZHJlbjogREVGQVVMVF9URVhULmNvcHkgfSksIGBjb3B5LSR7aW5kZXh9YCkpIDogbnVsbCxcbiAgICAgICAgICAgICAgICBkZWxldGU6IGRlbGV0ZUljb25Qcm9wcyAhPT0gZmFsc2UgPyAoX2pzeChCdXR0b24sIE9iamVjdC5hc3NpZ24oeyB0eXBlOiBcImJ1dHRvblwiLCBjb2xvcjogXCJzZWNvbmRhcnlcIiwgc2l6ZTogXCJzbWFsbFwiIH0sIGRlbGV0ZUJ0blByb3BzLnJlc3QsIHsgb25DbGljazogKCkgPT4gcmVtb3ZlQXQoaW5kZXgpLCBkaXNhYmxlZDogIWNhblJlbW92ZSB8fCBkZWxldGVCdG5Qcm9wcy5kaXNhYmxlZCwgY2hpbGRyZW46IERFRkFVTFRfVEVYVC5kZWxldGUgfSksIGBkZWxldGUtJHtpbmRleH1gKSkgOiBudWxsLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IHJlbmRlcmVkQWN0aW9ucyA9IGFjdGlvblJlbmRlclxuICAgICAgICAgICAgICAgID8gYWN0aW9uUmVuZGVyKHsgaW5kZXgsIHJlY29yZCB9LCBhY3Rpb24sIGRlZmF1bHREb20pXG4gICAgICAgICAgICAgICAgOiBbZGVmYXVsdERvbS5jb3B5LCBkZWZhdWx0RG9tLmRlbGV0ZV0uZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgICAgICAgY29uc3Qgcm93Tm9kZSA9IChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdyb3ctYWN0aW9ucycpLCBjaGlsZHJlbjogcmVuZGVyZWRBY3Rpb25zIH0sIGtleXNSZWYuY3VycmVudFtpbmRleF0gfHwgaW5kZXgpKTtcbiAgICAgICAgICAgIGlmIChpdGVtUmVuZGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1SZW5kZXIoeyBsaXN0RG9tOiByb3dOb2RlLCBhY3Rpb24gfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcm93Tm9kZTtcbiAgICAgICAgfSk7XG4gICAgfSwgW2xpc3QsIGNvcHlJY29uUHJvcHMsIGRlbGV0ZUljb25Qcm9wcywgY2FuQWRkLCBjYW5SZW1vdmUsIGNvcHksIHJlbW92ZUF0LCBhY3Rpb24sIGFjdGlvblJlbmRlciwgaXRlbVJlbmRlcl0pO1xuICAgIC8vIENyZWF0b3IgYnV0dG9uXG4gICAgY29uc3QgaGFzQ3JlYXRvciA9IGNyZWF0b3JCdXR0b25Qcm9wcyAhPT0gZmFsc2U7XG4gICAgY29uc3QgY3JlYXRvckNvbmZpZyA9IGhhc0NyZWF0b3IgJiYgdHlwZW9mIGNyZWF0b3JCdXR0b25Qcm9wcyA9PT0gJ29iamVjdCcgPyBjcmVhdG9yQnV0dG9uUHJvcHMgOiB7fTtcbiAgICBjb25zdCBjcmVhdG9yUG9zaXRpb24gPSAoX2EgPSBjcmVhdG9yQ29uZmlnID09PSBudWxsIHx8IGNyZWF0b3JDb25maWcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNyZWF0b3JDb25maWcucG9zaXRpb24pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICdib3R0b20nO1xuICAgIGNvbnN0IGNyZWF0b3JUZXh0ID0gKF9iID0gY3JlYXRvckNvbmZpZyA9PT0gbnVsbCB8fCBjcmVhdG9yQ29uZmlnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjcmVhdG9yQ29uZmlnLnRleHQpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IERFRkFVTFRfVEVYVC5hZGQ7XG4gICAgY29uc3QgY3JlYXRvckJ1dHRvbiA9IGhhc0NyZWF0b3IgPyAoX2pzeChCdXR0b24sIHsgdHlwZTogXCJidXR0b25cIiwgY29sb3I6IFwic2Vjb25kYXJ5XCIsIG9uQ2xpY2s6ICgpID0+IHtcbiAgICAgICAgICAgIGlmIChjcmVhdG9yUG9zaXRpb24gPT09ICd0b3AnKSB7XG4gICAgICAgICAgICAgICAgYWRkKHt9LCAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGFkZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBkaXNhYmxlZDogIWNhbkFkZCwgY2hpbGRyZW46IGNyZWF0b3JUZXh0IH0pKSA6IG51bGw7XG4gICAgY29uc3QgZm9ybUxpc3RDb250ZXh0VmFsdWUgPSB1c2VNZW1vKCgpID0+ICh7IGxpc3ROYW1lOiBmdWxsTmFtZSB9KSwgW2Z1bGxOYW1lXSk7XG4gICAgcmV0dXJuIChfanN4KEZvcm1MaXN0Q29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogZm9ybUxpc3RDb250ZXh0VmFsdWUsIGNoaWxkcmVuOiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygpLCBjaGlsZHJlbjogW2xhYmVsICYmIF9qc3goVHlwb2dyYXBoeUxhYmVsLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnbGFiZWwnKSwgc2l6ZTogUFJPRk9STV9MSVNUX0xBQkVMX1NJWkUsIGNvbG9yOiBQUk9GT1JNX0xJU1RfTEFCRUxfQ09MT1IsIGNoaWxkcmVuOiBsYWJlbCB9KSwgY3JlYXRvclBvc2l0aW9uID09PSAndG9wJyAmJiBjcmVhdG9yQnV0dG9uLCBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdjb250ZW50JyksIGNoaWxkcmVuOiBsaXN0RG9tIH0pLCBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdhY3Rpb25zJyksIGNoaWxkcmVuOiBhY3Rpb25Sb3dzIH0pLCBjcmVhdG9yUG9zaXRpb24gPT09ICdib3R0b20nICYmIGNyZWF0b3JCdXR0b24sIGxpc3RFcnJvciAmJiBfanN4KFR5cG9ncmFwaHlCb2R5LCB7IGFzOiBcImRpdlwiLCBzaXplOiBcInNtXCIsIGNvbG9yOiBcImRhbmdlclwiLCBjaGlsZHJlbjogbGlzdEVycm9yIH0pXSB9KSB9KSk7XG59O1xuUHJvRm9ybUxpc3RCYXNlLmRpc3BsYXlOYW1lID0gJ1Byb0Zvcm1MaXN0JztcbmV4cG9ydCBjb25zdCBQcm9Gb3JtTGlzdCA9IG1lbW8oUHJvRm9ybUxpc3RCYXNlKTtcbmV4cG9ydCBkZWZhdWx0IFByb0Zvcm1MaXN0OyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -0,0 +1,7 @@
1
+ import type { ReactElement } from 'react';
2
+ import type { SchemaFormProps } from './interface';
3
+ /** Generic-aware export — keeps `<SchemaForm<MyValues> …>` fully typed. */
4
+ export declare const SchemaForm: (<Values = Record<string, unknown>>(props: SchemaFormProps<Values>) => ReactElement | null) & {
5
+ displayName?: string;
6
+ };
7
+ export default SchemaForm;
@@ -0,0 +1,103 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
3
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
4
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
5
+ var __rest = this && this.__rest || function (s, e) {
6
+ var t = {};
7
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
8
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
9
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ import { jsx as _jsx } from "react/jsx-runtime";
14
+ import { Fragment, memo, useMemo } from 'react';
15
+ import { ProForm } from './ProForm';
16
+ import { ProFormText, ProFormPassword, ProFormTextArea, ProFormSelect, ProFormCheckbox, ProFormCheckboxGroup, ProFormRadioGroup, ProFormSwitch, ProFormSlider, ProFormDatePicker, ProFormUpload } from './fields';
17
+ import { setNestedValue } from './core/pathUtils';
18
+ // valueType → ProForm field component. `digit` reuses the text field with a
19
+ // numeric input type (the library has no standalone InputNumber).
20
+ var VALUE_TYPE_FIELDS = {
21
+ text: ProFormText,
22
+ password: ProFormPassword,
23
+ textarea: ProFormTextArea,
24
+ digit: ProFormText,
25
+ select: ProFormSelect,
26
+ checkbox: ProFormCheckbox,
27
+ checkboxGroup: ProFormCheckboxGroup,
28
+ radioGroup: ProFormRadioGroup,
29
+ "switch": ProFormSwitch,
30
+ slider: ProFormSlider,
31
+ date: ProFormDatePicker,
32
+ dateTime: ProFormDatePicker,
33
+ upload: ProFormUpload
34
+ };
35
+ function renderColumn(column) {
36
+ var _a;
37
+ if (column.renderFormItem) {
38
+ return _jsx(Fragment, {
39
+ children: column.renderFormItem(column)
40
+ }, column.dataIndex);
41
+ }
42
+ var title = column.title,
43
+ dataIndex = column.dataIndex,
44
+ _column$valueType = column.valueType,
45
+ valueType = _column$valueType === void 0 ? 'text' : _column$valueType,
46
+ fieldProps = column.fieldProps,
47
+ _initialValue = column.initialValue,
48
+ _renderFormItem = column.renderFormItem,
49
+ rest = __rest(column, ["title", "dataIndex", "valueType", "fieldProps", "initialValue", "renderFormItem"]);
50
+ var Field = (_a = VALUE_TYPE_FIELDS[valueType]) !== null && _a !== void 0 ? _a : VALUE_TYPE_FIELDS.text;
51
+ var mergedFieldProps = fieldProps;
52
+ if (valueType === 'digit') {
53
+ mergedFieldProps = Object.assign({
54
+ type: 'number'
55
+ }, fieldProps);
56
+ } else if (valueType === 'dateTime') {
57
+ mergedFieldProps = Object.assign({
58
+ showTime: true
59
+ }, fieldProps);
60
+ }
61
+ return _jsx(Field, Object.assign({
62
+ name: dataIndex,
63
+ label: title,
64
+ fieldProps: mergedFieldProps
65
+ }, valueType === 'dateTime' ? {
66
+ valueType: 'dateTime'
67
+ } : {}, rest), dataIndex);
68
+ }
69
+ var SchemaFormBase = function SchemaFormBase(props) {
70
+ var columns = props.columns,
71
+ initialValues = props.initialValues,
72
+ formProps = __rest(props, ["columns", "initialValues"]);
73
+ // Column-level initialValue seeds the form; form-level initialValues win.
74
+ var mergedInitialValues = useMemo(function () {
75
+ var fromColumns = {};
76
+ var hasColumnValue = false;
77
+ var _iterator = _createForOfIteratorHelper(columns),
78
+ _step;
79
+ try {
80
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
81
+ var column = _step.value;
82
+ if (column.initialValue === undefined) continue;
83
+ hasColumnValue = true;
84
+ fromColumns = column.dataIndex.includes('.') ? setNestedValue(fromColumns, column.dataIndex, column.initialValue) : Object.assign(Object.assign({}, fromColumns), _defineProperty({}, column.dataIndex, column.initialValue));
85
+ }
86
+ } catch (err) {
87
+ _iterator.e(err);
88
+ } finally {
89
+ _iterator.f();
90
+ }
91
+ if (!hasColumnValue) return initialValues;
92
+ return Object.assign(Object.assign({}, fromColumns), initialValues);
93
+ }, [columns, initialValues]);
94
+ return _jsx(ProForm, Object.assign({}, formProps, {
95
+ initialValues: mergedInitialValues,
96
+ children: columns.map(renderColumn)
97
+ }));
98
+ };
99
+ SchemaFormBase.displayName = 'SchemaForm';
100
+ /** Generic-aware export — keeps `<SchemaForm<MyValues> …>` fully typed. */
101
+ export var SchemaForm = /*#__PURE__*/memo(SchemaFormBase);
102
+ export default SchemaForm;
103
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9TY2hlbWFGb3JtLmpzIiwiY29tcG9uZW50cy9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL1NjaGVtYUZvcm0udHN4Il0sIm5hbWVzIjpbIl9fcmVzdCIsInMiLCJlIiwidCIsInAiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpbmRleE9mIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiaSIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwianN4IiwiX2pzeCIsIkZyYWdtZW50IiwibWVtbyIsInVzZU1lbW8iLCJQcm9Gb3JtIiwiUHJvRm9ybVRleHQiLCJQcm9Gb3JtUGFzc3dvcmQiLCJQcm9Gb3JtVGV4dEFyZWEiLCJQcm9Gb3JtU2VsZWN0IiwiUHJvRm9ybUNoZWNrYm94IiwiUHJvRm9ybUNoZWNrYm94R3JvdXAiLCJQcm9Gb3JtUmFkaW9Hcm91cCIsIlByb0Zvcm1Td2l0Y2giLCJQcm9Gb3JtU2xpZGVyIiwiUHJvRm9ybURhdGVQaWNrZXIiLCJQcm9Gb3JtVXBsb2FkIiwic2V0TmVzdGVkVmFsdWUiLCJWQUxVRV9UWVBFX0ZJRUxEUyIsInRleHQiLCJwYXNzd29yZCIsInRleHRhcmVhIiwiZGlnaXQiLCJzZWxlY3QiLCJjaGVja2JveCIsImNoZWNrYm94R3JvdXAiLCJyYWRpb0dyb3VwIiwic2xpZGVyIiwiZGF0ZSIsImRhdGVUaW1lIiwidXBsb2FkIiwicmVuZGVyQ29sdW1uIiwiY29sdW1uIiwiX2EiLCJyZW5kZXJGb3JtSXRlbSIsImNoaWxkcmVuIiwiZGF0YUluZGV4IiwidGl0bGUiLCJfY29sdW1uJHZhbHVlVHlwZSIsInZhbHVlVHlwZSIsImZpZWxkUHJvcHMiLCJfaW5pdGlhbFZhbHVlIiwiaW5pdGlhbFZhbHVlIiwiX3JlbmRlckZvcm1JdGVtIiwicmVzdCIsIkZpZWxkIiwibWVyZ2VkRmllbGRQcm9wcyIsImFzc2lnbiIsInR5cGUiLCJzaG93VGltZSIsIm5hbWUiLCJsYWJlbCIsIlNjaGVtYUZvcm1CYXNlIiwicHJvcHMiLCJjb2x1bW5zIiwiaW5pdGlhbFZhbHVlcyIsImZvcm1Qcm9wcyIsIm1lcmdlZEluaXRpYWxWYWx1ZXMiLCJmcm9tQ29sdW1ucyIsImhhc0NvbHVtblZhbHVlIiwiX2l0ZXJhdG9yIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJfc3RlcCIsIm4iLCJkb25lIiwidmFsdWUiLCJ1bmRlZmluZWQiLCJpbmNsdWRlcyIsIl9kZWZpbmVQcm9wZXJ0eSIsImVyciIsImYiLCJtYXAiLCJkaXNwbGF5TmFtZSIsIlNjaGVtYUZvcm0iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxJQUFJQSxNQUFNLEdBQUksSUFBSSxJQUFJLElBQUksQ0FBQ0EsTUFBTSxJQUFLLFVBQVVDLENBQUMsRUFBRUMsQ0FBQyxFQUFFO0VBQ2xELElBQUlDLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDVixLQUFLLElBQUlDLENBQUMsSUFBSUgsQ0FBQyxFQUFFLElBQUlJLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ1AsQ0FBQyxFQUFFRyxDQUFDLENBQUMsSUFBSUYsQ0FBQyxDQUFDTyxPQUFPLENBQUNMLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFDL0VELENBQUMsQ0FBQ0MsQ0FBQyxDQUFDLEdBQUdILENBQUMsQ0FBQ0csQ0FBQyxDQUFDO0VBQ2YsSUFBSUgsQ0FBQyxJQUFJLElBQUksSUFBSSxPQUFPSSxNQUFNLENBQUNLLHFCQUFxQixLQUFLLFVBQVUsRUFDL0QsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFUCxDQUFDLEdBQUdDLE1BQU0sQ0FBQ0sscUJBQXFCLENBQUNULENBQUMsQ0FBQyxFQUFFVSxDQUFDLEdBQUdQLENBQUMsQ0FBQ1EsTUFBTSxFQUFFRCxDQUFDLEVBQUUsRUFBRTtJQUNwRSxJQUFJVCxDQUFDLENBQUNPLE9BQU8sQ0FBQ0wsQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSU4sTUFBTSxDQUFDQyxTQUFTLENBQUNPLG9CQUFvQixDQUFDTCxJQUFJLENBQUNQLENBQUMsRUFBRUcsQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQyxFQUMxRVIsQ0FBQyxDQUFDQyxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDLEdBQUdWLENBQUMsQ0FBQ0csQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQztFQUN6QjtFQUNKLE9BQU9SLENBQUM7QUFDWixDQUFDO0FBQ0QsU0FBU1csR0FBRyxJQUFJQyxJQUFJLFFBQVEsbUJBQW1CO0FDWC9DLFNBQVNDLFFBQVEsRUFBRUMsSUFBSSxFQUFFQyxPQUFPLFFBQVEsT0FBTztBQUUvQyxTQUFTQyxPQUFPLFFBQVEsV0FBVztBQUNuQyxTQUNFQyxXQUFXLEVBQ1hDLGVBQWUsRUFDZkMsZUFBZSxFQUNmQyxhQUFhLEVBQ2JDLGVBQWUsRUFDZkMsb0JBQW9CLEVBQ3BCQyxpQkFBaUIsRUFDakJDLGFBQWEsRUFDYkMsYUFBYSxFQUNiQyxpQkFBaUIsRUFDakJDLGFBQWEsUUFDUixVQUFVO0FBQ2pCLFNBQVNDLGNBQWMsUUFBUSxrQkFBa0I7QUFVakQ7QUFDQTtBQUNBLElBQU1DLGlCQUFpQixHQUFnRDtFQUNyRUMsSUFBSSxFQUFFYixXQUFxQztFQUMzQ2MsUUFBUSxFQUFFYixlQUF5QztFQUNuRGMsUUFBUSxFQUFFYixlQUF5QztFQUNuRGMsS0FBSyxFQUFFaEIsV0FBcUM7RUFDNUNpQixNQUFNLEVBQUVkLGFBQXVDO0VBQy9DZSxRQUFRLEVBQUVkLGVBQXlDO0VBQ25EZSxhQUFhLEVBQUVkLG9CQUE4QztFQUM3RGUsVUFBVSxFQUFFZCxpQkFBMkM7RUFDdkQsVUFBUUMsYUFBdUM7RUFDL0NjLE1BQU0sRUFBRWIsYUFBdUM7RUFDL0NjLElBQUksRUFBRWIsaUJBQTJDO0VBQ2pEYyxRQUFRLEVBQUVkLGlCQUEyQztFQUNyRGUsTUFBTSxFQUFFZDtBRFRWLENDVUM7QUFFRCxTQUFTZSxZQUFZQSxDQUFDQyxNQUEyQixFQUFBO0VEVjdDLElBQUlDLEVBQUU7RUNXUixJQUFJRCxNQUFNLENBQUNFLGNBQWMsRUFBRTtJQUN6QixPQUFPakMsSUFBQSxDQUFDQyxRQUFRLEVBQUE7TUFBQWlDLFFBQUEsRUFBeUJILE1BQU0sQ0FBQ0UsY0FBYyxDQUFDRixNQUFNO0lBQUMsQ0FBQSxFQUFoREEsTUFBTSxDQUFDSSxTQUFTLENBQTRDO0VBQ3BGO0VBRUEsSUFDRUMsS0FBSyxHQU9ITCxNQUFNLENBUFJLLEtBQUs7SUFDTEQsU0FBUyxHQU1QSixNQUFNLENBTlJJLFNBQVM7SUFBQUUsaUJBQUEsR0FNUE4sTUFBTSxDQUxSTyxTQUFTO0lBQVRBLFNBQVMsR0FBQUQsaUJBQUEsY0FBRyxNQUFNLEdBQUFBLGlCQUFBO0lBQ2xCRSxVQUFVLEdBSVJSLE1BQU0sQ0FKUlEsVUFBVTtJQUNJQyxhQUFhLEdBR3pCVCxNQUFNLENBSFJVLFlBQVk7SUFDSUMsZUFBZSxHQUU3QlgsTUFBTSxDQUZSRSxjQUFjO0lBQ1hVLElBQUksR0FBQTFELE1BQUEsQ0FDTDhDLE1BQU0sRUFSSixDQUFBLE9BQUEsRUFBQSxXQUFBLEVBQUEsV0FBQSxFQUFBLFlBQUEsRUFBQSxjQUFBLEVBQUEsZ0JBQUEsQ0FRTCxDQUFTO0VBRVYsSUFBTWEsS0FBSyxHQUFHLENBQUFaLEVBQUEsR0FBQWYsaUJBQWlCLENBQUNxQixTQUFTLENBQUMsTUFBQSxJQUFBLElBQUFOLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxHQUFJZixpQkFBaUIsQ0FBQ0MsSUFBSTtFQUNwRSxJQUFJMkIsZ0JBQWdCLEdBQUdOLFVBQVU7RUFDakMsSUFBSUQsU0FBUyxLQUFLLE9BQU8sRUFBRTtJQUN6Qk8sZ0JBQWdCLEdBQUF2RCxNQUFBLENBQUF3RCxNQUFBLENBQUE7TUFBS0MsSUFBSSxFQUFFO0lBQVEsQ0FBQSxFQUFLUixVQUFVLENBQUU7RUFDdEQsQ0FBQyxNQUFNLElBQUlELFNBQVMsS0FBSyxVQUFVLEVBQUU7SUFDbkNPLGdCQUFnQixHQUFBdkQsTUFBQSxDQUFBd0QsTUFBQSxDQUFBO01BQUtFLFFBQVEsRUFBRTtJQUFJLENBQUEsRUFBS1QsVUFBVSxDQUFFO0VBQ3REO0VBRUEsT0FDRXZDLElBQUEsQ0FBQzRDLEtBQUssRUFBQXRELE1BQUEsQ0FBQXdELE1BQUEsQ0FBQTtJQUVKRyxJQUFJLEVBQUVkLFNBQVM7SUFDZmUsS0FBSyxFQUFFZCxLQUFLO0lBQ1pHLFVBQVUsRUFBRU07RUFBZ0IsQ0FBQSxFQUV2QlAsU0FBUyxLQUFLLFVBQVUsR0FBRztJQUFFQSxTQUFTLEVBQUU7RUFBbUIsQ0FBRSxHQUFHLENBQUEsQ0FBRSxFQUNuRUssSUFBSSxDQUFBLEVBTkhSLFNBQVMsQ0FPZDtBQUVOO0FBRUEsSUFBTWdCLGNBQWMsR0FBd0IsU0FBdENBLGNBQWNBLENBQXlCQyxLQUFLLEVBQUk7RUFDcEQsSUFBUUMsT0FBTyxHQUFrQ0QsS0FBSyxDQUE5Q0MsT0FBTztJQUFFQyxhQUFhLEdBQW1CRixLQUFLLENBQXJDRSxhQUFhO0lBQUtDLFNBQVMsR0FBQXRFLE1BQUEsQ0FBS21FLEtBQUssRUFBaEQsQ0FBQSxTQUFBLEVBQUEsZUFBQSxDQUF3QyxDQUFRO0VBRXREO0VBQ0EsSUFBTUksbUJBQW1CLEdBQUdyRCxPQUFPLENBQUMsWUFBSztJQUN2QyxJQUFJc0QsV0FBVyxHQUE0QixDQUFBLENBQUU7SUFDN0MsSUFBSUMsY0FBYyxHQUFHLEtBQUs7SUFBQyxJQUFBQyxTQUFBLEdBQUFDLDBCQUFBLENBQ05QLE9BQU87TUFBQVEsS0FBQTtJQUFBO01BQTVCLEtBQUFGLFNBQUEsQ0FBQXpFLENBQUEsTUFBQTJFLEtBQUEsR0FBQUYsU0FBQSxDQUFBRyxDQUFBLElBQUFDLElBQUEsR0FBOEI7UUFBQSxJQUFuQmhDLE1BQU0sR0FBQThCLEtBQUEsQ0FBQUcsS0FBQTtRQUNmLElBQUlqQyxNQUFNLENBQUNVLFlBQVksS0FBS3dCLFNBQVMsRUFBRTtRQUN2Q1AsY0FBYyxHQUFHLElBQUk7UUFDckJELFdBQVcsR0FBRzFCLE1BQU0sQ0FBQ0ksU0FBUyxDQUFDK0IsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUN4Q2xELGNBQWMsQ0FBQ3lDLFdBQVcsRUFBRTFCLE1BQU0sQ0FBQ0ksU0FBUyxFQUFFSixNQUFNLENBQUNVLFlBQVksQ0FBQyxHQUNuRW5ELE1BQUEsQ0FBQXdELE1BQUEsQ0FBQXhELE1BQUEsQ0FBQXdELE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFBTVcsV0FBVyxDQUFBLEVBQUFVLGVBQUEsS0FBR3BDLE1BQU0sQ0FBQ0ksU0FBUyxFQUFHSixNQUFNLENBQUNVLFlBQVksQ0FBQSxDQUFFO01BQ2pFO0lBQUMsU0FBQTJCLEdBQUE7TUFBQVQsU0FBQSxDQUFBeEUsQ0FBQSxDQUFBaUYsR0FBQTtJQUFBO01BQUFULFNBQUEsQ0FBQVUsQ0FBQTtJQUFBO0lBQ0QsSUFBSSxDQUFDWCxjQUFjLEVBQUUsT0FBT0osYUFBYTtJQUN6QyxPQUFBaEUsTUFBQSxDQUFBd0QsTUFBQSxDQUFBeEQsTUFBQSxDQUFBd0QsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUFZVyxXQUFXLENBQUEsRUFBS0gsYUFBYSxDQUFBO0VBQzNDLENBQUMsRUFBRSxDQUFDRCxPQUFPLEVBQUVDLGFBQWEsQ0FBQyxDQUFDO0VBRTVCLE9BQ0V0RCxJQUFBLENBQUNJLE9BQU8sRUFBQWQsTUFBQSxDQUFBd0QsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUFLUyxTQUFTLEVBQUE7SUFBRUQsYUFBYSxFQUFFRSxtQkFBbUI7SUFBQXRCLFFBQUEsRUFDdkRtQixPQUFPLENBQUNpQixHQUFHLENBQUN4QyxZQUFZO0VBQUMsQ0FBQSxDQUFBLENBQ2xCO0FBRWQsQ0FBQztBQUVEcUIsY0FBYyxDQUFDb0IsV0FBVyxHQUFHLFlBQVk7QUFFekM7QUFDQSxPQUFPLElBQU1DLFVBQVUsZ0JBQUd0RSxJQUFJLENBQUNpRCxjQUFjLENBRU87QUFFcEQsZUFBZXFCLFVBQVUiLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL1NjaGVtYUZvcm0uanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgRnJhZ21lbnQsIG1lbW8sIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBQcm9Gb3JtIH0gZnJvbSAnLi9Qcm9Gb3JtJztcbmltcG9ydCB7IFByb0Zvcm1UZXh0LCBQcm9Gb3JtUGFzc3dvcmQsIFByb0Zvcm1UZXh0QXJlYSwgUHJvRm9ybVNlbGVjdCwgUHJvRm9ybUNoZWNrYm94LCBQcm9Gb3JtQ2hlY2tib3hHcm91cCwgUHJvRm9ybVJhZGlvR3JvdXAsIFByb0Zvcm1Td2l0Y2gsIFByb0Zvcm1TbGlkZXIsIFByb0Zvcm1EYXRlUGlja2VyLCBQcm9Gb3JtVXBsb2FkLCB9IGZyb20gJy4vZmllbGRzJztcbmltcG9ydCB7IHNldE5lc3RlZFZhbHVlIH0gZnJvbSAnLi9jb3JlL3BhdGhVdGlscyc7XG4vLyB2YWx1ZVR5cGUg4oaSIFByb0Zvcm0gZmllbGQgY29tcG9uZW50LiBgZGlnaXRgIHJldXNlcyB0aGUgdGV4dCBmaWVsZCB3aXRoIGFcbi8vIG51bWVyaWMgaW5wdXQgdHlwZSAodGhlIGxpYnJhcnkgaGFzIG5vIHN0YW5kYWxvbmUgSW5wdXROdW1iZXIpLlxuY29uc3QgVkFMVUVfVFlQRV9GSUVMRFMgPSB7XG4gICAgdGV4dDogUHJvRm9ybVRleHQsXG4gICAgcGFzc3dvcmQ6IFByb0Zvcm1QYXNzd29yZCxcbiAgICB0ZXh0YXJlYTogUHJvRm9ybVRleHRBcmVhLFxuICAgIGRpZ2l0OiBQcm9Gb3JtVGV4dCxcbiAgICBzZWxlY3Q6IFByb0Zvcm1TZWxlY3QsXG4gICAgY2hlY2tib3g6IFByb0Zvcm1DaGVja2JveCxcbiAgICBjaGVja2JveEdyb3VwOiBQcm9Gb3JtQ2hlY2tib3hHcm91cCxcbiAgICByYWRpb0dyb3VwOiBQcm9Gb3JtUmFkaW9Hcm91cCxcbiAgICBzd2l0Y2g6IFByb0Zvcm1Td2l0Y2gsXG4gICAgc2xpZGVyOiBQcm9Gb3JtU2xpZGVyLFxuICAgIGRhdGU6IFByb0Zvcm1EYXRlUGlja2VyLFxuICAgIGRhdGVUaW1lOiBQcm9Gb3JtRGF0ZVBpY2tlcixcbiAgICB1cGxvYWQ6IFByb0Zvcm1VcGxvYWQsXG59O1xuZnVuY3Rpb24gcmVuZGVyQ29sdW1uKGNvbHVtbikge1xuICAgIHZhciBfYTtcbiAgICBpZiAoY29sdW1uLnJlbmRlckZvcm1JdGVtKSB7XG4gICAgICAgIHJldHVybiBfanN4KEZyYWdtZW50LCB7IGNoaWxkcmVuOiBjb2x1bW4ucmVuZGVyRm9ybUl0ZW0oY29sdW1uKSB9LCBjb2x1bW4uZGF0YUluZGV4KTtcbiAgICB9XG4gICAgY29uc3QgeyB0aXRsZSwgZGF0YUluZGV4LCB2YWx1ZVR5cGUgPSAndGV4dCcsIGZpZWxkUHJvcHMsIGluaXRpYWxWYWx1ZTogX2luaXRpYWxWYWx1ZSwgcmVuZGVyRm9ybUl0ZW06IF9yZW5kZXJGb3JtSXRlbSB9ID0gY29sdW1uLCByZXN0ID0gX19yZXN0KGNvbHVtbiwgW1widGl0bGVcIiwgXCJkYXRhSW5kZXhcIiwgXCJ2YWx1ZVR5cGVcIiwgXCJmaWVsZFByb3BzXCIsIFwiaW5pdGlhbFZhbHVlXCIsIFwicmVuZGVyRm9ybUl0ZW1cIl0pO1xuICAgIGNvbnN0IEZpZWxkID0gKF9hID0gVkFMVUVfVFlQRV9GSUVMRFNbdmFsdWVUeXBlXSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogVkFMVUVfVFlQRV9GSUVMRFMudGV4dDtcbiAgICBsZXQgbWVyZ2VkRmllbGRQcm9wcyA9IGZpZWxkUHJvcHM7XG4gICAgaWYgKHZhbHVlVHlwZSA9PT0gJ2RpZ2l0Jykge1xuICAgICAgICBtZXJnZWRGaWVsZFByb3BzID0gT2JqZWN0LmFzc2lnbih7IHR5cGU6ICdudW1iZXInIH0sIGZpZWxkUHJvcHMpO1xuICAgIH1cbiAgICBlbHNlIGlmICh2YWx1ZVR5cGUgPT09ICdkYXRlVGltZScpIHtcbiAgICAgICAgbWVyZ2VkRmllbGRQcm9wcyA9IE9iamVjdC5hc3NpZ24oeyBzaG93VGltZTogdHJ1ZSB9LCBmaWVsZFByb3BzKTtcbiAgICB9XG4gICAgcmV0dXJuIChfanN4KEZpZWxkLCBPYmplY3QuYXNzaWduKHsgbmFtZTogZGF0YUluZGV4LCBsYWJlbDogdGl0bGUsIGZpZWxkUHJvcHM6IG1lcmdlZEZpZWxkUHJvcHMgfSwgKHZhbHVlVHlwZSA9PT0gJ2RhdGVUaW1lJyA/IHsgdmFsdWVUeXBlOiAnZGF0ZVRpbWUnIH0gOiB7fSksIHJlc3QpLCBkYXRhSW5kZXgpKTtcbn1cbmNvbnN0IFNjaGVtYUZvcm1CYXNlID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyBjb2x1bW5zLCBpbml0aWFsVmFsdWVzIH0gPSBwcm9wcywgZm9ybVByb3BzID0gX19yZXN0KHByb3BzLCBbXCJjb2x1bW5zXCIsIFwiaW5pdGlhbFZhbHVlc1wiXSk7XG4gICAgLy8gQ29sdW1uLWxldmVsIGluaXRpYWxWYWx1ZSBzZWVkcyB0aGUgZm9ybTsgZm9ybS1sZXZlbCBpbml0aWFsVmFsdWVzIHdpbi5cbiAgICBjb25zdCBtZXJnZWRJbml0aWFsVmFsdWVzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGxldCBmcm9tQ29sdW1ucyA9IHt9O1xuICAgICAgICBsZXQgaGFzQ29sdW1uVmFsdWUgPSBmYWxzZTtcbiAgICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xuICAgICAgICAgICAgaWYgKGNvbHVtbi5pbml0aWFsVmFsdWUgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGhhc0NvbHVtblZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGZyb21Db2x1bW5zID0gY29sdW1uLmRhdGFJbmRleC5pbmNsdWRlcygnLicpXG4gICAgICAgICAgICAgICAgPyBzZXROZXN0ZWRWYWx1ZShmcm9tQ29sdW1ucywgY29sdW1uLmRhdGFJbmRleCwgY29sdW1uLmluaXRpYWxWYWx1ZSlcbiAgICAgICAgICAgICAgICA6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZnJvbUNvbHVtbnMpLCB7IFtjb2x1bW4uZGF0YUluZGV4XTogY29sdW1uLmluaXRpYWxWYWx1ZSB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWhhc0NvbHVtblZhbHVlKVxuICAgICAgICAgICAgcmV0dXJuIGluaXRpYWxWYWx1ZXM7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGZyb21Db2x1bW5zKSwgaW5pdGlhbFZhbHVlcyk7XG4gICAgfSwgW2NvbHVtbnMsIGluaXRpYWxWYWx1ZXNdKTtcbiAgICByZXR1cm4gKF9qc3goUHJvRm9ybSwgT2JqZWN0LmFzc2lnbih7fSwgZm9ybVByb3BzLCB7IGluaXRpYWxWYWx1ZXM6IG1lcmdlZEluaXRpYWxWYWx1ZXMsIGNoaWxkcmVuOiBjb2x1bW5zLm1hcChyZW5kZXJDb2x1bW4pIH0pKSk7XG59O1xuU2NoZW1hRm9ybUJhc2UuZGlzcGxheU5hbWUgPSAnU2NoZW1hRm9ybSc7XG4vKiogR2VuZXJpYy1hd2FyZSBleHBvcnQg4oCUIGtlZXBzIGA8U2NoZW1hRm9ybTxNeVZhbHVlcz4g4oCmPmAgZnVsbHkgdHlwZWQuICovXG5leHBvcnQgY29uc3QgU2NoZW1hRm9ybSA9IG1lbW8oU2NoZW1hRm9ybUJhc2UpO1xuZXhwb3J0IGRlZmF1bHQgU2NoZW1hRm9ybTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=