@ultraviolet/ui 1.92.6 → 1.93.0

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 (331) hide show
  1. package/dist/components/ActionBar/index.cjs +2 -1
  2. package/dist/components/ActionBar/index.js +2 -1
  3. package/dist/components/Alert/index.cjs +8 -7
  4. package/dist/components/Alert/index.js +8 -7
  5. package/dist/components/Avatar/index.cjs +3 -2
  6. package/dist/components/Avatar/index.js +3 -2
  7. package/dist/components/AvatarV2/index.cjs +7 -6
  8. package/dist/components/AvatarV2/index.js +7 -6
  9. package/dist/components/Badge/index.cjs +2 -1
  10. package/dist/components/Badge/index.js +2 -1
  11. package/dist/components/Banner/index.cjs +7 -6
  12. package/dist/components/Banner/index.js +7 -6
  13. package/dist/components/BarChart/Tooltip.cjs +3 -2
  14. package/dist/components/BarChart/Tooltip.js +3 -2
  15. package/dist/components/BarChart/index.cjs +1 -0
  16. package/dist/components/BarChart/index.js +1 -0
  17. package/dist/components/BarStack/index.cjs +4 -3
  18. package/dist/components/BarStack/index.js +4 -3
  19. package/dist/components/Breadcrumbs/components/Item.cjs +4 -3
  20. package/dist/components/Breadcrumbs/components/Item.js +4 -3
  21. package/dist/components/Breadcrumbs/index.cjs +2 -1
  22. package/dist/components/Breadcrumbs/index.js +2 -1
  23. package/dist/components/Bullet/index.cjs +2 -1
  24. package/dist/components/Bullet/index.js +2 -1
  25. package/dist/components/Button/index.cjs +4 -3
  26. package/dist/components/Button/index.js +4 -3
  27. package/dist/components/Card/index.cjs +3 -2
  28. package/dist/components/Card/index.js +3 -2
  29. package/dist/components/Carousel/index.cjs +6 -5
  30. package/dist/components/Carousel/index.js +6 -5
  31. package/dist/components/Checkbox/index.cjs +10 -9
  32. package/dist/components/Checkbox/index.js +10 -9
  33. package/dist/components/CheckboxGroup/index.cjs +4 -3
  34. package/dist/components/CheckboxGroup/index.js +4 -3
  35. package/dist/components/Chip/ChipContext.cjs +1 -0
  36. package/dist/components/Chip/ChipContext.js +1 -0
  37. package/dist/components/Chip/ChipIcon.cjs +2 -1
  38. package/dist/components/Chip/ChipIcon.js +2 -1
  39. package/dist/components/Chip/index.cjs +2 -1
  40. package/dist/components/Chip/index.d.ts +1 -1
  41. package/dist/components/Chip/index.js +2 -1
  42. package/dist/components/CopyButton/index.cjs +1 -0
  43. package/dist/components/CopyButton/index.js +1 -0
  44. package/dist/components/DateInput/Context.cjs +1 -0
  45. package/dist/components/DateInput/Context.js +1 -0
  46. package/dist/components/DateInput/components/CalendarContent.cjs +2 -1
  47. package/dist/components/DateInput/components/CalendarContent.js +2 -1
  48. package/dist/components/DateInput/components/CalendarDaily.cjs +3 -2
  49. package/dist/components/DateInput/components/CalendarDaily.js +3 -2
  50. package/dist/components/DateInput/components/CalendarMonthly.cjs +2 -1
  51. package/dist/components/DateInput/components/CalendarMonthly.js +2 -1
  52. package/dist/components/DateInput/components/Popup.cjs +2 -1
  53. package/dist/components/DateInput/components/Popup.js +2 -1
  54. package/dist/components/DateInput/index.cjs +3 -2
  55. package/dist/components/DateInput/index.js +3 -2
  56. package/dist/components/Dialog/Context.cjs +1 -0
  57. package/dist/components/Dialog/Context.js +1 -0
  58. package/dist/components/Dialog/components/Button.cjs +1 -0
  59. package/dist/components/Dialog/components/Button.js +1 -0
  60. package/dist/components/Dialog/components/Buttons.cjs +1 -0
  61. package/dist/components/Dialog/components/Buttons.js +1 -0
  62. package/dist/components/Dialog/components/CancelButton.cjs +1 -0
  63. package/dist/components/Dialog/components/CancelButton.js +1 -0
  64. package/dist/components/Dialog/components/Stack.cjs +1 -0
  65. package/dist/components/Dialog/components/Stack.js +1 -0
  66. package/dist/components/Dialog/components/Text.cjs +1 -0
  67. package/dist/components/Dialog/components/Text.js +1 -0
  68. package/dist/components/Dialog/index.cjs +3 -2
  69. package/dist/components/Dialog/index.d.ts +2 -2
  70. package/dist/components/Dialog/index.js +3 -2
  71. package/dist/components/Drawer/index.cjs +9 -8
  72. package/dist/components/Drawer/index.js +9 -8
  73. package/dist/components/EmptyState/index.cjs +5 -4
  74. package/dist/components/EmptyState/index.js +5 -4
  75. package/dist/components/Expandable/index.cjs +2 -1
  76. package/dist/components/Expandable/index.js +2 -1
  77. package/dist/components/ExpandableCard/components/Title.cjs +1 -0
  78. package/dist/components/ExpandableCard/components/Title.js +1 -0
  79. package/dist/components/ExpandableCard/index.cjs +5 -4
  80. package/dist/components/ExpandableCard/index.js +5 -4
  81. package/dist/components/GlobalAlert/GlobalAlertLink.cjs +1 -0
  82. package/dist/components/GlobalAlert/GlobalAlertLink.js +1 -0
  83. package/dist/components/GlobalAlert/index.cjs +3 -2
  84. package/dist/components/GlobalAlert/index.js +3 -2
  85. package/dist/components/InfiniteScroll/index.cjs +1 -0
  86. package/dist/components/InfiniteScroll/index.js +1 -0
  87. package/dist/components/Label/index.cjs +2 -1
  88. package/dist/components/Label/index.js +2 -1
  89. package/dist/components/LineChart/CustomLegend.cjs +9 -8
  90. package/dist/components/LineChart/CustomLegend.js +9 -8
  91. package/dist/components/LineChart/Tooltip.cjs +3 -2
  92. package/dist/components/LineChart/Tooltip.js +3 -2
  93. package/dist/components/LineChart/index.cjs +1 -0
  94. package/dist/components/LineChart/index.js +1 -0
  95. package/dist/components/Link/index.cjs +4 -3
  96. package/dist/components/Link/index.js +4 -3
  97. package/dist/components/List/Cell.cjs +2 -1
  98. package/dist/components/List/Cell.js +2 -1
  99. package/dist/components/List/HeaderCell.cjs +3 -2
  100. package/dist/components/List/HeaderCell.js +3 -2
  101. package/dist/components/List/HeaderRow.cjs +3 -2
  102. package/dist/components/List/HeaderRow.js +3 -2
  103. package/dist/components/List/ListContext.cjs +1 -0
  104. package/dist/components/List/ListContext.js +1 -0
  105. package/dist/components/List/Row.cjs +7 -6
  106. package/dist/components/List/Row.js +7 -6
  107. package/dist/components/List/SelectBar.cjs +3 -2
  108. package/dist/components/List/SelectBar.js +3 -2
  109. package/dist/components/List/SkeletonRows.cjs +3 -2
  110. package/dist/components/List/SkeletonRows.js +3 -2
  111. package/dist/components/List/constants.cjs +1 -0
  112. package/dist/components/List/constants.js +1 -0
  113. package/dist/components/List/index.cjs +3 -2
  114. package/dist/components/List/index.js +3 -2
  115. package/dist/components/Loader/index.cjs +4 -3
  116. package/dist/components/Loader/index.js +4 -3
  117. package/dist/components/Menu/Item.cjs +3 -2
  118. package/dist/components/Menu/Item.js +3 -2
  119. package/dist/components/Menu/index.cjs +14 -13
  120. package/dist/components/Menu/index.js +14 -13
  121. package/dist/components/MenuV2/MenuContent.cjs +4 -3
  122. package/dist/components/MenuV2/MenuContent.js +4 -3
  123. package/dist/components/MenuV2/MenuProvider.cjs +1 -0
  124. package/dist/components/MenuV2/MenuProvider.js +1 -0
  125. package/dist/components/MenuV2/components/Group.cjs +2 -1
  126. package/dist/components/MenuV2/components/Group.js +2 -1
  127. package/dist/components/MenuV2/components/Item.cjs +4 -3
  128. package/dist/components/MenuV2/components/Item.js +4 -3
  129. package/dist/components/MenuV2/index.cjs +1 -0
  130. package/dist/components/MenuV2/index.js +1 -0
  131. package/dist/components/Meter/index.cjs +4 -3
  132. package/dist/components/Meter/index.js +4 -3
  133. package/dist/components/Modal/ModalContent.cjs +5 -3
  134. package/dist/components/Modal/ModalContent.d.ts +2 -1
  135. package/dist/components/Modal/ModalContent.js +5 -3
  136. package/dist/components/Modal/ModalProvider.cjs +1 -0
  137. package/dist/components/Modal/ModalProvider.js +1 -0
  138. package/dist/components/Modal/components/Dialog.cjs +43 -5
  139. package/dist/components/Modal/components/Dialog.d.ts +1 -1
  140. package/dist/components/Modal/components/Dialog.js +44 -6
  141. package/dist/components/Modal/components/Disclosure.cjs +1 -0
  142. package/dist/components/Modal/components/Disclosure.js +1 -0
  143. package/dist/components/Modal/index.cjs +4 -2
  144. package/dist/components/Modal/index.d.ts +5 -1
  145. package/dist/components/Modal/index.js +4 -2
  146. package/dist/components/Modal/types.d.ts +1 -0
  147. package/dist/components/Notice/index.cjs +2 -1
  148. package/dist/components/Notice/index.js +2 -1
  149. package/dist/components/Notification/index.cjs +2 -1
  150. package/dist/components/Notification/index.js +2 -1
  151. package/dist/components/NumberInput/index.cjs +6 -5
  152. package/dist/components/NumberInput/index.js +6 -5
  153. package/dist/components/NumberInputV2/index.cjs +6 -5
  154. package/dist/components/NumberInputV2/index.js +6 -5
  155. package/dist/components/Pagination/PaginationButtons.cjs +4 -3
  156. package/dist/components/Pagination/PaginationButtons.js +4 -3
  157. package/dist/components/Pagination/PerPage.cjs +2 -1
  158. package/dist/components/Pagination/PerPage.js +2 -1
  159. package/dist/components/Pagination/index.cjs +1 -0
  160. package/dist/components/Pagination/index.js +1 -0
  161. package/dist/components/PasswordCheck/index.cjs +2 -1
  162. package/dist/components/PasswordCheck/index.js +2 -1
  163. package/dist/components/PasswordStrengthMeter/index.cjs +5 -4
  164. package/dist/components/PasswordStrengthMeter/index.js +5 -4
  165. package/dist/components/PieChart/Legends.cjs +11 -10
  166. package/dist/components/PieChart/Legends.js +11 -10
  167. package/dist/components/PieChart/Tooltip.cjs +3 -2
  168. package/dist/components/PieChart/Tooltip.js +3 -2
  169. package/dist/components/PieChart/index.cjs +4 -3
  170. package/dist/components/PieChart/index.js +4 -3
  171. package/dist/components/Popover/index.cjs +3 -2
  172. package/dist/components/Popover/index.js +3 -2
  173. package/dist/components/Popup/index.cjs +4 -3
  174. package/dist/components/Popup/index.js +4 -3
  175. package/dist/components/ProgressBar/index.cjs +6 -5
  176. package/dist/components/ProgressBar/index.js +6 -5
  177. package/dist/components/Radio/index.cjs +10 -9
  178. package/dist/components/Radio/index.js +10 -9
  179. package/dist/components/RadioGroup/index.cjs +3 -2
  180. package/dist/components/RadioGroup/index.js +3 -2
  181. package/dist/components/Row/index.cjs +2 -1
  182. package/dist/components/Row/index.js +2 -1
  183. package/dist/components/SearchInput/Key.cjs +2 -1
  184. package/dist/components/SearchInput/Key.js +2 -1
  185. package/dist/components/SearchInput/KeyGroup.cjs +2 -1
  186. package/dist/components/SearchInput/KeyGroup.js +2 -1
  187. package/dist/components/SearchInput/index.cjs +4 -3
  188. package/dist/components/SearchInput/index.js +4 -3
  189. package/dist/components/SelectInput/index.cjs +8 -7
  190. package/dist/components/SelectInput/index.js +8 -7
  191. package/dist/components/SelectInputV2/Dropdown.cjs +10 -9
  192. package/dist/components/SelectInputV2/Dropdown.js +10 -9
  193. package/dist/components/SelectInputV2/DropdownOption.cjs +4 -3
  194. package/dist/components/SelectInputV2/DropdownOption.js +4 -3
  195. package/dist/components/SelectInputV2/SearchBarDropdown.cjs +2 -1
  196. package/dist/components/SelectInputV2/SearchBarDropdown.js +2 -1
  197. package/dist/components/SelectInputV2/SelectBar.cjs +6 -5
  198. package/dist/components/SelectInputV2/SelectBar.js +6 -5
  199. package/dist/components/SelectInputV2/SelectInputProvider.cjs +1 -0
  200. package/dist/components/SelectInputV2/SelectInputProvider.js +1 -0
  201. package/dist/components/SelectInputV2/index.cjs +3 -2
  202. package/dist/components/SelectInputV2/index.js +3 -2
  203. package/dist/components/SelectableCard/index.cjs +10 -9
  204. package/dist/components/SelectableCard/index.js +10 -9
  205. package/dist/components/SelectableCardGroup/index.cjs +3 -2
  206. package/dist/components/SelectableCardGroup/index.js +3 -2
  207. package/dist/components/SelectableCardOptionGroup/components/Image.cjs +2 -1
  208. package/dist/components/SelectableCardOptionGroup/components/Image.js +2 -1
  209. package/dist/components/SelectableCardOptionGroup/components/Option.cjs +5 -4
  210. package/dist/components/SelectableCardOptionGroup/components/Option.js +5 -4
  211. package/dist/components/SelectableCardOptionGroup/index.cjs +2 -1
  212. package/dist/components/SelectableCardOptionGroup/index.js +2 -1
  213. package/dist/components/Separator/index.cjs +3 -2
  214. package/dist/components/Separator/index.js +3 -2
  215. package/dist/components/Skeleton/Block.cjs +3 -2
  216. package/dist/components/Skeleton/Block.js +3 -2
  217. package/dist/components/Skeleton/Blocks.cjs +3 -2
  218. package/dist/components/Skeleton/Blocks.js +3 -2
  219. package/dist/components/Skeleton/BoxWithIcon.cjs +3 -2
  220. package/dist/components/Skeleton/BoxWithIcon.js +3 -2
  221. package/dist/components/Skeleton/Donut.cjs +5 -4
  222. package/dist/components/Skeleton/Donut.js +5 -4
  223. package/dist/components/Skeleton/IconSkeleton.cjs +2 -1
  224. package/dist/components/Skeleton/IconSkeleton.js +2 -1
  225. package/dist/components/Skeleton/Line.cjs +2 -1
  226. package/dist/components/Skeleton/Line.js +2 -1
  227. package/dist/components/Skeleton/List.cjs +4 -3
  228. package/dist/components/Skeleton/List.js +4 -3
  229. package/dist/components/Skeleton/Slider.cjs +4 -3
  230. package/dist/components/Skeleton/Slider.js +4 -3
  231. package/dist/components/Skeleton/Square.cjs +2 -1
  232. package/dist/components/Skeleton/Square.js +2 -1
  233. package/dist/components/Skeleton/index.cjs +3 -2
  234. package/dist/components/Skeleton/index.js +3 -2
  235. package/dist/components/Slider/components/DoubleSlider.cjs +6 -5
  236. package/dist/components/Slider/components/DoubleSlider.js +6 -5
  237. package/dist/components/Slider/components/Options.cjs +3 -2
  238. package/dist/components/Slider/components/Options.js +3 -2
  239. package/dist/components/Slider/components/SingleSlider.cjs +4 -3
  240. package/dist/components/Slider/components/SingleSlider.js +4 -3
  241. package/dist/components/Slider/index.cjs +1 -0
  242. package/dist/components/Slider/index.js +1 -0
  243. package/dist/components/Slider/styles.d.ts +3 -3
  244. package/dist/components/Snippet/index.cjs +10 -9
  245. package/dist/components/Snippet/index.js +10 -9
  246. package/dist/components/Stack/index.cjs +2 -1
  247. package/dist/components/Stack/index.js +2 -1
  248. package/dist/components/Status/index.cjs +4 -3
  249. package/dist/components/Status/index.js +4 -3
  250. package/dist/components/StepList/index.cjs +4 -3
  251. package/dist/components/StepList/index.js +4 -3
  252. package/dist/components/Stepper/Step.cjs +5 -4
  253. package/dist/components/Stepper/Step.js +5 -4
  254. package/dist/components/Stepper/StepperProvider.cjs +1 -0
  255. package/dist/components/Stepper/StepperProvider.js +1 -0
  256. package/dist/components/Stepper/index.cjs +4 -3
  257. package/dist/components/Stepper/index.js +4 -3
  258. package/dist/components/SwitchButton/FocusOverlay.cjs +2 -1
  259. package/dist/components/SwitchButton/FocusOverlay.js +2 -1
  260. package/dist/components/SwitchButton/index.cjs +3 -2
  261. package/dist/components/SwitchButton/index.js +3 -2
  262. package/dist/components/Table/Body.cjs +1 -0
  263. package/dist/components/Table/Body.js +1 -0
  264. package/dist/components/Table/Cell.cjs +2 -1
  265. package/dist/components/Table/Cell.js +2 -1
  266. package/dist/components/Table/Header.cjs +2 -1
  267. package/dist/components/Table/Header.js +2 -1
  268. package/dist/components/Table/HeaderCell.cjs +4 -3
  269. package/dist/components/Table/HeaderCell.js +4 -3
  270. package/dist/components/Table/HeaderRow.cjs +1 -0
  271. package/dist/components/Table/HeaderRow.js +1 -0
  272. package/dist/components/Table/Row.cjs +6 -5
  273. package/dist/components/Table/Row.js +6 -5
  274. package/dist/components/Table/SelectBar.cjs +3 -2
  275. package/dist/components/Table/SelectBar.js +3 -2
  276. package/dist/components/Table/SkeletonRows.cjs +3 -2
  277. package/dist/components/Table/SkeletonRows.js +3 -2
  278. package/dist/components/Table/TableContext.cjs +1 -0
  279. package/dist/components/Table/TableContext.js +1 -0
  280. package/dist/components/Table/index.cjs +3 -2
  281. package/dist/components/Table/index.js +3 -2
  282. package/dist/components/Tabs/Tab.cjs +6 -5
  283. package/dist/components/Tabs/Tab.js +6 -5
  284. package/dist/components/Tabs/TabMenu.cjs +4 -3
  285. package/dist/components/Tabs/TabMenu.js +4 -3
  286. package/dist/components/Tabs/TabMenuItem.cjs +2 -1
  287. package/dist/components/Tabs/TabMenuItem.js +2 -1
  288. package/dist/components/Tabs/index.cjs +4 -3
  289. package/dist/components/Tabs/index.d.ts +1 -1
  290. package/dist/components/Tabs/index.js +4 -3
  291. package/dist/components/Tag/index.cjs +4 -3
  292. package/dist/components/Tag/index.js +4 -3
  293. package/dist/components/TagInput/index.cjs +5 -4
  294. package/dist/components/TagInput/index.js +5 -4
  295. package/dist/components/TagList/index.cjs +4 -3
  296. package/dist/components/TagList/index.js +4 -3
  297. package/dist/components/Text/index.cjs +2 -1
  298. package/dist/components/Text/index.js +2 -1
  299. package/dist/components/TextArea/index.cjs +4 -3
  300. package/dist/components/TextArea/index.js +4 -3
  301. package/dist/components/TextInput/index.cjs +15 -14
  302. package/dist/components/TextInput/index.js +15 -14
  303. package/dist/components/TextInputV2/index.cjs +7 -6
  304. package/dist/components/TextInputV2/index.d.ts +1 -1
  305. package/dist/components/TextInputV2/index.js +7 -6
  306. package/dist/components/TimeInput/index.cjs +1 -0
  307. package/dist/components/TimeInput/index.js +1 -0
  308. package/dist/components/TimeInputV2/index.cjs +4 -3
  309. package/dist/components/TimeInputV2/index.js +4 -3
  310. package/dist/components/Toaster/components/Button.cjs +2 -1
  311. package/dist/components/Toaster/components/Button.js +2 -1
  312. package/dist/components/Toaster/index.cjs +3 -2
  313. package/dist/components/Toaster/index.js +3 -2
  314. package/dist/components/Toggle/index.cjs +4 -3
  315. package/dist/components/Toggle/index.js +4 -3
  316. package/dist/components/ToggleGroup/index.cjs +3 -2
  317. package/dist/components/ToggleGroup/index.js +3 -2
  318. package/dist/components/Tooltip/index.cjs +2 -1
  319. package/dist/components/Tooltip/index.js +2 -1
  320. package/dist/components/UnitInput/index.cjs +6 -5
  321. package/dist/components/UnitInput/index.js +6 -5
  322. package/dist/components/VerificationCode/index.cjs +4 -3
  323. package/dist/components/VerificationCode/index.js +4 -3
  324. package/dist/index.cjs +2 -0
  325. package/dist/index.d.ts +1 -1
  326. package/dist/index.js +6 -4
  327. package/dist/theme/ThemeRegistry.cjs +56 -0
  328. package/dist/theme/ThemeRegistry.d.ts +12 -0
  329. package/dist/theme/ThemeRegistry.js +55 -0
  330. package/dist/theme/index.d.ts +2 -1
  331. package/package.json +5 -3
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  "use strict";
2
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
4
  const jsxRuntime = require("@emotion/react/jsx-runtime");
