@ultraviolet/ui 1.51.2 → 1.51.4

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 (275) hide show
  1. package/dist/components/ActionBar/index.cjs +32 -0
  2. package/dist/components/ActionBar/index.js +16 -26
  3. package/dist/components/Alert/index.cjs +117 -0
  4. package/dist/components/Alert/index.js +77 -88
  5. package/dist/components/Avatar/index.cjs +59 -0
  6. package/dist/components/Avatar/index.js +29 -26
  7. package/dist/components/Badge/index.cjs +101 -0
  8. package/dist/components/Badge/index.js +36 -52
  9. package/dist/components/Banner/assets/default-image-small.svg.cjs +3 -0
  10. package/dist/components/Banner/assets/default-image.svg.cjs +3 -0
  11. package/dist/components/Banner/index.cjs +118 -0
  12. package/dist/components/Banner/index.js +64 -139
  13. package/dist/components/BarChart/Tooltip.cjs +42 -0
  14. package/dist/components/BarChart/Tooltip.js +23 -18
  15. package/dist/components/BarChart/index.cjs +69 -0
  16. package/dist/components/BarChart/index.js +29 -42
  17. package/dist/components/BarStack/index.cjs +116 -0
  18. package/dist/components/BarStack/index.js +89 -163
  19. package/dist/components/Breadcrumbs/index.cjs +75 -0
  20. package/dist/components/Breadcrumbs/index.js +30 -33
  21. package/dist/components/Bullet/index.cjs +86 -0
  22. package/dist/components/Bullet/index.js +24 -28
  23. package/dist/components/Button/index.cjs +251 -0
  24. package/dist/components/Button/index.js +117 -159
  25. package/dist/components/Card/index.cjs +54 -0
  26. package/dist/components/Card/index.js +45 -52
  27. package/dist/components/Carousel/index.cjs +125 -0
  28. package/dist/components/Carousel/index.js +75 -99
  29. package/dist/components/Checkbox/index.cjs +264 -0
  30. package/dist/components/Checkbox/index.js +246 -343
  31. package/dist/components/CheckboxGroup/index.cjs +118 -0
  32. package/dist/components/CheckboxGroup/index.js +60 -56
  33. package/dist/components/CopyButton/index.cjs +25 -0
  34. package/dist/components/CopyButton/index.js +1 -15
  35. package/dist/components/DateInput/datepicker.css.cjs +3 -0
  36. package/dist/components/DateInput/index.cjs +185 -0
  37. package/dist/components/DateInput/index.js +124 -243
  38. package/dist/components/Dialog/Context.cjs +13 -0
  39. package/dist/components/Dialog/Context.js +1 -3
  40. package/dist/components/Dialog/index.cjs +68 -0
  41. package/dist/components/Dialog/index.js +22 -43
  42. package/dist/components/Dialog/subComponents/Button.cjs +15 -0
  43. package/dist/components/Dialog/subComponents/Button.js +1 -10
  44. package/dist/components/Dialog/subComponents/Buttons.cjs +12 -0
  45. package/dist/components/Dialog/subComponents/CancelButton.cjs +9 -0
  46. package/dist/components/Dialog/subComponents/Stack.cjs +8 -0
  47. package/dist/components/Dialog/subComponents/Stack.js +3 -1
  48. package/dist/components/Dialog/subComponents/Text.cjs +8 -0
  49. package/dist/components/Dialog/subComponents/Text.js +3 -1
  50. package/dist/components/EmptyState/index.cjs +92 -0
  51. package/dist/components/EmptyState/index.js +58 -50
  52. package/dist/components/Expandable/index.cjs +77 -0
  53. package/dist/components/Expandable/index.js +19 -23
  54. package/dist/components/GlobalAlert/GlobalAlertLink.cjs +23 -0
  55. package/dist/components/GlobalAlert/GlobalAlertLink.js +4 -20
  56. package/dist/components/GlobalAlert/index.cjs +61 -0
  57. package/dist/components/GlobalAlert/index.js +34 -87
  58. package/dist/components/LineChart/CustomLegend.cjs +115 -0
  59. package/dist/components/LineChart/CustomLegend.js +76 -72
  60. package/dist/components/LineChart/Tooltip.cjs +37 -0
  61. package/dist/components/LineChart/Tooltip.js +26 -37
  62. package/dist/components/LineChart/helpers.cjs +52 -0
  63. package/dist/components/LineChart/helpers.js +11 -9
  64. package/dist/components/LineChart/index.cjs +101 -0
  65. package/dist/components/LineChart/index.js +38 -55
  66. package/dist/components/Link/index.cjs +130 -0
  67. package/dist/components/Link/index.js +86 -125
  68. package/dist/components/List/Body.cjs +18 -0
  69. package/dist/components/List/Body.js +12 -7
  70. package/dist/components/List/Cell.cjs +43 -0
  71. package/dist/components/List/Cell.js +36 -33
  72. package/dist/components/List/HeaderCell.cjs +84 -0
  73. package/dist/components/List/HeaderCell.js +54 -68
  74. package/dist/components/List/HeaderRow.cjs +38 -0
  75. package/dist/components/List/HeaderRow.js +16 -18
  76. package/dist/components/List/ListContext.cjs +136 -0
  77. package/dist/components/List/ListContext.js +68 -87
  78. package/dist/components/List/Row.cjs +163 -0
  79. package/dist/components/List/Row.js +136 -169
  80. package/dist/components/List/SelectBar.cjs +54 -0
  81. package/dist/components/List/SelectBar.js +31 -14
  82. package/dist/components/List/SkeletonRows.cjs +57 -0
  83. package/dist/components/List/SkeletonRows.js +42 -23
  84. package/dist/components/List/constants.cjs +6 -0
  85. package/dist/components/List/index.cjs +62 -0
  86. package/dist/components/List/index.js +39 -59
  87. package/dist/components/Loader/index.cjs +79 -0
  88. package/dist/components/Loader/index.js +44 -65
  89. package/dist/components/Menu/Item.cjs +92 -0
  90. package/dist/components/Menu/Item.js +52 -62
  91. package/dist/components/Menu/index.cjs +118 -0
  92. package/dist/components/Menu/index.js +105 -171
  93. package/dist/components/MenuV2/Group.cjs +23 -0
  94. package/dist/components/MenuV2/Group.js +14 -16
  95. package/dist/components/MenuV2/Item.cjs +114 -0
  96. package/dist/components/MenuV2/Item.js +67 -74
  97. package/dist/components/MenuV2/index.cjs +92 -0
  98. package/dist/components/MenuV2/index.js +76 -110
  99. package/dist/components/Meter/index.cjs +65 -0
  100. package/dist/components/Meter/index.js +44 -57
  101. package/dist/components/Modal/Dialog.cjs +143 -0
  102. package/dist/components/Modal/Dialog.js +44 -100
  103. package/dist/components/Modal/Disclosure.cjs +44 -0
  104. package/dist/components/Modal/constants.cjs +52 -0
  105. package/dist/components/Modal/index.cjs +81 -0
  106. package/dist/components/Modal/index.js +23 -58
  107. package/dist/components/Notice/index.cjs +25 -0
  108. package/dist/components/Notice/index.js +13 -29
  109. package/dist/components/Notification/index.cjs +49 -0
  110. package/dist/components/Notification/index.js +9 -48
  111. package/dist/components/Notification/react-toastify.css.cjs +3 -0
  112. package/dist/components/NumberInput/helpers.cjs +10 -0
  113. package/dist/components/NumberInput/index.cjs +264 -0
  114. package/dist/components/NumberInput/index.js +113 -200
  115. package/dist/components/NumberInputV2/index.cjs +223 -0
  116. package/dist/components/NumberInputV2/index.js +200 -349
  117. package/dist/components/Pagination/getPageNumbers.cjs +23 -0
  118. package/dist/components/Pagination/getPageNumbers.js +3 -1
  119. package/dist/components/Pagination/index.cjs +90 -0
  120. package/dist/components/Pagination/index.js +45 -81
  121. package/dist/components/PasswordCheck/index.cjs +26 -0
  122. package/dist/components/PasswordCheck/index.js +10 -15
  123. package/dist/components/PasswordStrengthMeter/index.cjs +98 -0
  124. package/dist/components/PasswordStrengthMeter/index.js +66 -68
  125. package/dist/components/PieChart/Legends.cjs +143 -0
  126. package/dist/components/PieChart/Legends.js +121 -99
  127. package/dist/components/PieChart/Tooltip.cjs +50 -0
  128. package/dist/components/PieChart/Tooltip.js +35 -15
  129. package/dist/components/PieChart/index.cjs +103 -0
  130. package/dist/components/PieChart/index.js +68 -87
  131. package/dist/components/Popover/index.cjs +102 -0
  132. package/dist/components/Popover/index.js +57 -106
  133. package/dist/components/Popup/animations.cjs +25 -0
  134. package/dist/components/Popup/helpers.cjs +216 -0
  135. package/dist/components/Popup/helpers.js +24 -12
  136. package/dist/components/Popup/index.cjs +299 -0
  137. package/dist/components/Popup/index.js +263 -351
  138. package/dist/components/ProgressBar/index.cjs +55 -0
  139. package/dist/components/ProgressBar/index.js +33 -51
  140. package/dist/components/Radio/index.cjs +135 -0
  141. package/dist/components/Radio/index.js +119 -188
  142. package/dist/components/RadioGroup/index.cjs +101 -0
  143. package/dist/components/RadioGroup/index.js +46 -51
  144. package/dist/components/Row/index.cjs +36 -0
  145. package/dist/components/Row/index.js +11 -20
  146. package/dist/components/SelectInput/index.cjs +520 -0
  147. package/dist/components/SelectInput/index.js +165 -212
  148. package/dist/components/SelectInputV2/Dropdown.cjs +431 -0
  149. package/dist/components/SelectInputV2/Dropdown.js +233 -473
  150. package/dist/components/SelectInputV2/DropdownOption.cjs +64 -0
  151. package/dist/components/SelectInputV2/DropdownOption.js +44 -115
  152. package/dist/components/SelectInputV2/SearchBarDropdown.cjs +109 -0
  153. package/dist/components/SelectInputV2/SearchBarDropdown.js +28 -44
  154. package/dist/components/SelectInputV2/SelectBar.cjs +226 -0
  155. package/dist/components/SelectInputV2/SelectBar.js +137 -240
  156. package/dist/components/SelectInputV2/SelectInputProvider.cjs +171 -0
  157. package/dist/components/SelectInputV2/SelectInputProvider.js +45 -77
  158. package/dist/components/SelectInputV2/findOptionInOptions.cjs +12 -0
  159. package/dist/components/SelectInputV2/index.cjs +89 -0
  160. package/dist/components/SelectInputV2/index.js +39 -98
  161. package/dist/components/SelectInputV2/types.cjs +13 -0
  162. package/dist/components/SelectableCard/index.cjs +139 -0
  163. package/dist/components/SelectableCard/index.js +127 -183
  164. package/dist/components/SelectableCardGroup/index.cjs +109 -0
  165. package/dist/components/SelectableCardGroup/index.js +50 -55
  166. package/dist/components/Separator/index.cjs +58 -0
  167. package/dist/components/Separator/index.js +44 -64
  168. package/dist/components/Skeleton/Block.cjs +40 -0
  169. package/dist/components/Skeleton/Block.js +28 -20
  170. package/dist/components/Skeleton/Blocks.cjs +40 -0
  171. package/dist/components/Skeleton/Blocks.js +26 -16
  172. package/dist/components/Skeleton/BoxWithIcon.cjs +38 -0
  173. package/dist/components/Skeleton/BoxWithIcon.js +24 -17
  174. package/dist/components/Skeleton/Donut.cjs +63 -0
  175. package/dist/components/Skeleton/Donut.js +46 -21
  176. package/dist/components/Skeleton/IconSkeleton.cjs +24 -0
  177. package/dist/components/Skeleton/IconSkeleton.js +19 -9
  178. package/dist/components/Skeleton/Line.cjs +18 -0
  179. package/dist/components/Skeleton/Line.js +11 -8
  180. package/dist/components/Skeleton/List.cjs +58 -0
  181. package/dist/components/Skeleton/List.js +48 -21
  182. package/dist/components/Skeleton/Slider.cjs +42 -0
  183. package/dist/components/Skeleton/Slider.js +36 -22
  184. package/dist/components/Skeleton/Square.cjs +14 -0
  185. package/dist/components/Skeleton/Square.js +9 -7
  186. package/dist/components/Skeleton/index.cjs +81 -0
  187. package/dist/components/Skeleton/index.js +38 -45
  188. package/dist/components/Snippet/index.cjs +184 -0
  189. package/dist/components/Snippet/index.js +139 -128
  190. package/dist/components/Stack/index.cjs +31 -0
  191. package/dist/components/Stack/index.js +10 -17
  192. package/dist/components/Status/index.cjs +74 -0
  193. package/dist/components/Status/index.js +42 -27
  194. package/dist/components/StepList/index.cjs +60 -0
  195. package/dist/components/StepList/index.js +34 -45
  196. package/dist/components/Stepper/index.cjs +147 -0
  197. package/dist/components/Stepper/index.js +106 -114
  198. package/dist/components/SwitchButton/FocusOverlay.cjs +40 -0
  199. package/dist/components/SwitchButton/FocusOverlay.js +18 -27
  200. package/dist/components/SwitchButton/index.cjs +78 -0
  201. package/dist/components/SwitchButton/index.js +39 -103
  202. package/dist/components/Table/Body.cjs +7 -0
  203. package/dist/components/Table/Body.js +3 -1
  204. package/dist/components/Table/Cell.cjs +21 -0
  205. package/dist/components/Table/Cell.js +15 -6
  206. package/dist/components/Table/Header.cjs +18 -0
  207. package/dist/components/Table/Header.js +12 -5
  208. package/dist/components/Table/HeaderCell.cjs +82 -0
  209. package/dist/components/Table/HeaderCell.js +48 -91
  210. package/dist/components/Table/HeaderRow.cjs +23 -0
  211. package/dist/components/Table/HeaderRow.js +11 -13
  212. package/dist/components/Table/Row.cjs +82 -0
  213. package/dist/components/Table/Row.js +39 -44
  214. package/dist/components/Table/SelectBar.cjs +54 -0
  215. package/dist/components/Table/SelectBar.js +31 -14
  216. package/dist/components/Table/SkeletonRows.cjs +56 -0
  217. package/dist/components/Table/SkeletonRows.js +43 -11
  218. package/dist/components/Table/TableContext.cjs +88 -0
  219. package/dist/components/Table/TableContext.js +29 -44
  220. package/dist/components/Table/index.cjs +69 -0
  221. package/dist/components/Table/index.js +37 -51
  222. package/dist/components/Tabs/Tab.cjs +122 -0
  223. package/dist/components/Tabs/Tab.js +108 -158
  224. package/dist/components/Tabs/TabMenu.cjs +64 -0
  225. package/dist/components/Tabs/TabMenu.js +52 -53
  226. package/dist/components/Tabs/TabMenuItem.cjs +36 -0
  227. package/dist/components/Tabs/TabMenuItem.js +19 -24
  228. package/dist/components/Tabs/TabsContext.cjs +7 -0
  229. package/dist/components/Tabs/TabsContext.js +1 -3
  230. package/dist/components/Tabs/index.cjs +104 -0
  231. package/dist/components/Tabs/index.js +44 -79
  232. package/dist/components/Tag/index.cjs +147 -0
  233. package/dist/components/Tag/index.js +66 -75
  234. package/dist/components/TagInput/index.cjs +255 -0
  235. package/dist/components/TagInput/index.js +125 -188
  236. package/dist/components/TagList/index.cjs +100 -0
  237. package/dist/components/TagList/index.js +51 -56
  238. package/dist/components/Text/index.cjs +84 -0
  239. package/dist/components/Text/index.js +10 -35
  240. package/dist/components/TextArea/index.cjs +160 -0
  241. package/dist/components/TextArea/index.js +140 -208
  242. package/dist/components/TextInput/index.cjs +390 -0
  243. package/dist/components/TextInput/index.js +326 -411
  244. package/dist/components/TextInputV2/index.cjs +192 -0
  245. package/dist/components/TextInputV2/index.js +170 -294
  246. package/dist/components/TimeInput/index.cjs +28 -0
  247. package/dist/components/TimeInput/index.js +3 -174
  248. package/dist/components/Toaster/index.cjs +85 -0
  249. package/dist/components/Toaster/index.js +26 -74
  250. package/dist/components/Toaster/react-toastify.css.cjs +3 -0
  251. package/dist/components/Toggle/index.cjs +138 -0
  252. package/dist/components/Toggle/index.js +112 -172
  253. package/dist/components/ToggleGroup/index.cjs +98 -0
  254. package/dist/components/ToggleGroup/index.js +44 -35
  255. package/dist/components/Tooltip/index.cjs +42 -0
  256. package/dist/components/Tooltip/index.js +34 -41
  257. package/dist/components/VerificationCode/index.cjs +219 -0
  258. package/dist/components/VerificationCode/index.js +58 -63
  259. package/dist/helpers/isJSON.cjs +10 -0
  260. package/dist/helpers/legend.cjs +14 -0
  261. package/dist/helpers/legend.js +4 -4
  262. package/dist/helpers/recursivelyGetChildrenString.cjs +14 -0
  263. package/dist/hooks/useIsOverflowing.cjs +23 -0
  264. package/dist/index.cjs +196 -0
  265. package/dist/theme/index.cjs +34 -0
  266. package/dist/theme/index.js +10 -13
  267. package/dist/utils/animations.cjs +276 -0
  268. package/dist/utils/capitalize.cjs +3 -0
  269. package/dist/utils/ids.cjs +8 -0
  270. package/dist/utils/ids.js +3 -1
  271. package/dist/utils/normalize.cjs +36 -0
  272. package/dist/utils/responsive/Breakpoint.cjs +16 -0
  273. package/dist/utils/responsive/Breakpoint.js +8 -6
  274. package/dist/utils/responsive/utilities.cjs +15 -0
  275. package/package.json +23 -7
@@ -1,385 +1,297 @@
1
1
  import { jsx, Fragment, jsxs } from "@emotion/react/jsx-runtime";
2
+ import _styled from "@emotion/styled/base";
2
3
  import { css } from "@emotion/react";
3
- import styled from "@emotion/styled";
4
4
  import { forwardRef, useRef, useImperativeHandle, useMemo, useState, useId, useCallback, useEffect } from "react";
5
5
  import { createPortal } from "react-dom";
6
6
  import { animation, exitAnimation } from "./animations.js";
7
7
  import { ARROW_WIDTH, DEFAULT_POSITIONS, computePositions } from "./helpers.js";
8
+ function _EMOTION_STRINGIFIED_CSS_ERROR__() {
9
+ return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).";
10
+ }
8
11
  const DEFAULT_ANIMATION_DURATION = 230;
9
12
  const DEFAULT_DEBOUNCE_DURATION = 200;
10
13
  function noop() {
11
14
  }
