@1money/component-ui 0.0.69 → 0.0.71

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) 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/Icons/Wrapper.js +6 -4
  15. package/es/components/Icons/constants.d.ts +11 -0
  16. package/es/components/Icons/constants.js +32 -0
  17. package/es/components/Icons/index.d.ts +2 -0
  18. package/es/components/Icons/index.js +2 -1
  19. package/es/components/Icons/interface.d.ts +8 -1
  20. package/es/components/Input/Amount/Amount.js +2 -2
  21. package/es/components/Input/Input/Input.js +3 -2
  22. package/es/components/Input/Mask/Mask.js +3 -2
  23. package/es/components/Input/OTP/OTP.js +3 -2
  24. package/es/components/Input/Password/Password.js +3 -2
  25. package/es/components/Input/Search/Search.js +3 -2
  26. package/es/components/Input/TextArea/TextArea.js +3 -2
  27. package/es/components/Input/Trade/Trade.js +2 -2
  28. package/es/components/Input/useAmountInput.js +4 -2
  29. package/es/components/Input/useSyncRef.js +2 -2
  30. package/es/components/Navigation/Nav.js +2 -2
  31. package/es/components/Navigation/Navigation.js +5 -2
  32. package/es/components/Pagination/Pagination.js +2 -2
  33. package/es/components/Pagination/usePagination.js +3 -2
  34. package/es/components/Popconfirm/Popconfirm.js +2 -2
  35. package/es/components/Portal/Portal.js +2 -2
  36. package/es/components/ProForm/ProForm.js +6 -3
  37. package/es/components/ProForm/ProFormGroup.js +2 -2
  38. package/es/components/ProForm/ProFormList.js +3 -2
  39. package/es/components/ProForm/Submitter.js +2 -2
  40. package/es/components/ProForm/core/constants.d.ts +6 -0
  41. package/es/components/ProForm/core/constants.js +7 -1
  42. package/es/components/ProForm/core/hooks/useForm.js +25 -195
  43. package/es/components/ProForm/core/hooks/useFormCore.js +14 -142
  44. package/es/components/ProForm/core/pathUtils.d.ts +6 -0
  45. package/es/components/ProForm/core/pathUtils.js +59 -0
  46. package/es/components/ProForm/core/runRules.d.ts +13 -0
  47. package/es/components/ProForm/core/runRules.js +186 -0
  48. package/es/components/ProForm/core/useFormItem.js +10 -28
  49. package/es/components/ProForm/fields/createProFormField.js +43 -57
  50. package/es/components/ProForm/hooks/useFieldRequest.js +7 -5
  51. package/es/components/ProForm/layouts/QueryFilter.js +3 -2
  52. package/es/components/ProForm/layouts/useOverlayForm.js +23 -21
  53. package/es/components/ProForm/utils.d.ts +2 -2
  54. package/es/components/ProForm/utils.js +5 -51
  55. package/es/components/ProTable/ProTable.js +3 -2
  56. package/es/components/ProTable/core/useAwaitableReload.js +3 -2
  57. package/es/components/ProTable/useFetchData.js +4 -2
  58. package/es/components/Radio/Radio.js +3 -2
  59. package/es/components/Radio/RadioGroup.js +3 -2
  60. package/es/components/ResizeObserver/useResizeObserver.js +2 -2
  61. package/es/components/Segment/Segment.js +4 -2
  62. package/es/components/Select/Select.js +3 -2
  63. package/es/components/Select/SelectCustom.js +2 -2
  64. package/es/components/Select/useSelectShell.js +3 -2
  65. package/es/components/Slider/Slider.js +3 -2
  66. package/es/components/Switch/Switch.js +3 -2
  67. package/es/components/Table/Table.js +14 -28
  68. package/es/components/Table/VirtualTable.js +18 -28
  69. package/es/components/Table/core/columnUtil.d.ts +9 -0
  70. package/es/components/Table/core/columnUtil.js +34 -0
  71. package/es/components/Table/core/useTableColumns.d.ts +4 -13
  72. package/es/components/Table/core/useTableColumns.js +55 -24
  73. package/es/components/Table/core/useTableDataPipeline.d.ts +11 -16
  74. package/es/components/Table/core/useTableDataPipeline.js +66 -73
  75. package/es/components/Table/core/useTableExpand.js +3 -2
  76. package/es/components/Table/core/useTableSelection.js +7 -4
  77. package/es/components/Table/core/useTableSetup.js +4 -2
  78. package/es/components/Table/features/ExpandTrigger.d.ts +9 -3
  79. package/es/components/Table/features/ExpandTrigger.js +14 -8
  80. package/es/components/Table/features/FilterTrigger.js +21 -17
  81. package/es/components/Table/features/SelectionColumn.d.ts +11 -6
  82. package/es/components/Table/features/SelectionColumn.js +12 -5
  83. package/es/components/Table/features/SortTrigger.d.ts +4 -2
  84. package/es/components/Table/features/SortTrigger.js +8 -3
  85. package/es/components/Table/internal/kernel/Body/MeasureCell.js +2 -2
  86. package/es/components/Table/internal/kernel/Cell/index.js +2 -2
  87. package/es/components/Table/internal/kernel/Table.js +3 -3
  88. package/es/components/Table/internal/kernel/VirtualTable/index.js +2 -2
  89. package/es/components/Table/internal/kernel/hooks/useRowInfo.js +2 -2
  90. package/es/components/Table/internal/kernel/selector-context/context.js +3 -3
  91. package/es/components/Table/renderers/HeaderCell.js +3 -2
  92. package/es/components/Table/renderers/TableShell.d.ts +13 -0
  93. package/es/components/Table/renderers/TableShell.js +25 -0
  94. package/es/components/Table/style/Table.css +3 -0
  95. package/es/components/Tabs/Tabs.js +4 -2
  96. package/es/components/Tooltip/Tooltip.js +3 -2
  97. package/es/components/Tour/Tour.js +3 -2
  98. package/es/components/Trigger/Trigger.js +3 -2
  99. package/es/components/Typography/Typography.js +2 -2
  100. package/es/components/Typography/useTypographyEnhancements.js +3 -2
  101. package/es/components/Upload/Upload.js +2 -2
  102. package/es/components/Upload/UploadFileBar.js +2 -2
  103. package/es/components/VirtualList/VirtualList.js +3 -2
  104. package/es/components/VirtualList/hooks/useMobileTouchMove.js +2 -2
  105. package/es/components/VirtualList/hooks/useScrollTo.js +2 -2
  106. package/es/index.css +1 -1
  107. package/es/index.d.ts +1 -1
  108. package/es/index.js +1 -1
  109. package/lib/business/Dialog/VerificationDialog/hooks/useOtpVerification.js +9 -8
  110. package/lib/business/Dialog/VerificationDialog/hooks/useResendCountdown.js +3 -3
  111. package/lib/business/Select/Network/NetworkSelect.js +3 -3
  112. package/lib/components/Accordion/Accordion.js +5 -4
  113. package/lib/components/Calendar/Calendar.js +6 -5
  114. package/lib/components/Carousel/Carousel.js +5 -4
  115. package/lib/components/Checkbox/BaseCheckbox.js +5 -4
  116. package/lib/components/Checkbox/Checkbox.js +3 -3
  117. package/lib/components/Checkbox/CheckboxGroup.js +7 -6
  118. package/lib/components/CoachMark/CoachMark.js +7 -6
  119. package/lib/components/Copy/Copy.js +3 -3
  120. package/lib/components/Dialog/Dialog.js +6 -6
  121. package/lib/components/Drawer/Drawer.js +10 -10
  122. package/lib/components/Icons/Wrapper.js +6 -4
  123. package/lib/components/Icons/constants.d.ts +11 -0
  124. package/lib/components/Icons/constants.js +38 -0
  125. package/lib/components/Icons/index.d.ts +2 -0
  126. package/lib/components/Icons/index.js +10 -2
  127. package/lib/components/Icons/interface.d.ts +8 -1
  128. package/lib/components/Input/Amount/Amount.js +6 -5
  129. package/lib/components/Input/Input/Input.js +7 -6
  130. package/lib/components/Input/Mask/Mask.js +9 -8
  131. package/lib/components/Input/OTP/OTP.js +9 -8
  132. package/lib/components/Input/Password/Password.js +6 -5
  133. package/lib/components/Input/Search/Search.js +8 -7
  134. package/lib/components/Input/TextArea/TextArea.js +5 -4
  135. package/lib/components/Input/Trade/Trade.js +5 -4
  136. package/lib/components/Input/useAmountInput.js +13 -11
  137. package/lib/components/Input/useSyncRef.js +4 -3
  138. package/lib/components/Navigation/Nav.js +3 -3
  139. package/lib/components/Navigation/Navigation.js +10 -7
  140. package/lib/components/Pagination/Pagination.js +4 -3
  141. package/lib/components/Pagination/usePagination.js +7 -6
  142. package/lib/components/Popconfirm/Popconfirm.js +3 -3
  143. package/lib/components/Portal/Portal.js +4 -4
  144. package/lib/components/ProForm/ProForm.js +14 -11
  145. package/lib/components/ProForm/ProFormGroup.js +3 -3
  146. package/lib/components/ProForm/ProFormList.js +10 -9
  147. package/lib/components/ProForm/Submitter.js +4 -4
  148. package/lib/components/ProForm/core/constants.d.ts +6 -0
  149. package/lib/components/ProForm/core/constants.js +8 -2
  150. package/lib/components/ProForm/core/hooks/useForm.js +36 -206
  151. package/lib/components/ProForm/core/hooks/useFormCore.js +32 -160
  152. package/lib/components/ProForm/core/pathUtils.d.ts +6 -0
  153. package/lib/components/ProForm/core/pathUtils.js +68 -0
  154. package/lib/components/ProForm/core/runRules.d.ts +13 -0
  155. package/lib/components/ProForm/core/runRules.js +194 -0
  156. package/lib/components/ProForm/core/useFormItem.js +15 -33
  157. package/lib/components/ProForm/fields/createProFormField.js +42 -56
  158. package/lib/components/ProForm/hooks/useFieldRequest.js +9 -7
  159. package/lib/components/ProForm/layouts/QueryFilter.js +8 -7
  160. package/lib/components/ProForm/layouts/useOverlayForm.js +27 -27
  161. package/lib/components/ProForm/utils.d.ts +2 -2
  162. package/lib/components/ProForm/utils.js +20 -55
  163. package/lib/components/ProTable/ProTable.js +10 -9
  164. package/lib/components/ProTable/core/useAwaitableReload.js +6 -5
  165. package/lib/components/ProTable/useFetchData.js +15 -13
  166. package/lib/components/Radio/Radio.js +6 -5
  167. package/lib/components/Radio/RadioGroup.js +5 -4
  168. package/lib/components/ResizeObserver/useResizeObserver.js +4 -3
  169. package/lib/components/Segment/Segment.js +7 -5
  170. package/lib/components/Select/Select.js +23 -22
  171. package/lib/components/Select/SelectCustom.js +8 -8
  172. package/lib/components/Select/useSelectShell.js +5 -4
  173. package/lib/components/Slider/Slider.js +6 -5
  174. package/lib/components/Switch/Switch.js +5 -4
  175. package/lib/components/Table/Table.js +13 -27
  176. package/lib/components/Table/VirtualTable.js +17 -27
  177. package/lib/components/Table/core/columnUtil.d.ts +9 -0
  178. package/lib/components/Table/core/columnUtil.js +42 -0
  179. package/lib/components/Table/core/useTableColumns.d.ts +4 -13
  180. package/lib/components/Table/core/useTableColumns.js +57 -26
  181. package/lib/components/Table/core/useTableDataPipeline.d.ts +11 -16
  182. package/lib/components/Table/core/useTableDataPipeline.js +73 -80
  183. package/lib/components/Table/core/useTableExpand.js +6 -5
  184. package/lib/components/Table/core/useTableSelection.js +13 -10
  185. package/lib/components/Table/core/useTableSetup.js +8 -5
  186. package/lib/components/Table/features/ExpandTrigger.d.ts +9 -3
  187. package/lib/components/Table/features/ExpandTrigger.js +14 -8
  188. package/lib/components/Table/features/FilterTrigger.js +21 -17
  189. package/lib/components/Table/features/SelectionColumn.d.ts +11 -6
  190. package/lib/components/Table/features/SelectionColumn.js +12 -5
  191. package/lib/components/Table/features/SortTrigger.d.ts +4 -2
  192. package/lib/components/Table/features/SortTrigger.js +8 -3
  193. package/lib/components/Table/internal/kernel/Body/MeasureCell.js +3 -3
  194. package/lib/components/Table/internal/kernel/Cell/index.js +4 -4
  195. package/lib/components/Table/internal/kernel/Table.js +7 -6
  196. package/lib/components/Table/internal/kernel/VirtualTable/index.js +4 -4
  197. package/lib/components/Table/internal/kernel/hooks/useRowInfo.js +3 -3
  198. package/lib/components/Table/internal/kernel/selector-context/context.js +6 -5
  199. package/lib/components/Table/renderers/HeaderCell.js +3 -2
  200. package/lib/components/Table/renderers/TableShell.d.ts +13 -0
  201. package/lib/components/Table/renderers/TableShell.js +31 -0
  202. package/lib/components/Table/style/Table.css +3 -0
  203. package/lib/components/Tabs/Tabs.js +7 -5
  204. package/lib/components/Tooltip/Tooltip.js +5 -4
  205. package/lib/components/Tour/Tour.js +7 -6
  206. package/lib/components/Trigger/Trigger.js +5 -4
  207. package/lib/components/Typography/Typography.js +5 -4
  208. package/lib/components/Typography/useTypographyEnhancements.js +8 -7
  209. package/lib/components/Upload/Upload.js +5 -4
  210. package/lib/components/Upload/UploadFileBar.js +4 -3
  211. package/lib/components/VirtualList/VirtualList.js +8 -7
  212. package/lib/components/VirtualList/hooks/useMobileTouchMove.js +4 -3
  213. package/lib/components/VirtualList/hooks/useScrollTo.js +3 -3
  214. package/lib/index.css +1 -1
  215. package/lib/index.d.ts +1 -1
  216. package/lib/index.js +1 -1
  217. package/package.json +2 -2
  218. package/scripts/mcp-server/examples.generated.json +12 -6
  219. package/scripts/mcp-server/index.generated.json +45 -3
@@ -9,7 +9,9 @@ exports["default"] = exports.Segment = void 0;
9
9
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
10
  var _jsxRuntime = require("react/jsx-runtime");
11
11
  var _react = require("react");
12
- var _hooks = require("@1money/hooks");
12
+ var _useControlledState3 = _interopRequireDefault(require("@1money/hooks/useControlledState"));
13
+ var _useEventCallback = _interopRequireDefault(require("@1money/hooks/useEventCallback"));
14
+ var _useLayoutEffect = _interopRequireDefault(require("@1money/hooks/useLayoutEffect"));
13
15
  var _classnames = _interopRequireWildcard(require("../../utils/classnames"));
14
16
  require("./style");
15
17
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
@@ -42,7 +44,7 @@ var Segment = exports.Segment = function Segment(props) {
42
44
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
43
45
  indicatorStyle = _useState2[0],
44
46
  setIndicatorStyle = _useState2[1];
45
- var _useControlledState = (0, _hooks.useControlledState)((_b = defaultValue !== null && defaultValue !== void 0 ? defaultValue : (_a = items[0]) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : '', value),
47
+ var _useControlledState = (0, _useControlledState3["default"])((_b = defaultValue !== null && defaultValue !== void 0 ? defaultValue : (_a = items[0]) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : '', value),
46
48
  _useControlledState2 = (0, _slicedToArray2["default"])(_useControlledState, 2),
47
49
  currentValue = _useControlledState2[0],
48
50
  setCurrentValue = _useControlledState2[1];
@@ -57,10 +59,10 @@ var Segment = exports.Segment = function Segment(props) {
57
59
  transform: "translateX(".concat(itemRect.left - containerRect.left + container.scrollLeft, "px)")
58
60
  });
59
61
  }, [currentValue]);