@@ -47,7 +48,7 @@ const StyledPopup = /* @__PURE__ */ _styled__default.default("div", process.env.
47
48
  positions,
48
49
  reverseAnimation,
49
50
  animationDuration
50
- }) => /* @__PURE__ */ react.css(animationDuration, "ms ", !reverseAnimation ? animations.animation(positions) : animations.exitAnimation(positions), " forwards;" + (process.env.NODE_ENV === "production" ? "" : ";label:StyledPopup;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1BvcHVwL2luZGV4LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxRjRFIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1BvcHVwL2luZGV4LnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgdHlwZSB7XG4gIEhUTUxBdHRyaWJ1dGVzLFxuICBLZXlib2FyZEV2ZW50SGFuZGxlcixcbiAgTW91c2VFdmVudEhhbmRsZXIsXG4gIFJlYWN0Tm9kZSxcbiAgUmVmLFxuICBSZWZPYmplY3QsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtcbiAgZm9yd2FyZFJlZixcbiAgc3RhcnRUcmFuc2l0aW9uLFxuICB1c2VDYWxsYmFjayxcbiAgdXNlRWZmZWN0LFxuICB1c2VJZCxcbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZSxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgeyBpc0NsaWVudFNpZGUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2lzQ2xpZW50U2lkZSdcbmltcG9ydCB0eXBlIHsgUG9zaXRpb25zVHlwZSB9IGZyb20gJy4vYW5pbWF0aW9ucydcbmltcG9ydCB7IGFuaW1hdGlvbiwgZXhpdEFuaW1hdGlvbiB9IGZyb20gJy4vYW5pbWF0aW9ucydcbmltcG9ydCB0eXBlIHsgUG9wdXBBbGlnbiwgUG9wdXBQbGFjZW1lbnQgfSBmcm9tICcuL2hlbHBlcnMnXG5pbXBvcnQge1xuICBERUZBVUxUX0FSUk9XX1dJRFRILFxuICBERUZBVUxUX1BPU0lUSU9OUyxcbiAgY29tcHV0ZVBvc2l0aW9ucyxcbn0gZnJvbSAnLi9oZWxwZXJzJ1xuXG5jb25zdCBERUZBVUxUX0FOSU1BVElPTl9EVVJBVElPTiA9IDIzMCAvLyBpbiBtc1xuY29uc3QgREVGQVVMVF9ERUJPVU5DRV9EVVJBVElPTiA9IDIwMCAvLyBpbiBtc1xuXG5jb25zdCBub29wID0gKCkgPT4ge31cblxudHlwZSBTdHlsZWRQb3B1cFByb3BzID0ge1xuICBtYXhXaWR0aDogbnVtYmVyIHwgc3RyaW5nXG4gIHBvc2l0aW9uczogUG9zaXRpb25zVHlwZVxuICByZXZlcnNlQW5pbWF0aW9uOiBib29sZWFuXG4gIG1heEhlaWdodD86IG51bWJlciB8IHN0cmluZ1xuICBhbmltYXRpb25EdXJhdGlvbj86IG51bWJlclxuICBpc0RpYWxvZzogYm9vbGVhblxufVxuXG4vKipcbiAqIFRoaXMgZXZlbnQgaGFuZGxlIGFsbG93IHVzIHRvIG5vdCBidWJibGUgdGhlIGV2ZW50IHRvIGRvY3VtZW50LmJvZHkgbGlrZSB0aGlzIHJlYWN0LXNlbGVjdCB3b3JrcyBmaW5lXG4gKi9cbmNvbnN0IHN0b3BDbGlja1Byb3BhZ2F0aW9uOiBNb3VzZUV2ZW50SGFuZGxlciA9IGV2ZW50ID0+IHtcbiAgZXZlbnQubmF0aXZlRXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKClcbn1cblxuY29uc3QgU3R5bGVkUG9wdXAgPSBzdHlsZWQoJ2RpdicsIHtcbiAgc2hvdWxkRm9yd2FyZFByb3A6IHByb3AgPT5cbiAgICAhW1xuICAgICAgJ21heFdpZHRoJyxcbiAgICAgICdwb3NpdGlvbnMnLFxuICAgICAgJ3JldmVyc2VBbmltYXRpb24nLFxuICAgICAgJ21heEhlaWdodCcsXG4gICAgICAnYW5pbWF0aW9uRHVyYXRpb24nLFxuICAgICAgJ2lzRGlhbG9nJyxcbiAgICBdLmluY2x1ZGVzKHByb3ApLFxufSk8U3R5bGVkUG9wdXBQcm9wcz5gXG4gIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFN0cm9uZ2VyfTtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dFN0cm9uZ2VyfTtcbiAgYm9yZGVyLXJhZGl1czogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5yYWRpaS5kZWZhdWx0fTtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiBgJHt0aGVtZS5zcGFjZVsnMC41J119ICR7dGhlbWUuc3BhY2VbJzEnXX1gfTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG1heC13aWR0aDogJHsoeyBtYXhXaWR0aCB9KSA9PlxuICAgIHR5cGVvZiBtYXhXaWR0aCA9PT0gJ251bWJlcicgPyBgJHttYXhXaWR0aH1weGAgOiBtYXhXaWR0aH07XG4gIG1heC1oZWlnaHQ6ICR7KHsgbWF4SGVpZ2h0IH0pID0+XG4gICAgdHlwZW9mIG1heEhlaWdodCA9PT0gJ251bWJlcicgPyBgJHttYXhIZWlnaHR9cHhgIDogbWF4SGVpZ2h0fTtcbiAgb3ZlcmZsb3c6ICR7KHsgbWF4SGVpZ2h0IH0pID0+IChtYXhIZWlnaHQgPyAnYXV0bycgOiB1bmRlZmluZWQpfTtcbiAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbiAgZm9udC1zaXplOiAwLjhyZW07XG4gIGluc2V0OiAwIGF1dG8gYXV0byAwO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIG9wYWNpdHk6IDA7XG4gIHotaW5kZXg6IDE7XG4gIHRyYW5zZm9ybTogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLnBvcHVwUG9zaXRpb259O1xuXG4gICZbZGF0YS1hbmltYXRlZD1cInRydWVcIl0ge1xuICAgIGFuaW1hdGlvbjogJHsoeyBwb3NpdGlvbnMsIHJldmVyc2VBbmltYXRpb24sIGFuaW1hdGlvbkR1cmF0aW9uIH0pID0+IGNzc2BcbiAgICAgICR7YW5pbWF0aW9uRHVyYXRpb259bXMgJHtcbiAgICAgICAgIXJldmVyc2VBbmltYXRpb24gPyBhbmltYXRpb24ocG9zaXRpb25zKSA6IGV4aXRBbmltYXRpb24ocG9zaXRpb25zKVxuICAgICAgfSBmb3J3YXJkc1xuICAgIGB9O1xuICB9XG5cbiAgJltkYXRhLWhhcy1hcnJvdz1cInRydWVcIl0ge1xuICAgICY6OmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAkeyh7IHBvc2l0aW9ucyB9KSA9PiBwb3NpdGlvbnMuYXJyb3dUb3B9cHg7XG4gICAgICBsZWZ0OiAkeyh7IHBvc2l0aW9ucyB9KSA9PiBwb3NpdGlvbnMuYXJyb3dMZWZ0fXB4O1xuICAgICAgdHJhbnNmb3JtOiAkeyh7IHBvc2l0aW9ucyB9KSA9PiBwb3NpdGlvbnMuYXJyb3dUcmFuc2Zvcm19XG4gICAgICAgIHJvdGF0ZSgkeyh7IHBvc2l0aW9ucyB9KSA9PiBwb3NpdGlvbnMucm90YXRlfWRlZyk7XG4gICAgICBtYXJnaW4tbGVmdDogLSR7REVGQVVMVF9BUlJPV19XSURUSH1weDtcbiAgICAgIGJvcmRlci13aWR0aDogJHtERUZBVUxUX0FSUk9XX1dJRFRIfXB4O1xuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAgIGJvcmRlci1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kU3Ryb25nZXJ9XG4gICAgICAgIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgJltkYXRhLXZpc2libGUtaW4tZG9tPVwiZmFsc2VcIl0ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbmBcblxuY29uc3QgU3R5bGVkQ2hpbGRyZW5Db250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBpbmhlcml0O1xuXG4gICZbZGF0YS1jb250YWluZXItZnVsbC13aWR0aD1cInRydWVcIl0ge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5gXG5cbnR5cGUgUG9wdXBQcm9wcyA9IHtcbiAgLyoqXG4gICAqIElkIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGlmIG5vdCBzZXQuIEl0IGlzIHVzZWQgZm9yIGFzc29jaWF0aW5nIHBvcHVwIHdyYXBwZXIgd2l0aCBwb3B1cCBwb3J0YWwuXG4gICAqL1xuICBpZD86IHN0cmluZ1xuICBjaGlsZHJlbjpcbiAgICB8IFJlYWN0Tm9kZVxuICAgIHwgKChyZW5kZXJQcm9wczoge1xuICAgICAgICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgICAgICAgb25CbHVyOiAoKSA9PiB2b2lkXG4gICAgICAgIG9uRm9jdXM6ICgpID0+IHZvaWRcbiAgICAgICAgb25Qb2ludGVyRW50ZXI6ICgpID0+IHZvaWRcbiAgICAgICAgb25Qb2ludGVyTGVhdmU6ICgpID0+IHZvaWRcbiAgICAgICAgcmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPlxuICAgICAgfSkgPT4gUmVhY3ROb2RlKVxuICBtYXhXaWR0aD86IG51bWJlciB8IHN0cmluZ1xuICAvKipcbiAgICogYGF1dG9gIHBsYWNlbWVudCB3aWxsIGNoYW5nZSB0aGUgcG9zaXRpb24gb2YgdGhlIHBvcHVwIGlmIGl0IGRvZXNuJ3QgZml0IGluIHRoZSB2aWV3cG9ydC5cbiAgICovXG4gIHBsYWNlbWVudD86IFBvcHVwUGxhY2VtZW50XG4gIC8qKlxuICAgKiBBbGlnbiB0aGUgcG9wdXAgdG8gdGhlIHN0YXJ0IG9yIGNlbnRlciBvZiB0aGUgY2hpbGRyZW4uXG4gICAqL1xuICBhbGlnbj86IFBvcHVwQWxpZ25cbiAgLyoqXG4gICAqIENvbnRlbnQgb2YgdGhlIHBvcHVwLCBwcmVmZXJhYmx5IHRleHQgaW5zaWRlLlxuICAgKi9cbiAgdGV4dD86IFJlYWN0Tm9kZVxuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIEl0IHdpbGwgYWRkIGB3aWR0aDogMTAwJWAgdG8gdGhlIHBvcHVwIGNvbnRhaW5lci5cbiAgICovXG4gIGNvbnRhaW5lckZ1bGxXaWR0aD86IGJvb2xlYW5cbiAgLyoqXG4gICAqIEl0IHdpbGwgZm9yY2UgZGlzcGxheSBwb3B1cC4gVGhpcyBjYW4gYmUgdXNlZnVsIGlmIHlvdSBuZWVkIHRvIGFsd2F5cyBkaXNwbGF5IHRoZSBwb3B1cCB3aXRob3V0IGhvdmVyIG5lZWRlZC5cbiAgICovXG4gIHZpc2libGU/OiBib29sZWFuXG4gIGlubmVyUmVmPzogUmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD5cbiAgcm9sZT86IHN0cmluZ1xuICAnZGF0YS10ZXN0aWQnPzogc3RyaW5nXG4gIGhhc0Fycm93PzogYm9vbGVhblxuICBvbkNsb3NlPzogKCkgPT4gdm9pZFxuICB0YWJJbmRleD86IG51bWJlclxuICBvbktleURvd24/OiBLZXlib2FyZEV2ZW50SGFuZGxlclxuICAnYXJpYS1oYXNwb3B1cCc/OiBIVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD5bJ2FyaWEtaGFzcG9wdXAnXVxuICBoaWRlT25DbGlja091dHNpZGU/OiBib29sZWFuXG4gIC8qKlxuICAgKiBJZiB5b3Ugc2V0IGRlYm91bmNlVGltZSB0byBmYWxzZSwgdGhlIHBvcHVwIHdpbGwgbm90IGRlYm91bmNlIHRoZSBob3ZlciBldmVudCBhbmQgd2lsbCBiZSBkaXNwbGF5ZWQgaW5zdGFudGx5LlxuICAgKiBJZiBzZXQgdG8gMCBpdCB3aWxsIGRpc2FibGUgZGVib3VuY2UuXG4gICAqL1xuICBkZWJvdW5jZURlbGF5PzogbnVtYmVyXG4gIC8qKlxuICAgKiBJZiB5b3Ugc2V0IGEgbWF4IGhlaWdodCBrZWVwIGluIG1pbmQgdGhhdCB0aGUgYW5pbWF0aW9uIGlzIGRpc2FibGVkLCBvciBpdCB3aWxsIG5vdCB3b3JrIHByb3Blcmx5IG9uIHNvbWUgYnJvd3NlcnMuXG4gICAqL1xuICBtYXhIZWlnaHQ/OiBzdHJpbmcgfCBudW1iZXJcbiAgLyoqXG4gICAqIFdpbGwgcmVtb3ZlIHRoZSBhbmltYXRpb24gb24gdGhlIHBvcHVwIGlmIHNldCB0byBmYWxzZS5cbiAgICovXG4gIGRpc2FibGVBbmltYXRpb24/OiBib29sZWFuXG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgcG9ydGFsIHRhcmdldCBpcyBjaGlsZHJlbiBjb250YWluZXIgb3IgZG9jdW1lbnQuYm9keSBpZiBjaGlsZHJlbiBpcyBhIGZ1bmN0aW9uLiBZb3UgY2FuIG92ZXJyaWRlIHRoaXNcbiAgICogYmVoYXZpb3IgYnkgc2V0dGluZyBhIHBvcnRhbFRhcmdldCBwcm9wLlxuICAgKi9cbiAgcG9ydGFsVGFyZ2V0PzogSFRNTEVsZW1lbnRcbiAgLyoqXG4gICAqIElmIHlvdSBzZXQgdGhpcyB0byB0cnVlLCB0aGUgcG9wdXAgd2lsbCBiZSByZW5kZXJlZCBpbiB0aGUgRE9NIG9ubHkgd2hlbiBpdCBpcyB2aXNpYmxlLlxuICAgKiBXaGVuIHNldCB0byBmYWxzZSwgdGhlIHBvcHVwIHdpbGwgYWx3YXlzIGJlIHJlbmRlcmVkIGluIHRoZSBET00uIEJ5IGRlZmF1bHQgdGhpcyB2YWx1ZSBpcyBzZXQgdG8gYHRydWVgLCBpZiBmb3Igc29tZVxuICAgKiByZWFzb24geW91IG5lZWQgdG8gZGlzYWJsZSBpdCwgeW91IGNhbiBzZXQgaXQgdG8gYGZhbHNlYC5cbiAgICovXG4gIGR5bmFtaWNEb21SZW5kZXJpbmc/OiBib29sZWFuXG59XG5cbi8qKlxuICogQGV4cGVyaW1lbnRhbCBUaGlzIGNvbXBvbmVudCBpcyBleHBlcmltZW50YWwgYW5kIG1heSBiZSBzdWJqZWN0IHRvIGJyZWFraW5nIGNoYW5nZXMgaW4gdGhlIGZ1dHVyZS5cbiAqL1xuZXhwb3J0IGNvbnN0IFBvcHVwID0gZm9yd2FyZFJlZihcbiAgKFxuICAgIHtcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgdGV4dCA9ICcnLFxuICAgICAgcGxhY2VtZW50ID0gJ2F1dG8nLFxuICAgICAgYWxpZ24gPSAnY2VudGVyJyxcbiAgICAgIGlkLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29udGFpbmVyRnVsbFdpZHRoLFxuICAgICAgbWF4V2lkdGggPSAnMTQuNXJlbScsXG4gICAgICBtYXhIZWlnaHQsXG4gICAgICB2aXNpYmxlLFxuICAgICAgaW5uZXJSZWYsXG4gICAgICByb2xlID0gJ3BvcHVwJyxcbiAgICAgICdkYXRhLXRlc3RpZCc6IGRhdGFUZXN0SWQsXG4gICAgICBoYXNBcnJvdyA9IHRydWUsXG4gICAgICBvbkNsb3NlLFxuICAgICAgdGFiSW5kZXggPSAwLFxuICAgICAgb25LZXlEb3duLFxuICAgICAgJ2FyaWEtaGFzcG9wdXAnOiBhcmlhSGFzUG9wdXAsXG4gICAgICBoaWRlT25DbGlja091dHNpZGUgPSBmYWxzZSxcbiAgICAgIGRlYm91bmNlRGVsYXkgPSBERUZBVUxUX0RFQk9VTkNFX0RVUkFUSU9OLFxuICAgICAgZGlzYWJsZUFuaW1hdGlvbiA9IGZhbHNlLFxuICAgICAgcG9ydGFsVGFyZ2V0LFxuICAgICAgZHluYW1pY0RvbVJlbmRlcmluZyA9IHRydWUsXG4gICAgfTogUG9wdXBQcm9wcyxcbiAgICByZWY6IFJlZjxIVE1MRGl2RWxlbWVudD4sXG4gICkgPT4ge1xuICAgIGNvbnN0IGNoaWxkcmVuUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICAgIHVzZUltcGVyYXRpdmVIYW5kbGUoaW5uZXJSZWYsICgpID0+IGNoaWxkcmVuUmVmLmN1cnJlbnQgYXMgSFRNTERpdkVsZW1lbnQpXG5cbiAgICBjb25zdCBpbm5lclBvcHVwUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICAgIHVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCAoKSA9PiBpbm5lclBvcHVwUmVmLmN1cnJlbnQgYXMgSFRNTERpdkVsZW1lbnQpXG5cbiAgICBjb25zdCB0aW1lciA9IHVzZVJlZjxSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0Pj4odW5kZWZpbmVkKVxuICAgIGNvbnN0IHBvcHVwUG9ydGFsVGFyZ2V0ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICBpZiAocG9ydGFsVGFyZ2V0KSByZXR1cm4gcG9ydGFsVGFyZ2V0XG5cbiAgICAgIGlmIChyb2xlID09PSAnZGlhbG9nJykge1xuICAgICAgICBpZiAoY2hpbGRyZW5SZWYuY3VycmVudCkgcmV0dXJuIGNoaWxkcmVuUmVmLmN1cnJlbnRcbiAgICAgICAgaWYgKGlzQ2xpZW50U2lkZSkgcmV0dXJuIGRvY3VtZW50LmJvZHlcblxuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuXG4gICAgICAvLyBXZSBjaGVjayBpZiB3aW5kb3cgZXhpc3RzIGZvciBTU1JcbiAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQuYm9keVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICAgIH0sIFtwb3J0YWxUYXJnZXQsIHJvbGUsIGNoaWxkcmVuUmVmLmN1cnJlbnRdKVxuXG4gICAgLy8gVGhlcmUgYXJlIHNvbWUgaXNzdWUgd2hlbiBtaXhpbmcgYW5pbWF0aW9uIGFuZCBtYXhIZWlnaHQgb24gc29tZSBicm93c2Vycywgc28gd2UgZGlzYWJsZSBhbmltYXRpb24gaWYgbWF4SGVpZ2h0IGlzIHNldC5cbiAgICBjb25zdCBhbmltYXRpb25EdXJhdGlvbiA9XG4gICAgICBkaXNhYmxlQW5pbWF0aW9uIHx8IG1heEhlaWdodCA/IDAgOiBERUZBVUxUX0FOSU1BVElPTl9EVVJBVElPTlxuXG4gICAgLy8gRGVib3VuY2UgdGltZXIgd2lsbCBiZSB1c2VkIHRvIHByZXZlbnQgdGhlIHBvcHVwIGZyb20gZmxpY2tlcmluZyB3aGVuIHRoZSB1c2VyIG1vdmVzIHRoZSBtb3VzZSBvdXQgYW5kIGluIHRoZSBjaGlsZHJlbiBlbGVtZW50LlxuICAgIGNvbnN0IGRlYm91bmNlVGltZXIgPSB1c2VSZWY8UmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4+KHVuZGVmaW5lZClcbiAgICBjb25zdCBbdmlzaWJsZUluRG9tLCBzZXRWaXNpYmxlSW5Eb21dID0gdXNlU3RhdGUoZmFsc2UpXG4gICAgY29uc3QgW3JldmVyc2VBbmltYXRpb24sIHNldFJldmVyc2VBbmltYXRpb25dID0gdXNlU3RhdGUoZmFsc2UpXG4gICAgY29uc3QgW3Bvc2l0aW9ucywgc2V0UG9zaXRpb25zXSA9IHVzZVN0YXRlPFBvc2l0aW9uc1R5cGU+KHtcbiAgICAgIC4uLkRFRkFVTFRfUE9TSVRJT05TLFxuICAgIH0pXG4gICAgY29uc3QgdW5pcXVlSWQgPSB1c2VJZCgpXG4gICAgY29uc3QgZ2VuZXJhdGVkSWQgPSBpZCA/PyB1bmlxdWVJZFxuICAgIGNvbnN0IGlzQ29udHJvbGxlZCA9IHZpc2libGUgIT09IHVuZGVmaW5lZFxuXG4gICAgY29uc3QgZ2VuZXJhdGVQb3B1cFBvc2l0aW9ucyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIGlmIChjaGlsZHJlblJlZi5jdXJyZW50ICYmIGlubmVyUG9wdXBSZWYuY3VycmVudCkge1xuICAgICAgICBzZXRQb3NpdGlvbnMoXG4gICAgICAgICAgY29tcHV0ZVBvc2l0aW9ucyh7XG4gICAgICAgICAgICBjaGlsZHJlblJlZixcbiAgICAgICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgICAgIHBvcHVwUmVmOiBpbm5lclBvcHVwUmVmLFxuICAgICAgICAgICAgcG9wdXBQb3J0YWxUYXJnZXQ6IHBvcHVwUG9ydGFsVGFyZ2V0IGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgaGFzQXJyb3csXG4gICAgICAgICAgICBhbGlnbixcbiAgICAgICAgICB9KSxcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH0sIFtoYXNBcnJvdywgcGxhY2VtZW50LCBwb3B1cFBvcnRhbFRhcmdldCwgYWxpZ25dKVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB3ZSBuZWVkIHRvIHJlY29tcHV0ZSBwb3NpdGlvbnMgb2YgcG9wdXAgZHVlIHRvIHdpbmRvdyBzY3JvbGwgb3IgcmVzaXplLlxuICAgICAqL1xuICAgIGNvbnN0IG9uV2luZG93Q2hhbmdlRGV0ZWN0ZWQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAvLyBXZSByZW1vdmUgYW5pbWF0aW9uIG9uIHNjcm9sbCBvciB0aGUgYW5pbWF0aW9uIHdpbGwgcmVzdGFydCBvbiBldmVyeSBzY3JvbGxcbiAgICAgIGlmIChpbm5lclBvcHVwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgaW5uZXJQb3B1cFJlZi5jdXJyZW50LnN0eWxlLmFuaW1hdGlvbiA9ICdub25lJ1xuICAgICAgfVxuXG4gICAgICBnZW5lcmF0ZVBvcHVwUG9zaXRpb25zKClcbiAgICB9LCBbZ2VuZXJhdGVQb3B1cFBvc2l0aW9ucywgaW5uZXJQb3B1cFJlZl0pXG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHdlIG5lZWQgdG8gcmVtb3ZlIHBvcHVwIHBvcnRhbCBmcm9tIERPTSBhbmQgcmVtb3ZlIGV2ZW50IGxpc3RlbmVyIHRvIGl0LlxuICAgICAqL1xuICAgIGNvbnN0IHVubW91bnRQb3B1cEZyb21Eb20gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBzZXRWaXNpYmxlSW5Eb20oZmFsc2UpXG4gICAgICBzZXRSZXZlcnNlQW5pbWF0aW9uKGZhbHNlKVxuXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25XaW5kb3dDaGFuZ2VEZXRlY3RlZCwgdHJ1ZSlcbiAgICB9LCBbb25XaW5kb3dDaGFuZ2VEZXRlY3RlZF0pXG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHdlIG5lZWQgdG8gaGlkZSBwb3B1cC4gQSB0aW1lb3V0IGlzIHNldCB0byBhbGxvdyBhbmltYXRpb24gZW5kLCB0aGVuIHJlbW92ZVxuICAgICAqIHBvcHVwIGZyb20gZG9tLlxuICAgICAqL1xuICAgIGNvbnN0IGNsb3NlUG9wdXAgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBjb25zdCBjbG9zZUZ1bmN0aW9uID0gKCkgPT4ge1xuICAgICAgICBpZiAoIWRpc2FibGVBbmltYXRpb24pIHtcbiAgICAgICAgICBzZXRSZXZlcnNlQW5pbWF0aW9uKHRydWUpXG5cbiAgICAgICAgICB0aW1lci5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBvbkNsb3NlPy4oKVxuICAgICAgICAgICAgdW5tb3VudFBvcHVwRnJvbURvbSgpXG4gICAgICAgICAgfSwgYW5pbWF0aW9uRHVyYXRpb24pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb25DbG9zZT8uKClcbiAgICAgICAgICB1bm1vdW50UG9wdXBGcm9tRG9tKClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIWRpc2FibGVBbmltYXRpb24pIHtcbiAgICAgICAgZGVib3VuY2VUaW1lci5jdXJyZW50ID0gc2V0VGltZW91dChcbiAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICBjbG9zZUZ1bmN0aW9uKClcbiAgICAgICAgICB9LFxuICAgICAgICAgIGRlYm91bmNlRGVsYXkgJiYgIWRpc2FibGVBbmltYXRpb24gPyBkZWJvdW5jZURlbGF5IDogMCxcbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xvc2VGdW5jdGlvbigpXG4gICAgICB9XG4gICAgfSwgW1xuICAgICAgYW5pbWF0aW9uRHVyYXRpb24sXG4gICAgICBkaXNhYmxlQW5pbWF0aW9uLFxuICAgICAgZGVib3VuY2VEZWxheSxcbiAgICAgIG9uQ2xvc2UsXG4gICAgICB1bm1vdW50UG9wdXBGcm9tRG9tLFxuICAgIF0pXG5cbiAgICAvKipcbiAgICAgKiBXaGVuIG1vdXNlIGhvdmVyIG9yIHN0b3AgaG92ZXJpbmcgY2hpbGRyZW4gdGhpcyBmdW5jdGlvbiBkaXNwbGF5IG9yIGhpZGUgcG9wdXAuIEEgdGltZW91dCBpcyBzZXQgdG8gYWxsb3cgYW5pbWF0aW9uXG4gICAgICogZW5kLCB0aGVuIHJlbW92ZSBwb3B1cCBmcm9tIGRvbS5cbiAgICAgKi9cbiAgICBjb25zdCBvblBvaW50ZXJFdmVudCA9IHVzZUNhbGxiYWNrKFxuICAgICAgKGlzVmlzaWJsZTogYm9vbGVhbikgPT4gKCkgPT4ge1xuICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIGRlYm91bmNlRGVsYXkgYW5kIHRoZSBwb3B1cCBpcyBub3QgdmlzaWJsZSwgd2UgY2xlYXIgdGhlIGRlYm91bmNlIHRpbWVyXG4gICAgICAgIGlmICghdmlzaWJsZSAmJiBkZWJvdW5jZURlbGF5ID4gMCAmJiBkZWJvdW5jZVRpbWVyLmN1cnJlbnQpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQoZGVib3VuY2VUaW1lci5jdXJyZW50KVxuICAgICAgICAgIGRlYm91bmNlVGltZXIuY3VycmVudCA9IHVuZGVmaW5lZFxuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhpcyBjb25kaXRpb24gaXMgZm9yIHdoZW4gd2Ugd2FudCB0byB1bm1vdW50IHRoZSBwb3B1cFxuICAgICAgICAvLyBUaGVyZSBpcyBkZWJvdW5jZSBpbiBvcmRlciB0byBhdm9pZCBwb3B1cCB0byBmbGlja2VyIHdoZW4gd2UgbW92ZSB0aGUgbW91c2UgZnJvbSBjaGlsZHJlbiB0byBwb3B1cFxuICAgICAgICAvLyBUaW1lciBpcyB1c2VkIHRvIGZvbGxvdyB0aGUgYW5pbWF0aW9uIGR1cmF0aW9uXG4gICAgICAgIGlmICghaXNWaXNpYmxlICYmIGlubmVyUG9wdXBSZWYuY3VycmVudCAmJiAhZGVib3VuY2VUaW1lci5jdXJyZW50KSB7XG4gICAgICAgICAgY2xvc2VQb3B1cCgpXG4gICAgICAgIH0gZWxzZSBpZiAoaXNWaXNpYmxlKSB7XG4gICAgICAgICAgLy8gVGhpcyBjb25kaXRpb24gaXMgZm9yIHdoZW4gd2Ugd2FudCB0byBtb3VudCB0aGUgcG9wdXBcbiAgICAgICAgICAvLyBJZiB0aGUgdGltZXIgZXhpc3RzIGl0IG1lYW5zIHRoZSBwb3B1cCB3YXMgYWJvdXQgdG8gdW1vdW50LCBidXQgd2UgaG92ZXJlZCB0aGUgY2hpbGRyZW4gYWdhaW4sXG4gICAgICAgICAgLy8gc28gd2UgY2xlYXIgdGhlIHRpbWVyIGFuZCB0aGUgcG9wdXAgd2lsbCBub3QgYmUgdW5tb3VudGVkXG4gICAgICAgICAgaWYgKHRpbWVyLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHNldFJldmVyc2VBbmltYXRpb24oZmFsc2UpXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXIuY3VycmVudClcbiAgICAgICAgICAgIHRpbWVyLmN1cnJlbnQgPSB1bmRlZmluZWRcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gQW5kIGhlcmUgaXMgd2hlbiB3ZSBjdXJyZW50bHkgYXJlIGluIGEgZGVib3VuY2UgdGltZXIsIGl0IG1lYW5zIHBvcHVwIHdhcyBob3ZlcmVkIGR1cmluZ1xuICAgICAgICAgIC8vIHRoYXQgcGVyaW9kLCBhbmQgc28gd2UgY2FuIGNsZWFyIGRlYm91bmNlIHRpbWVyXG4gICAgICAgICAgaWYgKGRlYm91bmNlVGltZXIuY3VycmVudCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGRlYm91bmNlVGltZXIuY3VycmVudClcbiAgICAgICAgICAgIGRlYm91bmNlVGltZXIuY3VycmVudCA9IHVuZGVmaW5lZFxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZGVib3VuY2VEZWxheSA+IDApIHtcbiAgICAgICAgICAgIGRlYm91bmNlVGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICBzZXRWaXNpYmxlSW5Eb20odHJ1ZSlcbiAgICAgICAgICAgIH0sIGRlYm91bmNlRGVsYXkpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN0YXJ0VHJhbnNpdGlvbigoKSA9PiB7XG4gICAgICAgICAgICAgIHNldFZpc2libGVJbkRvbSh0cnVlKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBbY2xvc2VQb3B1cCwgZGVib3VuY2VEZWxheSwgdmlzaWJsZV0sXG4gICAgKVxuXG4gICAgLyoqXG4gICAgICogT25jZSBwb3B1cCBpcyB2aXNpYmxlIGluIHRoZSBkb20gd2UgY2FuIGNvbXB1dGUgcG9zaXRpb25zLCB0aGVuIHNldCBpdCB2aXNpYmxlIG9uIHNjcmVlbiBhbmQgYWRkIGV2ZW50IHRvXG4gICAgICogcmVjb21wdXRlIHBvc2l0aW9ucyBvbiBzY3JvbGwgb3Igc2NyZWVuIHJlc2l6ZS5cbiAgICAgKi9cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHZpc2libGVJbkRvbSkge1xuICAgICAgICBnZW5lcmF0ZVBvcHVwUG9zaXRpb25zKClcblxuICAgICAgICBpZiAocG9wdXBQb3J0YWxUYXJnZXQgPT09IGRvY3VtZW50LmJvZHkpIHtcbiAgICAgICAgICAvLyBXZSB3YW50IHRvIGRldGVjdCBzY3JvbGwgYW5kIHJlc2l6ZSBpbiBvcmRlciB0byByZWNvbXB1dGUgcG9zaXRpb25zIG9mIHBvcHVwXG4gICAgICAgICAgLy8gQWRkaW5nIHRydWUgYXMgdGhpcmQgcGFyYW1ldGVyIHRvIGV2ZW50IGxpc3RlbmVyIHdpbGwgZGV0ZWN0IG5lc3RlZCBzY3JvbGxzLlxuICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBvbldpbmRvd0NoYW5nZURldGVjdGVkLCB0cnVlKVxuICAgICAgICB9XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBvbldpbmRvd0NoYW5nZURldGVjdGVkLCB0cnVlKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25XaW5kb3dDaGFuZ2VEZXRlY3RlZCwgdHJ1ZSlcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG9uV2luZG93Q2hhbmdlRGV0ZWN0ZWQsIHRydWUpXG4gICAgICAgIGlmICh0aW1lci5jdXJyZW50KSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyLmN1cnJlbnQpXG4gICAgICAgICAgdGltZXIuY3VycmVudCA9IHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgW1xuICAgICAgZ2VuZXJhdGVQb3B1cFBvc2l0aW9ucyxcbiAgICAgIG9uV2luZG93Q2hhbmdlRGV0ZWN0ZWQsXG4gICAgICB2aXNpYmxlSW5Eb20sXG4gICAgICBtYXhXaWR0aCxcbiAgICAgIHBvcHVwUG9ydGFsVGFyZ2V0LFxuICAgIF0pXG5cbiAgICAvLyBUaGlzIHdpbGwgYmUgdHJpZ2dlcmVkIHdoZW4gcG9zaXRpb25zIGFyZSBjb21wdXRlZCBhbmQgcG9wdXAgaXMgdmlzaWJsZSBpbiB0aGUgZG9tLlxuICAgIHVzZUVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKHZpc2libGVJbkRvbSAmJiBpbm5lclBvcHVwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBpbm5lclBvcHVwUmVmLmN1cnJlbnQuc3R5bGUub3BhY2l0eSA9ICcxJ1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICAgICAgW3Bvc2l0aW9uc10sXG4gICAgKVxuXG4gICAgLyoqXG4gICAgICogSWYgcG9wdXAgaGFzIGB2aXNpYmxlYCBwcm9wIGl0IG1lYW5zIHRoZSBwb3B1cCBpcyBtYW51YWxseSBjb250cm9sbGVkIHRocm91Z2ggdGhpcyBwcm9wLlxuICAgICAqIEluIHRoaXMgY2FzIHdlIGRvbid0IHdhbnQgdG8gZGlzcGxheSBwb3B1cCBvbiBob3ZlciwgYnV0IG9ubHkgd2hlbiBgdmlzaWJsZWAgaXMgdHJ1ZS5cbiAgICAgKi9cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKGlzQ29udHJvbGxlZCkge1xuICAgICAgICBvblBvaW50ZXJFdmVudCh2aXNpYmxlKSgpXG4gICAgICB9XG4gICAgfSwgW2lzQ29udHJvbGxlZCwgb25Qb2ludGVyRXZlbnQsIHZpc2libGVdKVxuXG4gICAgLy8gSGFuZGxlIGhpZGUgb24gZXNjIHByZXNzIGFuZCBoaWRlIG9uIGNsaWNrIG91dHNpZGVcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgaGFuZGxlRXNjUHJlc3MgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICBjbG9zZVBvcHVwKClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgcG9wdXBDdXJyZW50ID0gaW5uZXJQb3B1cFJlZi5jdXJyZW50XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuQ3VycmVudCA9IGNoaWxkcmVuUmVmLmN1cnJlbnRcblxuICAgICAgICBpZiAocG9wdXBDdXJyZW50ICYmIGhpZGVPbkNsaWNrT3V0c2lkZSAmJiAhZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldCAmJlxuICAgICAgICAgICAgZXZlbnQudGFyZ2V0ICE9PSBwb3B1cEN1cnJlbnQgJiZcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldCAhPT0gY2hpbGRyZW5DdXJyZW50ICYmXG4gICAgICAgICAgICAhY2hpbGRyZW5DdXJyZW50Py5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICAgICAgICFwb3B1cEN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgY2xvc2VQb3B1cCgpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodmlzaWJsZUluRG9tKSB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCBoYW5kbGVFc2NQcmVzcylcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXl1cCcsIGhhbmRsZUVzY1ByZXNzKVxuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgICAgfVxuICAgIH0sIFtcbiAgICAgIGNsb3NlUG9wdXAsXG4gICAgICB2aXNpYmxlSW5Eb20sXG4gICAgICBpbm5lclBvcHVwUmVmLFxuICAgICAgY2hpbGRyZW5SZWYsXG4gICAgICBoaWRlT25DbGlja091dHNpZGUsXG4gICAgXSlcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZXZlbnQgd2lsbCBvY2N1ciBvbmx5IGZvciBkaWFsb2cgYW5kIHdpbGwgdHJhcCBmb2N1cyBpbnNpZGUgdGhlIGRpYWxvZy5cbiAgICAgKi9cbiAgICBjb25zdCBoYW5kbGVGb2N1c1RyYXA6IEtleWJvYXJkRXZlbnRIYW5kbGVyID0gdXNlQ2FsbGJhY2soZXZlbnQgPT4ge1xuICAgICAgY29uc3QgaXNUYWJQcmVzc2VkID0gZXZlbnQua2V5ID09PSAnVGFiJ1xuICAgICAgaWYgKCFpc1RhYlByZXNzZWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuXG4gICAgICBjb25zdCBmb2N1c2FibGVFbHMgPVxuICAgICAgICBpbm5lclBvcHVwUmVmLmN1cnJlbnQ/LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICAgICAgJ2FbaHJlZl06bm90KFtkaXNhYmxlZF0pLCBidXR0b246bm90KFtkaXNhYmxlZF0pLCB0ZXh0YXJlYTpub3QoW2Rpc2FibGVkXSksIGlucHV0Om5vdChbZGlzYWJsZWRdKSwgc2VsZWN0Om5vdChbZGlzYWJsZWRdKScsXG4gICAgICAgICkgPz8gW11cblxuICAgICAgLy8gSGFuZGxlIGNhc2Ugd2hlbiBubyBpbnRlcmFjdGl2ZSBlbGVtZW50IGFyZSB3aXRoaW4gdGhlIG1vZGFsIChpbmNsdWRpbmcgY2xvc2UgaWNvbilcbiAgICAgIGlmIChmb2N1c2FibGVFbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlyc3RGb2N1c2FibGVFbCA9IGZvY3VzYWJsZUVsc1swXSBhcyBIVE1MRWxlbWVudFxuICAgICAgY29uc3QgbGFzdEZvY3VzYWJsZUVsID0gZm9jdXNhYmxlRWxzW1xuICAgICAgICBmb2N1c2FibGVFbHMubGVuZ3RoIC0gMVxuICAgICAgXSBhcyBIVE1MRWxlbWVudFxuXG4gICAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGZpcnN0Rm9jdXNhYmxlRWwgfHxcbiAgICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBpbm5lclBvcHVwUmVmLmN1cnJlbnRcbiAgICAgICAgKSB7XG4gICAgICAgICAgbGFzdEZvY3VzYWJsZUVsLmZvY3VzKClcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGxhc3RGb2N1c2FibGVFbCB8fFxuICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBpbm5lclBvcHVwUmVmLmN1cnJlbnRcbiAgICAgICkge1xuICAgICAgICBmaXJzdEZvY3VzYWJsZUVsLmZvY3VzKClcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgfVxuICAgIH0sIFtdKVxuXG4gICAgLyoqXG4gICAgICogV2lsbCByZW5kZXIgY2hpbGRyZW4gY29uZGl0aW9uYWxseSBpZiBjaGlsZHJlbiBpcyBhIGZ1bmN0aW9uIG9yIG5vdC5cbiAgICAgKi9cbiAgICBjb25zdCByZW5kZXJDaGlsZHJlbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuKHtcbiAgICAgICAgICBvbkJsdXI6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudChmYWxzZSkgOiBub29wLFxuICAgICAgICAgIG9uRm9jdXM6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudCh0cnVlKSA6IG5vb3AsXG4gICAgICAgICAgb25Qb2ludGVyRW50ZXI6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudCh0cnVlKSA6IG5vb3AsXG4gICAgICAgICAgb25Qb2ludGVyTGVhdmU6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudChmYWxzZSkgOiBub29wLFxuICAgICAgICAgIHJlZjogY2hpbGRyZW5SZWYsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRDaGlsZHJlbkNvbnRhaW5lclxuICAgICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9e2dlbmVyYXRlZElkfVxuICAgICAgICAgIGFyaWEtY29udHJvbHM9e2dlbmVyYXRlZElkfVxuICAgICAgICAgIG9uQmx1cj17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KGZhbHNlKSA6IG5vb3B9XG4gICAgICAgICAgb25Gb2N1cz17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KHRydWUpIDogbm9vcH1cbiAgICAgICAgICBvblBvaW50ZXJFbnRlcj17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KHRydWUpIDogbm9vcH1cbiAgICAgICAgICBvblBvaW50ZXJMZWF2ZT17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KGZhbHNlKSA6IG5vb3B9XG4gICAgICAgICAgcmVmPXtjaGlsZHJlblJlZn1cbiAgICAgICAgICB0YWJJbmRleD17dGFiSW5kZXh9XG4gICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PiB7XG4gICAgICAgICAgICBvbktleURvd24/LihldmVudClcbiAgICAgICAgICB9fVxuICAgICAgICAgIGRhdGEtY29udGFpbmVyLWZ1bGwtd2lkdGg9e2NvbnRhaW5lckZ1bGxXaWR0aH1cbiAgICAgICAgICBhcmlhLWhhc3BvcHVwPXthcmlhSGFzUG9wdXB9XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvU3R5bGVkQ2hpbGRyZW5Db250YWluZXI+XG4gICAgICApXG4gICAgfSwgW1xuICAgICAgYXJpYUhhc1BvcHVwLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBjb250YWluZXJGdWxsV2lkdGgsXG4gICAgICBnZW5lcmF0ZWRJZCxcbiAgICAgIGlzQ29udHJvbGxlZCxcbiAgICAgIG9uS2V5RG93bixcbiAgICAgIG9uUG9pbnRlckV2ZW50LFxuICAgICAgdGFiSW5kZXgsXG4gICAgXSlcblxuICAgIGNvbnN0IHNob3VsZFJlbmRlciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgaWYgKCFkeW5hbWljRG9tUmVuZGVyaW5nKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChkeW5hbWljRG9tUmVuZGVyaW5nICYmIHZpc2libGVJbkRvbSkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9LCBbZHluYW1pY0RvbVJlbmRlcmluZywgdmlzaWJsZUluRG9tXSlcblxuICAgIGlmICghdGV4dCkge1xuICAgICAgaWYgKHR5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2hpbGRyZW5cbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAge3JlbmRlckNoaWxkcmVuKCl9XG4gICAgICAgIHtzaG91bGRSZW5kZXJcbiAgICAgICAgICA/IGNyZWF0ZVBvcnRhbChcbiAgICAgICAgICAgICAgPFN0eWxlZFBvcHVwXG4gICAgICAgICAgICAgICAgcmVmPXtpbm5lclBvcHVwUmVmfVxuICAgICAgICAgICAgICAgIHBvc2l0aW9ucz17cG9zaXRpb25zfVxuICAgICAgICAgICAgICAgIG1heFdpZHRoPXttYXhXaWR0aH1cbiAgICAgICAgICAgICAgICBtYXhIZWlnaHQ9e21heEhlaWdodH1cbiAgICAgICAgICAgICAgICByb2xlPXtyb2xlfVxuICAgICAgICAgICAgICAgIGlkPXtnZW5lcmF0ZWRJZH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgICAgICAgICByZXZlcnNlQW5pbWF0aW9uPXtyZXZlcnNlQW5pbWF0aW9ufVxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtkYXRhVGVzdElkfVxuICAgICAgICAgICAgICAgIGRhdGEtaGFzLWFycm93PXtoYXNBcnJvd31cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtzdG9wQ2xpY2tQcm9wYWdhdGlvbn1cbiAgICAgICAgICAgICAgICBvblBvaW50ZXJFbnRlcj17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KHRydWUpIDogbm9vcH1cbiAgICAgICAgICAgICAgICBvblBvaW50ZXJMZWF2ZT17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KGZhbHNlKSA6IG5vb3B9XG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uRHVyYXRpb249e2FuaW1hdGlvbkR1cmF0aW9ufVxuICAgICAgICAgICAgICAgIG9uS2V5RG93bj17cm9sZSA9PT0gJ2RpYWxvZycgPyBoYW5kbGVGb2N1c1RyYXAgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICAgICAgaXNEaWFsb2c9e3JvbGUgPT09ICdkaWFsb2cnfVxuICAgICAgICAgICAgICAgIGRhdGEtdmlzaWJsZS1pbi1kb209e1xuICAgICAgICAgICAgICAgICAgIWR5bmFtaWNEb21SZW5kZXJpbmcgPyB2aXNpYmxlSW5Eb20gOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGF0YS1hbmltYXRlZD17YW5pbWF0aW9uRHVyYXRpb24gPiAwICYmICFtYXhIZWlnaHR9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dGV4dH1cbiAgICAgICAgICAgICAgPC9TdHlsZWRQb3B1cD4sXG4gICAgICAgICAgICAgIHBvcHVwUG9ydGFsVGFyZ2V0IGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgKVxuICAgICAgICAgIDogbnVsbH1cbiAgICAgIDwvPlxuICAgIClcbiAgfSxcbilcbiJdfQ== */"), ';}&[data-has-arrow="true"]{&::after{content:" ";position:absolute;top:', ({
51
+ }) => /* @__PURE__ */ react.css(animationDuration, "ms ", !reverseAnimation ? animations.animation(positions) : animations.exitAnimation(positions), " forwards;" + (process.env.NODE_ENV === "production" ? "" : ";label:StyledPopup;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1BvcHVwL2luZGV4LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF1RjRFIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1BvcHVwL2luZGV4LnRzeCIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCdcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJ1xuaW1wb3J0IHR5cGUge1xuICBIVE1MQXR0cmlidXRlcyxcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIE1vdXNlRXZlbnRIYW5kbGVyLFxuICBSZWFjdE5vZGUsXG4gIFJlZixcbiAgUmVmT2JqZWN0LFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7XG4gIGZvcndhcmRSZWYsXG4gIHN0YXJ0VHJhbnNpdGlvbixcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlSWQsXG4gIHVzZUltcGVyYXRpdmVIYW5kbGUsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IHsgaXNDbGllbnRTaWRlIH0gZnJvbSAnLi4vLi4vaGVscGVycy9pc0NsaWVudFNpZGUnXG5pbXBvcnQgdHlwZSB7IFBvc2l0aW9uc1R5cGUgfSBmcm9tICcuL2FuaW1hdGlvbnMnXG5pbXBvcnQgeyBhbmltYXRpb24sIGV4aXRBbmltYXRpb24gfSBmcm9tICcuL2FuaW1hdGlvbnMnXG5pbXBvcnQgdHlwZSB7IFBvcHVwQWxpZ24sIFBvcHVwUGxhY2VtZW50IH0gZnJvbSAnLi9oZWxwZXJzJ1xuaW1wb3J0IHtcbiAgREVGQVVMVF9BUlJPV19XSURUSCxcbiAgREVGQVVMVF9QT1NJVElPTlMsXG4gIGNvbXB1dGVQb3NpdGlvbnMsXG59IGZyb20gJy4vaGVscGVycydcblxuY29uc3QgREVGQVVMVF9BTklNQVRJT05fRFVSQVRJT04gPSAyMzAgLy8gaW4gbXNcbmNvbnN0IERFRkFVTFRfREVCT1VOQ0VfRFVSQVRJT04gPSAyMDAgLy8gaW4gbXNcblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9XG5cbnR5cGUgU3R5bGVkUG9wdXBQcm9wcyA9IHtcbiAgbWF4V2lkdGg6IG51bWJlciB8IHN0cmluZ1xuICBwb3NpdGlvbnM6IFBvc2l0aW9uc1R5cGVcbiAgcmV2ZXJzZUFuaW1hdGlvbjogYm9vbGVhblxuICBtYXhIZWlnaHQ/OiBudW1iZXIgfCBzdHJpbmdcbiAgYW5pbWF0aW9uRHVyYXRpb24/OiBudW1iZXJcbiAgaXNEaWFsb2c6IGJvb2xlYW5cbn1cblxuLyoqXG4gKiBUaGlzIGV2ZW50IGhhbmRsZSBhbGxvdyB1cyB0byBub3QgYnViYmxlIHRoZSBldmVudCB0byBkb2N1bWVudC5ib2R5IGxpa2UgdGhpcyByZWFjdC1zZWxlY3Qgd29ya3MgZmluZVxuICovXG5jb25zdCBzdG9wQ2xpY2tQcm9wYWdhdGlvbjogTW91c2VFdmVudEhhbmRsZXIgPSBldmVudCA9PiB7XG4gIGV2ZW50Lm5hdGl2ZUV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXG59XG5cbmNvbnN0IFN0eWxlZFBvcHVwID0gc3R5bGVkKCdkaXYnLCB7XG4gIHNob3VsZEZvcndhcmRQcm9wOiBwcm9wID0+XG4gICAgIVtcbiAgICAgICdtYXhXaWR0aCcsXG4gICAgICAncG9zaXRpb25zJyxcbiAgICAgICdyZXZlcnNlQW5pbWF0aW9uJyxcbiAgICAgICdtYXhIZWlnaHQnLFxuICAgICAgJ2FuaW1hdGlvbkR1cmF0aW9uJyxcbiAgICAgICdpc0RpYWxvZycsXG4gICAgXS5pbmNsdWRlcyhwcm9wKSxcbn0pPFN0eWxlZFBvcHVwUHJvcHM+YFxuICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRTdHJvbmdlcn07XG4gIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLnRleHRTdHJvbmdlcn07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucmFkaWkuZGVmYXVsdH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gYCR7dGhlbWUuc3BhY2VbJzAuNSddfSAke3RoZW1lLnNwYWNlWycxJ119YH07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBtYXgtd2lkdGg6ICR7KHsgbWF4V2lkdGggfSkgPT5cbiAgICB0eXBlb2YgbWF4V2lkdGggPT09ICdudW1iZXInID8gYCR7bWF4V2lkdGh9cHhgIDogbWF4V2lkdGh9O1xuICBtYXgtaGVpZ2h0OiAkeyh7IG1heEhlaWdodCB9KSA9PlxuICAgIHR5cGVvZiBtYXhIZWlnaHQgPT09ICdudW1iZXInID8gYCR7bWF4SGVpZ2h0fXB4YCA6IG1heEhlaWdodH07XG4gIG92ZXJmbG93OiAkeyh7IG1heEhlaWdodCB9KSA9PiAobWF4SGVpZ2h0ID8gJ2F1dG8nIDogdW5kZWZpbmVkKX07XG4gIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xuICBpbnNldDogMCBhdXRvIGF1dG8gMDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBvcGFjaXR5OiAwO1xuICB6LWluZGV4OiAxO1xuICB0cmFuc2Zvcm06ICR7KHsgcG9zaXRpb25zIH0pID0+IHBvc2l0aW9ucy5wb3B1cFBvc2l0aW9ufTtcblxuICAmW2RhdGEtYW5pbWF0ZWQ9XCJ0cnVlXCJdIHtcbiAgICBhbmltYXRpb246ICR7KHsgcG9zaXRpb25zLCByZXZlcnNlQW5pbWF0aW9uLCBhbmltYXRpb25EdXJhdGlvbiB9KSA9PiBjc3NgXG4gICAgICAke2FuaW1hdGlvbkR1cmF0aW9ufW1zICR7XG4gICAgICAgICFyZXZlcnNlQW5pbWF0aW9uID8gYW5pbWF0aW9uKHBvc2l0aW9ucykgOiBleGl0QW5pbWF0aW9uKHBvc2l0aW9ucylcbiAgICAgIH0gZm9yd2FyZHNcbiAgICBgfTtcbiAgfVxuXG4gICZbZGF0YS1oYXMtYXJyb3c9XCJ0cnVlXCJdIHtcbiAgICAmOjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIiBcIjtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLmFycm93VG9wfXB4O1xuICAgICAgbGVmdDogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLmFycm93TGVmdH1weDtcbiAgICAgIHRyYW5zZm9ybTogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLmFycm93VHJhbnNmb3JtfVxuICAgICAgICByb3RhdGUoJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLnJvdGF0ZX1kZWcpO1xuICAgICAgbWFyZ2luLWxlZnQ6IC0ke0RFRkFVTFRfQVJST1dfV0lEVEh9cHg7XG4gICAgICBib3JkZXItd2lkdGg6ICR7REVGQVVMVF9BUlJPV19XSURUSH1weDtcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgICBib3JkZXItY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFN0cm9uZ2VyfVxuICAgICAgICB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cbiAgfVxuXG4gICZbZGF0YS12aXNpYmxlLWluLWRvbT1cImZhbHNlXCJdIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5gXG5cbmNvbnN0IFN0eWxlZENoaWxkcmVuQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogaW5oZXJpdDtcblxuICAmW2RhdGEtY29udGFpbmVyLWZ1bGwtd2lkdGg9XCJ0cnVlXCJdIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuYFxuXG50eXBlIFBvcHVwUHJvcHMgPSB7XG4gIC8qKlxuICAgKiBJZCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBpZiBub3Qgc2V0LiBJdCBpcyB1c2VkIGZvciBhc3NvY2lhdGluZyBwb3B1cCB3cmFwcGVyIHdpdGggcG9wdXAgcG9ydGFsLlxuICAgKi9cbiAgaWQ/OiBzdHJpbmdcbiAgY2hpbGRyZW46XG4gICAgfCBSZWFjdE5vZGVcbiAgICB8ICgocmVuZGVyUHJvcHM6IHtcbiAgICAgICAgY2xhc3NOYW1lPzogc3RyaW5nXG4gICAgICAgIG9uQmx1cjogKCkgPT4gdm9pZFxuICAgICAgICBvbkZvY3VzOiAoKSA9PiB2b2lkXG4gICAgICAgIG9uUG9pbnRlckVudGVyOiAoKSA9PiB2b2lkXG4gICAgICAgIG9uUG9pbnRlckxlYXZlOiAoKSA9PiB2b2lkXG4gICAgICAgIHJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD5cbiAgICAgIH0pID0+IFJlYWN0Tm9kZSlcbiAgbWF4V2lkdGg/OiBudW1iZXIgfCBzdHJpbmdcbiAgLyoqXG4gICAqIGBhdXRvYCBwbGFjZW1lbnQgd2lsbCBjaGFuZ2UgdGhlIHBvc2l0aW9uIG9mIHRoZSBwb3B1cCBpZiBpdCBkb2Vzbid0IGZpdCBpbiB0aGUgdmlld3BvcnQuXG4gICAqL1xuICBwbGFjZW1lbnQ/OiBQb3B1cFBsYWNlbWVudFxuICAvKipcbiAgICogQWxpZ24gdGhlIHBvcHVwIHRvIHRoZSBzdGFydCBvciBjZW50ZXIgb2YgdGhlIGNoaWxkcmVuLlxuICAgKi9cbiAgYWxpZ24/OiBQb3B1cEFsaWduXG4gIC8qKlxuICAgKiBDb250ZW50IG9mIHRoZSBwb3B1cCwgcHJlZmVyYWJseSB0ZXh0IGluc2lkZS5cbiAgICovXG4gIHRleHQ/OiBSZWFjdE5vZGVcbiAgY2xhc3NOYW1lPzogc3RyaW5nXG4gIC8qKlxuICAgKiBJdCB3aWxsIGFkZCBgd2lkdGg6IDEwMCVgIHRvIHRoZSBwb3B1cCBjb250YWluZXIuXG4gICAqL1xuICBjb250YWluZXJGdWxsV2lkdGg/OiBib29sZWFuXG4gIC8qKlxuICAgKiBJdCB3aWxsIGZvcmNlIGRpc3BsYXkgcG9wdXAuIFRoaXMgY2FuIGJlIHVzZWZ1bCBpZiB5b3UgbmVlZCB0byBhbHdheXMgZGlzcGxheSB0aGUgcG9wdXAgd2l0aG91dCBob3ZlciBuZWVkZWQuXG4gICAqL1xuICB2aXNpYmxlPzogYm9vbGVhblxuICBpbm5lclJlZj86IFJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+XG4gIHJvbGU/OiBzdHJpbmdcbiAgJ2RhdGEtdGVzdGlkJz86IHN0cmluZ1xuICBoYXNBcnJvdz86IGJvb2xlYW5cbiAgb25DbG9zZT86ICgpID0+IHZvaWRcbiAgdGFiSW5kZXg/OiBudW1iZXJcbiAgb25LZXlEb3duPzogS2V5Ym9hcmRFdmVudEhhbmRsZXJcbiAgJ2FyaWEtaGFzcG9wdXAnPzogSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+WydhcmlhLWhhc3BvcHVwJ11cbiAgaGlkZU9uQ2xpY2tPdXRzaWRlPzogYm9vbGVhblxuICAvKipcbiAgICogSWYgeW91IHNldCBkZWJvdW5jZVRpbWUgdG8gZmFsc2UsIHRoZSBwb3B1cCB3aWxsIG5vdCBkZWJvdW5jZSB0aGUgaG92ZXIgZXZlbnQgYW5kIHdpbGwgYmUgZGlzcGxheWVkIGluc3RhbnRseS5cbiAgICogSWYgc2V0IHRvIDAgaXQgd2lsbCBkaXNhYmxlIGRlYm91bmNlLlxuICAgKi9cbiAgZGVib3VuY2VEZWxheT86IG51bWJlclxuICAvKipcbiAgICogSWYgeW91IHNldCBhIG1heCBoZWlnaHQga2VlcCBpbiBtaW5kIHRoYXQgdGhlIGFuaW1hdGlvbiBpcyBkaXNhYmxlZCwgb3IgaXQgd2lsbCBub3Qgd29yayBwcm9wZXJseSBvbiBzb21lIGJyb3dzZXJzLlxuICAgKi9cbiAgbWF4SGVpZ2h0Pzogc3RyaW5nIHwgbnVtYmVyXG4gIC8qKlxuICAgKiBXaWxsIHJlbW92ZSB0aGUgYW5pbWF0aW9uIG9uIHRoZSBwb3B1cCBpZiBzZXQgdG8gZmFsc2UuXG4gICAqL1xuICBkaXNhYmxlQW5pbWF0aW9uPzogYm9vbGVhblxuICAvKipcbiAgICogQnkgZGVmYXVsdCwgdGhlIHBvcnRhbCB0YXJnZXQgaXMgY2hpbGRyZW4gY29udGFpbmVyIG9yIGRvY3VtZW50LmJvZHkgaWYgY2hpbGRyZW4gaXMgYSBmdW5jdGlvbi4gWW91IGNhbiBvdmVycmlkZSB0aGlzXG4gICAqIGJlaGF2aW9yIGJ5IHNldHRpbmcgYSBwb3J0YWxUYXJnZXQgcHJvcC5cbiAgICovXG4gIHBvcnRhbFRhcmdldD86IEhUTUxFbGVtZW50XG4gIC8qKlxuICAgKiBJZiB5b3Ugc2V0IHRoaXMgdG8gdHJ1ZSwgdGhlIHBvcHVwIHdpbGwgYmUgcmVuZGVyZWQgaW4gdGhlIERPTSBvbmx5IHdoZW4gaXQgaXMgdmlzaWJsZS5cbiAgICogV2hlbiBzZXQgdG8gZmFsc2UsIHRoZSBwb3B1cCB3aWxsIGFsd2F5cyBiZSByZW5kZXJlZCBpbiB0aGUgRE9NLiBCeSBkZWZhdWx0IHRoaXMgdmFsdWUgaXMgc2V0IHRvIGB0cnVlYCwgaWYgZm9yIHNvbWVcbiAgICogcmVhc29uIHlvdSBuZWVkIHRvIGRpc2FibGUgaXQsIHlvdSBjYW4gc2V0IGl0IHRvIGBmYWxzZWAuXG4gICAqL1xuICBkeW5hbWljRG9tUmVuZGVyaW5nPzogYm9vbGVhblxufVxuXG4vKipcbiAqIEBleHBlcmltZW50YWwgVGhpcyBjb21wb25lbnQgaXMgZXhwZXJpbWVudGFsIGFuZCBtYXkgYmUgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIHRoZSBmdXR1cmUuXG4gKi9cbmV4cG9ydCBjb25zdCBQb3B1cCA9IGZvcndhcmRSZWYoXG4gIChcbiAgICB7XG4gICAgICBjaGlsZHJlbixcbiAgICAgIHRleHQgPSAnJyxcbiAgICAgIHBsYWNlbWVudCA9ICdhdXRvJyxcbiAgICAgIGFsaWduID0gJ2NlbnRlcicsXG4gICAgICBpZCxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNvbnRhaW5lckZ1bGxXaWR0aCxcbiAgICAgIG1heFdpZHRoID0gJzE0LjVyZW0nLFxuICAgICAgbWF4SGVpZ2h0LFxuICAgICAgdmlzaWJsZSxcbiAgICAgIGlubmVyUmVmLFxuICAgICAgcm9sZSA9ICdwb3B1cCcsXG4gICAgICAnZGF0YS10ZXN0aWQnOiBkYXRhVGVzdElkLFxuICAgICAgaGFzQXJyb3cgPSB0cnVlLFxuICAgICAgb25DbG9zZSxcbiAgICAgIHRhYkluZGV4ID0gMCxcbiAgICAgIG9uS2V5RG93bixcbiAgICAgICdhcmlhLWhhc3BvcHVwJzogYXJpYUhhc1BvcHVwLFxuICAgICAgaGlkZU9uQ2xpY2tPdXRzaWRlID0gZmFsc2UsXG4gICAgICBkZWJvdW5jZURlbGF5ID0gREVGQVVMVF9ERUJPVU5DRV9EVVJBVElPTixcbiAgICAgIGRpc2FibGVBbmltYXRpb24gPSBmYWxzZSxcbiAgICAgIHBvcnRhbFRhcmdldCxcbiAgICAgIGR5bmFtaWNEb21SZW5kZXJpbmcgPSB0cnVlLFxuICAgIH06IFBvcHVwUHJvcHMsXG4gICAgcmVmOiBSZWY8SFRNTERpdkVsZW1lbnQ+LFxuICApID0+IHtcbiAgICBjb25zdCBjaGlsZHJlblJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgICB1c2VJbXBlcmF0aXZlSGFuZGxlKGlubmVyUmVmLCAoKSA9PiBjaGlsZHJlblJlZi5jdXJyZW50IGFzIEhUTUxEaXZFbGVtZW50KVxuXG4gICAgY29uc3QgaW5uZXJQb3B1cFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgICB1c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgKCkgPT4gaW5uZXJQb3B1cFJlZi5jdXJyZW50IGFzIEhUTUxEaXZFbGVtZW50KVxuXG4gICAgY29uc3QgdGltZXIgPSB1c2VSZWY8UmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4+KHVuZGVmaW5lZClcbiAgICBjb25zdCBwb3B1cFBvcnRhbFRhcmdldCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgaWYgKHBvcnRhbFRhcmdldCkgcmV0dXJuIHBvcnRhbFRhcmdldFxuXG4gICAgICBpZiAocm9sZSA9PT0gJ2RpYWxvZycpIHtcbiAgICAgICAgaWYgKGNoaWxkcmVuUmVmLmN1cnJlbnQpIHJldHVybiBjaGlsZHJlblJlZi5jdXJyZW50XG4gICAgICAgIGlmIChpc0NsaWVudFNpZGUpIHJldHVybiBkb2N1bWVudC5ib2R5XG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cblxuICAgICAgLy8gV2UgY2hlY2sgaWYgd2luZG93IGV4aXN0cyBmb3IgU1NSXG4gICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50LmJvZHlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgICB9LCBbcG9ydGFsVGFyZ2V0LCByb2xlLCBjaGlsZHJlblJlZi5jdXJyZW50XSlcblxuICAgIC8vIFRoZXJlIGFyZSBzb21lIGlzc3VlIHdoZW4gbWl4aW5nIGFuaW1hdGlvbiBhbmQgbWF4SGVpZ2h0IG9uIHNvbWUgYnJvd3NlcnMsIHNvIHdlIGRpc2FibGUgYW5pbWF0aW9uIGlmIG1heEhlaWdodCBpcyBzZXQuXG4gICAgY29uc3QgYW5pbWF0aW9uRHVyYXRpb24gPVxuICAgICAgZGlzYWJsZUFuaW1hdGlvbiB8fCBtYXhIZWlnaHQgPyAwIDogREVGQVVMVF9BTklNQVRJT05fRFVSQVRJT05cblxuICAgIC8vIERlYm91bmNlIHRpbWVyIHdpbGwgYmUgdXNlZCB0byBwcmV2ZW50IHRoZSBwb3B1cCBmcm9tIGZsaWNrZXJpbmcgd2hlbiB0aGUgdXNlciBtb3ZlcyB0aGUgbW91c2Ugb3V0IGFuZCBpbiB0aGUgY2hpbGRyZW4gZWxlbWVudC5cbiAgICBjb25zdCBkZWJvdW5jZVRpbWVyID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+Pih1bmRlZmluZWQpXG4gICAgY29uc3QgW3Zpc2libGVJbkRvbSwgc2V0VmlzaWJsZUluRG9tXSA9IHVzZVN0YXRlKGZhbHNlKVxuICAgIGNvbnN0IFtyZXZlcnNlQW5pbWF0aW9uLCBzZXRSZXZlcnNlQW5pbWF0aW9uXSA9IHVzZVN0YXRlKGZhbHNlKVxuICAgIGNvbnN0IFtwb3NpdGlvbnMsIHNldFBvc2l0aW9uc10gPSB1c2VTdGF0ZTxQb3NpdGlvbnNUeXBlPih7XG4gICAgICAuLi5ERUZBVUxUX1BPU0lUSU9OUyxcbiAgICB9KVxuICAgIGNvbnN0IHVuaXF1ZUlkID0gdXNlSWQoKVxuICAgIGNvbnN0IGdlbmVyYXRlZElkID0gaWQgPz8gdW5pcXVlSWRcbiAgICBjb25zdCBpc0NvbnRyb2xsZWQgPSB2aXNpYmxlICE9PSB1bmRlZmluZWRcblxuICAgIGNvbnN0IGdlbmVyYXRlUG9wdXBQb3NpdGlvbnMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBpZiAoY2hpbGRyZW5SZWYuY3VycmVudCAmJiBpbm5lclBvcHVwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgc2V0UG9zaXRpb25zKFxuICAgICAgICAgIGNvbXB1dGVQb3NpdGlvbnMoe1xuICAgICAgICAgICAgY2hpbGRyZW5SZWYsXG4gICAgICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgICAgICBwb3B1cFJlZjogaW5uZXJQb3B1cFJlZixcbiAgICAgICAgICAgIHBvcHVwUG9ydGFsVGFyZ2V0OiBwb3B1cFBvcnRhbFRhcmdldCBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgICAgIGhhc0Fycm93LFxuICAgICAgICAgICAgYWxpZ24sXG4gICAgICAgICAgfSksXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9LCBbaGFzQXJyb3csIHBsYWNlbWVudCwgcG9wdXBQb3J0YWxUYXJnZXQsIGFsaWduXSlcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gd2UgbmVlZCB0byByZWNvbXB1dGUgcG9zaXRpb25zIG9mIHBvcHVwIGR1ZSB0byB3aW5kb3cgc2Nyb2xsIG9yIHJlc2l6ZS5cbiAgICAgKi9cbiAgICBjb25zdCBvbldpbmRvd0NoYW5nZURldGVjdGVkID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgLy8gV2UgcmVtb3ZlIGFuaW1hdGlvbiBvbiBzY3JvbGwgb3IgdGhlIGFuaW1hdGlvbiB3aWxsIHJlc3RhcnQgb24gZXZlcnkgc2Nyb2xsXG4gICAgICBpZiAoaW5uZXJQb3B1cFJlZi5jdXJyZW50KSB7XG4gICAgICAgIGlubmVyUG9wdXBSZWYuY3VycmVudC5zdHlsZS5hbmltYXRpb24gPSAnbm9uZSdcbiAgICAgIH1cblxuICAgICAgZ2VuZXJhdGVQb3B1cFBvc2l0aW9ucygpXG4gICAgfSwgW2dlbmVyYXRlUG9wdXBQb3NpdGlvbnMsIGlubmVyUG9wdXBSZWZdKVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB3ZSBuZWVkIHRvIHJlbW92ZSBwb3B1cCBwb3J0YWwgZnJvbSBET00gYW5kIHJlbW92ZSBldmVudCBsaXN0ZW5lciB0byBpdC5cbiAgICAgKi9cbiAgICBjb25zdCB1bm1vdW50UG9wdXBGcm9tRG9tID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgc2V0VmlzaWJsZUluRG9tKGZhbHNlKVxuICAgICAgc2V0UmV2ZXJzZUFuaW1hdGlvbihmYWxzZSlcblxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uV2luZG93Q2hhbmdlRGV0ZWN0ZWQsIHRydWUpXG4gICAgfSwgW29uV2luZG93Q2hhbmdlRGV0ZWN0ZWRdKVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB3ZSBuZWVkIHRvIGhpZGUgcG9wdXAuIEEgdGltZW91dCBpcyBzZXQgdG8gYWxsb3cgYW5pbWF0aW9uIGVuZCwgdGhlbiByZW1vdmVcbiAgICAgKiBwb3B1cCBmcm9tIGRvbS5cbiAgICAgKi9cbiAgICBjb25zdCBjbG9zZVBvcHVwID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgY29uc3QgY2xvc2VGdW5jdGlvbiA9ICgpID0+IHtcbiAgICAgICAgaWYgKCFkaXNhYmxlQW5pbWF0aW9uKSB7XG4gICAgICAgICAgc2V0UmV2ZXJzZUFuaW1hdGlvbih0cnVlKVxuXG4gICAgICAgICAgdGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgb25DbG9zZT8uKClcbiAgICAgICAgICAgIHVubW91bnRQb3B1cEZyb21Eb20oKVxuICAgICAgICAgIH0sIGFuaW1hdGlvbkR1cmF0aW9uKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9uQ2xvc2U/LigpXG4gICAgICAgICAgdW5tb3VudFBvcHVwRnJvbURvbSgpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFkaXNhYmxlQW5pbWF0aW9uKSB7XG4gICAgICAgIGRlYm91bmNlVGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgY2xvc2VGdW5jdGlvbigpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBkZWJvdW5jZURlbGF5ICYmICFkaXNhYmxlQW5pbWF0aW9uID8gZGVib3VuY2VEZWxheSA6IDAsXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNsb3NlRnVuY3Rpb24oKVxuICAgICAgfVxuICAgIH0sIFtcbiAgICAgIGFuaW1hdGlvbkR1cmF0aW9uLFxuICAgICAgZGlzYWJsZUFuaW1hdGlvbixcbiAgICAgIGRlYm91bmNlRGVsYXksXG4gICAgICBvbkNsb3NlLFxuICAgICAgdW5tb3VudFBvcHVwRnJvbURvbSxcbiAgICBdKVxuXG4gICAgLyoqXG4gICAgICogV2hlbiBtb3VzZSBob3ZlciBvciBzdG9wIGhvdmVyaW5nIGNoaWxkcmVuIHRoaXMgZnVuY3Rpb24gZGlzcGxheSBvciBoaWRlIHBvcHVwLiBBIHRpbWVvdXQgaXMgc2V0IHRvIGFsbG93IGFuaW1hdGlvblxuICAgICAqIGVuZCwgdGhlbiByZW1vdmUgcG9wdXAgZnJvbSBkb20uXG4gICAgICovXG4gICAgY29uc3Qgb25Qb2ludGVyRXZlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAgIChpc1Zpc2libGU6IGJvb2xlYW4pID0+ICgpID0+IHtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBkZWJvdW5jZURlbGF5IGFuZCB0aGUgcG9wdXAgaXMgbm90IHZpc2libGUsIHdlIGNsZWFyIHRoZSBkZWJvdW5jZSB0aW1lclxuICAgICAgICBpZiAoIXZpc2libGUgJiYgZGVib3VuY2VEZWxheSA+IDAgJiYgZGVib3VuY2VUaW1lci5jdXJyZW50KSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KGRlYm91bmNlVGltZXIuY3VycmVudClcbiAgICAgICAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSB1bmRlZmluZWRcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoaXMgY29uZGl0aW9uIGlzIGZvciB3aGVuIHdlIHdhbnQgdG8gdW5tb3VudCB0aGUgcG9wdXBcbiAgICAgICAgLy8gVGhlcmUgaXMgZGVib3VuY2UgaW4gb3JkZXIgdG8gYXZvaWQgcG9wdXAgdG8gZmxpY2tlciB3aGVuIHdlIG1vdmUgdGhlIG1vdXNlIGZyb20gY2hpbGRyZW4gdG8gcG9wdXBcbiAgICAgICAgLy8gVGltZXIgaXMgdXNlZCB0byBmb2xsb3cgdGhlIGFuaW1hdGlvbiBkdXJhdGlvblxuICAgICAgICBpZiAoIWlzVmlzaWJsZSAmJiBpbm5lclBvcHVwUmVmLmN1cnJlbnQgJiYgIWRlYm91bmNlVGltZXIuY3VycmVudCkge1xuICAgICAgICAgIGNsb3NlUG9wdXAoKVxuICAgICAgICB9IGVsc2UgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgICAgIC8vIFRoaXMgY29uZGl0aW9uIGlzIGZvciB3aGVuIHdlIHdhbnQgdG8gbW91bnQgdGhlIHBvcHVwXG4gICAgICAgICAgLy8gSWYgdGhlIHRpbWVyIGV4aXN0cyBpdCBtZWFucyB0aGUgcG9wdXAgd2FzIGFib3V0IHRvIHVtb3VudCwgYnV0IHdlIGhvdmVyZWQgdGhlIGNoaWxkcmVuIGFnYWluLFxuICAgICAgICAgIC8vIHNvIHdlIGNsZWFyIHRoZSB0aW1lciBhbmQgdGhlIHBvcHVwIHdpbGwgbm90IGJlIHVubW91bnRlZFxuICAgICAgICAgIGlmICh0aW1lci5jdXJyZW50KSB7XG4gICAgICAgICAgICBzZXRSZXZlcnNlQW5pbWF0aW9uKGZhbHNlKVxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyLmN1cnJlbnQpXG4gICAgICAgICAgICB0aW1lci5jdXJyZW50ID0gdW5kZWZpbmVkXG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIEFuZCBoZXJlIGlzIHdoZW4gd2UgY3VycmVudGx5IGFyZSBpbiBhIGRlYm91bmNlIHRpbWVyLCBpdCBtZWFucyBwb3B1cCB3YXMgaG92ZXJlZCBkdXJpbmdcbiAgICAgICAgICAvLyB0aGF0IHBlcmlvZCwgYW5kIHNvIHdlIGNhbiBjbGVhciBkZWJvdW5jZSB0aW1lclxuICAgICAgICAgIGlmIChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSB1bmRlZmluZWRcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGRlYm91bmNlRGVsYXkgPiAwKSB7XG4gICAgICAgICAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgc2V0VmlzaWJsZUluRG9tKHRydWUpXG4gICAgICAgICAgICB9LCBkZWJvdW5jZURlbGF5KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdGFydFRyYW5zaXRpb24oKCkgPT4ge1xuICAgICAgICAgICAgICBzZXRWaXNpYmxlSW5Eb20odHJ1ZSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgW2Nsb3NlUG9wdXAsIGRlYm91bmNlRGVsYXksIHZpc2libGVdLFxuICAgIClcblxuICAgIC8qKlxuICAgICAqIE9uY2UgcG9wdXAgaXMgdmlzaWJsZSBpbiB0aGUgZG9tIHdlIGNhbiBjb21wdXRlIHBvc2l0aW9ucywgdGhlbiBzZXQgaXQgdmlzaWJsZSBvbiBzY3JlZW4gYW5kIGFkZCBldmVudCB0b1xuICAgICAqIHJlY29tcHV0ZSBwb3NpdGlvbnMgb24gc2Nyb2xsIG9yIHNjcmVlbiByZXNpemUuXG4gICAgICovXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICh2aXNpYmxlSW5Eb20pIHtcbiAgICAgICAgZ2VuZXJhdGVQb3B1cFBvc2l0aW9ucygpXG5cbiAgICAgICAgaWYgKHBvcHVwUG9ydGFsVGFyZ2V0ID09PSBkb2N1bWVudC5ib2R5KSB7XG4gICAgICAgICAgLy8gV2Ugd2FudCB0byBkZXRlY3Qgc2Nyb2xsIGFuZCByZXNpemUgaW4gb3JkZXIgdG8gcmVjb21wdXRlIHBvc2l0aW9ucyBvZiBwb3B1cFxuICAgICAgICAgIC8vIEFkZGluZyB0cnVlIGFzIHRoaXJkIHBhcmFtZXRlciB0byBldmVudCBsaXN0ZW5lciB3aWxsIGRldGVjdCBuZXN0ZWQgc2Nyb2xscy5cbiAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25XaW5kb3dDaGFuZ2VEZXRlY3RlZCwgdHJ1ZSlcbiAgICAgICAgfVxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgb25XaW5kb3dDaGFuZ2VEZXRlY3RlZCwgdHJ1ZSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uV2luZG93Q2hhbmdlRGV0ZWN0ZWQsIHRydWUpXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBvbldpbmRvd0NoYW5nZURldGVjdGVkLCB0cnVlKVxuICAgICAgICBpZiAodGltZXIuY3VycmVudCkge1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lci5jdXJyZW50KVxuICAgICAgICAgIHRpbWVyLmN1cnJlbnQgPSB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIFtcbiAgICAgIGdlbmVyYXRlUG9wdXBQb3NpdGlvbnMsXG4gICAgICBvbldpbmRvd0NoYW5nZURldGVjdGVkLFxuICAgICAgdmlzaWJsZUluRG9tLFxuICAgICAgbWF4V2lkdGgsXG4gICAgICBwb3B1cFBvcnRhbFRhcmdldCxcbiAgICBdKVxuXG4gICAgLy8gVGhpcyB3aWxsIGJlIHRyaWdnZXJlZCB3aGVuIHBvc2l0aW9ucyBhcmUgY29tcHV0ZWQgYW5kIHBvcHVwIGlzIHZpc2libGUgaW4gdGhlIGRvbS5cbiAgICB1c2VFZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGlmICh2aXNpYmxlSW5Eb20gJiYgaW5uZXJQb3B1cFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgaW5uZXJQb3B1cFJlZi5jdXJyZW50LnN0eWxlLm9wYWNpdHkgPSAnMSdcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgICAgIFtwb3NpdGlvbnNdLFxuICAgIClcblxuICAgIC8qKlxuICAgICAqIElmIHBvcHVwIGhhcyBgdmlzaWJsZWAgcHJvcCBpdCBtZWFucyB0aGUgcG9wdXAgaXMgbWFudWFsbHkgY29udHJvbGxlZCB0aHJvdWdoIHRoaXMgcHJvcC5cbiAgICAgKiBJbiB0aGlzIGNhcyB3ZSBkb24ndCB3YW50IHRvIGRpc3BsYXkgcG9wdXAgb24gaG92ZXIsIGJ1dCBvbmx5IHdoZW4gYHZpc2libGVgIGlzIHRydWUuXG4gICAgICovXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChpc0NvbnRyb2xsZWQpIHtcbiAgICAgICAgb25Qb2ludGVyRXZlbnQodmlzaWJsZSkoKVxuICAgICAgfVxuICAgIH0sIFtpc0NvbnRyb2xsZWQsIG9uUG9pbnRlckV2ZW50LCB2aXNpYmxlXSlcblxuICAgIC8vIEhhbmRsZSBoaWRlIG9uIGVzYyBwcmVzcyBhbmQgaGlkZSBvbiBjbGljayBvdXRzaWRlXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGhhbmRsZUVzY1ByZXNzID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgY2xvc2VQb3B1cCgpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHBvcHVwQ3VycmVudCA9IGlubmVyUG9wdXBSZWYuY3VycmVudFxuICAgICAgICBjb25zdCBjaGlsZHJlbkN1cnJlbnQgPSBjaGlsZHJlblJlZi5jdXJyZW50XG5cbiAgICAgICAgaWYgKHBvcHVwQ3VycmVudCAmJiBoaWRlT25DbGlja091dHNpZGUgJiYgIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBldmVudC50YXJnZXQgJiZcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldCAhPT0gcG9wdXBDdXJyZW50ICYmXG4gICAgICAgICAgICBldmVudC50YXJnZXQgIT09IGNoaWxkcmVuQ3VycmVudCAmJlxuICAgICAgICAgICAgIWNoaWxkcmVuQ3VycmVudD8uY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpICYmXG4gICAgICAgICAgICAhcG9wdXBDdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgIGNsb3NlUG9wdXAoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHZpc2libGVJbkRvbSkge1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgaGFuZGxlRXNjUHJlc3MpXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVDbGlja091dHNpZGUpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5dXAnLCBoYW5kbGVFc2NQcmVzcylcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICAgIH1cbiAgICB9LCBbXG4gICAgICBjbG9zZVBvcHVwLFxuICAgICAgdmlzaWJsZUluRG9tLFxuICAgICAgaW5uZXJQb3B1cFJlZixcbiAgICAgIGNoaWxkcmVuUmVmLFxuICAgICAgaGlkZU9uQ2xpY2tPdXRzaWRlLFxuICAgIF0pXG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGV2ZW50IHdpbGwgb2NjdXIgb25seSBmb3IgZGlhbG9nIGFuZCB3aWxsIHRyYXAgZm9jdXMgaW5zaWRlIHRoZSBkaWFsb2cuXG4gICAgICovXG4gICAgY29uc3QgaGFuZGxlRm9jdXNUcmFwOiBLZXlib2FyZEV2ZW50SGFuZGxlciA9IHVzZUNhbGxiYWNrKGV2ZW50ID0+IHtcbiAgICAgIGNvbnN0IGlzVGFiUHJlc3NlZCA9IGV2ZW50LmtleSA9PT0gJ1RhYidcbiAgICAgIGlmICghaXNUYWJQcmVzc2VkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcblxuICAgICAgY29uc3QgZm9jdXNhYmxlRWxzID1cbiAgICAgICAgaW5uZXJQb3B1cFJlZi5jdXJyZW50Py5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgICAgICdhW2hyZWZdOm5vdChbZGlzYWJsZWRdKSwgYnV0dG9uOm5vdChbZGlzYWJsZWRdKSwgdGV4dGFyZWE6bm90KFtkaXNhYmxlZF0pLCBpbnB1dDpub3QoW2Rpc2FibGVkXSksIHNlbGVjdDpub3QoW2Rpc2FibGVkXSknLFxuICAgICAgICApID8/IFtdXG5cbiAgICAgIC8vIEhhbmRsZSBjYXNlIHdoZW4gbm8gaW50ZXJhY3RpdmUgZWxlbWVudCBhcmUgd2l0aGluIHRoZSBtb2RhbCAoaW5jbHVkaW5nIGNsb3NlIGljb24pXG4gICAgICBpZiAoZm9jdXNhYmxlRWxzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZpcnN0Rm9jdXNhYmxlRWwgPSBmb2N1c2FibGVFbHNbMF0gYXMgSFRNTEVsZW1lbnRcbiAgICAgIGNvbnN0IGxhc3RGb2N1c2FibGVFbCA9IGZvY3VzYWJsZUVsc1tcbiAgICAgICAgZm9jdXNhYmxlRWxzLmxlbmd0aCAtIDFcbiAgICAgIF0gYXMgSFRNTEVsZW1lbnRcblxuICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBmaXJzdEZvY3VzYWJsZUVsIHx8XG4gICAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gaW5uZXJQb3B1cFJlZi5jdXJyZW50XG4gICAgICAgICkge1xuICAgICAgICAgIGxhc3RGb2N1c2FibGVFbC5mb2N1cygpXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBsYXN0Rm9jdXNhYmxlRWwgfHxcbiAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gaW5uZXJQb3B1cFJlZi5jdXJyZW50XG4gICAgICApIHtcbiAgICAgICAgZmlyc3RGb2N1c2FibGVFbC5mb2N1cygpXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIH1cbiAgICB9LCBbXSlcblxuICAgIC8qKlxuICAgICAqIFdpbGwgcmVuZGVyIGNoaWxkcmVuIGNvbmRpdGlvbmFsbHkgaWYgY2hpbGRyZW4gaXMgYSBmdW5jdGlvbiBvciBub3QuXG4gICAgICovXG4gICAgY29uc3QgcmVuZGVyQ2hpbGRyZW4gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBjaGlsZHJlbih7XG4gICAgICAgICAgb25CbHVyOiAhaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQoZmFsc2UpIDogbm9vcCxcbiAgICAgICAgICBvbkZvY3VzOiAhaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQodHJ1ZSkgOiBub29wLFxuICAgICAgICAgIG9uUG9pbnRlckVudGVyOiAhaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQodHJ1ZSkgOiBub29wLFxuICAgICAgICAgIG9uUG9pbnRlckxlYXZlOiAhaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQoZmFsc2UpIDogbm9vcCxcbiAgICAgICAgICByZWY6IGNoaWxkcmVuUmVmLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U3R5bGVkQ2hpbGRyZW5Db250YWluZXJcbiAgICAgICAgICBhcmlhLWRlc2NyaWJlZGJ5PXtnZW5lcmF0ZWRJZH1cbiAgICAgICAgICBhcmlhLWNvbnRyb2xzPXtnZW5lcmF0ZWRJZH1cbiAgICAgICAgICBvbkJsdXI9eyFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudChmYWxzZSkgOiBub29wfVxuICAgICAgICAgIG9uRm9jdXM9eyFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudCh0cnVlKSA6IG5vb3B9XG4gICAgICAgICAgb25Qb2ludGVyRW50ZXI9eyFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudCh0cnVlKSA6IG5vb3B9XG4gICAgICAgICAgb25Qb2ludGVyTGVhdmU9eyFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudChmYWxzZSkgOiBub29wfVxuICAgICAgICAgIHJlZj17Y2hpbGRyZW5SZWZ9XG4gICAgICAgICAgdGFiSW5kZXg9e3RhYkluZGV4fVxuICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgb25LZXlEb3duPy4oZXZlbnQpXG4gICAgICAgICAgfX1cbiAgICAgICAgICBkYXRhLWNvbnRhaW5lci1mdWxsLXdpZHRoPXtjb250YWluZXJGdWxsV2lkdGh9XG4gICAgICAgICAgYXJpYS1oYXNwb3B1cD17YXJpYUhhc1BvcHVwfVxuICAgICAgICA+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L1N0eWxlZENoaWxkcmVuQ29udGFpbmVyPlxuICAgICAgKVxuICAgIH0sIFtcbiAgICAgIGFyaWFIYXNQb3B1cCxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgY29udGFpbmVyRnVsbFdpZHRoLFxuICAgICAgZ2VuZXJhdGVkSWQsXG4gICAgICBpc0NvbnRyb2xsZWQsXG4gICAgICBvbktleURvd24sXG4gICAgICBvblBvaW50ZXJFdmVudCxcbiAgICAgIHRhYkluZGV4LFxuICAgIF0pXG5cbiAgICBjb25zdCBzaG91bGRSZW5kZXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGlmICghZHluYW1pY0RvbVJlbmRlcmluZykge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZHluYW1pY0RvbVJlbmRlcmluZyAmJiB2aXNpYmxlSW5Eb20pIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSwgW2R5bmFtaWNEb21SZW5kZXJpbmcsIHZpc2libGVJbkRvbV0pXG5cbiAgICBpZiAoIXRleHQpIHtcbiAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNoaWxkcmVuXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIHtyZW5kZXJDaGlsZHJlbigpfVxuICAgICAgICB7c2hvdWxkUmVuZGVyXG4gICAgICAgICAgPyBjcmVhdGVQb3J0YWwoXG4gICAgICAgICAgICAgIDxTdHlsZWRQb3B1cFxuICAgICAgICAgICAgICAgIHJlZj17aW5uZXJQb3B1cFJlZn1cbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM9e3Bvc2l0aW9uc31cbiAgICAgICAgICAgICAgICBtYXhXaWR0aD17bWF4V2lkdGh9XG4gICAgICAgICAgICAgICAgbWF4SGVpZ2h0PXttYXhIZWlnaHR9XG4gICAgICAgICAgICAgICAgcm9sZT17cm9sZX1cbiAgICAgICAgICAgICAgICBpZD17Z2VuZXJhdGVkSWR9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICAgICAgICAgICAgcmV2ZXJzZUFuaW1hdGlvbj17cmV2ZXJzZUFuaW1hdGlvbn1cbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZH1cbiAgICAgICAgICAgICAgICBkYXRhLWhhcy1hcnJvdz17aGFzQXJyb3d9XG4gICAgICAgICAgICAgICAgb25DbGljaz17c3RvcENsaWNrUHJvcGFnYXRpb259XG4gICAgICAgICAgICAgICAgb25Qb2ludGVyRW50ZXI9eyFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudCh0cnVlKSA6IG5vb3B9XG4gICAgICAgICAgICAgICAgb25Qb2ludGVyTGVhdmU9eyFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudChmYWxzZSkgOiBub29wfVxuICAgICAgICAgICAgICAgIGFuaW1hdGlvbkR1cmF0aW9uPXthbmltYXRpb25EdXJhdGlvbn1cbiAgICAgICAgICAgICAgICBvbktleURvd249e3JvbGUgPT09ICdkaWFsb2cnID8gaGFuZGxlRm9jdXNUcmFwIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgIGlzRGlhbG9nPXtyb2xlID09PSAnZGlhbG9nJ31cbiAgICAgICAgICAgICAgICBkYXRhLXZpc2libGUtaW4tZG9tPXtcbiAgICAgICAgICAgICAgICAgICFkeW5hbWljRG9tUmVuZGVyaW5nID8gdmlzaWJsZUluRG9tIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRhdGEtYW5pbWF0ZWQ9e2FuaW1hdGlvbkR1cmF0aW9uID4gMCAmJiAhbWF4SGVpZ2h0fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3RleHR9XG4gICAgICAgICAgICAgIDwvU3R5bGVkUG9wdXA+LFxuICAgICAgICAgICAgICBwb3B1cFBvcnRhbFRhcmdldCBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IG51bGx9XG4gICAgICA8Lz5cbiAgICApXG4gIH0sXG4pXG4iXX0= */"), ';}&[data-has-arrow="true"]{&::after{content:" ";position:absolute;top:', ({
51
52
  positions
52
53
  }) => positions.arrowTop, "px;left:", ({
53
54
  positions
@@ -57,7 +58,7 @@ const StyledPopup = /* @__PURE__ */ _styled__default.default("div", process.env.
57
58
  positions
58
59
  }) => positions.rotate, "deg);margin-left:-", helpers.DEFAULT_ARROW_WIDTH, "px;border-width:", helpers.DEFAULT_ARROW_WIDTH, "px;border-style:solid;border-color:", ({
59
60
  theme
60
- }) => 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1BvcHVwL2luZGV4LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUErRG9CIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1BvcHVwL2luZGV4LnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgdHlwZSB7XG4gIEhUTUxBdHRyaWJ1dGVzLFxuICBLZXlib2FyZEV2ZW50SGFuZGxlcixcbiAgTW91c2VFdmVudEhhbmRsZXIsXG4gIFJlYWN0Tm9kZSxcbiAgUmVmLFxuICBSZWZPYmplY3QsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtcbiAgZm9yd2FyZFJlZixcbiAgc3RhcnRUcmFuc2l0aW9uLFxuICB1c2VDYWxsYmFjayxcbiAgdXNlRWZmZWN0LFxuICB1c2VJZCxcbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZSxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgeyBpc0NsaWVudFNpZGUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2lzQ2xpZW50U2lkZSdcbmltcG9ydCB0eXBlIHsgUG9zaXRpb25zVHlwZSB9IGZyb20gJy4vYW5pbWF0aW9ucydcbmltcG9ydCB7IGFuaW1hdGlvbiwgZXhpdEFuaW1hdGlvbiB9IGZyb20gJy4vYW5pbWF0aW9ucydcbmltcG9ydCB0eXBlIHsgUG9wdXBBbGlnbiwgUG9wdXBQbGFjZW1lbnQgfSBmcm9tICcuL2hlbHBlcnMnXG5pbXBvcnQge1xuICBERUZBVUxUX0FSUk9XX1dJRFRILFxuICBERUZBVUxUX1BPU0lUSU9OUyxcbiAgY29tcHV0ZVBvc2l0aW9ucyxcbn0gZnJvbSAnLi9oZWxwZXJzJ1xuXG5jb25zdCBERUZBVUxUX0FOSU1BVElPTl9EVVJBVElPTiA9IDIzMCAvLyBpbiBtc1xuY29uc3QgREVGQVVMVF9ERUJPVU5DRV9EVVJBVElPTiA9IDIwMCAvLyBpbiBtc1xuXG5jb25zdCBub29wID0gKCkgPT4ge31cblxudHlwZSBTdHlsZWRQb3B1cFByb3BzID0ge1xuICBtYXhXaWR0aDogbnVtYmVyIHwgc3RyaW5nXG4gIHBvc2l0aW9uczogUG9zaXRpb25zVHlwZVxuICByZXZlcnNlQW5pbWF0aW9uOiBib29sZWFuXG4gIG1heEhlaWdodD86IG51bWJlciB8IHN0cmluZ1xuICBhbmltYXRpb25EdXJhdGlvbj86IG51bWJlclxuICBpc0RpYWxvZzogYm9vbGVhblxufVxuXG4vKipcbiAqIFRoaXMgZXZlbnQgaGFuZGxlIGFsbG93IHVzIHRvIG5vdCBidWJibGUgdGhlIGV2ZW50IHRvIGRvY3VtZW50LmJvZHkgbGlrZSB0aGlzIHJlYWN0LXNlbGVjdCB3b3JrcyBmaW5lXG4gKi9cbmNvbnN0IHN0b3BDbGlja1Byb3BhZ2F0aW9uOiBNb3VzZUV2ZW50SGFuZGxlciA9IGV2ZW50ID0+IHtcbiAgZXZlbnQubmF0aXZlRXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKClcbn1cblxuY29uc3QgU3R5bGVkUG9wdXAgPSBzdHlsZWQoJ2RpdicsIHtcbiAgc2hvdWxkRm9yd2FyZFByb3A6IHByb3AgPT5cbiAgICAhW1xuICAgICAgJ21heFdpZHRoJyxcbiAgICAgICdwb3NpdGlvbnMnLFxuICAgICAgJ3JldmVyc2VBbmltYXRpb24nLFxuICAgICAgJ21heEhlaWdodCcsXG4gICAgICAnYW5pbWF0aW9uRHVyYXRpb24nLFxuICAgICAgJ2lzRGlhbG9nJyxcbiAgICBdLmluY2x1ZGVzKHByb3ApLFxufSk8U3R5bGVkUG9wdXBQcm9wcz5gXG4gIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFN0cm9uZ2VyfTtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dFN0cm9uZ2VyfTtcbiAgYm9yZGVyLXJhZGl1czogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5yYWRpaS5kZWZhdWx0fTtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiBgJHt0aGVtZS5zcGFjZVsnMC41J119ICR7dGhlbWUuc3BhY2VbJzEnXX1gfTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG1heC13aWR0aDogJHsoeyBtYXhXaWR0aCB9KSA9PlxuICAgIHR5cGVvZiBtYXhXaWR0aCA9PT0gJ251bWJlcicgPyBgJHttYXhXaWR0aH1weGAgOiBtYXhXaWR0aH07XG4gIG1heC1oZWlnaHQ6ICR7KHsgbWF4SGVpZ2h0IH0pID0+XG4gICAgdHlwZW9mIG1heEhlaWdodCA9PT0gJ251bWJlcicgPyBgJHttYXhIZWlnaHR9cHhgIDogbWF4SGVpZ2h0fTtcbiAgb3ZlcmZsb3c6ICR7KHsgbWF4SGVpZ2h0IH0pID0+IChtYXhIZWlnaHQgPyAnYXV0bycgOiB1bmRlZmluZWQpfTtcbiAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbiAgZm9udC1zaXplOiAwLjhyZW07XG4gIGluc2V0OiAwIGF1dG8gYXV0byAwO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIG9wYWNpdHk6IDA7XG4gIHotaW5kZXg6IDE7XG4gIHRyYW5zZm9ybTogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLnBvcHVwUG9zaXRpb259O1xuXG4gICZbZGF0YS1hbmltYXRlZD1cInRydWVcIl0ge1xuICAgIGFuaW1hdGlvbjogJHsoeyBwb3NpdGlvbnMsIHJldmVyc2VBbmltYXRpb24sIGFuaW1hdGlvbkR1cmF0aW9uIH0pID0+IGNzc2BcbiAgICAgICR7YW5pbWF0aW9uRHVyYXRpb259bXMgJHtcbiAgICAgICAgIXJldmVyc2VBbmltYXRpb24gPyBhbmltYXRpb24ocG9zaXRpb25zKSA6IGV4aXRBbmltYXRpb24ocG9zaXRpb25zKVxuICAgICAgfSBmb3J3YXJkc1xuICAgIGB9O1xuICB9XG5cbiAgJltkYXRhLWhhcy1hcnJvdz1cInRydWVcIl0ge1xuICAgICY6OmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAkeyh7IHBvc2l0aW9ucyB9KSA9PiBwb3NpdGlvbnMuYXJyb3dUb3B9cHg7XG4gICAgICBsZWZ0OiAkeyh7IHBvc2l0aW9ucyB9KSA9PiBwb3NpdGlvbnMuYXJyb3dMZWZ0fXB4O1xuICAgICAgdHJhbnNmb3JtOiAkeyh7IHBvc2l0aW9ucyB9KSA9PiBwb3NpdGlvbnMuYXJyb3dUcmFuc2Zvcm19XG4gICAgICAgIHJvdGF0ZSgkeyh7IHBvc2l0aW9ucyB9KSA9PiBwb3NpdGlvbnMucm90YXRlfWRlZyk7XG4gICAgICBtYXJnaW4tbGVmdDogLSR7REVGQVVMVF9BUlJPV19XSURUSH1weDtcbiAgICAgIGJvcmRlci13aWR0aDogJHtERUZBVUxUX0FSUk9XX1dJRFRIfXB4O1xuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAgIGJvcmRlci1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kU3Ryb25nZXJ9XG4gICAgICAgIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgJltkYXRhLXZpc2libGUtaW4tZG9tPVwiZmFsc2VcIl0ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbmBcblxuY29uc3QgU3R5bGVkQ2hpbGRyZW5Db250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBpbmhlcml0O1xuXG4gICZbZGF0YS1jb250YWluZXItZnVsbC13aWR0aD1cInRydWVcIl0ge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5gXG5cbnR5cGUgUG9wdXBQcm9wcyA9IHtcbiAgLyoqXG4gICAqIElkIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGlmIG5vdCBzZXQuIEl0IGlzIHVzZWQgZm9yIGFzc29jaWF0aW5nIHBvcHVwIHdyYXBwZXIgd2l0aCBwb3B1cCBwb3J0YWwuXG4gICAqL1xuICBpZD86IHN0cmluZ1xuICBjaGlsZHJlbjpcbiAgICB8IFJlYWN0Tm9kZVxuICAgIHwgKChyZW5kZXJQcm9wczoge1xuICAgICAgICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgICAgICAgb25CbHVyOiAoKSA9PiB2b2lkXG4gICAgICAgIG9uRm9jdXM6ICgpID0+IHZvaWRcbiAgICAgICAgb25Qb2ludGVyRW50ZXI6ICgpID0+IHZvaWRcbiAgICAgICAgb25Qb2ludGVyTGVhdmU6ICgpID0+IHZvaWRcbiAgICAgICAgcmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPlxuICAgICAgfSkgPT4gUmVhY3ROb2RlKVxuICBtYXhXaWR0aD86IG51bWJlciB8IHN0cmluZ1xuICAvKipcbiAgICogYGF1dG9gIHBsYWNlbWVudCB3aWxsIGNoYW5nZSB0aGUgcG9zaXRpb24gb2YgdGhlIHBvcHVwIGlmIGl0IGRvZXNuJ3QgZml0IGluIHRoZSB2aWV3cG9ydC5cbiAgICovXG4gIHBsYWNlbWVudD86IFBvcHVwUGxhY2VtZW50XG4gIC8qKlxuICAgKiBBbGlnbiB0aGUgcG9wdXAgdG8gdGhlIHN0YXJ0IG9yIGNlbnRlciBvZiB0aGUgY2hpbGRyZW4uXG4gICAqL1xuICBhbGlnbj86IFBvcHVwQWxpZ25cbiAgLyoqXG4gICAqIENvbnRlbnQgb2YgdGhlIHBvcHVwLCBwcmVmZXJhYmx5IHRleHQgaW5zaWRlLlxuICAgKi9cbiAgdGV4dD86IFJlYWN0Tm9kZVxuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIEl0IHdpbGwgYWRkIGB3aWR0aDogMTAwJWAgdG8gdGhlIHBvcHVwIGNvbnRhaW5lci5cbiAgICovXG4gIGNvbnRhaW5lckZ1bGxXaWR0aD86IGJvb2xlYW5cbiAgLyoqXG4gICAqIEl0IHdpbGwgZm9yY2UgZGlzcGxheSBwb3B1cC4gVGhpcyBjYW4gYmUgdXNlZnVsIGlmIHlvdSBuZWVkIHRvIGFsd2F5cyBkaXNwbGF5IHRoZSBwb3B1cCB3aXRob3V0IGhvdmVyIG5lZWRlZC5cbiAgICovXG4gIHZpc2libGU/OiBib29sZWFuXG4gIGlubmVyUmVmPzogUmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD5cbiAgcm9sZT86IHN0cmluZ1xuICAnZGF0YS10ZXN0aWQnPzogc3RyaW5nXG4gIGhhc0Fycm93PzogYm9vbGVhblxuICBvbkNsb3NlPzogKCkgPT4gdm9pZFxuICB0YWJJbmRleD86IG51bWJlclxuICBvbktleURvd24/OiBLZXlib2FyZEV2ZW50SGFuZGxlclxuICAnYXJpYS1oYXNwb3B1cCc/OiBIVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD5bJ2FyaWEtaGFzcG9wdXAnXVxuICBoaWRlT25DbGlja091dHNpZGU/OiBib29sZWFuXG4gIC8qKlxuICAgKiBJZiB5b3Ugc2V0IGRlYm91bmNlVGltZSB0byBmYWxzZSwgdGhlIHBvcHVwIHdpbGwgbm90IGRlYm91bmNlIHRoZSBob3ZlciBldmVudCBhbmQgd2lsbCBiZSBkaXNwbGF5ZWQgaW5zdGFudGx5LlxuICAgKiBJZiBzZXQgdG8gMCBpdCB3aWxsIGRpc2FibGUgZGVib3VuY2UuXG4gICAqL1xuICBkZWJvdW5jZURlbGF5PzogbnVtYmVyXG4gIC8qKlxuICAgKiBJZiB5b3Ugc2V0IGEgbWF4IGhlaWdodCBrZWVwIGluIG1pbmQgdGhhdCB0aGUgYW5pbWF0aW9uIGlzIGRpc2FibGVkLCBvciBpdCB3aWxsIG5vdCB3b3JrIHByb3Blcmx5IG9uIHNvbWUgYnJvd3NlcnMuXG4gICAqL1xuICBtYXhIZWlnaHQ/OiBzdHJpbmcgfCBudW1iZXJcbiAgLyoqXG4gICAqIFdpbGwgcmVtb3ZlIHRoZSBhbmltYXRpb24gb24gdGhlIHBvcHVwIGlmIHNldCB0byBmYWxzZS5cbiAgICovXG4gIGRpc2FibGVBbmltYXRpb24/OiBib29sZWFuXG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgcG9ydGFsIHRhcmdldCBpcyBjaGlsZHJlbiBjb250YWluZXIgb3IgZG9jdW1lbnQuYm9keSBpZiBjaGlsZHJlbiBpcyBhIGZ1bmN0aW9uLiBZb3UgY2FuIG92ZXJyaWRlIHRoaXNcbiAgICogYmVoYXZpb3IgYnkgc2V0dGluZyBhIHBvcnRhbFRhcmdldCBwcm9wLlxuICAgKi9cbiAgcG9ydGFsVGFyZ2V0PzogSFRNTEVsZW1lbnRcbiAgLyoqXG4gICAqIElmIHlvdSBzZXQgdGhpcyB0byB0cnVlLCB0aGUgcG9wdXAgd2lsbCBiZSByZW5kZXJlZCBpbiB0aGUgRE9NIG9ubHkgd2hlbiBpdCBpcyB2aXNpYmxlLlxuICAgKiBXaGVuIHNldCB0byBmYWxzZSwgdGhlIHBvcHVwIHdpbGwgYWx3YXlzIGJlIHJlbmRlcmVkIGluIHRoZSBET00uIEJ5IGRlZmF1bHQgdGhpcyB2YWx1ZSBpcyBzZXQgdG8gYHRydWVgLCBpZiBmb3Igc29tZVxuICAgKiByZWFzb24geW91IG5lZWQgdG8gZGlzYWJsZSBpdCwgeW91IGNhbiBzZXQgaXQgdG8gYGZhbHNlYC5cbiAgICovXG4gIGR5bmFtaWNEb21SZW5kZXJpbmc/OiBib29sZWFuXG59XG5cbi8qKlxuICogQGV4cGVyaW1lbnRhbCBUaGlzIGNvbXBvbmVudCBpcyBleHBlcmltZW50YWwgYW5kIG1heSBiZSBzdWJqZWN0IHRvIGJyZWFraW5nIGNoYW5nZXMgaW4gdGhlIGZ1dHVyZS5cbiAqL1xuZXhwb3J0IGNvbnN0IFBvcHVwID0gZm9yd2FyZFJlZihcbiAgKFxuICAgIHtcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgdGV4dCA9ICcnLFxuICAgICAgcGxhY2VtZW50ID0gJ2F1dG8nLFxuICAgICAgYWxpZ24gPSAnY2VudGVyJyxcbiAgICAgIGlkLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29udGFpbmVyRnVsbFdpZHRoLFxuICAgICAgbWF4V2lkdGggPSAnMTQuNXJlbScsXG4gICAgICBtYXhIZWlnaHQsXG4gICAgICB2aXNpYmxlLFxuICAgICAgaW5uZXJSZWYsXG4gICAgICByb2xlID0gJ3BvcHVwJyxcbiAgICAgICdkYXRhLXRlc3RpZCc6IGRhdGFUZXN0SWQsXG4gICAgICBoYXNBcnJvdyA9IHRydWUsXG4gICAgICBvbkNsb3NlLFxuICAgICAgdGFiSW5kZXggPSAwLFxuICAgICAgb25LZXlEb3duLFxuICAgICAgJ2FyaWEtaGFzcG9wdXAnOiBhcmlhSGFzUG9wdXAsXG4gICAgICBoaWRlT25DbGlja091dHNpZGUgPSBmYWxzZSxcbiAgICAgIGRlYm91bmNlRGVsYXkgPSBERUZBVUxUX0RFQk9VTkNFX0RVUkFUSU9OLFxuICAgICAgZGlzYWJsZUFuaW1hdGlvbiA9IGZhbHNlLFxuICAgICAgcG9ydGFsVGFyZ2V0LFxuICAgICAgZHluYW1pY0RvbVJlbmRlcmluZyA9IHRydWUsXG4gICAgfTogUG9wdXBQcm9wcyxcbiAgICByZWY6IFJlZjxIVE1MRGl2RWxlbWVudD4sXG4gICkgPT4ge1xuICAgIGNvbnN0IGNoaWxkcmVuUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICAgIHVzZUltcGVyYXRpdmVIYW5kbGUoaW5uZXJSZWYsICgpID0+IGNoaWxkcmVuUmVmLmN1cnJlbnQgYXMgSFRNTERpdkVsZW1lbnQpXG5cbiAgICBjb25zdCBpbm5lclBvcHVwUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICAgIHVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCAoKSA9PiBpbm5lclBvcHVwUmVmLmN1cnJlbnQgYXMgSFRNTERpdkVsZW1lbnQpXG5cbiAgICBjb25zdCB0aW1lciA9IHVzZVJlZjxSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0Pj4odW5kZWZpbmVkKVxuICAgIGNvbnN0IHBvcHVwUG9ydGFsVGFyZ2V0ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICBpZiAocG9ydGFsVGFyZ2V0KSByZXR1cm4gcG9ydGFsVGFyZ2V0XG5cbiAgICAgIGlmIChyb2xlID09PSAnZGlhbG9nJykge1xuICAgICAgICBpZiAoY2hpbGRyZW5SZWYuY3VycmVudCkgcmV0dXJuIGNoaWxkcmVuUmVmLmN1cnJlbnRcbiAgICAgICAgaWYgKGlzQ2xpZW50U2lkZSkgcmV0dXJuIGRvY3VtZW50LmJvZHlcblxuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuXG4gICAgICAvLyBXZSBjaGVjayBpZiB3aW5kb3cgZXhpc3RzIGZvciBTU1JcbiAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQuYm9keVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICAgIH0sIFtwb3J0YWxUYXJnZXQsIHJvbGUsIGNoaWxkcmVuUmVmLmN1cnJlbnRdKVxuXG4gICAgLy8gVGhlcmUgYXJlIHNvbWUgaXNzdWUgd2hlbiBtaXhpbmcgYW5pbWF0aW9uIGFuZCBtYXhIZWlnaHQgb24gc29tZSBicm93c2Vycywgc28gd2UgZGlzYWJsZSBhbmltYXRpb24gaWYgbWF4SGVpZ2h0IGlzIHNldC5cbiAgICBjb25zdCBhbmltYXRpb25EdXJhdGlvbiA9XG4gICAgICBkaXNhYmxlQW5pbWF0aW9uIHx8IG1heEhlaWdodCA/IDAgOiBERUZBVUxUX0FOSU1BVElPTl9EVVJBVElPTlxuXG4gICAgLy8gRGVib3VuY2UgdGltZXIgd2lsbCBiZSB1c2VkIHRvIHByZXZlbnQgdGhlIHBvcHVwIGZyb20gZmxpY2tlcmluZyB3aGVuIHRoZSB1c2VyIG1vdmVzIHRoZSBtb3VzZSBvdXQgYW5kIGluIHRoZSBjaGlsZHJlbiBlbGVtZW50LlxuICAgIGNvbnN0IGRlYm91bmNlVGltZXIgPSB1c2VSZWY8UmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4+KHVuZGVmaW5lZClcbiAgICBjb25zdCBbdmlzaWJsZUluRG9tLCBzZXRWaXNpYmxlSW5Eb21dID0gdXNlU3RhdGUoZmFsc2UpXG4gICAgY29uc3QgW3JldmVyc2VBbmltYXRpb24sIHNldFJldmVyc2VBbmltYXRpb25dID0gdXNlU3RhdGUoZmFsc2UpXG4gICAgY29uc3QgW3Bvc2l0aW9ucywgc2V0UG9zaXRpb25zXSA9IHVzZVN0YXRlPFBvc2l0aW9uc1R5cGU+KHtcbiAgICAgIC4uLkRFRkFVTFRfUE9TSVRJT05TLFxuICAgIH0pXG4gICAgY29uc3QgdW5pcXVlSWQgPSB1c2VJZCgpXG4gICAgY29uc3QgZ2VuZXJhdGVkSWQgPSBpZCA/PyB1bmlxdWVJZFxuICAgIGNvbnN0IGlzQ29udHJvbGxlZCA9IHZpc2libGUgIT09IHVuZGVmaW5lZFxuXG4gICAgY29uc3QgZ2VuZXJhdGVQb3B1cFBvc2l0aW9ucyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIGlmIChjaGlsZHJlblJlZi5jdXJyZW50ICYmIGlubmVyUG9wdXBSZWYuY3VycmVudCkge1xuICAgICAgICBzZXRQb3NpdGlvbnMoXG4gICAgICAgICAgY29tcHV0ZVBvc2l0aW9ucyh7XG4gICAgICAgICAgICBjaGlsZHJlblJlZixcbiAgICAgICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgICAgIHBvcHVwUmVmOiBpbm5lclBvcHVwUmVmLFxuICAgICAgICAgICAgcG9wdXBQb3J0YWxUYXJnZXQ6IHBvcHVwUG9ydGFsVGFyZ2V0IGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgaGFzQXJyb3csXG4gICAgICAgICAgICBhbGlnbixcbiAgICAgICAgICB9KSxcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH0sIFtoYXNBcnJvdywgcGxhY2VtZW50LCBwb3B1cFBvcnRhbFRhcmdldCwgYWxpZ25dKVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB3ZSBuZWVkIHRvIHJlY29tcHV0ZSBwb3NpdGlvbnMgb2YgcG9wdXAgZHVlIHRvIHdpbmRvdyBzY3JvbGwgb3IgcmVzaXplLlxuICAgICAqL1xuICAgIGNvbnN0IG9uV2luZG93Q2hhbmdlRGV0ZWN0ZWQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAvLyBXZSByZW1vdmUgYW5pbWF0aW9uIG9uIHNjcm9sbCBvciB0aGUgYW5pbWF0aW9uIHdpbGwgcmVzdGFydCBvbiBldmVyeSBzY3JvbGxcbiAgICAgIGlmIChpbm5lclBvcHVwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgaW5uZXJQb3B1cFJlZi5jdXJyZW50LnN0eWxlLmFuaW1hdGlvbiA9ICdub25lJ1xuICAgICAgfVxuXG4gICAgICBnZW5lcmF0ZVBvcHVwUG9zaXRpb25zKClcbiAgICB9LCBbZ2VuZXJhdGVQb3B1cFBvc2l0aW9ucywgaW5uZXJQb3B1cFJlZl0pXG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHdlIG5lZWQgdG8gcmVtb3ZlIHBvcHVwIHBvcnRhbCBmcm9tIERPTSBhbmQgcmVtb3ZlIGV2ZW50IGxpc3RlbmVyIHRvIGl0LlxuICAgICAqL1xuICAgIGNvbnN0IHVubW91bnRQb3B1cEZyb21Eb20gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBzZXRWaXNpYmxlSW5Eb20oZmFsc2UpXG4gICAgICBzZXRSZXZlcnNlQW5pbWF0aW9uKGZhbHNlKVxuXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25XaW5kb3dDaGFuZ2VEZXRlY3RlZCwgdHJ1ZSlcbiAgICB9LCBbb25XaW5kb3dDaGFuZ2VEZXRlY3RlZF0pXG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHdlIG5lZWQgdG8gaGlkZSBwb3B1cC4gQSB0aW1lb3V0IGlzIHNldCB0byBhbGxvdyBhbmltYXRpb24gZW5kLCB0aGVuIHJlbW92ZVxuICAgICAqIHBvcHVwIGZyb20gZG9tLlxuICAgICAqL1xuICAgIGNvbnN0IGNsb3NlUG9wdXAgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBjb25zdCBjbG9zZUZ1bmN0aW9uID0gKCkgPT4ge1xuICAgICAgICBpZiAoIWRpc2FibGVBbmltYXRpb24pIHtcbiAgICAgICAgICBzZXRSZXZlcnNlQW5pbWF0aW9uKHRydWUpXG5cbiAgICAgICAgICB0aW1lci5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBvbkNsb3NlPy4oKVxuICAgICAgICAgICAgdW5tb3VudFBvcHVwRnJvbURvbSgpXG4gICAgICAgICAgfSwgYW5pbWF0aW9uRHVyYXRpb24pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb25DbG9zZT8uKClcbiAgICAgICAgICB1bm1vdW50UG9wdXBGcm9tRG9tKClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIWRpc2FibGVBbmltYXRpb24pIHtcbiAgICAgICAgZGVib3VuY2VUaW1lci5jdXJyZW50ID0gc2V0VGltZW91dChcbiAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICBjbG9zZUZ1bmN0aW9uKClcbiAgICAgICAgICB9LFxuICAgICAgICAgIGRlYm91bmNlRGVsYXkgJiYgIWRpc2FibGVBbmltYXRpb24gPyBkZWJvdW5jZURlbGF5IDogMCxcbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xvc2VGdW5jdGlvbigpXG4gICAgICB9XG4gICAgfSwgW1xuICAgICAgYW5pbWF0aW9uRHVyYXRpb24sXG4gICAgICBkaXNhYmxlQW5pbWF0aW9uLFxuICAgICAgZGVib3VuY2VEZWxheSxcbiAgICAgIG9uQ2xvc2UsXG4gICAgICB1bm1vdW50UG9wdXBGcm9tRG9tLFxuICAgIF0pXG5cbiAgICAvKipcbiAgICAgKiBXaGVuIG1vdXNlIGhvdmVyIG9yIHN0b3AgaG92ZXJpbmcgY2hpbGRyZW4gdGhpcyBmdW5jdGlvbiBkaXNwbGF5IG9yIGhpZGUgcG9wdXAuIEEgdGltZW91dCBpcyBzZXQgdG8gYWxsb3cgYW5pbWF0aW9uXG4gICAgICogZW5kLCB0aGVuIHJlbW92ZSBwb3B1cCBmcm9tIGRvbS5cbiAgICAgKi9cbiAgICBjb25zdCBvblBvaW50ZXJFdmVudCA9IHVzZUNhbGxiYWNrKFxuICAgICAgKGlzVmlzaWJsZTogYm9vbGVhbikgPT4gKCkgPT4ge1xuICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIGRlYm91bmNlRGVsYXkgYW5kIHRoZSBwb3B1cCBpcyBub3QgdmlzaWJsZSwgd2UgY2xlYXIgdGhlIGRlYm91bmNlIHRpbWVyXG4gICAgICAgIGlmICghdmlzaWJsZSAmJiBkZWJvdW5jZURlbGF5ID4gMCAmJiBkZWJvdW5jZVRpbWVyLmN1cnJlbnQpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQoZGVib3VuY2VUaW1lci5jdXJyZW50KVxuICAgICAgICAgIGRlYm91bmNlVGltZXIuY3VycmVudCA9IHVuZGVmaW5lZFxuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhpcyBjb25kaXRpb24gaXMgZm9yIHdoZW4gd2Ugd2FudCB0byB1bm1vdW50IHRoZSBwb3B1cFxuICAgICAgICAvLyBUaGVyZSBpcyBkZWJvdW5jZSBpbiBvcmRlciB0byBhdm9pZCBwb3B1cCB0byBmbGlja2VyIHdoZW4gd2UgbW92ZSB0aGUgbW91c2UgZnJvbSBjaGlsZHJlbiB0byBwb3B1cFxuICAgICAgICAvLyBUaW1lciBpcyB1c2VkIHRvIGZvbGxvdyB0aGUgYW5pbWF0aW9uIGR1cmF0aW9uXG4gICAgICAgIGlmICghaXNWaXNpYmxlICYmIGlubmVyUG9wdXBSZWYuY3VycmVudCAmJiAhZGVib3VuY2VUaW1lci5jdXJyZW50KSB7XG4gICAgICAgICAgY2xvc2VQb3B1cCgpXG4gICAgICAgIH0gZWxzZSBpZiAoaXNWaXNpYmxlKSB7XG4gICAgICAgICAgLy8gVGhpcyBjb25kaXRpb24gaXMgZm9yIHdoZW4gd2Ugd2FudCB0byBtb3VudCB0aGUgcG9wdXBcbiAgICAgICAgICAvLyBJZiB0aGUgdGltZXIgZXhpc3RzIGl0IG1lYW5zIHRoZSBwb3B1cCB3YXMgYWJvdXQgdG8gdW1vdW50LCBidXQgd2UgaG92ZXJlZCB0aGUgY2hpbGRyZW4gYWdhaW4sXG4gICAgICAgICAgLy8gc28gd2UgY2xlYXIgdGhlIHRpbWVyIGFuZCB0aGUgcG9wdXAgd2lsbCBub3QgYmUgdW5tb3VudGVkXG4gICAgICAgICAgaWYgKHRpbWVyLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHNldFJldmVyc2VBbmltYXRpb24oZmFsc2UpXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXIuY3VycmVudClcbiAgICAgICAgICAgIHRpbWVyLmN1cnJlbnQgPSB1bmRlZmluZWRcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gQW5kIGhlcmUgaXMgd2hlbiB3ZSBjdXJyZW50bHkgYXJlIGluIGEgZGVib3VuY2UgdGltZXIsIGl0IG1lYW5zIHBvcHVwIHdhcyBob3ZlcmVkIGR1cmluZ1xuICAgICAgICAgIC8vIHRoYXQgcGVyaW9kLCBhbmQgc28gd2UgY2FuIGNsZWFyIGRlYm91bmNlIHRpbWVyXG4gICAgICAgICAgaWYgKGRlYm91bmNlVGltZXIuY3VycmVudCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGRlYm91bmNlVGltZXIuY3VycmVudClcbiAgICAgICAgICAgIGRlYm91bmNlVGltZXIuY3VycmVudCA9IHVuZGVmaW5lZFxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZGVib3VuY2VEZWxheSA+IDApIHtcbiAgICAgICAgICAgIGRlYm91bmNlVGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICBzZXRWaXNpYmxlSW5Eb20odHJ1ZSlcbiAgICAgICAgICAgIH0sIGRlYm91bmNlRGVsYXkpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN0YXJ0VHJhbnNpdGlvbigoKSA9PiB7XG4gICAgICAgICAgICAgIHNldFZpc2libGVJbkRvbSh0cnVlKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBbY2xvc2VQb3B1cCwgZGVib3VuY2VEZWxheSwgdmlzaWJsZV0sXG4gICAgKVxuXG4gICAgLyoqXG4gICAgICogT25jZSBwb3B1cCBpcyB2aXNpYmxlIGluIHRoZSBkb20gd2UgY2FuIGNvbXB1dGUgcG9zaXRpb25zLCB0aGVuIHNldCBpdCB2aXNpYmxlIG9uIHNjcmVlbiBhbmQgYWRkIGV2ZW50IHRvXG4gICAgICogcmVjb21wdXRlIHBvc2l0aW9ucyBvbiBzY3JvbGwgb3Igc2NyZWVuIHJlc2l6ZS5cbiAgICAgKi9cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHZpc2libGVJbkRvbSkge1xuICAgICAgICBnZW5lcmF0ZVBvcHVwUG9zaXRpb25zKClcblxuICAgICAgICBpZiAocG9wdXBQb3J0YWxUYXJnZXQgPT09IGRvY3VtZW50LmJvZHkpIHtcbiAgICAgICAgICAvLyBXZSB3YW50IHRvIGRldGVjdCBzY3JvbGwgYW5kIHJlc2l6ZSBpbiBvcmRlciB0byByZWNvbXB1dGUgcG9zaXRpb25zIG9mIHBvcHVwXG4gICAgICAgICAgLy8gQWRkaW5nIHRydWUgYXMgdGhpcmQgcGFyYW1ldGVyIHRvIGV2ZW50IGxpc3RlbmVyIHdpbGwgZGV0ZWN0IG5lc3RlZCBzY3JvbGxzLlxuICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBvbldpbmRvd0NoYW5nZURldGVjdGVkLCB0cnVlKVxuICAgICAgICB9XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBvbldpbmRvd0NoYW5nZURldGVjdGVkLCB0cnVlKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25XaW5kb3dDaGFuZ2VEZXRlY3RlZCwgdHJ1ZSlcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG9uV2luZG93Q2hhbmdlRGV0ZWN0ZWQsIHRydWUpXG4gICAgICAgIGlmICh0aW1lci5jdXJyZW50KSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyLmN1cnJlbnQpXG4gICAgICAgICAgdGltZXIuY3VycmVudCA9IHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgW1xuICAgICAgZ2VuZXJhdGVQb3B1cFBvc2l0aW9ucyxcbiAgICAgIG9uV2luZG93Q2hhbmdlRGV0ZWN0ZWQsXG4gICAgICB2aXNpYmxlSW5Eb20sXG4gICAgICBtYXhXaWR0aCxcbiAgICAgIHBvcHVwUG9ydGFsVGFyZ2V0LFxuICAgIF0pXG5cbiAgICAvLyBUaGlzIHdpbGwgYmUgdHJpZ2dlcmVkIHdoZW4gcG9zaXRpb25zIGFyZSBjb21wdXRlZCBhbmQgcG9wdXAgaXMgdmlzaWJsZSBpbiB0aGUgZG9tLlxuICAgIHVzZUVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKHZpc2libGVJbkRvbSAmJiBpbm5lclBvcHVwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBpbm5lclBvcHVwUmVmLmN1cnJlbnQuc3R5bGUub3BhY2l0eSA9ICcxJ1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICAgICAgW3Bvc2l0aW9uc10sXG4gICAgKVxuXG4gICAgLyoqXG4gICAgICogSWYgcG9wdXAgaGFzIGB2aXNpYmxlYCBwcm9wIGl0IG1lYW5zIHRoZSBwb3B1cCBpcyBtYW51YWxseSBjb250cm9sbGVkIHRocm91Z2ggdGhpcyBwcm9wLlxuICAgICAqIEluIHRoaXMgY2FzIHdlIGRvbid0IHdhbnQgdG8gZGlzcGxheSBwb3B1cCBvbiBob3ZlciwgYnV0IG9ubHkgd2hlbiBgdmlzaWJsZWAgaXMgdHJ1ZS5cbiAgICAgKi9cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKGlzQ29udHJvbGxlZCkge1xuICAgICAgICBvblBvaW50ZXJFdmVudCh2aXNpYmxlKSgpXG4gICAgICB9XG4gICAgfSwgW2lzQ29udHJvbGxlZCwgb25Qb2ludGVyRXZlbnQsIHZpc2libGVdKVxuXG4gICAgLy8gSGFuZGxlIGhpZGUgb24gZXNjIHByZXNzIGFuZCBoaWRlIG9uIGNsaWNrIG91dHNpZGVcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgaGFuZGxlRXNjUHJlc3MgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICBjbG9zZVBvcHVwKClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgcG9wdXBDdXJyZW50ID0gaW5uZXJQb3B1cFJlZi5jdXJyZW50XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuQ3VycmVudCA9IGNoaWxkcmVuUmVmLmN1cnJlbnRcblxuICAgICAgICBpZiAocG9wdXBDdXJyZW50ICYmIGhpZGVPbkNsaWNrT3V0c2lkZSAmJiAhZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldCAmJlxuICAgICAgICAgICAgZXZlbnQudGFyZ2V0ICE9PSBwb3B1cEN1cnJlbnQgJiZcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldCAhPT0gY2hpbGRyZW5DdXJyZW50ICYmXG4gICAgICAgICAgICAhY2hpbGRyZW5DdXJyZW50Py5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICAgICAgICFwb3B1cEN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgY2xvc2VQb3B1cCgpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodmlzaWJsZUluRG9tKSB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCBoYW5kbGVFc2NQcmVzcylcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXl1cCcsIGhhbmRsZUVzY1ByZXNzKVxuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgICAgfVxuICAgIH0sIFtcbiAgICAgIGNsb3NlUG9wdXAsXG4gICAgICB2aXNpYmxlSW5Eb20sXG4gICAgICBpbm5lclBvcHVwUmVmLFxuICAgICAgY2hpbGRyZW5SZWYsXG4gICAgICBoaWRlT25DbGlja091dHNpZGUsXG4gICAgXSlcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZXZlbnQgd2lsbCBvY2N1ciBvbmx5IGZvciBkaWFsb2cgYW5kIHdpbGwgdHJhcCBmb2N1cyBpbnNpZGUgdGhlIGRpYWxvZy5cbiAgICAgKi9cbiAgICBjb25zdCBoYW5kbGVGb2N1c1RyYXA6IEtleWJvYXJkRXZlbnRIYW5kbGVyID0gdXNlQ2FsbGJhY2soZXZlbnQgPT4ge1xuICAgICAgY29uc3QgaXNUYWJQcmVzc2VkID0gZXZlbnQua2V5ID09PSAnVGFiJ1xuICAgICAgaWYgKCFpc1RhYlByZXNzZWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuXG4gICAgICBjb25zdCBmb2N1c2FibGVFbHMgPVxuICAgICAgICBpbm5lclBvcHVwUmVmLmN1cnJlbnQ/LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICAgICAgJ2FbaHJlZl06bm90KFtkaXNhYmxlZF0pLCBidXR0b246bm90KFtkaXNhYmxlZF0pLCB0ZXh0YXJlYTpub3QoW2Rpc2FibGVkXSksIGlucHV0Om5vdChbZGlzYWJsZWRdKSwgc2VsZWN0Om5vdChbZGlzYWJsZWRdKScsXG4gICAgICAgICkgPz8gW11cblxuICAgICAgLy8gSGFuZGxlIGNhc2Ugd2hlbiBubyBpbnRlcmFjdGl2ZSBlbGVtZW50IGFyZSB3aXRoaW4gdGhlIG1vZGFsIChpbmNsdWRpbmcgY2xvc2UgaWNvbilcbiAgICAgIGlmIChmb2N1c2FibGVFbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlyc3RGb2N1c2FibGVFbCA9IGZvY3VzYWJsZUVsc1swXSBhcyBIVE1MRWxlbWVudFxuICAgICAgY29uc3QgbGFzdEZvY3VzYWJsZUVsID0gZm9jdXNhYmxlRWxzW1xuICAgICAgICBmb2N1c2FibGVFbHMubGVuZ3RoIC0gMVxuICAgICAgXSBhcyBIVE1MRWxlbWVudFxuXG4gICAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGZpcnN0Rm9jdXNhYmxlRWwgfHxcbiAgICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBpbm5lclBvcHVwUmVmLmN1cnJlbnRcbiAgICAgICAgKSB7XG4gICAgICAgICAgbGFzdEZvY3VzYWJsZUVsLmZvY3VzKClcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGxhc3RGb2N1c2FibGVFbCB8fFxuICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBpbm5lclBvcHVwUmVmLmN1cnJlbnRcbiAgICAgICkge1xuICAgICAgICBmaXJzdEZvY3VzYWJsZUVsLmZvY3VzKClcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgfVxuICAgIH0sIFtdKVxuXG4gICAgLyoqXG4gICAgICogV2lsbCByZW5kZXIgY2hpbGRyZW4gY29uZGl0aW9uYWxseSBpZiBjaGlsZHJlbiBpcyBhIGZ1bmN0aW9uIG9yIG5vdC5cbiAgICAgKi9cbiAgICBjb25zdCByZW5kZXJDaGlsZHJlbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuKHtcbiAgICAgICAgICBvbkJsdXI6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudChmYWxzZSkgOiBub29wLFxuICAgICAgICAgIG9uRm9jdXM6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudCh0cnVlKSA6IG5vb3AsXG4gICAgICAgICAgb25Qb2ludGVyRW50ZXI6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudCh0cnVlKSA6IG5vb3AsXG4gICAgICAgICAgb25Qb2ludGVyTGVhdmU6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudChmYWxzZSkgOiBub29wLFxuICAgICAgICAgIHJlZjogY2hpbGRyZW5SZWYsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRDaGlsZHJlbkNvbnRhaW5lclxuICAgICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9e2dlbmVyYXRlZElkfVxuICAgICAgICAgIGFyaWEtY29udHJvbHM9e2dlbmVyYXRlZElkfVxuICAgICAgICAgIG9uQmx1cj17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KGZhbHNlKSA6IG5vb3B9XG4gICAgICAgICAgb25Gb2N1cz17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KHRydWUpIDogbm9vcH1cbiAgICAgICAgICBvblBvaW50ZXJFbnRlcj17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KHRydWUpIDogbm9vcH1cbiAgICAgICAgICBvblBvaW50ZXJMZWF2ZT17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KGZhbHNlKSA6IG5vb3B9XG4gICAgICAgICAgcmVmPXtjaGlsZHJlblJlZn1cbiAgICAgICAgICB0YWJJbmRleD17dGFiSW5kZXh9XG4gICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PiB7XG4gICAgICAgICAgICBvbktleURvd24/LihldmVudClcbiAgICAgICAgICB9fVxuICAgICAgICAgIGRhdGEtY29udGFpbmVyLWZ1bGwtd2lkdGg9e2NvbnRhaW5lckZ1bGxXaWR0aH1cbiAgICAgICAgICBhcmlhLWhhc3BvcHVwPXthcmlhSGFzUG9wdXB9XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvU3R5bGVkQ2hpbGRyZW5Db250YWluZXI+XG4gICAgICApXG4gICAgfSwgW1xuICAgICAgYXJpYUhhc1BvcHVwLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBjb250YWluZXJGdWxsV2lkdGgsXG4gICAgICBnZW5lcmF0ZWRJZCxcbiAgICAgIGlzQ29udHJvbGxlZCxcbiAgICAgIG9uS2V5RG93bixcbiAgICAgIG9uUG9pbnRlckV2ZW50LFxuICAgICAgdGFiSW5kZXgsXG4gICAgXSlcblxuICAgIGNvbnN0IHNob3VsZFJlbmRlciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgaWYgKCFkeW5hbWljRG9tUmVuZGVyaW5nKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChkeW5hbWljRG9tUmVuZGVyaW5nICYmIHZpc2libGVJbkRvbSkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9LCBbZHluYW1pY0RvbVJlbmRlcmluZywgdmlzaWJsZUluRG9tXSlcblxuICAgIGlmICghdGV4dCkge1xuICAgICAgaWYgKHR5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2hpbGRyZW5cbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAge3JlbmRlckNoaWxkcmVuKCl9XG4gICAgICAgIHtzaG91bGRSZW5kZXJcbiAgICAgICAgICA/IGNyZWF0ZVBvcnRhbChcbiAgICAgICAgICAgICAgPFN0eWxlZFBvcHVwXG4gICAgICAgICAgICAgICAgcmVmPXtpbm5lclBvcHVwUmVmfVxuICAgICAgICAgICAgICAgIHBvc2l0aW9ucz17cG9zaXRpb25zfVxuICAgICAgICAgICAgICAgIG1heFdpZHRoPXttYXhXaWR0aH1cbiAgICAgICAgICAgICAgICBtYXhIZWlnaHQ9e21heEhlaWdodH1cbiAgICAgICAgICAgICAgICByb2xlPXtyb2xlfVxuICAgICAgICAgICAgICAgIGlkPXtnZW5lcmF0ZWRJZH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgICAgICAgICByZXZlcnNlQW5pbWF0aW9uPXtyZXZlcnNlQW5pbWF0aW9ufVxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtkYXRhVGVzdElkfVxuICAgICAgICAgICAgICAgIGRhdGEtaGFzLWFycm93PXtoYXNBcnJvd31cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtzdG9wQ2xpY2tQcm9wYWdhdGlvbn1cbiAgICAgICAgICAgICAgICBvblBvaW50ZXJFbnRlcj17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KHRydWUpIDogbm9vcH1cbiAgICAgICAgICAgICAgICBvblBvaW50ZXJMZWF2ZT17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KGZhbHNlKSA6IG5vb3B9XG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uRHVyYXRpb249e2FuaW1hdGlvbkR1cmF0aW9ufVxuICAgICAgICAgICAgICAgIG9uS2V5RG93bj17cm9sZSA9PT0gJ2RpYWxvZycgPyBoYW5kbGVGb2N1c1RyYXAgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICAgICAgaXNEaWFsb2c9e3JvbGUgPT09ICdkaWFsb2cnfVxuICAgICAgICAgICAgICAgIGRhdGEtdmlzaWJsZS1pbi1kb209e1xuICAgICAgICAgICAgICAgICAgIWR5bmFtaWNEb21SZW5kZXJpbmcgPyB2aXNpYmxlSW5Eb20gOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGF0YS1hbmltYXRlZD17YW5pbWF0aW9uRHVyYXRpb24gPiAwICYmICFtYXhIZWlnaHR9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dGV4dH1cbiAgICAgICAgICAgICAgPC9TdHlsZWRQb3B1cD4sXG4gICAgICAgICAgICAgIHBvcHVwUG9ydGFsVGFyZ2V0IGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgKVxuICAgICAgICAgIDogbnVsbH1cbiAgICAgIDwvPlxuICAgIClcbiAgfSxcbilcbiJdfQ== */"));
61
+ }) => 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1BvcHVwL2luZGV4LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpRW9CIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1BvcHVwL2luZGV4LnRzeCIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCdcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJ1xuaW1wb3J0IHR5cGUge1xuICBIVE1MQXR0cmlidXRlcyxcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIE1vdXNlRXZlbnRIYW5kbGVyLFxuICBSZWFjdE5vZGUsXG4gIFJlZixcbiAgUmVmT2JqZWN0LFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7XG4gIGZvcndhcmRSZWYsXG4gIHN0YXJ0VHJhbnNpdGlvbixcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlSWQsXG4gIHVzZUltcGVyYXRpdmVIYW5kbGUsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IHsgaXNDbGllbnRTaWRlIH0gZnJvbSAnLi4vLi4vaGVscGVycy9pc0NsaWVudFNpZGUnXG5pbXBvcnQgdHlwZSB7IFBvc2l0aW9uc1R5cGUgfSBmcm9tICcuL2FuaW1hdGlvbnMnXG5pbXBvcnQgeyBhbmltYXRpb24sIGV4aXRBbmltYXRpb24gfSBmcm9tICcuL2FuaW1hdGlvbnMnXG5pbXBvcnQgdHlwZSB7IFBvcHVwQWxpZ24sIFBvcHVwUGxhY2VtZW50IH0gZnJvbSAnLi9oZWxwZXJzJ1xuaW1wb3J0IHtcbiAgREVGQVVMVF9BUlJPV19XSURUSCxcbiAgREVGQVVMVF9QT1NJVElPTlMsXG4gIGNvbXB1dGVQb3NpdGlvbnMsXG59IGZyb20gJy4vaGVscGVycydcblxuY29uc3QgREVGQVVMVF9BTklNQVRJT05fRFVSQVRJT04gPSAyMzAgLy8gaW4gbXNcbmNvbnN0IERFRkFVTFRfREVCT1VOQ0VfRFVSQVRJT04gPSAyMDAgLy8gaW4gbXNcblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9XG5cbnR5cGUgU3R5bGVkUG9wdXBQcm9wcyA9IHtcbiAgbWF4V2lkdGg6IG51bWJlciB8IHN0cmluZ1xuICBwb3NpdGlvbnM6IFBvc2l0aW9uc1R5cGVcbiAgcmV2ZXJzZUFuaW1hdGlvbjogYm9vbGVhblxuICBtYXhIZWlnaHQ/OiBudW1iZXIgfCBzdHJpbmdcbiAgYW5pbWF0aW9uRHVyYXRpb24/OiBudW1iZXJcbiAgaXNEaWFsb2c6IGJvb2xlYW5cbn1cblxuLyoqXG4gKiBUaGlzIGV2ZW50IGhhbmRsZSBhbGxvdyB1cyB0byBub3QgYnViYmxlIHRoZSBldmVudCB0byBkb2N1bWVudC5ib2R5IGxpa2UgdGhpcyByZWFjdC1zZWxlY3Qgd29ya3MgZmluZVxuICovXG5jb25zdCBzdG9wQ2xpY2tQcm9wYWdhdGlvbjogTW91c2VFdmVudEhhbmRsZXIgPSBldmVudCA9PiB7XG4gIGV2ZW50Lm5hdGl2ZUV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXG59XG5cbmNvbnN0IFN0eWxlZFBvcHVwID0gc3R5bGVkKCdkaXYnLCB7XG4gIHNob3VsZEZvcndhcmRQcm9wOiBwcm9wID0+XG4gICAgIVtcbiAgICAgICdtYXhXaWR0aCcsXG4gICAgICAncG9zaXRpb25zJyxcbiAgICAgICdyZXZlcnNlQW5pbWF0aW9uJyxcbiAgICAgICdtYXhIZWlnaHQnLFxuICAgICAgJ2FuaW1hdGlvbkR1cmF0aW9uJyxcbiAgICAgICdpc0RpYWxvZycsXG4gICAgXS5pbmNsdWRlcyhwcm9wKSxcbn0pPFN0eWxlZFBvcHVwUHJvcHM+YFxuICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRTdHJvbmdlcn07XG4gIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLnRleHRTdHJvbmdlcn07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucmFkaWkuZGVmYXVsdH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gYCR7dGhlbWUuc3BhY2VbJzAuNSddfSAke3RoZW1lLnNwYWNlWycxJ119YH07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBtYXgtd2lkdGg6ICR7KHsgbWF4V2lkdGggfSkgPT5cbiAgICB0eXBlb2YgbWF4V2lkdGggPT09ICdudW1iZXInID8gYCR7bWF4V2lkdGh9cHhgIDogbWF4V2lkdGh9O1xuICBtYXgtaGVpZ2h0OiAkeyh7IG1heEhlaWdodCB9KSA9PlxuICAgIHR5cGVvZiBtYXhIZWlnaHQgPT09ICdudW1iZXInID8gYCR7bWF4SGVpZ2h0fXB4YCA6IG1heEhlaWdodH07XG4gIG92ZXJmbG93OiAkeyh7IG1heEhlaWdodCB9KSA9PiAobWF4SGVpZ2h0ID8gJ2F1dG8nIDogdW5kZWZpbmVkKX07XG4gIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xuICBpbnNldDogMCBhdXRvIGF1dG8gMDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBvcGFjaXR5OiAwO1xuICB6LWluZGV4OiAxO1xuICB0cmFuc2Zvcm06ICR7KHsgcG9zaXRpb25zIH0pID0+IHBvc2l0aW9ucy5wb3B1cFBvc2l0aW9ufTtcblxuICAmW2RhdGEtYW5pbWF0ZWQ9XCJ0cnVlXCJdIHtcbiAgICBhbmltYXRpb246ICR7KHsgcG9zaXRpb25zLCByZXZlcnNlQW5pbWF0aW9uLCBhbmltYXRpb25EdXJhdGlvbiB9KSA9PiBjc3NgXG4gICAgICAke2FuaW1hdGlvbkR1cmF0aW9ufW1zICR7XG4gICAgICAgICFyZXZlcnNlQW5pbWF0aW9uID8gYW5pbWF0aW9uKHBvc2l0aW9ucykgOiBleGl0QW5pbWF0aW9uKHBvc2l0aW9ucylcbiAgICAgIH0gZm9yd2FyZHNcbiAgICBgfTtcbiAgfVxuXG4gICZbZGF0YS1oYXMtYXJyb3c9XCJ0cnVlXCJdIHtcbiAgICAmOjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIiBcIjtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLmFycm93VG9wfXB4O1xuICAgICAgbGVmdDogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLmFycm93TGVmdH1weDtcbiAgICAgIHRyYW5zZm9ybTogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLmFycm93VHJhbnNmb3JtfVxuICAgICAgICByb3RhdGUoJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLnJvdGF0ZX1kZWcpO1xuICAgICAgbWFyZ2luLWxlZnQ6IC0ke0RFRkFVTFRfQVJST1dfV0lEVEh9cHg7XG4gICAgICBib3JkZXItd2lkdGg6ICR7REVGQVVMVF9BUlJPV19XSURUSH1weDtcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgICBib3JkZXItY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFN0cm9uZ2VyfVxuICAgICAgICB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cbiAgfVxuXG4gICZbZGF0YS12aXNpYmxlLWluLWRvbT1cImZhbHNlXCJdIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5gXG5cbmNvbnN0IFN0eWxlZENoaWxkcmVuQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogaW5oZXJpdDtcblxuICAmW2RhdGEtY29udGFpbmVyLWZ1bGwtd2lkdGg9XCJ0cnVlXCJdIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuYFxuXG50eXBlIFBvcHVwUHJvcHMgPSB7XG4gIC8qKlxuICAgKiBJZCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBpZiBub3Qgc2V0LiBJdCBpcyB1c2VkIGZvciBhc3NvY2lhdGluZyBwb3B1cCB3cmFwcGVyIHdpdGggcG9wdXAgcG9ydGFsLlxuICAgKi9cbiAgaWQ/OiBzdHJpbmdcbiAgY2hpbGRyZW46XG4gICAgfCBSZWFjdE5vZGVcbiAgICB8ICgocmVuZGVyUHJvcHM6IHtcbiAgICAgICAgY2xhc3NOYW1lPzogc3RyaW5nXG4gICAgICAgIG9uQmx1cjogKCkgPT4gdm9pZFxuICAgICAgICBvbkZvY3VzOiAoKSA9PiB2b2lkXG4gICAgICAgIG9uUG9pbnRlckVudGVyOiAoKSA9PiB2b2lkXG4gICAgICAgIG9uUG9pbnRlckxlYXZlOiAoKSA9PiB2b2lkXG4gICAgICAgIHJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD5cbiAgICAgIH0pID0+IFJlYWN0Tm9kZSlcbiAgbWF4V2lkdGg/OiBudW1iZXIgfCBzdHJpbmdcbiAgLyoqXG4gICAqIGBhdXRvYCBwbGFjZW1lbnQgd2lsbCBjaGFuZ2UgdGhlIHBvc2l0aW9uIG9mIHRoZSBwb3B1cCBpZiBpdCBkb2Vzbid0IGZpdCBpbiB0aGUgdmlld3BvcnQuXG4gICAqL1xuICBwbGFjZW1lbnQ/OiBQb3B1cFBsYWNlbWVudFxuICAvKipcbiAgICogQWxpZ24gdGhlIHBvcHVwIHRvIHRoZSBzdGFydCBvciBjZW50ZXIgb2YgdGhlIGNoaWxkcmVuLlxuICAgKi9cbiAgYWxpZ24/OiBQb3B1cEFsaWduXG4gIC8qKlxuICAgKiBDb250ZW50IG9mIHRoZSBwb3B1cCwgcHJlZmVyYWJseSB0ZXh0IGluc2lkZS5cbiAgICovXG4gIHRleHQ/OiBSZWFjdE5vZGVcbiAgY2xhc3NOYW1lPzogc3RyaW5nXG4gIC8qKlxuICAgKiBJdCB3aWxsIGFkZCBgd2lkdGg6IDEwMCVgIHRvIHRoZSBwb3B1cCBjb250YWluZXIuXG4gICAqL1xuICBjb250YWluZXJGdWxsV2lkdGg/OiBib29sZWFuXG4gIC8qKlxuICAgKiBJdCB3aWxsIGZvcmNlIGRpc3BsYXkgcG9wdXAuIFRoaXMgY2FuIGJlIHVzZWZ1bCBpZiB5b3UgbmVlZCB0byBhbHdheXMgZGlzcGxheSB0aGUgcG9wdXAgd2l0aG91dCBob3ZlciBuZWVkZWQuXG4gICAqL1xuICB2aXNpYmxlPzogYm9vbGVhblxuICBpbm5lclJlZj86IFJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+XG4gIHJvbGU/OiBzdHJpbmdcbiAgJ2RhdGEtdGVzdGlkJz86IHN0cmluZ1xuICBoYXNBcnJvdz86IGJvb2xlYW5cbiAgb25DbG9zZT86ICgpID0+IHZvaWRcbiAgdGFiSW5kZXg/OiBudW1iZXJcbiAgb25LZXlEb3duPzogS2V5Ym9hcmRFdmVudEhhbmRsZXJcbiAgJ2FyaWEtaGFzcG9wdXAnPzogSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+WydhcmlhLWhhc3BvcHVwJ11cbiAgaGlkZU9uQ2xpY2tPdXRzaWRlPzogYm9vbGVhblxuICAvKipcbiAgICogSWYgeW91IHNldCBkZWJvdW5jZVRpbWUgdG8gZmFsc2UsIHRoZSBwb3B1cCB3aWxsIG5vdCBkZWJvdW5jZSB0aGUgaG92ZXIgZXZlbnQgYW5kIHdpbGwgYmUgZGlzcGxheWVkIGluc3RhbnRseS5cbiAgICogSWYgc2V0IHRvIDAgaXQgd2lsbCBkaXNhYmxlIGRlYm91bmNlLlxuICAgKi9cbiAgZGVib3VuY2VEZWxheT86IG51bWJlclxuICAvKipcbiAgICogSWYgeW91IHNldCBhIG1heCBoZWlnaHQga2VlcCBpbiBtaW5kIHRoYXQgdGhlIGFuaW1hdGlvbiBpcyBkaXNhYmxlZCwgb3IgaXQgd2lsbCBub3Qgd29yayBwcm9wZXJseSBvbiBzb21lIGJyb3dzZXJzLlxuICAgKi9cbiAgbWF4SGVpZ2h0Pzogc3RyaW5nIHwgbnVtYmVyXG4gIC8qKlxuICAgKiBXaWxsIHJlbW92ZSB0aGUgYW5pbWF0aW9uIG9uIHRoZSBwb3B1cCBpZiBzZXQgdG8gZmFsc2UuXG4gICAqL1xuICBkaXNhYmxlQW5pbWF0aW9uPzogYm9vbGVhblxuICAvKipcbiAgICogQnkgZGVmYXVsdCwgdGhlIHBvcnRhbCB0YXJnZXQgaXMgY2hpbGRyZW4gY29udGFpbmVyIG9yIGRvY3VtZW50LmJvZHkgaWYgY2hpbGRyZW4gaXMgYSBmdW5jdGlvbi4gWW91IGNhbiBvdmVycmlkZSB0aGlzXG4gICAqIGJlaGF2aW9yIGJ5IHNldHRpbmcgYSBwb3J0YWxUYXJnZXQgcHJvcC5cbiAgICovXG4gIHBvcnRhbFRhcmdldD86IEhUTUxFbGVtZW50XG4gIC8qKlxuICAgKiBJZiB5b3Ugc2V0IHRoaXMgdG8gdHJ1ZSwgdGhlIHBvcHVwIHdpbGwgYmUgcmVuZGVyZWQgaW4gdGhlIERPTSBvbmx5IHdoZW4gaXQgaXMgdmlzaWJsZS5cbiAgICogV2hlbiBzZXQgdG8gZmFsc2UsIHRoZSBwb3B1cCB3aWxsIGFsd2F5cyBiZSByZW5kZXJlZCBpbiB0aGUgRE9NLiBCeSBkZWZhdWx0IHRoaXMgdmFsdWUgaXMgc2V0IHRvIGB0cnVlYCwgaWYgZm9yIHNvbWVcbiAgICogcmVhc29uIHlvdSBuZWVkIHRvIGRpc2FibGUgaXQsIHlvdSBjYW4gc2V0IGl0IHRvIGBmYWxzZWAuXG4gICAqL1xuICBkeW5hbWljRG9tUmVuZGVyaW5nPzogYm9vbGVhblxufVxuXG4vKipcbiAqIEBleHBlcmltZW50YWwgVGhpcyBjb21wb25lbnQgaXMgZXhwZXJpbWVudGFsIGFuZCBtYXkgYmUgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIHRoZSBmdXR1cmUuXG4gKi9cbmV4cG9ydCBjb25zdCBQb3B1cCA9IGZvcndhcmRSZWYoXG4gIChcbiAgICB7XG4gICAgICBjaGlsZHJlbixcbiAgICAgIHRleHQgPSAnJyxcbiAgICAgIHBsYWNlbWVudCA9ICdhdXRvJyxcbiAgICAgIGFsaWduID0gJ2NlbnRlcicsXG4gICAgICBpZCxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNvbnRhaW5lckZ1bGxXaWR0aCxcbiAgICAgIG1heFdpZHRoID0gJzE0LjVyZW0nLFxuICAgICAgbWF4SGVpZ2h0LFxuICAgICAgdmlzaWJsZSxcbiAgICAgIGlubmVyUmVmLFxuICAgICAgcm9sZSA9ICdwb3B1cCcsXG4gICAgICAnZGF0YS10ZXN0aWQnOiBkYXRhVGVzdElkLFxuICAgICAgaGFzQXJyb3cgPSB0cnVlLFxuICAgICAgb25DbG9zZSxcbiAgICAgIHRhYkluZGV4ID0gMCxcbiAgICAgIG9uS2V5RG93bixcbiAgICAgICdhcmlhLWhhc3BvcHVwJzogYXJpYUhhc1BvcHVwLFxuICAgICAgaGlkZU9uQ2xpY2tPdXRzaWRlID0gZmFsc2UsXG4gICAgICBkZWJvdW5jZURlbGF5ID0gREVGQVVMVF9ERUJPVU5DRV9EVVJBVElPTixcbiAgICAgIGRpc2FibGVBbmltYXRpb24gPSBmYWxzZSxcbiAgICAgIHBvcnRhbFRhcmdldCxcbiAgICAgIGR5bmFtaWNEb21SZW5kZXJpbmcgPSB0cnVlLFxuICAgIH06IFBvcHVwUHJvcHMsXG4gICAgcmVmOiBSZWY8SFRNTERpdkVsZW1lbnQ+LFxuICApID0+IHtcbiAgICBjb25zdCBjaGlsZHJlblJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgICB1c2VJbXBlcmF0aXZlSGFuZGxlKGlubmVyUmVmLCAoKSA9PiBjaGlsZHJlblJlZi5jdXJyZW50IGFzIEhUTUxEaXZFbGVtZW50KVxuXG4gICAgY29uc3QgaW5uZXJQb3B1cFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgICB1c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgKCkgPT4gaW5uZXJQb3B1cFJlZi5jdXJyZW50IGFzIEhUTUxEaXZFbGVtZW50KVxuXG4gICAgY29uc3QgdGltZXIgPSB1c2VSZWY8UmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4+KHVuZGVmaW5lZClcbiAgICBjb25zdCBwb3B1cFBvcnRhbFRhcmdldCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgaWYgKHBvcnRhbFRhcmdldCkgcmV0dXJuIHBvcnRhbFRhcmdldFxuXG4gICAgICBpZiAocm9sZSA9PT0gJ2RpYWxvZycpIHtcbiAgICAgICAgaWYgKGNoaWxkcmVuUmVmLmN1cnJlbnQpIHJldHVybiBjaGlsZHJlblJlZi5jdXJyZW50XG4gICAgICAgIGlmIChpc0NsaWVudFNpZGUpIHJldHVybiBkb2N1bWVudC5ib2R5XG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cblxuICAgICAgLy8gV2UgY2hlY2sgaWYgd2luZG93IGV4aXN0cyBmb3IgU1NSXG4gICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50LmJvZHlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgICB9LCBbcG9ydGFsVGFyZ2V0LCByb2xlLCBjaGlsZHJlblJlZi5jdXJyZW50XSlcblxuICAgIC8vIFRoZXJlIGFyZSBzb21lIGlzc3VlIHdoZW4gbWl4aW5nIGFuaW1hdGlvbiBhbmQgbWF4SGVpZ2h0IG9uIHNvbWUgYnJvd3NlcnMsIHNvIHdlIGRpc2FibGUgYW5pbWF0aW9uIGlmIG1heEhlaWdodCBpcyBzZXQuXG4gICAgY29uc3QgYW5pbWF0aW9uRHVyYXRpb24gPVxuICAgICAgZGlzYWJsZUFuaW1hdGlvbiB8fCBtYXhIZWlnaHQgPyAwIDogREVGQVVMVF9BTklNQVRJT05fRFVSQVRJT05cblxuICAgIC8vIERlYm91bmNlIHRpbWVyIHdpbGwgYmUgdXNlZCB0byBwcmV2ZW50IHRoZSBwb3B1cCBmcm9tIGZsaWNrZXJpbmcgd2hlbiB0aGUgdXNlciBtb3ZlcyB0aGUgbW91c2Ugb3V0IGFuZCBpbiB0aGUgY2hpbGRyZW4gZWxlbWVudC5cbiAgICBjb25zdCBkZWJvdW5jZVRpbWVyID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+Pih1bmRlZmluZWQpXG4gICAgY29uc3QgW3Zpc2libGVJbkRvbSwgc2V0VmlzaWJsZUluRG9tXSA9IHVzZVN0YXRlKGZhbHNlKVxuICAgIGNvbnN0IFtyZXZlcnNlQW5pbWF0aW9uLCBzZXRSZXZlcnNlQW5pbWF0aW9uXSA9IHVzZVN0YXRlKGZhbHNlKVxuICAgIGNvbnN0IFtwb3NpdGlvbnMsIHNldFBvc2l0aW9uc10gPSB1c2VTdGF0ZTxQb3NpdGlvbnNUeXBlPih7XG4gICAgICAuLi5ERUZBVUxUX1BPU0lUSU9OUyxcbiAgICB9KVxuICAgIGNvbnN0IHVuaXF1ZUlkID0gdXNlSWQoKVxuICAgIGNvbnN0IGdlbmVyYXRlZElkID0gaWQgPz8gdW5pcXVlSWRcbiAgICBjb25zdCBpc0NvbnRyb2xsZWQgPSB2aXNpYmxlICE9PSB1bmRlZmluZWRcblxuICAgIGNvbnN0IGdlbmVyYXRlUG9wdXBQb3NpdGlvbnMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBpZiAoY2hpbGRyZW5SZWYuY3VycmVudCAmJiBpbm5lclBvcHVwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgc2V0UG9zaXRpb25zKFxuICAgICAgICAgIGNvbXB1dGVQb3NpdGlvbnMoe1xuICAgICAgICAgICAgY2hpbGRyZW5SZWYsXG4gICAgICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgICAgICBwb3B1cFJlZjogaW5uZXJQb3B1cFJlZixcbiAgICAgICAgICAgIHBvcHVwUG9ydGFsVGFyZ2V0OiBwb3B1cFBvcnRhbFRhcmdldCBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgICAgIGhhc0Fycm93LFxuICAgICAgICAgICAgYWxpZ24sXG4gICAgICAgICAgfSksXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9LCBbaGFzQXJyb3csIHBsYWNlbWVudCwgcG9wdXBQb3J0YWxUYXJnZXQsIGFsaWduXSlcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gd2UgbmVlZCB0byByZWNvbXB1dGUgcG9zaXRpb25zIG9mIHBvcHVwIGR1ZSB0byB3aW5kb3cgc2Nyb2xsIG9yIHJlc2l6ZS5cbiAgICAgKi9cbiAgICBjb25zdCBvbldpbmRvd0NoYW5nZURldGVjdGVkID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgLy8gV2UgcmVtb3ZlIGFuaW1hdGlvbiBvbiBzY3JvbGwgb3IgdGhlIGFuaW1hdGlvbiB3aWxsIHJlc3RhcnQgb24gZXZlcnkgc2Nyb2xsXG4gICAgICBpZiAoaW5uZXJQb3B1cFJlZi5jdXJyZW50KSB7XG4gICAgICAgIGlubmVyUG9wdXBSZWYuY3VycmVudC5zdHlsZS5hbmltYXRpb24gPSAnbm9uZSdcbiAgICAgIH1cblxuICAgICAgZ2VuZXJhdGVQb3B1cFBvc2l0aW9ucygpXG4gICAgfSwgW2dlbmVyYXRlUG9wdXBQb3NpdGlvbnMsIGlubmVyUG9wdXBSZWZdKVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB3ZSBuZWVkIHRvIHJlbW92ZSBwb3B1cCBwb3J0YWwgZnJvbSBET00gYW5kIHJlbW92ZSBldmVudCBsaXN0ZW5lciB0byBpdC5cbiAgICAgKi9cbiAgICBjb25zdCB1bm1vdW50UG9wdXBGcm9tRG9tID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgc2V0VmlzaWJsZUluRG9tKGZhbHNlKVxuICAgICAgc2V0UmV2ZXJzZUFuaW1hdGlvbihmYWxzZSlcblxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uV2luZG93Q2hhbmdlRGV0ZWN0ZWQsIHRydWUpXG4gICAgfSwgW29uV2luZG93Q2hhbmdlRGV0ZWN0ZWRdKVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB3ZSBuZWVkIHRvIGhpZGUgcG9wdXAuIEEgdGltZW91dCBpcyBzZXQgdG8gYWxsb3cgYW5pbWF0aW9uIGVuZCwgdGhlbiByZW1vdmVcbiAgICAgKiBwb3B1cCBmcm9tIGRvbS5cbiAgICAgKi9cbiAgICBjb25zdCBjbG9zZVBvcHVwID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgY29uc3QgY2xvc2VGdW5jdGlvbiA9ICgpID0+IHtcbiAgICAgICAgaWYgKCFkaXNhYmxlQW5pbWF0aW9uKSB7XG4gICAgICAgICAgc2V0UmV2ZXJzZUFuaW1hdGlvbih0cnVlKVxuXG4gICAgICAgICAgdGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgb25DbG9zZT8uKClcbiAgICAgICAgICAgIHVubW91bnRQb3B1cEZyb21Eb20oKVxuICAgICAgICAgIH0sIGFuaW1hdGlvbkR1cmF0aW9uKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9uQ2xvc2U/LigpXG4gICAgICAgICAgdW5tb3VudFBvcHVwRnJvbURvbSgpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFkaXNhYmxlQW5pbWF0aW9uKSB7XG4gICAgICAgIGRlYm91bmNlVGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgY2xvc2VGdW5jdGlvbigpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBkZWJvdW5jZURlbGF5ICYmICFkaXNhYmxlQW5pbWF0aW9uID8gZGVib3VuY2VEZWxheSA6IDAsXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNsb3NlRnVuY3Rpb24oKVxuICAgICAgfVxuICAgIH0sIFtcbiAgICAgIGFuaW1hdGlvbkR1cmF0aW9uLFxuICAgICAgZGlzYWJsZUFuaW1hdGlvbixcbiAgICAgIGRlYm91bmNlRGVsYXksXG4gICAgICBvbkNsb3NlLFxuICAgICAgdW5tb3VudFBvcHVwRnJvbURvbSxcbiAgICBdKVxuXG4gICAgLyoqXG4gICAgICogV2hlbiBtb3VzZSBob3ZlciBvciBzdG9wIGhvdmVyaW5nIGNoaWxkcmVuIHRoaXMgZnVuY3Rpb24gZGlzcGxheSBvciBoaWRlIHBvcHVwLiBBIHRpbWVvdXQgaXMgc2V0IHRvIGFsbG93IGFuaW1hdGlvblxuICAgICAqIGVuZCwgdGhlbiByZW1vdmUgcG9wdXAgZnJvbSBkb20uXG4gICAgICovXG4gICAgY29uc3Qgb25Qb2ludGVyRXZlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAgIChpc1Zpc2libGU6IGJvb2xlYW4pID0+ICgpID0+IHtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBkZWJvdW5jZURlbGF5IGFuZCB0aGUgcG9wdXAgaXMgbm90IHZpc2libGUsIHdlIGNsZWFyIHRoZSBkZWJvdW5jZSB0aW1lclxuICAgICAgICBpZiAoIXZpc2libGUgJiYgZGVib3VuY2VEZWxheSA+IDAgJiYgZGVib3VuY2VUaW1lci5jdXJyZW50KSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KGRlYm91bmNlVGltZXIuY3VycmVudClcbiAgICAgICAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSB1bmRlZmluZWRcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoaXMgY29uZGl0aW9uIGlzIGZvciB3aGVuIHdlIHdhbnQgdG8gdW5tb3VudCB0aGUgcG9wdXBcbiAgICAgICAgLy8gVGhlcmUgaXMgZGVib3VuY2UgaW4gb3JkZXIgdG8gYXZvaWQgcG9wdXAgdG8gZmxpY2tlciB3aGVuIHdlIG1vdmUgdGhlIG1vdXNlIGZyb20gY2hpbGRyZW4gdG8gcG9wdXBcbiAgICAgICAgLy8gVGltZXIgaXMgdXNlZCB0byBmb2xsb3cgdGhlIGFuaW1hdGlvbiBkdXJhdGlvblxuICAgICAgICBpZiAoIWlzVmlzaWJsZSAmJiBpbm5lclBvcHVwUmVmLmN1cnJlbnQgJiYgIWRlYm91bmNlVGltZXIuY3VycmVudCkge1xuICAgICAgICAgIGNsb3NlUG9wdXAoKVxuICAgICAgICB9IGVsc2UgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgICAgIC8vIFRoaXMgY29uZGl0aW9uIGlzIGZvciB3aGVuIHdlIHdhbnQgdG8gbW91bnQgdGhlIHBvcHVwXG4gICAgICAgICAgLy8gSWYgdGhlIHRpbWVyIGV4aXN0cyBpdCBtZWFucyB0aGUgcG9wdXAgd2FzIGFib3V0IHRvIHVtb3VudCwgYnV0IHdlIGhvdmVyZWQgdGhlIGNoaWxkcmVuIGFnYWluLFxuICAgICAgICAgIC8vIHNvIHdlIGNsZWFyIHRoZSB0aW1lciBhbmQgdGhlIHBvcHVwIHdpbGwgbm90IGJlIHVubW91bnRlZFxuICAgICAgICAgIGlmICh0aW1lci5jdXJyZW50KSB7XG4gICAgICAgICAgICBzZXRSZXZlcnNlQW5pbWF0aW9uKGZhbHNlKVxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyLmN1cnJlbnQpXG4gICAgICAgICAgICB0aW1lci5jdXJyZW50ID0gdW5kZWZpbmVkXG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIEFuZCBoZXJlIGlzIHdoZW4gd2UgY3VycmVudGx5IGFyZSBpbiBhIGRlYm91bmNlIHRpbWVyLCBpdCBtZWFucyBwb3B1cCB3YXMgaG92ZXJlZCBkdXJpbmdcbiAgICAgICAgICAvLyB0aGF0IHBlcmlvZCwgYW5kIHNvIHdlIGNhbiBjbGVhciBkZWJvdW5jZSB0aW1lclxuICAgICAgICAgIGlmIChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSB1bmRlZmluZWRcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGRlYm91bmNlRGVsYXkgPiAwKSB7XG4gICAgICAgICAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgc2V0VmlzaWJsZUluRG9tKHRydWUpXG4gICAgICAgICAgICB9LCBkZWJvdW5jZURlbGF5KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdGFydFRyYW5zaXRpb24oKCkgPT4ge1xuICAgICAgICAgICAgICBzZXRWaXNpYmxlSW5Eb20odHJ1ZSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgW2Nsb3NlUG9wdXAsIGRlYm91bmNlRGVsYXksIHZpc2libGVdLFxuICAgIClcblxuICAgIC8qKlxuICAgICAqIE9uY2UgcG9wdXAgaXMgdmlzaWJsZSBpbiB0aGUgZG9tIHdlIGNhbiBjb21wdXRlIHBvc2l0aW9ucywgdGhlbiBzZXQgaXQgdmlzaWJsZSBvbiBzY3JlZW4gYW5kIGFkZCBldmVudCB0b1xuICAgICAqIHJlY29tcHV0ZSBwb3NpdGlvbnMgb24gc2Nyb2xsIG9yIHNjcmVlbiByZXNpemUuXG4gICAgICovXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICh2aXNpYmxlSW5Eb20pIHtcbiAgICAgICAgZ2VuZXJhdGVQb3B1cFBvc2l0aW9ucygpXG5cbiAgICAgICAgaWYgKHBvcHVwUG9ydGFsVGFyZ2V0ID09PSBkb2N1bWVudC5ib2R5KSB7XG4gICAgICAgICAgLy8gV2Ugd2FudCB0byBkZXRlY3Qgc2Nyb2xsIGFuZCByZXNpemUgaW4gb3JkZXIgdG8gcmVjb21wdXRlIHBvc2l0aW9ucyBvZiBwb3B1cFxuICAgICAgICAgIC8vIEFkZGluZyB0cnVlIGFzIHRoaXJkIHBhcmFtZXRlciB0byBldmVudCBsaXN0ZW5lciB3aWxsIGRldGVjdCBuZXN0ZWQgc2Nyb2xscy5cbiAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25XaW5kb3dDaGFuZ2VEZXRlY3RlZCwgdHJ1ZSlcbiAgICAgICAgfVxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgb25XaW5kb3dDaGFuZ2VEZXRlY3RlZCwgdHJ1ZSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uV2luZG93Q2hhbmdlRGV0ZWN0ZWQsIHRydWUpXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBvbldpbmRvd0NoYW5nZURldGVjdGVkLCB0cnVlKVxuICAgICAgICBpZiAodGltZXIuY3VycmVudCkge1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lci5jdXJyZW50KVxuICAgICAgICAgIHRpbWVyLmN1cnJlbnQgPSB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIFtcbiAgICAgIGdlbmVyYXRlUG9wdXBQb3NpdGlvbnMsXG4gICAgICBvbldpbmRvd0NoYW5nZURldGVjdGVkLFxuICAgICAgdmlzaWJsZUluRG9tLFxuICAgICAgbWF4V2lkdGgsXG4gICAgICBwb3B1cFBvcnRhbFRhcmdldCxcbiAgICBdKVxuXG4gICAgLy8gVGhpcyB3aWxsIGJlIHRyaWdnZXJlZCB3aGVuIHBvc2l0aW9ucyBhcmUgY29tcHV0ZWQgYW5kIHBvcHVwIGlzIHZpc2libGUgaW4gdGhlIGRvbS5cbiAgICB1c2VFZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGlmICh2aXNpYmxlSW5Eb20gJiYgaW5uZXJQb3B1cFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgaW5uZXJQb3B1cFJlZi5jdXJyZW50LnN0eWxlLm9wYWNpdHkgPSAnMSdcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgICAgIFtwb3NpdGlvbnNdLFxuICAgIClcblxuICAgIC8qKlxuICAgICAqIElmIHBvcHVwIGhhcyBgdmlzaWJsZWAgcHJvcCBpdCBtZWFucyB0aGUgcG9wdXAgaXMgbWFudWFsbHkgY29udHJvbGxlZCB0aHJvdWdoIHRoaXMgcHJvcC5cbiAgICAgKiBJbiB0aGlzIGNhcyB3ZSBkb24ndCB3YW50IHRvIGRpc3BsYXkgcG9wdXAgb24gaG92ZXIsIGJ1dCBvbmx5IHdoZW4gYHZpc2libGVgIGlzIHRydWUuXG4gICAgICovXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChpc0NvbnRyb2xsZWQpIHtcbiAgICAgICAgb25Qb2ludGVyRXZlbnQodmlzaWJsZSkoKVxuICAgICAgfVxuICAgIH0sIFtpc0NvbnRyb2xsZWQsIG9uUG9pbnRlckV2ZW50LCB2aXNpYmxlXSlcblxuICAgIC8vIEhhbmRsZSBoaWRlIG9uIGVzYyBwcmVzcyBhbmQgaGlkZSBvbiBjbGljayBvdXRzaWRlXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGhhbmRsZUVzY1ByZXNzID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgY2xvc2VQb3B1cCgpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHBvcHVwQ3VycmVudCA9IGlubmVyUG9wdXBSZWYuY3VycmVudFxuICAgICAgICBjb25zdCBjaGlsZHJlbkN1cnJlbnQgPSBjaGlsZHJlblJlZi5jdXJyZW50XG5cbiAgICAgICAgaWYgKHBvcHVwQ3VycmVudCAmJiBoaWRlT25DbGlja091dHNpZGUgJiYgIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBldmVudC50YXJnZXQgJiZcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldCAhPT0gcG9wdXBDdXJyZW50ICYmXG4gICAgICAgICAgICBldmVudC50YXJnZXQgIT09IGNoaWxkcmVuQ3VycmVudCAmJlxuICAgICAgICAgICAgIWNoaWxkcmVuQ3VycmVudD8uY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpICYmXG4gICAgICAgICAgICAhcG9wdXBDdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgIGNsb3NlUG9wdXAoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHZpc2libGVJbkRvbSkge1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgaGFuZGxlRXNjUHJlc3MpXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVDbGlja091dHNpZGUpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5dXAnLCBoYW5kbGVFc2NQcmVzcylcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICAgIH1cbiAgICB9LCBbXG4gICAgICBjbG9zZVBvcHVwLFxuICAgICAgdmlzaWJsZUluRG9tLFxuICAgICAgaW5uZXJQb3B1cFJlZixcbiAgICAgIGNoaWxkcmVuUmVmLFxuICAgICAgaGlkZU9uQ2xpY2tPdXRzaWRlLFxuICAgIF0pXG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGV2ZW50IHdpbGwgb2NjdXIgb25seSBmb3IgZGlhbG9nIGFuZCB3aWxsIHRyYXAgZm9jdXMgaW5zaWRlIHRoZSBkaWFsb2cuXG4gICAgICovXG4gICAgY29uc3QgaGFuZGxlRm9jdXNUcmFwOiBLZXlib2FyZEV2ZW50SGFuZGxlciA9IHVzZUNhbGxiYWNrKGV2ZW50ID0+IHtcbiAgICAgIGNvbnN0IGlzVGFiUHJlc3NlZCA9IGV2ZW50LmtleSA9PT0gJ1RhYidcbiAgICAgIGlmICghaXNUYWJQcmVzc2VkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcblxuICAgICAgY29uc3QgZm9jdXNhYmxlRWxzID1cbiAgICAgICAgaW5uZXJQb3B1cFJlZi5jdXJyZW50Py5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgICAgICdhW2hyZWZdOm5vdChbZGlzYWJsZWRdKSwgYnV0dG9uOm5vdChbZGlzYWJsZWRdKSwgdGV4dGFyZWE6bm90KFtkaXNhYmxlZF0pLCBpbnB1dDpub3QoW2Rpc2FibGVkXSksIHNlbGVjdDpub3QoW2Rpc2FibGVkXSknLFxuICAgICAgICApID8/IFtdXG5cbiAgICAgIC8vIEhhbmRsZSBjYXNlIHdoZW4gbm8gaW50ZXJhY3RpdmUgZWxlbWVudCBhcmUgd2l0aGluIHRoZSBtb2RhbCAoaW5jbHVkaW5nIGNsb3NlIGljb24pXG4gICAgICBpZiAoZm9jdXNhYmxlRWxzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZpcnN0Rm9jdXNhYmxlRWwgPSBmb2N1c2FibGVFbHNbMF0gYXMgSFRNTEVsZW1lbnRcbiAgICAgIGNvbnN0IGxhc3RGb2N1c2FibGVFbCA9IGZvY3VzYWJsZUVsc1tcbiAgICAgICAgZm9jdXNhYmxlRWxzLmxlbmd0aCAtIDFcbiAgICAgIF0gYXMgSFRNTEVsZW1lbnRcblxuICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBmaXJzdEZvY3VzYWJsZUVsIHx8XG4gICAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gaW5uZXJQb3B1cFJlZi5jdXJyZW50XG4gICAgICAgICkge1xuICAgICAgICAgIGxhc3RGb2N1c2FibGVFbC5mb2N1cygpXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBsYXN0Rm9jdXNhYmxlRWwgfHxcbiAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gaW5uZXJQb3B1cFJlZi5jdXJyZW50XG4gICAgICApIHtcbiAgICAgICAgZmlyc3RGb2N1c2FibGVFbC5mb2N1cygpXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIH1cbiAgICB9LCBbXSlcblxuICAgIC8qKlxuICAgICAqIFdpbGwgcmVuZGVyIGNoaWxkcmVuIGNvbmRpdGlvbmFsbHkgaWYgY2hpbGRyZW4gaXMgYSBmdW5jdGlvbiBvciBub3QuXG4gICAgICovXG4gICAgY29uc3QgcmVuZGVyQ2hpbGRyZW4gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBjaGlsZHJlbih7XG4gICAgICAgICAgb25CbHVyOiAhaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQoZmFsc2UpIDogbm9vcCxcbiAgICAgICAgICBvbkZvY3VzOiAhaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQodHJ1ZSkgOiBub29wLFxuICAgICAgICAgIG9uUG9pbnRlckVudGVyOiAhaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQodHJ1ZSkgOiBub29wLFxuICAgICAgICAgIG9uUG9pbnRlckxlYXZlOiAhaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQoZmFsc2UpIDogbm9vcCxcbiAgICAgICAgICByZWY6IGNoaWxkcmVuUmVmLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U3R5bGVkQ2hpbGRyZW5Db250YWluZXJcbiAgICAgICAgICBhcmlhLWRlc2NyaWJlZGJ5PXtnZW5lcmF0ZWRJZH1cbiAgICAgICAgICBhcmlhLWNvbnRyb2xzPXtnZW5lcmF0ZWRJZH1cbiAgICAgICAgICBvbkJsdXI9eyFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudChmYWxzZSkgOiBub29wfVxuICAgICAgICAgIG9uRm9jdXM9eyFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudCh0cnVlKSA6IG5vb3B9XG4gICAgICAgICAgb25Qb2ludGVyRW50ZXI9eyFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudCh0cnVlKSA6IG5vb3B9XG4gICAgICAgICAgb25Qb2ludGVyTGVhdmU9eyFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudChmYWxzZSkgOiBub29wfVxuICAgICAgICAgIHJlZj17Y2hpbGRyZW5SZWZ9XG4gICAgICAgICAgdGFiSW5kZXg9e3RhYkluZGV4fVxuICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgb25LZXlEb3duPy4oZXZlbnQpXG4gICAgICAgICAgfX1cbiAgICAgICAgICBkYXRhLWNvbnRhaW5lci1mdWxsLXdpZHRoPXtjb250YWluZXJGdWxsV2lkdGh9XG4gICAgICAgICAgYXJpYS1oYXNwb3B1cD17YXJpYUhhc1BvcHVwfVxuICAgICAgICA+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L1N0eWxlZENoaWxkcmVuQ29udGFpbmVyPlxuICAgICAgKVxuICAgIH0sIFtcbiAgICAgIGFyaWFIYXNQb3B1cCxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgY29udGFpbmVyRnVsbFdpZHRoLFxuICAgICAgZ2VuZXJhdGVkSWQsXG4gICAgICBpc0NvbnRyb2xsZWQsXG4gICAgICBvbktleURvd24sXG4gICAgICBvblBvaW50ZXJFdmVudCxcbiAgICAgIHRhYkluZGV4LFxuICAgIF0pXG5cbiAgICBjb25zdCBzaG91bGRSZW5kZXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGlmICghZHluYW1pY0RvbVJlbmRlcmluZykge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZHluYW1pY0RvbVJlbmRlcmluZyAmJiB2aXNpYmxlSW5Eb20pIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSwgW2R5bmFtaWNEb21SZW5kZXJpbmcsIHZpc2libGVJbkRvbV0pXG5cbiAgICBpZiAoIXRleHQpIHtcbiAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNoaWxkcmVuXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIHtyZW5kZXJDaGlsZHJlbigpfVxuICAgICAgICB7c2hvdWxkUmVuZGVyXG4gICAgICAgICAgPyBjcmVhdGVQb3J0YWwoXG4gICAgICAgICAgICAgIDxTdHlsZWRQb3B1cFxuICAgICAgICAgICAgICAgIHJlZj17aW5uZXJQb3B1cFJlZn1cbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM9e3Bvc2l0aW9uc31cbiAgICAgICAgICAgICAgICBtYXhXaWR0aD17bWF4V2lkdGh9XG4gICAgICAgICAgICAgICAgbWF4SGVpZ2h0PXttYXhIZWlnaHR9XG4gICAgICAgICAgICAgICAgcm9sZT17cm9sZX1cbiAgICAgICAgICAgICAgICBpZD17Z2VuZXJhdGVkSWR9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICAgICAgICAgICAgcmV2ZXJzZUFuaW1hdGlvbj17cmV2ZXJzZUFuaW1hdGlvbn1cbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZH1cbiAgICAgICAgICAgICAgICBkYXRhLWhhcy1hcnJvdz17aGFzQXJyb3d9XG4gICAgICAgICAgICAgICAgb25DbGljaz17c3RvcENsaWNrUHJvcGFnYXRpb259XG4gICAgICAgICAgICAgICAgb25Qb2ludGVyRW50ZXI9eyFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudCh0cnVlKSA6IG5vb3B9XG4gICAgICAgICAgICAgICAgb25Qb2ludGVyTGVhdmU9eyFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudChmYWxzZSkgOiBub29wfVxuICAgICAgICAgICAgICAgIGFuaW1hdGlvbkR1cmF0aW9uPXthbmltYXRpb25EdXJhdGlvbn1cbiAgICAgICAgICAgICAgICBvbktleURvd249e3JvbGUgPT09ICdkaWFsb2cnID8gaGFuZGxlRm9jdXNUcmFwIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgIGlzRGlhbG9nPXtyb2xlID09PSAnZGlhbG9nJ31cbiAgICAgICAgICAgICAgICBkYXRhLXZpc2libGUtaW4tZG9tPXtcbiAgICAgICAgICAgICAgICAgICFkeW5hbWljRG9tUmVuZGVyaW5nID8gdmlzaWJsZUluRG9tIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRhdGEtYW5pbWF0ZWQ9e2FuaW1hdGlvbkR1cmF0aW9uID4gMCAmJiAhbWF4SGVpZ2h0fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3RleHR9XG4gICAgICAgICAgICAgIDwvU3R5bGVkUG9wdXA+LFxuICAgICAgICAgICAgICBwb3B1cFBvcnRhbFRhcmdldCBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IG51bGx9XG4gICAgICA8Lz5cbiAgICApXG4gIH0sXG4pXG4iXX0= */"));
61
62
  const StyledChildrenContainer = /* @__PURE__ */ _styled__default.default("div", process.env.NODE_ENV === "production" ? {
62
63
  target: "e4h1g860"
63
64
  } : {
@@ -68,7 +69,7 @@ const StyledChildrenContainer = /* @__PURE__ */ _styled__default.default("div",
68
69
  styles: 'display:inherit;&[data-container-full-width="true"]{width:100%;}'
69
70
  } : {
70
71
  name: "1y7vhm4",
71
- styles: 'display:inherit;&[data-container-full-width="true"]{width:100%;}/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1BvcHVwL2luZGV4LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrSDBDIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1BvcHVwL2luZGV4LnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgdHlwZSB7XG4gIEhUTUxBdHRyaWJ1dGVzLFxuICBLZXlib2FyZEV2ZW50SGFuZGxlcixcbiAgTW91c2VFdmVudEhhbmRsZXIsXG4gIFJlYWN0Tm9kZSxcbiAgUmVmLFxuICBSZWZPYmplY3QsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtcbiAgZm9yd2FyZFJlZixcbiAgc3RhcnRUcmFuc2l0aW9uLFxuICB1c2VDYWxsYmFjayxcbiAgdXNlRWZmZWN0LFxuICB1c2VJZCxcbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZSxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgeyBpc0NsaWVudFNpZGUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2lzQ2xpZW50U2lkZSdcbmltcG9ydCB0eXBlIHsgUG9zaXRpb25zVHlwZSB9IGZyb20gJy4vYW5pbWF0aW9ucydcbmltcG9ydCB7IGFuaW1hdGlvbiwgZXhpdEFuaW1hdGlvbiB9IGZyb20gJy4vYW5pbWF0aW9ucydcbmltcG9ydCB0eXBlIHsgUG9wdXBBbGlnbiwgUG9wdXBQbGFjZW1lbnQgfSBmcm9tICcuL2hlbHBlcnMnXG5pbXBvcnQge1xuICBERUZBVUxUX0FSUk9XX1dJRFRILFxuICBERUZBVUxUX1BPU0lUSU9OUyxcbiAgY29tcHV0ZVBvc2l0aW9ucyxcbn0gZnJvbSAnLi9oZWxwZXJzJ1xuXG5jb25zdCBERUZBVUxUX0FOSU1BVElPTl9EVVJBVElPTiA9IDIzMCAvLyBpbiBtc1xuY29uc3QgREVGQVVMVF9ERUJPVU5DRV9EVVJBVElPTiA9IDIwMCAvLyBpbiBtc1xuXG5jb25zdCBub29wID0gKCkgPT4ge31cblxudHlwZSBTdHlsZWRQb3B1cFByb3BzID0ge1xuICBtYXhXaWR0aDogbnVtYmVyIHwgc3RyaW5nXG4gIHBvc2l0aW9uczogUG9zaXRpb25zVHlwZVxuICByZXZlcnNlQW5pbWF0aW9uOiBib29sZWFuXG4gIG1heEhlaWdodD86IG51bWJlciB8IHN0cmluZ1xuICBhbmltYXRpb25EdXJhdGlvbj86IG51bWJlclxuICBpc0RpYWxvZzogYm9vbGVhblxufVxuXG4vKipcbiAqIFRoaXMgZXZlbnQgaGFuZGxlIGFsbG93IHVzIHRvIG5vdCBidWJibGUgdGhlIGV2ZW50IHRvIGRvY3VtZW50LmJvZHkgbGlrZSB0aGlzIHJlYWN0LXNlbGVjdCB3b3JrcyBmaW5lXG4gKi9cbmNvbnN0IHN0b3BDbGlja1Byb3BhZ2F0aW9uOiBNb3VzZUV2ZW50SGFuZGxlciA9IGV2ZW50ID0+IHtcbiAgZXZlbnQubmF0aXZlRXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKClcbn1cblxuY29uc3QgU3R5bGVkUG9wdXAgPSBzdHlsZWQoJ2RpdicsIHtcbiAgc2hvdWxkRm9yd2FyZFByb3A6IHByb3AgPT5cbiAgICAhW1xuICAgICAgJ21heFdpZHRoJyxcbiAgICAgICdwb3NpdGlvbnMnLFxuICAgICAgJ3JldmVyc2VBbmltYXRpb24nLFxuICAgICAgJ21heEhlaWdodCcsXG4gICAgICAnYW5pbWF0aW9uRHVyYXRpb24nLFxuICAgICAgJ2lzRGlhbG9nJyxcbiAgICBdLmluY2x1ZGVzKHByb3ApLFxufSk8U3R5bGVkUG9wdXBQcm9wcz5gXG4gIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFN0cm9uZ2VyfTtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dFN0cm9uZ2VyfTtcbiAgYm9yZGVyLXJhZGl1czogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5yYWRpaS5kZWZhdWx0fTtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiBgJHt0aGVtZS5zcGFjZVsnMC41J119ICR7dGhlbWUuc3BhY2VbJzEnXX1gfTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG1heC13aWR0aDogJHsoeyBtYXhXaWR0aCB9KSA9PlxuICAgIHR5cGVvZiBtYXhXaWR0aCA9PT0gJ251bWJlcicgPyBgJHttYXhXaWR0aH1weGAgOiBtYXhXaWR0aH07XG4gIG1heC1oZWlnaHQ6ICR7KHsgbWF4SGVpZ2h0IH0pID0+XG4gICAgdHlwZW9mIG1heEhlaWdodCA9PT0gJ251bWJlcicgPyBgJHttYXhIZWlnaHR9cHhgIDogbWF4SGVpZ2h0fTtcbiAgb3ZlcmZsb3c6ICR7KHsgbWF4SGVpZ2h0IH0pID0+IChtYXhIZWlnaHQgPyAnYXV0bycgOiB1bmRlZmluZWQpfTtcbiAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbiAgZm9udC1zaXplOiAwLjhyZW07XG4gIGluc2V0OiAwIGF1dG8gYXV0byAwO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIG9wYWNpdHk6IDA7XG4gIHotaW5kZXg6IDE7XG4gIHRyYW5zZm9ybTogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLnBvcHVwUG9zaXRpb259O1xuXG4gICZbZGF0YS1hbmltYXRlZD1cInRydWVcIl0ge1xuICAgIGFuaW1hdGlvbjogJHsoeyBwb3NpdGlvbnMsIHJldmVyc2VBbmltYXRpb24sIGFuaW1hdGlvbkR1cmF0aW9uIH0pID0+IGNzc2BcbiAgICAgICR7YW5pbWF0aW9uRHVyYXRpb259bXMgJHtcbiAgICAgICAgIXJldmVyc2VBbmltYXRpb24gPyBhbmltYXRpb24ocG9zaXRpb25zKSA6IGV4aXRBbmltYXRpb24ocG9zaXRpb25zKVxuICAgICAgfSBmb3J3YXJkc1xuICAgIGB9O1xuICB9XG5cbiAgJltkYXRhLWhhcy1hcnJvdz1cInRydWVcIl0ge1xuICAgICY6OmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAkeyh7IHBvc2l0aW9ucyB9KSA9PiBwb3NpdGlvbnMuYXJyb3dUb3B9cHg7XG4gICAgICBsZWZ0OiAkeyh7IHBvc2l0aW9ucyB9KSA9PiBwb3NpdGlvbnMuYXJyb3dMZWZ0fXB4O1xuICAgICAgdHJhbnNmb3JtOiAkeyh7IHBvc2l0aW9ucyB9KSA9PiBwb3NpdGlvbnMuYXJyb3dUcmFuc2Zvcm19XG4gICAgICAgIHJvdGF0ZSgkeyh7IHBvc2l0aW9ucyB9KSA9PiBwb3NpdGlvbnMucm90YXRlfWRlZyk7XG4gICAgICBtYXJnaW4tbGVmdDogLSR7REVGQVVMVF9BUlJPV19XSURUSH1weDtcbiAgICAgIGJvcmRlci13aWR0aDogJHtERUZBVUxUX0FSUk9XX1dJRFRIfXB4O1xuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAgIGJvcmRlci1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kU3Ryb25nZXJ9XG4gICAgICAgIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgJltkYXRhLXZpc2libGUtaW4tZG9tPVwiZmFsc2VcIl0ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbmBcblxuY29uc3QgU3R5bGVkQ2hpbGRyZW5Db250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBpbmhlcml0O1xuXG4gICZbZGF0YS1jb250YWluZXItZnVsbC13aWR0aD1cInRydWVcIl0ge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5gXG5cbnR5cGUgUG9wdXBQcm9wcyA9IHtcbiAgLyoqXG4gICAqIElkIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGlmIG5vdCBzZXQuIEl0IGlzIHVzZWQgZm9yIGFzc29jaWF0aW5nIHBvcHVwIHdyYXBwZXIgd2l0aCBwb3B1cCBwb3J0YWwuXG4gICAqL1xuICBpZD86IHN0cmluZ1xuICBjaGlsZHJlbjpcbiAgICB8IFJlYWN0Tm9kZVxuICAgIHwgKChyZW5kZXJQcm9wczoge1xuICAgICAgICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgICAgICAgb25CbHVyOiAoKSA9PiB2b2lkXG4gICAgICAgIG9uRm9jdXM6ICgpID0+IHZvaWRcbiAgICAgICAgb25Qb2ludGVyRW50ZXI6ICgpID0+IHZvaWRcbiAgICAgICAgb25Qb2ludGVyTGVhdmU6ICgpID0+IHZvaWRcbiAgICAgICAgcmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPlxuICAgICAgfSkgPT4gUmVhY3ROb2RlKVxuICBtYXhXaWR0aD86IG51bWJlciB8IHN0cmluZ1xuICAvKipcbiAgICogYGF1dG9gIHBsYWNlbWVudCB3aWxsIGNoYW5nZSB0aGUgcG9zaXRpb24gb2YgdGhlIHBvcHVwIGlmIGl0IGRvZXNuJ3QgZml0IGluIHRoZSB2aWV3cG9ydC5cbiAgICovXG4gIHBsYWNlbWVudD86IFBvcHVwUGxhY2VtZW50XG4gIC8qKlxuICAgKiBBbGlnbiB0aGUgcG9wdXAgdG8gdGhlIHN0YXJ0IG9yIGNlbnRlciBvZiB0aGUgY2hpbGRyZW4uXG4gICAqL1xuICBhbGlnbj86IFBvcHVwQWxpZ25cbiAgLyoqXG4gICAqIENvbnRlbnQgb2YgdGhlIHBvcHVwLCBwcmVmZXJhYmx5IHRleHQgaW5zaWRlLlxuICAgKi9cbiAgdGV4dD86IFJlYWN0Tm9kZVxuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIEl0IHdpbGwgYWRkIGB3aWR0aDogMTAwJWAgdG8gdGhlIHBvcHVwIGNvbnRhaW5lci5cbiAgICovXG4gIGNvbnRhaW5lckZ1bGxXaWR0aD86IGJvb2xlYW5cbiAgLyoqXG4gICAqIEl0IHdpbGwgZm9yY2UgZGlzcGxheSBwb3B1cC4gVGhpcyBjYW4gYmUgdXNlZnVsIGlmIHlvdSBuZWVkIHRvIGFsd2F5cyBkaXNwbGF5IHRoZSBwb3B1cCB3aXRob3V0IGhvdmVyIG5lZWRlZC5cbiAgICovXG4gIHZpc2libGU/OiBib29sZWFuXG4gIGlubmVyUmVmPzogUmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD5cbiAgcm9sZT86IHN0cmluZ1xuICAnZGF0YS10ZXN0aWQnPzogc3RyaW5nXG4gIGhhc0Fycm93PzogYm9vbGVhblxuICBvbkNsb3NlPzogKCkgPT4gdm9pZFxuICB0YWJJbmRleD86IG51bWJlclxuICBvbktleURvd24/OiBLZXlib2FyZEV2ZW50SGFuZGxlclxuICAnYXJpYS1oYXNwb3B1cCc/OiBIVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD5bJ2FyaWEtaGFzcG9wdXAnXVxuICBoaWRlT25DbGlja091dHNpZGU/OiBib29sZWFuXG4gIC8qKlxuICAgKiBJZiB5b3Ugc2V0IGRlYm91bmNlVGltZSB0byBmYWxzZSwgdGhlIHBvcHVwIHdpbGwgbm90IGRlYm91bmNlIHRoZSBob3ZlciBldmVudCBhbmQgd2lsbCBiZSBkaXNwbGF5ZWQgaW5zdGFudGx5LlxuICAgKiBJZiBzZXQgdG8gMCBpdCB3aWxsIGRpc2FibGUgZGVib3VuY2UuXG4gICAqL1xuICBkZWJvdW5jZURlbGF5PzogbnVtYmVyXG4gIC8qKlxuICAgKiBJZiB5b3Ugc2V0IGEgbWF4IGhlaWdodCBrZWVwIGluIG1pbmQgdGhhdCB0aGUgYW5pbWF0aW9uIGlzIGRpc2FibGVkLCBvciBpdCB3aWxsIG5vdCB3b3JrIHByb3Blcmx5IG9uIHNvbWUgYnJvd3NlcnMuXG4gICAqL1xuICBtYXhIZWlnaHQ/OiBzdHJpbmcgfCBudW1iZXJcbiAgLyoqXG4gICAqIFdpbGwgcmVtb3ZlIHRoZSBhbmltYXRpb24gb24gdGhlIHBvcHVwIGlmIHNldCB0byBmYWxzZS5cbiAgICovXG4gIGRpc2FibGVBbmltYXRpb24/OiBib29sZWFuXG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgcG9ydGFsIHRhcmdldCBpcyBjaGlsZHJlbiBjb250YWluZXIgb3IgZG9jdW1lbnQuYm9keSBpZiBjaGlsZHJlbiBpcyBhIGZ1bmN0aW9uLiBZb3UgY2FuIG92ZXJyaWRlIHRoaXNcbiAgICogYmVoYXZpb3IgYnkgc2V0dGluZyBhIHBvcnRhbFRhcmdldCBwcm9wLlxuICAgKi9cbiAgcG9ydGFsVGFyZ2V0PzogSFRNTEVsZW1lbnRcbiAgLyoqXG4gICAqIElmIHlvdSBzZXQgdGhpcyB0byB0cnVlLCB0aGUgcG9wdXAgd2lsbCBiZSByZW5kZXJlZCBpbiB0aGUgRE9NIG9ubHkgd2hlbiBpdCBpcyB2aXNpYmxlLlxuICAgKiBXaGVuIHNldCB0byBmYWxzZSwgdGhlIHBvcHVwIHdpbGwgYWx3YXlzIGJlIHJlbmRlcmVkIGluIHRoZSBET00uIEJ5IGRlZmF1bHQgdGhpcyB2YWx1ZSBpcyBzZXQgdG8gYHRydWVgLCBpZiBmb3Igc29tZVxuICAgKiByZWFzb24geW91IG5lZWQgdG8gZGlzYWJsZSBpdCwgeW91IGNhbiBzZXQgaXQgdG8gYGZhbHNlYC5cbiAgICovXG4gIGR5bmFtaWNEb21SZW5kZXJpbmc/OiBib29sZWFuXG59XG5cbi8qKlxuICogQGV4cGVyaW1lbnRhbCBUaGlzIGNvbXBvbmVudCBpcyBleHBlcmltZW50YWwgYW5kIG1heSBiZSBzdWJqZWN0IHRvIGJyZWFraW5nIGNoYW5nZXMgaW4gdGhlIGZ1dHVyZS5cbiAqL1xuZXhwb3J0IGNvbnN0IFBvcHVwID0gZm9yd2FyZFJlZihcbiAgKFxuICAgIHtcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgdGV4dCA9ICcnLFxuICAgICAgcGxhY2VtZW50ID0gJ2F1dG8nLFxuICAgICAgYWxpZ24gPSAnY2VudGVyJyxcbiAgICAgIGlkLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29udGFpbmVyRnVsbFdpZHRoLFxuICAgICAgbWF4V2lkdGggPSAnMTQuNXJlbScsXG4gICAgICBtYXhIZWlnaHQsXG4gICAgICB2aXNpYmxlLFxuICAgICAgaW5uZXJSZWYsXG4gICAgICByb2xlID0gJ3BvcHVwJyxcbiAgICAgICdkYXRhLXRlc3RpZCc6IGRhdGFUZXN0SWQsXG4gICAgICBoYXNBcnJvdyA9IHRydWUsXG4gICAgICBvbkNsb3NlLFxuICAgICAgdGFiSW5kZXggPSAwLFxuICAgICAgb25LZXlEb3duLFxuICAgICAgJ2FyaWEtaGFzcG9wdXAnOiBhcmlhSGFzUG9wdXAsXG4gICAgICBoaWRlT25DbGlja091dHNpZGUgPSBmYWxzZSxcbiAgICAgIGRlYm91bmNlRGVsYXkgPSBERUZBVUxUX0RFQk9VTkNFX0RVUkFUSU9OLFxuICAgICAgZGlzYWJsZUFuaW1hdGlvbiA9IGZhbHNlLFxuICAgICAgcG9ydGFsVGFyZ2V0LFxuICAgICAgZHluYW1pY0RvbVJlbmRlcmluZyA9IHRydWUsXG4gICAgfTogUG9wdXBQcm9wcyxcbiAgICByZWY6IFJlZjxIVE1MRGl2RWxlbWVudD4sXG4gICkgPT4ge1xuICAgIGNvbnN0IGNoaWxkcmVuUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICAgIHVzZUltcGVyYXRpdmVIYW5kbGUoaW5uZXJSZWYsICgpID0+IGNoaWxkcmVuUmVmLmN1cnJlbnQgYXMgSFRNTERpdkVsZW1lbnQpXG5cbiAgICBjb25zdCBpbm5lclBvcHVwUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICAgIHVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCAoKSA9PiBpbm5lclBvcHVwUmVmLmN1cnJlbnQgYXMgSFRNTERpdkVsZW1lbnQpXG5cbiAgICBjb25zdCB0aW1lciA9IHVzZVJlZjxSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0Pj4odW5kZWZpbmVkKVxuICAgIGNvbnN0IHBvcHVwUG9ydGFsVGFyZ2V0ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICBpZiAocG9ydGFsVGFyZ2V0KSByZXR1cm4gcG9ydGFsVGFyZ2V0XG5cbiAgICAgIGlmIChyb2xlID09PSAnZGlhbG9nJykge1xuICAgICAgICBpZiAoY2hpbGRyZW5SZWYuY3VycmVudCkgcmV0dXJuIGNoaWxkcmVuUmVmLmN1cnJlbnRcbiAgICAgICAgaWYgKGlzQ2xpZW50U2lkZSkgcmV0dXJuIGRvY3VtZW50LmJvZHlcblxuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuXG4gICAgICAvLyBXZSBjaGVjayBpZiB3aW5kb3cgZXhpc3RzIGZvciBTU1JcbiAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQuYm9keVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICAgIH0sIFtwb3J0YWxUYXJnZXQsIHJvbGUsIGNoaWxkcmVuUmVmLmN1cnJlbnRdKVxuXG4gICAgLy8gVGhlcmUgYXJlIHNvbWUgaXNzdWUgd2hlbiBtaXhpbmcgYW5pbWF0aW9uIGFuZCBtYXhIZWlnaHQgb24gc29tZSBicm93c2Vycywgc28gd2UgZGlzYWJsZSBhbmltYXRpb24gaWYgbWF4SGVpZ2h0IGlzIHNldC5cbiAgICBjb25zdCBhbmltYXRpb25EdXJhdGlvbiA9XG4gICAgICBkaXNhYmxlQW5pbWF0aW9uIHx8IG1heEhlaWdodCA/IDAgOiBERUZBVUxUX0FOSU1BVElPTl9EVVJBVElPTlxuXG4gICAgLy8gRGVib3VuY2UgdGltZXIgd2lsbCBiZSB1c2VkIHRvIHByZXZlbnQgdGhlIHBvcHVwIGZyb20gZmxpY2tlcmluZyB3aGVuIHRoZSB1c2VyIG1vdmVzIHRoZSBtb3VzZSBvdXQgYW5kIGluIHRoZSBjaGlsZHJlbiBlbGVtZW50LlxuICAgIGNvbnN0IGRlYm91bmNlVGltZXIgPSB1c2VSZWY8UmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4+KHVuZGVmaW5lZClcbiAgICBjb25zdCBbdmlzaWJsZUluRG9tLCBzZXRWaXNpYmxlSW5Eb21dID0gdXNlU3RhdGUoZmFsc2UpXG4gICAgY29uc3QgW3JldmVyc2VBbmltYXRpb24sIHNldFJldmVyc2VBbmltYXRpb25dID0gdXNlU3RhdGUoZmFsc2UpXG4gICAgY29uc3QgW3Bvc2l0aW9ucywgc2V0UG9zaXRpb25zXSA9IHVzZVN0YXRlPFBvc2l0aW9uc1R5cGU+KHtcbiAgICAgIC4uLkRFRkFVTFRfUE9TSVRJT05TLFxuICAgIH0pXG4gICAgY29uc3QgdW5pcXVlSWQgPSB1c2VJZCgpXG4gICAgY29uc3QgZ2VuZXJhdGVkSWQgPSBpZCA/PyB1bmlxdWVJZFxuICAgIGNvbnN0IGlzQ29udHJvbGxlZCA9IHZpc2libGUgIT09IHVuZGVmaW5lZFxuXG4gICAgY29uc3QgZ2VuZXJhdGVQb3B1cFBvc2l0aW9ucyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIGlmIChjaGlsZHJlblJlZi5jdXJyZW50ICYmIGlubmVyUG9wdXBSZWYuY3VycmVudCkge1xuICAgICAgICBzZXRQb3NpdGlvbnMoXG4gICAgICAgICAgY29tcHV0ZVBvc2l0aW9ucyh7XG4gICAgICAgICAgICBjaGlsZHJlblJlZixcbiAgICAgICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgICAgIHBvcHVwUmVmOiBpbm5lclBvcHVwUmVmLFxuICAgICAgICAgICAgcG9wdXBQb3J0YWxUYXJnZXQ6IHBvcHVwUG9ydGFsVGFyZ2V0IGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgaGFzQXJyb3csXG4gICAgICAgICAgICBhbGlnbixcbiAgICAgICAgICB9KSxcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH0sIFtoYXNBcnJvdywgcGxhY2VtZW50LCBwb3B1cFBvcnRhbFRhcmdldCwgYWxpZ25dKVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB3ZSBuZWVkIHRvIHJlY29tcHV0ZSBwb3NpdGlvbnMgb2YgcG9wdXAgZHVlIHRvIHdpbmRvdyBzY3JvbGwgb3IgcmVzaXplLlxuICAgICAqL1xuICAgIGNvbnN0IG9uV2luZG93Q2hhbmdlRGV0ZWN0ZWQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAvLyBXZSByZW1vdmUgYW5pbWF0aW9uIG9uIHNjcm9sbCBvciB0aGUgYW5pbWF0aW9uIHdpbGwgcmVzdGFydCBvbiBldmVyeSBzY3JvbGxcbiAgICAgIGlmIChpbm5lclBvcHVwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgaW5uZXJQb3B1cFJlZi5jdXJyZW50LnN0eWxlLmFuaW1hdGlvbiA9ICdub25lJ1xuICAgICAgfVxuXG4gICAgICBnZW5lcmF0ZVBvcHVwUG9zaXRpb25zKClcbiAgICB9LCBbZ2VuZXJhdGVQb3B1cFBvc2l0aW9ucywgaW5uZXJQb3B1cFJlZl0pXG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHdlIG5lZWQgdG8gcmVtb3ZlIHBvcHVwIHBvcnRhbCBmcm9tIERPTSBhbmQgcmVtb3ZlIGV2ZW50IGxpc3RlbmVyIHRvIGl0LlxuICAgICAqL1xuICAgIGNvbnN0IHVubW91bnRQb3B1cEZyb21Eb20gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBzZXRWaXNpYmxlSW5Eb20oZmFsc2UpXG4gICAgICBzZXRSZXZlcnNlQW5pbWF0aW9uKGZhbHNlKVxuXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25XaW5kb3dDaGFuZ2VEZXRlY3RlZCwgdHJ1ZSlcbiAgICB9LCBbb25XaW5kb3dDaGFuZ2VEZXRlY3RlZF0pXG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHdlIG5lZWQgdG8gaGlkZSBwb3B1cC4gQSB0aW1lb3V0IGlzIHNldCB0byBhbGxvdyBhbmltYXRpb24gZW5kLCB0aGVuIHJlbW92ZVxuICAgICAqIHBvcHVwIGZyb20gZG9tLlxuICAgICAqL1xuICAgIGNvbnN0IGNsb3NlUG9wdXAgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBjb25zdCBjbG9zZUZ1bmN0aW9uID0gKCkgPT4ge1xuICAgICAgICBpZiAoIWRpc2FibGVBbmltYXRpb24pIHtcbiAgICAgICAgICBzZXRSZXZlcnNlQW5pbWF0aW9uKHRydWUpXG5cbiAgICAgICAgICB0aW1lci5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBvbkNsb3NlPy4oKVxuICAgICAgICAgICAgdW5tb3VudFBvcHVwRnJvbURvbSgpXG4gICAgICAgICAgfSwgYW5pbWF0aW9uRHVyYXRpb24pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb25DbG9zZT8uKClcbiAgICAgICAgICB1bm1vdW50UG9wdXBGcm9tRG9tKClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIWRpc2FibGVBbmltYXRpb24pIHtcbiAgICAgICAgZGVib3VuY2VUaW1lci5jdXJyZW50ID0gc2V0VGltZW91dChcbiAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICBjbG9zZUZ1bmN0aW9uKClcbiAgICAgICAgICB9LFxuICAgICAgICAgIGRlYm91bmNlRGVsYXkgJiYgIWRpc2FibGVBbmltYXRpb24gPyBkZWJvdW5jZURlbGF5IDogMCxcbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xvc2VGdW5jdGlvbigpXG4gICAgICB9XG4gICAgfSwgW1xuICAgICAgYW5pbWF0aW9uRHVyYXRpb24sXG4gICAgICBkaXNhYmxlQW5pbWF0aW9uLFxuICAgICAgZGVib3VuY2VEZWxheSxcbiAgICAgIG9uQ2xvc2UsXG4gICAgICB1bm1vdW50UG9wdXBGcm9tRG9tLFxuICAgIF0pXG5cbiAgICAvKipcbiAgICAgKiBXaGVuIG1vdXNlIGhvdmVyIG9yIHN0b3AgaG92ZXJpbmcgY2hpbGRyZW4gdGhpcyBmdW5jdGlvbiBkaXNwbGF5IG9yIGhpZGUgcG9wdXAuIEEgdGltZW91dCBpcyBzZXQgdG8gYWxsb3cgYW5pbWF0aW9uXG4gICAgICogZW5kLCB0aGVuIHJlbW92ZSBwb3B1cCBmcm9tIGRvbS5cbiAgICAgKi9cbiAgICBjb25zdCBvblBvaW50ZXJFdmVudCA9IHVzZUNhbGxiYWNrKFxuICAgICAgKGlzVmlzaWJsZTogYm9vbGVhbikgPT4gKCkgPT4ge1xuICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIGRlYm91bmNlRGVsYXkgYW5kIHRoZSBwb3B1cCBpcyBub3QgdmlzaWJsZSwgd2UgY2xlYXIgdGhlIGRlYm91bmNlIHRpbWVyXG4gICAgICAgIGlmICghdmlzaWJsZSAmJiBkZWJvdW5jZURlbGF5ID4gMCAmJiBkZWJvdW5jZVRpbWVyLmN1cnJlbnQpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQoZGVib3VuY2VUaW1lci5jdXJyZW50KVxuICAgICAgICAgIGRlYm91bmNlVGltZXIuY3VycmVudCA9IHVuZGVmaW5lZFxuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhpcyBjb25kaXRpb24gaXMgZm9yIHdoZW4gd2Ugd2FudCB0byB1bm1vdW50IHRoZSBwb3B1cFxuICAgICAgICAvLyBUaGVyZSBpcyBkZWJvdW5jZSBpbiBvcmRlciB0byBhdm9pZCBwb3B1cCB0byBmbGlja2VyIHdoZW4gd2UgbW92ZSB0aGUgbW91c2UgZnJvbSBjaGlsZHJlbiB0byBwb3B1cFxuICAgICAgICAvLyBUaW1lciBpcyB1c2VkIHRvIGZvbGxvdyB0aGUgYW5pbWF0aW9uIGR1cmF0aW9uXG4gICAgICAgIGlmICghaXNWaXNpYmxlICYmIGlubmVyUG9wdXBSZWYuY3VycmVudCAmJiAhZGVib3VuY2VUaW1lci5jdXJyZW50KSB7XG4gICAgICAgICAgY2xvc2VQb3B1cCgpXG4gICAgICAgIH0gZWxzZSBpZiAoaXNWaXNpYmxlKSB7XG4gICAgICAgICAgLy8gVGhpcyBjb25kaXRpb24gaXMgZm9yIHdoZW4gd2Ugd2FudCB0byBtb3VudCB0aGUgcG9wdXBcbiAgICAgICAgICAvLyBJZiB0aGUgdGltZXIgZXhpc3RzIGl0IG1lYW5zIHRoZSBwb3B1cCB3YXMgYWJvdXQgdG8gdW1vdW50LCBidXQgd2UgaG92ZXJlZCB0aGUgY2hpbGRyZW4gYWdhaW4sXG4gICAgICAgICAgLy8gc28gd2UgY2xlYXIgdGhlIHRpbWVyIGFuZCB0aGUgcG9wdXAgd2lsbCBub3QgYmUgdW5tb3VudGVkXG4gICAgICAgICAgaWYgKHRpbWVyLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHNldFJldmVyc2VBbmltYXRpb24oZmFsc2UpXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXIuY3VycmVudClcbiAgICAgICAgICAgIHRpbWVyLmN1cnJlbnQgPSB1bmRlZmluZWRcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gQW5kIGhlcmUgaXMgd2hlbiB3ZSBjdXJyZW50bHkgYXJlIGluIGEgZGVib3VuY2UgdGltZXIsIGl0IG1lYW5zIHBvcHVwIHdhcyBob3ZlcmVkIGR1cmluZ1xuICAgICAgICAgIC8vIHRoYXQgcGVyaW9kLCBhbmQgc28gd2UgY2FuIGNsZWFyIGRlYm91bmNlIHRpbWVyXG4gICAgICAgICAgaWYgKGRlYm91bmNlVGltZXIuY3VycmVudCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGRlYm91bmNlVGltZXIuY3VycmVudClcbiAgICAgICAgICAgIGRlYm91bmNlVGltZXIuY3VycmVudCA9IHVuZGVmaW5lZFxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZGVib3VuY2VEZWxheSA+IDApIHtcbiAgICAgICAgICAgIGRlYm91bmNlVGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICBzZXRWaXNpYmxlSW5Eb20odHJ1ZSlcbiAgICAgICAgICAgIH0sIGRlYm91bmNlRGVsYXkpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN0YXJ0VHJhbnNpdGlvbigoKSA9PiB7XG4gICAgICAgICAgICAgIHNldFZpc2libGVJbkRvbSh0cnVlKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBbY2xvc2VQb3B1cCwgZGVib3VuY2VEZWxheSwgdmlzaWJsZV0sXG4gICAgKVxuXG4gICAgLyoqXG4gICAgICogT25jZSBwb3B1cCBpcyB2aXNpYmxlIGluIHRoZSBkb20gd2UgY2FuIGNvbXB1dGUgcG9zaXRpb25zLCB0aGVuIHNldCBpdCB2aXNpYmxlIG9uIHNjcmVlbiBhbmQgYWRkIGV2ZW50IHRvXG4gICAgICogcmVjb21wdXRlIHBvc2l0aW9ucyBvbiBzY3JvbGwgb3Igc2NyZWVuIHJlc2l6ZS5cbiAgICAgKi9cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHZpc2libGVJbkRvbSkge1xuICAgICAgICBnZW5lcmF0ZVBvcHVwUG9zaXRpb25zKClcblxuICAgICAgICBpZiAocG9wdXBQb3J0YWxUYXJnZXQgPT09IGRvY3VtZW50LmJvZHkpIHtcbiAgICAgICAgICAvLyBXZSB3YW50IHRvIGRldGVjdCBzY3JvbGwgYW5kIHJlc2l6ZSBpbiBvcmRlciB0byByZWNvbXB1dGUgcG9zaXRpb25zIG9mIHBvcHVwXG4gICAgICAgICAgLy8gQWRkaW5nIHRydWUgYXMgdGhpcmQgcGFyYW1ldGVyIHRvIGV2ZW50IGxpc3RlbmVyIHdpbGwgZGV0ZWN0IG5lc3RlZCBzY3JvbGxzLlxuICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBvbldpbmRvd0NoYW5nZURldGVjdGVkLCB0cnVlKVxuICAgICAgICB9XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBvbldpbmRvd0NoYW5nZURldGVjdGVkLCB0cnVlKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25XaW5kb3dDaGFuZ2VEZXRlY3RlZCwgdHJ1ZSlcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG9uV2luZG93Q2hhbmdlRGV0ZWN0ZWQsIHRydWUpXG4gICAgICAgIGlmICh0aW1lci5jdXJyZW50KSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyLmN1cnJlbnQpXG4gICAgICAgICAgdGltZXIuY3VycmVudCA9IHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgW1xuICAgICAgZ2VuZXJhdGVQb3B1cFBvc2l0aW9ucyxcbiAgICAgIG9uV2luZG93Q2hhbmdlRGV0ZWN0ZWQsXG4gICAgICB2aXNpYmxlSW5Eb20sXG4gICAgICBtYXhXaWR0aCxcbiAgICAgIHBvcHVwUG9ydGFsVGFyZ2V0LFxuICAgIF0pXG5cbiAgICAvLyBUaGlzIHdpbGwgYmUgdHJpZ2dlcmVkIHdoZW4gcG9zaXRpb25zIGFyZSBjb21wdXRlZCBhbmQgcG9wdXAgaXMgdmlzaWJsZSBpbiB0aGUgZG9tLlxuICAgIHVzZUVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKHZpc2libGVJbkRvbSAmJiBpbm5lclBvcHVwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBpbm5lclBvcHVwUmVmLmN1cnJlbnQuc3R5bGUub3BhY2l0eSA9ICcxJ1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICAgICAgW3Bvc2l0aW9uc10sXG4gICAgKVxuXG4gICAgLyoqXG4gICAgICogSWYgcG9wdXAgaGFzIGB2aXNpYmxlYCBwcm9wIGl0IG1lYW5zIHRoZSBwb3B1cCBpcyBtYW51YWxseSBjb250cm9sbGVkIHRocm91Z2ggdGhpcyBwcm9wLlxuICAgICAqIEluIHRoaXMgY2FzIHdlIGRvbid0IHdhbnQgdG8gZGlzcGxheSBwb3B1cCBvbiBob3ZlciwgYnV0IG9ubHkgd2hlbiBgdmlzaWJsZWAgaXMgdHJ1ZS5cbiAgICAgKi9cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKGlzQ29udHJvbGxlZCkge1xuICAgICAgICBvblBvaW50ZXJFdmVudCh2aXNpYmxlKSgpXG4gICAgICB9XG4gICAgfSwgW2lzQ29udHJvbGxlZCwgb25Qb2ludGVyRXZlbnQsIHZpc2libGVdKVxuXG4gICAgLy8gSGFuZGxlIGhpZGUgb24gZXNjIHByZXNzIGFuZCBoaWRlIG9uIGNsaWNrIG91dHNpZGVcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgaGFuZGxlRXNjUHJlc3MgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICBjbG9zZVBvcHVwKClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgcG9wdXBDdXJyZW50ID0gaW5uZXJQb3B1cFJlZi5jdXJyZW50XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuQ3VycmVudCA9IGNoaWxkcmVuUmVmLmN1cnJlbnRcblxuICAgICAgICBpZiAocG9wdXBDdXJyZW50ICYmIGhpZGVPbkNsaWNrT3V0c2lkZSAmJiAhZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldCAmJlxuICAgICAgICAgICAgZXZlbnQudGFyZ2V0ICE9PSBwb3B1cEN1cnJlbnQgJiZcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldCAhPT0gY2hpbGRyZW5DdXJyZW50ICYmXG4gICAgICAgICAgICAhY2hpbGRyZW5DdXJyZW50Py5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICAgICAgICFwb3B1cEN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgY2xvc2VQb3B1cCgpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodmlzaWJsZUluRG9tKSB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCBoYW5kbGVFc2NQcmVzcylcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXl1cCcsIGhhbmRsZUVzY1ByZXNzKVxuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgICAgfVxuICAgIH0sIFtcbiAgICAgIGNsb3NlUG9wdXAsXG4gICAgICB2aXNpYmxlSW5Eb20sXG4gICAgICBpbm5lclBvcHVwUmVmLFxuICAgICAgY2hpbGRyZW5SZWYsXG4gICAgICBoaWRlT25DbGlja091dHNpZGUsXG4gICAgXSlcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZXZlbnQgd2lsbCBvY2N1ciBvbmx5IGZvciBkaWFsb2cgYW5kIHdpbGwgdHJhcCBmb2N1cyBpbnNpZGUgdGhlIGRpYWxvZy5cbiAgICAgKi9cbiAgICBjb25zdCBoYW5kbGVGb2N1c1RyYXA6IEtleWJvYXJkRXZlbnRIYW5kbGVyID0gdXNlQ2FsbGJhY2soZXZlbnQgPT4ge1xuICAgICAgY29uc3QgaXNUYWJQcmVzc2VkID0gZXZlbnQua2V5ID09PSAnVGFiJ1xuICAgICAgaWYgKCFpc1RhYlByZXNzZWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuXG4gICAgICBjb25zdCBmb2N1c2FibGVFbHMgPVxuICAgICAgICBpbm5lclBvcHVwUmVmLmN1cnJlbnQ/LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICAgICAgJ2FbaHJlZl06bm90KFtkaXNhYmxlZF0pLCBidXR0b246bm90KFtkaXNhYmxlZF0pLCB0ZXh0YXJlYTpub3QoW2Rpc2FibGVkXSksIGlucHV0Om5vdChbZGlzYWJsZWRdKSwgc2VsZWN0Om5vdChbZGlzYWJsZWRdKScsXG4gICAgICAgICkgPz8gW11cblxuICAgICAgLy8gSGFuZGxlIGNhc2Ugd2hlbiBubyBpbnRlcmFjdGl2ZSBlbGVtZW50IGFyZSB3aXRoaW4gdGhlIG1vZGFsIChpbmNsdWRpbmcgY2xvc2UgaWNvbilcbiAgICAgIGlmIChmb2N1c2FibGVFbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlyc3RGb2N1c2FibGVFbCA9IGZvY3VzYWJsZUVsc1swXSBhcyBIVE1MRWxlbWVudFxuICAgICAgY29uc3QgbGFzdEZvY3VzYWJsZUVsID0gZm9jdXNhYmxlRWxzW1xuICAgICAgICBmb2N1c2FibGVFbHMubGVuZ3RoIC0gMVxuICAgICAgXSBhcyBIVE1MRWxlbWVudFxuXG4gICAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGZpcnN0Rm9jdXNhYmxlRWwgfHxcbiAgICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBpbm5lclBvcHVwUmVmLmN1cnJlbnRcbiAgICAgICAgKSB7XG4gICAgICAgICAgbGFzdEZvY3VzYWJsZUVsLmZvY3VzKClcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGxhc3RGb2N1c2FibGVFbCB8fFxuICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBpbm5lclBvcHVwUmVmLmN1cnJlbnRcbiAgICAgICkge1xuICAgICAgICBmaXJzdEZvY3VzYWJsZUVsLmZvY3VzKClcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgfVxuICAgIH0sIFtdKVxuXG4gICAgLyoqXG4gICAgICogV2lsbCByZW5kZXIgY2hpbGRyZW4gY29uZGl0aW9uYWxseSBpZiBjaGlsZHJlbiBpcyBhIGZ1bmN0aW9uIG9yIG5vdC5cbiAgICAgKi9cbiAgICBjb25zdCByZW5kZXJDaGlsZHJlbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuKHtcbiAgICAgICAgICBvbkJsdXI6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudChmYWxzZSkgOiBub29wLFxuICAgICAgICAgIG9uRm9jdXM6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudCh0cnVlKSA6IG5vb3AsXG4gICAgICAgICAgb25Qb2ludGVyRW50ZXI6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudCh0cnVlKSA6IG5vb3AsXG4gICAgICAgICAgb25Qb2ludGVyTGVhdmU6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudChmYWxzZSkgOiBub29wLFxuICAgICAgICAgIHJlZjogY2hpbGRyZW5SZWYsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRDaGlsZHJlbkNvbnRhaW5lclxuICAgICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9e2dlbmVyYXRlZElkfVxuICAgICAgICAgIGFyaWEtY29udHJvbHM9e2dlbmVyYXRlZElkfVxuICAgICAgICAgIG9uQmx1cj17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KGZhbHNlKSA6IG5vb3B9XG4gICAgICAgICAgb25Gb2N1cz17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KHRydWUpIDogbm9vcH1cbiAgICAgICAgICBvblBvaW50ZXJFbnRlcj17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KHRydWUpIDogbm9vcH1cbiAgICAgICAgICBvblBvaW50ZXJMZWF2ZT17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KGZhbHNlKSA6IG5vb3B9XG4gICAgICAgICAgcmVmPXtjaGlsZHJlblJlZn1cbiAgICAgICAgICB0YWJJbmRleD17dGFiSW5kZXh9XG4gICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PiB7XG4gICAgICAgICAgICBvbktleURvd24/LihldmVudClcbiAgICAgICAgICB9fVxuICAgICAgICAgIGRhdGEtY29udGFpbmVyLWZ1bGwtd2lkdGg9e2NvbnRhaW5lckZ1bGxXaWR0aH1cbiAgICAgICAgICBhcmlhLWhhc3BvcHVwPXthcmlhSGFzUG9wdXB9XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvU3R5bGVkQ2hpbGRyZW5Db250YWluZXI+XG4gICAgICApXG4gICAgfSwgW1xuICAgICAgYXJpYUhhc1BvcHVwLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBjb250YWluZXJGdWxsV2lkdGgsXG4gICAgICBnZW5lcmF0ZWRJZCxcbiAgICAgIGlzQ29udHJvbGxlZCxcbiAgICAgIG9uS2V5RG93bixcbiAgICAgIG9uUG9pbnRlckV2ZW50LFxuICAgICAgdGFiSW5kZXgsXG4gICAgXSlcblxuICAgIGNvbnN0IHNob3VsZFJlbmRlciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgaWYgKCFkeW5hbWljRG9tUmVuZGVyaW5nKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChkeW5hbWljRG9tUmVuZGVyaW5nICYmIHZpc2libGVJbkRvbSkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9LCBbZHluYW1pY0RvbVJlbmRlcmluZywgdmlzaWJsZUluRG9tXSlcblxuICAgIGlmICghdGV4dCkge1xuICAgICAgaWYgKHR5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2hpbGRyZW5cbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAge3JlbmRlckNoaWxkcmVuKCl9XG4gICAgICAgIHtzaG91bGRSZW5kZXJcbiAgICAgICAgICA/IGNyZWF0ZVBvcnRhbChcbiAgICAgICAgICAgICAgPFN0eWxlZFBvcHVwXG4gICAgICAgICAgICAgICAgcmVmPXtpbm5lclBvcHVwUmVmfVxuICAgICAgICAgICAgICAgIHBvc2l0aW9ucz17cG9zaXRpb25zfVxuICAgICAgICAgICAgICAgIG1heFdpZHRoPXttYXhXaWR0aH1cbiAgICAgICAgICAgICAgICBtYXhIZWlnaHQ9e21heEhlaWdodH1cbiAgICAgICAgICAgICAgICByb2xlPXtyb2xlfVxuICAgICAgICAgICAgICAgIGlkPXtnZW5lcmF0ZWRJZH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgICAgICAgICByZXZlcnNlQW5pbWF0aW9uPXtyZXZlcnNlQW5pbWF0aW9ufVxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtkYXRhVGVzdElkfVxuICAgICAgICAgICAgICAgIGRhdGEtaGFzLWFycm93PXtoYXNBcnJvd31cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtzdG9wQ2xpY2tQcm9wYWdhdGlvbn1cbiAgICAgICAgICAgICAgICBvblBvaW50ZXJFbnRlcj17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KHRydWUpIDogbm9vcH1cbiAgICAgICAgICAgICAgICBvblBvaW50ZXJMZWF2ZT17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KGZhbHNlKSA6IG5vb3B9XG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uRHVyYXRpb249e2FuaW1hdGlvbkR1cmF0aW9ufVxuICAgICAgICAgICAgICAgIG9uS2V5RG93bj17cm9sZSA9PT0gJ2RpYWxvZycgPyBoYW5kbGVGb2N1c1RyYXAgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICAgICAgaXNEaWFsb2c9e3JvbGUgPT09ICdkaWFsb2cnfVxuICAgICAgICAgICAgICAgIGRhdGEtdmlzaWJsZS1pbi1kb209e1xuICAgICAgICAgICAgICAgICAgIWR5bmFtaWNEb21SZW5kZXJpbmcgPyB2aXNpYmxlSW5Eb20gOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGF0YS1hbmltYXRlZD17YW5pbWF0aW9uRHVyYXRpb24gPiAwICYmICFtYXhIZWlnaHR9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dGV4dH1cbiAgICAgICAgICAgICAgPC9TdHlsZWRQb3B1cD4sXG4gICAgICAgICAgICAgIHBvcHVwUG9ydGFsVGFyZ2V0IGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgKVxuICAgICAgICAgIDogbnVsbH1cbiAgICAgIDwvPlxuICAgIClcbiAgfSxcbilcbiJdfQ== */',
72
+ styles: 'display:inherit;&[data-container-full-width="true"]{width:100%;}/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1BvcHVwL2luZGV4LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvSDBDIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1BvcHVwL2luZGV4LnRzeCIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCdcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJ1xuaW1wb3J0IHR5cGUge1xuICBIVE1MQXR0cmlidXRlcyxcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIE1vdXNlRXZlbnRIYW5kbGVyLFxuICBSZWFjdE5vZGUsXG4gIFJlZixcbiAgUmVmT2JqZWN0LFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7XG4gIGZvcndhcmRSZWYsXG4gIHN0YXJ0VHJhbnNpdGlvbixcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlSWQsXG4gIHVzZUltcGVyYXRpdmVIYW5kbGUsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IHsgaXNDbGllbnRTaWRlIH0gZnJvbSAnLi4vLi4vaGVscGVycy9pc0NsaWVudFNpZGUnXG5pbXBvcnQgdHlwZSB7IFBvc2l0aW9uc1R5cGUgfSBmcm9tICcuL2FuaW1hdGlvbnMnXG5pbXBvcnQgeyBhbmltYXRpb24sIGV4aXRBbmltYXRpb24gfSBmcm9tICcuL2FuaW1hdGlvbnMnXG5pbXBvcnQgdHlwZSB7IFBvcHVwQWxpZ24sIFBvcHVwUGxhY2VtZW50IH0gZnJvbSAnLi9oZWxwZXJzJ1xuaW1wb3J0IHtcbiAgREVGQVVMVF9BUlJPV19XSURUSCxcbiAgREVGQVVMVF9QT1NJVElPTlMsXG4gIGNvbXB1dGVQb3NpdGlvbnMsXG59IGZyb20gJy4vaGVscGVycydcblxuY29uc3QgREVGQVVMVF9BTklNQVRJT05fRFVSQVRJT04gPSAyMzAgLy8gaW4gbXNcbmNvbnN0IERFRkFVTFRfREVCT1VOQ0VfRFVSQVRJT04gPSAyMDAgLy8gaW4gbXNcblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9XG5cbnR5cGUgU3R5bGVkUG9wdXBQcm9wcyA9IHtcbiAgbWF4V2lkdGg6IG51bWJlciB8IHN0cmluZ1xuICBwb3NpdGlvbnM6IFBvc2l0aW9uc1R5cGVcbiAgcmV2ZXJzZUFuaW1hdGlvbjogYm9vbGVhblxuICBtYXhIZWlnaHQ/OiBudW1iZXIgfCBzdHJpbmdcbiAgYW5pbWF0aW9uRHVyYXRpb24/OiBudW1iZXJcbiAgaXNEaWFsb2c6IGJvb2xlYW5cbn1cblxuLyoqXG4gKiBUaGlzIGV2ZW50IGhhbmRsZSBhbGxvdyB1cyB0byBub3QgYnViYmxlIHRoZSBldmVudCB0byBkb2N1bWVudC5ib2R5IGxpa2UgdGhpcyByZWFjdC1zZWxlY3Qgd29ya3MgZmluZVxuICovXG5jb25zdCBzdG9wQ2xpY2tQcm9wYWdhdGlvbjogTW91c2VFdmVudEhhbmRsZXIgPSBldmVudCA9PiB7XG4gIGV2ZW50Lm5hdGl2ZUV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXG59XG5cbmNvbnN0IFN0eWxlZFBvcHVwID0gc3R5bGVkKCdkaXYnLCB7XG4gIHNob3VsZEZvcndhcmRQcm9wOiBwcm9wID0+XG4gICAgIVtcbiAgICAgICdtYXhXaWR0aCcsXG4gICAgICAncG9zaXRpb25zJyxcbiAgICAgICdyZXZlcnNlQW5pbWF0aW9uJyxcbiAgICAgICdtYXhIZWlnaHQnLFxuICAgICAgJ2FuaW1hdGlvbkR1cmF0aW9uJyxcbiAgICAgICdpc0RpYWxvZycsXG4gICAgXS5pbmNsdWRlcyhwcm9wKSxcbn0pPFN0eWxlZFBvcHVwUHJvcHM+YFxuICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRTdHJvbmdlcn07XG4gIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLnRleHRTdHJvbmdlcn07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucmFkaWkuZGVmYXVsdH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gYCR7dGhlbWUuc3BhY2VbJzAuNSddfSAke3RoZW1lLnNwYWNlWycxJ119YH07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBtYXgtd2lkdGg6ICR7KHsgbWF4V2lkdGggfSkgPT5cbiAgICB0eXBlb2YgbWF4V2lkdGggPT09ICdudW1iZXInID8gYCR7bWF4V2lkdGh9cHhgIDogbWF4V2lkdGh9O1xuICBtYXgtaGVpZ2h0OiAkeyh7IG1heEhlaWdodCB9KSA9PlxuICAgIHR5cGVvZiBtYXhIZWlnaHQgPT09ICdudW1iZXInID8gYCR7bWF4SGVpZ2h0fXB4YCA6IG1heEhlaWdodH07XG4gIG92ZXJmbG93OiAkeyh7IG1heEhlaWdodCB9KSA9PiAobWF4SGVpZ2h0ID8gJ2F1dG8nIDogdW5kZWZpbmVkKX07XG4gIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xuICBpbnNldDogMCBhdXRvIGF1dG8gMDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBvcGFjaXR5OiAwO1xuICB6LWluZGV4OiAxO1xuICB0cmFuc2Zvcm06ICR7KHsgcG9zaXRpb25zIH0pID0+IHBvc2l0aW9ucy5wb3B1cFBvc2l0aW9ufTtcblxuICAmW2RhdGEtYW5pbWF0ZWQ9XCJ0cnVlXCJdIHtcbiAgICBhbmltYXRpb246ICR7KHsgcG9zaXRpb25zLCByZXZlcnNlQW5pbWF0aW9uLCBhbmltYXRpb25EdXJhdGlvbiB9KSA9PiBjc3NgXG4gICAgICAke2FuaW1hdGlvbkR1cmF0aW9ufW1zICR7XG4gICAgICAgICFyZXZlcnNlQW5pbWF0aW9uID8gYW5pbWF0aW9uKHBvc2l0aW9ucykgOiBleGl0QW5pbWF0aW9uKHBvc2l0aW9ucylcbiAgICAgIH0gZm9yd2FyZHNcbiAgICBgfTtcbiAgfVxuXG4gICZbZGF0YS1oYXMtYXJyb3c9XCJ0cnVlXCJdIHtcbiAgICAmOjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIiBcIjtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLmFycm93VG9wfXB4O1xuICAgICAgbGVmdDogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLmFycm93TGVmdH1weDtcbiAgICAgIHRyYW5zZm9ybTogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLmFycm93VHJhbnNmb3JtfVxuICAgICAgICByb3RhdGUoJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLnJvdGF0ZX1kZWcpO1xuICAgICAgbWFyZ2luLWxlZnQ6IC0ke0RFRkFVTFRfQVJST1dfV0lEVEh9cHg7XG4gICAgICBib3JkZXItd2lkdGg6ICR7REVGQVVMVF9BUlJPV19XSURUSH1weDtcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgICBib3JkZXItY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFN0cm9uZ2VyfVxuICAgICAgICB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cbiAgfVxuXG4gICZbZGF0YS12aXNpYmxlLWluLWRvbT1cImZhbHNlXCJdIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5gXG5cbmNvbnN0IFN0eWxlZENoaWxkcmVuQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogaW5oZXJpdDtcblxuICAmW2RhdGEtY29udGFpbmVyLWZ1bGwtd2lkdGg9XCJ0cnVlXCJdIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuYFxuXG50eXBlIFBvcHVwUHJvcHMgPSB7XG4gIC8qKlxuICAgKiBJZCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBpZiBub3Qgc2V0LiBJdCBpcyB1c2VkIGZvciBhc3NvY2lhdGluZyBwb3B1cCB3cmFwcGVyIHdpdGggcG9wdXAgcG9ydGFsLlxuICAgKi9cbiAgaWQ/OiBzdHJpbmdcbiAgY2hpbGRyZW46XG4gICAgfCBSZWFjdE5vZGVcbiAgICB8ICgocmVuZGVyUHJvcHM6IHtcbiAgICAgICAgY2xhc3NOYW1lPzogc3RyaW5nXG4gICAgICAgIG9uQmx1cjogKCkgPT4gdm9pZFxuICAgICAgICBvbkZvY3VzOiAoKSA9PiB2b2lkXG4gICAgICAgIG9uUG9pbnRlckVudGVyOiAoKSA9PiB2b2lkXG4gICAgICAgIG9uUG9pbnRlckxlYXZlOiAoKSA9PiB2b2lkXG4gICAgICAgIHJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD5cbiAgICAgIH0pID0+IFJlYWN0Tm9kZSlcbiAgbWF4V2lkdGg/OiBudW1iZXIgfCBzdHJpbmdcbiAgLyoqXG4gICAqIGBhdXRvYCBwbGFjZW1lbnQgd2lsbCBjaGFuZ2UgdGhlIHBvc2l0aW9uIG9mIHRoZSBwb3B1cCBpZiBpdCBkb2Vzbid0IGZpdCBpbiB0aGUgdmlld3BvcnQuXG4gICAqL1xuICBwbGFjZW1lbnQ/OiBQb3B1cFBsYWNlbWVudFxuICAvKipcbiAgICogQWxpZ24gdGhlIHBvcHVwIHRvIHRoZSBzdGFydCBvciBjZW50ZXIgb2YgdGhlIGNoaWxkcmVuLlxuICAgKi9cbiAgYWxpZ24/OiBQb3B1cEFsaWduXG4gIC8qKlxuICAgKiBDb250ZW50IG9mIHRoZSBwb3B1cCwgcHJlZmVyYWJseSB0ZXh0IGluc2lkZS5cbiAgICovXG4gIHRleHQ/OiBSZWFjdE5vZGVcbiAgY2xhc3NOYW1lPzogc3RyaW5nXG4gIC8qKlxuICAgKiBJdCB3aWxsIGFkZCBgd2lkdGg6IDEwMCVgIHRvIHRoZSBwb3B1cCBjb250YWluZXIuXG4gICAqL1xuICBjb250YWluZXJGdWxsV2lkdGg/OiBib29sZWFuXG4gIC8qKlxuICAgKiBJdCB3aWxsIGZvcmNlIGRpc3BsYXkgcG9wdXAuIFRoaXMgY2FuIGJlIHVzZWZ1bCBpZiB5b3UgbmVlZCB0byBhbHdheXMgZGlzcGxheSB0aGUgcG9wdXAgd2l0aG91dCBob3ZlciBuZWVkZWQuXG4gICAqL1xuICB2aXNpYmxlPzogYm9vbGVhblxuICBpbm5lclJlZj86IFJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+XG4gIHJvbGU/OiBzdHJpbmdcbiAgJ2RhdGEtdGVzdGlkJz86IHN0cmluZ1xuICBoYXNBcnJvdz86IGJvb2xlYW5cbiAgb25DbG9zZT86ICgpID0+IHZvaWRcbiAgdGFiSW5kZXg/OiBudW1iZXJcbiAgb25LZXlEb3duPzogS2V5Ym9hcmRFdmVudEhhbmRsZXJcbiAgJ2FyaWEtaGFzcG9wdXAnPzogSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+WydhcmlhLWhhc3BvcHVwJ11cbiAgaGlkZU9uQ2xpY2tPdXRzaWRlPzogYm9vbGVhblxuICAvKipcbiAgICogSWYgeW91IHNldCBkZWJvdW5jZVRpbWUgdG8gZmFsc2UsIHRoZSBwb3B1cCB3aWxsIG5vdCBkZWJvdW5jZSB0aGUgaG92ZXIgZXZlbnQgYW5kIHdpbGwgYmUgZGlzcGxheWVkIGluc3RhbnRseS5cbiAgICogSWYgc2V0IHRvIDAgaXQgd2lsbCBkaXNhYmxlIGRlYm91bmNlLlxuICAgKi9cbiAgZGVib3VuY2VEZWxheT86IG51bWJlclxuICAvKipcbiAgICogSWYgeW91IHNldCBhIG1heCBoZWlnaHQga2VlcCBpbiBtaW5kIHRoYXQgdGhlIGFuaW1hdGlvbiBpcyBkaXNhYmxlZCwgb3IgaXQgd2lsbCBub3Qgd29yayBwcm9wZXJseSBvbiBzb21lIGJyb3dzZXJzLlxuICAgKi9cbiAgbWF4SGVpZ2h0Pzogc3RyaW5nIHwgbnVtYmVyXG4gIC8qKlxuICAgKiBXaWxsIHJlbW92ZSB0aGUgYW5pbWF0aW9uIG9uIHRoZSBwb3B1cCBpZiBzZXQgdG8gZmFsc2UuXG4gICAqL1xuICBkaXNhYmxlQW5pbWF0aW9uPzogYm9vbGVhblxuICAvKipcbiAgICogQnkgZGVmYXVsdCwgdGhlIHBvcnRhbCB0YXJnZXQgaXMgY2hpbGRyZW4gY29udGFpbmVyIG9yIGRvY3VtZW50LmJvZHkgaWYgY2hpbGRyZW4gaXMgYSBmdW5jdGlvbi4gWW91IGNhbiBvdmVycmlkZSB0aGlzXG4gICAqIGJlaGF2aW9yIGJ5IHNldHRpbmcgYSBwb3J0YWxUYXJnZXQgcHJvcC5cbiAgICovXG4gIHBvcnRhbFRhcmdldD86IEhUTUxFbGVtZW50XG4gIC8qKlxuICAgKiBJZiB5b3Ugc2V0IHRoaXMgdG8gdHJ1ZSwgdGhlIHBvcHVwIHdpbGwgYmUgcmVuZGVyZWQgaW4gdGhlIERPTSBvbmx5IHdoZW4gaXQgaXMgdmlzaWJsZS5cbiAgICogV2hlbiBzZXQgdG8gZmFsc2UsIHRoZSBwb3B1cCB3aWxsIGFsd2F5cyBiZSByZW5kZXJlZCBpbiB0aGUgRE9NLiBCeSBkZWZhdWx0IHRoaXMgdmFsdWUgaXMgc2V0IHRvIGB0cnVlYCwgaWYgZm9yIHNvbWVcbiAgICogcmVhc29uIHlvdSBuZWVkIHRvIGRpc2FibGUgaXQsIHlvdSBjYW4gc2V0IGl0IHRvIGBmYWxzZWAuXG4gICAqL1xuICBkeW5hbWljRG9tUmVuZGVyaW5nPzogYm9vbGVhblxufVxuXG4vKipcbiAqIEBleHBlcmltZW50YWwgVGhpcyBjb21wb25lbnQgaXMgZXhwZXJpbWVudGFsIGFuZCBtYXkgYmUgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIHRoZSBmdXR1cmUuXG4gKi9cbmV4cG9ydCBjb25zdCBQb3B1cCA9IGZvcndhcmRSZWYoXG4gIChcbiAgICB7XG4gICAgICBjaGlsZHJlbixcbiAgICAgIHRleHQgPSAnJyxcbiAgICAgIHBsYWNlbWVudCA9ICdhdXRvJyxcbiAgICAgIGFsaWduID0gJ2NlbnRlcicsXG4gICAgICBpZCxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNvbnRhaW5lckZ1bGxXaWR0aCxcbiAgICAgIG1heFdpZHRoID0gJzE0LjVyZW0nLFxuICAgICAgbWF4SGVpZ2h0LFxuICAgICAgdmlzaWJsZSxcbiAgICAgIGlubmVyUmVmLFxuICAgICAgcm9sZSA9ICdwb3B1cCcsXG4gICAgICAnZGF0YS10ZXN0aWQnOiBkYXRhVGVzdElkLFxuICAgICAgaGFzQXJyb3cgPSB0cnVlLFxuICAgICAgb25DbG9zZSxcbiAgICAgIHRhYkluZGV4ID0gMCxcbiAgICAgIG9uS2V5RG93bixcbiAgICAgICdhcmlhLWhhc3BvcHVwJzogYXJpYUhhc1BvcHVwLFxuICAgICAgaGlkZU9uQ2xpY2tPdXRzaWRlID0gZmFsc2UsXG4gICAgICBkZWJvdW5jZURlbGF5ID0gREVGQVVMVF9ERUJPVU5DRV9EVVJBVElPTixcbiAgICAgIGRpc2FibGVBbmltYXRpb24gPSBmYWxzZSxcbiAgICAgIHBvcnRhbFRhcmdldCxcbiAgICAgIGR5bmFtaWNEb21SZW5kZXJpbmcgPSB0cnVlLFxuICAgIH06IFBvcHVwUHJvcHMsXG4gICAgcmVmOiBSZWY8SFRNTERpdkVsZW1lbnQ+LFxuICApID0+IHtcbiAgICBjb25zdCBjaGlsZHJlblJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgICB1c2VJbXBlcmF0aXZlSGFuZGxlKGlubmVyUmVmLCAoKSA9PiBjaGlsZHJlblJlZi5jdXJyZW50IGFzIEhUTUxEaXZFbGVtZW50KVxuXG4gICAgY29uc3QgaW5uZXJQb3B1cFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgICB1c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgKCkgPT4gaW5uZXJQb3B1cFJlZi5jdXJyZW50IGFzIEhUTUxEaXZFbGVtZW50KVxuXG4gICAgY29uc3QgdGltZXIgPSB1c2VSZWY8UmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4+KHVuZGVmaW5lZClcbiAgICBjb25zdCBwb3B1cFBvcnRhbFRhcmdldCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgaWYgKHBvcnRhbFRhcmdldCkgcmV0dXJuIHBvcnRhbFRhcmdldFxuXG4gICAgICBpZiAocm9sZSA9PT0gJ2RpYWxvZycpIHtcbiAgICAgICAgaWYgKGNoaWxkcmVuUmVmLmN1cnJlbnQpIHJldHVybiBjaGlsZHJlblJlZi5jdXJyZW50XG4gICAgICAgIGlmIChpc0NsaWVudFNpZGUpIHJldHVybiBkb2N1bWVudC5ib2R5XG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cblxuICAgICAgLy8gV2UgY2hlY2sgaWYgd2luZG93IGV4aXN0cyBmb3IgU1NSXG4gICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50LmJvZHlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgICB9LCBbcG9ydGFsVGFyZ2V0LCByb2xlLCBjaGlsZHJlblJlZi5jdXJyZW50XSlcblxuICAgIC8vIFRoZXJlIGFyZSBzb21lIGlzc3VlIHdoZW4gbWl4aW5nIGFuaW1hdGlvbiBhbmQgbWF4SGVpZ2h0IG9uIHNvbWUgYnJvd3NlcnMsIHNvIHdlIGRpc2FibGUgYW5pbWF0aW9uIGlmIG1heEhlaWdodCBpcyBzZXQuXG4gICAgY29uc3QgYW5pbWF0aW9uRHVyYXRpb24gPVxuICAgICAgZGlzYWJsZUFuaW1hdGlvbiB8fCBtYXhIZWlnaHQgPyAwIDogREVGQVVMVF9BTklNQVRJT05fRFVSQVRJT05cblxuICAgIC8vIERlYm91bmNlIHRpbWVyIHdpbGwgYmUgdXNlZCB0byBwcmV2ZW50IHRoZSBwb3B1cCBmcm9tIGZsaWNrZXJpbmcgd2hlbiB0aGUgdXNlciBtb3ZlcyB0aGUgbW91c2Ugb3V0IGFuZCBpbiB0aGUgY2hpbGRyZW4gZWxlbWVudC5cbiAgICBjb25zdCBkZWJvdW5jZVRpbWVyID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+Pih1bmRlZmluZWQpXG4gICAgY29uc3QgW3Zpc2libGVJbkRvbSwgc2V0VmlzaWJsZUluRG9tXSA9IHVzZVN0YXRlKGZhbHNlKVxuICAgIGNvbnN0IFtyZXZlcnNlQW5pbWF0aW9uLCBzZXRSZXZlcnNlQW5pbWF0aW9uXSA9IHVzZVN0YXRlKGZhbHNlKVxuICAgIGNvbnN0IFtwb3NpdGlvbnMsIHNldFBvc2l0aW9uc10gPSB1c2VTdGF0ZTxQb3NpdGlvbnNUeXBlPih7XG4gICAgICAuLi5ERUZBVUxUX1BPU0lUSU9OUyxcbiAgICB9KVxuICAgIGNvbnN0IHVuaXF1ZUlkID0gdXNlSWQoKVxuICAgIGNvbnN0IGdlbmVyYXRlZElkID0gaWQgPz8gdW5pcXVlSWRcbiAgICBjb25zdCBpc0NvbnRyb2xsZWQgPSB2aXNpYmxlICE9PSB1bmRlZmluZWRcblxuICAgIGNvbnN0IGdlbmVyYXRlUG9wdXBQb3NpdGlvbnMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBpZiAoY2hpbGRyZW5SZWYuY3VycmVudCAmJiBpbm5lclBvcHVwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgc2V0UG9zaXRpb25zKFxuICAgICAgICAgIGNvbXB1dGVQb3NpdGlvbnMoe1xuICAgICAgICAgICAgY2hpbGRyZW5SZWYsXG4gICAgICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgICAgICBwb3B1cFJlZjogaW5uZXJQb3B1cFJlZixcbiAgICAgICAgICAgIHBvcHVwUG9ydGFsVGFyZ2V0OiBwb3B1cFBvcnRhbFRhcmdldCBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgICAgIGhhc0Fycm93LFxuICAgICAgICAgICAgYWxpZ24sXG4gICAgICAgICAgfSksXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9LCBbaGFzQXJyb3csIHBsYWNlbWVudCwgcG9wdXBQb3J0YWxUYXJnZXQsIGFsaWduXSlcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gd2UgbmVlZCB0byByZWNvbXB1dGUgcG9zaXRpb25zIG9mIHBvcHVwIGR1ZSB0byB3aW5kb3cgc2Nyb2xsIG9yIHJlc2l6ZS5cbiAgICAgKi9cbiAgICBjb25zdCBvbldpbmRvd0NoYW5nZURldGVjdGVkID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgLy8gV2UgcmVtb3ZlIGFuaW1hdGlvbiBvbiBzY3JvbGwgb3IgdGhlIGFuaW1hdGlvbiB3aWxsIHJlc3RhcnQgb24gZXZlcnkgc2Nyb2xsXG4gICAgICBpZiAoaW5uZXJQb3B1cFJlZi5jdXJyZW50KSB7XG4gICAgICAgIGlubmVyUG9wdXBSZWYuY3VycmVudC5zdHlsZS5hbmltYXRpb24gPSAnbm9uZSdcbiAgICAgIH1cblxuICAgICAgZ2VuZXJhdGVQb3B1cFBvc2l0aW9ucygpXG4gICAgfSwgW2dlbmVyYXRlUG9wdXBQb3NpdGlvbnMsIGlubmVyUG9wdXBSZWZdKVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB3ZSBuZWVkIHRvIHJlbW92ZSBwb3B1cCBwb3J0YWwgZnJvbSBET00gYW5kIHJlbW92ZSBldmVudCBsaXN0ZW5lciB0byBpdC5cbiAgICAgKi9cbiAgICBjb25zdCB1bm1vdW50UG9wdXBGcm9tRG9tID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgc2V0VmlzaWJsZUluRG9tKGZhbHNlKVxuICAgICAgc2V0UmV2ZXJzZUFuaW1hdGlvbihmYWxzZSlcblxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uV2luZG93Q2hhbmdlRGV0ZWN0ZWQsIHRydWUpXG4gICAgfSwgW29uV2luZG93Q2hhbmdlRGV0ZWN0ZWRdKVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB3ZSBuZWVkIHRvIGhpZGUgcG9wdXAuIEEgdGltZW91dCBpcyBzZXQgdG8gYWxsb3cgYW5pbWF0aW9uIGVuZCwgdGhlbiByZW1vdmVcbiAgICAgKiBwb3B1cCBmcm9tIGRvbS5cbiAgICAgKi9cbiAgICBjb25zdCBjbG9zZVBvcHVwID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgY29uc3QgY2xvc2VGdW5jdGlvbiA9ICgpID0+IHtcbiAgICAgICAgaWYgKCFkaXNhYmxlQW5pbWF0aW9uKSB7XG4gICAgICAgICAgc2V0UmV2ZXJzZUFuaW1hdGlvbih0cnVlKVxuXG4gICAgICAgICAgdGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgb25DbG9zZT8uKClcbiAgICAgICAgICAgIHVubW91bnRQb3B1cEZyb21Eb20oKVxuICAgICAgICAgIH0sIGFuaW1hdGlvbkR1cmF0aW9uKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9uQ2xvc2U/LigpXG4gICAgICAgICAgdW5tb3VudFBvcHVwRnJvbURvbSgpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFkaXNhYmxlQW5pbWF0aW9uKSB7XG4gICAgICAgIGRlYm91bmNlVGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgY2xvc2VGdW5jdGlvbigpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBkZWJvdW5jZURlbGF5ICYmICFkaXNhYmxlQW5pbWF0aW9uID8gZGVib3VuY2VEZWxheSA6IDAsXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNsb3NlRnVuY3Rpb24oKVxuICAgICAgfVxuICAgIH0sIFtcbiAgICAgIGFuaW1hdGlvbkR1cmF0aW9uLFxuICAgICAgZGlzYWJsZUFuaW1hdGlvbixcbiAgICAgIGRlYm91bmNlRGVsYXksXG4gICAgICBvbkNsb3NlLFxuICAgICAgdW5tb3VudFBvcHVwRnJvbURvbSxcbiAgICBdKVxuXG4gICAgLyoqXG4gICAgICogV2hlbiBtb3VzZSBob3ZlciBvciBzdG9wIGhvdmVyaW5nIGNoaWxkcmVuIHRoaXMgZnVuY3Rpb24gZGlzcGxheSBvciBoaWRlIHBvcHVwLiBBIHRpbWVvdXQgaXMgc2V0IHRvIGFsbG93IGFuaW1hdGlvblxuICAgICAqIGVuZCwgdGhlbiByZW1vdmUgcG9wdXAgZnJvbSBkb20uXG4gICAgICovXG4gICAgY29uc3Qgb25Qb2ludGVyRXZlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAgIChpc1Zpc2libGU6IGJvb2xlYW4pID0+ICgpID0+IHtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBkZWJvdW5jZURlbGF5IGFuZCB0aGUgcG9wdXAgaXMgbm90IHZpc2libGUsIHdlIGNsZWFyIHRoZSBkZWJvdW5jZSB0aW1lclxuICAgICAgICBpZiAoIXZpc2libGUgJiYgZGVib3VuY2VEZWxheSA+IDAgJiYgZGVib3VuY2VUaW1lci5jdXJyZW50KSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KGRlYm91bmNlVGltZXIuY3VycmVudClcbiAgICAgICAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSB1bmRlZmluZWRcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoaXMgY29uZGl0aW9uIGlzIGZvciB3aGVuIHdlIHdhbnQgdG8gdW5tb3VudCB0aGUgcG9wdXBcbiAgICAgICAgLy8gVGhlcmUgaXMgZGVib3VuY2UgaW4gb3JkZXIgdG8gYXZvaWQgcG9wdXAgdG8gZmxpY2tlciB3aGVuIHdlIG1vdmUgdGhlIG1vdXNlIGZyb20gY2hpbGRyZW4gdG8gcG9wdXBcbiAgICAgICAgLy8gVGltZXIgaXMgdXNlZCB0byBmb2xsb3cgdGhlIGFuaW1hdGlvbiBkdXJhdGlvblxuICAgICAgICBpZiAoIWlzVmlzaWJsZSAmJiBpbm5lclBvcHVwUmVmLmN1cnJlbnQgJiYgIWRlYm91bmNlVGltZXIuY3VycmVudCkge1xuICAgICAgICAgIGNsb3NlUG9wdXAoKVxuICAgICAgICB9IGVsc2UgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgICAgIC8vIFRoaXMgY29uZGl0aW9uIGlzIGZvciB3aGVuIHdlIHdhbnQgdG8gbW91bnQgdGhlIHBvcHVwXG4gICAgICAgICAgLy8gSWYgdGhlIHRpbWVyIGV4aXN0cyBpdCBtZWFucyB0aGUgcG9wdXAgd2FzIGFib3V0IHRvIHVtb3VudCwgYnV0IHdlIGhvdmVyZWQgdGhlIGNoaWxkcmVuIGFnYWluLFxuICAgICAgICAgIC8vIHNvIHdlIGNsZWFyIHRoZSB0aW1lciBhbmQgdGhlIHBvcHVwIHdpbGwgbm90IGJlIHVubW91bnRlZFxuICAgICAgICAgIGlmICh0aW1lci5jdXJyZW50KSB7XG4gICAgICAgICAgICBzZXRSZXZlcnNlQW5pbWF0aW9uKGZhbHNlKVxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyLmN1cnJlbnQpXG4gICAgICAgICAgICB0aW1lci5jdXJyZW50ID0gdW5kZWZpbmVkXG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIEFuZCBoZXJlIGlzIHdoZW4gd2UgY3VycmVudGx5IGFyZSBpbiBhIGRlYm91bmNlIHRpbWVyLCBpdCBtZWFucyBwb3B1cCB3YXMgaG92ZXJlZCBkdXJpbmdcbiAgICAgICAgICAvLyB0aGF0IHBlcmlvZCwgYW5kIHNvIHdlIGNhbiBjbGVhciBkZWJvdW5jZSB0aW1lclxuICAgICAgICAgIGlmIChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSB1bmRlZmluZWRcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGRlYm91bmNlRGVsYXkgPiAwKSB7XG4gICAgICAgICAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgc2V0VmlzaWJsZUluRG9tKHRydWUpXG4gICAgICAgICAgICB9LCBkZWJvdW5jZURlbGF5KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdGFydFRyYW5zaXRpb24oKCkgPT4ge1xuICAgICAgICAgICAgICBzZXRWaXNpYmxlSW5Eb20odHJ1ZSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgW2Nsb3NlUG9wdXAsIGRlYm91bmNlRGVsYXksIHZpc2libGVdLFxuICAgIClcblxuICAgIC8qKlxuICAgICAqIE9uY2UgcG9wdXAgaXMgdmlzaWJsZSBpbiB0aGUgZG9tIHdlIGNhbiBjb21wdXRlIHBvc2l0aW9ucywgdGhlbiBzZXQgaXQgdmlzaWJsZSBvbiBzY3JlZW4gYW5kIGFkZCBldmVudCB0b1xuICAgICAqIHJlY29tcHV0ZSBwb3NpdGlvbnMgb24gc2Nyb2xsIG9yIHNjcmVlbiByZXNpemUuXG4gICAgICovXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICh2aXNpYmxlSW5Eb20pIHtcbiAgICAgICAgZ2VuZXJhdGVQb3B1cFBvc2l0aW9ucygpXG5cbiAgICAgICAgaWYgKHBvcHVwUG9ydGFsVGFyZ2V0ID09PSBkb2N1bWVudC5ib2R5KSB7XG4gICAgICAgICAgLy8gV2Ugd2FudCB0byBkZXRlY3Qgc2Nyb2xsIGFuZCByZXNpemUgaW4gb3JkZXIgdG8gcmVjb21wdXRlIHBvc2l0aW9ucyBvZiBwb3B1cFxuICAgICAgICAgIC8vIEFkZGluZyB0cnVlIGFzIHRoaXJkIHBhcmFtZXRlciB0byBldmVudCBsaXN0ZW5lciB3aWxsIGRldGVjdCBuZXN0ZWQgc2Nyb2xscy5cbiAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25XaW5kb3dDaGFuZ2VEZXRlY3RlZCwgdHJ1ZSlcbiAgICAgICAgfVxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgb25XaW5kb3dDaGFuZ2VEZXRlY3RlZCwgdHJ1ZSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uV2luZG93Q2hhbmdlRGV0ZWN0ZWQsIHRydWUpXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBvbldpbmRvd0NoYW5nZURldGVjdGVkLCB0cnVlKVxuICAgICAgICBpZiAodGltZXIuY3VycmVudCkge1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lci5jdXJyZW50KVxuICAgICAgICAgIHRpbWVyLmN1cnJlbnQgPSB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIFtcbiAgICAgIGdlbmVyYXRlUG9wdXBQb3NpdGlvbnMsXG4gICAgICBvbldpbmRvd0NoYW5nZURldGVjdGVkLFxuICAgICAgdmlzaWJsZUluRG9tLFxuICAgICAgbWF4V2lkdGgsXG4gICAgICBwb3B1cFBvcnRhbFRhcmdldCxcbiAgICBdKVxuXG4gICAgLy8gVGhpcyB3aWxsIGJlIHRyaWdnZXJlZCB3aGVuIHBvc2l0aW9ucyBhcmUgY29tcHV0ZWQgYW5kIHBvcHVwIGlzIHZpc2libGUgaW4gdGhlIGRvbS5cbiAgICB1c2VFZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGlmICh2aXNpYmxlSW5Eb20gJiYgaW5uZXJQb3B1cFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgaW5uZXJQb3B1cFJlZi5jdXJyZW50LnN0eWxlLm9wYWNpdHkgPSAnMSdcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgICAgIFtwb3NpdGlvbnNdLFxuICAgIClcblxuICAgIC8qKlxuICAgICAqIElmIHBvcHVwIGhhcyBgdmlzaWJsZWAgcHJvcCBpdCBtZWFucyB0aGUgcG9wdXAgaXMgbWFudWFsbHkgY29udHJvbGxlZCB0aHJvdWdoIHRoaXMgcHJvcC5cbiAgICAgKiBJbiB0aGlzIGNhcyB3ZSBkb24ndCB3YW50IHRvIGRpc3BsYXkgcG9wdXAgb24gaG92ZXIsIGJ1dCBvbmx5IHdoZW4gYHZpc2libGVgIGlzIHRydWUuXG4gICAgICovXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChpc0NvbnRyb2xsZWQpIHtcbiAgICAgICAgb25Qb2ludGVyRXZlbnQodmlzaWJsZSkoKVxuICAgICAgfVxuICAgIH0sIFtpc0NvbnRyb2xsZWQsIG9uUG9pbnRlckV2ZW50LCB2aXNpYmxlXSlcblxuICAgIC8vIEhhbmRsZSBoaWRlIG9uIGVzYyBwcmVzcyBhbmQgaGlkZSBvbiBjbGljayBvdXRzaWRlXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGhhbmRsZUVzY1ByZXNzID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgY2xvc2VQb3B1cCgpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHBvcHVwQ3VycmVudCA9IGlubmVyUG9wdXBSZWYuY3VycmVudFxuICAgICAgICBjb25zdCBjaGlsZHJlbkN1cnJlbnQgPSBjaGlsZHJlblJlZi5jdXJyZW50XG5cbiAgICAgICAgaWYgKHBvcHVwQ3VycmVudCAmJiBoaWRlT25DbGlja091dHNpZGUgJiYgIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBldmVudC50YXJnZXQgJiZcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldCAhPT0gcG9wdXBDdXJyZW50ICYmXG4gICAgICAgICAgICBldmVudC50YXJnZXQgIT09IGNoaWxkcmVuQ3VycmVudCAmJlxuICAgICAgICAgICAgIWNoaWxkcmVuQ3VycmVudD8uY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpICYmXG4gICAgICAgICAgICAhcG9wdXBDdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgIGNsb3NlUG9wdXAoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHZpc2libGVJbkRvbSkge1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgaGFuZGxlRXNjUHJlc3MpXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVDbGlja091dHNpZGUpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5dXAnLCBoYW5kbGVFc2NQcmVzcylcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICAgIH1cbiAgICB9LCBbXG4gICAgICBjbG9zZVBvcHVwLFxuICAgICAgdmlzaWJsZUluRG9tLFxuICAgICAgaW5uZXJQb3B1cFJlZixcbiAgICAgIGNoaWxkcmVuUmVmLFxuICAgICAgaGlkZU9uQ2xpY2tPdXRzaWRlLFxuICAgIF0pXG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGV2ZW50IHdpbGwgb2NjdXIgb25seSBmb3IgZGlhbG9nIGFuZCB3aWxsIHRyYXAgZm9jdXMgaW5zaWRlIHRoZSBkaWFsb2cuXG4gICAgICovXG4gICAgY29uc3QgaGFuZGxlRm9jdXNUcmFwOiBLZXlib2FyZEV2ZW50SGFuZGxlciA9IHVzZUNhbGxiYWNrKGV2ZW50ID0+IHtcbiAgICAgIGNvbnN0IGlzVGFiUHJlc3NlZCA9IGV2ZW50LmtleSA9PT0gJ1RhYidcbiAgICAgIGlmICghaXNUYWJQcmVzc2VkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcblxuICAgICAgY29uc3QgZm9jdXNhYmxlRWxzID1cbiAgICAgICAgaW5uZXJQb3B1cFJlZi5jdXJyZW50Py5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgICAgICdhW2hyZWZdOm5vdChbZGlzYWJsZWRdKSwgYnV0dG9uOm5vdChbZGlzYWJsZWRdKSwgdGV4dGFyZWE6bm90KFtkaXNhYmxlZF0pLCBpbnB1dDpub3QoW2Rpc2FibGVkXSksIHNlbGVjdDpub3QoW2Rpc2FibGVkXSknLFxuICAgICAgICApID8/IFtdXG5cbiAgICAgIC8vIEhhbmRsZSBjYXNlIHdoZW4gbm8gaW50ZXJhY3RpdmUgZWxlbWVudCBhcmUgd2l0aGluIHRoZSBtb2RhbCAoaW5jbHVkaW5nIGNsb3NlIGljb24pXG4gICAgICBpZiAoZm9jdXNhYmxlRWxzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZpcnN0Rm9jdXNhYmxlRWwgPSBmb2N1c2FibGVFbHNbMF0gYXMgSFRNTEVsZW1lbnRcbiAgICAgIGNvbnN0IGxhc3RGb2N1c2FibGVFbCA9IGZvY3VzYWJsZUVsc1tcbiAgICAgICAgZm9jdXNhYmxlRWxzLmxlbmd0aCAtIDFcbiAgICAgIF0gYXMgSFRNTEVsZW1lbnRcblxuICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBmaXJzdEZvY3VzYWJsZUVsIHx8XG4gICAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gaW5uZXJQb3B1cFJlZi5jdXJyZW50XG4gICAgICAgICkge1xuICAgICAgICAgIGxhc3RGb2N1c2FibGVFbC5mb2N1cygpXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBsYXN0Rm9jdXNhYmxlRWwgfHxcbiAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gaW5uZXJQb3B1cFJlZi5jdXJyZW50XG4gICAgICApIHtcbiAgICAgICAgZmlyc3RGb2N1c2FibGVFbC5mb2N1cygpXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIH1cbiAgICB9LCBbXSlcblxuICAgIC8qKlxuICAgICAqIFdpbGwgcmVuZGVyIGNoaWxkcmVuIGNvbmRpdGlvbmFsbHkgaWYgY2hpbGRyZW4gaXMgYSBmdW5jdGlvbiBvciBub3QuXG4gICAgICovXG4gICAgY29uc3QgcmVuZGVyQ2hpbGRyZW4gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBjaGlsZHJlbih7XG4gICAgICAgICAgb25CbHVyOiAhaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQoZmFsc2UpIDogbm9vcCxcbiAgICAgICAgICBvbkZvY3VzOiAhaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQodHJ1ZSkgOiBub29wLFxuICAgICAgICAgIG9uUG9pbnRlckVudGVyOiAhaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQodHJ1ZSkgOiBub29wLFxuICAgICAgICAgIG9uUG9pbnRlckxlYXZlOiAhaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQoZmFsc2UpIDogbm9vcCxcbiAgICAgICAgICByZWY6IGNoaWxkcmVuUmVmLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U3R5bGVkQ2hpbGRyZW5Db250YWluZXJcbiAgICAgICAgICBhcmlhLWRlc2NyaWJlZGJ5PXtnZW5lcmF0ZWRJZH1cbiAgICAgICAgICBhcmlhLWNvbnRyb2xzPXtnZW5lcmF0ZWRJZH1cbiAgICAgICAgICBvbkJsdXI9eyFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudChmYWxzZSkgOiBub29wfVxuICAgICAgICAgIG9uRm9jdXM9eyFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudCh0cnVlKSA6IG5vb3B9XG4gICAgICAgICAgb25Qb2ludGVyRW50ZXI9eyFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudCh0cnVlKSA6IG5vb3B9XG4gICAgICAgICAgb25Qb2ludGVyTGVhdmU9eyFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudChmYWxzZSkgOiBub29wfVxuICAgICAgICAgIHJlZj17Y2hpbGRyZW5SZWZ9XG4gICAgICAgICAgdGFiSW5kZXg9e3RhYkluZGV4fVxuICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgb25LZXlEb3duPy4oZXZlbnQpXG4gICAgICAgICAgfX1cbiAgICAgICAgICBkYXRhLWNvbnRhaW5lci1mdWxsLXdpZHRoPXtjb250YWluZXJGdWxsV2lkdGh9XG4gICAgICAgICAgYXJpYS1oYXNwb3B1cD17YXJpYUhhc1BvcHVwfVxuICAgICAgICA+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L1N0eWxlZENoaWxkcmVuQ29udGFpbmVyPlxuICAgICAgKVxuICAgIH0sIFtcbiAgICAgIGFyaWFIYXNQb3B1cCxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgY29udGFpbmVyRnVsbFdpZHRoLFxuICAgICAgZ2VuZXJhdGVkSWQsXG4gICAgICBpc0NvbnRyb2xsZWQsXG4gICAgICBvbktleURvd24sXG4gICAgICBvblBvaW50ZXJFdmVudCxcbiAgICAgIHRhYkluZGV4LFxuICAgIF0pXG5cbiAgICBjb25zdCBzaG91bGRSZW5kZXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGlmICghZHluYW1pY0RvbVJlbmRlcmluZykge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZHluYW1pY0RvbVJlbmRlcmluZyAmJiB2aXNpYmxlSW5Eb20pIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSwgW2R5bmFtaWNEb21SZW5kZXJpbmcsIHZpc2libGVJbkRvbV0pXG5cbiAgICBpZiAoIXRleHQpIHtcbiAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNoaWxkcmVuXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIHtyZW5kZXJDaGlsZHJlbigpfVxuICAgICAgICB7c2hvdWxkUmVuZGVyXG4gICAgICAgICAgPyBjcmVhdGVQb3J0YWwoXG4gICAgICAgICAgICAgIDxTdHlsZWRQb3B1cFxuICAgICAgICAgICAgICAgIHJlZj17aW5uZXJQb3B1cFJlZn1cbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM9e3Bvc2l0aW9uc31cbiAgICAgICAgICAgICAgICBtYXhXaWR0aD17bWF4V2lkdGh9XG4gICAgICAgICAgICAgICAgbWF4SGVpZ2h0PXttYXhIZWlnaHR9XG4gICAgICAgICAgICAgICAgcm9sZT17cm9sZX1cbiAgICAgICAgICAgICAgICBpZD17Z2VuZXJhdGVkSWR9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICAgICAgICAgICAgcmV2ZXJzZUFuaW1hdGlvbj17cmV2ZXJzZUFuaW1hdGlvbn1cbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZH1cbiAgICAgICAgICAgICAgICBkYXRhLWhhcy1hcnJvdz17aGFzQXJyb3d9XG4gICAgICAgICAgICAgICAgb25DbGljaz17c3RvcENsaWNrUHJvcGFnYXRpb259XG4gICAgICAgICAgICAgICAgb25Qb2ludGVyRW50ZXI9eyFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudCh0cnVlKSA6IG5vb3B9XG4gICAgICAgICAgICAgICAgb25Qb2ludGVyTGVhdmU9eyFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudChmYWxzZSkgOiBub29wfVxuICAgICAgICAgICAgICAgIGFuaW1hdGlvbkR1cmF0aW9uPXthbmltYXRpb25EdXJhdGlvbn1cbiAgICAgICAgICAgICAgICBvbktleURvd249e3JvbGUgPT09ICdkaWFsb2cnID8gaGFuZGxlRm9jdXNUcmFwIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgIGlzRGlhbG9nPXtyb2xlID09PSAnZGlhbG9nJ31cbiAgICAgICAgICAgICAgICBkYXRhLXZpc2libGUtaW4tZG9tPXtcbiAgICAgICAgICAgICAgICAgICFkeW5hbWljRG9tUmVuZGVyaW5nID8gdmlzaWJsZUluRG9tIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRhdGEtYW5pbWF0ZWQ9e2FuaW1hdGlvbkR1cmF0aW9uID4gMCAmJiAhbWF4SGVpZ2h0fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3RleHR9XG4gICAgICAgICAgICAgIDwvU3R5bGVkUG9wdXA+LFxuICAgICAgICAgICAgICBwb3B1cFBvcnRhbFRhcmdldCBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IG51bGx9XG4gICAgICA8Lz5cbiAgICApXG4gIH0sXG4pXG4iXX0= */',
72
73
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
73
74
  });
74
75
  const Popup = React.forwardRef(({