12
- const StyledPopup = styled("div", {
13
- shouldForwardProp: (prop) => ![
14
- "maxWidth",
15
- "positions",
16
- "reverseAnimation",
17
- "maxHeight",
18
- "animationDuration",
19
- "isDialog"
20
- ].includes(prop)
21
- })`
22
- background: ${({ theme }) => theme.colors.neutral.backgroundStronger};
23
- color: ${({ theme }) => theme.colors.neutral.textStronger};
24
- border-radius: ${({ theme }) => theme.radii.default};
25
- padding: ${({ theme }) => `${theme.space["0.5"]} ${theme.space["1"]}`};
26
- text-align: center;
27
- position: absolute;
28
- max-width: ${({ maxWidth }) => typeof maxWidth === "number" ? `${maxWidth}px` : maxWidth};
29
- max-height: ${({ maxHeight }) => typeof maxHeight === "number" ? `${maxHeight}px` : maxHeight};
30
- overflow: ${({ maxHeight }) => maxHeight ? "auto" : void 0};
31
- overflow-wrap: break-word;
32
- font-size: 0.8rem;
33
- inset: 0 auto auto 0;
34
- top: 0;
35
- left: 0;
36
- opacity: 0;
37
- z-index: 1;
38
- transform: ${({ positions }) => positions.popupPosition};
39
- animation: ${({
15
+ const StyledPopup = /* @__PURE__ */ _styled("div", process.env.NODE_ENV === "production" ? {
16
+ shouldForwardProp: (prop) => !["maxWidth", "positions", "reverseAnimation", "maxHeight", "animationDuration", "isDialog"].includes(prop),
17
+ target: "e4h1g861"
18
+ } : {
19
+ shouldForwardProp: (prop) => !["maxWidth", "positions", "reverseAnimation", "maxHeight", "animationDuration", "isDialog"].includes(prop),
20
+ target: "e4h1g861",
21
+ label: "StyledPopup"
22
+ })("background:", ({
23
+ theme
24
+ }) => theme.colors.neutral.backgroundStronger, ";color:", ({
25
+ theme
26
+ }) => theme.colors.neutral.textStronger, ";border-radius:", ({
27
+ theme
28
+ }) => theme.radii.default, ";padding:", ({
29
+ theme
30
+ }) => `${theme.space["0.5"]} ${theme.space["1"]}`, ";text-align:center;position:absolute;max-width:", ({
31
+ maxWidth
32
+ }) => typeof maxWidth === "number" ? `${maxWidth}px` : maxWidth, ";max-height:", ({
33
+ maxHeight
34
+ }) => typeof maxHeight === "number" ? `${maxHeight}px` : maxHeight, ";overflow:", ({
35
+ maxHeight
36
+ }) => maxHeight ? "auto" : void 0, ";overflow-wrap:break-word;font-size:0.8rem;inset:0 auto auto 0;top:0;left:0;opacity:0;z-index:1;transform:", ({
37
+ positions
38
+ }) => positions.popupPosition, ";animation:", ({
40
39
  positions,
41
40
  reverseAnimation,
42
41
  maxHeight,
43
42
  animationDuration
44
- }) => maxHeight || animationDuration === 0 || animationDuration === void 0 ? void 0 : css`
45
- ${animationDuration}ms ${!reverseAnimation ? animation(positions) : exitAnimation(positions)} forwards
46
- `};
47
-
48
- &[data-has-arrow='true'] {
49
- &::after {
50
- content: ' ';
51
- position: absolute;
52
- top: ${({ positions }) => positions.arrowTop}px;
53
- left: ${({ positions }) => positions.arrowLeft}px;
54
- transform: ${({ positions }) => positions.arrowTransform}
55
- rotate(${({ positions }) => positions.rotate}deg);
56
- margin-left: -${ARROW_WIDTH}px;
57
- border-width: ${ARROW_WIDTH}px;
58
- border-style: solid;
59
- border-color: ${({ theme }) => theme.colors.neutral.backgroundStronger}
60
- transparent transparent transparent;
61
- pointer-events: none;
62
- }
63
- }
64
-
65
- &[data-visible-in-dom='false'] {
66
- display: none;
67
- }
68
- `;
69
- const StyledChildrenContainer = styled.div`
70
- display: inherit;
71
-
72
- &[data-container-full-width='true'] {
73
- width: 100%;
74
- }
75
- `;
76
- const Popup = forwardRef(
77
- ({
78
- children,
79
- text = "",
80
- placement = "auto",
81
- id,
82
- className,
83
- containerFullWidth,
84
- maxWidth = 232,
85
- maxHeight,
86
- visible,
87
- innerRef,
88
- role = "popup",
89
- "data-testid": dataTestId,
90
- hasArrow = true,
91
- onClose,
92
- tabIndex = 0,
93
- onKeyDown,
94
- "aria-haspopup": ariaHasPopup,
95
- hideOnClickOutside = false,
96
- debounceDelay = DEFAULT_DEBOUNCE_DURATION,
97
- disableAnimation = false,
98
- portalTarget,
99
- dynamicDomRendering = true
100
- }, ref) => {
101
- const childrenRef = useRef(null);
102
- useImperativeHandle(innerRef, () => childrenRef.current);
103
- const innerPopupRef = useRef(null);
104
- useImperativeHandle(ref, () => innerPopupRef.current);
105
- const timer = useRef();
106
- const popupPortalTarget = useMemo(() => {
107
- if (portalTarget)
108
- return portalTarget;
109
- if (role === "dialog") {
110
- if (childrenRef.current)
111
- return childrenRef.current;
112
- if (typeof window !== "undefined")
113
- return document.body;
114
- return null;
115
- }
116
- if (typeof window !== "undefined") {
43
+ }) => maxHeight || animationDuration === 0 || animationDuration === void 0 ? void 0 : /* @__PURE__ */ css(animationDuration, "ms ", !reverseAnimation ? animation(positions) : exitAnimation(positions), " forwards;" + (process.env.NODE_ENV === "production" ? "" : ";label:StyledPopup;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1BvcHVwL2luZGV4LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE4RVciLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvdWx0cmF2aW9sZXQvdWx0cmF2aW9sZXQvcGFja2FnZXMvdWkvc3JjL2NvbXBvbmVudHMvUG9wdXAvaW5kZXgudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCdcbmltcG9ydCB0eXBlIHtcbiAgSFRNTEF0dHJpYnV0ZXMsXG4gIEtleWJvYXJkRXZlbnRIYW5kbGVyLFxuICBNb3VzZUV2ZW50SGFuZGxlcixcbiAgUmVhY3ROb2RlLFxuICBSZWYsXG4gIFJlZk9iamVjdCxcbn0gZnJvbSAncmVhY3QnXG5pbXBvcnQge1xuICBmb3J3YXJkUmVmLFxuICB1c2VDYWxsYmFjayxcbiAgdXNlRWZmZWN0LFxuICB1c2VJZCxcbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZSxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgdHlwZSB7IFBvc2l0aW9uc1R5cGUgfSBmcm9tICcuL2FuaW1hdGlvbnMnXG5pbXBvcnQgeyBhbmltYXRpb24sIGV4aXRBbmltYXRpb24gfSBmcm9tICcuL2FuaW1hdGlvbnMnXG5pbXBvcnQgdHlwZSB7IFBvcHVwUGxhY2VtZW50IH0gZnJvbSAnLi9oZWxwZXJzJ1xuaW1wb3J0IHsgQVJST1dfV0lEVEgsIERFRkFVTFRfUE9TSVRJT05TLCBjb21wdXRlUG9zaXRpb25zIH0gZnJvbSAnLi9oZWxwZXJzJ1xuXG5jb25zdCBERUZBVUxUX0FOSU1BVElPTl9EVVJBVElPTiA9IDIzMCAvLyBpbiBtc1xuY29uc3QgREVGQVVMVF9ERUJPVU5DRV9EVVJBVElPTiA9IDIwMCAvLyBpbiBtc1xuXG5mdW5jdGlvbiBub29wKCkge31cblxudHlwZSBTdHlsZWRQb3B1cFByb3BzID0ge1xuICBtYXhXaWR0aDogbnVtYmVyIHwgc3RyaW5nXG4gIHBvc2l0aW9uczogUG9zaXRpb25zVHlwZVxuICByZXZlcnNlQW5pbWF0aW9uOiBib29sZWFuXG4gIG1heEhlaWdodD86IG51bWJlciB8IHN0cmluZ1xuICBhbmltYXRpb25EdXJhdGlvbj86IG51bWJlclxuICBpc0RpYWxvZzogYm9vbGVhblxufVxuXG5jb25zdCBTdHlsZWRQb3B1cCA9IHN0eWxlZCgnZGl2Jywge1xuICBzaG91bGRGb3J3YXJkUHJvcDogcHJvcCA9PlxuICAgICFbXG4gICAgICAnbWF4V2lkdGgnLFxuICAgICAgJ3Bvc2l0aW9ucycsXG4gICAgICAncmV2ZXJzZUFuaW1hdGlvbicsXG4gICAgICAnbWF4SGVpZ2h0JyxcbiAgICAgICdhbmltYXRpb25EdXJhdGlvbicsXG4gICAgICAnaXNEaWFsb2cnLFxuICAgIF0uaW5jbHVkZXMocHJvcCksXG59KTxTdHlsZWRQb3B1cFByb3BzPmBcbiAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kU3Ryb25nZXJ9O1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0U3Ryb25nZXJ9O1xuICBib3JkZXItcmFkaXVzOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnJhZGlpLmRlZmF1bHR9O1xuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IGAke3RoZW1lLnNwYWNlWycwLjUnXX0gJHt0aGVtZS5zcGFjZVsnMSddfWB9O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbWF4LXdpZHRoOiAkeyh7IG1heFdpZHRoIH0pID0+XG4gICAgdHlwZW9mIG1heFdpZHRoID09PSAnbnVtYmVyJyA/IGAke21heFdpZHRofXB4YCA6IG1heFdpZHRofTtcbiAgbWF4LWhlaWdodDogJHsoeyBtYXhIZWlnaHQgfSkgPT5cbiAgICB0eXBlb2YgbWF4SGVpZ2h0ID09PSAnbnVtYmVyJyA/IGAke21heEhlaWdodH1weGAgOiBtYXhIZWlnaHR9O1xuICBvdmVyZmxvdzogJHsoeyBtYXhIZWlnaHQgfSkgPT4gKG1heEhlaWdodCA/ICdhdXRvJyA6IHVuZGVmaW5lZCl9O1xuICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xuICBmb250LXNpemU6IDAuOHJlbTtcbiAgaW5zZXQ6IDAgYXV0byBhdXRvIDA7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgb3BhY2l0eTogMDtcbiAgei1pbmRleDogMTtcbiAgdHJhbnNmb3JtOiAkeyh7IHBvc2l0aW9ucyB9KSA9PiBwb3NpdGlvbnMucG9wdXBQb3NpdGlvbn07XG4gIGFuaW1hdGlvbjogJHsoe1xuICAgIHBvc2l0aW9ucyxcbiAgICByZXZlcnNlQW5pbWF0aW9uLFxuICAgIG1heEhlaWdodCxcbiAgICBhbmltYXRpb25EdXJhdGlvbixcbiAgfSkgPT5cbiAgICBtYXhIZWlnaHQgfHwgYW5pbWF0aW9uRHVyYXRpb24gPT09IDAgfHwgYW5pbWF0aW9uRHVyYXRpb24gPT09IHVuZGVmaW5lZFxuICAgICAgPyB1bmRlZmluZWRcbiAgICAgIDogY3NzYFxuICAgICAgICAgICR7YW5pbWF0aW9uRHVyYXRpb259bXMgJHshcmV2ZXJzZUFuaW1hdGlvblxuICAgICAgICAgICAgPyBhbmltYXRpb24ocG9zaXRpb25zKVxuICAgICAgICAgICAgOiBleGl0QW5pbWF0aW9uKHBvc2l0aW9ucyl9IGZvcndhcmRzXG4gICAgICAgIGB9O1xuXG4gICZbZGF0YS1oYXMtYXJyb3c9J3RydWUnXSB7XG4gICAgJjo6YWZ0ZXIge1xuICAgICAgY29udGVudDogJyAnO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAkeyh7IHBvc2l0aW9ucyB9KSA9PiBwb3NpdGlvbnMuYXJyb3dUb3B9cHg7XG4gICAgICBsZWZ0OiAkeyh7IHBvc2l0aW9ucyB9KSA9PiBwb3NpdGlvbnMuYXJyb3dMZWZ0fXB4O1xuICAgICAgdHJhbnNmb3JtOiAkeyh7IHBvc2l0aW9ucyB9KSA9PiBwb3NpdGlvbnMuYXJyb3dUcmFuc2Zvcm19XG4gICAgICAgIHJvdGF0ZSgkeyh7IHBvc2l0aW9ucyB9KSA9PiBwb3NpdGlvbnMucm90YXRlfWRlZyk7XG4gICAgICBtYXJnaW4tbGVmdDogLSR7QVJST1dfV0lEVEh9cHg7XG4gICAgICBib3JkZXItd2lkdGg6ICR7QVJST1dfV0lEVEh9cHg7XG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgICAgYm9yZGVyLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRTdHJvbmdlcn1cbiAgICAgICAgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB9XG4gIH1cblxuICAmW2RhdGEtdmlzaWJsZS1pbi1kb209J2ZhbHNlJ10ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbmBcblxuY29uc3QgU3R5bGVkQ2hpbGRyZW5Db250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBpbmhlcml0O1xuXG4gICZbZGF0YS1jb250YWluZXItZnVsbC13aWR0aD0ndHJ1ZSddIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuYFxuXG50eXBlIFBvcHVwUHJvcHMgPSB7XG4gIC8qKlxuICAgKiBJZCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBpZiBub3Qgc2V0LiBJdCBpcyB1c2VkIGZvciBhc3NvY2lhdGluZyBwb3B1cCB3cmFwcGVyIHdpdGggcG9wdXAgcG9ydGFsLlxuICAgKi9cbiAgaWQ/OiBzdHJpbmdcbiAgY2hpbGRyZW46XG4gICAgfCBSZWFjdE5vZGVcbiAgICB8ICgocmVuZGVyUHJvcHM6IHtcbiAgICAgICAgY2xhc3NOYW1lPzogc3RyaW5nXG4gICAgICAgIG9uQmx1cjogKCkgPT4gdm9pZFxuICAgICAgICBvbkZvY3VzOiAoKSA9PiB2b2lkXG4gICAgICAgIG9uUG9pbnRlckVudGVyOiAoKSA9PiB2b2lkXG4gICAgICAgIG9uUG9pbnRlckxlYXZlOiAoKSA9PiB2b2lkXG4gICAgICAgIHJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PlxuICAgICAgfSkgPT4gUmVhY3ROb2RlKVxuICBtYXhXaWR0aD86IG51bWJlciB8IHN0cmluZ1xuICAvKipcbiAgICogYGF1dG9gIHBsYWNlbWVudCB3aWxsIGNoYW5nZSB0aGUgcG9zaXRpb24gb2YgdGhlIHBvcHVwIGlmIGl0IGRvZXNuJ3QgZml0IGluIHRoZSB2aWV3cG9ydC5cbiAgICovXG4gIHBsYWNlbWVudD86IFBvcHVwUGxhY2VtZW50XG4gIC8qKlxuICAgKiBDb250ZW50IG9mIHRoZSBwb3B1cCwgcHJlZmVyYWJseSB0ZXh0IGluc2lkZS5cbiAgICovXG4gIHRleHQ/OiBSZWFjdE5vZGVcbiAgY2xhc3NOYW1lPzogc3RyaW5nXG4gIC8qKlxuICAgKiBJdCB3aWxsIGFkZCBgd2lkdGg6IDEwMCVgIHRvIHRoZSBwb3B1cCBjb250YWluZXIuXG4gICAqL1xuICBjb250YWluZXJGdWxsV2lkdGg/OiBib29sZWFuXG4gIC8qKlxuICAgKiBJdCB3aWxsIGZvcmNlIGRpc3BsYXkgcG9wdXAuIFRoaXMgY2FuIGJlIHVzZWZ1bCBpZiB5b3UgbmVlZCB0byBhbHdheXMgZGlzcGxheSB0aGUgcG9wdXAgd2l0aG91dCBob3ZlciBuZWVkZWQuXG4gICAqL1xuICB2aXNpYmxlPzogYm9vbGVhblxuICBpbm5lclJlZj86IFJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+XG4gIHJvbGU/OiBzdHJpbmdcbiAgJ2RhdGEtdGVzdGlkJz86IHN0cmluZ1xuICBoYXNBcnJvdz86IGJvb2xlYW5cbiAgb25DbG9zZT86ICgpID0+IHZvaWRcbiAgdGFiSW5kZXg/OiBudW1iZXJcbiAgb25LZXlEb3duPzogS2V5Ym9hcmRFdmVudEhhbmRsZXJcbiAgJ2FyaWEtaGFzcG9wdXAnPzogSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+WydhcmlhLWhhc3BvcHVwJ11cbiAgaGlkZU9uQ2xpY2tPdXRzaWRlPzogYm9vbGVhblxuICAvKipcbiAgICogSWYgeW91IHNldCBkZWJvdW5jZVRpbWUgdG8gZmFsc2UsIHRoZSBwb3B1cCB3aWxsIG5vdCBkZWJvdW5jZSB0aGUgaG92ZXIgZXZlbnQgYW5kIHdpbGwgYmUgZGlzcGxheWVkIGluc3RhbnRseS5cbiAgICogSWYgc2V0IHRvIDAgaXQgd2lsbCBkaXNhYmxlIGRlYm91bmNlLlxuICAgKi9cbiAgZGVib3VuY2VEZWxheT86IG51bWJlclxuICAvKipcbiAgICogSWYgeW91IHNldCBhIG1heCBoZWlnaHQga2VlcCBpbiBtaW5kIHRoYXQgdGhlIGFuaW1hdGlvbiBpcyBkaXNhYmxlZCwgb3IgaXQgd2lsbCBub3Qgd29yayBwcm9wZXJseSBvbiBzb21lIGJyb3dzZXJzLlxuICAgKi9cbiAgbWF4SGVpZ2h0Pzogc3RyaW5nIHwgbnVtYmVyXG4gIC8qKlxuICAgKiBXaWxsIHJlbW92ZSB0aGUgYW5pbWF0aW9uIG9uIHRoZSBwb3B1cCBpZiBzZXQgdG8gZmFsc2UuXG4gICAqL1xuICBkaXNhYmxlQW5pbWF0aW9uPzogYm9vbGVhblxuICAvKipcbiAgICogQnkgZGVmYXVsdCwgdGhlIHBvcnRhbCB0YXJnZXQgaXMgY2hpbGRyZW4gY29udGFpbmVyIG9yIGRvY3VtZW50LmJvZHkgaWYgY2hpbGRyZW4gaXMgYSBmdW5jdGlvbi4gWW91IGNhbiBvdmVycmlkZSB0aGlzXG4gICAqIGJlaGF2aW9yIGJ5IHNldHRpbmcgYSBwb3J0YWxUYXJnZXQgcHJvcC5cbiAgICovXG4gIHBvcnRhbFRhcmdldD86IEhUTUxFbGVtZW50XG4gIC8qKlxuICAgKiBJZiB5b3Ugc2V0IHRoaXMgdG8gdHJ1ZSwgdGhlIHBvcHVwIHdpbGwgYmUgcmVuZGVyZWQgaW4gdGhlIERPTSBvbmx5IHdoZW4gaXQgaXMgdmlzaWJsZS5cbiAgICogV2hlbiBzZXQgdG8gZmFsc2UsIHRoZSBwb3B1cCB3aWxsIGFsd2F5cyBiZSByZW5kZXJlZCBpbiB0aGUgRE9NLiBCeSBkZWZhdWx0IHRoaXMgdmFsdWUgaXMgc2V0IHRvIGB0cnVlYCwgaWYgZm9yIHNvbWVcbiAgICogcmVhc29uIHlvdSBuZWVkIHRvIGRpc2FibGUgaXQsIHlvdSBjYW4gc2V0IGl0IHRvIGBmYWxzZWAuXG4gICAqL1xuICBkeW5hbWljRG9tUmVuZGVyaW5nPzogYm9vbGVhblxufVxuXG4vKipcbiAqIEBleHBlcmltZW50YWwgVGhpcyBjb21wb25lbnQgaXMgZXhwZXJpbWVudGFsIGFuZCBtYXkgYmUgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIHRoZSBmdXR1cmUuXG4gKi9cbmV4cG9ydCBjb25zdCBQb3B1cCA9IGZvcndhcmRSZWYoXG4gIChcbiAgICB7XG4gICAgICBjaGlsZHJlbixcbiAgICAgIHRleHQgPSAnJyxcbiAgICAgIHBsYWNlbWVudCA9ICdhdXRvJyxcbiAgICAgIGlkLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29udGFpbmVyRnVsbFdpZHRoLFxuICAgICAgbWF4V2lkdGggPSAyMzIsXG4gICAgICBtYXhIZWlnaHQsXG4gICAgICB2aXNpYmxlLFxuICAgICAgaW5uZXJSZWYsXG4gICAgICByb2xlID0gJ3BvcHVwJyxcbiAgICAgICdkYXRhLXRlc3RpZCc6IGRhdGFUZXN0SWQsXG4gICAgICBoYXNBcnJvdyA9IHRydWUsXG4gICAgICBvbkNsb3NlLFxuICAgICAgdGFiSW5kZXggPSAwLFxuICAgICAgb25LZXlEb3duLFxuICAgICAgJ2FyaWEtaGFzcG9wdXAnOiBhcmlhSGFzUG9wdXAsXG4gICAgICBoaWRlT25DbGlja091dHNpZGUgPSBmYWxzZSxcbiAgICAgIGRlYm91bmNlRGVsYXkgPSBERUZBVUxUX0RFQk9VTkNFX0RVUkFUSU9OLFxuICAgICAgZGlzYWJsZUFuaW1hdGlvbiA9IGZhbHNlLFxuICAgICAgcG9ydGFsVGFyZ2V0LFxuICAgICAgZHluYW1pY0RvbVJlbmRlcmluZyA9IHRydWUsXG4gICAgfTogUG9wdXBQcm9wcyxcbiAgICByZWY6IFJlZjxIVE1MRGl2RWxlbWVudD4sXG4gICkgPT4ge1xuICAgIGNvbnN0IGNoaWxkcmVuUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICAgIHVzZUltcGVyYXRpdmVIYW5kbGUoaW5uZXJSZWYsICgpID0+IGNoaWxkcmVuUmVmLmN1cnJlbnQpXG5cbiAgICBjb25zdCBpbm5lclBvcHVwUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICAgIHVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCAoKSA9PiBpbm5lclBvcHVwUmVmLmN1cnJlbnQgYXMgSFRNTERpdkVsZW1lbnQpXG5cbiAgICBjb25zdCB0aW1lciA9IHVzZVJlZjxSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZD4oKVxuICAgIGNvbnN0IHBvcHVwUG9ydGFsVGFyZ2V0ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICBpZiAocG9ydGFsVGFyZ2V0KSByZXR1cm4gcG9ydGFsVGFyZ2V0XG5cbiAgICAgIGlmIChyb2xlID09PSAnZGlhbG9nJykge1xuICAgICAgICBpZiAoY2hpbGRyZW5SZWYuY3VycmVudCkgcmV0dXJuIGNoaWxkcmVuUmVmLmN1cnJlbnRcbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSByZXR1cm4gZG9jdW1lbnQuYm9keVxuXG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG5cbiAgICAgIC8vIFdlIGNoZWNrIGlmIHdpbmRvdyBleGlzdHMgZm9yIFNTUlxuICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybiBkb2N1bWVudC5ib2R5XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBudWxsXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gICAgfSwgW3BvcnRhbFRhcmdldCwgcm9sZSwgY2hpbGRyZW5SZWYuY3VycmVudF0pXG5cbiAgICAvLyBUaGVyZSBhcmUgc29tZSBpc3N1ZSB3aGVuIG1peGluZyBhbmltYXRpb24gYW5kIG1heEhlaWdodCBvbiBzb21lIGJyb3dzZXJzLCBzbyB3ZSBkaXNhYmxlIGFuaW1hdGlvbiBpZiBtYXhIZWlnaHQgaXMgc2V0LlxuICAgIGNvbnN0IGFuaW1hdGlvbkR1cmF0aW9uID1cbiAgICAgIGRpc2FibGVBbmltYXRpb24gfHwgbWF4SGVpZ2h0ID8gMCA6IERFRkFVTFRfQU5JTUFUSU9OX0RVUkFUSU9OXG5cbiAgICAvLyBEZWJvdW5jZSB0aW1lciB3aWxsIGJlIHVzZWQgdG8gcHJldmVudCB0aGUgcG9wdXAgZnJvbSBmbGlja2VyaW5nIHdoZW4gdGhlIHVzZXIgbW92ZXMgdGhlIG1vdXNlIG91dCBhbmQgaW4gdGhlIGNoaWxkcmVuIGVsZW1lbnQuXG4gICAgY29uc3QgZGVib3VuY2VUaW1lciA9IHVzZVJlZjxSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZD4oKVxuICAgIGNvbnN0IFt2aXNpYmxlSW5Eb20sIHNldFZpc2libGVJbkRvbV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgICBjb25zdCBbcmV2ZXJzZUFuaW1hdGlvbiwgc2V0UmV2ZXJzZUFuaW1hdGlvbl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgICBjb25zdCBbcG9zaXRpb25zLCBzZXRQb3NpdGlvbnNdID0gdXNlU3RhdGU8UG9zaXRpb25zVHlwZT4oe1xuICAgICAgLi4uREVGQVVMVF9QT1NJVElPTlMsXG4gICAgfSlcbiAgICBjb25zdCB1bmlxdWVJZCA9IHVzZUlkKClcbiAgICBjb25zdCBnZW5lcmF0ZWRJZCA9IGlkID8/IHVuaXF1ZUlkXG4gICAgY29uc3QgaXNDb250cm9sbGVkID0gdmlzaWJsZSAhPT0gdW5kZWZpbmVkXG5cbiAgICBjb25zdCBnZW5lcmF0ZVBvcHVwUG9zaXRpb25zID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKGNoaWxkcmVuUmVmLmN1cnJlbnQgJiYgaW5uZXJQb3B1cFJlZi5jdXJyZW50KSB7XG4gICAgICAgIHNldFBvc2l0aW9ucyhcbiAgICAgICAgICBjb21wdXRlUG9zaXRpb25zKHtcbiAgICAgICAgICAgIGNoaWxkcmVuUmVmLFxuICAgICAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICAgICAgcG9wdXBSZWY6IGlubmVyUG9wdXBSZWYsXG4gICAgICAgICAgICBwb3B1cFBvcnRhbFRhcmdldDogcG9wdXBQb3J0YWxUYXJnZXQgYXMgSFRNTEVsZW1lbnQsXG4gICAgICAgICAgfSksXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9LCBbcGxhY2VtZW50LCBwb3B1cFBvcnRhbFRhcmdldF0pXG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHdlIG5lZWQgdG8gcmVjb21wdXRlIHBvc2l0aW9ucyBvZiBwb3B1cCBkdWUgdG8gd2luZG93IHNjcm9sbCBvciByZXNpemUuXG4gICAgICovXG4gICAgY29uc3Qgb25XaW5kb3dDaGFuZ2VEZXRlY3RlZCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIC8vIFdlIHJlbW92ZSBhbmltYXRpb24gb24gc2Nyb2xsIG9yIHRoZSBhbmltYXRpb24gd2lsbCByZXN0YXJ0IG9uIGV2ZXJ5IHNjcm9sbFxuICAgICAgaWYgKGlubmVyUG9wdXBSZWYuY3VycmVudCkge1xuICAgICAgICBpbm5lclBvcHVwUmVmLmN1cnJlbnQuc3R5bGUuYW5pbWF0aW9uID0gJ25vbmUnXG4gICAgICB9XG5cbiAgICAgIGdlbmVyYXRlUG9wdXBQb3NpdGlvbnMoKVxuICAgIH0sIFtnZW5lcmF0ZVBvcHVwUG9zaXRpb25zLCBpbm5lclBvcHVwUmVmXSlcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gd2UgbmVlZCB0byByZW1vdmUgcG9wdXAgcG9ydGFsIGZyb20gRE9NIGFuZCByZW1vdmUgZXZlbnQgbGlzdGVuZXIgdG8gaXQuXG4gICAgICovXG4gICAgY29uc3QgdW5tb3VudFBvcHVwRnJvbURvbSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIHNldFZpc2libGVJbkRvbShmYWxzZSlcbiAgICAgIHNldFJldmVyc2VBbmltYXRpb24oZmFsc2UpXG5cbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBvbldpbmRvd0NoYW5nZURldGVjdGVkLCB0cnVlKVxuICAgIH0sIFtvbldpbmRvd0NoYW5nZURldGVjdGVkXSlcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gd2UgbmVlZCB0byBoaWRlIHBvcHVwLiBBIHRpbWVvdXQgaXMgc2V0IHRvIGFsbG93IGFuaW1hdGlvbiBlbmQsIHRoZW4gcmVtb3ZlXG4gICAgICogcG9wdXAgZnJvbSBkb20uXG4gICAgICovXG4gICAgY29uc3QgY2xvc2VQb3B1cCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIGRlYm91bmNlVGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICBzZXRSZXZlcnNlQW5pbWF0aW9uKHRydWUpXG4gICAgICAgICAgdGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdW5tb3VudFBvcHVwRnJvbURvbSgpXG4gICAgICAgICAgICBvbkNsb3NlPy4oKVxuICAgICAgICAgIH0sIGFuaW1hdGlvbkR1cmF0aW9uKVxuICAgICAgICB9LFxuICAgICAgICBkZWJvdW5jZURlbGF5ICYmICFkaXNhYmxlQW5pbWF0aW9uID8gZGVib3VuY2VEZWxheSA6IDAsXG4gICAgICApXG4gICAgfSwgW1xuICAgICAgYW5pbWF0aW9uRHVyYXRpb24sXG4gICAgICBkaXNhYmxlQW5pbWF0aW9uLFxuICAgICAgZGVib3VuY2VEZWxheSxcbiAgICAgIG9uQ2xvc2UsXG4gICAgICB1bm1vdW50UG9wdXBGcm9tRG9tLFxuICAgIF0pXG5cbiAgICAvKipcbiAgICAgKiBXaGVuIG1vdXNlIGhvdmVyIG9yIHN0b3AgaG92ZXJpbmcgY2hpbGRyZW4gdGhpcyBmdW5jdGlvbiBkaXNwbGF5IG9yIGhpZGUgcG9wdXAuIEEgdGltZW91dCBpcyBzZXQgdG8gYWxsb3cgYW5pbWF0aW9uXG4gICAgICogZW5kLCB0aGVuIHJlbW92ZSBwb3B1cCBmcm9tIGRvbS5cbiAgICAgKi9cbiAgICBjb25zdCBvblBvaW50ZXJFdmVudCA9IHVzZUNhbGxiYWNrKFxuICAgICAgKGlzVmlzaWJsZTogYm9vbGVhbikgPT4gKCkgPT4ge1xuICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIGRlYm91bmNlRGVsYXkgYW5kIHRoZSBwb3B1cCBpcyBub3QgdmlzaWJsZSwgd2UgY2xlYXIgdGhlIGRlYm91bmNlIHRpbWVyXG4gICAgICAgIGlmICghdmlzaWJsZSAmJiBkZWJvdW5jZURlbGF5ID4gMCAmJiBkZWJvdW5jZVRpbWVyLmN1cnJlbnQpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQoZGVib3VuY2VUaW1lci5jdXJyZW50KVxuICAgICAgICAgIGRlYm91bmNlVGltZXIuY3VycmVudCA9IHVuZGVmaW5lZFxuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhpcyBjb25kaXRpb24gaXMgZm9yIHdoZW4gd2Ugd2FudCB0byB1bm1vdW50IHRoZSBwb3B1cFxuICAgICAgICAvLyBUaGVyZSBpcyBkZWJvdW5jZSBpbiBvcmRlciB0byBhdm9pZCBwb3B1cCB0byBmbGlja2VyIHdoZW4gd2UgbW92ZSB0aGUgbW91c2UgZnJvbSBjaGlsZHJlbiB0byBwb3B1cFxuICAgICAgICAvLyBUaW1lciBpcyB1c2VkIHRvIGZvbGxvdyB0aGUgYW5pbWF0aW9uIGR1cmF0aW9uXG4gICAgICAgIGlmICghaXNWaXNpYmxlICYmIGlubmVyUG9wdXBSZWYuY3VycmVudCAmJiAhZGVib3VuY2VUaW1lci5jdXJyZW50KSB7XG4gICAgICAgICAgY2xvc2VQb3B1cCgpXG4gICAgICAgIH0gZWxzZSBpZiAoaXNWaXNpYmxlKSB7XG4gICAgICAgICAgLy8gVGhpcyBjb25kaXRpb24gaXMgZm9yIHdoZW4gd2Ugd2FudCB0byBtb3VudCB0aGUgcG9wdXBcbiAgICAgICAgICAvLyBJZiB0aGUgdGltZXIgZXhpc3RzIGl0IG1lYW5zIHRoZSBwb3B1cCB3YXMgYWJvdXQgdG8gdW1vdW50LCBidXQgd2UgaG92ZXJlZCB0aGUgY2hpbGRyZW4gYWdhaW4sXG4gICAgICAgICAgLy8gc28gd2UgY2xlYXIgdGhlIHRpbWVyIGFuZCB0aGUgcG9wdXAgd2lsbCBub3QgYmUgdW5tb3VudGVkXG4gICAgICAgICAgaWYgKHRpbWVyLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHNldFJldmVyc2VBbmltYXRpb24oZmFsc2UpXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXIuY3VycmVudClcbiAgICAgICAgICAgIHRpbWVyLmN1cnJlbnQgPSB1bmRlZmluZWRcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gQW5kIGhlcmUgaXMgd2hlbiB3ZSBjdXJyZW50bHkgYXJlIGluIGEgZGVib3VuY2UgdGltZXIsIGl0IG1lYW5zIHBvcHVwIHdhcyBob3ZlcmVkIGR1cmluZ1xuICAgICAgICAgIC8vIHRoYXQgcGVyaW9kLCBhbmQgc28gd2UgY2FuIGNsZWFyIGRlYm91bmNlIHRpbWVyXG4gICAgICAgICAgaWYgKGRlYm91bmNlVGltZXIuY3VycmVudCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGRlYm91bmNlVGltZXIuY3VycmVudClcbiAgICAgICAgICAgIGRlYm91bmNlVGltZXIuY3VycmVudCA9IHVuZGVmaW5lZFxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZGVib3VuY2VEZWxheSA+IDApIHtcbiAgICAgICAgICAgIGRlYm91bmNlVGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICBzZXRWaXNpYmxlSW5Eb20odHJ1ZSlcbiAgICAgICAgICAgIH0sIGRlYm91bmNlRGVsYXkpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNldFZpc2libGVJbkRvbSh0cnVlKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFtjbG9zZVBvcHVwLCBkZWJvdW5jZURlbGF5LCB2aXNpYmxlXSxcbiAgICApXG5cbiAgICAvKipcbiAgICAgKiBPbmNlIHBvcHVwIGlzIHZpc2libGUgaW4gdGhlIGRvbSB3ZSBjYW4gY29tcHV0ZSBwb3NpdGlvbnMsIHRoZW4gc2V0IGl0IHZpc2libGUgb24gc2NyZWVuIGFuZCBhZGQgZXZlbnQgdG9cbiAgICAgKiByZWNvbXB1dGUgcG9zaXRpb25zIG9uIHNjcm9sbCBvciBzY3JlZW4gcmVzaXplLlxuICAgICAqL1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodmlzaWJsZUluRG9tKSB7XG4gICAgICAgIGdlbmVyYXRlUG9wdXBQb3NpdGlvbnMoKVxuXG4gICAgICAgIGlmIChwb3B1cFBvcnRhbFRhcmdldCA9PT0gZG9jdW1lbnQuYm9keSkge1xuICAgICAgICAgIC8vIFdlIHdhbnQgdG8gZGV0ZWN0IHNjcm9sbCBhbmQgcmVzaXplIGluIG9yZGVyIHRvIHJlY29tcHV0ZSBwb3NpdGlvbnMgb2YgcG9wdXBcbiAgICAgICAgICAvLyBBZGRpbmcgdHJ1ZSBhcyB0aGlyZCBwYXJhbWV0ZXIgdG8gZXZlbnQgbGlzdGVuZXIgd2lsbCBkZXRlY3QgbmVzdGVkIHNjcm9sbHMuXG4gICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uV2luZG93Q2hhbmdlRGV0ZWN0ZWQsIHRydWUpXG4gICAgICAgIH1cbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG9uV2luZG93Q2hhbmdlRGV0ZWN0ZWQsIHRydWUpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBvbldpbmRvd0NoYW5nZURldGVjdGVkLCB0cnVlKVxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgb25XaW5kb3dDaGFuZ2VEZXRlY3RlZCwgdHJ1ZSlcbiAgICAgICAgaWYgKHRpbWVyLmN1cnJlbnQpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXIuY3VycmVudClcbiAgICAgICAgICB0aW1lci5jdXJyZW50ID0gdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBbXG4gICAgICBnZW5lcmF0ZVBvcHVwUG9zaXRpb25zLFxuICAgICAgb25XaW5kb3dDaGFuZ2VEZXRlY3RlZCxcbiAgICAgIHZpc2libGVJbkRvbSxcbiAgICAgIG1heFdpZHRoLFxuICAgICAgcG9wdXBQb3J0YWxUYXJnZXQsXG4gICAgXSlcblxuICAgIC8vIFRoaXMgd2lsbCBiZSB0cmlnZ2VyZWQgd2hlbiBwb3NpdGlvbnMgYXJlIGNvbXB1dGVkIGFuZCBwb3B1cCBpcyB2aXNpYmxlIGluIHRoZSBkb20uXG4gICAgdXNlRWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAodmlzaWJsZUluRG9tICYmIGlubmVyUG9wdXBSZWYuY3VycmVudCkge1xuICAgICAgICAgIGlubmVyUG9wdXBSZWYuY3VycmVudC5zdHlsZS5vcGFjaXR5ID0gJzEnXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gICAgICBbcG9zaXRpb25zXSxcbiAgICApXG5cbiAgICAvKipcbiAgICAgKiBJZiBwb3B1cCBoYXMgYHZpc2libGVgIHByb3AgaXQgbWVhbnMgdGhlIHBvcHVwIGlzIG1hbnVhbGx5IGNvbnRyb2xsZWQgdGhyb3VnaCB0aGlzIHByb3AuXG4gICAgICogSW4gdGhpcyBjYXMgd2UgZG9uJ3Qgd2FudCB0byBkaXNwbGF5IHBvcHVwIG9uIGhvdmVyLCBidXQgb25seSB3aGVuIGB2aXNpYmxlYCBpcyB0cnVlLlxuICAgICAqL1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoaXNDb250cm9sbGVkKSB7XG4gICAgICAgIG9uUG9pbnRlckV2ZW50KHZpc2libGUpKClcbiAgICAgIH1cbiAgICB9LCBbaXNDb250cm9sbGVkLCBvblBvaW50ZXJFdmVudCwgdmlzaWJsZV0pXG5cbiAgICAvLyBIYW5kbGUgaGlkZSBvbiBlc2MgcHJlc3MgYW5kIGhpZGUgb24gY2xpY2sgb3V0c2lkZVxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBoYW5kbGVFc2NQcmVzcyA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgIGNsb3NlUG9wdXAoKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGhhbmRsZUNsaWNrT3V0c2lkZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBwb3B1cEN1cnJlbnQgPSBpbm5lclBvcHVwUmVmLmN1cnJlbnRcbiAgICAgICAgY29uc3QgY2hpbGRyZW5DdXJyZW50ID0gY2hpbGRyZW5SZWYuY3VycmVudFxuXG4gICAgICAgIGlmIChwb3B1cEN1cnJlbnQgJiYgaGlkZU9uQ2xpY2tPdXRzaWRlICYmICFldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZXZlbnQudGFyZ2V0ICYmXG4gICAgICAgICAgICBldmVudC50YXJnZXQgIT09IHBvcHVwQ3VycmVudCAmJlxuICAgICAgICAgICAgZXZlbnQudGFyZ2V0ICE9PSBjaGlsZHJlbkN1cnJlbnQgJiZcbiAgICAgICAgICAgICFjaGlsZHJlbkN1cnJlbnQ/LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICAgIXBvcHVwQ3VycmVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICBjbG9zZVBvcHVwKClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh2aXNpYmxlSW5Eb20pIHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIGhhbmRsZUVzY1ByZXNzKVxuICAgICAgICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleXVwJywgaGFuZGxlRXNjUHJlc3MpXG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVDbGlja091dHNpZGUpXG4gICAgICB9XG4gICAgfSwgW1xuICAgICAgY2xvc2VQb3B1cCxcbiAgICAgIHZpc2libGVJbkRvbSxcbiAgICAgIGlubmVyUG9wdXBSZWYsXG4gICAgICBjaGlsZHJlblJlZixcbiAgICAgIGhpZGVPbkNsaWNrT3V0c2lkZSxcbiAgICBdKVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBldmVudCB3aWxsIG9jY3VyIG9ubHkgZm9yIGRpYWxvZyBhbmQgd2lsbCB0cmFwIGZvY3VzIGluc2lkZSB0aGUgZGlhbG9nLlxuICAgICAqL1xuICAgIGNvbnN0IGhhbmRsZUZvY3VzVHJhcDogS2V5Ym9hcmRFdmVudEhhbmRsZXIgPSB1c2VDYWxsYmFjayhldmVudCA9PiB7XG4gICAgICBjb25zdCBpc1RhYlByZXNzZWQgPSBldmVudC5rZXkgPT09ICdUYWInXG4gICAgICBpZiAoIWlzVGFiUHJlc3NlZCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG5cbiAgICAgIGNvbnN0IGZvY3VzYWJsZUVscyA9XG4gICAgICAgIGlubmVyUG9wdXBSZWYuY3VycmVudD8ucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgICAnYVtocmVmXTpub3QoW2Rpc2FibGVkXSksIGJ1dHRvbjpub3QoW2Rpc2FibGVkXSksIHRleHRhcmVhOm5vdChbZGlzYWJsZWRdKSwgaW5wdXQ6bm90KFtkaXNhYmxlZF0pLCBzZWxlY3Q6bm90KFtkaXNhYmxlZF0pJyxcbiAgICAgICAgKSA/PyBbXVxuXG4gICAgICAvLyBIYW5kbGUgY2FzZSB3aGVuIG5vIGludGVyYWN0aXZlIGVsZW1lbnQgYXJlIHdpdGhpbiB0aGUgbW9kYWwgKGluY2x1ZGluZyBjbG9zZSBpY29uKVxuICAgICAgaWYgKGZvY3VzYWJsZUVscy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBmaXJzdEZvY3VzYWJsZUVsID0gZm9jdXNhYmxlRWxzWzBdIGFzIEhUTUxFbGVtZW50XG4gICAgICBjb25zdCBsYXN0Rm9jdXNhYmxlRWwgPSBmb2N1c2FibGVFbHNbXG4gICAgICAgIGZvY3VzYWJsZUVscy5sZW5ndGggLSAxXG4gICAgICBdIGFzIEhUTUxFbGVtZW50XG5cbiAgICAgIGlmIChldmVudC5zaGlmdEtleSkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gZmlyc3RGb2N1c2FibGVFbCB8fFxuICAgICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGlubmVyUG9wdXBSZWYuY3VycmVudFxuICAgICAgICApIHtcbiAgICAgICAgICBsYXN0Rm9jdXNhYmxlRWwuZm9jdXMoKVxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gbGFzdEZvY3VzYWJsZUVsIHx8XG4gICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGlubmVyUG9wdXBSZWYuY3VycmVudFxuICAgICAgKSB7XG4gICAgICAgIGZpcnN0Rm9jdXNhYmxlRWwuZm9jdXMoKVxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICB9XG4gICAgfSwgW10pXG5cbiAgICAvKipcbiAgICAgKiBXaWxsIHJlbmRlciBjaGlsZHJlbiBjb25kaXRpb25hbGx5IGlmIGNoaWxkcmVuIGlzIGEgZnVuY3Rpb24gb3Igbm90LlxuICAgICAqL1xuICAgIGNvbnN0IHJlbmRlckNoaWxkcmVuID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gY2hpbGRyZW4oe1xuICAgICAgICAgIG9uQmx1cjogIWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KGZhbHNlKSA6IG5vb3AsXG4gICAgICAgICAgb25Gb2N1czogIWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KHRydWUpIDogbm9vcCxcbiAgICAgICAgICBvblBvaW50ZXJFbnRlcjogIWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KHRydWUpIDogbm9vcCxcbiAgICAgICAgICBvblBvaW50ZXJMZWF2ZTogIWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KGZhbHNlKSA6IG5vb3AsXG4gICAgICAgICAgcmVmOiBjaGlsZHJlblJlZixcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZENoaWxkcmVuQ29udGFpbmVyXG4gICAgICAgICAgYXJpYS1kZXNjcmliZWRieT17Z2VuZXJhdGVkSWR9XG4gICAgICAgICAgYXJpYS1jb250cm9scz17Z2VuZXJhdGVkSWR9XG4gICAgICAgICAgb25CbHVyPXshaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQoZmFsc2UpIDogbm9vcH1cbiAgICAgICAgICBvbkZvY3VzPXshaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQodHJ1ZSkgOiBub29wfVxuICAgICAgICAgIG9uUG9pbnRlckVudGVyPXshaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQodHJ1ZSkgOiBub29wfVxuICAgICAgICAgIG9uUG9pbnRlckxlYXZlPXshaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQoZmFsc2UpIDogbm9vcH1cbiAgICAgICAgICByZWY9e2NoaWxkcmVuUmVmfVxuICAgICAgICAgIHRhYkluZGV4PXt0YWJJbmRleH1cbiAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+IHtcbiAgICAgICAgICAgIG9uS2V5RG93bj8uKGV2ZW50KVxuICAgICAgICAgIH19XG4gICAgICAgICAgZGF0YS1jb250YWluZXItZnVsbC13aWR0aD17Y29udGFpbmVyRnVsbFdpZHRofVxuICAgICAgICAgIGFyaWEtaGFzcG9wdXA9e2FyaWFIYXNQb3B1cH1cbiAgICAgICAgPlxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC9TdHlsZWRDaGlsZHJlbkNvbnRhaW5lcj5cbiAgICAgIClcbiAgICB9LCBbXG4gICAgICBhcmlhSGFzUG9wdXAsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGNvbnRhaW5lckZ1bGxXaWR0aCxcbiAgICAgIGdlbmVyYXRlZElkLFxuICAgICAgaXNDb250cm9sbGVkLFxuICAgICAgb25LZXlEb3duLFxuICAgICAgb25Qb2ludGVyRXZlbnQsXG4gICAgICB0YWJJbmRleCxcbiAgICBdKVxuXG4gICAgY29uc3Qgc2hvdWxkUmVuZGVyID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICBpZiAoIWR5bmFtaWNEb21SZW5kZXJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cblxuICAgICAgaWYgKGR5bmFtaWNEb21SZW5kZXJpbmcgJiYgdmlzaWJsZUluRG9tKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0sIFtkeW5hbWljRG9tUmVuZGVyaW5nLCB2aXNpYmxlSW5Eb21dKVxuXG4gICAgaWYgKCF0ZXh0KSB7XG4gICAgICBpZiAodHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nKSByZXR1cm4gbnVsbFxuXG4gICAgICByZXR1cm4gPD57Y2hpbGRyZW59PC8+XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBldmVudCBoYW5kbGUgYWxsb3cgdXMgdG8gbm90IGJ1YmJsZSB0aGUgZXZlbnQgdG8gZG9jdW1lbnQuYm9keSBsaWtlIHRoaXMgcmVhY3Qtc2VsZWN0IHdvcmtzIGZpbmVcbiAgICAgKi9cbiAgICBjb25zdCBzdG9wQ2xpY2tQcm9wYWdhdGlvbjogTW91c2VFdmVudEhhbmRsZXIgPSBldmVudCA9PiB7XG4gICAgICBldmVudC5uYXRpdmVFdmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICB7cmVuZGVyQ2hpbGRyZW4oKX1cbiAgICAgICAge3Nob3VsZFJlbmRlclxuICAgICAgICAgID8gY3JlYXRlUG9ydGFsKFxuICAgICAgICAgICAgICA8U3R5bGVkUG9wdXBcbiAgICAgICAgICAgICAgICByZWY9e2lubmVyUG9wdXBSZWZ9XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zPXtwb3NpdGlvbnN9XG4gICAgICAgICAgICAgICAgbWF4V2lkdGg9e21heFdpZHRofVxuICAgICAgICAgICAgICAgIG1heEhlaWdodD17bWF4SGVpZ2h0fVxuICAgICAgICAgICAgICAgIHJvbGU9e3JvbGV9XG4gICAgICAgICAgICAgICAgaWQ9e2dlbmVyYXRlZElkfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgICAgICAgICAgIHJldmVyc2VBbmltYXRpb249e3JldmVyc2VBbmltYXRpb259XG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2RhdGFUZXN0SWR9XG4gICAgICAgICAgICAgICAgZGF0YS1oYXMtYXJyb3c9e2hhc0Fycm93fVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3N0b3BDbGlja1Byb3BhZ2F0aW9ufVxuICAgICAgICAgICAgICAgIG9uUG9pbnRlckVudGVyPXshaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQodHJ1ZSkgOiBub29wfVxuICAgICAgICAgICAgICAgIG9uUG9pbnRlckxlYXZlPXshaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQoZmFsc2UpIDogbm9vcH1cbiAgICAgICAgICAgICAgICBhbmltYXRpb25EdXJhdGlvbj17YW5pbWF0aW9uRHVyYXRpb259XG4gICAgICAgICAgICAgICAgb25LZXlEb3duPXtyb2xlID09PSAnZGlhbG9nJyA/IGhhbmRsZUZvY3VzVHJhcCA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgICBpc0RpYWxvZz17cm9sZSA9PT0gJ2RpYWxvZyd9XG4gICAgICAgICAgICAgICAgZGF0YS12aXNpYmxlLWluLWRvbT17XG4gICAgICAgICAgICAgICAgICAhZHluYW1pY0RvbVJlbmRlcmluZyA/IHZpc2libGVJbkRvbSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0ZXh0fVxuICAgICAgICAgICAgICA8L1N0eWxlZFBvcHVwPixcbiAgICAgICAgICAgICAgcG9wdXBQb3J0YWxUYXJnZXQgYXMgSFRNTEVsZW1lbnQsXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiBudWxsfVxuICAgICAgPC8+XG4gICAgKVxuICB9LFxuKVxuIl19 */"), ";&[data-has-arrow='true']{&::after{content:' ';position:absolute;top:", ({
44
+ positions
45
+ }) => positions.arrowTop, "px;left:", ({
46
+ positions
47
+ }) => positions.arrowLeft, "px;transform:", ({
48
+ positions
49
+ }) => positions.arrowTransform, " rotate(", ({
50
+ positions
51
+ }) => positions.rotate, "deg);margin-left:-", ARROW_WIDTH, "px;border-width:", ARROW_WIDTH, "px;border-style:solid;border-color:", ({
52
+ theme
53
+ }) => theme.colors.neutral.backgroundStronger, " transparent transparent transparent;pointer-events:none;}}&[data-visible-in-dom='false']{display:none;}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1BvcHVwL2luZGV4LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrRG9CIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1BvcHVwL2luZGV4LnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgdHlwZSB7XG4gIEhUTUxBdHRyaWJ1dGVzLFxuICBLZXlib2FyZEV2ZW50SGFuZGxlcixcbiAgTW91c2VFdmVudEhhbmRsZXIsXG4gIFJlYWN0Tm9kZSxcbiAgUmVmLFxuICBSZWZPYmplY3QsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtcbiAgZm9yd2FyZFJlZixcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlSWQsXG4gIHVzZUltcGVyYXRpdmVIYW5kbGUsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IHR5cGUgeyBQb3NpdGlvbnNUeXBlIH0gZnJvbSAnLi9hbmltYXRpb25zJ1xuaW1wb3J0IHsgYW5pbWF0aW9uLCBleGl0QW5pbWF0aW9uIH0gZnJvbSAnLi9hbmltYXRpb25zJ1xuaW1wb3J0IHR5cGUgeyBQb3B1cFBsYWNlbWVudCB9IGZyb20gJy4vaGVscGVycydcbmltcG9ydCB7IEFSUk9XX1dJRFRILCBERUZBVUxUX1BPU0lUSU9OUywgY29tcHV0ZVBvc2l0aW9ucyB9IGZyb20gJy4vaGVscGVycydcblxuY29uc3QgREVGQVVMVF9BTklNQVRJT05fRFVSQVRJT04gPSAyMzAgLy8gaW4gbXNcbmNvbnN0IERFRkFVTFRfREVCT1VOQ0VfRFVSQVRJT04gPSAyMDAgLy8gaW4gbXNcblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbnR5cGUgU3R5bGVkUG9wdXBQcm9wcyA9IHtcbiAgbWF4V2lkdGg6IG51bWJlciB8IHN0cmluZ1xuICBwb3NpdGlvbnM6IFBvc2l0aW9uc1R5cGVcbiAgcmV2ZXJzZUFuaW1hdGlvbjogYm9vbGVhblxuICBtYXhIZWlnaHQ/OiBudW1iZXIgfCBzdHJpbmdcbiAgYW5pbWF0aW9uRHVyYXRpb24/OiBudW1iZXJcbiAgaXNEaWFsb2c6IGJvb2xlYW5cbn1cblxuY29uc3QgU3R5bGVkUG9wdXAgPSBzdHlsZWQoJ2RpdicsIHtcbiAgc2hvdWxkRm9yd2FyZFByb3A6IHByb3AgPT5cbiAgICAhW1xuICAgICAgJ21heFdpZHRoJyxcbiAgICAgICdwb3NpdGlvbnMnLFxuICAgICAgJ3JldmVyc2VBbmltYXRpb24nLFxuICAgICAgJ21heEhlaWdodCcsXG4gICAgICAnYW5pbWF0aW9uRHVyYXRpb24nLFxuICAgICAgJ2lzRGlhbG9nJyxcbiAgICBdLmluY2x1ZGVzKHByb3ApLFxufSk8U3R5bGVkUG9wdXBQcm9wcz5gXG4gIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFN0cm9uZ2VyfTtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dFN0cm9uZ2VyfTtcbiAgYm9yZGVyLXJhZGl1czogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5yYWRpaS5kZWZhdWx0fTtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiBgJHt0aGVtZS5zcGFjZVsnMC41J119ICR7dGhlbWUuc3BhY2VbJzEnXX1gfTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG1heC13aWR0aDogJHsoeyBtYXhXaWR0aCB9KSA9PlxuICAgIHR5cGVvZiBtYXhXaWR0aCA9PT0gJ251bWJlcicgPyBgJHttYXhXaWR0aH1weGAgOiBtYXhXaWR0aH07XG4gIG1heC1oZWlnaHQ6ICR7KHsgbWF4SGVpZ2h0IH0pID0+XG4gICAgdHlwZW9mIG1heEhlaWdodCA9PT0gJ251bWJlcicgPyBgJHttYXhIZWlnaHR9cHhgIDogbWF4SGVpZ2h0fTtcbiAgb3ZlcmZsb3c6ICR7KHsgbWF4SGVpZ2h0IH0pID0+IChtYXhIZWlnaHQgPyAnYXV0bycgOiB1bmRlZmluZWQpfTtcbiAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbiAgZm9udC1zaXplOiAwLjhyZW07XG4gIGluc2V0OiAwIGF1dG8gYXV0byAwO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIG9wYWNpdHk6IDA7XG4gIHotaW5kZXg6IDE7XG4gIHRyYW5zZm9ybTogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLnBvcHVwUG9zaXRpb259O1xuICBhbmltYXRpb246ICR7KHtcbiAgICBwb3NpdGlvbnMsXG4gICAgcmV2ZXJzZUFuaW1hdGlvbixcbiAgICBtYXhIZWlnaHQsXG4gICAgYW5pbWF0aW9uRHVyYXRpb24sXG4gIH0pID0+XG4gICAgbWF4SGVpZ2h0IHx8IGFuaW1hdGlvbkR1cmF0aW9uID09PSAwIHx8IGFuaW1hdGlvbkR1cmF0aW9uID09PSB1bmRlZmluZWRcbiAgICAgID8gdW5kZWZpbmVkXG4gICAgICA6IGNzc2BcbiAgICAgICAgICAke2FuaW1hdGlvbkR1cmF0aW9ufW1zICR7IXJldmVyc2VBbmltYXRpb25cbiAgICAgICAgICAgID8gYW5pbWF0aW9uKHBvc2l0aW9ucylcbiAgICAgICAgICAgIDogZXhpdEFuaW1hdGlvbihwb3NpdGlvbnMpfSBmb3J3YXJkc1xuICAgICAgICBgfTtcblxuICAmW2RhdGEtaGFzLWFycm93PSd0cnVlJ10ge1xuICAgICY6OmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICcgJztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLmFycm93VG9wfXB4O1xuICAgICAgbGVmdDogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLmFycm93TGVmdH1weDtcbiAgICAgIHRyYW5zZm9ybTogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLmFycm93VHJhbnNmb3JtfVxuICAgICAgICByb3RhdGUoJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLnJvdGF0ZX1kZWcpO1xuICAgICAgbWFyZ2luLWxlZnQ6IC0ke0FSUk9XX1dJRFRIfXB4O1xuICAgICAgYm9yZGVyLXdpZHRoOiAke0FSUk9XX1dJRFRIfXB4O1xuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAgIGJvcmRlci1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kU3Ryb25nZXJ9XG4gICAgICAgIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgJltkYXRhLXZpc2libGUtaW4tZG9tPSdmYWxzZSddIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5gXG5cbmNvbnN0IFN0eWxlZENoaWxkcmVuQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogaW5oZXJpdDtcblxuICAmW2RhdGEtY29udGFpbmVyLWZ1bGwtd2lkdGg9J3RydWUnXSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbmBcblxudHlwZSBQb3B1cFByb3BzID0ge1xuICAvKipcbiAgICogSWQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgaWYgbm90IHNldC4gSXQgaXMgdXNlZCBmb3IgYXNzb2NpYXRpbmcgcG9wdXAgd3JhcHBlciB3aXRoIHBvcHVwIHBvcnRhbC5cbiAgICovXG4gIGlkPzogc3RyaW5nXG4gIGNoaWxkcmVuOlxuICAgIHwgUmVhY3ROb2RlXG4gICAgfCAoKHJlbmRlclByb3BzOiB7XG4gICAgICAgIGNsYXNzTmFtZT86IHN0cmluZ1xuICAgICAgICBvbkJsdXI6ICgpID0+IHZvaWRcbiAgICAgICAgb25Gb2N1czogKCkgPT4gdm9pZFxuICAgICAgICBvblBvaW50ZXJFbnRlcjogKCkgPT4gdm9pZFxuICAgICAgICBvblBvaW50ZXJMZWF2ZTogKCkgPT4gdm9pZFxuICAgICAgICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD5cbiAgICAgIH0pID0+IFJlYWN0Tm9kZSlcbiAgbWF4V2lkdGg/OiBudW1iZXIgfCBzdHJpbmdcbiAgLyoqXG4gICAqIGBhdXRvYCBwbGFjZW1lbnQgd2lsbCBjaGFuZ2UgdGhlIHBvc2l0aW9uIG9mIHRoZSBwb3B1cCBpZiBpdCBkb2Vzbid0IGZpdCBpbiB0aGUgdmlld3BvcnQuXG4gICAqL1xuICBwbGFjZW1lbnQ/OiBQb3B1cFBsYWNlbWVudFxuICAvKipcbiAgICogQ29udGVudCBvZiB0aGUgcG9wdXAsIHByZWZlcmFibHkgdGV4dCBpbnNpZGUuXG4gICAqL1xuICB0ZXh0PzogUmVhY3ROb2RlXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICogSXQgd2lsbCBhZGQgYHdpZHRoOiAxMDAlYCB0byB0aGUgcG9wdXAgY29udGFpbmVyLlxuICAgKi9cbiAgY29udGFpbmVyRnVsbFdpZHRoPzogYm9vbGVhblxuICAvKipcbiAgICogSXQgd2lsbCBmb3JjZSBkaXNwbGF5IHBvcHVwLiBUaGlzIGNhbiBiZSB1c2VmdWwgaWYgeW91IG5lZWQgdG8gYWx3YXlzIGRpc3BsYXkgdGhlIHBvcHVwIHdpdGhvdXQgaG92ZXIgbmVlZGVkLlxuICAgKi9cbiAgdmlzaWJsZT86IGJvb2xlYW5cbiAgaW5uZXJSZWY/OiBSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPlxuICByb2xlPzogc3RyaW5nXG4gICdkYXRhLXRlc3RpZCc/OiBzdHJpbmdcbiAgaGFzQXJyb3c/OiBib29sZWFuXG4gIG9uQ2xvc2U/OiAoKSA9PiB2b2lkXG4gIHRhYkluZGV4PzogbnVtYmVyXG4gIG9uS2V5RG93bj86IEtleWJvYXJkRXZlbnRIYW5kbGVyXG4gICdhcmlhLWhhc3BvcHVwJz86IEhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PlsnYXJpYS1oYXNwb3B1cCddXG4gIGhpZGVPbkNsaWNrT3V0c2lkZT86IGJvb2xlYW5cbiAgLyoqXG4gICAqIElmIHlvdSBzZXQgZGVib3VuY2VUaW1lIHRvIGZhbHNlLCB0aGUgcG9wdXAgd2lsbCBub3QgZGVib3VuY2UgdGhlIGhvdmVyIGV2ZW50IGFuZCB3aWxsIGJlIGRpc3BsYXllZCBpbnN0YW50bHkuXG4gICAqIElmIHNldCB0byAwIGl0IHdpbGwgZGlzYWJsZSBkZWJvdW5jZS5cbiAgICovXG4gIGRlYm91bmNlRGVsYXk/OiBudW1iZXJcbiAgLyoqXG4gICAqIElmIHlvdSBzZXQgYSBtYXggaGVpZ2h0IGtlZXAgaW4gbWluZCB0aGF0IHRoZSBhbmltYXRpb24gaXMgZGlzYWJsZWQsIG9yIGl0IHdpbGwgbm90IHdvcmsgcHJvcGVybHkgb24gc29tZSBicm93c2Vycy5cbiAgICovXG4gIG1heEhlaWdodD86IHN0cmluZyB8IG51bWJlclxuICAvKipcbiAgICogV2lsbCByZW1vdmUgdGhlIGFuaW1hdGlvbiBvbiB0aGUgcG9wdXAgaWYgc2V0IHRvIGZhbHNlLlxuICAgKi9cbiAgZGlzYWJsZUFuaW1hdGlvbj86IGJvb2xlYW5cbiAgLyoqXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBwb3J0YWwgdGFyZ2V0IGlzIGNoaWxkcmVuIGNvbnRhaW5lciBvciBkb2N1bWVudC5ib2R5IGlmIGNoaWxkcmVuIGlzIGEgZnVuY3Rpb24uIFlvdSBjYW4gb3ZlcnJpZGUgdGhpc1xuICAgKiBiZWhhdmlvciBieSBzZXR0aW5nIGEgcG9ydGFsVGFyZ2V0IHByb3AuXG4gICAqL1xuICBwb3J0YWxUYXJnZXQ/OiBIVE1MRWxlbWVudFxuICAvKipcbiAgICogSWYgeW91IHNldCB0aGlzIHRvIHRydWUsIHRoZSBwb3B1cCB3aWxsIGJlIHJlbmRlcmVkIGluIHRoZSBET00gb25seSB3aGVuIGl0IGlzIHZpc2libGUuXG4gICAqIFdoZW4gc2V0IHRvIGZhbHNlLCB0aGUgcG9wdXAgd2lsbCBhbHdheXMgYmUgcmVuZGVyZWQgaW4gdGhlIERPTS4gQnkgZGVmYXVsdCB0aGlzIHZhbHVlIGlzIHNldCB0byBgdHJ1ZWAsIGlmIGZvciBzb21lXG4gICAqIHJlYXNvbiB5b3UgbmVlZCB0byBkaXNhYmxlIGl0LCB5b3UgY2FuIHNldCBpdCB0byBgZmFsc2VgLlxuICAgKi9cbiAgZHluYW1pY0RvbVJlbmRlcmluZz86IGJvb2xlYW5cbn1cblxuLyoqXG4gKiBAZXhwZXJpbWVudGFsIFRoaXMgY29tcG9uZW50IGlzIGV4cGVyaW1lbnRhbCBhbmQgbWF5IGJlIHN1YmplY3QgdG8gYnJlYWtpbmcgY2hhbmdlcyBpbiB0aGUgZnV0dXJlLlxuICovXG5leHBvcnQgY29uc3QgUG9wdXAgPSBmb3J3YXJkUmVmKFxuICAoXG4gICAge1xuICAgICAgY2hpbGRyZW4sXG4gICAgICB0ZXh0ID0gJycsXG4gICAgICBwbGFjZW1lbnQgPSAnYXV0bycsXG4gICAgICBpZCxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNvbnRhaW5lckZ1bGxXaWR0aCxcbiAgICAgIG1heFdpZHRoID0gMjMyLFxuICAgICAgbWF4SGVpZ2h0LFxuICAgICAgdmlzaWJsZSxcbiAgICAgIGlubmVyUmVmLFxuICAgICAgcm9sZSA9ICdwb3B1cCcsXG4gICAgICAnZGF0YS10ZXN0aWQnOiBkYXRhVGVzdElkLFxuICAgICAgaGFzQXJyb3cgPSB0cnVlLFxuICAgICAgb25DbG9zZSxcbiAgICAgIHRhYkluZGV4ID0gMCxcbiAgICAgIG9uS2V5RG93bixcbiAgICAgICdhcmlhLWhhc3BvcHVwJzogYXJpYUhhc1BvcHVwLFxuICAgICAgaGlkZU9uQ2xpY2tPdXRzaWRlID0gZmFsc2UsXG4gICAgICBkZWJvdW5jZURlbGF5ID0gREVGQVVMVF9ERUJPVU5DRV9EVVJBVElPTixcbiAgICAgIGRpc2FibGVBbmltYXRpb24gPSBmYWxzZSxcbiAgICAgIHBvcnRhbFRhcmdldCxcbiAgICAgIGR5bmFtaWNEb21SZW5kZXJpbmcgPSB0cnVlLFxuICAgIH06IFBvcHVwUHJvcHMsXG4gICAgcmVmOiBSZWY8SFRNTERpdkVsZW1lbnQ+LFxuICApID0+IHtcbiAgICBjb25zdCBjaGlsZHJlblJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgICB1c2VJbXBlcmF0aXZlSGFuZGxlKGlubmVyUmVmLCAoKSA9PiBjaGlsZHJlblJlZi5jdXJyZW50KVxuXG4gICAgY29uc3QgaW5uZXJQb3B1cFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgICB1c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgKCkgPT4gaW5uZXJQb3B1cFJlZi5jdXJyZW50IGFzIEhUTUxEaXZFbGVtZW50KVxuXG4gICAgY29uc3QgdGltZXIgPSB1c2VSZWY8UmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ+KClcbiAgICBjb25zdCBwb3B1cFBvcnRhbFRhcmdldCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgaWYgKHBvcnRhbFRhcmdldCkgcmV0dXJuIHBvcnRhbFRhcmdldFxuXG4gICAgICBpZiAocm9sZSA9PT0gJ2RpYWxvZycpIHtcbiAgICAgICAgaWYgKGNoaWxkcmVuUmVmLmN1cnJlbnQpIHJldHVybiBjaGlsZHJlblJlZi5jdXJyZW50XG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykgcmV0dXJuIGRvY3VtZW50LmJvZHlcblxuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuXG4gICAgICAvLyBXZSBjaGVjayBpZiB3aW5kb3cgZXhpc3RzIGZvciBTU1JcbiAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQuYm9keVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICAgIH0sIFtwb3J0YWxUYXJnZXQsIHJvbGUsIGNoaWxkcmVuUmVmLmN1cnJlbnRdKVxuXG4gICAgLy8gVGhlcmUgYXJlIHNvbWUgaXNzdWUgd2hlbiBtaXhpbmcgYW5pbWF0aW9uIGFuZCBtYXhIZWlnaHQgb24gc29tZSBicm93c2Vycywgc28gd2UgZGlzYWJsZSBhbmltYXRpb24gaWYgbWF4SGVpZ2h0IGlzIHNldC5cbiAgICBjb25zdCBhbmltYXRpb25EdXJhdGlvbiA9XG4gICAgICBkaXNhYmxlQW5pbWF0aW9uIHx8IG1heEhlaWdodCA/IDAgOiBERUZBVUxUX0FOSU1BVElPTl9EVVJBVElPTlxuXG4gICAgLy8gRGVib3VuY2UgdGltZXIgd2lsbCBiZSB1c2VkIHRvIHByZXZlbnQgdGhlIHBvcHVwIGZyb20gZmxpY2tlcmluZyB3aGVuIHRoZSB1c2VyIG1vdmVzIHRoZSBtb3VzZSBvdXQgYW5kIGluIHRoZSBjaGlsZHJlbiBlbGVtZW50LlxuICAgIGNvbnN0IGRlYm91bmNlVGltZXIgPSB1c2VSZWY8UmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ+KClcbiAgICBjb25zdCBbdmlzaWJsZUluRG9tLCBzZXRWaXNpYmxlSW5Eb21dID0gdXNlU3RhdGUoZmFsc2UpXG4gICAgY29uc3QgW3JldmVyc2VBbmltYXRpb24sIHNldFJldmVyc2VBbmltYXRpb25dID0gdXNlU3RhdGUoZmFsc2UpXG4gICAgY29uc3QgW3Bvc2l0aW9ucywgc2V0UG9zaXRpb25zXSA9IHVzZVN0YXRlPFBvc2l0aW9uc1R5cGU+KHtcbiAgICAgIC4uLkRFRkFVTFRfUE9TSVRJT05TLFxuICAgIH0pXG4gICAgY29uc3QgdW5pcXVlSWQgPSB1c2VJZCgpXG4gICAgY29uc3QgZ2VuZXJhdGVkSWQgPSBpZCA/PyB1bmlxdWVJZFxuICAgIGNvbnN0IGlzQ29udHJvbGxlZCA9IHZpc2libGUgIT09IHVuZGVmaW5lZFxuXG4gICAgY29uc3QgZ2VuZXJhdGVQb3B1cFBvc2l0aW9ucyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIGlmIChjaGlsZHJlblJlZi5jdXJyZW50ICYmIGlubmVyUG9wdXBSZWYuY3VycmVudCkge1xuICAgICAgICBzZXRQb3NpdGlvbnMoXG4gICAgICAgICAgY29tcHV0ZVBvc2l0aW9ucyh7XG4gICAgICAgICAgICBjaGlsZHJlblJlZixcbiAgICAgICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgICAgIHBvcHVwUmVmOiBpbm5lclBvcHVwUmVmLFxuICAgICAgICAgICAgcG9wdXBQb3J0YWxUYXJnZXQ6IHBvcHVwUG9ydGFsVGFyZ2V0IGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgIH0pLFxuICAgICAgICApXG4gICAgICB9XG4gICAgfSwgW3BsYWNlbWVudCwgcG9wdXBQb3J0YWxUYXJnZXRdKVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB3ZSBuZWVkIHRvIHJlY29tcHV0ZSBwb3NpdGlvbnMgb2YgcG9wdXAgZHVlIHRvIHdpbmRvdyBzY3JvbGwgb3IgcmVzaXplLlxuICAgICAqL1xuICAgIGNvbnN0IG9uV2luZG93Q2hhbmdlRGV0ZWN0ZWQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAvLyBXZSByZW1vdmUgYW5pbWF0aW9uIG9uIHNjcm9sbCBvciB0aGUgYW5pbWF0aW9uIHdpbGwgcmVzdGFydCBvbiBldmVyeSBzY3JvbGxcbiAgICAgIGlmIChpbm5lclBvcHVwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgaW5uZXJQb3B1cFJlZi5jdXJyZW50LnN0eWxlLmFuaW1hdGlvbiA9ICdub25lJ1xuICAgICAgfVxuXG4gICAgICBnZW5lcmF0ZVBvcHVwUG9zaXRpb25zKClcbiAgICB9LCBbZ2VuZXJhdGVQb3B1cFBvc2l0aW9ucywgaW5uZXJQb3B1cFJlZl0pXG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHdlIG5lZWQgdG8gcmVtb3ZlIHBvcHVwIHBvcnRhbCBmcm9tIERPTSBhbmQgcmVtb3ZlIGV2ZW50IGxpc3RlbmVyIHRvIGl0LlxuICAgICAqL1xuICAgIGNvbnN0IHVubW91bnRQb3B1cEZyb21Eb20gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBzZXRWaXNpYmxlSW5Eb20oZmFsc2UpXG4gICAgICBzZXRSZXZlcnNlQW5pbWF0aW9uKGZhbHNlKVxuXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25XaW5kb3dDaGFuZ2VEZXRlY3RlZCwgdHJ1ZSlcbiAgICB9LCBbb25XaW5kb3dDaGFuZ2VEZXRlY3RlZF0pXG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHdlIG5lZWQgdG8gaGlkZSBwb3B1cC4gQSB0aW1lb3V0IGlzIHNldCB0byBhbGxvdyBhbmltYXRpb24gZW5kLCB0aGVuIHJlbW92ZVxuICAgICAqIHBvcHVwIGZyb20gZG9tLlxuICAgICAqL1xuICAgIGNvbnN0IGNsb3NlUG9wdXAgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSBzZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgc2V0UmV2ZXJzZUFuaW1hdGlvbih0cnVlKVxuICAgICAgICAgIHRpbWVyLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHVubW91bnRQb3B1cEZyb21Eb20oKVxuICAgICAgICAgICAgb25DbG9zZT8uKClcbiAgICAgICAgICB9LCBhbmltYXRpb25EdXJhdGlvbilcbiAgICAgICAgfSxcbiAgICAgICAgZGVib3VuY2VEZWxheSAmJiAhZGlzYWJsZUFuaW1hdGlvbiA/IGRlYm91bmNlRGVsYXkgOiAwLFxuICAgICAgKVxuICAgIH0sIFtcbiAgICAgIGFuaW1hdGlvbkR1cmF0aW9uLFxuICAgICAgZGlzYWJsZUFuaW1hdGlvbixcbiAgICAgIGRlYm91bmNlRGVsYXksXG4gICAgICBvbkNsb3NlLFxuICAgICAgdW5tb3VudFBvcHVwRnJvbURvbSxcbiAgICBdKVxuXG4gICAgLyoqXG4gICAgICogV2hlbiBtb3VzZSBob3ZlciBvciBzdG9wIGhvdmVyaW5nIGNoaWxkcmVuIHRoaXMgZnVuY3Rpb24gZGlzcGxheSBvciBoaWRlIHBvcHVwLiBBIHRpbWVvdXQgaXMgc2V0IHRvIGFsbG93IGFuaW1hdGlvblxuICAgICAqIGVuZCwgdGhlbiByZW1vdmUgcG9wdXAgZnJvbSBkb20uXG4gICAgICovXG4gICAgY29uc3Qgb25Qb2ludGVyRXZlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAgIChpc1Zpc2libGU6IGJvb2xlYW4pID0+ICgpID0+IHtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBkZWJvdW5jZURlbGF5IGFuZCB0aGUgcG9wdXAgaXMgbm90IHZpc2libGUsIHdlIGNsZWFyIHRoZSBkZWJvdW5jZSB0aW1lclxuICAgICAgICBpZiAoIXZpc2libGUgJiYgZGVib3VuY2VEZWxheSA+IDAgJiYgZGVib3VuY2VUaW1lci5jdXJyZW50KSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KGRlYm91bmNlVGltZXIuY3VycmVudClcbiAgICAgICAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSB1bmRlZmluZWRcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoaXMgY29uZGl0aW9uIGlzIGZvciB3aGVuIHdlIHdhbnQgdG8gdW5tb3VudCB0aGUgcG9wdXBcbiAgICAgICAgLy8gVGhlcmUgaXMgZGVib3VuY2UgaW4gb3JkZXIgdG8gYXZvaWQgcG9wdXAgdG8gZmxpY2tlciB3aGVuIHdlIG1vdmUgdGhlIG1vdXNlIGZyb20gY2hpbGRyZW4gdG8gcG9wdXBcbiAgICAgICAgLy8gVGltZXIgaXMgdXNlZCB0byBmb2xsb3cgdGhlIGFuaW1hdGlvbiBkdXJhdGlvblxuICAgICAgICBpZiAoIWlzVmlzaWJsZSAmJiBpbm5lclBvcHVwUmVmLmN1cnJlbnQgJiYgIWRlYm91bmNlVGltZXIuY3VycmVudCkge1xuICAgICAgICAgIGNsb3NlUG9wdXAoKVxuICAgICAgICB9IGVsc2UgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgICAgIC8vIFRoaXMgY29uZGl0aW9uIGlzIGZvciB3aGVuIHdlIHdhbnQgdG8gbW91bnQgdGhlIHBvcHVwXG4gICAgICAgICAgLy8gSWYgdGhlIHRpbWVyIGV4aXN0cyBpdCBtZWFucyB0aGUgcG9wdXAgd2FzIGFib3V0IHRvIHVtb3VudCwgYnV0IHdlIGhvdmVyZWQgdGhlIGNoaWxkcmVuIGFnYWluLFxuICAgICAgICAgIC8vIHNvIHdlIGNsZWFyIHRoZSB0aW1lciBhbmQgdGhlIHBvcHVwIHdpbGwgbm90IGJlIHVubW91bnRlZFxuICAgICAgICAgIGlmICh0aW1lci5jdXJyZW50KSB7XG4gICAgICAgICAgICBzZXRSZXZlcnNlQW5pbWF0aW9uKGZhbHNlKVxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyLmN1cnJlbnQpXG4gICAgICAgICAgICB0aW1lci5jdXJyZW50ID0gdW5kZWZpbmVkXG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIEFuZCBoZXJlIGlzIHdoZW4gd2UgY3VycmVudGx5IGFyZSBpbiBhIGRlYm91bmNlIHRpbWVyLCBpdCBtZWFucyBwb3B1cCB3YXMgaG92ZXJlZCBkdXJpbmdcbiAgICAgICAgICAvLyB0aGF0IHBlcmlvZCwgYW5kIHNvIHdlIGNhbiBjbGVhciBkZWJvdW5jZSB0aW1lclxuICAgICAgICAgIGlmIChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSB1bmRlZmluZWRcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGRlYm91bmNlRGVsYXkgPiAwKSB7XG4gICAgICAgICAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgc2V0VmlzaWJsZUluRG9tKHRydWUpXG4gICAgICAgICAgICB9LCBkZWJvdW5jZURlbGF5KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXRWaXNpYmxlSW5Eb20odHJ1ZSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBbY2xvc2VQb3B1cCwgZGVib3VuY2VEZWxheSwgdmlzaWJsZV0sXG4gICAgKVxuXG4gICAgLyoqXG4gICAgICogT25jZSBwb3B1cCBpcyB2aXNpYmxlIGluIHRoZSBkb20gd2UgY2FuIGNvbXB1dGUgcG9zaXRpb25zLCB0aGVuIHNldCBpdCB2aXNpYmxlIG9uIHNjcmVlbiBhbmQgYWRkIGV2ZW50IHRvXG4gICAgICogcmVjb21wdXRlIHBvc2l0aW9ucyBvbiBzY3JvbGwgb3Igc2NyZWVuIHJlc2l6ZS5cbiAgICAgKi9cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHZpc2libGVJbkRvbSkge1xuICAgICAgICBnZW5lcmF0ZVBvcHVwUG9zaXRpb25zKClcblxuICAgICAgICBpZiAocG9wdXBQb3J0YWxUYXJnZXQgPT09IGRvY3VtZW50LmJvZHkpIHtcbiAgICAgICAgICAvLyBXZSB3YW50IHRvIGRldGVjdCBzY3JvbGwgYW5kIHJlc2l6ZSBpbiBvcmRlciB0byByZWNvbXB1dGUgcG9zaXRpb25zIG9mIHBvcHVwXG4gICAgICAgICAgLy8gQWRkaW5nIHRydWUgYXMgdGhpcmQgcGFyYW1ldGVyIHRvIGV2ZW50IGxpc3RlbmVyIHdpbGwgZGV0ZWN0IG5lc3RlZCBzY3JvbGxzLlxuICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBvbldpbmRvd0NoYW5nZURldGVjdGVkLCB0cnVlKVxuICAgICAgICB9XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBvbldpbmRvd0NoYW5nZURldGVjdGVkLCB0cnVlKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25XaW5kb3dDaGFuZ2VEZXRlY3RlZCwgdHJ1ZSlcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG9uV2luZG93Q2hhbmdlRGV0ZWN0ZWQsIHRydWUpXG4gICAgICAgIGlmICh0aW1lci5jdXJyZW50KSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyLmN1cnJlbnQpXG4gICAgICAgICAgdGltZXIuY3VycmVudCA9IHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgW1xuICAgICAgZ2VuZXJhdGVQb3B1cFBvc2l0aW9ucyxcbiAgICAgIG9uV2luZG93Q2hhbmdlRGV0ZWN0ZWQsXG4gICAgICB2aXNpYmxlSW5Eb20sXG4gICAgICBtYXhXaWR0aCxcbiAgICAgIHBvcHVwUG9ydGFsVGFyZ2V0LFxuICAgIF0pXG5cbiAgICAvLyBUaGlzIHdpbGwgYmUgdHJpZ2dlcmVkIHdoZW4gcG9zaXRpb25zIGFyZSBjb21wdXRlZCBhbmQgcG9wdXAgaXMgdmlzaWJsZSBpbiB0aGUgZG9tLlxuICAgIHVzZUVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKHZpc2libGVJbkRvbSAmJiBpbm5lclBvcHVwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBpbm5lclBvcHVwUmVmLmN1cnJlbnQuc3R5bGUub3BhY2l0eSA9ICcxJ1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICAgICAgW3Bvc2l0aW9uc10sXG4gICAgKVxuXG4gICAgLyoqXG4gICAgICogSWYgcG9wdXAgaGFzIGB2aXNpYmxlYCBwcm9wIGl0IG1lYW5zIHRoZSBwb3B1cCBpcyBtYW51YWxseSBjb250cm9sbGVkIHRocm91Z2ggdGhpcyBwcm9wLlxuICAgICAqIEluIHRoaXMgY2FzIHdlIGRvbid0IHdhbnQgdG8gZGlzcGxheSBwb3B1cCBvbiBob3ZlciwgYnV0IG9ubHkgd2hlbiBgdmlzaWJsZWAgaXMgdHJ1ZS5cbiAgICAgKi9cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKGlzQ29udHJvbGxlZCkge1xuICAgICAgICBvblBvaW50ZXJFdmVudCh2aXNpYmxlKSgpXG4gICAgICB9XG4gICAgfSwgW2lzQ29udHJvbGxlZCwgb25Qb2ludGVyRXZlbnQsIHZpc2libGVdKVxuXG4gICAgLy8gSGFuZGxlIGhpZGUgb24gZXNjIHByZXNzIGFuZCBoaWRlIG9uIGNsaWNrIG91dHNpZGVcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgaGFuZGxlRXNjUHJlc3MgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICBjbG9zZVBvcHVwKClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgcG9wdXBDdXJyZW50ID0gaW5uZXJQb3B1cFJlZi5jdXJyZW50XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuQ3VycmVudCA9IGNoaWxkcmVuUmVmLmN1cnJlbnRcblxuICAgICAgICBpZiAocG9wdXBDdXJyZW50ICYmIGhpZGVPbkNsaWNrT3V0c2lkZSAmJiAhZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldCAmJlxuICAgICAgICAgICAgZXZlbnQudGFyZ2V0ICE9PSBwb3B1cEN1cnJlbnQgJiZcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldCAhPT0gY2hpbGRyZW5DdXJyZW50ICYmXG4gICAgICAgICAgICAhY2hpbGRyZW5DdXJyZW50Py5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICAgICAgICFwb3B1cEN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgY2xvc2VQb3B1cCgpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodmlzaWJsZUluRG9tKSB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCBoYW5kbGVFc2NQcmVzcylcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXl1cCcsIGhhbmRsZUVzY1ByZXNzKVxuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgICAgfVxuICAgIH0sIFtcbiAgICAgIGNsb3NlUG9wdXAsXG4gICAgICB2aXNpYmxlSW5Eb20sXG4gICAgICBpbm5lclBvcHVwUmVmLFxuICAgICAgY2hpbGRyZW5SZWYsXG4gICAgICBoaWRlT25DbGlja091dHNpZGUsXG4gICAgXSlcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZXZlbnQgd2lsbCBvY2N1ciBvbmx5IGZvciBkaWFsb2cgYW5kIHdpbGwgdHJhcCBmb2N1cyBpbnNpZGUgdGhlIGRpYWxvZy5cbiAgICAgKi9cbiAgICBjb25zdCBoYW5kbGVGb2N1c1RyYXA6IEtleWJvYXJkRXZlbnRIYW5kbGVyID0gdXNlQ2FsbGJhY2soZXZlbnQgPT4ge1xuICAgICAgY29uc3QgaXNUYWJQcmVzc2VkID0gZXZlbnQua2V5ID09PSAnVGFiJ1xuICAgICAgaWYgKCFpc1RhYlByZXNzZWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuXG4gICAgICBjb25zdCBmb2N1c2FibGVFbHMgPVxuICAgICAgICBpbm5lclBvcHVwUmVmLmN1cnJlbnQ/LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICAgICAgJ2FbaHJlZl06bm90KFtkaXNhYmxlZF0pLCBidXR0b246bm90KFtkaXNhYmxlZF0pLCB0ZXh0YXJlYTpub3QoW2Rpc2FibGVkXSksIGlucHV0Om5vdChbZGlzYWJsZWRdKSwgc2VsZWN0Om5vdChbZGlzYWJsZWRdKScsXG4gICAgICAgICkgPz8gW11cblxuICAgICAgLy8gSGFuZGxlIGNhc2Ugd2hlbiBubyBpbnRlcmFjdGl2ZSBlbGVtZW50IGFyZSB3aXRoaW4gdGhlIG1vZGFsIChpbmNsdWRpbmcgY2xvc2UgaWNvbilcbiAgICAgIGlmIChmb2N1c2FibGVFbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlyc3RGb2N1c2FibGVFbCA9IGZvY3VzYWJsZUVsc1swXSBhcyBIVE1MRWxlbWVudFxuICAgICAgY29uc3QgbGFzdEZvY3VzYWJsZUVsID0gZm9jdXNhYmxlRWxzW1xuICAgICAgICBmb2N1c2FibGVFbHMubGVuZ3RoIC0gMVxuICAgICAgXSBhcyBIVE1MRWxlbWVudFxuXG4gICAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGZpcnN0Rm9jdXNhYmxlRWwgfHxcbiAgICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBpbm5lclBvcHVwUmVmLmN1cnJlbnRcbiAgICAgICAgKSB7XG4gICAgICAgICAgbGFzdEZvY3VzYWJsZUVsLmZvY3VzKClcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGxhc3RGb2N1c2FibGVFbCB8fFxuICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBpbm5lclBvcHVwUmVmLmN1cnJlbnRcbiAgICAgICkge1xuICAgICAgICBmaXJzdEZvY3VzYWJsZUVsLmZvY3VzKClcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgfVxuICAgIH0sIFtdKVxuXG4gICAgLyoqXG4gICAgICogV2lsbCByZW5kZXIgY2hpbGRyZW4gY29uZGl0aW9uYWxseSBpZiBjaGlsZHJlbiBpcyBhIGZ1bmN0aW9uIG9yIG5vdC5cbiAgICAgKi9cbiAgICBjb25zdCByZW5kZXJDaGlsZHJlbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuKHtcbiAgICAgICAgICBvbkJsdXI6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudChmYWxzZSkgOiBub29wLFxuICAgICAgICAgIG9uRm9jdXM6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudCh0cnVlKSA6IG5vb3AsXG4gICAgICAgICAgb25Qb2ludGVyRW50ZXI6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudCh0cnVlKSA6IG5vb3AsXG4gICAgICAgICAgb25Qb2ludGVyTGVhdmU6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudChmYWxzZSkgOiBub29wLFxuICAgICAgICAgIHJlZjogY2hpbGRyZW5SZWYsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRDaGlsZHJlbkNvbnRhaW5lclxuICAgICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9e2dlbmVyYXRlZElkfVxuICAgICAgICAgIGFyaWEtY29udHJvbHM9e2dlbmVyYXRlZElkfVxuICAgICAgICAgIG9uQmx1cj17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KGZhbHNlKSA6IG5vb3B9XG4gICAgICAgICAgb25Gb2N1cz17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KHRydWUpIDogbm9vcH1cbiAgICAgICAgICBvblBvaW50ZXJFbnRlcj17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KHRydWUpIDogbm9vcH1cbiAgICAgICAgICBvblBvaW50ZXJMZWF2ZT17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KGZhbHNlKSA6IG5vb3B9XG4gICAgICAgICAgcmVmPXtjaGlsZHJlblJlZn1cbiAgICAgICAgICB0YWJJbmRleD17dGFiSW5kZXh9XG4gICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PiB7XG4gICAgICAgICAgICBvbktleURvd24/LihldmVudClcbiAgICAgICAgICB9fVxuICAgICAgICAgIGRhdGEtY29udGFpbmVyLWZ1bGwtd2lkdGg9e2NvbnRhaW5lckZ1bGxXaWR0aH1cbiAgICAgICAgICBhcmlhLWhhc3BvcHVwPXthcmlhSGFzUG9wdXB9XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvU3R5bGVkQ2hpbGRyZW5Db250YWluZXI+XG4gICAgICApXG4gICAgfSwgW1xuICAgICAgYXJpYUhhc1BvcHVwLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBjb250YWluZXJGdWxsV2lkdGgsXG4gICAgICBnZW5lcmF0ZWRJZCxcbiAgICAgIGlzQ29udHJvbGxlZCxcbiAgICAgIG9uS2V5RG93bixcbiAgICAgIG9uUG9pbnRlckV2ZW50LFxuICAgICAgdGFiSW5kZXgsXG4gICAgXSlcblxuICAgIGNvbnN0IHNob3VsZFJlbmRlciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgaWYgKCFkeW5hbWljRG9tUmVuZGVyaW5nKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChkeW5hbWljRG9tUmVuZGVyaW5nICYmIHZpc2libGVJbkRvbSkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9LCBbZHluYW1pY0RvbVJlbmRlcmluZywgdmlzaWJsZUluRG9tXSlcblxuICAgIGlmICghdGV4dCkge1xuICAgICAgaWYgKHR5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIG51bGxcblxuICAgICAgcmV0dXJuIDw+e2NoaWxkcmVufTwvPlxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZXZlbnQgaGFuZGxlIGFsbG93IHVzIHRvIG5vdCBidWJibGUgdGhlIGV2ZW50IHRvIGRvY3VtZW50LmJvZHkgbGlrZSB0aGlzIHJlYWN0LXNlbGVjdCB3b3JrcyBmaW5lXG4gICAgICovXG4gICAgY29uc3Qgc3RvcENsaWNrUHJvcGFnYXRpb246IE1vdXNlRXZlbnRIYW5kbGVyID0gZXZlbnQgPT4ge1xuICAgICAgZXZlbnQubmF0aXZlRXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKClcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAge3JlbmRlckNoaWxkcmVuKCl9XG4gICAgICAgIHtzaG91bGRSZW5kZXJcbiAgICAgICAgICA/IGNyZWF0ZVBvcnRhbChcbiAgICAgICAgICAgICAgPFN0eWxlZFBvcHVwXG4gICAgICAgICAgICAgICAgcmVmPXtpbm5lclBvcHVwUmVmfVxuICAgICAgICAgICAgICAgIHBvc2l0aW9ucz17cG9zaXRpb25zfVxuICAgICAgICAgICAgICAgIG1heFdpZHRoPXttYXhXaWR0aH1cbiAgICAgICAgICAgICAgICBtYXhIZWlnaHQ9e21heEhlaWdodH1cbiAgICAgICAgICAgICAgICByb2xlPXtyb2xlfVxuICAgICAgICAgICAgICAgIGlkPXtnZW5lcmF0ZWRJZH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgICAgICAgICByZXZlcnNlQW5pbWF0aW9uPXtyZXZlcnNlQW5pbWF0aW9ufVxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtkYXRhVGVzdElkfVxuICAgICAgICAgICAgICAgIGRhdGEtaGFzLWFycm93PXtoYXNBcnJvd31cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtzdG9wQ2xpY2tQcm9wYWdhdGlvbn1cbiAgICAgICAgICAgICAgICBvblBvaW50ZXJFbnRlcj17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KHRydWUpIDogbm9vcH1cbiAgICAgICAgICAgICAgICBvblBvaW50ZXJMZWF2ZT17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KGZhbHNlKSA6IG5vb3B9XG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uRHVyYXRpb249e2FuaW1hdGlvbkR1cmF0aW9ufVxuICAgICAgICAgICAgICAgIG9uS2V5RG93bj17cm9sZSA9PT0gJ2RpYWxvZycgPyBoYW5kbGVGb2N1c1RyYXAgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICAgICAgaXNEaWFsb2c9e3JvbGUgPT09ICdkaWFsb2cnfVxuICAgICAgICAgICAgICAgIGRhdGEtdmlzaWJsZS1pbi1kb209e1xuICAgICAgICAgICAgICAgICAgIWR5bmFtaWNEb21SZW5kZXJpbmcgPyB2aXNpYmxlSW5Eb20gOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dGV4dH1cbiAgICAgICAgICAgICAgPC9TdHlsZWRQb3B1cD4sXG4gICAgICAgICAgICAgIHBvcHVwUG9ydGFsVGFyZ2V0IGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgKVxuICAgICAgICAgIDogbnVsbH1cbiAgICAgIDwvPlxuICAgIClcbiAgfSxcbilcbiJdfQ== */"));
54
+ const StyledChildrenContainer = /* @__PURE__ */ _styled("div", process.env.NODE_ENV === "production" ? {
55
+ target: "e4h1g860"
56
+ } : {
57
+ target: "e4h1g860",
58
+ label: "StyledChildrenContainer"
59
+ })(process.env.NODE_ENV === "production" ? {
60
+ name: "jhu4ja",
61
+ styles: "display:inherit;&[data-container-full-width='true']{width:100%;}"
62
+ } : {
63
+ name: "jhu4ja",
64
+ styles: "display:inherit;&[data-container-full-width='true']{width:100%;}",
65
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1BvcHVwL2luZGV4LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEwRzBDIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1BvcHVwL2luZGV4LnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgdHlwZSB7XG4gIEhUTUxBdHRyaWJ1dGVzLFxuICBLZXlib2FyZEV2ZW50SGFuZGxlcixcbiAgTW91c2VFdmVudEhhbmRsZXIsXG4gIFJlYWN0Tm9kZSxcbiAgUmVmLFxuICBSZWZPYmplY3QsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtcbiAgZm9yd2FyZFJlZixcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlSWQsXG4gIHVzZUltcGVyYXRpdmVIYW5kbGUsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IHR5cGUgeyBQb3NpdGlvbnNUeXBlIH0gZnJvbSAnLi9hbmltYXRpb25zJ1xuaW1wb3J0IHsgYW5pbWF0aW9uLCBleGl0QW5pbWF0aW9uIH0gZnJvbSAnLi9hbmltYXRpb25zJ1xuaW1wb3J0IHR5cGUgeyBQb3B1cFBsYWNlbWVudCB9IGZyb20gJy4vaGVscGVycydcbmltcG9ydCB7IEFSUk9XX1dJRFRILCBERUZBVUxUX1BPU0lUSU9OUywgY29tcHV0ZVBvc2l0aW9ucyB9IGZyb20gJy4vaGVscGVycydcblxuY29uc3QgREVGQVVMVF9BTklNQVRJT05fRFVSQVRJT04gPSAyMzAgLy8gaW4gbXNcbmNvbnN0IERFRkFVTFRfREVCT1VOQ0VfRFVSQVRJT04gPSAyMDAgLy8gaW4gbXNcblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbnR5cGUgU3R5bGVkUG9wdXBQcm9wcyA9IHtcbiAgbWF4V2lkdGg6IG51bWJlciB8IHN0cmluZ1xuICBwb3NpdGlvbnM6IFBvc2l0aW9uc1R5cGVcbiAgcmV2ZXJzZUFuaW1hdGlvbjogYm9vbGVhblxuICBtYXhIZWlnaHQ/OiBudW1iZXIgfCBzdHJpbmdcbiAgYW5pbWF0aW9uRHVyYXRpb24/OiBudW1iZXJcbiAgaXNEaWFsb2c6IGJvb2xlYW5cbn1cblxuY29uc3QgU3R5bGVkUG9wdXAgPSBzdHlsZWQoJ2RpdicsIHtcbiAgc2hvdWxkRm9yd2FyZFByb3A6IHByb3AgPT5cbiAgICAhW1xuICAgICAgJ21heFdpZHRoJyxcbiAgICAgICdwb3NpdGlvbnMnLFxuICAgICAgJ3JldmVyc2VBbmltYXRpb24nLFxuICAgICAgJ21heEhlaWdodCcsXG4gICAgICAnYW5pbWF0aW9uRHVyYXRpb24nLFxuICAgICAgJ2lzRGlhbG9nJyxcbiAgICBdLmluY2x1ZGVzKHByb3ApLFxufSk8U3R5bGVkUG9wdXBQcm9wcz5gXG4gIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFN0cm9uZ2VyfTtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dFN0cm9uZ2VyfTtcbiAgYm9yZGVyLXJhZGl1czogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5yYWRpaS5kZWZhdWx0fTtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiBgJHt0aGVtZS5zcGFjZVsnMC41J119ICR7dGhlbWUuc3BhY2VbJzEnXX1gfTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG1heC13aWR0aDogJHsoeyBtYXhXaWR0aCB9KSA9PlxuICAgIHR5cGVvZiBtYXhXaWR0aCA9PT0gJ251bWJlcicgPyBgJHttYXhXaWR0aH1weGAgOiBtYXhXaWR0aH07XG4gIG1heC1oZWlnaHQ6ICR7KHsgbWF4SGVpZ2h0IH0pID0+XG4gICAgdHlwZW9mIG1heEhlaWdodCA9PT0gJ251bWJlcicgPyBgJHttYXhIZWlnaHR9cHhgIDogbWF4SGVpZ2h0fTtcbiAgb3ZlcmZsb3c6ICR7KHsgbWF4SGVpZ2h0IH0pID0+IChtYXhIZWlnaHQgPyAnYXV0bycgOiB1bmRlZmluZWQpfTtcbiAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbiAgZm9udC1zaXplOiAwLjhyZW07XG4gIGluc2V0OiAwIGF1dG8gYXV0byAwO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIG9wYWNpdHk6IDA7XG4gIHotaW5kZXg6IDE7XG4gIHRyYW5zZm9ybTogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLnBvcHVwUG9zaXRpb259O1xuICBhbmltYXRpb246ICR7KHtcbiAgICBwb3NpdGlvbnMsXG4gICAgcmV2ZXJzZUFuaW1hdGlvbixcbiAgICBtYXhIZWlnaHQsXG4gICAgYW5pbWF0aW9uRHVyYXRpb24sXG4gIH0pID0+XG4gICAgbWF4SGVpZ2h0IHx8IGFuaW1hdGlvbkR1cmF0aW9uID09PSAwIHx8IGFuaW1hdGlvbkR1cmF0aW9uID09PSB1bmRlZmluZWRcbiAgICAgID8gdW5kZWZpbmVkXG4gICAgICA6IGNzc2BcbiAgICAgICAgICAke2FuaW1hdGlvbkR1cmF0aW9ufW1zICR7IXJldmVyc2VBbmltYXRpb25cbiAgICAgICAgICAgID8gYW5pbWF0aW9uKHBvc2l0aW9ucylcbiAgICAgICAgICAgIDogZXhpdEFuaW1hdGlvbihwb3NpdGlvbnMpfSBmb3J3YXJkc1xuICAgICAgICBgfTtcblxuICAmW2RhdGEtaGFzLWFycm93PSd0cnVlJ10ge1xuICAgICY6OmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICcgJztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLmFycm93VG9wfXB4O1xuICAgICAgbGVmdDogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLmFycm93TGVmdH1weDtcbiAgICAgIHRyYW5zZm9ybTogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLmFycm93VHJhbnNmb3JtfVxuICAgICAgICByb3RhdGUoJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLnJvdGF0ZX1kZWcpO1xuICAgICAgbWFyZ2luLWxlZnQ6IC0ke0FSUk9XX1dJRFRIfXB4O1xuICAgICAgYm9yZGVyLXdpZHRoOiAke0FSUk9XX1dJRFRIfXB4O1xuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAgIGJvcmRlci1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kU3Ryb25nZXJ9XG4gICAgICAgIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgJltkYXRhLXZpc2libGUtaW4tZG9tPSdmYWxzZSddIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5gXG5cbmNvbnN0IFN0eWxlZENoaWxkcmVuQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogaW5oZXJpdDtcblxuICAmW2RhdGEtY29udGFpbmVyLWZ1bGwtd2lkdGg9J3RydWUnXSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbmBcblxudHlwZSBQb3B1cFByb3BzID0ge1xuICAvKipcbiAgICogSWQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgaWYgbm90IHNldC4gSXQgaXMgdXNlZCBmb3IgYXNzb2NpYXRpbmcgcG9wdXAgd3JhcHBlciB3aXRoIHBvcHVwIHBvcnRhbC5cbiAgICovXG4gIGlkPzogc3RyaW5nXG4gIGNoaWxkcmVuOlxuICAgIHwgUmVhY3ROb2RlXG4gICAgfCAoKHJlbmRlclByb3BzOiB7XG4gICAgICAgIGNsYXNzTmFtZT86IHN0cmluZ1xuICAgICAgICBvbkJsdXI6ICgpID0+IHZvaWRcbiAgICAgICAgb25Gb2N1czogKCkgPT4gdm9pZFxuICAgICAgICBvblBvaW50ZXJFbnRlcjogKCkgPT4gdm9pZFxuICAgICAgICBvblBvaW50ZXJMZWF2ZTogKCkgPT4gdm9pZFxuICAgICAgICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD5cbiAgICAgIH0pID0+IFJlYWN0Tm9kZSlcbiAgbWF4V2lkdGg/OiBudW1iZXIgfCBzdHJpbmdcbiAgLyoqXG4gICAqIGBhdXRvYCBwbGFjZW1lbnQgd2lsbCBjaGFuZ2UgdGhlIHBvc2l0aW9uIG9mIHRoZSBwb3B1cCBpZiBpdCBkb2Vzbid0IGZpdCBpbiB0aGUgdmlld3BvcnQuXG4gICAqL1xuICBwbGFjZW1lbnQ/OiBQb3B1cFBsYWNlbWVudFxuICAvKipcbiAgICogQ29udGVudCBvZiB0aGUgcG9wdXAsIHByZWZlcmFibHkgdGV4dCBpbnNpZGUuXG4gICAqL1xuICB0ZXh0PzogUmVhY3ROb2RlXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICogSXQgd2lsbCBhZGQgYHdpZHRoOiAxMDAlYCB0byB0aGUgcG9wdXAgY29udGFpbmVyLlxuICAgKi9cbiAgY29udGFpbmVyRnVsbFdpZHRoPzogYm9vbGVhblxuICAvKipcbiAgICogSXQgd2lsbCBmb3JjZSBkaXNwbGF5IHBvcHVwLiBUaGlzIGNhbiBiZSB1c2VmdWwgaWYgeW91IG5lZWQgdG8gYWx3YXlzIGRpc3BsYXkgdGhlIHBvcHVwIHdpdGhvdXQgaG92ZXIgbmVlZGVkLlxuICAgKi9cbiAgdmlzaWJsZT86IGJvb2xlYW5cbiAgaW5uZXJSZWY/OiBSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPlxuICByb2xlPzogc3RyaW5nXG4gICdkYXRhLXRlc3RpZCc/OiBzdHJpbmdcbiAgaGFzQXJyb3c/OiBib29sZWFuXG4gIG9uQ2xvc2U/OiAoKSA9PiB2b2lkXG4gIHRhYkluZGV4PzogbnVtYmVyXG4gIG9uS2V5RG93bj86IEtleWJvYXJkRXZlbnRIYW5kbGVyXG4gICdhcmlhLWhhc3BvcHVwJz86IEhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PlsnYXJpYS1oYXNwb3B1cCddXG4gIGhpZGVPbkNsaWNrT3V0c2lkZT86IGJvb2xlYW5cbiAgLyoqXG4gICAqIElmIHlvdSBzZXQgZGVib3VuY2VUaW1lIHRvIGZhbHNlLCB0aGUgcG9wdXAgd2lsbCBub3QgZGVib3VuY2UgdGhlIGhvdmVyIGV2ZW50IGFuZCB3aWxsIGJlIGRpc3BsYXllZCBpbnN0YW50bHkuXG4gICAqIElmIHNldCB0byAwIGl0IHdpbGwgZGlzYWJsZSBkZWJvdW5jZS5cbiAgICovXG4gIGRlYm91bmNlRGVsYXk/OiBudW1iZXJcbiAgLyoqXG4gICAqIElmIHlvdSBzZXQgYSBtYXggaGVpZ2h0IGtlZXAgaW4gbWluZCB0aGF0IHRoZSBhbmltYXRpb24gaXMgZGlzYWJsZWQsIG9yIGl0IHdpbGwgbm90IHdvcmsgcHJvcGVybHkgb24gc29tZSBicm93c2Vycy5cbiAgICovXG4gIG1heEhlaWdodD86IHN0cmluZyB8IG51bWJlclxuICAvKipcbiAgICogV2lsbCByZW1vdmUgdGhlIGFuaW1hdGlvbiBvbiB0aGUgcG9wdXAgaWYgc2V0IHRvIGZhbHNlLlxuICAgKi9cbiAgZGlzYWJsZUFuaW1hdGlvbj86IGJvb2xlYW5cbiAgLyoqXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBwb3J0YWwgdGFyZ2V0IGlzIGNoaWxkcmVuIGNvbnRhaW5lciBvciBkb2N1bWVudC5ib2R5IGlmIGNoaWxkcmVuIGlzIGEgZnVuY3Rpb24uIFlvdSBjYW4gb3ZlcnJpZGUgdGhpc1xuICAgKiBiZWhhdmlvciBieSBzZXR0aW5nIGEgcG9ydGFsVGFyZ2V0IHByb3AuXG4gICAqL1xuICBwb3J0YWxUYXJnZXQ/OiBIVE1MRWxlbWVudFxuICAvKipcbiAgICogSWYgeW91IHNldCB0aGlzIHRvIHRydWUsIHRoZSBwb3B1cCB3aWxsIGJlIHJlbmRlcmVkIGluIHRoZSBET00gb25seSB3aGVuIGl0IGlzIHZpc2libGUuXG4gICAqIFdoZW4gc2V0IHRvIGZhbHNlLCB0aGUgcG9wdXAgd2lsbCBhbHdheXMgYmUgcmVuZGVyZWQgaW4gdGhlIERPTS4gQnkgZGVmYXVsdCB0aGlzIHZhbHVlIGlzIHNldCB0byBgdHJ1ZWAsIGlmIGZvciBzb21lXG4gICAqIHJlYXNvbiB5b3UgbmVlZCB0byBkaXNhYmxlIGl0LCB5b3UgY2FuIHNldCBpdCB0byBgZmFsc2VgLlxuICAgKi9cbiAgZHluYW1pY0RvbVJlbmRlcmluZz86IGJvb2xlYW5cbn1cblxuLyoqXG4gKiBAZXhwZXJpbWVudGFsIFRoaXMgY29tcG9uZW50IGlzIGV4cGVyaW1lbnRhbCBhbmQgbWF5IGJlIHN1YmplY3QgdG8gYnJlYWtpbmcgY2hhbmdlcyBpbiB0aGUgZnV0dXJlLlxuICovXG5leHBvcnQgY29uc3QgUG9wdXAgPSBmb3J3YXJkUmVmKFxuICAoXG4gICAge1xuICAgICAgY2hpbGRyZW4sXG4gICAgICB0ZXh0ID0gJycsXG4gICAgICBwbGFjZW1lbnQgPSAnYXV0bycsXG4gICAgICBpZCxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNvbnRhaW5lckZ1bGxXaWR0aCxcbiAgICAgIG1heFdpZHRoID0gMjMyLFxuICAgICAgbWF4SGVpZ2h0LFxuICAgICAgdmlzaWJsZSxcbiAgICAgIGlubmVyUmVmLFxuICAgICAgcm9sZSA9ICdwb3B1cCcsXG4gICAgICAnZGF0YS10ZXN0aWQnOiBkYXRhVGVzdElkLFxuICAgICAgaGFzQXJyb3cgPSB0cnVlLFxuICAgICAgb25DbG9zZSxcbiAgICAgIHRhYkluZGV4ID0gMCxcbiAgICAgIG9uS2V5RG93bixcbiAgICAgICdhcmlhLWhhc3BvcHVwJzogYXJpYUhhc1BvcHVwLFxuICAgICAgaGlkZU9uQ2xpY2tPdXRzaWRlID0gZmFsc2UsXG4gICAgICBkZWJvdW5jZURlbGF5ID0gREVGQVVMVF9ERUJPVU5DRV9EVVJBVElPTixcbiAgICAgIGRpc2FibGVBbmltYXRpb24gPSBmYWxzZSxcbiAgICAgIHBvcnRhbFRhcmdldCxcbiAgICAgIGR5bmFtaWNEb21SZW5kZXJpbmcgPSB0cnVlLFxuICAgIH06IFBvcHVwUHJvcHMsXG4gICAgcmVmOiBSZWY8SFRNTERpdkVsZW1lbnQ+LFxuICApID0+IHtcbiAgICBjb25zdCBjaGlsZHJlblJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgICB1c2VJbXBlcmF0aXZlSGFuZGxlKGlubmVyUmVmLCAoKSA9PiBjaGlsZHJlblJlZi5jdXJyZW50KVxuXG4gICAgY29uc3QgaW5uZXJQb3B1cFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgICB1c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgKCkgPT4gaW5uZXJQb3B1cFJlZi5jdXJyZW50IGFzIEhUTUxEaXZFbGVtZW50KVxuXG4gICAgY29uc3QgdGltZXIgPSB1c2VSZWY8UmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ+KClcbiAgICBjb25zdCBwb3B1cFBvcnRhbFRhcmdldCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgaWYgKHBvcnRhbFRhcmdldCkgcmV0dXJuIHBvcnRhbFRhcmdldFxuXG4gICAgICBpZiAocm9sZSA9PT0gJ2RpYWxvZycpIHtcbiAgICAgICAgaWYgKGNoaWxkcmVuUmVmLmN1cnJlbnQpIHJldHVybiBjaGlsZHJlblJlZi5jdXJyZW50XG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykgcmV0dXJuIGRvY3VtZW50LmJvZHlcblxuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuXG4gICAgICAvLyBXZSBjaGVjayBpZiB3aW5kb3cgZXhpc3RzIGZvciBTU1JcbiAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQuYm9keVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICAgIH0sIFtwb3J0YWxUYXJnZXQsIHJvbGUsIGNoaWxkcmVuUmVmLmN1cnJlbnRdKVxuXG4gICAgLy8gVGhlcmUgYXJlIHNvbWUgaXNzdWUgd2hlbiBtaXhpbmcgYW5pbWF0aW9uIGFuZCBtYXhIZWlnaHQgb24gc29tZSBicm93c2Vycywgc28gd2UgZGlzYWJsZSBhbmltYXRpb24gaWYgbWF4SGVpZ2h0IGlzIHNldC5cbiAgICBjb25zdCBhbmltYXRpb25EdXJhdGlvbiA9XG4gICAgICBkaXNhYmxlQW5pbWF0aW9uIHx8IG1heEhlaWdodCA/IDAgOiBERUZBVUxUX0FOSU1BVElPTl9EVVJBVElPTlxuXG4gICAgLy8gRGVib3VuY2UgdGltZXIgd2lsbCBiZSB1c2VkIHRvIHByZXZlbnQgdGhlIHBvcHVwIGZyb20gZmxpY2tlcmluZyB3aGVuIHRoZSB1c2VyIG1vdmVzIHRoZSBtb3VzZSBvdXQgYW5kIGluIHRoZSBjaGlsZHJlbiBlbGVtZW50LlxuICAgIGNvbnN0IGRlYm91bmNlVGltZXIgPSB1c2VSZWY8UmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ+KClcbiAgICBjb25zdCBbdmlzaWJsZUluRG9tLCBzZXRWaXNpYmxlSW5Eb21dID0gdXNlU3RhdGUoZmFsc2UpXG4gICAgY29uc3QgW3JldmVyc2VBbmltYXRpb24sIHNldFJldmVyc2VBbmltYXRpb25dID0gdXNlU3RhdGUoZmFsc2UpXG4gICAgY29uc3QgW3Bvc2l0aW9ucywgc2V0UG9zaXRpb25zXSA9IHVzZVN0YXRlPFBvc2l0aW9uc1R5cGU+KHtcbiAgICAgIC4uLkRFRkFVTFRfUE9TSVRJT05TLFxuICAgIH0pXG4gICAgY29uc3QgdW5pcXVlSWQgPSB1c2VJZCgpXG4gICAgY29uc3QgZ2VuZXJhdGVkSWQgPSBpZCA/PyB1bmlxdWVJZFxuICAgIGNvbnN0IGlzQ29udHJvbGxlZCA9IHZpc2libGUgIT09IHVuZGVmaW5lZFxuXG4gICAgY29uc3QgZ2VuZXJhdGVQb3B1cFBvc2l0aW9ucyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIGlmIChjaGlsZHJlblJlZi5jdXJyZW50ICYmIGlubmVyUG9wdXBSZWYuY3VycmVudCkge1xuICAgICAgICBzZXRQb3NpdGlvbnMoXG4gICAgICAgICAgY29tcHV0ZVBvc2l0aW9ucyh7XG4gICAgICAgICAgICBjaGlsZHJlblJlZixcbiAgICAgICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgICAgIHBvcHVwUmVmOiBpbm5lclBvcHVwUmVmLFxuICAgICAgICAgICAgcG9wdXBQb3J0YWxUYXJnZXQ6IHBvcHVwUG9ydGFsVGFyZ2V0IGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgIH0pLFxuICAgICAgICApXG4gICAgICB9XG4gICAgfSwgW3BsYWNlbWVudCwgcG9wdXBQb3J0YWxUYXJnZXRdKVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB3ZSBuZWVkIHRvIHJlY29tcHV0ZSBwb3NpdGlvbnMgb2YgcG9wdXAgZHVlIHRvIHdpbmRvdyBzY3JvbGwgb3IgcmVzaXplLlxuICAgICAqL1xuICAgIGNvbnN0IG9uV2luZG93Q2hhbmdlRGV0ZWN0ZWQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAvLyBXZSByZW1vdmUgYW5pbWF0aW9uIG9uIHNjcm9sbCBvciB0aGUgYW5pbWF0aW9uIHdpbGwgcmVzdGFydCBvbiBldmVyeSBzY3JvbGxcbiAgICAgIGlmIChpbm5lclBvcHVwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgaW5uZXJQb3B1cFJlZi5jdXJyZW50LnN0eWxlLmFuaW1hdGlvbiA9ICdub25lJ1xuICAgICAgfVxuXG4gICAgICBnZW5lcmF0ZVBvcHVwUG9zaXRpb25zKClcbiAgICB9LCBbZ2VuZXJhdGVQb3B1cFBvc2l0aW9ucywgaW5uZXJQb3B1cFJlZl0pXG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHdlIG5lZWQgdG8gcmVtb3ZlIHBvcHVwIHBvcnRhbCBmcm9tIERPTSBhbmQgcmVtb3ZlIGV2ZW50IGxpc3RlbmVyIHRvIGl0LlxuICAgICAqL1xuICAgIGNvbnN0IHVubW91bnRQb3B1cEZyb21Eb20gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBzZXRWaXNpYmxlSW5Eb20oZmFsc2UpXG4gICAgICBzZXRSZXZlcnNlQW5pbWF0aW9uKGZhbHNlKVxuXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25XaW5kb3dDaGFuZ2VEZXRlY3RlZCwgdHJ1ZSlcbiAgICB9LCBbb25XaW5kb3dDaGFuZ2VEZXRlY3RlZF0pXG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHdlIG5lZWQgdG8gaGlkZSBwb3B1cC4gQSB0aW1lb3V0IGlzIHNldCB0byBhbGxvdyBhbmltYXRpb24gZW5kLCB0aGVuIHJlbW92ZVxuICAgICAqIHBvcHVwIGZyb20gZG9tLlxuICAgICAqL1xuICAgIGNvbnN0IGNsb3NlUG9wdXAgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSBzZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgc2V0UmV2ZXJzZUFuaW1hdGlvbih0cnVlKVxuICAgICAgICAgIHRpbWVyLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHVubW91bnRQb3B1cEZyb21Eb20oKVxuICAgICAgICAgICAgb25DbG9zZT8uKClcbiAgICAgICAgICB9LCBhbmltYXRpb25EdXJhdGlvbilcbiAgICAgICAgfSxcbiAgICAgICAgZGVib3VuY2VEZWxheSAmJiAhZGlzYWJsZUFuaW1hdGlvbiA/IGRlYm91bmNlRGVsYXkgOiAwLFxuICAgICAgKVxuICAgIH0sIFtcbiAgICAgIGFuaW1hdGlvbkR1cmF0aW9uLFxuICAgICAgZGlzYWJsZUFuaW1hdGlvbixcbiAgICAgIGRlYm91bmNlRGVsYXksXG4gICAgICBvbkNsb3NlLFxuICAgICAgdW5tb3VudFBvcHVwRnJvbURvbSxcbiAgICBdKVxuXG4gICAgLyoqXG4gICAgICogV2hlbiBtb3VzZSBob3ZlciBvciBzdG9wIGhvdmVyaW5nIGNoaWxkcmVuIHRoaXMgZnVuY3Rpb24gZGlzcGxheSBvciBoaWRlIHBvcHVwLiBBIHRpbWVvdXQgaXMgc2V0IHRvIGFsbG93IGFuaW1hdGlvblxuICAgICAqIGVuZCwgdGhlbiByZW1vdmUgcG9wdXAgZnJvbSBkb20uXG4gICAgICovXG4gICAgY29uc3Qgb25Qb2ludGVyRXZlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAgIChpc1Zpc2libGU6IGJvb2xlYW4pID0+ICgpID0+IHtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBkZWJvdW5jZURlbGF5IGFuZCB0aGUgcG9wdXAgaXMgbm90IHZpc2libGUsIHdlIGNsZWFyIHRoZSBkZWJvdW5jZSB0aW1lclxuICAgICAgICBpZiAoIXZpc2libGUgJiYgZGVib3VuY2VEZWxheSA+IDAgJiYgZGVib3VuY2VUaW1lci5jdXJyZW50KSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KGRlYm91bmNlVGltZXIuY3VycmVudClcbiAgICAgICAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSB1bmRlZmluZWRcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoaXMgY29uZGl0aW9uIGlzIGZvciB3aGVuIHdlIHdhbnQgdG8gdW5tb3VudCB0aGUgcG9wdXBcbiAgICAgICAgLy8gVGhlcmUgaXMgZGVib3VuY2UgaW4gb3JkZXIgdG8gYXZvaWQgcG9wdXAgdG8gZmxpY2tlciB3aGVuIHdlIG1vdmUgdGhlIG1vdXNlIGZyb20gY2hpbGRyZW4gdG8gcG9wdXBcbiAgICAgICAgLy8gVGltZXIgaXMgdXNlZCB0byBmb2xsb3cgdGhlIGFuaW1hdGlvbiBkdXJhdGlvblxuICAgICAgICBpZiAoIWlzVmlzaWJsZSAmJiBpbm5lclBvcHVwUmVmLmN1cnJlbnQgJiYgIWRlYm91bmNlVGltZXIuY3VycmVudCkge1xuICAgICAgICAgIGNsb3NlUG9wdXAoKVxuICAgICAgICB9IGVsc2UgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgICAgIC8vIFRoaXMgY29uZGl0aW9uIGlzIGZvciB3aGVuIHdlIHdhbnQgdG8gbW91bnQgdGhlIHBvcHVwXG4gICAgICAgICAgLy8gSWYgdGhlIHRpbWVyIGV4aXN0cyBpdCBtZWFucyB0aGUgcG9wdXAgd2FzIGFib3V0IHRvIHVtb3VudCwgYnV0IHdlIGhvdmVyZWQgdGhlIGNoaWxkcmVuIGFnYWluLFxuICAgICAgICAgIC8vIHNvIHdlIGNsZWFyIHRoZSB0aW1lciBhbmQgdGhlIHBvcHVwIHdpbGwgbm90IGJlIHVubW91bnRlZFxuICAgICAgICAgIGlmICh0aW1lci5jdXJyZW50KSB7XG4gICAgICAgICAgICBzZXRSZXZlcnNlQW5pbWF0aW9uKGZhbHNlKVxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyLmN1cnJlbnQpXG4gICAgICAgICAgICB0aW1lci5jdXJyZW50ID0gdW5kZWZpbmVkXG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIEFuZCBoZXJlIGlzIHdoZW4gd2UgY3VycmVudGx5IGFyZSBpbiBhIGRlYm91bmNlIHRpbWVyLCBpdCBtZWFucyBwb3B1cCB3YXMgaG92ZXJlZCBkdXJpbmdcbiAgICAgICAgICAvLyB0aGF0IHBlcmlvZCwgYW5kIHNvIHdlIGNhbiBjbGVhciBkZWJvdW5jZSB0aW1lclxuICAgICAgICAgIGlmIChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSB1bmRlZmluZWRcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGRlYm91bmNlRGVsYXkgPiAwKSB7XG4gICAgICAgICAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgc2V0VmlzaWJsZUluRG9tKHRydWUpXG4gICAgICAgICAgICB9LCBkZWJvdW5jZURlbGF5KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXRWaXNpYmxlSW5Eb20odHJ1ZSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBbY2xvc2VQb3B1cCwgZGVib3VuY2VEZWxheSwgdmlzaWJsZV0sXG4gICAgKVxuXG4gICAgLyoqXG4gICAgICogT25jZSBwb3B1cCBpcyB2aXNpYmxlIGluIHRoZSBkb20gd2UgY2FuIGNvbXB1dGUgcG9zaXRpb25zLCB0aGVuIHNldCBpdCB2aXNpYmxlIG9uIHNjcmVlbiBhbmQgYWRkIGV2ZW50IHRvXG4gICAgICogcmVjb21wdXRlIHBvc2l0aW9ucyBvbiBzY3JvbGwgb3Igc2NyZWVuIHJlc2l6ZS5cbiAgICAgKi9cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHZpc2libGVJbkRvbSkge1xuICAgICAgICBnZW5lcmF0ZVBvcHVwUG9zaXRpb25zKClcblxuICAgICAgICBpZiAocG9wdXBQb3J0YWxUYXJnZXQgPT09IGRvY3VtZW50LmJvZHkpIHtcbiAgICAgICAgICAvLyBXZSB3YW50IHRvIGRldGVjdCBzY3JvbGwgYW5kIHJlc2l6ZSBpbiBvcmRlciB0byByZWNvbXB1dGUgcG9zaXRpb25zIG9mIHBvcHVwXG4gICAgICAgICAgLy8gQWRkaW5nIHRydWUgYXMgdGhpcmQgcGFyYW1ldGVyIHRvIGV2ZW50IGxpc3RlbmVyIHdpbGwgZGV0ZWN0IG5lc3RlZCBzY3JvbGxzLlxuICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBvbldpbmRvd0NoYW5nZURldGVjdGVkLCB0cnVlKVxuICAgICAgICB9XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBvbldpbmRvd0NoYW5nZURldGVjdGVkLCB0cnVlKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25XaW5kb3dDaGFuZ2VEZXRlY3RlZCwgdHJ1ZSlcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG9uV2luZG93Q2hhbmdlRGV0ZWN0ZWQsIHRydWUpXG4gICAgICAgIGlmICh0aW1lci5jdXJyZW50KSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyLmN1cnJlbnQpXG4gICAgICAgICAgdGltZXIuY3VycmVudCA9IHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgW1xuICAgICAgZ2VuZXJhdGVQb3B1cFBvc2l0aW9ucyxcbiAgICAgIG9uV2luZG93Q2hhbmdlRGV0ZWN0ZWQsXG4gICAgICB2aXNpYmxlSW5Eb20sXG4gICAgICBtYXhXaWR0aCxcbiAgICAgIHBvcHVwUG9ydGFsVGFyZ2V0LFxuICAgIF0pXG5cbiAgICAvLyBUaGlzIHdpbGwgYmUgdHJpZ2dlcmVkIHdoZW4gcG9zaXRpb25zIGFyZSBjb21wdXRlZCBhbmQgcG9wdXAgaXMgdmlzaWJsZSBpbiB0aGUgZG9tLlxuICAgIHVzZUVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKHZpc2libGVJbkRvbSAmJiBpbm5lclBvcHVwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBpbm5lclBvcHVwUmVmLmN1cnJlbnQuc3R5bGUub3BhY2l0eSA9ICcxJ1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICAgICAgW3Bvc2l0aW9uc10sXG4gICAgKVxuXG4gICAgLyoqXG4gICAgICogSWYgcG9wdXAgaGFzIGB2aXNpYmxlYCBwcm9wIGl0IG1lYW5zIHRoZSBwb3B1cCBpcyBtYW51YWxseSBjb250cm9sbGVkIHRocm91Z2ggdGhpcyBwcm9wLlxuICAgICAqIEluIHRoaXMgY2FzIHdlIGRvbid0IHdhbnQgdG8gZGlzcGxheSBwb3B1cCBvbiBob3ZlciwgYnV0IG9ubHkgd2hlbiBgdmlzaWJsZWAgaXMgdHJ1ZS5cbiAgICAgKi9cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKGlzQ29udHJvbGxlZCkge1xuICAgICAgICBvblBvaW50ZXJFdmVudCh2aXNpYmxlKSgpXG4gICAgICB9XG4gICAgfSwgW2lzQ29udHJvbGxlZCwgb25Qb2ludGVyRXZlbnQsIHZpc2libGVdKVxuXG4gICAgLy8gSGFuZGxlIGhpZGUgb24gZXNjIHByZXNzIGFuZCBoaWRlIG9uIGNsaWNrIG91dHNpZGVcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgaGFuZGxlRXNjUHJlc3MgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICBjbG9zZVBvcHVwKClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgcG9wdXBDdXJyZW50ID0gaW5uZXJQb3B1cFJlZi5jdXJyZW50XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuQ3VycmVudCA9IGNoaWxkcmVuUmVmLmN1cnJlbnRcblxuICAgICAgICBpZiAocG9wdXBDdXJyZW50ICYmIGhpZGVPbkNsaWNrT3V0c2lkZSAmJiAhZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldCAmJlxuICAgICAgICAgICAgZXZlbnQudGFyZ2V0ICE9PSBwb3B1cEN1cnJlbnQgJiZcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldCAhPT0gY2hpbGRyZW5DdXJyZW50ICYmXG4gICAgICAgICAgICAhY2hpbGRyZW5DdXJyZW50Py5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICAgICAgICFwb3B1cEN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgY2xvc2VQb3B1cCgpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodmlzaWJsZUluRG9tKSB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCBoYW5kbGVFc2NQcmVzcylcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXl1cCcsIGhhbmRsZUVzY1ByZXNzKVxuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgICAgfVxuICAgIH0sIFtcbiAgICAgIGNsb3NlUG9wdXAsXG4gICAgICB2aXNpYmxlSW5Eb20sXG4gICAgICBpbm5lclBvcHVwUmVmLFxuICAgICAgY2hpbGRyZW5SZWYsXG4gICAgICBoaWRlT25DbGlja091dHNpZGUsXG4gICAgXSlcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZXZlbnQgd2lsbCBvY2N1ciBvbmx5IGZvciBkaWFsb2cgYW5kIHdpbGwgdHJhcCBmb2N1cyBpbnNpZGUgdGhlIGRpYWxvZy5cbiAgICAgKi9cbiAgICBjb25zdCBoYW5kbGVGb2N1c1RyYXA6IEtleWJvYXJkRXZlbnRIYW5kbGVyID0gdXNlQ2FsbGJhY2soZXZlbnQgPT4ge1xuICAgICAgY29uc3QgaXNUYWJQcmVzc2VkID0gZXZlbnQua2V5ID09PSAnVGFiJ1xuICAgICAgaWYgKCFpc1RhYlByZXNzZWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuXG4gICAgICBjb25zdCBmb2N1c2FibGVFbHMgPVxuICAgICAgICBpbm5lclBvcHVwUmVmLmN1cnJlbnQ/LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICAgICAgJ2FbaHJlZl06bm90KFtkaXNhYmxlZF0pLCBidXR0b246bm90KFtkaXNhYmxlZF0pLCB0ZXh0YXJlYTpub3QoW2Rpc2FibGVkXSksIGlucHV0Om5vdChbZGlzYWJsZWRdKSwgc2VsZWN0Om5vdChbZGlzYWJsZWRdKScsXG4gICAgICAgICkgPz8gW11cblxuICAgICAgLy8gSGFuZGxlIGNhc2Ugd2hlbiBubyBpbnRlcmFjdGl2ZSBlbGVtZW50IGFyZSB3aXRoaW4gdGhlIG1vZGFsIChpbmNsdWRpbmcgY2xvc2UgaWNvbilcbiAgICAgIGlmIChmb2N1c2FibGVFbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlyc3RGb2N1c2FibGVFbCA9IGZvY3VzYWJsZUVsc1swXSBhcyBIVE1MRWxlbWVudFxuICAgICAgY29uc3QgbGFzdEZvY3VzYWJsZUVsID0gZm9jdXNhYmxlRWxzW1xuICAgICAgICBmb2N1c2FibGVFbHMubGVuZ3RoIC0gMVxuICAgICAgXSBhcyBIVE1MRWxlbWVudFxuXG4gICAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGZpcnN0Rm9jdXNhYmxlRWwgfHxcbiAgICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBpbm5lclBvcHVwUmVmLmN1cnJlbnRcbiAgICAgICAgKSB7XG4gICAgICAgICAgbGFzdEZvY3VzYWJsZUVsLmZvY3VzKClcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGxhc3RGb2N1c2FibGVFbCB8fFxuICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBpbm5lclBvcHVwUmVmLmN1cnJlbnRcbiAgICAgICkge1xuICAgICAgICBmaXJzdEZvY3VzYWJsZUVsLmZvY3VzKClcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgfVxuICAgIH0sIFtdKVxuXG4gICAgLyoqXG4gICAgICogV2lsbCByZW5kZXIgY2hpbGRyZW4gY29uZGl0aW9uYWxseSBpZiBjaGlsZHJlbiBpcyBhIGZ1bmN0aW9uIG9yIG5vdC5cbiAgICAgKi9cbiAgICBjb25zdCByZW5kZXJDaGlsZHJlbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuKHtcbiAgICAgICAgICBvbkJsdXI6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudChmYWxzZSkgOiBub29wLFxuICAgICAgICAgIG9uRm9jdXM6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudCh0cnVlKSA6IG5vb3AsXG4gICAgICAgICAgb25Qb2ludGVyRW50ZXI6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudCh0cnVlKSA6IG5vb3AsXG4gICAgICAgICAgb25Qb2ludGVyTGVhdmU6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudChmYWxzZSkgOiBub29wLFxuICAgICAgICAgIHJlZjogY2hpbGRyZW5SZWYsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRDaGlsZHJlbkNvbnRhaW5lclxuICAgICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9e2dlbmVyYXRlZElkfVxuICAgICAgICAgIGFyaWEtY29udHJvbHM9e2dlbmVyYXRlZElkfVxuICAgICAgICAgIG9uQmx1cj17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KGZhbHNlKSA6IG5vb3B9XG4gICAgICAgICAgb25Gb2N1cz17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KHRydWUpIDogbm9vcH1cbiAgICAgICAgICBvblBvaW50ZXJFbnRlcj17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KHRydWUpIDogbm9vcH1cbiAgICAgICAgICBvblBvaW50ZXJMZWF2ZT17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KGZhbHNlKSA6IG5vb3B9XG4gICAgICAgICAgcmVmPXtjaGlsZHJlblJlZn1cbiAgICAgICAgICB0YWJJbmRleD17dGFiSW5kZXh9XG4gICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PiB7XG4gICAgICAgICAgICBvbktleURvd24/LihldmVudClcbiAgICAgICAgICB9fVxuICAgICAgICAgIGRhdGEtY29udGFpbmVyLWZ1bGwtd2lkdGg9e2NvbnRhaW5lckZ1bGxXaWR0aH1cbiAgICAgICAgICBhcmlhLWhhc3BvcHVwPXthcmlhSGFzUG9wdXB9XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvU3R5bGVkQ2hpbGRyZW5Db250YWluZXI+XG4gICAgICApXG4gICAgfSwgW1xuICAgICAgYXJpYUhhc1BvcHVwLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBjb250YWluZXJGdWxsV2lkdGgsXG4gICAgICBnZW5lcmF0ZWRJZCxcbiAgICAgIGlzQ29udHJvbGxlZCxcbiAgICAgIG9uS2V5RG93bixcbiAgICAgIG9uUG9pbnRlckV2ZW50LFxuICAgICAgdGFiSW5kZXgsXG4gICAgXSlcblxuICAgIGNvbnN0IHNob3VsZFJlbmRlciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgaWYgKCFkeW5hbWljRG9tUmVuZGVyaW5nKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChkeW5hbWljRG9tUmVuZGVyaW5nICYmIHZpc2libGVJbkRvbSkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9LCBbZHluYW1pY0RvbVJlbmRlcmluZywgdmlzaWJsZUluRG9tXSlcblxuICAgIGlmICghdGV4dCkge1xuICAgICAgaWYgKHR5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIG51bGxcblxuICAgICAgcmV0dXJuIDw+e2NoaWxkcmVufTwvPlxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZXZlbnQgaGFuZGxlIGFsbG93IHVzIHRvIG5vdCBidWJibGUgdGhlIGV2ZW50IHRvIGRvY3VtZW50LmJvZHkgbGlrZSB0aGlzIHJlYWN0LXNlbGVjdCB3b3JrcyBmaW5lXG4gICAgICovXG4gICAgY29uc3Qgc3RvcENsaWNrUHJvcGFnYXRpb246IE1vdXNlRXZlbnRIYW5kbGVyID0gZXZlbnQgPT4ge1xuICAgICAgZXZlbnQubmF0aXZlRXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKClcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAge3JlbmRlckNoaWxkcmVuKCl9XG4gICAgICAgIHtzaG91bGRSZW5kZXJcbiAgICAgICAgICA/IGNyZWF0ZVBvcnRhbChcbiAgICAgICAgICAgICAgPFN0eWxlZFBvcHVwXG4gICAgICAgICAgICAgICAgcmVmPXtpbm5lclBvcHVwUmVmfVxuICAgICAgICAgICAgICAgIHBvc2l0aW9ucz17cG9zaXRpb25zfVxuICAgICAgICAgICAgICAgIG1heFdpZHRoPXttYXhXaWR0aH1cbiAgICAgICAgICAgICAgICBtYXhIZWlnaHQ9e21heEhlaWdodH1cbiAgICAgICAgICAgICAgICByb2xlPXtyb2xlfVxuICAgICAgICAgICAgICAgIGlkPXtnZW5lcmF0ZWRJZH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgICAgICAgICByZXZlcnNlQW5pbWF0aW9uPXtyZXZlcnNlQW5pbWF0aW9ufVxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtkYXRhVGVzdElkfVxuICAgICAgICAgICAgICAgIGRhdGEtaGFzLWFycm93PXtoYXNBcnJvd31cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtzdG9wQ2xpY2tQcm9wYWdhdGlvbn1cbiAgICAgICAgICAgICAgICBvblBvaW50ZXJFbnRlcj17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KHRydWUpIDogbm9vcH1cbiAgICAgICAgICAgICAgICBvblBvaW50ZXJMZWF2ZT17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KGZhbHNlKSA6IG5vb3B9XG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uRHVyYXRpb249e2FuaW1hdGlvbkR1cmF0aW9ufVxuICAgICAgICAgICAgICAgIG9uS2V5RG93bj17cm9sZSA9PT0gJ2RpYWxvZycgPyBoYW5kbGVGb2N1c1RyYXAgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICAgICAgaXNEaWFsb2c9e3JvbGUgPT09ICdkaWFsb2cnfVxuICAgICAgICAgICAgICAgIGRhdGEtdmlzaWJsZS1pbi1kb209e1xuICAgICAgICAgICAgICAgICAgIWR5bmFtaWNEb21SZW5kZXJpbmcgPyB2aXNpYmxlSW5Eb20gOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dGV4dH1cbiAgICAgICAgICAgICAgPC9TdHlsZWRQb3B1cD4sXG4gICAgICAgICAgICAgIHBvcHVwUG9ydGFsVGFyZ2V0IGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgKVxuICAgICAgICAgIDogbnVsbH1cbiAgICAgIDwvPlxuICAgIClcbiAgfSxcbilcbiJdfQ== */",
66
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
67
+ });
68
+ const Popup = forwardRef(({
69
+ children,
70
+ text = "",
71
+ placement = "auto",
72
+ id,
73
+ className,
74
+ containerFullWidth,
75
+ maxWidth = 232,
76
+ maxHeight,
77
+ visible,
78
+ innerRef,
79
+ role = "popup",
80
+ "data-testid": dataTestId,
81
+ hasArrow = true,
82
+ onClose,
83
+ tabIndex = 0,
84
+ onKeyDown,
85
+ "aria-haspopup": ariaHasPopup,
86
+ hideOnClickOutside = false,
87
+ debounceDelay = DEFAULT_DEBOUNCE_DURATION,
88
+ disableAnimation = false,
89
+ portalTarget,
90
+ dynamicDomRendering = true
91
+ }, ref) => {
92
+ const childrenRef = useRef(null);
93
+ useImperativeHandle(innerRef, () => childrenRef.current);
94
+ const innerPopupRef = useRef(null);
95
+ useImperativeHandle(ref, () => innerPopupRef.current);
96
+ const timer = useRef();
97
+ const popupPortalTarget = useMemo(() => {
98
+ if (portalTarget)
99
+ return portalTarget;
100
+ if (role === "dialog") {
101
+ if (childrenRef.current)
102
+ return childrenRef.current;
103
+ if (typeof window !== "undefined")
117
104
  return document.body;
118
- }
119
105
  return null;
120
- }, [portalTarget, role, childrenRef.current]);
121
- const animationDuration = disableAnimation || maxHeight ? 0 : DEFAULT_ANIMATION_DURATION;
122
- const debounceTimer = useRef();
123
- const [visibleInDom, setVisibleInDom] = useState(false);
124
- const [reverseAnimation, setReverseAnimation] = useState(false);
125
- const [positions, setPositions] = useState({
126
- ...DEFAULT_POSITIONS
127
- });
128
- const uniqueId = useId();
129
- const generatedId = id ?? uniqueId;
130
- const isControlled = visible !== void 0;
131
- const generatePopupPositions = useCallback(() => {
132
- if (childrenRef.current && innerPopupRef.current) {
133
- setPositions(
134
- computePositions({
135
- childrenRef,
136
- placement,
137
- popupRef: innerPopupRef,
138
- popupPortalTarget
139
- })
140
- );
106
+ }
107
+ if (typeof window !== "undefined") {
108
+ return document.body;
109
+ }
110
+ return null;
111
+ }, [portalTarget, role, childrenRef.current]);
112
+ const animationDuration = disableAnimation || maxHeight ? 0 : DEFAULT_ANIMATION_DURATION;
113
+ const debounceTimer = useRef();
114
+ const [visibleInDom, setVisibleInDom] = useState(false);
115
+ const [reverseAnimation, setReverseAnimation] = useState(false);
116
+ const [positions, setPositions] = useState({
117
+ ...DEFAULT_POSITIONS
118
+ });
119
+ const uniqueId = useId();
120
+ const generatedId = id ?? uniqueId;
121
+ const isControlled = visible !== void 0;
122
+ const generatePopupPositions = useCallback(() => {
123
+ if (childrenRef.current && innerPopupRef.current) {
124
+ setPositions(computePositions({
125
+ childrenRef,
126
+ placement,
127
+ popupRef: innerPopupRef,
128
+ popupPortalTarget
129
+ }));
130
+ }
131
+ }, [placement, popupPortalTarget]);
132
+ const onWindowChangeDetected = useCallback(() => {
133
+ if (innerPopupRef.current) {
134
+ innerPopupRef.current.style.animation = "none";
135
+ }
136
+ generatePopupPositions();
137
+ }, [generatePopupPositions, innerPopupRef]);
138
+ const unmountPopupFromDom = useCallback(() => {
139
+ setVisibleInDom(false);
140
+ setReverseAnimation(false);
141
+ window.removeEventListener("scroll", onWindowChangeDetected, true);
142
+ }, [onWindowChangeDetected]);
143
+ const closePopup = useCallback(() => {
144
+ debounceTimer.current = setTimeout(() => {
145
+ setReverseAnimation(true);
146
+ timer.current = setTimeout(() => {
147
+ unmountPopupFromDom();
148
+ onClose?.();
149
+ }, animationDuration);
150
+ }, debounceDelay && !disableAnimation ? debounceDelay : 0);
151
+ }, [animationDuration, disableAnimation, debounceDelay, onClose, unmountPopupFromDom]);
152
+ const onPointerEvent = useCallback((isVisible) => () => {
153
+ if (!visible && debounceDelay > 0 && debounceTimer.current) {
154
+ clearTimeout(debounceTimer.current);
155
+ debounceTimer.current = void 0;
156
+ }
157
+ if (!isVisible && innerPopupRef.current && !debounceTimer.current) {
158
+ closePopup();
159
+ } else if (isVisible) {
160
+ if (timer.current) {
161
+ setReverseAnimation(false);
162
+ clearTimeout(timer.current);
163
+ timer.current = void 0;
164
+ }
165
+ if (debounceTimer.current) {
166
+ clearTimeout(debounceTimer.current);
167
+ debounceTimer.current = void 0;
141
168
  }
142
- }, [placement, popupPortalTarget]);
143
- const onWindowChangeDetected = useCallback(() => {
144
- if (innerPopupRef.current) {
145
- innerPopupRef.current.style.animation = "none";
169
+ if (debounceDelay > 0) {
170
+ debounceTimer.current = setTimeout(() => {
171
+ setVisibleInDom(true);
172
+ }, debounceDelay);
173
+ } else {
174
+ setVisibleInDom(true);
146
175
  }
176
+ }
177
+ }, [closePopup, debounceDelay, visible]);
178
+ useEffect(() => {
179
+ if (visibleInDom) {
147
180
  generatePopupPositions();
148
- }, [generatePopupPositions, innerPopupRef]);
149
- const unmountPopupFromDom = useCallback(() => {
150
- setVisibleInDom(false);
151
- setReverseAnimation(false);
181
+ if (popupPortalTarget === document.body) {
182
+ window.addEventListener("scroll", onWindowChangeDetected, true);
183
+ }
184
+ window.addEventListener("resize", onWindowChangeDetected, true);
185
+ }
186
+ return () => {
152
187
  window.removeEventListener("scroll", onWindowChangeDetected, true);
153
- }, [onWindowChangeDetected]);
154
- const closePopup = useCallback(() => {
155
- debounceTimer.current = setTimeout(
156
- () => {
157
- setReverseAnimation(true);
158
- timer.current = setTimeout(() => {
159
- unmountPopupFromDom();
160
- onClose?.();
161
- }, animationDuration);
162
- },
163
- debounceDelay && !disableAnimation ? debounceDelay : 0
164
- );
165
- }, [
166
- animationDuration,
167
- disableAnimation,
168
- debounceDelay,
169
- onClose,
170
- unmountPopupFromDom
171
- ]);
172
- const onPointerEvent = useCallback(
173
- (isVisible) => () => {
174
- if (!visible && debounceDelay > 0 && debounceTimer.current) {
175
- clearTimeout(debounceTimer.current);
176
- debounceTimer.current = void 0;
177
- }
178
- if (!isVisible && innerPopupRef.current && !debounceTimer.current) {
179
- closePopup();
180
- } else if (isVisible) {
181
- if (timer.current) {
182
- setReverseAnimation(false);
183
- clearTimeout(timer.current);
184
- timer.current = void 0;
185
- }
186
- if (debounceTimer.current) {
187
- clearTimeout(debounceTimer.current);
188
- debounceTimer.current = void 0;
189
- }
190
- if (debounceDelay > 0) {
191
- debounceTimer.current = setTimeout(() => {
192
- setVisibleInDom(true);
193
- }, debounceDelay);
194
- } else {
195
- setVisibleInDom(true);
196
- }
197
- }
198
- },
199
- [closePopup, debounceDelay, visible]
200
- );
201
- useEffect(() => {
202
- if (visibleInDom) {
203
- generatePopupPositions();
204
- if (popupPortalTarget === document.body) {
205
- window.addEventListener("scroll", onWindowChangeDetected, true);
206
- }
207
- window.addEventListener("resize", onWindowChangeDetected, true);
188
+ window.removeEventListener("resize", onWindowChangeDetected, true);
189
+ if (timer.current) {
190
+ clearTimeout(timer.current);
191
+ timer.current = void 0;
208
192
  }
209
- return () => {
210
- window.removeEventListener("scroll", onWindowChangeDetected, true);
211
- window.removeEventListener("resize", onWindowChangeDetected, true);
212
- if (timer.current) {
213
- clearTimeout(timer.current);
214
- timer.current = void 0;
215
- }
216
- };
217
- }, [
218
- generatePopupPositions,
219
- onWindowChangeDetected,
220
- visibleInDom,
221
- maxWidth,
222
- popupPortalTarget
223
- ]);
224
- useEffect(
225
- () => {
226
- if (visibleInDom && innerPopupRef.current) {
227
- innerPopupRef.current.style.opacity = "1";
228
- }
229
- },
230
- // eslint-disable-next-line react-hooks/exhaustive-deps
231
- [positions]
232
- );
233
- useEffect(() => {
234
- if (isControlled) {
235
- onPointerEvent(visible)();
193
+ };
194
+ }, [generatePopupPositions, onWindowChangeDetected, visibleInDom, maxWidth, popupPortalTarget]);
195
+ useEffect(
196
+ () => {
197
+ if (visibleInDom && innerPopupRef.current) {
198
+ innerPopupRef.current.style.opacity = "1";
236
199
  }
237
- }, [isControlled, onPointerEvent, visible]);
238
- useEffect(() => {
239
- const handleEscPress = (event) => {
240
- if (event.key === "Escape") {
200
+ },
201
+ // eslint-disable-next-line react-hooks/exhaustive-deps
202
+ [positions]
203
+ );
204
+ useEffect(() => {
205
+ if (isControlled) {
206
+ onPointerEvent(visible)();
207
+ }
208
+ }, [isControlled, onPointerEvent, visible]);
209
+ useEffect(() => {
210
+ const handleEscPress = (event) => {
211
+ if (event.key === "Escape") {
212
+ event.preventDefault();
213
+ event.stopPropagation();
214
+ closePopup();
215
+ }
216
+ };
217
+ const handleClickOutside = (event) => {
218
+ const popupCurrent = innerPopupRef.current;
219
+ const childrenCurrent = childrenRef.current;
220
+ if (popupCurrent && hideOnClickOutside && !event.defaultPrevented) {
221
+ if (event.target && event.target !== popupCurrent && event.target !== childrenCurrent && !childrenCurrent?.contains(event.target) && !popupCurrent.contains(event.target)) {
241
222
  event.preventDefault();
242
223
  event.stopPropagation();
243
224
  closePopup();
244
225
  }
245
- };
246
- const handleClickOutside = (event) => {
247
- const popupCurrent = innerPopupRef.current;
248
- const childrenCurrent = childrenRef.current;
249
- if (popupCurrent && hideOnClickOutside && !event.defaultPrevented) {
250
- if (event.target && event.target !== popupCurrent && event.target !== childrenCurrent && !childrenCurrent?.contains(event.target) && !popupCurrent.contains(event.target)) {
251
- event.preventDefault();
252
- event.stopPropagation();
253
- closePopup();
254
- }
255
- }
256
- };
257
- if (visibleInDom) {
258
- document.body.addEventListener("keyup", handleEscPress);
259
- document.body.addEventListener("click", handleClickOutside);
260
- }
261
- return () => {
262
- document.body.removeEventListener("keyup", handleEscPress);
263
- document.body.removeEventListener("click", handleClickOutside);
264
- };
265
- }, [
266
- closePopup,
267
- visibleInDom,
268
- innerPopupRef,
269
- childrenRef,
270
- hideOnClickOutside
271
- ]);
272
- const handleFocusTrap = useCallback((event) => {
273
- const isTabPressed = event.key === "Tab";
274
- if (!isTabPressed) {
275
- return;
276
226
  }
277
- event.stopPropagation();
278
- const focusableEls = innerPopupRef.current?.querySelectorAll(
279
- "a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled])"
280
- ) ?? [];
281
- if (focusableEls.length === 0) {
282
- event.preventDefault();
283
- }
284
- const firstFocusableEl = focusableEls[0];
285
- const lastFocusableEl = focusableEls[focusableEls.length - 1];
286
- if (event.shiftKey) {
287
- if (document.activeElement === firstFocusableEl || document.activeElement === innerPopupRef.current) {
288
- lastFocusableEl.focus();
289
- event.preventDefault();
290
- }
291
- } else if (document.activeElement === lastFocusableEl || document.activeElement === innerPopupRef.current) {
292
- firstFocusableEl.focus();
227
+ };
228
+ if (visibleInDom) {
229
+ document.body.addEventListener("keyup", handleEscPress);
230
+ document.body.addEventListener("click", handleClickOutside);
231
+ }
232
+ return () => {
233
+ document.body.removeEventListener("keyup", handleEscPress);
234
+ document.body.removeEventListener("click", handleClickOutside);
235
+ };
236
+ }, [closePopup, visibleInDom, innerPopupRef, childrenRef, hideOnClickOutside]);
237
+ const handleFocusTrap = useCallback((event) => {
238
+ const isTabPressed = event.key === "Tab";
239
+ if (!isTabPressed) {
240
+ return;
241
+ }
242
+ event.stopPropagation();
243
+ const focusableEls = innerPopupRef.current?.querySelectorAll("a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled])") ?? [];
244
+ if (focusableEls.length === 0) {
245
+ event.preventDefault();
246
+ }
247
+ const firstFocusableEl = focusableEls[0];
248
+ const lastFocusableEl = focusableEls[focusableEls.length - 1];
249
+ if (event.shiftKey) {
250
+ if (document.activeElement === firstFocusableEl || document.activeElement === innerPopupRef.current) {
251
+ lastFocusableEl.focus();
293
252
  event.preventDefault();
294
253
  }
295
- }, []);
296
- const renderChildren = useCallback(() => {
297
- if (typeof children === "function") {
298
- return children({
299
- onBlur: !isControlled ? onPointerEvent(false) : noop,
300
- onFocus: !isControlled ? onPointerEvent(true) : noop,
301
- onPointerEnter: !isControlled ? onPointerEvent(true) : noop,
302
- onPointerLeave: !isControlled ? onPointerEvent(false) : noop,
303
- ref: childrenRef
304
- });
305
- }
306
- return /* @__PURE__ */ jsx(
307
- StyledChildrenContainer,
308
- {
309
- "aria-describedby": generatedId,
310
- "aria-controls": generatedId,
311
- onBlur: !isControlled ? onPointerEvent(false) : noop,
312
- onFocus: !isControlled ? onPointerEvent(true) : noop,
313
- onPointerEnter: !isControlled ? onPointerEvent(true) : noop,
314
- onPointerLeave: !isControlled ? onPointerEvent(false) : noop,
315
- ref: childrenRef,
316
- tabIndex,
317
- onKeyDown: (event) => {
318
- onKeyDown?.(event);
319
- },
320
- "data-container-full-width": containerFullWidth,
321
- "aria-haspopup": ariaHasPopup,
322
- children
323
- }
324
- );
325
- }, [
326
- ariaHasPopup,
327
- children,
328
- containerFullWidth,
329
- generatedId,
330
- isControlled,
331
- onKeyDown,
332
- onPointerEvent,
333
- tabIndex
334
- ]);
335
- const shouldRender = useMemo(() => {
336
- if (!dynamicDomRendering) {
337
- return true;
338
- }
339
- if (dynamicDomRendering && visibleInDom) {
340
- return true;
341
- }
342
- return false;
343
- }, [dynamicDomRendering, visibleInDom]);
344
- if (!text) {
345
- if (typeof children === "function")
346
- return null;
347
- return /* @__PURE__ */ jsx(Fragment, { children });
254
+ } else if (document.activeElement === lastFocusableEl || document.activeElement === innerPopupRef.current) {
255
+ firstFocusableEl.focus();
256
+ event.preventDefault();
348
257
  }
349
- const stopClickPropagation = (event) => {
350
- event.nativeEvent.stopImmediatePropagation();
351
- };
352
- return /* @__PURE__ */ jsxs(Fragment, { children: [
353
- renderChildren(),
354
- shouldRender ? createPortal(
355
- /* @__PURE__ */ jsx(
356
- StyledPopup,
357
- {
358
- ref: innerPopupRef,
359
- positions,
360
- maxWidth,
361
- maxHeight,
362
- role,
363
- id: generatedId,
364
- className,
365
- reverseAnimation,
366
- "data-testid": dataTestId,
367
- "data-has-arrow": hasArrow,
368
- onClick: stopClickPropagation,
369
- onPointerEnter: !isControlled ? onPointerEvent(true) : noop,
370
- onPointerLeave: !isControlled ? onPointerEvent(false) : noop,
371
- animationDuration,
372
- onKeyDown: role === "dialog" ? handleFocusTrap : void 0,
373
- isDialog: role === "dialog",
374
- "data-visible-in-dom": !dynamicDomRendering ? visibleInDom : void 0,
375
- children: text
376
- }
377
- ),
378
- popupPortalTarget
379
- ) : null
380
- ] });
258
+ }, []);
259
+ const renderChildren = useCallback(() => {
260
+ if (typeof children === "function") {
261
+ return children({
262
+ onBlur: !isControlled ? onPointerEvent(false) : noop,
263
+ onFocus: !isControlled ? onPointerEvent(true) : noop,
264
+ onPointerEnter: !isControlled ? onPointerEvent(true) : noop,
265
+ onPointerLeave: !isControlled ? onPointerEvent(false) : noop,
266
+ ref: childrenRef
267
+ });
268
+ }
269
+ return /* @__PURE__ */ jsx(StyledChildrenContainer, { "aria-describedby": generatedId, "aria-controls": generatedId, onBlur: !isControlled ? onPointerEvent(false) : noop, onFocus: !isControlled ? onPointerEvent(true) : noop, onPointerEnter: !isControlled ? onPointerEvent(true) : noop, onPointerLeave: !isControlled ? onPointerEvent(false) : noop, ref: childrenRef, tabIndex, onKeyDown: (event) => {
270
+ onKeyDown?.(event);
271
+ }, "data-container-full-width": containerFullWidth, "aria-haspopup": ariaHasPopup, children });
272
+ }, [ariaHasPopup, children, containerFullWidth, generatedId, isControlled, onKeyDown, onPointerEvent, tabIndex]);
273
+ const shouldRender = useMemo(() => {
274
+ if (!dynamicDomRendering) {
275
+ return true;
276
+ }
277
+ if (dynamicDomRendering && visibleInDom) {
278
+ return true;
279
+ }
280
+ return false;
281
+ }, [dynamicDomRendering, visibleInDom]);
282
+ if (!text) {
283
+ if (typeof children === "function")
284
+ return null;
285
+ return /* @__PURE__ */ jsx(Fragment, { children });
381
286
  }
382
- );
287
+ const stopClickPropagation = (event) => {
288
+ event.nativeEvent.stopImmediatePropagation();
289
+ };
290
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
291
+ renderChildren(),
292
+ shouldRender ? createPortal(/* @__PURE__ */ jsx(StyledPopup, { ref: innerPopupRef, positions, maxWidth, maxHeight, role, id: generatedId, className, reverseAnimation, "data-testid": dataTestId, "data-has-arrow": hasArrow, onClick: stopClickPropagation, onPointerEnter: !isControlled ? onPointerEvent(true) : noop, onPointerLeave: !isControlled ? onPointerEvent(false) : noop, animationDuration, onKeyDown: role === "dialog" ? handleFocusTrap : void 0, isDialog: role === "dialog", "data-visible-in-dom": !dynamicDomRendering ? visibleInDom : void 0, children: text }), popupPortalTarget) : null
293
+ ] });
294
+ });
383
295
  export {
384
296
  Popup
385
297
  };