60
- (0, _hooks.useLayoutEffect)(function () {
62
+ (0, _useLayoutEffect["default"])(function () {
61
63
  updateIndicator();
62
64
  }, [currentValue, items, updateIndicator]);
63
- var handleItemClick = (0, _hooks.useEventCallback)(function (item) {
65
+ var handleItemClick = (0, _useEventCallback["default"])(function (item) {
64
66
  if (item.disabled) return;
65
67
  setCurrentValue(item.value);
66
68
  onChange === null || onChange === void 0 ? void 0 : onChange(item.value);
@@ -107,4 +109,4 @@ var Segment = exports.Segment = function Segment(props) {
107
109
  }));
108
110
  };
109
111
  var _default = exports["default"] = /*#__PURE__*/(0, _react.memo)(Segment);
110
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvU2VnbWVudC9TZWdtZW50LmpzIiwiY29tcG9uZW50cy9zcmMvY29tcG9uZW50cy9TZWdtZW50L1NlZ21lbnQudHN4Il0sIm5hbWVzIjpbIl9qc3hSdW50aW1lIiwicmVxdWlyZSIsIl9yZWFjdCIsIl9ob29rcyIsIl9jbGFzc25hbWVzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfX3Jlc3QiLCJzIiwicCIsInByb3RvdHlwZSIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsIlNlZ21lbnQiLCJleHBvcnRzIiwicHJvcHMiLCJfYSIsIl9iIiwiX3Byb3BzJGNsYXNzTmFtZSIsImNsYXNzTmFtZSIsIl9wcm9wcyRwcmVmaXhDbHMiLCJwcmVmaXhDbHMiLCJ2YWx1ZSIsImRlZmF1bHRWYWx1ZSIsIml0ZW1zIiwiX3Byb3BzJGFuaW1hdGVkIiwiYW5pbWF0ZWQiLCJvbkNoYW5nZSIsInJlc3QiLCJjbGFzc2VzIiwiY2xhc3NuYW1lcyIsImNvbnRhaW5lclJlZiIsInVzZVJlZiIsIml0ZW1SZWZzIiwiTWFwIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwiaW5kaWNhdG9yU3R5bGUiLCJzZXRJbmRpY2F0b3JTdHlsZSIsIl91c2VDb250cm9sbGVkU3RhdGUiLCJ1c2VDb250cm9sbGVkU3RhdGUiLCJfdXNlQ29udHJvbGxlZFN0YXRlMiIsImN1cnJlbnRWYWx1ZSIsInNldEN1cnJlbnRWYWx1ZSIsInVwZGF0ZUluZGljYXRvciIsInVzZUNhbGxiYWNrIiwiY29udGFpbmVyIiwiY3VycmVudCIsImFjdGl2ZUl0ZW0iLCJjb250YWluZXJSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiaXRlbVJlY3QiLCJ3aWR0aCIsInRyYW5zZm9ybSIsImNvbmNhdCIsImxlZnQiLCJzY3JvbGxMZWZ0IiwidXNlTGF5b3V0RWZmZWN0IiwiaGFuZGxlSXRlbUNsaWNrIiwidXNlRXZlbnRDYWxsYmFjayIsIml0ZW0iLCJkaXNhYmxlZCIsInNldEl0ZW1SZWYiLCJ2YWwiLCJlbCIsIl9qc3giLCJhc3NpZ24iLCJ1bmRlZmluZWQiLCJjaGlsZHJlbiIsIl9qc3hzIiwicmVmIiwicm9sZSIsInN0eWxlIiwidHJhbnNpdGlvbiIsIm1hcCIsInR5cGUiLCJ0YWJJbmRleCIsImpvaW5DbHMiLCJvbkNsaWNrIiwibGFiZWwiLCJfZGVmYXVsdCIsIm1lbW8iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVdBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQ1hBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE1BQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFdBQUEsR0FBQUMsdUJBQUEsQ0FBQUosT0FBQTtBQUdBQSxPQUFBO0FBQWlCLFNBQUFLLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBRix3QkFBQUUsQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLGdCQUFBSyxPQUFBLENBQUFMLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUcsQ0FBQSxH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Q0NmLElBQUksQ0FBQ3hDLEtBQUssS0FBS3NCLFlBQVk7VUFBQSxlQUFBLEVBQzFCa0IsSUFBSSxDQUFDQyxRQUFRO1VBQzVCZSxRQUFRLEVBQUVoQixJQUFJLENBQUN4QyxLQUFLLEtBQUtzQixZQUFZLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztVQUM5Q3pCLFNBQVMsRUFBRVUsT0FBTyxDQUNoQixNQUFNLEVBQ04sSUFBQWtELG1CQUFPLEVBQ0xqQixJQUFJLENBQUN4QyxLQUFLLEtBQUtzQixZQUFZLElBQUlmLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFDckRpQyxJQUFJLENBQUNDLFFBQVEsSUFBSWxDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FDMUMsQ0FDRjtVQUNEbUQsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUE7WUFBQSxPQUFRcEIsZUFBZSxDQUFDRSxJQUFJLENBQUM7VUFBQTtVQUFBUSxRQUFBLEVBRXBDLElBQUFILGVBQUEsRUFBQSxNQUFBLEVBQUE7WUFBTWhELFNBQVMsRUFBRVUsT0FBTyxDQUFDLFlBQVksQ0FBQztZQUFBeUMsUUFBQSxFQUFHUixJQUFJLENBQUNtQjtVQUFLLENBQUE7UUFBUSxDQUFBLEVBaEJ0RG5CLElBQUksQ0FBQ3hDLEtBQUssQ0FpQlI7TUFBQSxDQUNWLENBQUM7SUFBQSxDQUFBO0VBQ0UsQ0FBQSxDQUFBLENBQ0Y7QUFFVixDQUFDO0FBQUMsSUFBQTRELFFBQUEsR0FBQXBFLE9BQUEsMkJBRWEsSUFBQXFFLFdBQUksRUFBQ3RFLE9BQU8sQ0FBQyIsImZpbGUiOiJjb21wb25lbnRzL1NlZ21lbnQvU2VnbWVudC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBtZW1vLCB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUNvbnRyb2xsZWRTdGF0ZSwgdXNlRXZlbnRDYWxsYmFjaywgdXNlTGF5b3V0RWZmZWN0IH0gZnJvbSAnQDFtb25leS9ob29rcyc7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMsIGpvaW5DbHMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCAnLi9zdHlsZSc7XG5leHBvcnQgY29uc3QgU2VnbWVudCA9IHByb3BzID0+IHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGNvbnN0IHsgY2xhc3NOYW1lID0gJycsIHByZWZpeENscyA9ICdzZWdtZW50JywgdmFsdWUsIGRlZmF1bHRWYWx1ZSwgaXRlbXMsIGFuaW1hdGVkID0gdHJ1ZSwgb25DaGFuZ2UgfSA9IHByb3BzLCByZXN0ID0gX19yZXN0KHByb3BzLCBbXCJjbGFzc05hbWVcIiwgXCJwcmVmaXhDbHNcIiwgXCJ2YWx1ZVwiLCBcImRlZmF1bHRWYWx1ZVwiLCBcIml0ZW1zXCIsIFwiYW5pbWF0ZWRcIiwgXCJvbkNoYW5nZVwiXSk7XG4gICAgY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMocHJlZml4Q2xzKTtcbiAgICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgaXRlbVJlZnMgPSB1c2VSZWYobmV3IE1hcCgpKTtcbiAgICBjb25zdCBbaW5kaWNhdG9yU3R5bGUsIHNldEluZGljYXRvclN0eWxlXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtjdXJyZW50VmFsdWUsIHNldEN1cnJlbnRWYWx1ZV0gPSB1c2VDb250cm9sbGVkU3RhdGUoKF9iID0gZGVmYXVsdFZhbHVlICE9PSBudWxsICYmIGRlZmF1bHRWYWx1ZSAhPT0gdm9pZCAwID8gZGVmYXVsdFZhbHVlIDogKF9hID0gaXRlbXNbMF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS52YWx1ZSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogJycsIHZhbHVlKTtcbiAgICBjb25zdCB1cGRhdGVJbmRpY2F0b3IgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGNvbnRhaW5lclJlZi5jdXJyZW50O1xuICAgICAgICBjb25zdCBhY3RpdmVJdGVtID0gaXRlbVJlZnMuY3VycmVudC5nZXQoY3VycmVudFZhbHVlKTtcbiAgICAgICAgaWYgKCFjb250YWluZXIgfHwgIWFjdGl2ZUl0ZW0pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IGl0ZW1SZWN0ID0gYWN0aXZlSXRlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgc2V0SW5kaWNhdG9yU3R5bGUoe1xuICAgICAgICAgICAgd2lkdGg6IGl0ZW1SZWN0LndpZHRoLFxuICAgICAgICAgICAgdHJhbnNmb3JtOiBgdHJhbnNsYXRlWCgke2l0ZW1SZWN0LmxlZnQgLSBjb250YWluZXJSZWN0LmxlZnQgKyBjb250YWluZXIuc2Nyb2xsTGVmdH1weClgLFxuICAgICAgICB9KTtcbiAgICB9LCBbY3VycmVudFZhbHVlXSk7XG4gICAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgICAgdXBkYXRlSW5kaWNhdG9yKCk7XG4gICAgfSwgW2N1cnJlbnRWYWx1ZSwgaXRlbXMsIHVwZGF0ZUluZGljYXRvcl0pO1xuICAgIGNvbnN0IGhhbmRsZUl0ZW1DbGljayA9IHVzZUV2ZW50Q2FsbGJhY2soKGl0ZW0pID0+IHtcbiAgICAgICAgaWYgKGl0ZW0uZGlzYWJsZWQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHNldEN1cnJlbnRWYWx1ZShpdGVtLnZhbHVlKTtcbiAgICAgICAgb25DaGFuZ2UgPT09IG51bGwgfHwgb25DaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2hhbmdlKGl0ZW0udmFsdWUpO1xuICAgIH0pO1xuICAgIGNvbnN0IHNldEl0ZW1SZWYgPSB1c2VDYWxsYmFjaygodmFsLCBlbCkgPT4ge1xuICAgICAgICBpZiAoZWwpIHtcbiAgICAgICAgICAgIGl0ZW1SZWZzLmN1cnJlbnQuc2V0KHZhbCwgZWwpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaXRlbVJlZnMuY3VycmVudC5kZWxldGUodmFsKTtcbiAgICAgICAgfVxuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gKF9qc3goXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7fSwgcmVzdCwgeyBjbGFzc05hbWU6IGNsYXNzZXModW5kZWZpbmVkLCBjbGFzc05hbWUpLCBjaGlsZHJlbjogX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3RyYWNrJyksIHJlZjogY29udGFpbmVyUmVmLCByb2xlOiBcInJhZGlvZ3JvdXBcIiwgY2hpbGRyZW46IFtpbmRpY2F0b3JTdHlsZSAmJiAoX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2luZGljYXRvcicpLCBzdHlsZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBpbmRpY2F0b3JTdHlsZSksICghYW5pbWF0ZWQgJiYgeyB0cmFuc2l0aW9uOiAnbm9uZScgfSkpIH0pKSwgaXRlbXMubWFwKGl0ZW0gPT4gKF9qc3goXCJidXR0b25cIiwgeyByZWY6IGVsID0+IHNldEl0ZW1SZWYoaXRlbS52YWx1ZSwgZWwpLCByb2xlOiBcInJhZGlvXCIsIHR5cGU6IFwiYnV0dG9uXCIsIFwiYXJpYS1jaGVja2VkXCI6IGl0ZW0udmFsdWUgPT09IGN1cnJlbnRWYWx1ZSwgXCJhcmlhLWRpc2FibGVkXCI6IGl0ZW0uZGlzYWJsZWQsIHRhYkluZGV4OiBpdGVtLnZhbHVlID09PSBjdXJyZW50VmFsdWUgPyAwIDogLTEsIGNsYXNzTmFtZTogY2xhc3NlcygnaXRlbScsIGpvaW5DbHMoaXRlbS52YWx1ZSA9PT0gY3VycmVudFZhbHVlICYmIGNsYXNzZXMoJ2l0ZW0tYWN0aXZlJyksIGl0ZW0uZGlzYWJsZWQgJiYgY2xhc3NlcygnaXRlbS1kaXNhYmxlZCcpKSksIG9uQ2xpY2s6ICgpID0+IGhhbmRsZUl0ZW1DbGljayhpdGVtKSwgY2hpbGRyZW46IF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdpdGVtLWxhYmVsJyksIGNoaWxkcmVuOiBpdGVtLmxhYmVsIH0pIH0sIGl0ZW0udmFsdWUpKSldIH0pIH0pKSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgbWVtbyhTZWdtZW50KTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
112
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvU2VnbWVudC9TZWdtZW50LmpzIiwiY29tcG9uZW50cy9zcmMvY29tcG9uZW50cy9TZWdtZW50L1NlZ21lbnQudHN4Il0sIm5hbWVzIjpbIl9qc3hSdW50aW1lIiwicmVxdWlyZSIsIl9yZWFjdCIsIl91c2VDb250cm9sbGVkU3RhdGUzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl91c2VFdmVudENhbGxiYWNrIiwiX3VzZUxheW91dEVmZmVjdCIsIl9jbGFzc25hbWVzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfX3Jlc3QiLCJzIiwicCIsInByb3RvdHlwZSIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsIlNlZ21lbnQiLCJleHBvcnRzIiwicHJvcHMiLCJfYSIsIl9iIiwiX3Byb3BzJGNsYXNzTmFtZSIsImNsYXNzTmFtZSIsIl9wcm9wcyRwcmVmaXhDbHMiLCJwcmVmaXhDbHMiLCJ2YWx1ZSIsImRlZmF1bHRWYWx1ZSIsIml0ZW1zIiwiX3Byb3BzJGFuaW1hdGVkIiwiYW5pbWF0ZWQiLCJvbkNoYW5nZSIsInJlc3QiLCJjbGFzc2VzIiwiY2xhc3NuYW1lcyIsImNvbnRhaW5lclJlZiIsInVzZVJlZiIsIml0ZW1SZWZzIiwiTWFwIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwiaW5kaWNhdG9yU3R5bGUiLCJzZXRJbmRpY2F0b3JTdHlsZSIsIl91c2VDb250cm9sbGVkU3RhdGUiLCJ1c2VDb250cm9sbGVkU3RhdGUiLCJfdXNlQ29udHJvbGxlZFN0YXRlMiIsImN1cnJlbnRWYWx1ZSIsInNldEN1cnJlbnRWYWx1ZSIsInVwZGF0ZUluZGljYXRvciIsInVzZUNhbGxiYWNrIiwiY29udGFpbmVyIiwiY3VycmVudCIsImFjdGl2ZUl0ZW0iLCJjb250YWluZXJSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiaXRlbVJlY3QiLCJ3aWR0aCIsInRyYW5zZm9ybSIsImNvbmNhdCIsImxlZnQiLCJzY3JvbGxMZWZ0IiwidXNlTGF5b3V0RWZmZWN0IiwiaGFuZGxlSXRlbUNsaWNrIiwidXNlRXZlbnRDYWxsYmFjayIsIml0ZW0iLCJkaXNhYmxlZCIsInNldEl0ZW1SZWYiLCJ2YWwiLCJlbCIsIl9qc3giLCJhc3NpZ24iLCJ1bmRlZmluZWQiLCJjaGlsZHJlbiIsIl9qc3hzIiwicmVmIiwicm9sZSIsInN0eWxlIiwidHJhbnNpdGlvbiIsIm1hcCIsInR5cGUiLCJ0YWJJbmRleCIsImpvaW5DbHMiLCJvbkNsaWNrIiwibGFiZWwiLCJfZGVmYXVsdCIsIm1lbW8iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVdBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQ1hBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLG9CQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxpQkFBQSxHQUFBRCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUssZ0JBQUEsR0FBQUYsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFNLFdBQUEsR0FBQUMsdUJBQUEsQ0FBQVAsT0FBQTtBQUdBQSxPQUFBO0FBQWlCLFNBQUFRLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFB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InZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBtZW1vLCB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VDb250cm9sbGVkU3RhdGUgZnJvbSAnQDFtb25leS9ob29rcy91c2VDb250cm9sbGVkU3RhdGUnO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQDFtb25leS9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCB1c2VMYXlvdXRFZmZlY3QgZnJvbSAnQDFtb25leS9ob29rcy91c2VMYXlvdXRFZmZlY3QnO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBjbGFzc25hbWVzLCBqb2luQ2xzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5pbXBvcnQgJy4vc3R5bGUnO1xuZXhwb3J0IGNvbnN0IFNlZ21lbnQgPSBwcm9wcyA9PiB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICBjb25zdCB7IGNsYXNzTmFtZSA9ICcnLCBwcmVmaXhDbHMgPSAnc2VnbWVudCcsIHZhbHVlLCBkZWZhdWx0VmFsdWUsIGl0ZW1zLCBhbmltYXRlZCA9IHRydWUsIG9uQ2hhbmdlIH0gPSBwcm9wcywgcmVzdCA9IF9fcmVzdChwcm9wcywgW1wiY2xhc3NOYW1lXCIsIFwicHJlZml4Q2xzXCIsIFwidmFsdWVcIiwgXCJkZWZhdWx0VmFsdWVcIiwgXCJpdGVtc1wiLCBcImFuaW1hdGVkXCIsIFwib25DaGFuZ2VcIl0pO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKHByZWZpeENscyk7XG4gICAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGl0ZW1SZWZzID0gdXNlUmVmKG5ldyBNYXAoKSk7XG4gICAgY29uc3QgW2luZGljYXRvclN0eWxlLCBzZXRJbmRpY2F0b3JTdHlsZV0gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbY3VycmVudFZhbHVlLCBzZXRDdXJyZW50VmFsdWVdID0gdXNlQ29udHJvbGxlZFN0YXRlKChfYiA9IGRlZmF1bHRWYWx1ZSAhPT0gbnVsbCAmJiBkZWZhdWx0VmFsdWUgIT09IHZvaWQgMCA/IGRlZmF1bHRWYWx1ZSA6IChfYSA9IGl0ZW1zWzBdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudmFsdWUpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICcnLCB2YWx1ZSk7XG4gICAgY29uc3QgdXBkYXRlSW5kaWNhdG9yID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICBjb25zdCBjb250YWluZXIgPSBjb250YWluZXJSZWYuY3VycmVudDtcbiAgICAgICAgY29uc3QgYWN0aXZlSXRlbSA9IGl0ZW1SZWZzLmN1cnJlbnQuZ2V0KGN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIGlmICghY29udGFpbmVyIHx8ICFhY3RpdmVJdGVtKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBjb250YWluZXJSZWN0ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBpdGVtUmVjdCA9IGFjdGl2ZUl0ZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHNldEluZGljYXRvclN0eWxlKHtcbiAgICAgICAgICAgIHdpZHRoOiBpdGVtUmVjdC53aWR0aCxcbiAgICAgICAgICAgIHRyYW5zZm9ybTogYHRyYW5zbGF0ZVgoJHtpdGVtUmVjdC5sZWZ0IC0gY29udGFpbmVyUmVjdC5sZWZ0ICsgY29udGFpbmVyLnNjcm9sbExlZnR9cHgpYCxcbiAgICAgICAgfSk7XG4gICAgfSwgW2N1cnJlbnRWYWx1ZV0pO1xuICAgIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHVwZGF0ZUluZGljYXRvcigpO1xuICAgIH0sIFtjdXJyZW50VmFsdWUsIGl0ZW1zLCB1cGRhdGVJbmRpY2F0b3JdKTtcbiAgICBjb25zdCBoYW5kbGVJdGVtQ2xpY2sgPSB1c2VFdmVudENhbGxiYWNrKChpdGVtKSA9PiB7XG4gICAgICAgIGlmIChpdGVtLmRpc2FibGVkKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzZXRDdXJyZW50VmFsdWUoaXRlbS52YWx1ZSk7XG4gICAgICAgIG9uQ2hhbmdlID09PSBudWxsIHx8IG9uQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNoYW5nZShpdGVtLnZhbHVlKTtcbiAgICB9KTtcbiAgICBjb25zdCBzZXRJdGVtUmVmID0gdXNlQ2FsbGJhY2soKHZhbCwgZWwpID0+IHtcbiAgICAgICAgaWYgKGVsKSB7XG4gICAgICAgICAgICBpdGVtUmVmcy5jdXJyZW50LnNldCh2YWwsIGVsKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGl0ZW1SZWZzLmN1cnJlbnQuZGVsZXRlKHZhbCk7XG4gICAgICAgIH1cbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIChfanN4KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKHVuZGVmaW5lZCwgY2xhc3NOYW1lKSwgY2hpbGRyZW46IF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCd0cmFjaycpLCByZWY6IGNvbnRhaW5lclJlZiwgcm9sZTogXCJyYWRpb2dyb3VwXCIsIGNoaWxkcmVuOiBbaW5kaWNhdG9yU3R5bGUgJiYgKF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdpbmRpY2F0b3InKSwgc3R5bGU6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgaW5kaWNhdG9yU3R5bGUpLCAoIWFuaW1hdGVkICYmIHsgdHJhbnNpdGlvbjogJ25vbmUnIH0pKSB9KSksIGl0ZW1zLm1hcChpdGVtID0+IChfanN4KFwiYnV0dG9uXCIsIHsgcmVmOiBlbCA9PiBzZXRJdGVtUmVmKGl0ZW0udmFsdWUsIGVsKSwgcm9sZTogXCJyYWRpb1wiLCB0eXBlOiBcImJ1dHRvblwiLCBcImFyaWEtY2hlY2tlZFwiOiBpdGVtLnZhbHVlID09PSBjdXJyZW50VmFsdWUsIFwiYXJpYS1kaXNhYmxlZFwiOiBpdGVtLmRpc2FibGVkLCB0YWJJbmRleDogaXRlbS52YWx1ZSA9PT0gY3VycmVudFZhbHVlID8gMCA6IC0xLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2l0ZW0nLCBqb2luQ2xzKGl0ZW0udmFsdWUgPT09IGN1cnJlbnRWYWx1ZSAmJiBjbGFzc2VzKCdpdGVtLWFjdGl2ZScpLCBpdGVtLmRpc2FibGVkICYmIGNsYXNzZXMoJ2l0ZW0tZGlzYWJsZWQnKSkpLCBvbkNsaWNrOiAoKSA9PiBoYW5kbGVJdGVtQ2xpY2soaXRlbSksIGNoaWxkcmVuOiBfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnaXRlbS1sYWJlbCcpLCBjaGlsZHJlbjogaXRlbS5sYWJlbCB9KSB9LCBpdGVtLnZhbHVlKSkpXSB9KSB9KSkpO1xufTtcbmV4cG9ydCBkZWZhdWx0IG1lbW8oU2VnbWVudCk7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
@@ -11,7 +11,8 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
11
11
  var _jsxRuntime = require("react/jsx-runtime");
12
12
  var _react = require("@floating-ui/react");
13
13
  var _react2 = require("react");
14
- var _hooks = require("@1money/hooks");
14
+ var _useControlledState5 = _interopRequireDefault(require("@1money/hooks/useControlledState"));
15
+ var _useEventCallback = _interopRequireDefault(require("@1money/hooks/useEventCallback"));
15
16
  var _Icons = require("../Icons");
16
17
  var _Spinner = require("../Spinner");
17
18
  var _Typography = require("../Typography");
@@ -111,11 +112,11 @@ var Select = exports.Select = function Select(props) {
111
112
  var descriptionId = (0, _react2.useId)();
112
113
  var feedbackId = (0, _react2.useId)();
113
114
  var optionIdPrefix = (0, _react2.useId)();
114
- var _useControlledState = (0, _hooks.useControlledState)(defaultValue !== null && defaultValue !== void 0 ? defaultValue : multiple ? [] : undefined, value),
115
+ var _useControlledState = (0, _useControlledState5["default"])(defaultValue !== null && defaultValue !== void 0 ? defaultValue : multiple ? [] : undefined, value),
115
116
  _useControlledState2 = (0, _slicedToArray2["default"])(_useControlledState, 2),
116
117
  innerValue = _useControlledState2[0],
117
118
  setInnerValue = _useControlledState2[1];
118
- var _useControlledState3 = (0, _hooks.useControlledState)(defaultSearchValue, searchValue),
119
+ var _useControlledState3 = (0, _useControlledState5["default"])(defaultSearchValue, searchValue),
119
120
  _useControlledState4 = (0, _slicedToArray2["default"])(_useControlledState3, 2),
120
121
  innerSearchValue = _useControlledState4[0],
121
122
  setInnerSearchValue = _useControlledState4[1];
@@ -154,7 +155,7 @@ var Select = exports.Select = function Select(props) {
154
155
  var floatingRef = (0, _react2.useRef)(null);
155
156
  var triggerRef = (0, _react2.useRef)(null);
156
157
  var searchInputRef = (0, _react2.useRef)(null);
157
- var handleTriggerRef = (0, _hooks.useEventCallback)(function (node) {
158
+ var handleTriggerRef = (0, _useEventCallback["default"])(function (node) {
158
159
  triggerRef.current = node;
159
160
  if (ref) {
160
161
  ref.current = node;
@@ -178,11 +179,11 @@ var Select = exports.Select = function Select(props) {
178
179
  transitionStyles = _useSelectShell.transitionStyles,
179
180
  isMounted = _useSelectShell.isMounted,
180
181
  baseInteractions = _useSelectShell.baseInteractions;
181
- var setReference = (0, _hooks.useEventCallback)(function (node) {
182
+ var setReference = (0, _useEventCallback["default"])(function (node) {
182
183
  refs.setReference(node);
183
184
  handleTriggerRef(node);
184
185
  });
185
- var setFloating = (0, _hooks.useEventCallback)(function (node) {
186
+ var setFloating = (0, _useEventCallback["default"])(function (node) {
186
187
  refs.setFloating(node);
187
188
  floatingRef.current = node;
188
189
  });
@@ -239,7 +240,7 @@ var Select = exports.Select = function Select(props) {
239
240
  listRef.current = listRef.current.slice(0, visibleFlatOptions.length);
240
241
  listContentRef.current = listContentRef.current.slice(0, visibleFlatOptions.length);
241
242
  }, [visibleFlatOptions.length]);
242
- var setSearchInputRef = (0, _hooks.useEventCallback)(function (node) {
243
+ var setSearchInputRef = (0, _useEventCallback["default"])(function (node) {
243
244
  searchInputRef.current = node;
244
245
  if (node && innerOpen && filterInputAutoFocus) {
245
246
  node.focus({
@@ -247,7 +248,7 @@ var Select = exports.Select = function Select(props) {
247
248
  });
248
249
  }
249
250
  });
250
- var notifyBlurIfOutside = (0, _hooks.useEventCallback)(function (relatedTarget, event) {
251
+ var notifyBlurIfOutside = (0, _useEventCallback["default"])(function (relatedTarget, event) {
251
252
  var _a, _b;
252
253
  var nextTarget = relatedTarget;
253
254
  var withinTrigger = !!(nextTarget && ((_a = triggerRef.current) === null || _a === void 0 ? void 0 : _a.contains(nextTarget)));
@@ -256,17 +257,17 @@ var Select = exports.Select = function Select(props) {
256
257
  onBlur === null || onBlur === void 0 ? void 0 : onBlur(event);
257
258
  }
258
259
  });
259
- var handleTriggerBlur = (0, _hooks.useEventCallback)(function (event) {
260
+ var handleTriggerBlur = (0, _useEventCallback["default"])(function (event) {
260
261
  notifyBlurIfOutside(event.relatedTarget, event);
261
262
  });
262
- var handleOptionBlur = (0, _hooks.useEventCallback)(function (event) {
263
+ var handleOptionBlur = (0, _useEventCallback["default"])(function (event) {
263
264
  notifyBlurIfOutside(event.relatedTarget, event);
264
265
  });
265
- var commitChange = (0, _hooks.useEventCallback)(function (nextValue, nextOption) {
266
+ var commitChange = (0, _useEventCallback["default"])(function (nextValue, nextOption) {
266
267
  setInnerValue(nextValue);
267
268
  onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, nextOption, name);
268
269
  });
269
- var handleSelectOption = (0, _hooks.useEventCallback)(function (option) {
270
+ var handleSelectOption = (0, _useEventCallback["default"])(function (option) {
270
271
  var _a, _b;
271
272
  if (option.disabled) {
272
273
  return;
@@ -293,7 +294,7 @@ var Select = exports.Select = function Select(props) {
293
294
  preventScroll: true
294
295
  });
295
296
  });
296
- var handleRemoveSelectedValue = (0, _hooks.useEventCallback)(function (optionValue) {
297
+ var handleRemoveSelectedValue = (0, _useEventCallback["default"])(function (optionValue) {
297
298
  if (!multiple) {
298
299
  return;
299
300
  }
@@ -304,7 +305,7 @@ var Select = exports.Select = function Select(props) {
304
305
  var nextOptions = (0, _utils.getOptionsByValues)(allFlatOptions, nextValue);
305
306
  commitChange(nextValue, nextOptions);
306
307
  });
307
- var handleTriggerKeyDown = (0, _hooks.useEventCallback)(function (event) {
308
+ var handleTriggerKeyDown = (0, _useEventCallback["default"])(function (event) {
308
309
  if (!interactive) {
309
310
  return;
310
311
  }
@@ -325,28 +326,28 @@ var Select = exports.Select = function Select(props) {
325
326
  }
326
327
  }
327
328
  });
328
- var handleItemMouseEnter = (0, _hooks.useEventCallback)(function (index) {
329
+ var handleItemMouseEnter = (0, _useEventCallback["default"])(function (index) {
329
330
  var _a;
330
331
  if (!((_a = visibleFlatOptions[index]) === null || _a === void 0 ? void 0 : _a.disabled)) {
331
332
  setActiveIndex(index);
332
333
  }
333
334
  });
334
- var handleTagRemoveMouseDown = (0, _hooks.useEventCallback)(function (event) {
335
+ var handleTagRemoveMouseDown = (0, _useEventCallback["default"])(function (event) {
335
336
  event.preventDefault();
336
337
  event.stopPropagation();
337
338
  });
338
- var handleTagRemoveClick = (0, _hooks.useEventCallback)(function (event) {
339
+ var handleTagRemoveClick = (0, _useEventCallback["default"])(function (event) {
339
340
  event.preventDefault();
340
341
  event.stopPropagation();
341
342
  });
342
- var handleSearchBlur = (0, _hooks.useEventCallback)(function (event) {
343
+ var handleSearchBlur = (0, _useEventCallback["default"])(function (event) {
343
344
  notifyBlurIfOutside(event.relatedTarget, event);
344
345
  });
345
- var handleSearchChange = (0, _hooks.useEventCallback)(function (nextValue, _event) {
346
+ var handleSearchChange = (0, _useEventCallback["default"])(function (nextValue, _event) {
346
347
  setInnerSearchValue(nextValue);
347
348
  onSearchChange === null || onSearchChange === void 0 ? void 0 : onSearchChange(nextValue);
348
349
  });
349
- var findEnabledIndex = (0, _hooks.useEventCallback)(function (current, direction) {
350
+ var findEnabledIndex = (0, _useEventCallback["default"])(function (current, direction) {
350
351
  var _a;
351
352
  var length = visibleFlatOptions.length;
352
353
  if (length === 0) {
@@ -361,7 +362,7 @@ var Select = exports.Select = function Select(props) {
361
362
  }
362
363
  return null;
363
364
  });
364
- var handleSearchKeyDown = (0, _hooks.useEventCallback)(function (event) {
365
+ var handleSearchKeyDown = (0, _useEventCallback["default"])(function (event) {
365
366
  var _a;
366
367
  if (event.key === _constants.KEYBOARD.ARROW_DOWN) {
367
368
  event.preventDefault();
@@ -582,4 +583,4 @@ var Select = exports.Select = function Select(props) {
582
583
  };
583
584
  Select.displayName = 'Select';
584
585
  var _default = exports["default"] = /*#__PURE__*/(0, _react2.memo)(Select);
585
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC50c3giXSwibmFtZXMiOlsiX2pzeFJ1bnRpbWUiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX3JlYWN0MiIsIl9ob29rcyIsIl9JY29ucyIsIl9TcGlubmVyIiwiX1R5cG9ncmFwaHkiLCJfY2xhc3NuYW1lcyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX1NlbGVjdEZpZWxkU2hlbGwiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX1NlbGVjdE9wdGlvbkNvbnRlbnQiLCJfU2VsZWN0U2VhcmNoQ29udHJvbCIsIl9TZWxlY3RWYWx1ZUNvbnRlbnQiLCJfdXNlU2VsZWN0U2hlbGwyIiwiX2NvbnN0YW50cyIsIl91dGlscyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIkRFRkFVTFRfTUFYX0hFSUdIVCIsIlNlbGVjdCIsImV4cG9ydHMiLCJwcm9wcyIsIl9wcm9wcyRjbGFzc05hbWUiLCJjbGFzc05hbWUiLCJfcHJvcHMkcHJlZml4Q2xzIiwicHJlZml4Q2xzIiwic3R5bGUiLCJpZCIsIm5hbWUiLCJhcmlhTGFiZWwiLCJhcmlhTGFiZWxsZWRCeSIsIl9wcm9wcyRwbGFjZWhvbGRlciIsInBsYWNlaG9sZGVyIiwiX3Byb3BzJG9wdGlvbnMiLCJvcHRpb25zIiwidmFsdWUiLCJkZWZhdWx0VmFsdWUiLCJfcHJvcHMkc2l6ZSIsInNpemUiLCJfcHJvcHMkc3RhdHVzIiwic3RhdHVzIiwiX3Byb3BzJHZhcmlhbnQiLCJ2YXJpYW50IiwiX3Byb3BzJGRpc2FibGVkIiwiZGlzYWJsZWQiLCJkaXNhYmxlZFByb3AiLCJfcHJvcHMkcmVhZE9ubHkiLCJyZWFkT25seSIsIl9wcm9wcyRsb2FkaW5nIiwibG9hZGluZyIsIl9wcm9wcyRtdWx0aXBsZSIsIm11bHRpcGxlIiwibWF4VmlzaWJsZVZhbHVlcyIsIl9wcm9wcyRzZWFyY2hhYmxlIiwic2VhcmNoYWJsZSIsIl9wcm9wcyRzZWFyY2hQbGFjZWhvbCIsInNlYXJjaFBsYWNlaG9sZGVyIiwic2VhcmNoVmFsdWUiLCJfcHJvcHMkZGVmYXVsdFNlYXJjaFYiLCJkZWZhdWx0U2VhcmNoVmFsdWUiLCJfcHJvcHMkZmlsdGVySW5wdXRBdXQiLCJmaWx0ZXJJbnB1dEF1dG9Gb2N1cyIsImxhYmVsIiwibGFiZWxDbGFzc05hbWUiLCJpbmZvIiwiZGVzY3JpcHRpb24iLCJmZWVkYmFjayIsIl9wcm9wcyRyZXF1aXJlZCIsInJlcXVpcmVkIiwicHJlZml4IiwiX3Byb3BzJGVtcHR5Q29udGVudCIsImVtcHR5Q29udGVudCIsInBhbmVsSGVhZGVyIiwicGFuZWxGb290ZXIiLCJvcGVuIiwiX3Byb3BzJGRlZmF1bHRPcGVuIiwiZGVmYXVsdE9wZW4iLCJfcHJvcHMkcG9ydGFsIiwicG9ydGFsIiwiX3Byb3BzJGFsbG93RGVzZWxlY3QiLCJhbGxvd0Rlc2VsZWN0IiwicGFuZWxDbGFzc05hbWUiLCJvcHRpb25DbGFzc05hbWUiLCJncm91cExhYmVsQ2xhc3NOYW1lIiwiX3Byb3BzJGxpc3RNYXhIZWlnaHQiLCJsaXN0TWF4SGVpZ2h0Iiwib2Zmc2V0IiwiYW5pbWF0aW9uIiwib25DaGFuZ2UiLCJvbk9wZW5DaGFuZ2UiLCJvblNlYXJjaENoYW5nZSIsIm9uQmx1ciIsImZpbHRlck9wdGlvbiIsInJlbmRlck9wdGlvbiIsInJlbmRlck9wdGlvbkNvbnRlbnQiLCJyZW5kZXJWYWx1ZSIsInJlZiIsImludGVyYWN0aXZlIiwiY2xhc3NlcyIsInJvb3RDbGFzc25hbWVzIiwiYXV0b0lkIiwidXNlSWQiLCJ0cmlnZ2VySWQiLCJsYWJlbElkIiwiZGVzY3JpcHRpb25JZCIsImZlZWRiYWNrSWQiLCJvcHRpb25JZFByZWZpeCIsIl91c2VDb250cm9sbGVkU3RhdGUiLCJ1c2VDb250cm9sbGVkU3RhdGUiLCJ1bmRlZmluZWQiLCJfdXNlQ29udHJvbGxlZFN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsImlubmVyVmFsdWUiLCJzZXRJbm5lclZhbHVlIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTMiLCJfdXNlQ29udHJvbGxlZFN0YXRlNCIsImlubmVyU2VhcmNoVmFsdWUiLCJzZXRJbm5lclNlYXJjaFZhbHVlIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiYWN0aXZlSW5kZXgiLCJzZXRBY3RpdmVJbmRleCIsIm5vcm1hbGl6ZWRTaXplIiwibm9ybWFsaXplU2l6ZSIsImFsbE9wdGlvbkdyb3VwcyIsInVzZU1lbW8iLCJub3JtYWxpemVPcHRpb25Hcm91cHMiLCJhbGxGbGF0T3B0aW9ucyIsImZsYXR0ZW5PcHRpb25Hcm91cHMiLCJ2aXNpYmxlT3B0aW9uR3JvdXBzIiwiZmlsdGVyT3B0aW9uR3JvdXBzIiwidmlzaWJsZUZsYXRPcHRpb25zIiwic2VsZWN0ZWRPcHRpb25zIiwiZ2V0U2VsZWN0ZWRPcHRpb25zIiwic2VsZWN0ZWRJbmRleCIsImxlbmd0aCIsIm1hdGNoZWRJbmRleCIsImZpbmRJbmRleCIsIm9wdGlvbiIsImhhc1NlbGVjdGlvbiIsImxpc3RSZWYiLCJ1c2VSZWYiLCJsaXN0Q29udGVudFJlZiIsImZsb2F0aW5nUmVmIiwidHJpZ2dlclJlZiIsInNlYXJjaElucHV0UmVmIiwiaGFuZGxlVHJpZ2dlclJlZiIsInVzZUV2ZW50Q2FsbGJhY2siLCJub2RlIiwiY3VycmVudCIsIl91c2VTZWxlY3RTaGVsbCIsInVzZVNlbGVjdFNoZWxsIiwiaW5uZXJPcGVuIiwiaXNPcGVuIiwiaGFuZGxlT3BlbkNoYW5nZSIsInNldE9wZW4iLCJyZWZzIiwiY29udGV4dCIsImZsb2F0aW5nU3R5bGVzIiwidHJhbnNpdGlvblN0eWxlcyIsImlzTW91bnRlZCIsImJhc2VJbnRlcmFjdGlvbnMiLCJzZXRSZWZlcmVuY2UiLCJzZXRGbG9hdGluZyIsImxpc3ROYXZpZ2F0aW9uIiwidXNlTGlzdE5hdmlnYXRpb24iLCJvbk5hdmlnYXRlIiwiZW5hYmxlZCIsImxvb3AiLCJ2aXJ0dWFsIiwidHlwZWFoZWFkIiwidXNlVHlwZWFoZWFkIiwib25NYXRjaCIsIl91c2VJbnRlcmFjdGlvbnMiLCJ1c2VJbnRlcmFjdGlvbnMiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiZ2V0UmVmZXJlbmNlUHJvcHMiLCJnZXRGbG9hdGluZ1Byb3BzIiwiZ2V0SXRlbVByb3BzIiwiZmlyc3RFbmFibGVkSW5kZXgiLCJ1c2VFZmZlY3QiLCJwcmV2IiwiX2EiLCJmb2N1cyIsInByZXZlbnRTY3JvbGwiLCJzbGljZSIsInNldFNlYXJjaElucHV0UmVmIiwibm90aWZ5Qmx1cklmT3V0c2lkZSIsInJlbGF0ZWRUYXJnZXQiLCJldmVudCIsIl9iIiwibmV4dFRhcmdldCIsIndpdGhpblRyaWdnZXIiLCJjb250YWlucyIsIndpdGhpbkZsb2F0aW5nIiwiaGFuZGxlVHJpZ2dlckJsdXIiLCJoYW5kbGVPcHRpb25CbHVyIiwiY29tbWl0Q2hhbmdlIiwibmV4dFZhbHVlIiwibmV4dE9wdGlvbiIsImhhbmRsZVNlbGVjdE9wdGlvbiIsInRvZ2dsZU11bHRpcGxlVmFsdWUiLCJuZXh0T3B0aW9ucyIsImdldE9wdGlvbnNCeVZhbHVlcyIsImhhbmRsZVJlbW92ZVNlbGVjdGVkVmFsdWUiLCJvcHRpb25WYWx1ZSIsImdldE11bHRpcGxlVmFsdWUiLCJpbmNsdWRlcyIsInJlbW92ZU11bHRpcGxlVmFsdWUiLCJoYW5kbGVUcmlnZ2VyS2V5RG93biIsImtleSIsIktFWUJPQVJEIiwiRU5URVIiLCJTUEFDRSIsInByZXZlbnREZWZhdWx0IiwiQVJST1dfRE9XTiIsIkFSUk9XX1VQIiwiaGFuZGxlSXRlbU1vdXNlRW50ZXIiLCJpbmRleCIsImhhbmRsZVRhZ1JlbW92ZU1vdXNlRG93biIsInN0b3BQcm9wYWdhdGlvbiIsImhhbmRsZVRhZ1JlbW92ZUNsaWNrIiwiaGFuZGxlU2VhcmNoQmx1ciIsImhhbmRsZVNlYXJjaENoYW5nZSIsIl9ldmVudCIsImZpbmRFbmFibGVkSW5kZXgiLCJkaXJlY3Rpb24iLCJzdGFydCIsInN0ZXAiLCJjYW5kaWRhdGUiLCJoYW5kbGVTZWFyY2hLZXlEb3duIiwibmV4dCIsIkVTQ0FQRSIsInJlbmRlclZhbHVlTWV0YSIsImZvbnRTaXplIiwiZ2V0Rm9udFNpemUiLCJ2YWx1ZUxhYmVsQ2xhc3MiLCJpc011bHRpcGxlVmFsdWVGaWxsZWQiLCJ0cmlnZ2VyQ2xhc3NOYW1lIiwiam9pbkNscyIsImljb25TaXplIiwiYWN0aXZlT3B0aW9uSWQiLCJmbG9hdGluZ0FyaWFMYWJlbGxlZEJ5IiwiZGVzY3JpYmVkQnlJZHMiLCJmaWx0ZXIiLCJCb29sZWFuIiwiam9pbiIsIl9qc3hzIiwiU2VsZWN0RmllbGRTaGVsbCIsImNoaWxkcmVuIiwiYXNzaWduIiwidHlwZSIsIm9uS2V5RG93biIsIl9qc3giLCJTZWxlY3RWYWx1ZUNvbnRlbnQiLCJvblJlbW92ZSIsIm9uUmVtb3ZlQ2xpY2siLCJvblJlbW92ZU1vdXNlRG93biIsIlNwaW5uZXIiLCJzdHJva2VXaWR0aCIsIkljb25zIiwiY29sb3IiLCJwYW5lbE5vZGUiLCJGbG9hdGluZ0ZvY3VzTWFuYWdlciIsIm1vZGFsIiwiaW5pdGlhbEZvY3VzIiwicmV0dXJuRm9jdXMiLCJTZWxlY3RTZWFyY2hDb250cm9sIiwiYWN0aXZlRGVzY2VuZGFudCIsIlR5cG9ncmFwaHlCb2R5IiwiU0VMRUNUX1RZUE9HUkFQSFkiLCJlbXB0eSIsImZsYXRJbmRleCIsIm1hcCIsImdyb3VwIiwiVHlwb2dyYXBoeUxhYmVsIiwiZ3JvdXBMYWJlbCIsInN0cm9uZyIsIm9wdGlvbkZsYXRJbmRleCIsInNlbGVjdGVkIiwiaXNPcHRpb25TZWxlY3RlZCIsImFjdGl2ZSIsIm9wdGlvbk1ldGEiLCJleHRyYWN0T3B0aW9uVGV4dCIsInJvbGUiLCJvbkNsaWNrIiwib25Nb3VzZUVudGVyIiwiU2VsZWN0T3B0aW9uQ29udGVudCIsImNvbnRlbnQiLCJGbG9hdGluZ1BvcnRhbCIsImRpc3BsYXlOYW1lIiwiX2RlZmF1bHQiLCJtZW1vIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsSUFBQUEsV0FBQSxHQUFBQyxPQUFBO0FDQUEsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBT0EsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksTUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssUUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sV0FBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sV0FBQSxHQUFBQyx1QkFBQSxDQUFBUixPQUFBO0FBZ0JBLElBQUFTLGlCQUFBLEdBQUFDLHNCQUFBLENBQUFWLE9BQUE7QUFDQSxJQUFBVyxvQkFBQSxHQUFBRCxzQkFBQSxDQUFBVixPQUFBO0FBQ0EsSUFBQVksb0JBQUEsR0FBQUYsc0JBQUEsQ0FBQVYsT0FBQTtBQUNBLElBQUFhLG1CQUFBLEdBQUFILHNCQUFBLENBQUFWLE9BQUE7QUFDQSxJQUFBYyxnQkFBQSxHQUFBZCxPQUFBO0FBQ0EsSUFBQWUsVUFBQSxHQUFBZixPQUFBO0FBQ0EsSUFBQWdCLE1BQUEsR0FBQWhCLE9BQUE7QUFjQUEsT0FBQTtBQUFpQixTQUFBaUIseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFWLHdCQUFBVSxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JBQUFL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SUFBQWlMLGVBQUEsRUFBQ29DLHFCQUFjLEVBQUE7UUFBQXhDLFFBQUEsRUFBRWE7TUFBUyxDQUFBLENBQWtCLEdBQUdBLFNBQVM7SUFDMUUsQ0FBQyxDQUFDLENBQUU7RUFBQSxDQUFBLENBQ2E7QUFFdkIsQ0FBQztBQUVEclAsTUFBTSxDQUFDaVIsV0FBVyxHQUFHLFFBQVE7QUFBQyxJQUFBQyxRQUFBLEdBQUFqUixPQUFBLDJCQUVmLElBQUFrUixZQUFJLEVBQUNuUixNQUFNLENBQUMiLCJmaWxlIjoiY29tcG9uZW50cy9TZWxlY3QvU2VsZWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IEZsb2F0aW5nRm9jdXNNYW5hZ2VyLCBGbG9hdGluZ1BvcnRhbCwgdXNlSW50ZXJhY3Rpb25zLCB1c2VMaXN0TmF2aWdhdGlvbiwgdXNlVHlwZWFoZWFkLCB9IGZyb20gJ0BmbG9hdGluZy11aS9yZWFjdCc7XG5pbXBvcnQgeyBtZW1vLCB1c2VFZmZlY3QsIHVzZUlkLCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29udHJvbGxlZFN0YXRlLCB1c2VFdmVudENhbGxiYWNrIH0gZnJvbSAnQDFtb25leS9ob29rcyc7XG5pbXBvcnQgeyBJY29ucyB9IGZyb20gJy4uL0ljb25zJztcbmltcG9ydCB7IFNwaW5uZXIgfSBmcm9tICcuLi9TcGlubmVyJztcbmltcG9ydCB7IFR5cG9ncmFwaHlCb2R5LCBUeXBvZ3JhcGh5TGFiZWwgfSBmcm9tICcuLi9UeXBvZ3JhcGh5JztcbmltcG9ydCB7IGpvaW5DbHMsIGRlZmF1bHQgYXMgcm9vdENsYXNzbmFtZXMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCBTZWxlY3RGaWVsZFNoZWxsIGZyb20gJy4vU2VsZWN0RmllbGRTaGVsbCc7XG5pbXBvcnQgU2VsZWN0T3B0aW9uQ29udGVudCBmcm9tICcuL1NlbGVjdE9wdGlvbkNvbnRlbnQnO1xuaW1wb3J0IFNlbGVjdFNlYXJjaENvbnRyb2wgZnJvbSAnLi9TZWxlY3RTZWFyY2hDb250cm9sJztcbmltcG9ydCBTZWxlY3RWYWx1ZUNvbnRlbnQgZnJvbSAnLi9TZWxlY3RWYWx1ZUNvbnRlbnQnO1xuaW1wb3J0IHsgdXNlU2VsZWN0U2hlbGwgfSBmcm9tICcuL3VzZVNlbGVjdFNoZWxsJztcbmltcG9ydCB7IEtFWUJPQVJELCBTRUxFQ1RfVFlQT0dSQVBIWSB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGV4dHJhY3RPcHRpb25UZXh0LCBmaWx0ZXJPcHRpb25Hcm91cHMsIGZsYXR0ZW5PcHRpb25Hcm91cHMsIGdldE11bHRpcGxlVmFsdWUsIGdldEZvbnRTaXplLCBnZXRPcHRpb25zQnlWYWx1ZXMsIGdldFNlbGVjdGVkT3B0aW9ucywgaXNPcHRpb25TZWxlY3RlZCwgbm9ybWFsaXplU2l6ZSwgbm9ybWFsaXplT3B0aW9uR3JvdXBzLCByZW1vdmVNdWx0aXBsZVZhbHVlLCB0b2dnbGVNdWx0aXBsZVZhbHVlLCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0ICcuL3N0eWxlJztcbmNvbnN0IERFRkFVTFRfTUFYX0hFSUdIVCA9IDMyMDtcbmV4cG9ydCBjb25zdCBTZWxlY3QgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCB7IGNsYXNzTmFtZSA9ICcnLCBwcmVmaXhDbHMgPSAnc2VsZWN0Jywgc3R5bGUsIGlkLCBuYW1lLCAnYXJpYS1sYWJlbCc6IGFyaWFMYWJlbCwgJ2FyaWEtbGFiZWxsZWRieSc6IGFyaWFMYWJlbGxlZEJ5LCBwbGFjZWhvbGRlciA9ICdWYWx1ZScsIG9wdGlvbnMgPSBbXSwgdmFsdWUsIGRlZmF1bHRWYWx1ZSwgc2l6ZSA9ICdsYXJnZScsIHN0YXR1cyA9ICdkZWZhdWx0JywgdmFyaWFudCA9ICdmaWxsJywgZGlzYWJsZWQ6IGRpc2FibGVkUHJvcCA9IGZhbHNlLCByZWFkT25seSA9IGZhbHNlLCBsb2FkaW5nID0gZmFsc2UsIG11bHRpcGxlID0gZmFsc2UsIG1heFZpc2libGVWYWx1ZXMsIHNlYXJjaGFibGUgPSBmYWxzZSwgc2VhcmNoUGxhY2Vob2xkZXIgPSAnU2VhcmNoJywgc2VhcmNoVmFsdWUsIGRlZmF1bHRTZWFyY2hWYWx1ZSA9ICcnLCBmaWx0ZXJJbnB1dEF1dG9Gb2N1cyA9IHRydWUsIGxhYmVsLCBsYWJlbENsYXNzTmFtZSwgaW5mbywgZGVzY3JpcHRpb24sIGZlZWRiYWNrLCByZXF1aXJlZCA9IHRydWUsIHByZWZpeCwgZW1wdHlDb250ZW50ID0gJ05vIG9wdGlvbnMnLCBwYW5lbEhlYWRlciwgcGFuZWxGb290ZXIsIG9wZW4sIGRlZmF1bHRPcGVuID0gZmFsc2UsIHBvcnRhbCA9IHRydWUsIGFsbG93RGVzZWxlY3QgPSBmYWxzZSwgcGFuZWxDbGFzc05hbWUsIG9wdGlvbkNsYXNzTmFtZSwgZ3JvdXBMYWJlbENsYXNzTmFtZSwgbGlzdE1heEhlaWdodCA9IERFRkFVTFRfTUFYX0hFSUdIVCwgb2Zmc2V0LCBhbmltYXRpb24sIG9uQ2hhbmdlLCBvbk9wZW5DaGFuZ2UsIG9uU2VhcmNoQ2hhbmdlLCBvbkJsdXIsIGZpbHRlck9wdGlvbiwgcmVuZGVyT3B0aW9uLCByZW5kZXJPcHRpb25Db250ZW50LCByZW5kZXJWYWx1ZSwgcmVmLCB9ID0gcHJvcHM7XG4gICAgY29uc3QgZGlzYWJsZWQgPSBkaXNhYmxlZFByb3AgfHwgbG9hZGluZztcbiAgICBjb25zdCBpbnRlcmFjdGl2ZSA9ICFkaXNhYmxlZCAmJiAhcmVhZE9ubHk7XG4gICAgY29uc3QgY2xhc3NlcyA9IHJvb3RDbGFzc25hbWVzKHByZWZpeENscyk7XG4gICAgY29uc3QgYXV0b0lkID0gdXNlSWQoKTtcbiAgICBjb25zdCB0cmlnZ2VySWQgPSBpZCAhPT0gbnVsbCAmJiBpZCAhPT0gdm9pZCAwID8gaWQgOiBhdXRvSWQ7XG4gICAgY29uc3QgbGFiZWxJZCA9IHVzZUlkKCk7XG4gICAgY29uc3QgZGVzY3JpcHRpb25JZCA9IHVzZUlkKCk7XG4gICAgY29uc3QgZmVlZGJhY2tJZCA9IHVzZUlkKCk7XG4gICAgY29uc3Qgb3B0aW9uSWRQcmVmaXggPSB1c2VJZCgpO1xuICAgIGNvbnN0IFtpbm5lclZhbHVlLCBzZXRJbm5lclZhbHVlXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShkZWZhdWx0VmFsdWUgIT09IG51bGwgJiYgZGVmYXVsdFZhbHVlICE9PSB2b2lkIDAgPyBkZWZhdWx0VmFsdWUgOiAobXVsdGlwbGUgPyBbXSA6IHVuZGVmaW5lZCksIHZhbHVlKTtcbiAgICBjb25zdCBbaW5uZXJTZWFyY2hWYWx1ZSwgc2V0SW5uZXJTZWFyY2hWYWx1ZV0gPSB1c2VDb250cm9sbGVkU3RhdGUoZGVmYXVsdFNlYXJjaFZhbHVlLCBzZWFyY2hWYWx1ZSk7XG4gICAgY29uc3QgW2FjdGl2ZUluZGV4LCBzZXRBY3RpdmVJbmRleF0gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBub3JtYWxpemVkU2l6ZSA9IG5vcm1hbGl6ZVNpemUoc2l6ZSk7XG4gICAgY29uc3QgYWxsT3B0aW9uR3JvdXBzID0gdXNlTWVtbygoKSA9PiBub3JtYWxpemVPcHRpb25Hcm91cHMob3B0aW9ucyksIFtvcHRpb25zXSk7XG4gICAgY29uc3QgYWxsRmxhdE9wdGlvbnMgPSB1c2VNZW1vKCgpID0+IGZsYXR0ZW5PcHRpb25Hcm91cHMoYWxsT3B0aW9uR3JvdXBzKSwgW2FsbE9wdGlvbkdyb3Vwc10pO1xuICAgIGNvbnN0IHZpc2libGVPcHRpb25Hcm91cHMgPSB1c2VNZW1vKCgpID0+IChzZWFyY2hhYmxlXG4gICAgICAgID8gZmlsdGVyT3B0aW9uR3JvdXBzKGFsbE9wdGlvbkdyb3VwcywgaW5uZXJTZWFyY2hWYWx1ZSwgZmlsdGVyT3B0aW9uKVxuICAgICAgICA6IGFsbE9wdGlvbkdyb3VwcyksIFthbGxPcHRpb25Hcm91cHMsIGZpbHRlck9wdGlvbiwgaW5uZXJTZWFyY2hWYWx1ZSwgc2VhcmNoYWJsZV0pO1xuICAgIGNvbnN0IHZpc2libGVGbGF0T3B0aW9ucyA9IHVzZU1lbW8oKCkgPT4gZmxhdHRlbk9wdGlvbkdyb3Vwcyh2aXNpYmxlT3B0aW9uR3JvdXBzKSwgW3Zpc2libGVPcHRpb25Hcm91cHNdKTtcbiAgICBjb25zdCBzZWxlY3RlZE9wdGlvbnMgPSB1c2VNZW1vKCgpID0+IGdldFNlbGVjdGVkT3B0aW9ucyhhbGxGbGF0T3B0aW9ucywgaW5uZXJWYWx1ZSwgbXVsdGlwbGUpLCBbYWxsRmxhdE9wdGlvbnMsIGlubmVyVmFsdWUsIG11bHRpcGxlXSk7XG4gICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBpZiAoc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbWF0Y2hlZEluZGV4ID0gdmlzaWJsZUZsYXRPcHRpb25zLmZpbmRJbmRleCgob3B0aW9uKSA9PiBvcHRpb24udmFsdWUgPT09IHNlbGVjdGVkT3B0aW9uc1swXS52YWx1ZSk7XG4gICAgICAgIHJldHVybiBtYXRjaGVkSW5kZXggPj0gMCA/IG1hdGNoZWRJbmRleCA6IG51bGw7XG4gICAgfSwgW3NlbGVjdGVkT3B0aW9ucywgdmlzaWJsZUZsYXRPcHRpb25zXSk7XG4gICAgY29uc3QgaGFzU2VsZWN0aW9uID0gc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA+IDA7XG4gICAgY29uc3QgbGlzdFJlZiA9IHVzZVJlZihbXSk7XG4gICAgY29uc3QgbGlzdENvbnRlbnRSZWYgPSB1c2VSZWYoW10pO1xuICAgIGNvbnN0IGZsb2F0aW5nUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHRyaWdnZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3Qgc2VhcmNoSW5wdXRSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgaGFuZGxlVHJpZ2dlclJlZiA9IHVzZUV2ZW50Q2FsbGJhY2soKG5vZGUpID0+IHtcbiAgICAgICAgdHJpZ2dlclJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgICAgaWYgKHJlZikge1xuICAgICAgICAgICAgcmVmLmN1cnJlbnQgPSBub2RlO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgeyBpc09wZW46IGlubmVyT3Blbiwgc2V0T3BlbjogaGFuZGxlT3BlbkNoYW5nZSwgcmVmcywgY29udGV4dCwgZmxvYXRpbmdTdHlsZXMsIHRyYW5zaXRpb25TdHlsZXMsIGlzTW91bnRlZCwgYmFzZUludGVyYWN0aW9ucywgfSA9IHVzZVNlbGVjdFNoZWxsKHtcbiAgICAgICAgb3BlbixcbiAgICAgICAgZGVmYXVsdE9wZW4sXG4gICAgICAgIG9uT3BlbkNoYW5nZSxcbiAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgIHJlYWRPbmx5LFxuICAgICAgICBsaXN0TWF4SGVpZ2h0LFxuICAgICAgICBhbmltYXRpb24sXG4gICAgICAgIG9mZnNldCxcbiAgICB9KTtcbiAgICBjb25zdCBzZXRSZWZlcmVuY2UgPSB1c2VFdmVudENhbGxiYWNrKChub2RlKSA9PiB7XG4gICAgICAgIHJlZnMuc2V0UmVmZXJlbmNlKG5vZGUpO1xuICAgICAgICBoYW5kbGVUcmlnZ2VyUmVmKG5vZGUpO1xuICAgIH0pO1xuICAgIGNvbnN0IHNldEZsb2F0aW5nID0gdXNlRXZlbnRDYWxsYmFjaygobm9kZSkgPT4ge1xuICAgICAgICByZWZzLnNldEZsb2F0aW5nKG5vZGUpO1xuICAgICAgICBmbG9hdGluZ1JlZi5jdXJyZW50ID0gbm9kZTtcbiAgICB9KTtcbiAgICBjb25zdCBsaXN0TmF2aWdhdGlvbiA9IHVzZUxpc3ROYXZpZ2F0aW9uKGNvbnRleHQsIHtcbiAgICAgICAgbGlzdFJlZixcbiAgICAgICAgYWN0aXZlSW5kZXgsXG4gICAgICAgIHNlbGVjdGVkSW5kZXgsXG4gICAgICAgIG9uTmF2aWdhdGU6IHNldEFjdGl2ZUluZGV4LFxuICAgICAgICBlbmFibGVkOiBpbm5lck9wZW4sXG4gICAgICAgIGxvb3A6IHRydWUsXG4gICAgICAgIHZpcnR1YWw6IHNlYXJjaGFibGUsXG4gICAgfSk7XG4gICAgY29uc3QgdHlwZWFoZWFkID0gdXNlVHlwZWFoZWFkKGNvbnRleHQsIHtcbiAgICAgICAgbGlzdFJlZjogbGlzdENvbnRlbnRSZWYsXG4gICAgICAgIGFjdGl2ZUluZGV4LFxuICAgICAgICBzZWxlY3RlZEluZGV4LFxuICAgICAgICBlbmFibGVkOiBpbm5lck9wZW4gJiYgIXNlYXJjaGFibGUsXG4gICAgICAgIG9uTWF0Y2g6IHNldEFjdGl2ZUluZGV4LFxuICAgIH0pO1xuICAgIGNvbnN0IHsgZ2V0UmVmZXJlbmNlUHJvcHMsIGdldEZsb2F0aW5nUHJvcHMsIGdldEl0ZW1Qcm9wcyB9ID0gdXNlSW50ZXJhY3Rpb25zKFtcbiAgICAgICAgLi4uYmFzZUludGVyYWN0aW9ucyxcbiAgICAgICAgbGlzdE5hdmlnYXRpb24sXG4gICAgICAgIHR5cGVhaGVhZCxcbiAgICBdKTtcbiAgICBjb25zdCBmaXJzdEVuYWJsZWRJbmRleCA9IHVzZU1lbW8oKCkgPT4gdmlzaWJsZUZsYXRPcHRpb25zLmZpbmRJbmRleCgob3B0aW9uKSA9PiAhb3B0aW9uLmRpc2FibGVkKSwgW3Zpc2libGVGbGF0T3B0aW9uc10pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghaW5uZXJPcGVuKSB7XG4gICAgICAgICAgICBzZXRBY3RpdmVJbmRleChzZWxlY3RlZEluZGV4KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZXRBY3RpdmVJbmRleCgocHJldikgPT4ge1xuICAgICAgICAgICAgaWYgKHByZXYgIT09IG51bGwgJiYgdmlzaWJsZUZsYXRPcHRpb25zW3ByZXZdICYmICF2aXNpYmxlRmxhdE9wdGlvbnNbcHJldl0uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzZWxlY3RlZEluZGV4ICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgdmlzaWJsZUZsYXRPcHRpb25zW3NlbGVjdGVkSW5kZXhdICYmXG4gICAgICAgICAgICAgICAgIXZpc2libGVGbGF0T3B0aW9uc1tzZWxlY3RlZEluZGV4XS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZEluZGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZpcnN0RW5hYmxlZEluZGV4ID49IDAgPyBmaXJzdEVuYWJsZWRJbmRleCA6IG51bGw7XG4gICAgICAgIH0pO1xuICAgIH0sIFtmaXJzdEVuYWJsZWRJbmRleCwgaW5uZXJPcGVuLCBzZWxlY3RlZEluZGV4LCB2aXNpYmxlRmxhdE9wdGlvbnNdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmICghaW5uZXJPcGVuIHx8IGFjdGl2ZUluZGV4ID09PSBudWxsIHx8IHNlYXJjaGFibGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAoX2EgPSBsaXN0UmVmLmN1cnJlbnRbYWN0aXZlSW5kZXhdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgIH0sIFthY3RpdmVJbmRleCwgaW5uZXJPcGVuLCBzZWFyY2hhYmxlXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgbGlzdFJlZi5jdXJyZW50ID0gbGlzdFJlZi5jdXJyZW50LnNsaWNlKDAsIHZpc2libGVGbGF0T3B0aW9ucy5sZW5ndGgpO1xuICAgICAgICBsaXN0Q29udGVudFJlZi5jdXJyZW50ID0gbGlzdENvbnRlbnRSZWYuY3VycmVudC5zbGljZSgwLCB2aXNpYmxlRmxhdE9wdGlvbnMubGVuZ3RoKTtcbiAgICB9LCBbdmlzaWJsZUZsYXRPcHRpb25zLmxlbmd0aF0pO1xuICAgIGNvbnN0IHNldFNlYXJjaElucHV0UmVmID0gdXNlRXZlbnRDYWxsYmFjaygobm9kZSkgPT4ge1xuICAgICAgICBzZWFyY2hJbnB1dFJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgICAgaWYgKG5vZGUgJiYgaW5uZXJPcGVuICYmIGZpbHRlcklucHV0QXV0b0ZvY3VzKSB7XG4gICAgICAgICAgICBub2RlLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IG5vdGlmeUJsdXJJZk91dHNpZGUgPSB1c2VFdmVudENhbGxiYWNrKChyZWxhdGVkVGFyZ2V0LCBldmVudCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBjb25zdCBuZXh0VGFyZ2V0ID0gcmVsYXRlZFRhcmdldDtcbiAgICAgICAgY29uc3Qgd2l0aGluVHJpZ2dlciA9ICEhKG5leHRUYXJnZXQgJiYgKChfYSA9IHRyaWdnZXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNvbnRhaW5zKG5leHRUYXJnZXQpKSk7XG4gICAgICAgIGNvbnN0IHdpdGhpbkZsb2F0aW5nID0gISEobmV4dFRhcmdldCAmJiAoKF9iID0gZmxvYXRpbmdSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNvbnRhaW5zKG5leHRUYXJnZXQpKSk7XG4gICAgICAgIGlmICghd2l0aGluVHJpZ2dlciAmJiAhd2l0aGluRmxvYXRpbmcpIHtcbiAgICAgICAgICAgIG9uQmx1ciA9PT0gbnVsbCB8fCBvbkJsdXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQmx1cihldmVudCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVUcmlnZ2VyQmx1ciA9IHVzZUV2ZW50Q2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIG5vdGlmeUJsdXJJZk91dHNpZGUoZXZlbnQucmVsYXRlZFRhcmdldCwgZXZlbnQpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZU9wdGlvbkJsdXIgPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBub3RpZnlCbHVySWZPdXRzaWRlKGV2ZW50LnJlbGF0ZWRUYXJnZXQsIGV2ZW50KTtcbiAgICB9KTtcbiAgICBjb25zdCBjb21taXRDaGFuZ2UgPSB1c2VFdmVudENhbGxiYWNrKChuZXh0VmFsdWUsIG5leHRPcHRpb24pID0+IHtcbiAgICAgICAgc2V0SW5uZXJWYWx1ZShuZXh0VmFsdWUpO1xuICAgICAgICBvbkNoYW5nZSA9PT0gbnVsbCB8fCBvbkNoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DaGFuZ2UobmV4dFZhbHVlLCBuZXh0T3B0aW9uLCBuYW1lKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVTZWxlY3RPcHRpb24gPSB1c2VFdmVudENhbGxiYWNrKChvcHRpb24pID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgaWYgKG9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtdWx0aXBsZSkge1xuICAgICAgICAgICAgY29uc3QgbmV4dFZhbHVlID0gdG9nZ2xlTXVsdGlwbGVWYWx1ZShpbm5lclZhbHVlLCBvcHRpb24udmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgbmV4dE9wdGlvbnMgPSBnZXRPcHRpb25zQnlWYWx1ZXMoYWxsRmxhdE9wdGlvbnMsIG5leHRWYWx1ZSk7XG4gICAgICAgICAgICBjb21taXRDaGFuZ2UobmV4dFZhbHVlLCBuZXh0T3B0aW9ucyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFsbG93RGVzZWxlY3QgJiYgaW5uZXJWYWx1ZSA9PT0gb3B0aW9uLnZhbHVlKSB7XG4gICAgICAgICAgICBjb21taXRDaGFuZ2UodW5kZWZpbmVkLCB1bmRlZmluZWQpO1xuICAgICAgICAgICAgaGFuZGxlT3BlbkNoYW5nZShmYWxzZSk7XG4gICAgICAgICAgICBvbkJsdXIgPT09IG51bGwgfHwgb25CbHVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkJsdXIoKTtcbiAgICAgICAgICAgIChfYSA9IHRyaWdnZXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb21taXRDaGFuZ2Uob3B0aW9uLnZhbHVlLCBvcHRpb24pO1xuICAgICAgICBoYW5kbGVPcGVuQ2hhbmdlKGZhbHNlKTtcbiAgICAgICAgb25CbHVyID09PSBudWxsIHx8IG9uQmx1ciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25CbHVyKCk7XG4gICAgICAgIChfYiA9IHRyaWdnZXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVSZW1vdmVTZWxlY3RlZFZhbHVlID0gdXNlRXZlbnRDYWxsYmFjaygob3B0aW9uVmFsdWUpID0+IHtcbiAgICAgICAgaWYgKCFtdWx0aXBsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZ2V0TXVsdGlwbGVWYWx1ZShpbm5lclZhbHVlKS5pbmNsdWRlcyhvcHRpb25WYWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXh0VmFsdWUgPSByZW1vdmVNdWx0aXBsZVZhbHVlKGlubmVyVmFsdWUsIG9wdGlvblZhbHVlKTtcbiAgICAgICAgY29uc3QgbmV4dE9wdGlvbnMgPSBnZXRPcHRpb25zQnlWYWx1ZXMoYWxsRmxhdE9wdGlvbnMsIG5leHRWYWx1ZSk7XG4gICAgICAgIGNvbW1pdENoYW5nZShuZXh0VmFsdWUsIG5leHRPcHRpb25zKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVUcmlnZ2VyS2V5RG93biA9IHVzZUV2ZW50Q2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghaW50ZXJhY3RpdmUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBLRVlCT0FSRC5FTlRFUiB8fCBldmVudC5rZXkgPT09IEtFWUJPQVJELlNQQUNFKSB7XG4gICAgICAgICAgICBpZiAoaW5uZXJPcGVuICYmXG4gICAgICAgICAgICAgICAgYWN0aXZlSW5kZXggIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICB2aXNpYmxlRmxhdE9wdGlvbnNbYWN0aXZlSW5kZXhdICYmXG4gICAgICAgICAgICAgICAgIXZpc2libGVGbGF0T3B0aW9uc1thY3RpdmVJbmRleF0uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdE9wdGlvbih2aXNpYmxlRmxhdE9wdGlvbnNbYWN0aXZlSW5kZXhdKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgaGFuZGxlT3BlbkNoYW5nZSghaW5uZXJPcGVuKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBLRVlCT0FSRC5BUlJPV19ET1dOIHx8IGV2ZW50LmtleSA9PT0gS0VZQk9BUkQuQVJST1dfVVApIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBpZiAoIWlubmVyT3Blbikge1xuICAgICAgICAgICAgICAgIGhhbmRsZU9wZW5DaGFuZ2UodHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVJdGVtTW91c2VFbnRlciA9IHVzZUV2ZW50Q2FsbGJhY2soKGluZGV4KSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKCEoKF9hID0gdmlzaWJsZUZsYXRPcHRpb25zW2luZGV4XSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmRpc2FibGVkKSkge1xuICAgICAgICAgICAgc2V0QWN0aXZlSW5kZXgoaW5kZXgpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlVGFnUmVtb3ZlTW91c2VEb3duID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlVGFnUmVtb3ZlQ2xpY2sgPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVTZWFyY2hCbHVyID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgbm90aWZ5Qmx1cklmT3V0c2lkZShldmVudC5yZWxhdGVkVGFyZ2V0LCBldmVudCk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlU2VhcmNoQ2hhbmdlID0gdXNlRXZlbnRDYWxsYmFjaygobmV4dFZhbHVlLCBfZXZlbnQpID0+IHtcbiAgICAgICAgc2V0SW5uZXJTZWFyY2hWYWx1ZShuZXh0VmFsdWUpO1xuICAgICAgICBvblNlYXJjaENoYW5nZSA9PT0gbnVsbCB8fCBvblNlYXJjaENoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25TZWFyY2hDaGFuZ2UobmV4dFZhbHVlKTtcbiAgICB9KTtcbiAgICBjb25zdCBmaW5kRW5hYmxlZEluZGV4ID0gdXNlRXZlbnRDYWxsYmFjaygoY3VycmVudCwgZGlyZWN0aW9uKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gdmlzaWJsZUZsYXRPcHRpb25zLmxlbmd0aDtcbiAgICAgICAgaWYgKGxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RhcnQgPSBjdXJyZW50ICE9PSBudWxsICYmIGN1cnJlbnQgIT09IHZvaWQgMCA/IGN1cnJlbnQgOiAoZGlyZWN0aW9uID09PSAxID8gLTEgOiBsZW5ndGgpO1xuICAgICAgICBmb3IgKGxldCBzdGVwID0gMTsgc3RlcCA8PSBsZW5ndGg7IHN0ZXAgKz0gMSkge1xuICAgICAgICAgICAgY29uc3QgY2FuZGlkYXRlID0gKChzdGFydCArIGRpcmVjdGlvbiAqIHN0ZXApICUgbGVuZ3RoICsgbGVuZ3RoKSAlIGxlbmd0aDtcbiAgICAgICAgICAgIGlmICghKChfYSA9IHZpc2libGVGbGF0T3B0aW9uc1tjYW5kaWRhdGVdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGlzYWJsZWQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVTZWFyY2hLZXlEb3duID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBLRVlCT0FSRC5BUlJPV19ET1dOKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgY29uc3QgbmV4dCA9IGZpbmRFbmFibGVkSW5kZXgoYWN0aXZlSW5kZXgsIDEpO1xuICAgICAgICAgICAgaWYgKG5leHQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBzZXRBY3RpdmVJbmRleChuZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBLRVlCT0FSRC5BUlJPV19VUCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGNvbnN0IHByZXYgPSBmaW5kRW5hYmxlZEluZGV4KGFjdGl2ZUluZGV4LCAtMSk7XG4gICAgICAgICAgICBpZiAocHJldiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHNldEFjdGl2ZUluZGV4KHByZXYpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWUJPQVJELkVOVEVSKSB7XG4gICAgICAgICAgICBpZiAoYWN0aXZlSW5kZXggIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICB2aXNpYmxlRmxhdE9wdGlvbnNbYWN0aXZlSW5kZXhdICYmXG4gICAgICAgICAgICAgICAgIXZpc2libGVGbGF0T3B0aW9uc1thY3RpdmVJbmRleF0uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdE9wdGlvbih2aXNpYmxlRmxhdE9wdGlvbnNbYWN0aXZlSW5kZXhdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBLRVlCT0FSRC5FU0NBUEUpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBoYW5kbGVPcGVuQ2hhbmdlKGZhbHNlKTtcbiAgICAgICAgICAgIChfYSA9IHRyaWdnZXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IHJlbmRlclZhbHVlTWV0YSA9IHtcbiAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgIHJlYWRPbmx5LFxuICAgICAgICBtdWx0aXBsZSxcbiAgICAgICAgbWF4VmlzaWJsZVZhbHVlcyxcbiAgICAgICAgb3BlbjogaW5uZXJPcGVuLFxuICAgICAgICBwbGFjZWhvbGRlcjogIWhhc1NlbGVjdGlvbixcbiAgICAgICAgc2VsZWN0ZWRPcHRpb25zLFxuICAgICAgICBzaXplOiBub3JtYWxpemVkU2l6ZSxcbiAgICAgICAgZm9udFNpemU6IGdldEZvbnRTaXplKG5vcm1hbGl6ZWRTaXplKSxcbiAgICB9O1xuICAgIGNvbnN0IHZhbHVlTGFiZWxDbGFzcyA9IGhhc1NlbGVjdGlvbiA/ICd2YWx1ZScgOiAncGxhY2Vob2xkZXInO1xuICAgIGNvbnN0IGlzTXVsdGlwbGVWYWx1ZUZpbGxlZCA9IChtdWx0aXBsZSAmJlxuICAgICAgICBoYXNTZWxlY3Rpb24gJiZcbiAgICAgICAgbWF4VmlzaWJsZVZhbHVlcyA9PT0gdW5kZWZpbmVkKTtcbiAgICBjb25zdCB0cmlnZ2VyQ2xhc3NOYW1lID0gY2xhc3NlcygndHJpZ2dlcicsIGpvaW5DbHMoY2xhc3NlcyhgdHJpZ2dlci0ke25vcm1hbGl6ZWRTaXplfWApLCBjbGFzc2VzKGB0cmlnZ2VyLSR7dmFyaWFudH1gKSwgaW5uZXJPcGVuICYmIGNsYXNzZXMoJ3RyaWdnZXItb3BlbicpLCBpc011bHRpcGxlVmFsdWVGaWxsZWQgJiYgY2xhc3NlcygndHJpZ2dlci1tdWx0aXBsZS1maWxsZWQnKSwgaGFzU2VsZWN0aW9uID8gY2xhc3NlcygndHJpZ2dlci1maWxsZWQnKSA6IGNsYXNzZXMoJ3RyaWdnZXItcGxhY2Vob2xkZXInKSwgc3RhdHVzICE9PSAnZGVmYXVsdCcgJiYgY2xhc3NlcyhgdHJpZ2dlci0ke3N0YXR1c31gKSwgZGlzYWJsZWQgJiYgY2xhc3NlcygndHJpZ2dlci1kaXNhYmxlZCcpLCByZWFkT25seSAmJiAhZGlzYWJsZWQgJiYgY2xhc3NlcygndHJpZ2dlci1yZWFkb25seScpKSk7XG4gICAgY29uc3QgaWNvblNpemUgPSBub3JtYWxpemVkU2l6ZSA9PT0gJ3NtYWxsJyA/IDE2IDogMjA7XG4gICAgY29uc3QgYWN0aXZlT3B0aW9uSWQgPSBzZWFyY2hhYmxlICYmIGlubmVyT3BlbiAmJiBhY3RpdmVJbmRleCAhPT0gbnVsbFxuICAgICAgICA/IGAke29wdGlvbklkUHJlZml4fS0ke2FjdGl2ZUluZGV4fWBcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgZmxvYXRpbmdBcmlhTGFiZWxsZWRCeSA9IGFyaWFMYWJlbGxlZEJ5ICE9PSBudWxsICYmIGFyaWFMYWJlbGxlZEJ5ICE9PSB2b2lkIDAgPyBhcmlhTGFiZWxsZWRCeSA6IChsYWJlbCA/IGxhYmVsSWQgOiB1bmRlZmluZWQpO1xuICAgIGNvbnN0IGRlc2NyaWJlZEJ5SWRzID0gW1xuICAgICAgICBkZXNjcmlwdGlvbiA/IGRlc2NyaXB0aW9uSWQgOiBudWxsLFxuICAgICAgICBmZWVkYmFjayA/IGZlZWRiYWNrSWQgOiBudWxsLFxuICAgIF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKSB8fCB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIChfanN4cyhTZWxlY3RGaWVsZFNoZWxsLCB7IGNsYXNzZXM6IGNsYXNzZXMsIGNsYXNzTmFtZTogY2xhc3NOYW1lLCBzaXplOiBub3JtYWxpemVkU2l6ZSwgdmFyaWFudDogdmFyaWFudCwgc3RhdHVzOiBzdGF0dXMsIGRpc2FibGVkOiBkaXNhYmxlZCwgcmVhZE9ubHk6IHJlYWRPbmx5LCBsb2FkaW5nOiBsb2FkaW5nLCBsYWJlbDogbGFiZWwsIGxhYmVsQ2xhc3NOYW1lOiBsYWJlbENsYXNzTmFtZSwgaW5mbzogaW5mbywgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLCBmZWVkYmFjazogZmVlZGJhY2ssIHJlcXVpcmVkOiByZXF1aXJlZCwgbGFiZWxJZDogbGFiZWxJZCwgZGVzY3JpcHRpb25JZDogZGVzY3JpcHRpb25JZCwgZmVlZGJhY2tJZDogZmVlZGJhY2tJZCwgY2hpbGRyZW46IFtfanN4cyhcImJ1dHRvblwiLCBPYmplY3QuYXNzaWduKHt9LCBnZXRSZWZlcmVuY2VQcm9wcyh7XG4gICAgICAgICAgICAgICAgcmVmOiBzZXRSZWZlcmVuY2UsXG4gICAgICAgICAgICAgICAgaWQ6IHRyaWdnZXJJZCxcbiAgICAgICAgICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICAgICAgICdhcmlhLXJlYWRvbmx5JzogcmVhZE9ubHkgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogdHJpZ2dlckNsYXNzTmFtZSxcbiAgICAgICAgICAgICAgICBvbktleURvd246IGhhbmRsZVRyaWdnZXJLZXlEb3duLFxuICAgICAgICAgICAgICAgIG9uQmx1cjogaGFuZGxlVHJpZ2dlckJsdXIsXG4gICAgICAgICAgICAgICAgJ2FyaWEtbGFiZWwnOiBhcmlhTGFiZWwsXG4gICAgICAgICAgICAgICAgJ2FyaWEtbGFiZWxsZWRieSc6IGZsb2F0aW5nQXJpYUxhYmVsbGVkQnksXG4gICAgICAgICAgICAgICAgJ2FyaWEtZGVzY3JpYmVkYnknOiBkZXNjcmliZWRCeUlkcyxcbiAgICAgICAgICAgIH0pLCB7IGNoaWxkcmVuOiBbX2pzeHMoXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdjb250ZW50JyksIGNoaWxkcmVuOiBbcHJlZml4ICYmIF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdwcmVmaXgnKSwgY2hpbGRyZW46IHByZWZpeCB9KSwgX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXModmFsdWVMYWJlbENsYXNzLCBqb2luQ2xzKGNsYXNzZXMoYCR7dmFsdWVMYWJlbENsYXNzfS0ke25vcm1hbGl6ZWRTaXplfWApLCBpc011bHRpcGxlVmFsdWVGaWxsZWQgJiYgY2xhc3NlcyhgJHt2YWx1ZUxhYmVsQ2xhc3N9LW11bHRpcGxlYCksIGRpc2FibGVkICYmIGNsYXNzZXMoYCR7dmFsdWVMYWJlbENsYXNzfS1kaXNhYmxlZGApKSksIGNoaWxkcmVuOiBfanN4KFNlbGVjdFZhbHVlQ29udGVudCwgeyBjbGFzc2VzOiBjbGFzc2VzLCBoYXNTZWxlY3Rpb246IGhhc1NlbGVjdGlvbiwgbXVsdGlwbGU6IG11bHRpcGxlLCBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXIsIHJlbmRlclZhbHVlOiByZW5kZXJWYWx1ZSwgcmVuZGVyVmFsdWVNZXRhOiByZW5kZXJWYWx1ZU1ldGEsIHNlbGVjdGVkT3B0aW9uczogc2VsZWN0ZWRPcHRpb25zLCBtYXhWaXNpYmxlVmFsdWVzOiBtYXhWaXNpYmxlVmFsdWVzLCBvblJlbW92ZTogaGFuZGxlUmVtb3ZlU2VsZWN0ZWRWYWx1ZSwgb25SZW1vdmVDbGljazogaGFuZGxlVGFnUmVtb3ZlQ2xpY2ssIG9uUmVtb3ZlTW91c2VEb3duOiBoYW5kbGVUYWdSZW1vdmVNb3VzZURvd24gfSkgfSldIH0pLCBfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnaWNvbicpLCBjaGlsZHJlbjogbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gX2pzeChTcGlubmVyLCB7IHNpemU6IGljb25TaXplLCBzdHJva2VXaWR0aDogMiB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcmVhZE9ubHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX2pzeChJY29ucywgeyBuYW1lOiBpbm5lck9wZW4gPyAnY2hldnJvblVwJyA6ICdjaGV2cm9uRG93bicsIHNpemU6IGljb25TaXplLCBjb2xvcjogXCJjdXJyZW50Q29sb3JcIiB9KSB9KV0gfSkpLCBpc01vdW50ZWQgJiYgaW50ZXJhY3RpdmUgJiYgKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYW5lbE5vZGUgPSAoX2pzeChGbG9hdGluZ0ZvY3VzTWFuYWdlciwgeyBjb250ZXh0OiBjb250ZXh0LCBtb2RhbDogZmFsc2UsIGluaXRpYWxGb2N1czogLTEsIHJldHVybkZvY3VzOiBmYWxzZSwgY2hpbGRyZW46IF9qc3hzKFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe30sIGdldEZsb2F0aW5nUHJvcHMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBzZXRGbG9hdGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogam9pbkNscyhjbGFzc2VzKCdwYW5lbCcpLCBwYW5lbENsYXNzTmFtZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBmbG9hdGluZ1N0eWxlcyksIHRyYW5zaXRpb25TdHlsZXMpLFxuICAgICAgICAgICAgICAgICAgICB9KSwgeyBjaGlsZHJlbjogW3NlYXJjaGFibGUgJiYgKF9qc3goU2VsZWN0U2VhcmNoQ29udHJvbCwgeyByZWY6IHNldFNlYXJjaElucHV0UmVmLCBjbGFzc2VzOiBjbGFzc2VzLCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2l6ZT17bm9ybWFsaXplZFNpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IFwic21hbGxcIiwgcGxhY2Vob2xkZXI6IHNlYXJjaFBsYWNlaG9sZGVyLCB2YWx1ZTogaW5uZXJTZWFyY2hWYWx1ZSwgYWN0aXZlRGVzY2VuZGFudDogYWN0aXZlT3B0aW9uSWQsIG9uQmx1cjogaGFuZGxlU2VhcmNoQmx1ciwgb25DaGFuZ2U6IGhhbmRsZVNlYXJjaENoYW5nZSwgb25LZXlEb3duOiBoYW5kbGVTZWFyY2hLZXlEb3duIH0pKSwgX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3BhbmVsLWJvZHknKSwgY2hpbGRyZW46IFtwYW5lbEhlYWRlciAhPSBudWxsICYmIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdwYW5lbC1oZWFkZXInKSwgY2hpbGRyZW46IHBhbmVsSGVhZGVyIH0pKSwgdmlzaWJsZUZsYXRPcHRpb25zLmxlbmd0aCA9PT0gMCA/IChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdlbXB0eScpLCBjaGlsZHJlbjogX2pzeChUeXBvZ3JhcGh5Qm9keSwgeyBzaXplOiBTRUxFQ1RfVFlQT0dSQVBIWS5lbXB0eS5zaXplLCBjb2xvcjogU0VMRUNUX1RZUE9HUkFQSFkuZW1wdHkuY29sb3IsIGNoaWxkcmVuOiBlbXB0eUNvbnRlbnQgfSkgfSkpIDogKCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZsYXRJbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2libGVPcHRpb25Hcm91cHMubWFwKChncm91cCkgPT4gKF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdncm91cCcpLCBjaGlsZHJlbjogW2dyb3VwLmxhYmVsICYmIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdncm91cC1sYWJlbCcsIGdyb3VwTGFiZWxDbGFzc05hbWUpLCBjaGlsZHJlbjogX2pzeChUeXBvZ3JhcGh5TGFiZWwsIHsgc2l6ZTogU0VMRUNUX1RZUE9HUkFQSFkuZ3JvdXBMYWJlbC5zaXplLCBzdHJvbmc6IHRydWUsIGNoaWxkcmVuOiBncm91cC5sYWJlbCB9KSB9KSksIGdyb3VwLm9wdGlvbnMubWFwKChvcHRpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25GbGF0SW5kZXggPSBmbGF0SW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhdEluZGV4ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBpc09wdGlvblNlbGVjdGVkKGlubmVyVmFsdWUsIG11bHRpcGxlLCBvcHRpb24udmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZSA9IGFjdGl2ZUluZGV4ID09PSBvcHRpb25GbGF0SW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uTWV0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogISFvcHRpb24uZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBvcHRpb25GbGF0SW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuOiBpbm5lck9wZW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogZ2V0Rm9udFNpemUobm9ybWFsaXplZFNpemUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdENvbnRlbnRSZWYuY3VycmVudFtvcHRpb25GbGF0SW5kZXhdID0gZXh0cmFjdE9wdGlvblRleHQob3B0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKF9qc3goXCJidXR0b25cIiwgT2JqZWN0LmFzc2lnbih7fSwgZ2V0SXRlbVByb3BzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmKG5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RSZWYuY3VycmVudFtvcHRpb25GbGF0SW5kZXhdID0gbm9kZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGAke29wdGlvbklkUHJlZml4fS0ke29wdGlvbkZsYXRJbmRleH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZTogJ29wdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogY2xhc3Nlcygnb3B0aW9uJywgam9pbkNscyhhY3RpdmUgJiYgY2xhc3Nlcygnb3B0aW9uLWFjdGl2ZScpLCBzZWxlY3RlZCAmJiBjbGFzc2VzKCdvcHRpb24tc2VsZWN0ZWQnKSwgb3B0aW9uLmRpc2FibGVkICYmIGNsYXNzZXMoJ29wdGlvbi1kaXNhYmxlZCcpLCBvcHRpb25DbGFzc05hbWUpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IG9wdGlvbi5kaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FyaWEtc2VsZWN0ZWQnOiBzZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljazogKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0T3B0aW9uKG9wdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VFbnRlcjogKCkgPT4gaGFuZGxlSXRlbU1vdXNlRW50ZXIob3B0aW9uRmxhdEluZGV4KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiBoYW5kbGVPcHRpb25CbHVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB7IGNoaWxkcmVuOiByZW5kZXJPcHRpb24gPyAocmVuZGVyT3B0aW9uKG9wdGlvbiwgb3B0aW9uTWV0YSkpIDogKF9qc3goU2VsZWN0T3B0aW9uQ29udGVudCwgeyBjbGFzc2VzOiBjbGFzc2VzLCBvcHRpb246IG9wdGlvbiwgc2VsZWN0ZWQ6IHNlbGVjdGVkLCBzaXplOiBub3JtYWxpemVkU2l6ZSwgY29udGVudDogcmVuZGVyT3B0aW9uQ29udGVudCA9PT0gbnVsbCB8fCByZW5kZXJPcHRpb25Db250ZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZW5kZXJPcHRpb25Db250ZW50KG9wdGlvbiwgb3B0aW9uTWV0YSkgfSkpIH0pLCBgJHtncm91cC5rZXl9LSR7b3B0aW9uLnZhbHVlfWApKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXSB9LCBncm91cC5rZXkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgpKV0gfSksIHBhbmVsRm9vdGVyICE9IG51bGwgJiYgKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3BhbmVsLWZvb3RlcicpLCBjaGlsZHJlbjogcGFuZWxGb290ZXIgfSkpXSB9KSkgfSkpO1xuICAgICAgICAgICAgICAgIHJldHVybiBwb3J0YWwgPyBfanN4KEZsb2F0aW5nUG9ydGFsLCB7IGNoaWxkcmVuOiBwYW5lbE5vZGUgfSkgOiBwYW5lbE5vZGU7XG4gICAgICAgICAgICB9KSgpXSB9KSk7XG59O1xuU2VsZWN0LmRpc3BsYXlOYW1lID0gJ1NlbGVjdCc7XG5leHBvcnQgZGVmYXVsdCBtZW1vKFNlbGVjdCk7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
586
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC50c3giXSwibmFtZXMiOlsiX2pzeFJ1bnRpbWUiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX3JlYWN0MiIsIl91c2VDb250cm9sbGVkU3RhdGU1IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl91c2VFdmVudENhbGxiYWNrIiwiX0ljb25zIiwiX1NwaW5uZXIiLCJfVHlwb2dyYXBoeSIsIl9jbGFzc25hbWVzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfU2VsZWN0RmllbGRTaGVsbCIsIl9TZWxlY3RPcHRpb25Db250ZW50IiwiX1NlbGVjdFNlYXJjaENvbnRyb2wiLCJfU2VsZWN0VmFsdWVDb250ZW50IiwiX3VzZVNlbGVjdFNoZWxsMiIsIl9jb25zdGFudHMiLCJfdXRpbHMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJERUZBVUxUX01BWF9IRUlHSFQiLCJTZWxlY3QiLCJleHBvcnRzIiwicHJvcHMiLCJfcHJvcHMkY2xhc3NOYW1lIiwiY2xhc3NOYW1lIiwiX3Byb3BzJHByZWZpeENscyIsInByZWZpeENscyIsInN0eWxlIiwiaWQiLCJuYW1lIiwiYXJpYUxhYmVsIiwiYXJpYUxhYmVsbGVkQnkiLCJfcHJvcHMkcGxhY2Vob2xkZXIiLCJwbGFjZWhvbGRlciIsIl9wcm9wcyRvcHRpb25zIiwib3B0aW9ucyIsInZhbHVlIiwiZGVmYXVsdFZhbHVlIiwiX3Byb3BzJHNpemUiLCJzaXplIiwiX3Byb3BzJHN0YXR1cyIsInN0YXR1cyIsIl9wcm9wcyR2YXJpYW50IiwidmFyaWFudCIsIl9wcm9wcyRkaXNhYmxlZCIsImRpc2FibGVkIiwiZGlzYWJsZWRQcm9wIiwiX3Byb3BzJHJlYWRPbmx5IiwicmVhZE9ubHkiLCJfcHJvcHMkbG9hZGluZyIsImxvYWRpbmciLCJfcHJvcHMkbXVsdGlwbGUiLCJtdWx0aXBsZSIsIm1heFZpc2libGVWYWx1ZXMiLCJfcHJvcHMkc2VhcmNoYWJsZSIsInNlYXJjaGFibGUiLCJfcHJvcHMkc2VhcmNoUGxhY2Vob2wiLCJzZWFyY2hQbGFjZWhvbGRlciIsInNlYXJjaFZhbHVlIiwiX3Byb3BzJGRlZmF1bHRTZWFyY2hWIiwiZGVmYXVsdFNlYXJjaFZhbHVlIiwiX3Byb3BzJGZpbHRlcklucHV0QXV0IiwiZmlsdGVySW5wdXRBdXRvRm9jdXMiLCJsYWJlbCIsImxhYmVsQ2xhc3NOYW1lIiwiaW5mbyIsImRlc2NyaXB0aW9uIiwiZmVlZGJhY2siLCJfcHJvcHMkcmVxdWlyZWQiLCJyZXF1aXJlZCIsInByZWZpeCIsIl9wcm9wcyRlbXB0eUNvbnRlbnQiLCJlbXB0eUNvbnRlbnQiLCJwYW5lbEhlYWRlciIsInBhbmVsRm9vdGVyIiwib3BlbiIsIl9wcm9wcyRkZWZhdWx0T3BlbiIsImRlZmF1bHRPcGVuIiwiX3Byb3BzJHBvcnRhbCIsInBvcnRhbCIsIl9wcm9wcyRhbGxvd0Rlc2VsZWN0IiwiYWxsb3dEZXNlbGVjdCIsInBhbmVsQ2xhc3NOYW1lIiwib3B0aW9uQ2xhc3NOYW1lIiwiZ3JvdXBMYWJlbENsYXNzTmFtZSIsIl9wcm9wcyRsaXN0TWF4SGVpZ2h0IiwibGlzdE1heEhlaWdodCIsIm9mZnNldCIsImFuaW1hdGlvbiIsIm9uQ2hhbmdlIiwib25PcGVuQ2hhbmdlIiwib25TZWFyY2hDaGFuZ2UiLCJvbkJsdXIiLCJmaWx0ZXJPcHRpb24iLCJyZW5kZXJPcHRpb24iLCJyZW5kZXJPcHRpb25Db250ZW50IiwicmVuZGVyVmFsdWUiLCJyZWYiLCJpbnRlcmFjdGl2ZSIsImNsYXNzZXMiLCJyb290Q2xhc3NuYW1lcyIsImF1dG9JZCIsInVzZUlkIiwidHJpZ2dlcklkIiwibGFiZWxJZCIsImRlc2NyaXB0aW9uSWQiLCJmZWVkYmFja0lkIiwib3B0aW9uSWRQcmVmaXgiLCJfdXNlQ29udHJvbGxlZFN0YXRlIiwidXNlQ29udHJvbGxlZFN0YXRlIiwidW5kZWZpbmVkIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJpbm5lclZhbHVlIiwic2V0SW5uZXJWYWx1ZSIsIl91c2VDb250cm9sbGVkU3RhdGUzIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTQiLCJpbm5lclNlYXJjaFZhbHVlIiwic2V0SW5uZXJTZWFyY2hWYWx1ZSIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsImFjdGl2ZUluZGV4Iiwic2V0QWN0aXZlSW5kZXgiLCJub3JtYWxpemVkU2l6ZSIsIm5vcm1hbGl6ZVNpemUiLCJhbGxPcHRpb25Hcm91cHMiLCJ1c2VNZW1vIiwibm9ybWFsaXplT3B0aW9uR3JvdXBzIiwiYWxsRmxhdE9wdGlvbnMiLCJmbGF0dGVuT3B0aW9uR3JvdXBzIiwidmlzaWJsZU9wdGlvbkdyb3VwcyIsImZpbHRlck9wdGlvbkdyb3VwcyIsInZpc2libGVGbGF0T3B0aW9ucyIsInNlbGVjdGVkT3B0aW9ucyIsImdldFNlbGVjdGVkT3B0aW9ucyIsInNlbGVjdGVkSW5kZXgiLCJsZW5ndGgiLCJtYXRjaGVkSW5kZXgiLCJmaW5kSW5kZXgiLCJvcHRpb24iLCJoYXNTZWxlY3Rpb24iLCJsaXN0UmVmIiwidXNlUmVmIiwibGlzdENvbnRlbnRSZWYiLCJmbG9hdGluZ1JlZiIsInRyaWdnZXJSZWYiLCJzZWFyY2hJbnB1dFJlZiIsImhhbmRsZVRyaWdnZXJSZWYiLCJ1c2VFdmVudENhbGxiYWNrIiwibm9kZSIsImN1cnJlbnQiLCJfdXNlU2VsZWN0U2hlbGwiLCJ1c2VTZWxlY3RTaGVsbCIsImlubmVyT3BlbiIsImlzT3BlbiIsImhhbmRsZU9wZW5DaGFuZ2UiLCJzZXRPcGVuIiwicmVmcyIsImNvbnRleHQiLCJmbG9hdGluZ1N0eWxlcyIsInRyYW5zaXRpb25TdHlsZXMiLCJpc01vdW50ZWQiLCJiYXNlSW50ZXJhY3Rpb25zIiwic2V0UmVmZXJlbmNlIiwic2V0RmxvYXRpbmciLCJsaXN0TmF2aWdhdGlvbiIsInVzZUxpc3ROYXZpZ2F0aW9uIiwib25OYXZpZ2F0ZSIsImVuYWJsZWQiLCJsb29wIiwidmlydHVhbCIsInR5cGVhaGVhZCIsInVzZVR5cGVhaGVhZCIsIm9uTWF0Y2giLCJfdXNlSW50ZXJhY3Rpb25zIiwidXNlSW50ZXJhY3Rpb25zIiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImdldFJlZmVyZW5jZVByb3BzIiwiZ2V0RmxvYXRpbmdQcm9wcyIsImdldEl0ZW1Qcm9wcyIsImZpcnN0RW5hYmxlZEluZGV4IiwidXNlRWZmZWN0IiwicHJldiIsIl9hIiwiZm9jdXMiLCJwcmV2ZW50U2Nyb2xsIiwic2xpY2UiLCJzZXRTZWFyY2hJbnB1dFJlZiIsIm5vdGlmeUJsdXJJZk91dHNpZGUiLCJyZWxhdGVkVGFyZ2V0IiwiZXZlbnQiLCJfYiIsIm5leHRUYXJnZXQiLCJ3aXRoaW5UcmlnZ2VyIiwiY29udGFpbnMiLCJ3aXRoaW5GbG9hdGluZyIsImhhbmRsZVRyaWdnZXJCbHVyIiwiaGFuZGxlT3B0aW9uQmx1ciIsImNvbW1pdENoYW5nZSIsIm5leHRWYWx1ZSIsIm5leHRPcHRpb24iLCJoYW5kbGVTZWxlY3RPcHRpb24iLCJ0b2dnbGVNdWx0aXBsZVZhbHVlIiwibmV4dE9wdGlvbnMiLCJnZXRPcHRpb25zQnlWYWx1ZXMiLCJoYW5kbGVSZW1vdmVTZWxlY3RlZFZhbHVlIiwib3B0aW9uVmFsdWUiLCJnZXRNdWx0aXBsZVZhbHVlIiwiaW5jbHVkZXMiLCJyZW1vdmVNdWx0aXBsZVZhbHVlIiwiaGFuZGxlVHJpZ2dlcktleURvd24iLCJrZXkiLCJLRVlCT0FSRCIsIkVOVEVSIiwiU1BBQ0UiLCJwcmV2ZW50RGVmYXVsdCIsIkFSUk9XX0RPV04iLCJBUlJPV19VUCIsImhhbmRsZUl0ZW1Nb3VzZUVudGVyIiwiaW5kZXgiLCJoYW5kbGVUYWdSZW1vdmVNb3VzZURvd24iLCJzdG9wUHJvcGFnYXRpb24iLCJoYW5kbGVUYWdSZW1vdmVDbGljayIsImhhbmRsZVNlYXJjaEJsdXIiLCJoYW5kbGVTZWFyY2hDaGFuZ2UiLCJfZXZlbnQiLCJmaW5kRW5hYmxlZEluZGV4IiwiZGlyZWN0aW9uIiwic3RhcnQiLCJzdGVwIiwiY2FuZGlkYXRlIiwiaGFuZGxlU2VhcmNoS2V5RG93biIsIm5leHQiLCJFU0NBUEUiLCJyZW5kZXJWYWx1ZU1ldGEiLCJmb250U2l6ZSIsImdldEZvbnRTaXplIiwidmFsdWVMYWJlbENsYXNzIiwiaXNNdWx0aXBsZVZhbHVlRmlsbGVkIiwidHJpZ2dlckNsYXNzTmFtZSIsImpvaW5DbHMiLCJpY29uU2l6ZSIsImFjdGl2ZU9wdGlvbklkIiwiZmxvYXRpbmdBcmlhTGFiZWxsZWRCeSIsImRlc2NyaWJlZEJ5SWRzIiwiZmlsdGVyIiwiQm9vbGVhbiIsImpvaW4iLCJfanN4cyIsIlNlbGVjdEZpZWxkU2hlbGwiLCJjaGlsZHJlbiIsImFzc2lnbiIsInR5cGUiLCJvbktleURvd24iLCJfanN4IiwiU2VsZWN0VmFsdWVDb250ZW50Iiwib25SZW1vdmUiLCJvblJlbW92ZUNsaWNrIiwib25SZW1vdmVNb3VzZURvd24iLCJTcGlubmVyIiwic3Ryb2tlV2lkdGgiLCJJY29ucyIsImNvbG9yIiwicGFuZWxOb2RlIiwiRmxvYXRpbmdGb2N1c01hbmFnZXIiLCJtb2RhbCIsImluaXRpYWxGb2N1cyIsInJldHVybkZvY3VzIiwiU2VsZWN0U2VhcmNoQ29udHJvbCIsImFjdGl2ZURlc2NlbmRhbnQiLCJUeXBvZ3JhcGh5Qm9keSIsIlNFTEVDVF9UWVBPR1JBUEhZIiwiZW1wdHkiLCJmbGF0SW5kZXgiLCJtYXAiLCJncm91cCIsIlR5cG9ncmFwaHlMYWJlbCIsImdyb3VwTGFiZWwiLCJzdHJvbmciLCJvcHRpb25GbGF0SW5kZXgiLCJzZWxlY3RlZCIsImlzT3B0aW9uU2VsZWN0ZWQiLCJhY3RpdmUiLCJvcHRpb25NZXRhIiwiZXh0cmFjdE9wdGlvblRleHQiLCJyb2xlIiwib25DbGljayIsIm9uTW91c2VFbnRlciIsIlNlbGVjdE9wdGlvbkNvbnRlbnQiLCJjb250ZW50IiwiRmxvYXRpbmdQb3J0YWwiLCJkaXNwbGF5TmFtZSIsIl9kZWZhdWx0IiwibWVtbyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQ0FBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQU9BLElBQUFFLE9BQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLG9CQUFBLEdBQUFDLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBSyxpQkFBQSxHQUFBRCxzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQU0sTUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sUUFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsV0FBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsV0FBQSxHQUFBQyx1QkFBQSxDQUFBVixPQUFBO0FBZ0JBLElBQUFXLGlCQUFBLEdBQUFQLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBWSxvQkFBQSxHQUFBUixzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQWEsb0JBQUEsR0FBQVQsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFjLG1CQUFBLEdBQUFWLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBZSxnQkFBQSxHQUFBZixPQUFBO0FBQ0EsSUFBQWdCLFVBQUEsR0FBQWhCLE9BQUE7QUFDQSxJQUFBaUIsTUFBQSxHQUFBakIsT0FBQTtBQWNBQSxPQUFBO0FBQWlCLFNBQUFrQix5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQVQsd0JBQUFT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QUM7WUFBQXlKLFFBQUEsRUFBR2xMO1VBQVcsQ0FBQSxDQUN0RDtRQUFBLENBQUEsQ0FBQTtNQUNHLENBQUEsQ0FFVDtNQUVELE9BQU9LLE1BQU0sR0FBRyxJQUFBaUwsZUFBQSxFQUFDb0MscUJBQWMsRUFBQTtRQUFBeEMsUUFBQSxFQUFFYTtNQUFTLENBQUEsQ0FBa0IsR0FBR0EsU0FBUztJQUMxRSxDQUFDLENBQUMsQ0FBRTtFQUFBLENBQUEsQ0FDYTtBQUV2QixDQUFDO0FBRURyUCxNQUFNLENBQUNpUixXQUFXLEdBQUcsUUFBUTtBQUFDLElBQUFDLFFBQUEsR0FBQWpSLE9BQUEsMkJBRWYsSUFBQWtSLFlBQUksRUFBQ25SLE1BQU0sQ0FBQyIsImZpbGUiOiJjb21wb25lbnRzL1NlbGVjdC9TZWxlY3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgRmxvYXRpbmdGb2N1c01hbmFnZXIsIEZsb2F0aW5nUG9ydGFsLCB1c2VJbnRlcmFjdGlvbnMsIHVzZUxpc3ROYXZpZ2F0aW9uLCB1c2VUeXBlYWhlYWQsIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3JlYWN0JztcbmltcG9ydCB7IG1lbW8sIHVzZUVmZmVjdCwgdXNlSWQsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlQ29udHJvbGxlZFN0YXRlIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlQ29udHJvbGxlZFN0YXRlJztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlRXZlbnRDYWxsYmFjayc7XG5pbXBvcnQgeyBJY29ucyB9IGZyb20gJy4uL0ljb25zJztcbmltcG9ydCB7IFNwaW5uZXIgfSBmcm9tICcuLi9TcGlubmVyJztcbmltcG9ydCB7IFR5cG9ncmFwaHlCb2R5LCBUeXBvZ3JhcGh5TGFiZWwgfSBmcm9tICcuLi9UeXBvZ3JhcGh5JztcbmltcG9ydCB7IGpvaW5DbHMsIGRlZmF1bHQgYXMgcm9vdENsYXNzbmFtZXMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCBTZWxlY3RGaWVsZFNoZWxsIGZyb20gJy4vU2VsZWN0RmllbGRTaGVsbCc7XG5pbXBvcnQgU2VsZWN0T3B0aW9uQ29udGVudCBmcm9tICcuL1NlbGVjdE9wdGlvbkNvbnRlbnQnO1xuaW1wb3J0IFNlbGVjdFNlYXJjaENvbnRyb2wgZnJvbSAnLi9TZWxlY3RTZWFyY2hDb250cm9sJztcbmltcG9ydCBTZWxlY3RWYWx1ZUNvbnRlbnQgZnJvbSAnLi9TZWxlY3RWYWx1ZUNvbnRlbnQnO1xuaW1wb3J0IHsgdXNlU2VsZWN0U2hlbGwgfSBmcm9tICcuL3VzZVNlbGVjdFNoZWxsJztcbmltcG9ydCB7IEtFWUJPQVJELCBTRUxFQ1RfVFlQT0dSQVBIWSB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGV4dHJhY3RPcHRpb25UZXh0LCBmaWx0ZXJPcHRpb25Hcm91cHMsIGZsYXR0ZW5PcHRpb25Hcm91cHMsIGdldE11bHRpcGxlVmFsdWUsIGdldEZvbnRTaXplLCBnZXRPcHRpb25zQnlWYWx1ZXMsIGdldFNlbGVjdGVkT3B0aW9ucywgaXNPcHRpb25TZWxlY3RlZCwgbm9ybWFsaXplU2l6ZSwgbm9ybWFsaXplT3B0aW9uR3JvdXBzLCByZW1vdmVNdWx0aXBsZVZhbHVlLCB0b2dnbGVNdWx0aXBsZVZhbHVlLCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0ICcuL3N0eWxlJztcbmNvbnN0IERFRkFVTFRfTUFYX0hFSUdIVCA9IDMyMDtcbmV4cG9ydCBjb25zdCBTZWxlY3QgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCB7IGNsYXNzTmFtZSA9ICcnLCBwcmVmaXhDbHMgPSAnc2VsZWN0Jywgc3R5bGUsIGlkLCBuYW1lLCAnYXJpYS1sYWJlbCc6IGFyaWFMYWJlbCwgJ2FyaWEtbGFiZWxsZWRieSc6IGFyaWFMYWJlbGxlZEJ5LCBwbGFjZWhvbGRlciA9ICdWYWx1ZScsIG9wdGlvbnMgPSBbXSwgdmFsdWUsIGRlZmF1bHRWYWx1ZSwgc2l6ZSA9ICdsYXJnZScsIHN0YXR1cyA9ICdkZWZhdWx0JywgdmFyaWFudCA9ICdmaWxsJywgZGlzYWJsZWQ6IGRpc2FibGVkUHJvcCA9IGZhbHNlLCByZWFkT25seSA9IGZhbHNlLCBsb2FkaW5nID0gZmFsc2UsIG11bHRpcGxlID0gZmFsc2UsIG1heFZpc2libGVWYWx1ZXMsIHNlYXJjaGFibGUgPSBmYWxzZSwgc2VhcmNoUGxhY2Vob2xkZXIgPSAnU2VhcmNoJywgc2VhcmNoVmFsdWUsIGRlZmF1bHRTZWFyY2hWYWx1ZSA9ICcnLCBmaWx0ZXJJbnB1dEF1dG9Gb2N1cyA9IHRydWUsIGxhYmVsLCBsYWJlbENsYXNzTmFtZSwgaW5mbywgZGVzY3JpcHRpb24sIGZlZWRiYWNrLCByZXF1aXJlZCA9IHRydWUsIHByZWZpeCwgZW1wdHlDb250ZW50ID0gJ05vIG9wdGlvbnMnLCBwYW5lbEhlYWRlciwgcGFuZWxGb290ZXIsIG9wZW4sIGRlZmF1bHRPcGVuID0gZmFsc2UsIHBvcnRhbCA9IHRydWUsIGFsbG93RGVzZWxlY3QgPSBmYWxzZSwgcGFuZWxDbGFzc05hbWUsIG9wdGlvbkNsYXNzTmFtZSwgZ3JvdXBMYWJlbENsYXNzTmFtZSwgbGlzdE1heEhlaWdodCA9IERFRkFVTFRfTUFYX0hFSUdIVCwgb2Zmc2V0LCBhbmltYXRpb24sIG9uQ2hhbmdlLCBvbk9wZW5DaGFuZ2UsIG9uU2VhcmNoQ2hhbmdlLCBvbkJsdXIsIGZpbHRlck9wdGlvbiwgcmVuZGVyT3B0aW9uLCByZW5kZXJPcHRpb25Db250ZW50LCByZW5kZXJWYWx1ZSwgcmVmLCB9ID0gcHJvcHM7XG4gICAgY29uc3QgZGlzYWJsZWQgPSBkaXNhYmxlZFByb3AgfHwgbG9hZGluZztcbiAgICBjb25zdCBpbnRlcmFjdGl2ZSA9ICFkaXNhYmxlZCAmJiAhcmVhZE9ubHk7XG4gICAgY29uc3QgY2xhc3NlcyA9IHJvb3RDbGFzc25hbWVzKHByZWZpeENscyk7XG4gICAgY29uc3QgYXV0b0lkID0gdXNlSWQoKTtcbiAgICBjb25zdCB0cmlnZ2VySWQgPSBpZCAhPT0gbnVsbCAmJiBpZCAhPT0gdm9pZCAwID8gaWQgOiBhdXRvSWQ7XG4gICAgY29uc3QgbGFiZWxJZCA9IHVzZUlkKCk7XG4gICAgY29uc3QgZGVzY3JpcHRpb25JZCA9IHVzZUlkKCk7XG4gICAgY29uc3QgZmVlZGJhY2tJZCA9IHVzZUlkKCk7XG4gICAgY29uc3Qgb3B0aW9uSWRQcmVmaXggPSB1c2VJZCgpO1xuICAgIGNvbnN0IFtpbm5lclZhbHVlLCBzZXRJbm5lclZhbHVlXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShkZWZhdWx0VmFsdWUgIT09IG51bGwgJiYgZGVmYXVsdFZhbHVlICE9PSB2b2lkIDAgPyBkZWZhdWx0VmFsdWUgOiAobXVsdGlwbGUgPyBbXSA6IHVuZGVmaW5lZCksIHZhbHVlKTtcbiAgICBjb25zdCBbaW5uZXJTZWFyY2hWYWx1ZSwgc2V0SW5uZXJTZWFyY2hWYWx1ZV0gPSB1c2VDb250cm9sbGVkU3RhdGUoZGVmYXVsdFNlYXJjaFZhbHVlLCBzZWFyY2hWYWx1ZSk7XG4gICAgY29uc3QgW2FjdGl2ZUluZGV4LCBzZXRBY3RpdmVJbmRleF0gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBub3JtYWxpemVkU2l6ZSA9IG5vcm1hbGl6ZVNpemUoc2l6ZSk7XG4gICAgY29uc3QgYWxsT3B0aW9uR3JvdXBzID0gdXNlTWVtbygoKSA9PiBub3JtYWxpemVPcHRpb25Hcm91cHMob3B0aW9ucyksIFtvcHRpb25zXSk7XG4gICAgY29uc3QgYWxsRmxhdE9wdGlvbnMgPSB1c2VNZW1vKCgpID0+IGZsYXR0ZW5PcHRpb25Hcm91cHMoYWxsT3B0aW9uR3JvdXBzKSwgW2FsbE9wdGlvbkdyb3Vwc10pO1xuICAgIGNvbnN0IHZpc2libGVPcHRpb25Hcm91cHMgPSB1c2VNZW1vKCgpID0+IChzZWFyY2hhYmxlXG4gICAgICAgID8gZmlsdGVyT3B0aW9uR3JvdXBzKGFsbE9wdGlvbkdyb3VwcywgaW5uZXJTZWFyY2hWYWx1ZSwgZmlsdGVyT3B0aW9uKVxuICAgICAgICA6IGFsbE9wdGlvbkdyb3VwcyksIFthbGxPcHRpb25Hcm91cHMsIGZpbHRlck9wdGlvbiwgaW5uZXJTZWFyY2hWYWx1ZSwgc2VhcmNoYWJsZV0pO1xuICAgIGNvbnN0IHZpc2libGVGbGF0T3B0aW9ucyA9IHVzZU1lbW8oKCkgPT4gZmxhdHRlbk9wdGlvbkdyb3Vwcyh2aXNpYmxlT3B0aW9uR3JvdXBzKSwgW3Zpc2libGVPcHRpb25Hcm91cHNdKTtcbiAgICBjb25zdCBzZWxlY3RlZE9wdGlvbnMgPSB1c2VNZW1vKCgpID0+IGdldFNlbGVjdGVkT3B0aW9ucyhhbGxGbGF0T3B0aW9ucywgaW5uZXJWYWx1ZSwgbXVsdGlwbGUpLCBbYWxsRmxhdE9wdGlvbnMsIGlubmVyVmFsdWUsIG11bHRpcGxlXSk7XG4gICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBpZiAoc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbWF0Y2hlZEluZGV4ID0gdmlzaWJsZUZsYXRPcHRpb25zLmZpbmRJbmRleCgob3B0aW9uKSA9PiBvcHRpb24udmFsdWUgPT09IHNlbGVjdGVkT3B0aW9uc1swXS52YWx1ZSk7XG4gICAgICAgIHJldHVybiBtYXRjaGVkSW5kZXggPj0gMCA/IG1hdGNoZWRJbmRleCA6IG51bGw7XG4gICAgfSwgW3NlbGVjdGVkT3B0aW9ucywgdmlzaWJsZUZsYXRPcHRpb25zXSk7XG4gICAgY29uc3QgaGFzU2VsZWN0aW9uID0gc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA+IDA7XG4gICAgY29uc3QgbGlzdFJlZiA9IHVzZVJlZihbXSk7XG4gICAgY29uc3QgbGlzdENvbnRlbnRSZWYgPSB1c2VSZWYoW10pO1xuICAgIGNvbnN0IGZsb2F0aW5nUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHRyaWdnZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3Qgc2VhcmNoSW5wdXRSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgaGFuZGxlVHJpZ2dlclJlZiA9IHVzZUV2ZW50Q2FsbGJhY2soKG5vZGUpID0+IHtcbiAgICAgICAgdHJpZ2dlclJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgICAgaWYgKHJlZikge1xuICAgICAgICAgICAgcmVmLmN1cnJlbnQgPSBub2RlO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgeyBpc09wZW46IGlubmVyT3Blbiwgc2V0T3BlbjogaGFuZGxlT3BlbkNoYW5nZSwgcmVmcywgY29udGV4dCwgZmxvYXRpbmdTdHlsZXMsIHRyYW5zaXRpb25TdHlsZXMsIGlzTW91bnRlZCwgYmFzZUludGVyYWN0aW9ucywgfSA9IHVzZVNlbGVjdFNoZWxsKHtcbiAgICAgICAgb3BlbixcbiAgICAgICAgZGVmYXVsdE9wZW4sXG4gICAgICAgIG9uT3BlbkNoYW5nZSxcbiAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgIHJlYWRPbmx5LFxuICAgICAgICBsaXN0TWF4SGVpZ2h0LFxuICAgICAgICBhbmltYXRpb24sXG4gICAgICAgIG9mZnNldCxcbiAgICB9KTtcbiAgICBjb25zdCBzZXRSZWZlcmVuY2UgPSB1c2VFdmVudENhbGxiYWNrKChub2RlKSA9PiB7XG4gICAgICAgIHJlZnMuc2V0UmVmZXJlbmNlKG5vZGUpO1xuICAgICAgICBoYW5kbGVUcmlnZ2VyUmVmKG5vZGUpO1xuICAgIH0pO1xuICAgIGNvbnN0IHNldEZsb2F0aW5nID0gdXNlRXZlbnRDYWxsYmFjaygobm9kZSkgPT4ge1xuICAgICAgICByZWZzLnNldEZsb2F0aW5nKG5vZGUpO1xuICAgICAgICBmbG9hdGluZ1JlZi5jdXJyZW50ID0gbm9kZTtcbiAgICB9KTtcbiAgICBjb25zdCBsaXN0TmF2aWdhdGlvbiA9IHVzZUxpc3ROYXZpZ2F0aW9uKGNvbnRleHQsIHtcbiAgICAgICAgbGlzdFJlZixcbiAgICAgICAgYWN0aXZlSW5kZXgsXG4gICAgICAgIHNlbGVjdGVkSW5kZXgsXG4gICAgICAgIG9uTmF2aWdhdGU6IHNldEFjdGl2ZUluZGV4LFxuICAgICAgICBlbmFibGVkOiBpbm5lck9wZW4sXG4gICAgICAgIGxvb3A6IHRydWUsXG4gICAgICAgIHZpcnR1YWw6IHNlYXJjaGFibGUsXG4gICAgfSk7XG4gICAgY29uc3QgdHlwZWFoZWFkID0gdXNlVHlwZWFoZWFkKGNvbnRleHQsIHtcbiAgICAgICAgbGlzdFJlZjogbGlzdENvbnRlbnRSZWYsXG4gICAgICAgIGFjdGl2ZUluZGV4LFxuICAgICAgICBzZWxlY3RlZEluZGV4LFxuICAgICAgICBlbmFibGVkOiBpbm5lck9wZW4gJiYgIXNlYXJjaGFibGUsXG4gICAgICAgIG9uTWF0Y2g6IHNldEFjdGl2ZUluZGV4LFxuICAgIH0pO1xuICAgIGNvbnN0IHsgZ2V0UmVmZXJlbmNlUHJvcHMsIGdldEZsb2F0aW5nUHJvcHMsIGdldEl0ZW1Qcm9wcyB9ID0gdXNlSW50ZXJhY3Rpb25zKFtcbiAgICAgICAgLi4uYmFzZUludGVyYWN0aW9ucyxcbiAgICAgICAgbGlzdE5hdmlnYXRpb24sXG4gICAgICAgIHR5cGVhaGVhZCxcbiAgICBdKTtcbiAgICBjb25zdCBmaXJzdEVuYWJsZWRJbmRleCA9IHVzZU1lbW8oKCkgPT4gdmlzaWJsZUZsYXRPcHRpb25zLmZpbmRJbmRleCgob3B0aW9uKSA9PiAhb3B0aW9uLmRpc2FibGVkKSwgW3Zpc2libGVGbGF0T3B0aW9uc10pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghaW5uZXJPcGVuKSB7XG4gICAgICAgICAgICBzZXRBY3RpdmVJbmRleChzZWxlY3RlZEluZGV4KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZXRBY3RpdmVJbmRleCgocHJldikgPT4ge1xuICAgICAgICAgICAgaWYgKHByZXYgIT09IG51bGwgJiYgdmlzaWJsZUZsYXRPcHRpb25zW3ByZXZdICYmICF2aXNpYmxlRmxhdE9wdGlvbnNbcHJldl0uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzZWxlY3RlZEluZGV4ICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgdmlzaWJsZUZsYXRPcHRpb25zW3NlbGVjdGVkSW5kZXhdICYmXG4gICAgICAgICAgICAgICAgIXZpc2libGVGbGF0T3B0aW9uc1tzZWxlY3RlZEluZGV4XS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZEluZGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZpcnN0RW5hYmxlZEluZGV4ID49IDAgPyBmaXJzdEVuYWJsZWRJbmRleCA6IG51bGw7XG4gICAgICAgIH0pO1xuICAgIH0sIFtmaXJzdEVuYWJsZWRJbmRleCwgaW5uZXJPcGVuLCBzZWxlY3RlZEluZGV4LCB2aXNpYmxlRmxhdE9wdGlvbnNdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmICghaW5uZXJPcGVuIHx8IGFjdGl2ZUluZGV4ID09PSBudWxsIHx8IHNlYXJjaGFibGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAoX2EgPSBsaXN0UmVmLmN1cnJlbnRbYWN0aXZlSW5kZXhdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgIH0sIFthY3RpdmVJbmRleCwgaW5uZXJPcGVuLCBzZWFyY2hhYmxlXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgbGlzdFJlZi5jdXJyZW50ID0gbGlzdFJlZi5jdXJyZW50LnNsaWNlKDAsIHZpc2libGVGbGF0T3B0aW9ucy5sZW5ndGgpO1xuICAgICAgICBsaXN0Q29udGVudFJlZi5jdXJyZW50ID0gbGlzdENvbnRlbnRSZWYuY3VycmVudC5zbGljZSgwLCB2aXNpYmxlRmxhdE9wdGlvbnMubGVuZ3RoKTtcbiAgICB9LCBbdmlzaWJsZUZsYXRPcHRpb25zLmxlbmd0aF0pO1xuICAgIGNvbnN0IHNldFNlYXJjaElucHV0UmVmID0gdXNlRXZlbnRDYWxsYmFjaygobm9kZSkgPT4ge1xuICAgICAgICBzZWFyY2hJbnB1dFJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgICAgaWYgKG5vZGUgJiYgaW5uZXJPcGVuICYmIGZpbHRlcklucHV0QXV0b0ZvY3VzKSB7XG4gICAgICAgICAgICBub2RlLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IG5vdGlmeUJsdXJJZk91dHNpZGUgPSB1c2VFdmVudENhbGxiYWNrKChyZWxhdGVkVGFyZ2V0LCBldmVudCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBjb25zdCBuZXh0VGFyZ2V0ID0gcmVsYXRlZFRhcmdldDtcbiAgICAgICAgY29uc3Qgd2l0aGluVHJpZ2dlciA9ICEhKG5leHRUYXJnZXQgJiYgKChfYSA9IHRyaWdnZXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNvbnRhaW5zKG5leHRUYXJnZXQpKSk7XG4gICAgICAgIGNvbnN0IHdpdGhpbkZsb2F0aW5nID0gISEobmV4dFRhcmdldCAmJiAoKF9iID0gZmxvYXRpbmdSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNvbnRhaW5zKG5leHRUYXJnZXQpKSk7XG4gICAgICAgIGlmICghd2l0aGluVHJpZ2dlciAmJiAhd2l0aGluRmxvYXRpbmcpIHtcbiAgICAgICAgICAgIG9uQmx1ciA9PT0gbnVsbCB8fCBvbkJsdXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQmx1cihldmVudCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVUcmlnZ2VyQmx1ciA9IHVzZUV2ZW50Q2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIG5vdGlmeUJsdXJJZk91dHNpZGUoZXZlbnQucmVsYXRlZFRhcmdldCwgZXZlbnQpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZU9wdGlvbkJsdXIgPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBub3RpZnlCbHVySWZPdXRzaWRlKGV2ZW50LnJlbGF0ZWRUYXJnZXQsIGV2ZW50KTtcbiAgICB9KTtcbiAgICBjb25zdCBjb21taXRDaGFuZ2UgPSB1c2VFdmVudENhbGxiYWNrKChuZXh0VmFsdWUsIG5leHRPcHRpb24pID0+IHtcbiAgICAgICAgc2V0SW5uZXJWYWx1ZShuZXh0VmFsdWUpO1xuICAgICAgICBvbkNoYW5nZSA9PT0gbnVsbCB8fCBvbkNoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DaGFuZ2UobmV4dFZhbHVlLCBuZXh0T3B0aW9uLCBuYW1lKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVTZWxlY3RPcHRpb24gPSB1c2VFdmVudENhbGxiYWNrKChvcHRpb24pID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgaWYgKG9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtdWx0aXBsZSkge1xuICAgICAgICAgICAgY29uc3QgbmV4dFZhbHVlID0gdG9nZ2xlTXVsdGlwbGVWYWx1ZShpbm5lclZhbHVlLCBvcHRpb24udmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgbmV4dE9wdGlvbnMgPSBnZXRPcHRpb25zQnlWYWx1ZXMoYWxsRmxhdE9wdGlvbnMsIG5leHRWYWx1ZSk7XG4gICAgICAgICAgICBjb21taXRDaGFuZ2UobmV4dFZhbHVlLCBuZXh0T3B0aW9ucyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFsbG93RGVzZWxlY3QgJiYgaW5uZXJWYWx1ZSA9PT0gb3B0aW9uLnZhbHVlKSB7XG4gICAgICAgICAgICBjb21taXRDaGFuZ2UodW5kZWZpbmVkLCB1bmRlZmluZWQpO1xuICAgICAgICAgICAgaGFuZGxlT3BlbkNoYW5nZShmYWxzZSk7XG4gICAgICAgICAgICBvbkJsdXIgPT09IG51bGwgfHwgb25CbHVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkJsdXIoKTtcbiAgICAgICAgICAgIChfYSA9IHRyaWdnZXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb21taXRDaGFuZ2Uob3B0aW9uLnZhbHVlLCBvcHRpb24pO1xuICAgICAgICBoYW5kbGVPcGVuQ2hhbmdlKGZhbHNlKTtcbiAgICAgICAgb25CbHVyID09PSBudWxsIHx8IG9uQmx1ciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25CbHVyKCk7XG4gICAgICAgIChfYiA9IHRyaWdnZXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVSZW1vdmVTZWxlY3RlZFZhbHVlID0gdXNlRXZlbnRDYWxsYmFjaygob3B0aW9uVmFsdWUpID0+IHtcbiAgICAgICAgaWYgKCFtdWx0aXBsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZ2V0TXVsdGlwbGVWYWx1ZShpbm5lclZhbHVlKS5pbmNsdWRlcyhvcHRpb25WYWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXh0VmFsdWUgPSByZW1vdmVNdWx0aXBsZVZhbHVlKGlubmVyVmFsdWUsIG9wdGlvblZhbHVlKTtcbiAgICAgICAgY29uc3QgbmV4dE9wdGlvbnMgPSBnZXRPcHRpb25zQnlWYWx1ZXMoYWxsRmxhdE9wdGlvbnMsIG5leHRWYWx1ZSk7XG4gICAgICAgIGNvbW1pdENoYW5nZShuZXh0VmFsdWUsIG5leHRPcHRpb25zKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVUcmlnZ2VyS2V5RG93biA9IHVzZUV2ZW50Q2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghaW50ZXJhY3RpdmUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBLRVlCT0FSRC5FTlRFUiB8fCBldmVudC5rZXkgPT09IEtFWUJPQVJELlNQQUNFKSB7XG4gICAgICAgICAgICBpZiAoaW5uZXJPcGVuICYmXG4gICAgICAgICAgICAgICAgYWN0aXZlSW5kZXggIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICB2aXNpYmxlRmxhdE9wdGlvbnNbYWN0aXZlSW5kZXhdICYmXG4gICAgICAgICAgICAgICAgIXZpc2libGVGbGF0T3B0aW9uc1thY3RpdmVJbmRleF0uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdE9wdGlvbih2aXNpYmxlRmxhdE9wdGlvbnNbYWN0aXZlSW5kZXhdKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgaGFuZGxlT3BlbkNoYW5nZSghaW5uZXJPcGVuKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBLRVlCT0FSRC5BUlJPV19ET1dOIHx8IGV2ZW50LmtleSA9PT0gS0VZQk9BUkQuQVJST1dfVVApIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBpZiAoIWlubmVyT3Blbikge1xuICAgICAgICAgICAgICAgIGhhbmRsZU9wZW5DaGFuZ2UodHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVJdGVtTW91c2VFbnRlciA9IHVzZUV2ZW50Q2FsbGJhY2soKGluZGV4KSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKCEoKF9hID0gdmlzaWJsZUZsYXRPcHRpb25zW2luZGV4XSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmRpc2FibGVkKSkge1xuICAgICAgICAgICAgc2V0QWN0aXZlSW5kZXgoaW5kZXgpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlVGFnUmVtb3ZlTW91c2VEb3duID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlVGFnUmVtb3ZlQ2xpY2sgPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVTZWFyY2hCbHVyID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgbm90aWZ5Qmx1cklmT3V0c2lkZShldmVudC5yZWxhdGVkVGFyZ2V0LCBldmVudCk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlU2VhcmNoQ2hhbmdlID0gdXNlRXZlbnRDYWxsYmFjaygobmV4dFZhbHVlLCBfZXZlbnQpID0+IHtcbiAgICAgICAgc2V0SW5uZXJTZWFyY2hWYWx1ZShuZXh0VmFsdWUpO1xuICAgICAgICBvblNlYXJjaENoYW5nZSA9PT0gbnVsbCB8fCBvblNlYXJjaENoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25TZWFyY2hDaGFuZ2UobmV4dFZhbHVlKTtcbiAgICB9KTtcbiAgICBjb25zdCBmaW5kRW5hYmxlZEluZGV4ID0gdXNlRXZlbnRDYWxsYmFjaygoY3VycmVudCwgZGlyZWN0aW9uKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gdmlzaWJsZUZsYXRPcHRpb25zLmxlbmd0aDtcbiAgICAgICAgaWYgKGxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RhcnQgPSBjdXJyZW50ICE9PSBudWxsICYmIGN1cnJlbnQgIT09IHZvaWQgMCA/IGN1cnJlbnQgOiAoZGlyZWN0aW9uID09PSAxID8gLTEgOiBsZW5ndGgpO1xuICAgICAgICBmb3IgKGxldCBzdGVwID0gMTsgc3RlcCA8PSBsZW5ndGg7IHN0ZXAgKz0gMSkge1xuICAgICAgICAgICAgY29uc3QgY2FuZGlkYXRlID0gKChzdGFydCArIGRpcmVjdGlvbiAqIHN0ZXApICUgbGVuZ3RoICsgbGVuZ3RoKSAlIGxlbmd0aDtcbiAgICAgICAgICAgIGlmICghKChfYSA9IHZpc2libGVGbGF0T3B0aW9uc1tjYW5kaWRhdGVdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGlzYWJsZWQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVTZWFyY2hLZXlEb3duID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBLRVlCT0FSRC5BUlJPV19ET1dOKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgY29uc3QgbmV4dCA9IGZpbmRFbmFibGVkSW5kZXgoYWN0aXZlSW5kZXgsIDEpO1xuICAgICAgICAgICAgaWYgKG5leHQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBzZXRBY3RpdmVJbmRleChuZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBLRVlCT0FSRC5BUlJPV19VUCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGNvbnN0IHByZXYgPSBmaW5kRW5hYmxlZEluZGV4KGFjdGl2ZUluZGV4LCAtMSk7XG4gICAgICAgICAgICBpZiAocHJldiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHNldEFjdGl2ZUluZGV4KHByZXYpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWUJPQVJELkVOVEVSKSB7XG4gICAgICAgICAgICBpZiAoYWN0aXZlSW5kZXggIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICB2aXNpYmxlRmxhdE9wdGlvbnNbYWN0aXZlSW5kZXhdICYmXG4gICAgICAgICAgICAgICAgIXZpc2libGVGbGF0T3B0aW9uc1thY3RpdmVJbmRleF0uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdE9wdGlvbih2aXNpYmxlRmxhdE9wdGlvbnNbYWN0aXZlSW5kZXhdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBLRVlCT0FSRC5FU0NBUEUpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBoYW5kbGVPcGVuQ2hhbmdlKGZhbHNlKTtcbiAgICAgICAgICAgIChfYSA9IHRyaWdnZXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IHJlbmRlclZhbHVlTWV0YSA9IHtcbiAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgIHJlYWRPbmx5LFxuICAgICAgICBtdWx0aXBsZSxcbiAgICAgICAgbWF4VmlzaWJsZVZhbHVlcyxcbiAgICAgICAgb3BlbjogaW5uZXJPcGVuLFxuICAgICAgICBwbGFjZWhvbGRlcjogIWhhc1NlbGVjdGlvbixcbiAgICAgICAgc2VsZWN0ZWRPcHRpb25zLFxuICAgICAgICBzaXplOiBub3JtYWxpemVkU2l6ZSxcbiAgICAgICAgZm9udFNpemU6IGdldEZvbnRTaXplKG5vcm1hbGl6ZWRTaXplKSxcbiAgICB9O1xuICAgIGNvbnN0IHZhbHVlTGFiZWxDbGFzcyA9IGhhc1NlbGVjdGlvbiA/ICd2YWx1ZScgOiAncGxhY2Vob2xkZXInO1xuICAgIGNvbnN0IGlzTXVsdGlwbGVWYWx1ZUZpbGxlZCA9IChtdWx0aXBsZSAmJlxuICAgICAgICBoYXNTZWxlY3Rpb24gJiZcbiAgICAgICAgbWF4VmlzaWJsZVZhbHVlcyA9PT0gdW5kZWZpbmVkKTtcbiAgICBjb25zdCB0cmlnZ2VyQ2xhc3NOYW1lID0gY2xhc3NlcygndHJpZ2dlcicsIGpvaW5DbHMoY2xhc3NlcyhgdHJpZ2dlci0ke25vcm1hbGl6ZWRTaXplfWApLCBjbGFzc2VzKGB0cmlnZ2VyLSR7dmFyaWFudH1gKSwgaW5uZXJPcGVuICYmIGNsYXNzZXMoJ3RyaWdnZXItb3BlbicpLCBpc011bHRpcGxlVmFsdWVGaWxsZWQgJiYgY2xhc3NlcygndHJpZ2dlci1tdWx0aXBsZS1maWxsZWQnKSwgaGFzU2VsZWN0aW9uID8gY2xhc3NlcygndHJpZ2dlci1maWxsZWQnKSA6IGNsYXNzZXMoJ3RyaWdnZXItcGxhY2Vob2xkZXInKSwgc3RhdHVzICE9PSAnZGVmYXVsdCcgJiYgY2xhc3NlcyhgdHJpZ2dlci0ke3N0YXR1c31gKSwgZGlzYWJsZWQgJiYgY2xhc3NlcygndHJpZ2dlci1kaXNhYmxlZCcpLCByZWFkT25seSAmJiAhZGlzYWJsZWQgJiYgY2xhc3NlcygndHJpZ2dlci1yZWFkb25seScpKSk7XG4gICAgY29uc3QgaWNvblNpemUgPSBub3JtYWxpemVkU2l6ZSA9PT0gJ3NtYWxsJyA/IDE2IDogMjA7XG4gICAgY29uc3QgYWN0aXZlT3B0aW9uSWQgPSBzZWFyY2hhYmxlICYmIGlubmVyT3BlbiAmJiBhY3RpdmVJbmRleCAhPT0gbnVsbFxuICAgICAgICA/IGAke29wdGlvbklkUHJlZml4fS0ke2FjdGl2ZUluZGV4fWBcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgZmxvYXRpbmdBcmlhTGFiZWxsZWRCeSA9IGFyaWFMYWJlbGxlZEJ5ICE9PSBudWxsICYmIGFyaWFMYWJlbGxlZEJ5ICE9PSB2b2lkIDAgPyBhcmlhTGFiZWxsZWRCeSA6IChsYWJlbCA/IGxhYmVsSWQgOiB1bmRlZmluZWQpO1xuICAgIGNvbnN0IGRlc2NyaWJlZEJ5SWRzID0gW1xuICAgICAgICBkZXNjcmlwdGlvbiA/IGRlc2NyaXB0aW9uSWQgOiBudWxsLFxuICAgICAgICBmZWVkYmFjayA/IGZlZWRiYWNrSWQgOiBudWxsLFxuICAgIF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKSB8fCB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIChfanN4cyhTZWxlY3RGaWVsZFNoZWxsLCB7IGNsYXNzZXM6IGNsYXNzZXMsIGNsYXNzTmFtZTogY2xhc3NOYW1lLCBzaXplOiBub3JtYWxpemVkU2l6ZSwgdmFyaWFudDogdmFyaWFudCwgc3RhdHVzOiBzdGF0dXMsIGRpc2FibGVkOiBkaXNhYmxlZCwgcmVhZE9ubHk6IHJlYWRPbmx5LCBsb2FkaW5nOiBsb2FkaW5nLCBsYWJlbDogbGFiZWwsIGxhYmVsQ2xhc3NOYW1lOiBsYWJlbENsYXNzTmFtZSwgaW5mbzogaW5mbywgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLCBmZWVkYmFjazogZmVlZGJhY2ssIHJlcXVpcmVkOiByZXF1aXJlZCwgbGFiZWxJZDogbGFiZWxJZCwgZGVzY3JpcHRpb25JZDogZGVzY3JpcHRpb25JZCwgZmVlZGJhY2tJZDogZmVlZGJhY2tJZCwgY2hpbGRyZW46IFtfanN4cyhcImJ1dHRvblwiLCBPYmplY3QuYXNzaWduKHt9LCBnZXRSZWZlcmVuY2VQcm9wcyh7XG4gICAgICAgICAgICAgICAgcmVmOiBzZXRSZWZlcmVuY2UsXG4gICAgICAgICAgICAgICAgaWQ6IHRyaWdnZXJJZCxcbiAgICAgICAgICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICAgICAgICdhcmlhLXJlYWRvbmx5JzogcmVhZE9ubHkgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogdHJpZ2dlckNsYXNzTmFtZSxcbiAgICAgICAgICAgICAgICBvbktleURvd246IGhhbmRsZVRyaWdnZXJLZXlEb3duLFxuICAgICAgICAgICAgICAgIG9uQmx1cjogaGFuZGxlVHJpZ2dlckJsdXIsXG4gICAgICAgICAgICAgICAgJ2FyaWEtbGFiZWwnOiBhcmlhTGFiZWwsXG4gICAgICAgICAgICAgICAgJ2FyaWEtbGFiZWxsZWRieSc6IGZsb2F0aW5nQXJpYUxhYmVsbGVkQnksXG4gICAgICAgICAgICAgICAgJ2FyaWEtZGVzY3JpYmVkYnknOiBkZXNjcmliZWRCeUlkcyxcbiAgICAgICAgICAgIH0pLCB7IGNoaWxkcmVuOiBbX2pzeHMoXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdjb250ZW50JyksIGNoaWxkcmVuOiBbcHJlZml4ICYmIF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdwcmVmaXgnKSwgY2hpbGRyZW46IHByZWZpeCB9KSwgX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXModmFsdWVMYWJlbENsYXNzLCBqb2luQ2xzKGNsYXNzZXMoYCR7dmFsdWVMYWJlbENsYXNzfS0ke25vcm1hbGl6ZWRTaXplfWApLCBpc011bHRpcGxlVmFsdWVGaWxsZWQgJiYgY2xhc3NlcyhgJHt2YWx1ZUxhYmVsQ2xhc3N9LW11bHRpcGxlYCksIGRpc2FibGVkICYmIGNsYXNzZXMoYCR7dmFsdWVMYWJlbENsYXNzfS1kaXNhYmxlZGApKSksIGNoaWxkcmVuOiBfanN4KFNlbGVjdFZhbHVlQ29udGVudCwgeyBjbGFzc2VzOiBjbGFzc2VzLCBoYXNTZWxlY3Rpb246IGhhc1NlbGVjdGlvbiwgbXVsdGlwbGU6IG11bHRpcGxlLCBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXIsIHJlbmRlclZhbHVlOiByZW5kZXJWYWx1ZSwgcmVuZGVyVmFsdWVNZXRhOiByZW5kZXJWYWx1ZU1ldGEsIHNlbGVjdGVkT3B0aW9uczogc2VsZWN0ZWRPcHRpb25zLCBtYXhWaXNpYmxlVmFsdWVzOiBtYXhWaXNpYmxlVmFsdWVzLCBvblJlbW92ZTogaGFuZGxlUmVtb3ZlU2VsZWN0ZWRWYWx1ZSwgb25SZW1vdmVDbGljazogaGFuZGxlVGFnUmVtb3ZlQ2xpY2ssIG9uUmVtb3ZlTW91c2VEb3duOiBoYW5kbGVUYWdSZW1vdmVNb3VzZURvd24gfSkgfSldIH0pLCBfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnaWNvbicpLCBjaGlsZHJlbjogbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gX2pzeChTcGlubmVyLCB7IHNpemU6IGljb25TaXplLCBzdHJva2VXaWR0aDogMiB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcmVhZE9ubHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX2pzeChJY29ucywgeyBuYW1lOiBpbm5lck9wZW4gPyAnY2hldnJvblVwJyA6ICdjaGV2cm9uRG93bicsIHNpemU6IGljb25TaXplLCBjb2xvcjogXCJjdXJyZW50Q29sb3JcIiB9KSB9KV0gfSkpLCBpc01vdW50ZWQgJiYgaW50ZXJhY3RpdmUgJiYgKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYW5lbE5vZGUgPSAoX2pzeChGbG9hdGluZ0ZvY3VzTWFuYWdlciwgeyBjb250ZXh0OiBjb250ZXh0LCBtb2RhbDogZmFsc2UsIGluaXRpYWxGb2N1czogLTEsIHJldHVybkZvY3VzOiBmYWxzZSwgY2hpbGRyZW46IF9qc3hzKFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe30sIGdldEZsb2F0aW5nUHJvcHMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBzZXRGbG9hdGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogam9pbkNscyhjbGFzc2VzKCdwYW5lbCcpLCBwYW5lbENsYXNzTmFtZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBmbG9hdGluZ1N0eWxlcyksIHRyYW5zaXRpb25TdHlsZXMpLFxuICAgICAgICAgICAgICAgICAgICB9KSwgeyBjaGlsZHJlbjogW3NlYXJjaGFibGUgJiYgKF9qc3goU2VsZWN0U2VhcmNoQ29udHJvbCwgeyByZWY6IHNldFNlYXJjaElucHV0UmVmLCBjbGFzc2VzOiBjbGFzc2VzLCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2l6ZT17bm9ybWFsaXplZFNpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IFwic21hbGxcIiwgcGxhY2Vob2xkZXI6IHNlYXJjaFBsYWNlaG9sZGVyLCB2YWx1ZTogaW5uZXJTZWFyY2hWYWx1ZSwgYWN0aXZlRGVzY2VuZGFudDogYWN0aXZlT3B0aW9uSWQsIG9uQmx1cjogaGFuZGxlU2VhcmNoQmx1ciwgb25DaGFuZ2U6IGhhbmRsZVNlYXJjaENoYW5nZSwgb25LZXlEb3duOiBoYW5kbGVTZWFyY2hLZXlEb3duIH0pKSwgX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3BhbmVsLWJvZHknKSwgY2hpbGRyZW46IFtwYW5lbEhlYWRlciAhPSBudWxsICYmIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdwYW5lbC1oZWFkZXInKSwgY2hpbGRyZW46IHBhbmVsSGVhZGVyIH0pKSwgdmlzaWJsZUZsYXRPcHRpb25zLmxlbmd0aCA9PT0gMCA/IChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdlbXB0eScpLCBjaGlsZHJlbjogX2pzeChUeXBvZ3JhcGh5Qm9keSwgeyBzaXplOiBTRUxFQ1RfVFlQT0dSQVBIWS5lbXB0eS5zaXplLCBjb2xvcjogU0VMRUNUX1RZUE9HUkFQSFkuZW1wdHkuY29sb3IsIGNoaWxkcmVuOiBlbXB0eUNvbnRlbnQgfSkgfSkpIDogKCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZsYXRJbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2libGVPcHRpb25Hcm91cHMubWFwKChncm91cCkgPT4gKF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdncm91cCcpLCBjaGlsZHJlbjogW2dyb3VwLmxhYmVsICYmIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdncm91cC1sYWJlbCcsIGdyb3VwTGFiZWxDbGFzc05hbWUpLCBjaGlsZHJlbjogX2pzeChUeXBvZ3JhcGh5TGFiZWwsIHsgc2l6ZTogU0VMRUNUX1RZUE9HUkFQSFkuZ3JvdXBMYWJlbC5zaXplLCBzdHJvbmc6IHRydWUsIGNoaWxkcmVuOiBncm91cC5sYWJlbCB9KSB9KSksIGdyb3VwLm9wdGlvbnMubWFwKChvcHRpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25GbGF0SW5kZXggPSBmbGF0SW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhdEluZGV4ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBpc09wdGlvblNlbGVjdGVkKGlubmVyVmFsdWUsIG11bHRpcGxlLCBvcHRpb24udmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZSA9IGFjdGl2ZUluZGV4ID09PSBvcHRpb25GbGF0SW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uTWV0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogISFvcHRpb24uZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBvcHRpb25GbGF0SW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuOiBpbm5lck9wZW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogZ2V0Rm9udFNpemUobm9ybWFsaXplZFNpemUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdENvbnRlbnRSZWYuY3VycmVudFtvcHRpb25GbGF0SW5kZXhdID0gZXh0cmFjdE9wdGlvblRleHQob3B0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKF9qc3goXCJidXR0b25cIiwgT2JqZWN0LmFzc2lnbih7fSwgZ2V0SXRlbVByb3BzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmKG5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RSZWYuY3VycmVudFtvcHRpb25GbGF0SW5kZXhdID0gbm9kZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGAke29wdGlvbklkUHJlZml4fS0ke29wdGlvbkZsYXRJbmRleH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZTogJ29wdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogY2xhc3Nlcygnb3B0aW9uJywgam9pbkNscyhhY3RpdmUgJiYgY2xhc3Nlcygnb3B0aW9uLWFjdGl2ZScpLCBzZWxlY3RlZCAmJiBjbGFzc2VzKCdvcHRpb24tc2VsZWN0ZWQnKSwgb3B0aW9uLmRpc2FibGVkICYmIGNsYXNzZXMoJ29wdGlvbi1kaXNhYmxlZCcpLCBvcHRpb25DbGFzc05hbWUpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IG9wdGlvbi5kaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FyaWEtc2VsZWN0ZWQnOiBzZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljazogKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0T3B0aW9uKG9wdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VFbnRlcjogKCkgPT4gaGFuZGxlSXRlbU1vdXNlRW50ZXIob3B0aW9uRmxhdEluZGV4KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiBoYW5kbGVPcHRpb25CbHVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB7IGNoaWxkcmVuOiByZW5kZXJPcHRpb24gPyAocmVuZGVyT3B0aW9uKG9wdGlvbiwgb3B0aW9uTWV0YSkpIDogKF9qc3goU2VsZWN0T3B0aW9uQ29udGVudCwgeyBjbGFzc2VzOiBjbGFzc2VzLCBvcHRpb246IG9wdGlvbiwgc2VsZWN0ZWQ6IHNlbGVjdGVkLCBzaXplOiBub3JtYWxpemVkU2l6ZSwgY29udGVudDogcmVuZGVyT3B0aW9uQ29udGVudCA9PT0gbnVsbCB8fCByZW5kZXJPcHRpb25Db250ZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZW5kZXJPcHRpb25Db250ZW50KG9wdGlvbiwgb3B0aW9uTWV0YSkgfSkpIH0pLCBgJHtncm91cC5rZXl9LSR7b3B0aW9uLnZhbHVlfWApKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXSB9LCBncm91cC5rZXkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgpKV0gfSksIHBhbmVsRm9vdGVyICE9IG51bGwgJiYgKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3BhbmVsLWZvb3RlcicpLCBjaGlsZHJlbjogcGFuZWxGb290ZXIgfSkpXSB9KSkgfSkpO1xuICAgICAgICAgICAgICAgIHJldHVybiBwb3J0YWwgPyBfanN4KEZsb2F0aW5nUG9ydGFsLCB7IGNoaWxkcmVuOiBwYW5lbE5vZGUgfSkgOiBwYW5lbE5vZGU7XG4gICAgICAgICAgICB9KSgpXSB9KSk7XG59O1xuU2VsZWN0LmRpc3BsYXlOYW1lID0gJ1NlbGVjdCc7XG5leHBvcnQgZGVmYXVsdCBtZW1vKFNlbGVjdCk7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9