@kando-env/kando-ui 1.2.297 → 1.2.298

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 (611) hide show
  1. package/lib/Router.js +36 -75
  2. package/lib/Widgets/EventsCarousel/EventsCarousel.js +24 -35
  3. package/lib/Widgets/EventsRow/EventsRow.js +26 -39
  4. package/lib/Widgets/Map/GraphUtils.js +4 -6
  5. package/lib/Widgets/Map/Map.js +65 -81
  6. package/lib/Widgets/Map/MapUtils.js +41 -41
  7. package/lib/Widgets/Map/areas/AreaPolygon.js +52 -93
  8. package/lib/Widgets/Map/areas/AreaPolygons.js +25 -31
  9. package/lib/Widgets/Map/areas/AreaUtils.js +45 -45
  10. package/lib/Widgets/Map/edges/Edge.js +24 -33
  11. package/lib/Widgets/Map/edges/Edges.js +20 -26
  12. package/lib/Widgets/Map/edges/arrows/Arrows.js +24 -45
  13. package/lib/Widgets/Map/events/Event.js +17 -18
  14. package/lib/Widgets/Map/events/EventIndicator.js +58 -55
  15. package/lib/Widgets/Map/events/EventPath.js +25 -25
  16. package/lib/Widgets/Map/events/EventUtils.js +56 -80
  17. package/lib/Widgets/Map/events/NetworkForSpecificEvent.js +16 -16
  18. package/lib/Widgets/Map/events/PointOfEvent.js +26 -31
  19. package/lib/Widgets/Map/events/PointsForSpecificEvent.js +28 -36
  20. package/lib/Widgets/Map/events/Snail.js +19 -21
  21. package/lib/Widgets/Map/graphDNDArea/GraphDNDArea.js +94 -90
  22. package/lib/Widgets/Map/map/FloatingGraph.js +24 -21
  23. package/lib/Widgets/Map/map/GraphDateButton.js +27 -20
  24. package/lib/Widgets/Map/matchGraph/MatchGraph.js +14 -14
  25. package/lib/Widgets/Map/matchGraph/createFloatingGraph.js +17 -16
  26. package/lib/Widgets/Map/points/PointIcon.js +17 -16
  27. package/lib/Widgets/Map/points/PointMarker.js +67 -97
  28. package/lib/Widgets/Map/points/PointMarkers.js +45 -67
  29. package/lib/Widgets/Map/points/PointUtils.js +55 -65
  30. package/lib/Widgets/MostPolluting/Areas/AreaBox/AreaBox.js +27 -45
  31. package/lib/Widgets/MostPolluting/Areas/AreaBox/Map/Map.js +14 -18
  32. package/lib/Widgets/MostPolluting/Areas/AreaBox/PieChart/PieChart.js +10 -12
  33. package/lib/Widgets/MostPolluting/Areas/AreaBox/styles.js +4 -6
  34. package/lib/Widgets/MostPolluting/Areas/Areas.js +28 -58
  35. package/lib/Widgets/MostPolluting/Areas/areas.mock.js +3 -4
  36. package/lib/Widgets/MostPolluting/Areas/styles.js +4 -6
  37. package/lib/Widgets/MostPolluting/EmptyState/EmptyState.js +12 -9
  38. package/lib/Widgets/MostPolluting/Factories/Factories.js +33 -65
  39. package/lib/Widgets/MostPolluting/Factories/FactoryBox/FactoryBox.js +15 -18
  40. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PieChart/PieChart.js +8 -8
  41. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PollutionScore.js +13 -11
  42. package/lib/Widgets/MostPolluting/Factories/FactoryBox/styles.js +4 -6
  43. package/lib/Widgets/MostPolluting/Factories/factories.mock.js +2 -3
  44. package/lib/Widgets/MostPolluting/Factories/styles.js +4 -6
  45. package/lib/Widgets/MostPolluting/MostPolluting.js +18 -24
  46. package/lib/Widgets/MostPolluting/MostPolluting.stories.js +20 -32
  47. package/lib/Widgets/MostPolluting/ShowMore/ShowMore.js +7 -5
  48. package/lib/Widgets/MostPolluting/ShowMore/styles.js +7 -6
  49. package/lib/Widgets/MostPolluting/assets/index.js +11 -11
  50. package/lib/Widgets/MostPolluting/components/ChangePercent.js +20 -14
  51. package/lib/Widgets/MostPolluting/components/ChangePercent.test.js +36 -31
  52. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.js +44 -34
  53. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.test.js +40 -36
  54. package/lib/Widgets/MostPolluting/components/PotentialImpact.js +28 -27
  55. package/lib/Widgets/MostPolluting/components/PotentialImpact.test.js +53 -49
  56. package/lib/Widgets/MostPolluting/styles.js +4 -6
  57. package/lib/Widgets/PotentialImpactSummary/Back/Back.js +8 -6
  58. package/lib/Widgets/PotentialImpactSummary/Icon.js +8 -6
  59. package/lib/Widgets/PotentialImpactSummary/index.js +20 -28
  60. package/lib/Widgets/PotentialImpactSummary/index.test.js +48 -54
  61. package/lib/Widgets/PotentialImpactSummary/styles.js +8 -13
  62. package/lib/Widgets/QualitySummary/PieChart/LegendMenu/LegendMenu.js +10 -8
  63. package/lib/Widgets/QualitySummary/PieChart/PieChart.js +23 -18
  64. package/lib/Widgets/QualitySummary/PieChart/PieChart.test.js +36 -33
  65. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.js +27 -25
  66. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.test.js +35 -38
  67. package/lib/Widgets/QualitySummary/QualitySummary.js +10 -14
  68. package/lib/Widgets/QualitySummary/qualitySummary.mock.js +4 -7
  69. package/lib/Widgets/QualitySummary/styles.js +20 -19
  70. package/lib/Widgets/UtilityInformation/MapModal/MapModal.js +12 -14
  71. package/lib/Widgets/UtilityInformation/PopupWithMap/Map/Map.js +25 -25
  72. package/lib/Widgets/UtilityInformation/PopupWithMap/PopupWithMap.js +30 -26
  73. package/lib/Widgets/UtilityInformation/UtilityInformation.js +25 -43
  74. package/lib/Widgets/UtilityInformation/styles.js +31 -29
  75. package/lib/Widgets/UtilityInformation/utilityInformation.mock.js +3 -5
  76. package/lib/assets/icons/TopNavbar/index.js +6 -6
  77. package/lib/assets/icons/TrendSvg.js +7 -7
  78. package/lib/assets/icons/index.js +14 -14
  79. package/lib/assets/icons/kandoStepper/index.js +5 -5
  80. package/lib/assets/icons/siteTypes/index.js +1 -1
  81. package/lib/components/ApplyButton/ApplyButton.js +10 -11
  82. package/lib/components/ApplyButton/index.js +3 -4
  83. package/lib/components/Backdrop/Backdrop.js +7 -5
  84. package/lib/components/ContentLoader/ContentLoader.js +12 -10
  85. package/lib/components/ContentLoader/index.js +1 -1
  86. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.js +12 -12
  87. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.stories.js +5 -9
  88. package/lib/components/CustomInputs/DoubleTabs/styles.js +21 -16
  89. package/lib/components/CustomInputs/PasswordInput/PasswordInput.js +12 -20
  90. package/lib/components/CustomInputs/PrimaryButton/PrimaryButton.js +7 -6
  91. package/lib/components/CustomInputs/Search/Search.js +40 -63
  92. package/lib/components/CustomInputs/Search/index.js +3 -4
  93. package/lib/components/CustomInputs/Select/Select.js +42 -56
  94. package/lib/components/CustomInputs/Select/Select.stories.js +6 -10
  95. package/lib/components/DamageType/DamageType.js +35 -60
  96. package/lib/components/DamageType/index.js +3 -4
  97. package/lib/components/DataLoaderError/DataLoaderError.js +9 -7
  98. package/lib/components/DischargeHeatmap/DischargeHeatmap.js +11 -13
  99. package/lib/components/DischargeHeatmap/DischargeHeatmap.test.js +71 -72
  100. package/lib/components/DischargeHeatmap/DischargeHeatmapContainer.js +28 -40
  101. package/lib/components/DischargeHeatmap/HighchartsOptions.js +12 -16
  102. package/lib/components/DischargeHeatmap/index.js +3 -4
  103. package/lib/components/DischargeHeatmap/mocks/handlers.js +3 -4
  104. package/lib/components/DischargeHeatmap/popupText.js +11 -12
  105. package/lib/components/DischargeHeatmap/titles.js +4 -6
  106. package/lib/components/ErrorBoundary.js +27 -42
  107. package/lib/components/Events/Events.js +29 -48
  108. package/lib/components/Events/index.js +3 -4
  109. package/lib/components/Graph/Graph.js +70 -91
  110. package/lib/components/Graph/index.js +3 -4
  111. package/lib/components/Header/Breadcrumbs/Breadcrumbs.js +19 -24
  112. package/lib/components/Header/Breadcrumbs/index.js +3 -4
  113. package/lib/components/Header/DoubleTabs/DoubleTabs.js +18 -28
  114. package/lib/components/Header/DoubleTabs/DoubleTabs.stories.js +5 -9
  115. package/lib/components/Header/DoubleTabs/styles.js +5 -8
  116. package/lib/components/Header/Header.js +3 -3
  117. package/lib/components/Header/Header.stories.js +5 -9
  118. package/lib/components/Header/InfoBar/Breadcrumbs/Breadcrumbs.js +24 -24
  119. package/lib/components/Header/InfoBar/InfoBar.js +42 -35
  120. package/lib/components/Header/InfoBar/Search/Control.js +11 -12
  121. package/lib/components/Header/InfoBar/Search/GroupLabel.js +8 -7
  122. package/lib/components/Header/InfoBar/Search/Search.js +15 -22
  123. package/lib/components/Header/InfoBar/Search/SearchContainer.js +16 -30
  124. package/lib/components/Header/InfoBar/Search/index.js +3 -4
  125. package/lib/components/Header/InfoBar/Search/searchStyle.js +42 -51
  126. package/lib/components/Header/InfoBar/TimeFilter.js +13 -17
  127. package/lib/components/Header/KandoNavbar/KandoNavbar.js +63 -90
  128. package/lib/components/Header/KandoNavbar/index.js +3 -4
  129. package/lib/components/Header/Slideshow/Slideshow.js +67 -91
  130. package/lib/components/Header/Slideshow/index.js +3 -4
  131. package/lib/components/Header/Toolbar/ClientImg/ClientImg.js +7 -5
  132. package/lib/components/Header/Toolbar/CustomerMenu/CustomerMenu.js +22 -24
  133. package/lib/components/Header/Toolbar/MenuCreator/MenuCreator.js +14 -14
  134. package/lib/components/Header/Toolbar/SearchDropdown/SearchDropdown.js +27 -33
  135. package/lib/components/Header/Toolbar/Toolbar.js +56 -76
  136. package/lib/components/InfoBar/InfoBar.js +10 -24
  137. package/lib/components/InfoBar/InfoBar.stories.js +5 -9
  138. package/lib/components/KandoModal/KandoModal.js +24 -40
  139. package/lib/components/KandoModal/index.js +3 -4
  140. package/lib/components/Link.js +9 -8
  141. package/lib/components/Links/CustomRedirect/CustomRedirect.js +10 -9
  142. package/lib/components/Links/StyledLink/StyledLink.js +13 -14
  143. package/lib/components/Links/StyledNavLink/StyledNavLink.js +12 -12
  144. package/lib/components/LiveEvents/CarouselSlide.js +11 -10
  145. package/lib/components/LiveEvents/LiveEvents.js +7 -6
  146. package/lib/components/LiveEvents/index.js +3 -4
  147. package/lib/components/LoaderByPercent/LoaderByPercent.js +37 -30
  148. package/lib/components/Map/Map.js +20 -25
  149. package/lib/components/Map/index.js +3 -4
  150. package/lib/components/Modal/Modal.js +10 -10
  151. package/lib/components/NarrowHeader.js +18 -32
  152. package/lib/components/PointInfo/PointInfo.js +20 -19
  153. package/lib/components/PointInfo/index.js +3 -4
  154. package/lib/components/PopupModal/PopupModal.js +13 -17
  155. package/lib/components/PopupModal/PopupModal.stories.js +17 -24
  156. package/lib/components/Sector/Sector.js +10 -9
  157. package/lib/components/Sector/Sector.test.js +20 -21
  158. package/lib/components/Sector/index.js +3 -4
  159. package/lib/components/Sector/sectorIcons.js +4 -5
  160. package/lib/components/SevereEvent/Eta/Eta.js +49 -54
  161. package/lib/components/SevereEvent/Eta/styles.js +11 -8
  162. package/lib/components/SevereEvent/SevereEvent.js +27 -35
  163. package/lib/components/Spinner/Spinner.js +8 -8
  164. package/lib/components/Spinner/Spinner.stories.js +6 -11
  165. package/lib/components/Spinner/index.js +3 -4
  166. package/lib/components/Spinner/styles.js +21 -16
  167. package/lib/components/Tabs/Tabs.js +18 -29
  168. package/lib/components/Tabs/Tabs.stories.js +6 -10
  169. package/lib/components/Tabs/assets/index.js +5 -5
  170. package/lib/components/TimeRangeSelector/KandoRangePicker/ComparisonSelect.js +13 -18
  171. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePicker.js +35 -48
  172. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePickerContainer.js +20 -34
  173. package/lib/components/TimeRangeSelector/KandoRangePicker/index.js +3 -4
  174. package/lib/components/TimeRangeSelector/TimeRangeHelper.js +17 -22
  175. package/lib/components/TimeRangeSelector/TimeRangeItem/TimeRangeItem.js +13 -14
  176. package/lib/components/TimeRangeSelector/TimeRangeItem/index.js +3 -4
  177. package/lib/components/TimeRangeSelector/TimeRangeList.js +24 -27
  178. package/lib/components/TimeRangeSelector/TimeRangeOptions.js +17 -27
  179. package/lib/components/TimeRangeSelector/TimeRangeSelector.js +29 -32
  180. package/lib/components/TimeRangeSelector/TimeRangeSelector.stories.js +6 -10
  181. package/lib/components/TimeRangeSelector/constants.js +3 -5
  182. package/lib/components/TimeRangeSelector/index.js +3 -4
  183. package/lib/components/Toggle/Toggle.js +11 -18
  184. package/lib/components/Toggle/index.js +3 -4
  185. package/lib/components/TrendGraph/TrendGraph.js +24 -42
  186. package/lib/components/TrendGraph/index.js +3 -4
  187. package/lib/components/TrendGraphNVL/TrendGraphNVL.js +26 -33
  188. package/lib/components/TrendGraphNVL/index.js +3 -4
  189. package/lib/development-environment/index.js +9 -13
  190. package/lib/development-environment/mock/browser.js +2 -5
  191. package/lib/development-environment/mock/get.js +8 -10
  192. package/lib/development-environment/mock/handlers.js +2 -3
  193. package/lib/development-environment/mock/mockBus.js +4 -5
  194. package/lib/development-environment/mock/mockObjects/area-trends-graph.js +2 -3
  195. package/lib/development-environment/mock/mockObjects/areaInformation.js +2 -3
  196. package/lib/development-environment/mock/mockObjects/areaQualitySummary.js +2 -3
  197. package/lib/development-environment/mock/mockObjects/areaSitesData.js +2 -3
  198. package/lib/development-environment/mock/mockObjects/areasJson.js +2 -3
  199. package/lib/development-environment/mock/mockObjects/controlRoomNetworkEdges.js +2 -3
  200. package/lib/development-environment/mock/mockObjects/covidView-areasData-24.js +2 -3
  201. package/lib/development-environment/mock/mockObjects/data-menuData.js +2 -3
  202. package/lib/development-environment/mock/mockObjects/data-search.js +2 -3
  203. package/lib/development-environment/mock/mockObjects/discharge_effluent_quality.js +2 -3
  204. package/lib/development-environment/mock/mockObjects/discharge_pattern_overtime.js +2 -3
  205. package/lib/development-environment/mock/mockObjects/eventFiltersJson.js +2 -3
  206. package/lib/development-environment/mock/mockObjects/eventsJson.js +2 -3
  207. package/lib/development-environment/mock/mockObjects/metascore.js +2 -3
  208. package/lib/development-environment/mock/mockObjects/permissionsJson.js +2 -3
  209. package/lib/development-environment/mock/mockObjects/pointsJson.js +2 -3
  210. package/lib/development-environment/mock/mockObjects/site-info.js +2 -3
  211. package/lib/development-environment/mock/mockObjects/trend-graph-component-data-907.js +2 -3
  212. package/lib/development-environment/togly/ToglyDashboard.js +13 -23
  213. package/lib/development-environment/togly/ToglyItem.js +25 -29
  214. package/lib/development-environment/togly/init.js +3 -3
  215. package/lib/development-environment/togly/macro.js +13 -9
  216. package/lib/development-environment/togly/useDoubleKeyDown.js +7 -9
  217. package/lib/development-environment/togly/useLocalStorage.js +13 -18
  218. package/lib/hooks/useApi.js +20 -56
  219. package/lib/hooks/useApiWithDashboardQuery.js +29 -48
  220. package/lib/hooks/useClickOutside.js +4 -5
  221. package/lib/hooks/useInitializeHeaders.js +6 -6
  222. package/lib/hooks/useKandoFetch.js +17 -31
  223. package/lib/hooks/useMap.js +25 -37
  224. package/lib/hooks/useNavContext.js +22 -26
  225. package/lib/hooks/useQueryURL.js +2 -3
  226. package/lib/hooks/useRemoveExistingLayers.js +7 -8
  227. package/lib/hooks/useUpdateEventBodyTail.js +14 -19
  228. package/lib/hooks/useUserTimeZone.js +32 -29
  229. package/lib/hooks/useUserTimeZone.test.js +19 -23
  230. package/lib/hooks/useWindowSize.js +7 -14
  231. package/lib/index.js +11 -13
  232. package/lib/macros/getVersion.js +2 -2
  233. package/lib/pages/AreaPage/AreaPage.js +28 -64
  234. package/lib/pages/AreaPage/Dashboard/AreaMapContainer/AreaMapContainer.js +14 -16
  235. package/lib/pages/AreaPage/Dashboard/Dashboard.js +16 -19
  236. package/lib/pages/AreaPage/Dashboard/LineChart/LineChart.js +16 -28
  237. package/lib/pages/AreaPage/Dashboard/LineChart/options/options.js +7 -7
  238. package/lib/pages/AreaPage/Dashboard/Sites/Sites.js +34 -68
  239. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/PieChart/PieChart.js +8 -8
  240. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/SiteBox.js +10 -10
  241. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/styles.js +4 -6
  242. package/lib/pages/AreaPage/Dashboard/Sites/factories.mock.js +2 -3
  243. package/lib/pages/AreaPage/Dashboard/Sites/styles.js +5 -8
  244. package/lib/pages/AssessmentPage/AssessmentPage.js +38 -46
  245. package/lib/pages/CannyWidget/Feedback.js +14 -16
  246. package/lib/pages/CovidPage/CovidPage.js +9 -16
  247. package/lib/pages/CovidPage/components/Body.js +26 -30
  248. package/lib/pages/CovidPage/components/Map.js +28 -40
  249. package/lib/pages/CovidPage/components/Sidebar.js +15 -16
  250. package/lib/pages/CovidPage/components/Summary.js +20 -29
  251. package/lib/pages/CovidPage/components/TrendGraphNVL/TrendGraphNVL.js +26 -33
  252. package/lib/pages/CovidPage/components/TrendGraphNVL/index.js +3 -4
  253. package/lib/pages/CovidPage/components/TrendPopupContent/TrendPopupContent.js +52 -76
  254. package/lib/pages/CovidPage/components/TrendPopupContent/index.js +3 -4
  255. package/lib/pages/CovidPage/components/areas/Area.js +24 -36
  256. package/lib/pages/CovidPage/components/areas/AreaPolygonWBE.js +45 -46
  257. package/lib/pages/CovidPage/components/areas/AreaPolygonsWBE.js +32 -36
  258. package/lib/pages/CovidPage/components/areas/AreasList.js +29 -42
  259. package/lib/pages/CovidPage/components/areas/Sort.js +12 -17
  260. package/lib/pages/CovidPage/components/nvlStatusHelper.js +11 -11
  261. package/lib/pages/DashboardMap/AreaCard.js +25 -26
  262. package/lib/pages/DashboardMap/FactoryCard.js +24 -20
  263. package/lib/pages/DashboardMap/HighchartsOptions.js +6 -5
  264. package/lib/pages/DashboardMap/List.js +41 -53
  265. package/lib/pages/DashboardMap/ListContext.js +14 -19
  266. package/lib/pages/DashboardMap/Loader.js +3 -3
  267. package/lib/pages/DashboardMap/WWTPMap.js +39 -53
  268. package/lib/pages/DashboardMap/Widget.js +46 -71
  269. package/lib/pages/DashboardMap/index.js +3 -4
  270. package/lib/pages/DashboardMap/utils.js +19 -24
  271. package/lib/pages/EventsPage/Body/Body.js +21 -18
  272. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropContainer.js +17 -20
  273. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropUtils.js +27 -36
  274. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropWrapper.js +10 -9
  275. package/lib/pages/EventsPage/DragAndDropArea/DraggableItem.js +13 -10
  276. package/lib/pages/EventsPage/DragAndDropArea/DraggableList.js +22 -31
  277. package/lib/pages/EventsPage/DragAndDropArea/index.js +3 -4
  278. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +52 -64
  279. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainerHelpers.js +17 -23
  280. package/lib/pages/EventsPage/EventsPage.js +8 -13
  281. package/lib/pages/EventsPage/FloatingGraph/FloatingGraph.js +27 -41
  282. package/lib/pages/EventsPage/events/MoreInfo.js +18 -19
  283. package/lib/pages/EventsPage/events/Sidebar.js +22 -19
  284. package/lib/pages/EventsPage/events/event_info/EarlyWarnings.js +31 -38
  285. package/lib/pages/EventsPage/events/event_info/EventDetails.js +34 -32
  286. package/lib/pages/EventsPage/events/event_info/EventInfo.js +42 -43
  287. package/lib/pages/EventsPage/events/event_info/EventPath/EventPath.js +5 -5
  288. package/lib/pages/EventsPage/events/event_info/EventSection.js +15 -18
  289. package/lib/pages/EventsPage/events/event_info/EventSection.test.js +44 -39
  290. package/lib/pages/EventsPage/events/event_info/EventTimeRange.js +39 -50
  291. package/lib/pages/EventsPage/events/event_info/Header/Header.js +8 -7
  292. package/lib/pages/EventsPage/events/event_info/Header/HeaderContainer.js +29 -34
  293. package/lib/pages/EventsPage/events/event_info/Header/index.js +3 -4
  294. package/lib/pages/EventsPage/events/event_info/HistoricalInformation.js +6 -7
  295. package/lib/pages/EventsPage/events/event_info/MiniEventTree.js +30 -39
  296. package/lib/pages/EventsPage/events/event_info/MobileEventPath.js +6 -9
  297. package/lib/pages/EventsPage/events/event_info/MockHistoryInformation/LineChartYear/LineChartYear.js +16 -25
  298. package/lib/pages/EventsPage/events/event_info/MockHistoryInformation/MockHistoryInformation.js +4 -4
  299. package/lib/pages/EventsPage/events/event_info/PollutionDischarge.js +23 -24
  300. package/lib/pages/EventsPage/events/event_info/SamplingList/SamplingDetails.js +12 -11
  301. package/lib/pages/EventsPage/events/event_info/SamplingList/Samplings.js +11 -10
  302. package/lib/pages/EventsPage/events/event_info/SamplingList/index.js +3 -4
  303. package/lib/pages/EventsPage/events/event_info/SeverityScore/ScoreExplanation.js +13 -10
  304. package/lib/pages/EventsPage/events/event_info/SeverityScore/SeverityScore.js +8 -9
  305. package/lib/pages/EventsPage/events/event_info/SeverityScore/index.js +3 -4
  306. package/lib/pages/EventsPage/events/event_info/SourceDetails/Confidence.js +6 -4
  307. package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.js +28 -19
  308. package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.test.js +35 -0
  309. package/lib/pages/EventsPage/events/event_info/SourceDetails/IconAndTitles.js +7 -5
  310. package/lib/pages/EventsPage/events/event_info/SourceDetails/MoreInfoButton.js +11 -13
  311. package/lib/pages/EventsPage/events/event_info/SourceDetails/OtherSources.js +7 -6
  312. package/lib/pages/EventsPage/events/event_info/SourceDetails/PotentialSources.js +9 -8
  313. package/lib/pages/EventsPage/events/event_info/SourceDetails/SingleSource.js +12 -11
  314. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceCardBody.js +8 -7
  315. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.js +13 -12
  316. package/lib/pages/EventsPage/events/event_info/SourceDetails/WaterConsumptionPerDay.js +7 -7
  317. package/lib/pages/EventsPage/events/event_info/Timelines/DischargeBox.js +9 -8
  318. package/lib/pages/EventsPage/events/event_info/Timelines/EarlyWarning.js +19 -18
  319. package/lib/pages/EventsPage/events/event_info/Timelines/LiveStatusBadge.js +6 -7
  320. package/lib/pages/EventsPage/events/event_info/Timelines/SeenBox.js +12 -11
  321. package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.js +15 -13
  322. package/lib/pages/EventsPage/events/event_info/Timelines/Titles.js +4 -5
  323. package/lib/pages/EventsPage/events/event_info/Timelines/index.js +3 -4
  324. package/lib/pages/EventsPage/events/event_info/Timelines/style.js +4 -6
  325. package/lib/pages/EventsPage/events/event_info/charts/EventDetailsLineChart.js +17 -26
  326. package/lib/pages/EventsPage/events/event_info/charts/EventDetailsPieChart.js +25 -40
  327. package/lib/pages/EventsPage/events/event_info/damage_type/DamageType.js +30 -39
  328. package/lib/pages/EventsPage/events/event_info/samplingsOld/Sampling.js +13 -12
  329. package/lib/pages/EventsPage/events/event_info/samplingsOld/Samplings.js +17 -20
  330. package/lib/pages/EventsPage/events/event_info/sources/Source.js +27 -31
  331. package/lib/pages/EventsPage/events/event_info/sources/Sources.js +22 -27
  332. package/lib/pages/EventsPage/events/event_info/styles.js +21 -15
  333. package/lib/pages/EventsPage/events/events_list/EventItem.js +18 -21
  334. package/lib/pages/EventsPage/events/events_list/EventUtils.js +11 -11
  335. package/lib/pages/EventsPage/events/events_list/EventsList.js +115 -139
  336. package/lib/pages/EventsPage/events/events_list/Filter/Filter.js +39 -56
  337. package/lib/pages/EventsPage/events/events_list/Filter/FilterContainer.js +73 -111
  338. package/lib/pages/EventsPage/events/events_list/Filter/FilterItem.js +53 -72
  339. package/lib/pages/EventsPage/events/events_list/Filter/FiltersDropDown.js +39 -44
  340. package/lib/pages/EventsPage/events/events_list/Filter/OptionsDropDown.js +30 -39
  341. package/lib/pages/EventsPage/events/events_list/Sort.js +14 -19
  342. package/lib/pages/ImportFileWizard/FileUploadRespones.js +14 -22
  343. package/lib/pages/ImportFileWizard/ImportButtomButtons.js +9 -8
  344. package/lib/pages/ImportFileWizard/ImportFile.js +21 -25
  345. package/lib/pages/ImportFileWizard/ResponseBody.js +26 -36
  346. package/lib/pages/ImportFileWizard/ValidationForm.js +22 -22
  347. package/lib/pages/ImportFileWizard/ValidationResponse.js +23 -25
  348. package/lib/pages/ImportFileWizard/importFileUtils.js +4 -5
  349. package/lib/pages/ImportFileWizard/index.js +3 -4
  350. package/lib/pages/ImportGisPage/ImportGisContainer.js +22 -27
  351. package/lib/pages/ImportGisPage/ImportedGisFilesPage.js +23 -26
  352. package/lib/pages/ImportGisPage/importGisUtils.js +15 -24
  353. package/lib/pages/ImportGisProcess/index.js +14 -18
  354. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/MultiChoiceTabs.js +7 -13
  355. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/RadioTabs.js +18 -20
  356. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/SeverityButtons.js +4 -4
  357. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.js +28 -58
  358. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.stories.js +8 -12
  359. package/lib/pages/NotificationsPage/Notification/Notification.js +17 -13
  360. package/lib/pages/NotificationsPage/Notifications.mock.js +2 -3
  361. package/lib/pages/NotificationsPage/Notifications.stories.js +6 -10
  362. package/lib/pages/NotificationsPage/NotificationsPage.js +19 -38
  363. package/lib/pages/NotificationsPage/assets/index.js +9 -9
  364. package/lib/pages/NotificationsPageV2/NotificationsPage.js +71 -97
  365. package/lib/pages/NotificationsPageV2/components/NotificationsCard.js +95 -65
  366. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationsFormContent.js +127 -140
  367. package/lib/pages/NotificationsPageV2/components/NotificationsSidebar.js +72 -74
  368. package/lib/pages/NotificationsPageV2/components/NotificationsUtils.js +90 -87
  369. package/lib/pages/NotificationsPageV2/notificationUtils.js +40 -39
  370. package/lib/pages/OldSitePage/OldSitePage.js +56 -132
  371. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.js +6 -10
  372. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.stories.js +5 -9
  373. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +9 -7
  374. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +19 -21
  375. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +10 -12
  376. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +12 -19
  377. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +17 -13
  378. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +5 -9
  379. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +18 -16
  380. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +51 -64
  381. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +10 -8
  382. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.js +29 -54
  383. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.mock.js +4 -7
  384. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.stories.js +12 -19
  385. package/lib/pages/OldSitePage/SamplingParameters/charts/ParametersChart.js +11 -11
  386. package/lib/pages/OldSitePage/SamplingParameters/charts/SamplingChart.js +10 -12
  387. package/lib/pages/OldSitePage/SamplingParameters/charts/options/options.js +27 -23
  388. package/lib/pages/OldSitePage/SamplingParameters/dataParser.js +28 -30
  389. package/lib/pages/OldSitePage/SamplingParameters/styles/samplingParameters.js +5 -8
  390. package/lib/pages/OldSitePage/SamplingParameters/styles/styles.js +16 -12
  391. package/lib/pages/ProfilePage/Container.js +3 -4
  392. package/lib/pages/ProfilePage/PasswordModal/PasswordModal.js +23 -40
  393. package/lib/pages/ProfilePage/ProfilePage.js +111 -200
  394. package/lib/pages/ProfilePage/TelegramModal/TelegramModal.js +25 -34
  395. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.js +20 -20
  396. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.test.js +23 -26
  397. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionContainer.js +57 -119
  398. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionDropdown.js +18 -23
  399. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActions.js +14 -13
  400. package/lib/pages/SamplingsPage/ActionsDropDown/ViewLabResult.js +39 -43
  401. package/lib/pages/SamplingsPage/DesktopActions/DesktopActions.js +27 -29
  402. package/lib/pages/SamplingsPage/DesktopActions/DownloadCSV.js +18 -19
  403. package/lib/pages/SamplingsPage/DesktopActions/UploadLabResult.js +15 -18
  404. package/lib/pages/SamplingsPage/DesktopActions/index.js +3 -4
  405. package/lib/pages/SamplingsPage/NavigationDropdown.js +43 -31
  406. package/lib/pages/SamplingsPage/NewSamplingAction.js +75 -102
  407. package/lib/pages/SamplingsPage/SamplingMobileModal.js +124 -98
  408. package/lib/pages/SamplingsPage/SamplingProperties/ImageDeleteModal.js +23 -25
  409. package/lib/pages/SamplingsPage/SamplingProperties/ImagePreviewModal.js +36 -25
  410. package/lib/pages/SamplingsPage/SamplingProperties/ImageUpload.js +34 -59
  411. package/lib/pages/SamplingsPage/SamplingProperties/ManholeImageMobile.js +16 -21
  412. package/lib/pages/SamplingsPage/SamplingProperties/SamplerInProcess.js +10 -9
  413. package/lib/pages/SamplingsPage/SamplingProperties/SamplingProperties.js +107 -192
  414. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesForm.js +47 -54
  415. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHead.js +42 -39
  416. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHeadMobile.js +42 -39
  417. package/lib/pages/SamplingsPage/SamplingProperties/samplingPropertiesUtils.js +21 -28
  418. package/lib/pages/SamplingsPage/SamplingProperties/styles.js +4 -6
  419. package/lib/pages/SamplingsPage/SamplingSiteTableCell.js +11 -7
  420. package/lib/pages/SamplingsPage/SamplingsMobileItem.js +50 -52
  421. package/lib/pages/SamplingsPage/SamplingsMobileList.js +22 -31
  422. package/lib/pages/SamplingsPage/SamplingsPage.js +25 -33
  423. package/lib/pages/SamplingsPage/SamplingsPageContainer.js +49 -58
  424. package/lib/pages/SamplingsPage/index.js +2 -3
  425. package/lib/pages/SamplingsPage/samplingsPageUtils.js +68 -92
  426. package/lib/pages/SitePage/DischargePattern/DischargePattern.js +7 -5
  427. package/lib/pages/SitePage/SamplingParameters/NoResults/NoResults.stories.js +5 -9
  428. package/lib/pages/SitePage/SamplingParameters/NoResults/index.js +15 -15
  429. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +10 -9
  430. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.test.js +27 -24
  431. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +15 -18
  432. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.test.js +37 -33
  433. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +10 -12
  434. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +15 -25
  435. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +17 -13
  436. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +5 -9
  437. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +18 -16
  438. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +58 -71
  439. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +10 -8
  440. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.js +15 -27
  441. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.mock.js +5 -9
  442. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.stories.js +12 -19
  443. package/lib/pages/SitePage/SamplingParameters/body/Body.js +10 -11
  444. package/lib/pages/SitePage/SamplingParameters/body/BodyContainer.js +30 -40
  445. package/lib/pages/SitePage/SamplingParameters/body/index.js +3 -4
  446. package/lib/pages/SitePage/SamplingParameters/charts/ParametersChart.js +11 -12
  447. package/lib/pages/SitePage/SamplingParameters/charts/SamplingChart.js +10 -12
  448. package/lib/pages/SitePage/SamplingParameters/charts/options/options.js +54 -54
  449. package/lib/pages/SitePage/SamplingParameters/dataParser.js +31 -40
  450. package/lib/pages/SitePage/SamplingParameters/dataParser.test.js +11 -9
  451. package/lib/pages/SitePage/SamplingParameters/styles/samplingParameters.js +5 -8
  452. package/lib/pages/SitePage/SamplingParameters/styles/styles.js +16 -12
  453. package/lib/pages/SitePage/SiteInformation/ContributorItem.js +11 -10
  454. package/lib/pages/SitePage/SiteInformation/EmptyState.js +13 -10
  455. package/lib/pages/SitePage/SiteInformation/PollutionContributor.js +13 -13
  456. package/lib/pages/SitePage/SiteInformation/SiteInformation.js +34 -46
  457. package/lib/pages/SitePage/SiteInformation/style.js +16 -12
  458. package/lib/pages/SitePage/SitePage.js +29 -70
  459. package/lib/pages/UploadLabResult/index.js +15 -16
  460. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.js +27 -37
  461. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.stories.js +8 -13
  462. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.js +11 -15
  463. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.stories.js +5 -9
  464. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/Eta.js +47 -50
  465. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/styles.js +11 -8
  466. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/LinkedSevereEvent.js +4 -5
  467. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/OptionalLinkedSevereEvent.js +6 -9
  468. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/SevereEvent.js +11 -10
  469. package/lib/pages/UtilityDashboardPage/TopBar/TopBar.js +16 -13
  470. package/lib/pages/UtilityDashboardPage/TopBar/constants.js +8 -9
  471. package/lib/pages/UtilityDashboardPage/TopBar/styles.js +3 -4
  472. package/lib/pages/UtilityDashboardPage/UtilityDashboard.js +15 -23
  473. package/lib/pages/UtilityDashboardPage/UtilityDashboard.stories.js +28 -40
  474. package/lib/pages/UtilityDashboardPage/UtilityDashboardMapContainer/UtilityDashboardMapContainer.js +14 -16
  475. package/lib/pages/UtilityDashboardPage/UtilityDashboardPage.js +6 -14
  476. package/lib/pages/UtilityDashboardPage/VirtualAreaDashboardPage.js +23 -32
  477. package/lib/pages/WbeDashboard/ExpandableComponent.js +9 -9
  478. package/lib/pages/WbeDashboard/GraphWrapper.js +28 -35
  479. package/lib/pages/WbeDashboard/IndividualTinyGraph.js +16 -19
  480. package/lib/pages/WbeDashboard/SearchInput.js +15 -21
  481. package/lib/pages/WbeDashboard/SummaryGraph.js +50 -77
  482. package/lib/pages/WbeDashboard/SummaryGraphModal.js +20 -18
  483. package/lib/pages/WbeDashboard/Tabs.js +11 -11
  484. package/lib/pages/WbeDashboard/WbeDashboardPage.js +144 -207
  485. package/lib/pages/WbeDashboard/WbeSummaryBar.js +39 -48
  486. package/lib/pages/WwtpPage/ContaminateCard.js +4 -5
  487. package/lib/pages/WwtpPage/DashboardCard.js +25 -23
  488. package/lib/pages/WwtpPage/DischargePatternCard.js +16 -26
  489. package/lib/pages/WwtpPage/InletsCard.js +19 -17
  490. package/lib/pages/WwtpPage/Map.js +7 -6
  491. package/lib/pages/WwtpPage/OrganicCard.js +4 -5
  492. package/lib/pages/WwtpPage/PotentialSaving/ImpactCard.js +4 -5
  493. package/lib/pages/WwtpPage/PotentialSaving/PotentialItem.js +8 -7
  494. package/lib/pages/WwtpPage/PotentialSaving/PotentialSaving.js +11 -11
  495. package/lib/pages/WwtpPage/PotentialSaving/PotentialSavingContainer.js +20 -17
  496. package/lib/pages/WwtpPage/PotentialSaving/index.js +3 -4
  497. package/lib/pages/WwtpPage/PredictionCard.js +4 -5
  498. package/lib/pages/WwtpPage/TrendCard.js +26 -34
  499. package/lib/pages/WwtpPage/TrendChart.js +12 -12
  500. package/lib/pages/WwtpPage/UpgradeBox.js +4 -5
  501. package/lib/pages/WwtpPage/WwtpPage.js +9 -10
  502. package/lib/pages/WwtpPage/WwtpPageContainer.js +23 -19
  503. package/lib/pages/WwtpPage/index.js +3 -4
  504. package/lib/providers/Slideshow/SlideshowContext.js +11 -10
  505. package/lib/providers/Slideshow/SlideshowProvider.js +22 -40
  506. package/lib/providers/Slideshow/SlideshowRunner.js +18 -21
  507. package/lib/providers/UrlHistory/UrlHistoryContext.js +7 -6
  508. package/lib/providers/UrlHistory/UrlHistoryProvider.js +12 -13
  509. package/lib/providers/UrlHistory/index.js +3 -3
  510. package/lib/providers/UrlHistory/useLastVisited.js +5 -6
  511. package/lib/store/ImportGis/actionTypes.js +4 -5
  512. package/lib/store/ImportGis/actionsCreator.js +7 -5
  513. package/lib/store/ImportGis/reducer.js +41 -30
  514. package/lib/store/WBE/actionTypes.js +2 -3
  515. package/lib/store/WBE/reducer.js +14 -10
  516. package/lib/store/WWTPDashboard/WWTPDashboardSlice.js +24 -15
  517. package/lib/store/areas/actionTypes.js +4 -7
  518. package/lib/store/areas/actions.js +6 -12
  519. package/lib/store/areas/reducer.js +8 -6
  520. package/lib/store/context/actionTypes.js +3 -5
  521. package/lib/store/context/actions.js +3 -3
  522. package/lib/store/context/contextMiddlewares.js +15 -18
  523. package/lib/store/context/reducer.js +14 -10
  524. package/lib/store/dashboard/dashboardSlice.js +18 -11
  525. package/lib/store/edges/actionTypes.js +5 -9
  526. package/lib/store/edges/actions.js +4 -8
  527. package/lib/store/edges/reducer.js +13 -17
  528. package/lib/store/events/actionTypes.js +17 -33
  529. package/lib/store/events/actions.js +3 -7
  530. package/lib/store/events/reducer.js +42 -49
  531. package/lib/store/global/actionTypes.js +11 -21
  532. package/lib/store/global/actions.js +6 -4
  533. package/lib/store/global/reducer.js +11 -10
  534. package/lib/store/permissions/permissionsSlice.js +12 -9
  535. package/lib/store/points/actionTypes.js +3 -5
  536. package/lib/store/points/actions.js +3 -7
  537. package/lib/store/points/reducer.js +7 -5
  538. package/lib/store/rootActionTypes.js +2 -3
  539. package/lib/store/rootReducer.js +17 -13
  540. package/lib/store/rootStore.js +6 -6
  541. package/lib/store/samplings/actionTypes.js +4 -5
  542. package/lib/store/samplings/reducer.js +16 -14
  543. package/lib/styles/StylesLayout.js +7 -6
  544. package/lib/styles/theme/theme.js +26 -30
  545. package/lib/test/mocks/browser.js +2 -5
  546. package/lib/test/test-utils.js +18 -16
  547. package/lib/ui-kit/Button/Button.js +129 -83
  548. package/lib/ui-kit/Button/Button.test.js +24 -30
  549. package/lib/ui-kit/Checkbox/Checkbox.js +32 -24
  550. package/lib/ui-kit/ContentCard/ContentCard.js +16 -20
  551. package/lib/ui-kit/Dashboard/Dashboard.js +23 -22
  552. package/lib/ui-kit/Dashboard/index.js +3 -4
  553. package/lib/ui-kit/DropDown/DropDown.js +18 -20
  554. package/lib/ui-kit/DropDown/DropDown.test.js +13 -13
  555. package/lib/ui-kit/DropDown/DropDownItem.js +26 -25
  556. package/lib/ui-kit/DropDown/DropdownToggle.js +13 -10
  557. package/lib/ui-kit/EmptyState/EmptyState.js +7 -6
  558. package/lib/ui-kit/IconAction/IconAction.js +9 -8
  559. package/lib/ui-kit/ImageUploadButton/ImageUploadButton.js +47 -64
  560. package/lib/ui-kit/InfoTooltip/InfoTooltip.js +58 -49
  561. package/lib/ui-kit/InletsPie/InletsPie.js +17 -16
  562. package/lib/ui-kit/InletsPie/index.js +3 -4
  563. package/lib/ui-kit/InletsPie/options.js +7 -8
  564. package/lib/ui-kit/KandoList/KandoList.js +13 -12
  565. package/lib/ui-kit/KandoTable/KandoTable.js +48 -41
  566. package/lib/ui-kit/KandoTable/KandoTable.test.js +17 -23
  567. package/lib/ui-kit/Layout/Layout.js +8 -7
  568. package/lib/ui-kit/MobileInput/MobileInput.js +56 -50
  569. package/lib/ui-kit/ModalConfirmation/ModalConfirmation.js +14 -17
  570. package/lib/ui-kit/ModalConfirmation/index.js +2 -3
  571. package/lib/ui-kit/OrganicEvents/GaugeChart.js +9 -8
  572. package/lib/ui-kit/OrganicEvents/OrganicEvents.js +8 -9
  573. package/lib/ui-kit/OrganicEvents/OrganicEventsContainer.js +29 -23
  574. package/lib/ui-kit/OrganicEvents/TextInfo.js +17 -13
  575. package/lib/ui-kit/OrganicEvents/index.js +3 -4
  576. package/lib/ui-kit/RadioButtons/RadioButtonGroup.js +12 -11
  577. package/lib/ui-kit/SamplingStatus/SamplingStatus.js +14 -18
  578. package/lib/ui-kit/SamplingStatus/SamplingStatusHelper.js +3 -4
  579. package/lib/ui-kit/ScoreGauge/ScoreGauge.js +21 -24
  580. package/lib/ui-kit/ScoreGauge/constant.js +3 -4
  581. package/lib/ui-kit/ScoreGauge/index.js +3 -4
  582. package/lib/ui-kit/TitleAndCloseHeader/TitleAndCloseHeader.js +10 -11
  583. package/lib/ui-kit/Tooltip/Tooltip.js +15 -9
  584. package/lib/ui-kit/index.js +8 -8
  585. package/lib/ui-kit/kandoStepper/KandoStepper.js +13 -14
  586. package/lib/ui-kit/siteName/SiteName.js +13 -11
  587. package/lib/utilities/ActionUtility.js +7 -7
  588. package/lib/utilities/Alert.js +23 -20
  589. package/lib/utilities/Analytics.js +12 -12
  590. package/lib/utilities/Array.js +4 -5
  591. package/lib/utilities/Enum.js +15 -51
  592. package/lib/utilities/ErrorBoundary.js +27 -42
  593. package/lib/utilities/File.js +41 -70
  594. package/lib/utilities/GetDir.js +10 -10
  595. package/lib/utilities/KandoDate.js +7 -15
  596. package/lib/utilities/KandoModal.js +16 -28
  597. package/lib/utilities/LocalStorage.js +5 -7
  598. package/lib/utilities/ThousandsToK.js +2 -2
  599. package/lib/utilities/TimeFormat.js +20 -21
  600. package/lib/utilities/Truncate.js +17 -27
  601. package/lib/utilities/edgesMath.js +15 -16
  602. package/lib/utilities/i18n.js +5 -6
  603. package/lib/utilities/kql.js +10 -12
  604. package/lib/utilities/map/icons.js +4 -4
  605. package/lib/utilities/polylinedecorator.js +88 -113
  606. package/lib/utilities/scoreToData.js +11 -11
  607. package/lib/utilities/scoreToData.test.js +5 -5
  608. package/lib/utilities/time.js +9 -10
  609. package/lib/utilities/uploadToS3.js +12 -12
  610. package/lib/utilities/urls.js +17 -16
  611. package/package.json +1 -1
@@ -1,14 +1,11 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof = require("@babel/runtime/helpers/typeof");
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.ProfilePage = void 0;
9
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
10
- var _objectSpread3 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
11
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
12
9
  var _react = _interopRequireWildcard(require("react"));
13
10
  var _Select = require("components/CustomInputs/Select/Select");
14
11
  var _i18n = _interopRequireDefault(require("utilities/i18n"));
@@ -25,11 +22,9 @@ var _Analytics = require("../../utilities/Analytics");
25
22
  var _reactRedux = require("react-redux");
26
23
  var _reactToastify = require("react-toastify");
27
24
  var _permissionsSlice = require("store/permissions/permissionsSlice");
28
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
29
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
30
- var ProfilePage = function ProfilePage() {
31
- var timezonesArray = _momentTimezone.default.tz.names();
32
- var dateTimeFormatOptions = [{
25
+ const ProfilePage = () => {
26
+ const timezonesArray = _momentTimezone.default.tz.names();
27
+ const dateTimeFormatOptions = [{
33
28
  value: 'us',
34
29
  label: 'United States',
35
30
  format: {
@@ -51,13 +46,13 @@ var ProfilePage = function ProfilePage() {
51
46
  hour12: false
52
47
  }
53
48
  }];
54
- var timezones = timezonesArray.map(function (t) {
49
+ const timezones = timezonesArray.map(t => {
55
50
  return {
56
51
  value: t,
57
52
  label: t
58
53
  };
59
54
  });
60
- var localeOptions = [{
55
+ const localeOptions = [{
61
56
  value: 'en',
62
57
  label: 'English'
63
58
  }, {
@@ -73,52 +68,28 @@ var ProfilePage = function ProfilePage() {
73
68
  value: 'it',
74
69
  label: 'Italiano'
75
70
  }];
76
- var flowRateUnitOptions = [{
71
+ const flowRateUnitOptions = [{
77
72
  value: 'mgd',
78
73
  label: _i18n.default.t('dashboard_v2.profile.flow_rate_unit_options.mgd')
79
74
  }, {
80
75
  value: 'm3d',
81
76
  label: _i18n.default.t('dashboard_v2.profile.flow_rate_unit_options.m3d')
82
77
  }];
83
- var _useState = (0, _react.useState)(localeOptions[0]),
84
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
85
- locale = _useState2[0],
86
- setLocale = _useState2[1];
87
- var _useState3 = (0, _react.useState)(flowRateUnitOptions[0]),
88
- _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
89
- flowRateUnit = _useState4[0],
90
- setFlowRateUnit = _useState4[1];
91
- var _useState5 = (0, _react.useState)(dateTimeFormatOptions[0]),
92
- _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
93
- dateTimeFormat = _useState6[0],
94
- setDateTimeFormat = _useState6[1];
95
- var _useState7 = (0, _react.useState)(timezones[20]),
96
- _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
97
- timezone = _useState8[0],
98
- setTimezone = _useState8[1];
99
- var _useState9 = (0, _react.useState)([{
100
- value: '',
101
- label: ''
102
- }]),
103
- _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
104
- departments = _useState10[0],
105
- setDepartments = _useState10[1];
106
- var _useState11 = (0, _react.useState)([{
107
- value: '',
108
- label: ''
109
- }]),
110
- _useState12 = (0, _slicedToArray2.default)(_useState11, 2),
111
- businessRoles = _useState12[0],
112
- setBusinessRoles = _useState12[1];
113
- var _useState13 = (0, _react.useState)(departments[0]),
114
- _useState14 = (0, _slicedToArray2.default)(_useState13, 2),
115
- department = _useState14[0],
116
- setDepartment = _useState14[1];
117
- var _useState15 = (0, _react.useState)(businessRoles[0]),
118
- _useState16 = (0, _slicedToArray2.default)(_useState15, 2),
119
- businessRole = _useState16[0],
120
- setBusinessRole = _useState16[1];
121
- var initialParamsState = {
78
+ const [locale, setLocale] = (0, _react.useState)(localeOptions[0]);
79
+ const [flowRateUnit, setFlowRateUnit] = (0, _react.useState)(flowRateUnitOptions[0]);
80
+ const [dateTimeFormat, setDateTimeFormat] = (0, _react.useState)(dateTimeFormatOptions[0]);
81
+ const [timezone, setTimezone] = (0, _react.useState)(timezones[20]);
82
+ const [departments, setDepartments] = (0, _react.useState)([{
83
+ value: '',
84
+ label: ''
85
+ }]);
86
+ const [businessRoles, setBusinessRoles] = (0, _react.useState)([{
87
+ value: '',
88
+ label: ''
89
+ }]);
90
+ const [department, setDepartment] = (0, _react.useState)(departments[0]);
91
+ const [businessRole, setBusinessRole] = (0, _react.useState)(businessRoles[0]);
92
+ const initialParamsState = {
122
93
  first_name: '',
123
94
  last_name: '',
124
95
  phone: '',
@@ -133,92 +104,73 @@ var ProfilePage = function ProfilePage() {
133
104
  department: '',
134
105
  flow_rate_unit: ''
135
106
  };
136
- var _useState17 = (0, _react.useState)(false),
137
- _useState18 = (0, _slicedToArray2.default)(_useState17, 2),
138
- isTelegramOpen = _useState18[0],
139
- setIsTelegramOpen = _useState18[1];
140
- var _useState19 = (0, _react.useState)(false),
141
- _useState20 = (0, _slicedToArray2.default)(_useState19, 2),
142
- showPasswordModal = _useState20[0],
143
- setShowPasswordModal = _useState20[1];
144
- var _useState21 = (0, _react.useState)(false),
145
- _useState22 = (0, _slicedToArray2.default)(_useState21, 2),
146
- submitting = _useState22[0],
147
- setSubmitting = _useState22[1];
148
- var _useState23 = (0, _react.useState)(false),
149
- _useState24 = (0, _slicedToArray2.default)(_useState23, 2),
150
- showSuccessMessage = _useState24[0],
151
- setShowSuccessMessage = _useState24[1];
152
- var _useState25 = (0, _react.useState)(false),
153
- _useState26 = (0, _slicedToArray2.default)(_useState25, 2),
154
- showErrorMessage = _useState26[0],
155
- setShowErrorMessage = _useState26[1];
156
- var _useState27 = (0, _react.useState)({
157
- show: false,
158
- status: '',
159
- message: ''
160
- }),
161
- _useState28 = (0, _slicedToArray2.default)(_useState27, 2),
162
- showTelegramResponseMessage = _useState28[0],
163
- setShowTelegramResponseMessage = _useState28[1];
164
- var _useState29 = (0, _react.useState)(initialParamsState),
165
- _useState30 = (0, _slicedToArray2.default)(_useState29, 2),
166
- params = _useState30[0],
167
- setParams = _useState30[1];
168
- var handleOnChange = function handleOnChange(e) {
107
+ const [isTelegramOpen, setIsTelegramOpen] = (0, _react.useState)(false);
108
+ const [showPasswordModal, setShowPasswordModal] = (0, _react.useState)(false);
109
+ const [submitting, setSubmitting] = (0, _react.useState)(false);
110
+ const [showSuccessMessage, setShowSuccessMessage] = (0, _react.useState)(false);
111
+ const [showErrorMessage, setShowErrorMessage] = (0, _react.useState)(false);
112
+ const [showTelegramResponseMessage, setShowTelegramResponseMessage] = (0, _react.useState)({
113
+ show: false,
114
+ status: '',
115
+ message: ''
116
+ });
117
+ const [params, setParams] = (0, _react.useState)(initialParamsState);
118
+ const handleOnChange = e => {
169
119
  if (typeof e === 'string') {
170
120
  if (e.startsWith('9720')) {
171
121
  e = e.replace(/(9720)/g, '972');
172
122
  }
173
- setParams(function (prevState) {
174
- return (0, _objectSpread3.default)((0, _objectSpread3.default)({}, prevState), {}, {
175
- phone: e
176
- });
177
- });
123
+ setParams(prevState => ({
124
+ ...prevState,
125
+ phone: e
126
+ }));
178
127
  } else {
179
- var _e$target = e.target,
180
- value = _e$target.value,
181
- name = _e$target.name;
182
- setParams(function (prevState) {
183
- return (0, _objectSpread3.default)((0, _objectSpread3.default)({}, prevState), {}, (0, _defineProperty2.default)({}, name, value));
184
- });
128
+ const {
129
+ value,
130
+ name
131
+ } = e.target;
132
+ setParams(prevState => ({
133
+ ...prevState,
134
+ [name]: value
135
+ }));
185
136
  }
186
137
  };
187
- var handleBusinessRoleChange = function handleBusinessRoleChange(e) {
138
+ const handleBusinessRoleChange = e => {
188
139
  if (e.target !== null) {
189
- setParams((0, _objectSpread3.default)((0, _objectSpread3.default)({}, params), {}, {
140
+ setParams({
141
+ ...params,
190
142
  business_role: e.value,
191
143
  other_business_role_name: e.target.value
192
- }));
144
+ });
193
145
  }
194
146
  };
195
- var handleDepartmentChange = function handleDepartmentChange(e) {
147
+ const handleDepartmentChange = e => {
196
148
  if (e.target !== null) {
197
- setParams((0, _objectSpread3.default)((0, _objectSpread3.default)({}, params), {}, {
149
+ setParams({
150
+ ...params,
198
151
  department: e.value,
199
152
  other_department_name: e.target.value
200
- }));
153
+ });
201
154
  }
202
155
  };
203
- var getParamsWithAggregatedValues = function getParamsWithAggregatedValues() {
204
- return (0, _objectSpread3.default)((0, _objectSpread3.default)({}, params), {}, {
156
+ const getParamsWithAggregatedValues = () => {
157
+ return {
158
+ ...params,
205
159
  date_time_format: dateTimeFormat.value,
206
160
  locale: locale.value,
207
161
  time_zone: timezone.value,
208
162
  department_id: department === undefined ? null : department.value,
209
163
  business_role_id: businessRole === undefined ? null : businessRole.value,
210
164
  flow_rate_unit: flowRateUnit.value
211
- });
165
+ };
212
166
  };
213
- var waterAuthorityName = (0, _reactRedux.useSelector)(function (state) {
214
- return state.global_data.waterAuthorityName;
215
- });
216
- var showToast = function showToast(data) {
217
- var username = data.username;
218
- var error = data.error;
167
+ const waterAuthorityName = (0, _reactRedux.useSelector)(state => state.global_data.waterAuthorityName);
168
+ const showToast = data => {
169
+ const username = data.username;
170
+ const error = data.error;
219
171
  if (data.status === 'success') {
220
172
  _reactToastify.toast.success(_i18n.default.t("my_profile_tab.telegram_messages.".concat(data.message), {
221
- username: username
173
+ username
222
174
  }), {
223
175
  position: 'top-center'
224
176
  });
@@ -231,81 +183,65 @@ var ProfilePage = function ProfilePage() {
231
183
  });
232
184
  }
233
185
  };
234
- var dispatch = (0, _reactRedux.useDispatch)();
235
- var handleSubmit = function handleSubmit(e) {
186
+ const dispatch = (0, _reactRedux.useDispatch)();
187
+ const handleSubmit = e => {
236
188
  e.preventDefault();
237
189
  setSubmitting(true);
238
190
  _axios.default.put('/profiles', {
239
191
  user: getParamsWithAggregatedValues()
240
- }).then(function (resp) {
192
+ }).then(resp => {
241
193
  if (resp.data.errors === null) {
242
194
  dispatch(_permissionsSlice.PermissionsSlice.actions.setUserInfo(JSON.parse(resp.data.user)));
243
- document.querySelectorAll('.error-message').forEach(function (p) {
244
- return p.innerHTML = '';
245
- });
246
- document.querySelectorAll('.invalid-field').forEach(function (p) {
247
- return p.classList.remove('invalid-field');
248
- });
249
- var user = JSON.parse(resp.data.user);
250
- var findLocale = localeOptions.find(function (e) {
251
- return e.value === user.locale;
252
- });
253
- var findFlowRateUnit = flowRateUnitOptions.find(function (e) {
254
- return e.value === user.flow_rate_unit;
255
- });
256
- var findDateTimeFormat = dateTimeFormatOptions.find(function (e) {
257
- return e.value === user.date_time_format;
258
- });
259
- var findTimezone = timezones.find(function (e) {
260
- return e.value === user.time_zone;
261
- });
195
+ document.querySelectorAll('.error-message').forEach(p => p.innerHTML = '');
196
+ document.querySelectorAll('.invalid-field').forEach(p => p.classList.remove('invalid-field'));
197
+ let user = JSON.parse(resp.data.user);
198
+ const findLocale = localeOptions.find(e => e.value === user.locale);
199
+ const findFlowRateUnit = flowRateUnitOptions.find(e => e.value === user.flow_rate_unit);
200
+ const findDateTimeFormat = dateTimeFormatOptions.find(e => e.value === user.date_time_format);
201
+ const findTimezone = timezones.find(e => e.value === user.time_zone);
262
202
  setParams(user);
263
203
  setLocale(findLocale);
264
204
  setFlowRateUnit(findFlowRateUnit);
265
205
  setDateTimeFormat(findDateTimeFormat);
266
206
  setTimezone(findTimezone);
267
207
  setShowSuccessMessage(true);
268
- setTimeout(function () {
208
+ setTimeout(() => {
269
209
  setShowSuccessMessage(false);
270
210
  }, 6000);
271
211
  } else {
272
- document.querySelectorAll('.error-message').forEach(function (p) {
273
- return p.innerHTML = '';
274
- });
275
- var errors = resp.data.user.errors;
276
- for (var error in errors) {
277
- var findElement = document.querySelector("input[name='".concat(error, "']"));
278
- var parent = findElement.closest('.field');
279
- var findInput = parent.querySelector('input');
212
+ document.querySelectorAll('.error-message').forEach(p => p.innerHTML = '');
213
+ let errors = resp.data.user.errors;
214
+ for (const error in errors) {
215
+ let findElement = document.querySelector("input[name='".concat(error, "']"));
216
+ let parent = findElement.closest('.field');
217
+ let findInput = parent.querySelector('input');
280
218
  findInput.classList.add('invalid-field');
281
219
  parent.querySelector('.error-message').innerHTML = _i18n.default.t("dashboard_v2.profile.errors.".concat(error));
282
220
  }
283
221
  setShowSuccessMessage(false);
284
222
  }
285
223
  setSubmitting(false);
286
- }).catch(function (error) {
224
+ }).catch(error => {
287
225
  setShowErrorMessage(true);
288
226
  setShowSuccessMessage(false);
289
227
  setSubmitting(false);
290
- setTimeout(function () {
228
+ setTimeout(() => {
291
229
  setShowErrorMessage(false);
292
230
  }, 6000);
293
231
  });
294
232
  };
295
- (0, _react.useEffect)(function () {
233
+ (0, _react.useEffect)(() => {
296
234
  (0, _Analytics.analyticsTrack)('Viewed Profile Page', {
297
235
  utility_name: waterAuthorityName
298
236
  });
299
237
  // @ts-ignore
300
- var token = document.querySelector('[name=csrf-token]').content;
238
+ const token = document.querySelector('[name=csrf-token]').content;
301
239
  _axios.default.defaults.headers.common['X-CSRF-TOKEN'] = token;
302
240
  _axios.default.defaults.headers.common['Content-Type'] = 'application/js';
303
- _axios.default.get("/profiles/resource").then(function (resp) {
241
+ _axios.default.get("/profiles/resource").then(resp => {
304
242
  setParams(resp.data.user);
305
- var findProperty = function findProperty(object, property) {
306
- return object.find(function (e) {
307
- return e.value === property;
308
- });
243
+ const findProperty = (object, property) => {
244
+ return object.find(e => e.value === property);
309
245
  };
310
246
  setLocale(findProperty(localeOptions, resp.data.user.locale));
311
247
  setFlowRateUnit(findProperty(flowRateUnitOptions, resp.data.user.flow_rate_unit));
@@ -315,17 +251,13 @@ var ProfilePage = function ProfilePage() {
315
251
  setDepartment(findProperty(resp.data.departments, resp.data.user.department_id));
316
252
  setDepartments(resp.data.departments);
317
253
  setBusinessRoles(resp.data.business_roles);
318
- }).catch(function (error) {
319
- return alert(error);
320
- });
254
+ }).catch(error => alert(error));
321
255
  }, []);
322
256
  return /*#__PURE__*/_react.default.createElement(_Container.Container, null, /*#__PURE__*/_react.default.createElement("div", {
323
257
  className: "header-title"
324
258
  }, _i18n.default.t('dashboard_v2.profile.title')), /*#__PURE__*/_react.default.createElement("form", {
325
259
  action: "",
326
- onSubmit: function onSubmit(e) {
327
- return handleSubmit(e);
328
- }
260
+ onSubmit: e => handleSubmit(e)
329
261
  }, /*#__PURE__*/_react.default.createElement("div", {
330
262
  className: "content"
331
263
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -341,9 +273,7 @@ var ProfilePage = function ProfilePage() {
341
273
  className: "my-input",
342
274
  name: 'first_name',
343
275
  value: params.first_name,
344
- onChange: function onChange(e) {
345
- return handleOnChange(e);
346
- }
276
+ onChange: e => handleOnChange(e)
347
277
  }), /*#__PURE__*/_react.default.createElement("p", {
348
278
  className: 'error-message'
349
279
  })), /*#__PURE__*/_react.default.createElement("div", {
@@ -355,9 +285,7 @@ var ProfilePage = function ProfilePage() {
355
285
  className: "my-input",
356
286
  name: 'last_name',
357
287
  value: params.last_name,
358
- onChange: function onChange(e) {
359
- return handleOnChange(e);
360
- }
288
+ onChange: e => handleOnChange(e)
361
289
  }), /*#__PURE__*/_react.default.createElement("p", {
362
290
  className: 'error-message'
363
291
  })), /*#__PURE__*/_react.default.createElement("div", {
@@ -387,7 +315,7 @@ var ProfilePage = function ProfilePage() {
387
315
  enableSearch: true,
388
316
  searchPlaceholder: _i18n.default.t('search'),
389
317
  countryCodeEditable: false,
390
- onChange: function onChange(value) {
318
+ onChange: value => {
391
319
  handleOnChange(value);
392
320
  },
393
321
  inputProps: {
@@ -441,9 +369,7 @@ var ProfilePage = function ProfilePage() {
441
369
  className: "my-input",
442
370
  name: 'other_department_name',
443
371
  value: params.other_department_name,
444
- onChange: function onChange(e) {
445
- return handleDepartmentChange(e);
446
- }
372
+ onChange: e => handleDepartmentChange(e)
447
373
  })), /*#__PURE__*/_react.default.createElement("div", {
448
374
  className: "field ".concat(businessRole && (businessRole === null || businessRole === void 0 ? void 0 : businessRole.value) === businessRoles[businessRoles.length - 1].value ? '' : 'field--hidden', " ")
449
375
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -454,16 +380,12 @@ var ProfilePage = function ProfilePage() {
454
380
  className: "my-input",
455
381
  name: 'other_business_role_name',
456
382
  value: params.other_business_role_name,
457
- onChange: function onChange(e) {
458
- return handleBusinessRoleChange(e);
459
- }
383
+ onChange: e => handleBusinessRoleChange(e)
460
384
  }))), /*#__PURE__*/_react.default.createElement("div", {
461
385
  className: "field"
462
386
  }, /*#__PURE__*/_react.default.createElement("div", {
463
387
  className: "change-password",
464
- onClick: function onClick() {
465
- return setShowPasswordModal(true);
466
- }
388
+ onClick: () => setShowPasswordModal(true)
467
389
  }, /*#__PURE__*/_react.default.createElement(_pen.ReactComponent, {
468
390
  width: "12px",
469
391
  height: "12px",
@@ -511,18 +433,14 @@ var ProfilePage = function ProfilePage() {
511
433
  className: "field field--buttons"
512
434
  }, params.telegram_name === '' && /*#__PURE__*/_react.default.createElement("a", {
513
435
  className: "telegram",
514
- onClick: function onClick() {
515
- return setIsTelegramOpen(true);
516
- }
436
+ onClick: () => setIsTelegramOpen(true)
517
437
  }, _i18n.default.t('dashboard_v2.profile.connect-to-telegram')), params.telegram_name !== '' && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
518
438
  className: "field"
519
439
  }, /*#__PURE__*/_react.default.createElement("div", {
520
440
  className: "label"
521
441
  }, _i18n.default.t('dashboard_v2.profile.telegram_name'), /*#__PURE__*/_react.default.createElement("div", {
522
442
  className: "right",
523
- onClick: function onClick() {
524
- return setIsTelegramOpen(true);
525
- }
443
+ onClick: () => setIsTelegramOpen(true)
526
444
  }, /*#__PURE__*/_react.default.createElement(_pen.ReactComponent, {
527
445
  width: "12px",
528
446
  height: "12px",
@@ -537,25 +455,24 @@ var ProfilePage = function ProfilePage() {
537
455
  value: params.telegram_name
538
456
  }), /*#__PURE__*/_react.default.createElement("div", {
539
457
  className: 'telegram-existing-input__cancel-button',
540
- onClick: function onClick(e) {
541
- setParams(function (prevState) {
542
- return (0, _objectSpread3.default)((0, _objectSpread3.default)({}, prevState), {}, {
543
- telegram_name: ''
544
- });
545
- });
458
+ onClick: e => {
459
+ setParams(prevState => ({
460
+ ...prevState,
461
+ telegram_name: ''
462
+ }));
546
463
  }
547
464
  }, /*#__PURE__*/_react.default.createElement(_cancel.ReactComponent, null))), /*#__PURE__*/_react.default.createElement("p", {
548
465
  className: 'error-message'
549
466
  })), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("a", {
550
467
  className: 'telegram open',
551
- onClick: function onClick() {
552
- _axios.default.get("/telegram/send_test_message.json").then(function (resp) {
468
+ onClick: () => {
469
+ _axios.default.get("/telegram/send_test_message.json").then(resp => {
553
470
  setShowTelegramResponseMessage({
554
471
  status: resp.data.user.status[0].toUpperCase() + resp.data.user.status.substring(1),
555
472
  message: resp.data.user.message,
556
473
  show: true
557
474
  });
558
- setTimeout(function () {
475
+ setTimeout(() => {
559
476
  setShowTelegramResponseMessage({
560
477
  status: '',
561
478
  message: '',
@@ -563,9 +480,7 @@ var ProfilePage = function ProfilePage() {
563
480
  });
564
481
  }, 6000);
565
482
  showToast(resp.data.user);
566
- }).catch(function (error) {
567
- return alert(error);
568
- });
483
+ }).catch(error => alert(error));
569
484
  }
570
485
  }, !showTelegramResponseMessage.show && _i18n.default.t('dashboard_v2.profile.send_telegram_message'), showTelegramResponseMessage.show && showTelegramResponseMessage.status)))), /*#__PURE__*/_react.default.createElement("div", {
571
486
  className: "field"
@@ -583,17 +498,13 @@ var ProfilePage = function ProfilePage() {
583
498
  className: 'save',
584
499
  disabled: submitting
585
500
  }, !submitting && !showSuccessMessage && !showErrorMessage && _i18n.default.t('dashboard_v2.profile.submit'), submitting && !showSuccessMessage && !showErrorMessage && _i18n.default.t('dashboard_v2.profile.submitting'), showSuccessMessage && _i18n.default.t('dashboard_v2.profile.success'), showErrorMessage && _i18n.default.t('dashboard_v2.profile.error')))), showPasswordModal && /*#__PURE__*/_react.default.createElement(_PasswordModal.PasswordModal, {
586
- close: function close() {
587
- return setShowPasswordModal(false);
588
- },
589
- save: function save() {}
501
+ close: () => setShowPasswordModal(false),
502
+ save: () => {}
590
503
  }), isTelegramOpen && /*#__PURE__*/_react.default.createElement(_TelegramModal.TelegramModal, {
591
- close: function close() {
592
- return setIsTelegramOpen(false);
593
- },
504
+ close: () => setIsTelegramOpen(false),
594
505
  handleOnChange: handleOnChange,
595
506
  handleSubmit: handleSubmit
596
507
  }));
597
508
  };
598
509
  exports.ProfilePage = ProfilePage;
599
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfU2VsZWN0IiwiX2kxOG4iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX1Bhc3N3b3JkTW9kYWwiLCJfcGVuIiwiX2NhbmNlbCIsIl9yZWFjdFBob25lSW5wdXQiLCJfVGVsZWdyYW1Nb2RhbCIsIl9heGlvcyIsIl9Db250YWluZXIiLCJfbW9tZW50VGltZXpvbmUiLCJfQW5hbHl0aWNzIiwiX3JlYWN0UmVkdXgiLCJfcmVhY3RUb2FzdGlmeSIsIl9wZXJtaXNzaW9uc1NsaWNlIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJQcm9maWxlUGFnZSIsInRpbWV6b25lc0FycmF5IiwibW9tZW50IiwidHoiLCJuYW1lcyIsImRhdGVUaW1lRm9ybWF0T3B0aW9ucyIsInZhbHVlIiwibGFiZWwiLCJmb3JtYXQiLCJtb250aCIsImRheSIsInllYXIiLCJob3VyIiwibWludXRlIiwiaG91cjEyIiwidGltZXpvbmVzIiwibWFwIiwidCIsImxvY2FsZU9wdGlvbnMiLCJmbG93UmF0ZVVuaXRPcHRpb25zIiwiaTE4biIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsImxvY2FsZSIsInNldExvY2FsZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiZmxvd1JhdGVVbml0Iiwic2V0Rmxvd1JhdGVVbml0IiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJkYXRlVGltZUZvcm1hdCIsInNldERhdGVUaW1lRm9ybWF0IiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJ0aW1lem9uZSIsInNldFRpbWV6b25lIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTEwIiwiZGVwYXJ0bWVudHMiLCJzZXREZXBhcnRtZW50cyIsIl91c2VTdGF0ZTExIiwiX3VzZVN0YXRlMTIiLCJidXNpbmVzc1JvbGVzIiwic2V0QnVzaW5lc3NSb2xlcyIsIl91c2VTdGF0ZTEzIiwiX3VzZVN0YXRlMTQiLCJkZXBhcnRtZW50Iiwic2V0RGVwYXJ0bWVudCIsIl91c2VTdGF0ZTE1IiwiX3VzZVN0YXRlMTYiLCJidXNpbmVzc1JvbGUiLCJzZXRCdXNpbmVzc1JvbGUiLCJpbml0aWFsUGFyYW1zU3RhdGUiLCJmaXJzdF9uYW1lIiwibGFzdF9uYW1lIiwicGhvbmUiLCJlbWFpbCIsInRpbWVfem9uZSIsImRhdGVfdGltZV9mb3JtYXQiLCJ0ZWxlZ3JhbV9uYW1lIiwib3RoZXJfYnVzaW5lc3Nfcm9sZV9uYW1lIiwib3RoZXJfZGVwYXJ0bWVudF9uYW1lIiwiYnVzaW5lc3Nfcm9sZSIsImZsb3dfcmF0ZV91bml0IiwiX3VzZVN0YXRlMTciLCJfdXNlU3RhdGUxOCIsImlzVGVsZWdyYW1PcGVuIiwic2V0SXNUZWxlZ3JhbU9wZW4iLCJfdXNlU3RhdGUxOSIsIl91c2VTdGF0ZTIwIiwic2hvd1Bhc3N3b3JkTW9kYWwiLCJzZXRTaG93UGFzc3dvcmRNb2RhbCIsIl91c2VTdGF0ZTIxIiwiX3VzZVN0YXRlMjIiLCJzdWJtaXR0aW5nIiwic2V0U3VibWl0dGluZyIsIl91c2VTdGF0ZTIzIiwiX3VzZVN0YXRlMjQiLCJzaG93U3VjY2Vzc01lc3NhZ2UiLCJzZXRTaG93U3VjY2Vzc01lc3NhZ2UiLCJfdXNlU3RhdGUyNSIsIl91c2VTdGF0ZTI2Iiwic2hvd0Vycm9yTWVzc2FnZSIsInNldFNob3dFcnJvck1lc3NhZ2UiLCJfdXNlU3RhdGUyNyIsInNob3ciLCJzdGF0dXMiLCJtZXNzYWdlIiwiX3VzZVN0YXRlMjgiLCJzaG93VGVsZWdyYW1SZXNwb25zZU1lc3NhZ2UiLCJzZXRTaG93VGVsZWdyYW1SZXNwb25zZU1lc3NhZ2UiLCJfdXNlU3RhdGUyOSIsIl91c2VTdGF0ZTMwIiwicGFyYW1zIiwic2V0UGFyYW1zIiwiaGFuZGxlT25DaGFuZ2UiLCJlIiwic3RhcnRzV2l0aCIsInJlcGxhY2UiLCJwcmV2U3RhdGUiLCJfb2JqZWN0U3ByZWFkMyIsIl9lJHRhcmdldCIsInRhcmdldCIsIm5hbWUiLCJfZGVmaW5lUHJvcGVydHkyIiwiaGFuZGxlQnVzaW5lc3NSb2xlQ2hhbmdlIiwiaGFuZGxlRGVwYXJ0bWVudENoYW5nZSIsImdldFBhcmFtc1dpdGhBZ2dyZWdhdGVkVmFsdWVzIiwiZGVwYXJ0bWVudF9pZCIsInVuZGVmaW5lZCIsImJ1c2luZXNzX3JvbGVfaWQiLCJ3YXRlckF1dGhvcml0eU5hbWUiLCJ1c2VTZWxlY3RvciIsInN0YXRlIiwiZ2xvYmFsX2RhdGEiLCJzaG93VG9hc3QiLCJkYXRhIiwidXNlcm5hbWUiLCJlcnJvciIsInRvYXN0Iiwic3VjY2VzcyIsImNvbmNhdCIsInBvc2l0aW9uIiwiZGlzcGF0Y2giLCJ1c2VEaXNwYXRjaCIsImhhbmRsZVN1Ym1pdCIsInByZXZlbnREZWZhdWx0IiwiYXhpb3MiLCJwdXQiLCJ1c2VyIiwidGhlbiIsInJlc3AiLCJlcnJvcnMiLCJQZXJtaXNzaW9uc1NsaWNlIiwiYWN0aW9ucyIsInNldFVzZXJJbmZvIiwiSlNPTiIsInBhcnNlIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZm9yRWFjaCIsInAiLCJpbm5lckhUTUwiLCJjbGFzc0xpc3QiLCJyZW1vdmUiLCJmaW5kTG9jYWxlIiwiZmluZCIsImZpbmRGbG93UmF0ZVVuaXQiLCJmaW5kRGF0ZVRpbWVGb3JtYXQiLCJmaW5kVGltZXpvbmUiLCJzZXRUaW1lb3V0IiwiZmluZEVsZW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwicGFyZW50IiwiY2xvc2VzdCIsImZpbmRJbnB1dCIsImFkZCIsImNhdGNoIiwidXNlRWZmZWN0IiwiYW5hbHl0aWNzVHJhY2siLCJ1dGlsaXR5X25hbWUiLCJ0b2tlbiIsImNvbnRlbnQiLCJkZWZhdWx0cyIsImhlYWRlcnMiLCJjb21tb24iLCJmaW5kUHJvcGVydHkiLCJvYmplY3QiLCJwcm9wZXJ0eSIsImJ1c2luZXNzX3JvbGVzIiwiYWxlcnQiLCJjcmVhdGVFbGVtZW50IiwiQ29udGFpbmVyIiwiY2xhc3NOYW1lIiwiYWN0aW9uIiwib25TdWJtaXQiLCJ0eXBlIiwib25DaGFuZ2UiLCJyZWFkT25seSIsImNvdW50cnkiLCJsb2NhbGl6YXRpb24iLCJpbnB1dENsYXNzIiwiY29udGFpbmVyQ2xhc3MiLCJidXR0b25DbGFzcyIsImRyb3Bkb3duQ2xhc3MiLCJlbmFibGVTZWFyY2giLCJzZWFyY2hQbGFjZWhvbGRlciIsImNvdW50cnlDb2RlRWRpdGFibGUiLCJpbnB1dFByb3BzIiwiRnJhZ21lbnQiLCJTZWxlY3QiLCJzZXRWYWx1ZSIsIm9wdGlvbnMiLCJjYW5jZWxUZXh0V2lkdGgiLCJ0cmFuc2xhdGUiLCJ0cmFuc2xhdGlvbl9rZXkiLCJsZW5ndGgiLCJvbkNsaWNrIiwiUmVhY3RDb21wb25lbnQiLCJ3aWR0aCIsImhlaWdodCIsImZpbGwiLCJEYXRlIiwidG9Mb2NhbGVEYXRlU3RyaW5nIiwidG9VcHBlckNhc2UiLCJzdWJzdHJpbmciLCJkaXNhYmxlZCIsIlBhc3N3b3JkTW9kYWwiLCJjbG9zZSIsInNhdmUiLCJUZWxlZ3JhbU1vZGFsIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWdlcy9Qcm9maWxlUGFnZS9Qcm9maWxlUGFnZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBTZWxlY3QgfSBmcm9tICdzcmMvY29tcG9uZW50cy9DdXN0b21JbnB1dHMvU2VsZWN0L1NlbGVjdCc7XG5pbXBvcnQgaTE4biBmcm9tICdzcmMvdXRpbGl0aWVzL2kxOG4nO1xuaW1wb3J0IHsgUGFzc3dvcmRNb2RhbCB9IGZyb20gJy4vUGFzc3dvcmRNb2RhbC9QYXNzd29yZE1vZGFsJztcbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIFBlblN2ZyB9IGZyb20gJy4vcGVuLnN2Zyc7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBDYW5jZWwgfSBmcm9tICcuL2NhbmNlbC5zdmcnO1xuaW1wb3J0IFBob25lSW5wdXQgZnJvbSAncmVhY3QtcGhvbmUtaW5wdXQtMic7XG5pbXBvcnQgJ3JlYWN0LXBob25lLWlucHV0LTIvbGliL3N0eWxlLmNzcyc7XG5pbXBvcnQgeyBUZWxlZ3JhbU1vZGFsIH0gZnJvbSAnLi9UZWxlZ3JhbU1vZGFsL1RlbGVncmFtTW9kYWwnO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IENvbnRhaW5lciB9IGZyb20gJy4vQ29udGFpbmVyJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50LXRpbWV6b25lJztcbmltcG9ydCB7IGFuYWx5dGljc1RyYWNrIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL0FuYWx5dGljcyc7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQgeyB0b2FzdCB9IGZyb20gJ3JlYWN0LXRvYXN0aWZ5JztcbmltcG9ydCB7IFBlcm1pc3Npb25zU2xpY2UgfSBmcm9tICdzcmMvc3RvcmUvcGVybWlzc2lvbnMvcGVybWlzc2lvbnNTbGljZSc7XG5cbmV4cG9ydCBjb25zdCBQcm9maWxlUGFnZSA9ICgpID0+IHtcbiAgY29uc3QgdGltZXpvbmVzQXJyYXkgPSBtb21lbnQudHoubmFtZXMoKTtcbiAgY29uc3QgZGF0ZVRpbWVGb3JtYXRPcHRpb25zID0gW1xuICAgIHtcbiAgICAgIHZhbHVlOiAndXMnLFxuICAgICAgbGFiZWw6ICdVbml0ZWQgU3RhdGVzJyxcbiAgICAgIGZvcm1hdDoge1xuICAgICAgICBtb250aDogJ3Nob3J0JyxcbiAgICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICAgIHllYXI6ICdudW1lcmljJyxcbiAgICAgICAgaG91cjogJ251bWVyaWMnLFxuICAgICAgICBtaW51dGU6ICdudW1lcmljJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICB2YWx1ZTogJ2V1JyxcbiAgICAgIGxhYmVsOiAnRXVyb3BlJyxcbiAgICAgIGZvcm1hdDoge1xuICAgICAgICBkYXk6ICdudW1lcmljJyxcbiAgICAgICAgbW9udGg6ICdudW1lcmljJyxcbiAgICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgICBob3VyOiAnbnVtZXJpYycsXG4gICAgICAgIG1pbnV0ZTogJ251bWVyaWMnLFxuICAgICAgICBob3VyMTI6IGZhbHNlLFxuICAgICAgfSxcbiAgICB9LFxuICBdO1xuXG4gIGNvbnN0IHRpbWV6b25lcyA9IHRpbWV6b25lc0FycmF5Lm1hcCgodCkgPT4ge1xuICAgIHJldHVybiB7IHZhbHVlOiB0LCBsYWJlbDogdCB9O1xuICB9KTtcblxuICBjb25zdCBsb2NhbGVPcHRpb25zID0gW1xuICAgIHsgdmFsdWU6ICdlbicsIGxhYmVsOiAnRW5nbGlzaCcgfSxcbiAgICB7IHZhbHVlOiAnZW5fdWsnLCBsYWJlbDogJ0VuZ2xpc2ggKFVLKScgfSxcbiAgICB7IHZhbHVlOiAnaGUnLCBsYWJlbDogJ9ei15HXqNeZ16onIH0sXG4gICAgeyB2YWx1ZTogJ2ZyJywgbGFiZWw6ICdGcmFuw6dhaXMnIH0sXG4gICAgeyB2YWx1ZTogJ2l0JywgbGFiZWw6ICdJdGFsaWFubycgfSxcbiAgXTtcblxuICBjb25zdCBmbG93UmF0ZVVuaXRPcHRpb25zID0gW1xuICAgIHtcbiAgICAgIHZhbHVlOiAnbWdkJyxcbiAgICAgIGxhYmVsOiBpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmZsb3dfcmF0ZV91bml0X29wdGlvbnMubWdkJyksXG4gICAgfSxcbiAgICB7XG4gICAgICB2YWx1ZTogJ20zZCcsXG4gICAgICBsYWJlbDogaTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5mbG93X3JhdGVfdW5pdF9vcHRpb25zLm0zZCcpLFxuICAgIH0sXG4gIF07XG5cbiAgY29uc3QgW2xvY2FsZSwgc2V0TG9jYWxlXSA9IHVzZVN0YXRlPHtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH0+KGxvY2FsZU9wdGlvbnNbMF0pO1xuXG4gIGNvbnN0IFtmbG93UmF0ZVVuaXQsIHNldEZsb3dSYXRlVW5pdF0gPSB1c2VTdGF0ZTx7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICB9PihmbG93UmF0ZVVuaXRPcHRpb25zWzBdKTtcblxuICBjb25zdCBbZGF0ZVRpbWVGb3JtYXQsIHNldERhdGVUaW1lRm9ybWF0XSA9IHVzZVN0YXRlPHtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgZm9ybWF0OiBvYmplY3Q7XG4gIH0+KGRhdGVUaW1lRm9ybWF0T3B0aW9uc1swXSk7XG5cbiAgY29uc3QgW3RpbWV6b25lLCBzZXRUaW1lem9uZV0gPSB1c2VTdGF0ZTx7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICB9Pih0aW1lem9uZXNbMjBdKTtcblxuICBjb25zdCBbZGVwYXJ0bWVudHMsIHNldERlcGFydG1lbnRzXSA9IHVzZVN0YXRlPFxuICAgIHtcbiAgICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgICBsYWJlbDogc3RyaW5nO1xuICAgIH1bXVxuICA+KFt7IHZhbHVlOiAnJywgbGFiZWw6ICcnIH1dKTtcblxuICBjb25zdCBbYnVzaW5lc3NSb2xlcywgc2V0QnVzaW5lc3NSb2xlc10gPSB1c2VTdGF0ZTxcbiAgICB7XG4gICAgICB2YWx1ZTogc3RyaW5nO1xuICAgICAgbGFiZWw6IHN0cmluZztcbiAgICB9W11cbiAgPihbeyB2YWx1ZTogJycsIGxhYmVsOiAnJyB9XSk7XG5cbiAgY29uc3QgW2RlcGFydG1lbnQsIHNldERlcGFydG1lbnRdID0gdXNlU3RhdGU8YW55PihkZXBhcnRtZW50c1swXSk7XG5cbiAgY29uc3QgW2J1c2luZXNzUm9sZSwgc2V0QnVzaW5lc3NSb2xlXSA9IHVzZVN0YXRlPGFueT4oYnVzaW5lc3NSb2xlc1swXSk7XG5cbiAgY29uc3QgaW5pdGlhbFBhcmFtc1N0YXRlID0ge1xuICAgIGZpcnN0X25hbWU6ICcnLFxuICAgIGxhc3RfbmFtZTogJycsXG4gICAgcGhvbmU6ICcnLFxuICAgIGVtYWlsOiAnJyxcbiAgICB0aW1lX3pvbmU6ICcnLFxuICAgIGRhdGVfdGltZV9mb3JtYXQ6ICcnLFxuICAgIGxvY2FsZTogJycsXG4gICAgdGVsZWdyYW1fbmFtZTogJycsXG4gICAgb3RoZXJfYnVzaW5lc3Nfcm9sZV9uYW1lOiAnJyxcbiAgICBvdGhlcl9kZXBhcnRtZW50X25hbWU6ICcnLFxuICAgIGJ1c2luZXNzX3JvbGU6ICcnLFxuICAgIGRlcGFydG1lbnQ6ICcnLFxuICAgIGZsb3dfcmF0ZV91bml0OiAnJyxcbiAgfTtcblxuICBjb25zdCBbaXNUZWxlZ3JhbU9wZW4sIHNldElzVGVsZWdyYW1PcGVuXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgW3Nob3dQYXNzd29yZE1vZGFsLCBzZXRTaG93UGFzc3dvcmRNb2RhbF0gPSB1c2VTdGF0ZTxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IFtzdWJtaXR0aW5nLCBzZXRTdWJtaXR0aW5nXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgW3Nob3dTdWNjZXNzTWVzc2FnZSwgc2V0U2hvd1N1Y2Nlc3NNZXNzYWdlXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgW3Nob3dFcnJvck1lc3NhZ2UsIHNldFNob3dFcnJvck1lc3NhZ2VdID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBbc2hvd1RlbGVncmFtUmVzcG9uc2VNZXNzYWdlLCBzZXRTaG93VGVsZWdyYW1SZXNwb25zZU1lc3NhZ2VdID1cbiAgICB1c2VTdGF0ZTx7XG4gICAgICBzaG93OiBib29sZWFuO1xuICAgICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgfT4oe1xuICAgICAgc2hvdzogZmFsc2UsXG4gICAgICBzdGF0dXM6ICcnLFxuICAgICAgbWVzc2FnZTogJycsXG4gICAgfSk7XG4gIGNvbnN0IFtwYXJhbXMsIHNldFBhcmFtc10gPSB1c2VTdGF0ZTx7XG4gICAgZmlyc3RfbmFtZTogc3RyaW5nO1xuICAgIGxhc3RfbmFtZTogc3RyaW5nO1xuICAgIHBob25lOiBzdHJpbmc7XG4gICAgZW1haWw6IHN0cmluZztcbiAgICB0aW1lX3pvbmU6IHN0cmluZztcbiAgICBkYXRlX3RpbWVfZm9ybWF0OiBzdHJpbmc7XG4gICAgbG9jYWxlOiBzdHJpbmc7XG4gICAgdGVsZWdyYW1fbmFtZTogc3RyaW5nO1xuICAgIG90aGVyX2J1c2luZXNzX3JvbGVfbmFtZTogc3RyaW5nO1xuICAgIG90aGVyX2RlcGFydG1lbnRfbmFtZTogc3RyaW5nO1xuICAgIGZsb3dfcmF0ZV91bml0OiBzdHJpbmc7XG4gIH0+KGluaXRpYWxQYXJhbXNTdGF0ZSk7XG5cbiAgY29uc3QgaGFuZGxlT25DaGFuZ2UgPSAoZSkgPT4ge1xuICAgIGlmICh0eXBlb2YgZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmIChlLnN0YXJ0c1dpdGgoJzk3MjAnKSkge1xuICAgICAgICBlID0gZS5yZXBsYWNlKC8oOTcyMCkvZywgJzk3MicpO1xuICAgICAgfVxuICAgICAgc2V0UGFyYW1zKChwcmV2U3RhdGUpID0+ICh7XG4gICAgICAgIC4uLnByZXZTdGF0ZSxcbiAgICAgICAgcGhvbmU6IGUsXG4gICAgICB9KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgdmFsdWUsIG5hbWUgfSA9IGUudGFyZ2V0O1xuICAgICAgc2V0UGFyYW1zKChwcmV2U3RhdGUpID0+ICh7XG4gICAgICAgIC4uLnByZXZTdGF0ZSxcbiAgICAgICAgW25hbWVdOiB2YWx1ZSxcbiAgICAgIH0pKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQnVzaW5lc3NSb2xlQ2hhbmdlID0gKGUpID0+IHtcbiAgICBpZiAoZS50YXJnZXQgIT09IG51bGwpIHtcbiAgICAgIHNldFBhcmFtcyh7XG4gICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgYnVzaW5lc3Nfcm9sZTogZS52YWx1ZSxcbiAgICAgICAgb3RoZXJfYnVzaW5lc3Nfcm9sZV9uYW1lOiBlLnRhcmdldC52YWx1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVEZXBhcnRtZW50Q2hhbmdlID0gKGUpID0+IHtcbiAgICBpZiAoZS50YXJnZXQgIT09IG51bGwpIHtcbiAgICAgIHNldFBhcmFtcyh7XG4gICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgZGVwYXJ0bWVudDogZS52YWx1ZSxcbiAgICAgICAgb3RoZXJfZGVwYXJ0bWVudF9uYW1lOiBlLnRhcmdldC52YWx1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBnZXRQYXJhbXNXaXRoQWdncmVnYXRlZFZhbHVlcyA9ICgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4ucGFyYW1zLFxuICAgICAgZGF0ZV90aW1lX2Zvcm1hdDogZGF0ZVRpbWVGb3JtYXQudmFsdWUsXG4gICAgICBsb2NhbGU6IGxvY2FsZS52YWx1ZSxcbiAgICAgIHRpbWVfem9uZTogdGltZXpvbmUudmFsdWUsXG4gICAgICBkZXBhcnRtZW50X2lkOiBkZXBhcnRtZW50ID09PSB1bmRlZmluZWQgPyBudWxsIDogZGVwYXJ0bWVudC52YWx1ZSxcbiAgICAgIGJ1c2luZXNzX3JvbGVfaWQ6IGJ1c2luZXNzUm9sZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGJ1c2luZXNzUm9sZS52YWx1ZSxcbiAgICAgIGZsb3dfcmF0ZV91bml0OiBmbG93UmF0ZVVuaXQudmFsdWUsXG4gICAgfTtcbiAgfTtcblxuICBjb25zdCB3YXRlckF1dGhvcml0eU5hbWUgPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLmdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5TmFtZSxcbiAgKTtcblxuICBjb25zdCBzaG93VG9hc3QgPSAoZGF0YSkgPT4ge1xuICAgIGNvbnN0IHVzZXJuYW1lID0gZGF0YS51c2VybmFtZTtcbiAgICBjb25zdCBlcnJvciA9IGRhdGEuZXJyb3I7XG4gICAgaWYgKGRhdGEuc3RhdHVzID09PSAnc3VjY2VzcycpIHtcbiAgICAgIHRvYXN0LnN1Y2Nlc3MoXG4gICAgICAgIGkxOG4udChgbXlfcHJvZmlsZV90YWIudGVsZWdyYW1fbWVzc2FnZXMuJHtkYXRhLm1lc3NhZ2V9YCwge1xuICAgICAgICAgIHVzZXJuYW1lLFxuICAgICAgICB9KSxcbiAgICAgICAge1xuICAgICAgICAgIHBvc2l0aW9uOiAndG9wLWNlbnRlcicsXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0b2FzdC5lcnJvcihcbiAgICAgICAgaTE4bi50KGBteV9wcm9maWxlX3RhYi50ZWxlZ3JhbV9tZXNzYWdlcy4ke2RhdGEubWVzc2FnZX1gLCB7XG4gICAgICAgICAgZXJyb3I6IGVycm9yLFxuICAgICAgICAgIHVzZXJuYW1lOiB1c2VybmFtZSxcbiAgICAgICAgfSksXG4gICAgICAgIHtcbiAgICAgICAgICBwb3NpdGlvbjogJ3RvcC1jZW50ZXInLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdCA9IChlKSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHNldFN1Ym1pdHRpbmcodHJ1ZSk7XG4gICAgYXhpb3NcbiAgICAgIC5wdXQoJy9wcm9maWxlcycsIHsgdXNlcjogZ2V0UGFyYW1zV2l0aEFnZ3JlZ2F0ZWRWYWx1ZXMoKSB9KVxuICAgICAgLnRoZW4oKHJlc3ApID0+IHtcbiAgICAgICAgaWYgKHJlc3AuZGF0YS5lcnJvcnMgPT09IG51bGwpIHtcbiAgICAgICAgICBkaXNwYXRjaChcbiAgICAgICAgICAgIFBlcm1pc3Npb25zU2xpY2UuYWN0aW9ucy5zZXRVc2VySW5mbyhKU09OLnBhcnNlKHJlc3AuZGF0YS51c2VyKSksXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGRvY3VtZW50XG4gICAgICAgICAgICAucXVlcnlTZWxlY3RvckFsbCgnLmVycm9yLW1lc3NhZ2UnKVxuICAgICAgICAgICAgLmZvckVhY2goKHApID0+IChwLmlubmVySFRNTCA9ICcnKSk7XG5cbiAgICAgICAgICBkb2N1bWVudFxuICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoJy5pbnZhbGlkLWZpZWxkJylcbiAgICAgICAgICAgIC5mb3JFYWNoKChwKSA9PiBwLmNsYXNzTGlzdC5yZW1vdmUoJ2ludmFsaWQtZmllbGQnKSk7XG4gICAgICAgICAgbGV0IHVzZXIgPSBKU09OLnBhcnNlKHJlc3AuZGF0YS51c2VyKTtcbiAgICAgICAgICBjb25zdCBmaW5kTG9jYWxlID0gbG9jYWxlT3B0aW9ucy5maW5kKChlKSA9PiBlLnZhbHVlID09PSB1c2VyLmxvY2FsZSk7XG4gICAgICAgICAgY29uc3QgZmluZEZsb3dSYXRlVW5pdCA9IGZsb3dSYXRlVW5pdE9wdGlvbnMuZmluZChcbiAgICAgICAgICAgIChlKSA9PiBlLnZhbHVlID09PSB1c2VyLmZsb3dfcmF0ZV91bml0LFxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgZmluZERhdGVUaW1lRm9ybWF0ID0gZGF0ZVRpbWVGb3JtYXRPcHRpb25zLmZpbmQoXG4gICAgICAgICAgICAoZSkgPT4gZS52YWx1ZSA9PT0gdXNlci5kYXRlX3RpbWVfZm9ybWF0LFxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgZmluZFRpbWV6b25lID0gdGltZXpvbmVzLmZpbmQoXG4gICAgICAgICAgICAoZSkgPT4gZS52YWx1ZSA9PT0gdXNlci50aW1lX3pvbmUsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHNldFBhcmFtcyh1c2VyKTtcbiAgICAgICAgICBzZXRMb2NhbGUoZmluZExvY2FsZSEpO1xuICAgICAgICAgIHNldEZsb3dSYXRlVW5pdChmaW5kRmxvd1JhdGVVbml0ISk7XG4gICAgICAgICAgc2V0RGF0ZVRpbWVGb3JtYXQoZmluZERhdGVUaW1lRm9ybWF0ISk7XG4gICAgICAgICAgc2V0VGltZXpvbmUoZmluZFRpbWV6b25lISk7XG4gICAgICAgICAgc2V0U2hvd1N1Y2Nlc3NNZXNzYWdlKHRydWUpO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgc2V0U2hvd1N1Y2Nlc3NNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgICB9LCA2MDAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkb2N1bWVudFxuICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoJy5lcnJvci1tZXNzYWdlJylcbiAgICAgICAgICAgIC5mb3JFYWNoKChwKSA9PiAocC5pbm5lckhUTUwgPSAnJykpO1xuICAgICAgICAgIGxldCBlcnJvcnMgPSByZXNwLmRhdGEudXNlci5lcnJvcnM7XG4gICAgICAgICAgZm9yIChjb25zdCBlcnJvciBpbiBlcnJvcnMpIHtcbiAgICAgICAgICAgIGxldCBmaW5kRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYGlucHV0W25hbWU9JyR7ZXJyb3J9J11gKTtcbiAgICAgICAgICAgIGxldCBwYXJlbnQgPSBmaW5kRWxlbWVudCEuY2xvc2VzdCgnLmZpZWxkJyk7XG4gICAgICAgICAgICBsZXQgZmluZElucHV0ID0gcGFyZW50IS5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpO1xuICAgICAgICAgICAgZmluZElucHV0IS5jbGFzc0xpc3QuYWRkKCdpbnZhbGlkLWZpZWxkJyk7XG4gICAgICAgICAgICBwYXJlbnQhLnF1ZXJ5U2VsZWN0b3IoJy5lcnJvci1tZXNzYWdlJykhLmlubmVySFRNTCA9IGkxOG4udChcbiAgICAgICAgICAgICAgYGRhc2hib2FyZF92Mi5wcm9maWxlLmVycm9ycy4ke2Vycm9yfWAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZXRTaG93U3VjY2Vzc01lc3NhZ2UoZmFsc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0U3VibWl0dGluZyhmYWxzZSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICBzZXRTaG93RXJyb3JNZXNzYWdlKHRydWUpO1xuICAgICAgICBzZXRTaG93U3VjY2Vzc01lc3NhZ2UoZmFsc2UpO1xuICAgICAgICBzZXRTdWJtaXR0aW5nKGZhbHNlKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgc2V0U2hvd0Vycm9yTWVzc2FnZShmYWxzZSk7XG4gICAgICAgIH0sIDYwMDApO1xuICAgICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBhbmFseXRpY3NUcmFjaygnVmlld2VkIFByb2ZpbGUgUGFnZScsIHtcbiAgICAgIHV0aWxpdHlfbmFtZTogd2F0ZXJBdXRob3JpdHlOYW1lLFxuICAgIH0pO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCB0b2tlbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tuYW1lPWNzcmYtdG9rZW5dJykhLmNvbnRlbnQ7XG4gICAgYXhpb3MuZGVmYXVsdHMuaGVhZGVycy5jb21tb25bJ1gtQ1NSRi1UT0tFTiddID0gdG9rZW47XG4gICAgYXhpb3MuZGVmYXVsdHMuaGVhZGVycy5jb21tb25bJ0NvbnRlbnQtVHlwZSddID0gJ2FwcGxpY2F0aW9uL2pzJztcbiAgICBheGlvc1xuICAgICAgLmdldChgL3Byb2ZpbGVzL3Jlc291cmNlYClcbiAgICAgIC50aGVuKChyZXNwKSA9PiB7XG4gICAgICAgIHNldFBhcmFtcyhyZXNwLmRhdGEudXNlcik7XG4gICAgICAgIGNvbnN0IGZpbmRQcm9wZXJ0eSA9IChvYmplY3QsIHByb3BlcnR5KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG9iamVjdC5maW5kKChlKSA9PiBlLnZhbHVlID09PSBwcm9wZXJ0eSk7XG4gICAgICAgIH07XG4gICAgICAgIHNldExvY2FsZShmaW5kUHJvcGVydHkobG9jYWxlT3B0aW9ucywgcmVzcC5kYXRhLnVzZXIubG9jYWxlKSk7XG4gICAgICAgIHNldEZsb3dSYXRlVW5pdChcbiAgICAgICAgICBmaW5kUHJvcGVydHkoZmxvd1JhdGVVbml0T3B0aW9ucywgcmVzcC5kYXRhLnVzZXIuZmxvd19yYXRlX3VuaXQpLFxuICAgICAgICApO1xuICAgICAgICBzZXREYXRlVGltZUZvcm1hdChcbiAgICAgICAgICBmaW5kUHJvcGVydHkoZGF0ZVRpbWVGb3JtYXRPcHRpb25zLCByZXNwLmRhdGEudXNlci5kYXRlX3RpbWVfZm9ybWF0KSxcbiAgICAgICAgKTtcbiAgICAgICAgc2V0VGltZXpvbmUoZmluZFByb3BlcnR5KHRpbWV6b25lcywgcmVzcC5kYXRhLnVzZXIudGltZV96b25lKSk7XG4gICAgICAgIHNldEJ1c2luZXNzUm9sZShcbiAgICAgICAgICBmaW5kUHJvcGVydHkoXG4gICAgICAgICAgICByZXNwLmRhdGEuYnVzaW5lc3Nfcm9sZXMsXG4gICAgICAgICAgICByZXNwLmRhdGEudXNlci5idXNpbmVzc19yb2xlX2lkLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICAgIHNldERlcGFydG1lbnQoXG4gICAgICAgICAgZmluZFByb3BlcnR5KHJlc3AuZGF0YS5kZXBhcnRtZW50cywgcmVzcC5kYXRhLnVzZXIuZGVwYXJ0bWVudF9pZCksXG4gICAgICAgICk7XG4gICAgICAgIHNldERlcGFydG1lbnRzKHJlc3AuZGF0YS5kZXBhcnRtZW50cyk7XG4gICAgICAgIHNldEJ1c2luZXNzUm9sZXMocmVzcC5kYXRhLmJ1c2luZXNzX3JvbGVzKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiBhbGVydChlcnJvcikpO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWFkZXItdGl0bGVcIj57aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS50aXRsZScpfTwvZGl2PlxuICAgICAgPGZvcm0gYWN0aW9uPVwiXCIgb25TdWJtaXQ9eyhlKSA9PiBoYW5kbGVTdWJtaXQoZSl9PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRlbnRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRpdGxlXCI+XG4gICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5wZXJzb25hbC1kZXRhaWxzJyl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwicGVyc29uYWxcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmZpcnN0X25hbWUnKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJteS1pbnB1dFwiXG4gICAgICAgICAgICAgICAgbmFtZT17J2ZpcnN0X25hbWUnfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtwYXJhbXMuZmlyc3RfbmFtZX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZU9uQ2hhbmdlKGUpfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9eydlcnJvci1tZXNzYWdlJ30+PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5sYXN0X25hbWUnKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJteS1pbnB1dFwiXG4gICAgICAgICAgICAgICAgbmFtZT17J2xhc3RfbmFtZSd9XG4gICAgICAgICAgICAgICAgdmFsdWU9e3BhcmFtcy5sYXN0X25hbWV9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVPbkNoYW5nZShlKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPXsnZXJyb3ItbWVzc2FnZSd9PjwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZCBmaWVsZC0tcmVhZG9ubHlcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmVtYWlsJyl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICByZWFkT25seT17dHJ1ZX1cbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXktaW5wdXRcIlxuICAgICAgICAgICAgICAgIG5hbWU9eydlbWFpbCd9XG4gICAgICAgICAgICAgICAgdmFsdWU9e3BhcmFtcy5lbWFpbH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPXsnZXJyb3ItbWVzc2FnZSd9PjwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUucGhvbmUnKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxQaG9uZUlucHV0XG4gICAgICAgICAgICAgICAgY291bnRyeT17J2lsJ31cbiAgICAgICAgICAgICAgICBsb2NhbGl6YXRpb249e2kxOG4udCgnY291bnRyaWVzJyl9XG4gICAgICAgICAgICAgICAgaW5wdXRDbGFzcz1cInBob25lLWlucHV0XCJcbiAgICAgICAgICAgICAgICBjb250YWluZXJDbGFzcz1cIm15LXBob25lXCJcbiAgICAgICAgICAgICAgICBidXR0b25DbGFzcz1cImRyb3Bkb3duXCJcbiAgICAgICAgICAgICAgICBkcm9wZG93bkNsYXNzPVwicGhvbmUtZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgIHZhbHVlPXtwYXJhbXMucGhvbmV9XG4gICAgICAgICAgICAgICAgZW5hYmxlU2VhcmNoXG4gICAgICAgICAgICAgICAgc2VhcmNoUGxhY2Vob2xkZXI9e2kxOG4udCgnc2VhcmNoJyl9XG4gICAgICAgICAgICAgICAgY291bnRyeUNvZGVFZGl0YWJsZT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgaGFuZGxlT25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgaW5wdXRQcm9wcz17eyBuYW1lOiAncGhvbmUnIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT17J2Vycm9yLW1lc3NhZ2UnfT48L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIHtkZXBhcnRtZW50c1swXS52YWx1ZSAhPT0gJycgJiYgKFxuICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuZGVwYXJ0bWVudCcpfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm15LWlucHV0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZT17c2V0RGVwYXJ0bWVudH1cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGkxOG4udChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYGRhc2hib2FyZF92Mi5wcm9maWxlLmRlcGFydG1lbnRzLiR7ZGVwYXJ0bWVudD8ubGFiZWx9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZGVwYXJ0bWVudD8udmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPXtkZXBhcnRtZW50c31cbiAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxUZXh0V2lkdGhcbiAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IGRlcGFydG1lbnRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25fa2V5OiAnZGFzaGJvYXJkX3YyLnByb2ZpbGUuZGVwYXJ0bWVudHMnLFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmJ1c2luZXNzX3JvbGUnKX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteS1pbnB1dFwiPlxuICAgICAgICAgICAgICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWU9e3NldEJ1c2luZXNzUm9sZX1cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGkxOG4udChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYGRhc2hib2FyZF92Mi5wcm9maWxlLmJ1c2luZXNzX3JvbGVzLiR7YnVzaW5lc3NSb2xlPy5sYWJlbH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBidXNpbmVzc1JvbGU/LnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz17YnVzaW5lc3NSb2xlc31cbiAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxUZXh0V2lkdGhcbiAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IGJ1c2luZXNzUm9sZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbl9rZXk6ICdkYXNoYm9hcmRfdjIucHJvZmlsZS5idXNpbmVzc19yb2xlcycsXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7ZGVwYXJ0bWVudHNbMF0udmFsdWUgIT09ICcnICYmIChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BmaWVsZCAke1xuICAgICAgICAgICAgICAgICAgICBkZXBhcnRtZW50ICYmXG4gICAgICAgICAgICAgICAgICAgIGRlcGFydG1lbnQ/LnZhbHVlID09PVxuICAgICAgICAgICAgICAgICAgICAgIGRlcGFydG1lbnRzW2RlcGFydG1lbnRzLmxlbmd0aCAtIDFdLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgPyAnJ1xuICAgICAgICAgICAgICAgICAgICAgIDogJ2ZpZWxkLS1oaWRkZW4nXG4gICAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmRlcGFydG1lbnRfYWx0Jyl9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICByZWFkT25seT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXktaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPXsnb3RoZXJfZGVwYXJ0bWVudF9uYW1lJ31cbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3BhcmFtcy5vdGhlcl9kZXBhcnRtZW50X25hbWV9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlRGVwYXJ0bWVudENoYW5nZShlKX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgZmllbGQgJHtcbiAgICAgICAgICAgICAgICAgICAgYnVzaW5lc3NSb2xlICYmXG4gICAgICAgICAgICAgICAgICAgIGJ1c2luZXNzUm9sZT8udmFsdWUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgYnVzaW5lc3NSb2xlc1tidXNpbmVzc1JvbGVzLmxlbmd0aCAtIDFdLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgPyAnJ1xuICAgICAgICAgICAgICAgICAgICAgIDogJ2ZpZWxkLS1oaWRkZW4nXG4gICAgICAgICAgICAgICAgICB9IGB9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5idXNpbmVzc19yb2xlX2FsdCcpfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgcmVhZE9ubHk9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm15LWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT17J290aGVyX2J1c2luZXNzX3JvbGVfbmFtZSd9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtwYXJhbXMub3RoZXJfYnVzaW5lc3Nfcm9sZV9uYW1lfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZUJ1c2luZXNzUm9sZUNoYW5nZShlKX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImNoYW5nZS1wYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U2hvd1Bhc3N3b3JkTW9kYWwodHJ1ZSl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8UGVuU3ZnIHdpZHRoPVwiMTJweFwiIGhlaWdodD1cIjEycHhcIiBmaWxsPVwiI2YwMTM0Y1wiIC8+XG4gICAgICAgICAgICAgICAgeycgICd9XG4gICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuY2hhbmdlLXBhc3N3b3JkJyl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGl0bGVcIj57aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5zZXR0aW5ncycpfTwvZGl2PlxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzTmFtZT1cInNldHRpbmdzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS50aW1lLXpvbmUnKX0qXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm15LWlucHV0XCI+XG4gICAgICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICAgICAgc2V0VmFsdWU9e3NldFRpbWV6b25lfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e3RpbWV6b25lfVxuICAgICAgICAgICAgICAgICAgb3B0aW9ucz17dGltZXpvbmVzfVxuICAgICAgICAgICAgICAgICAgY2FuY2VsVGV4dFdpZHRoXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmRhdGUtdGltZS1mb3JtYXQnKX0qXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm15LWlucHV0XCI+XG4gICAgICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICAgICAgb3B0aW9ucz17ZGF0ZVRpbWVGb3JtYXRPcHRpb25zfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e2RhdGVUaW1lRm9ybWF0fVxuICAgICAgICAgICAgICAgICAgc2V0VmFsdWU9e3NldERhdGVUaW1lRm9ybWF0fVxuICAgICAgICAgICAgICAgICAgY2FuY2VsVGV4dFdpZHRoXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZGF0ZS10aW1lLWZvcm1hdCd9PlxuICAgICAgICAgICAgICAgIHtkYXRlVGltZUZvcm1hdCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICBuZXcgRGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZygnZW4tVVMnLCBkYXRlVGltZUZvcm1hdC5mb3JtYXQpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUubGFuZ3VhZ2UnKX0qXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J215LWlucHV0J30+XG4gICAgICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICAgICAgb3B0aW9ucz17bG9jYWxlT3B0aW9uc31cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICBzZXRWYWx1ZT17c2V0TG9jYWxlfVxuICAgICAgICAgICAgICAgICAgY2FuY2VsVGV4dFdpZHRoXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGQgZmllbGQtLWJ1dHRvbnNcIj5cbiAgICAgICAgICAgICAge3BhcmFtcy50ZWxlZ3JhbV9uYW1lID09PSAnJyAmJiAoXG4gICAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPVwidGVsZWdyYW1cIiBvbkNsaWNrPXsoKSA9PiBzZXRJc1RlbGVncmFtT3Blbih0cnVlKX0+XG4gICAgICAgICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5jb25uZWN0LXRvLXRlbGVncmFtJyl9XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7cGFyYW1zLnRlbGVncmFtX25hbWUgIT09ICcnICYmIChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUudGVsZWdyYW1fbmFtZScpfVxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzVGVsZWdyYW1PcGVuKHRydWUpfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQZW5Tdmcgd2lkdGg9XCIxMnB4XCIgaGVpZ2h0PVwiMTJweFwiIGZpbGw9XCIjZjAxMzRjXCIgLz57JyAnfVxuICAgICAgICAgICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuY2hhbmdlLW5hbWUnKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsndGVsZWdyYW0tZXhpc3RpbmctaW5wdXQnfT5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRPbmx5PXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXktaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT17J3RlbGVncmFtX25hbWUnfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3BhcmFtcy50ZWxlZ3JhbV9uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsndGVsZWdyYW0tZXhpc3RpbmctaW5wdXRfX2NhbmNlbC1idXR0b24nfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UGFyYW1zKChwcmV2U3RhdGUpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbGVncmFtX25hbWU6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDYW5jZWwgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT17J2Vycm9yLW1lc3NhZ2UnfT48L3A+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsndGVsZWdyYW0gb3Blbid9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXhpb3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldChgL3RlbGVncmFtL3NlbmRfdGVzdF9tZXNzYWdlLmpzb25gKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbigocmVzcCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNob3dUZWxlZ3JhbVJlc3BvbnNlTWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3AuZGF0YS51c2VyLnN0YXR1c1swXS50b1VwcGVyQ2FzZSgpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcC5kYXRhLnVzZXIuc3RhdHVzLnN1YnN0cmluZygxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHJlc3AuZGF0YS51c2VyLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2hvd1RlbGVncmFtUmVzcG9uc2VNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3c6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgNjAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1RvYXN0KHJlc3AuZGF0YS51c2VyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gYWxlcnQoZXJyb3IpKTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgeyFzaG93VGVsZWdyYW1SZXNwb25zZU1lc3NhZ2Uuc2hvdyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgaTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5zZW5kX3RlbGVncmFtX21lc3NhZ2UnKX1cbiAgICAgICAgICAgICAgICAgICAgICB7c2hvd1RlbGVncmFtUmVzcG9uc2VNZXNzYWdlLnNob3cgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dUZWxlZ3JhbVJlc3BvbnNlTWVzc2FnZS5zdGF0dXN9XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5mbG93X3JhdGVfdW5pdHMnKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnbXktaW5wdXQnfT5cbiAgICAgICAgICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgICAgICAgICBvcHRpb25zPXtmbG93UmF0ZVVuaXRPcHRpb25zfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e2Zsb3dSYXRlVW5pdH1cbiAgICAgICAgICAgICAgICAgIHNldFZhbHVlPXtzZXRGbG93UmF0ZVVuaXR9XG4gICAgICAgICAgICAgICAgICBjYW5jZWxUZXh0V2lkdGhcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgICA8YnV0dG9uIHR5cGU9eydzdWJtaXQnfSBjbGFzc05hbWU9eydzYXZlJ30gZGlzYWJsZWQ9e3N1Ym1pdHRpbmd9PlxuICAgICAgICAgICAgeyFzdWJtaXR0aW5nICYmXG4gICAgICAgICAgICAgICFzaG93U3VjY2Vzc01lc3NhZ2UgJiZcbiAgICAgICAgICAgICAgIXNob3dFcnJvck1lc3NhZ2UgJiZcbiAgICAgICAgICAgICAgaTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5zdWJtaXQnKX1cbiAgICAgICAgICAgIHtzdWJtaXR0aW5nICYmXG4gICAgICAgICAgICAgICFzaG93U3VjY2Vzc01lc3NhZ2UgJiZcbiAgICAgICAgICAgICAgIXNob3dFcnJvck1lc3NhZ2UgJiZcbiAgICAgICAgICAgICAgaTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5zdWJtaXR0aW5nJyl9XG4gICAgICAgICAgICB7c2hvd1N1Y2Nlc3NNZXNzYWdlICYmIGkxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuc3VjY2VzcycpfVxuICAgICAgICAgICAge3Nob3dFcnJvck1lc3NhZ2UgJiYgaTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5lcnJvcicpfVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZm9ybT5cblxuICAgICAge3Nob3dQYXNzd29yZE1vZGFsICYmIChcbiAgICAgICAgPFBhc3N3b3JkTW9kYWxcbiAgICAgICAgICBjbG9zZT17KCkgPT4gc2V0U2hvd1Bhc3N3b3JkTW9kYWwoZmFsc2UpfVxuICAgICAgICAgIHNhdmU9eygpID0+IHt9fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIHtpc1RlbGVncmFtT3BlbiAmJiAoXG4gICAgICAgIDxUZWxlZ3JhbU1vZGFsXG4gICAgICAgICAgY2xvc2U9eygpID0+IHNldElzVGVsZWdyYW1PcGVuKGZhbHNlKX1cbiAgICAgICAgICBoYW5kbGVPbkNoYW5nZT17aGFuZGxlT25DaGFuZ2V9XG4gICAgICAgICAgaGFuZGxlU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvQ29udGFpbmVyPlxuICApO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFB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
510
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfU2VsZWN0IiwiX2kxOG4iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX1Bhc3N3b3JkTW9kYWwiLCJfcGVuIiwiX2NhbmNlbCIsIl9yZWFjdFBob25lSW5wdXQiLCJfVGVsZWdyYW1Nb2RhbCIsIl9heGlvcyIsIl9Db250YWluZXIiLCJfbW9tZW50VGltZXpvbmUiLCJfQW5hbHl0aWNzIiwiX3JlYWN0UmVkdXgiLCJfcmVhY3RUb2FzdGlmeSIsIl9wZXJtaXNzaW9uc1NsaWNlIiwiUHJvZmlsZVBhZ2UiLCJ0aW1lem9uZXNBcnJheSIsIm1vbWVudCIsInR6IiwibmFtZXMiLCJkYXRlVGltZUZvcm1hdE9wdGlvbnMiLCJ2YWx1ZSIsImxhYmVsIiwiZm9ybWF0IiwibW9udGgiLCJkYXkiLCJ5ZWFyIiwiaG91ciIsIm1pbnV0ZSIsImhvdXIxMiIsInRpbWV6b25lcyIsIm1hcCIsInQiLCJsb2NhbGVPcHRpb25zIiwiZmxvd1JhdGVVbml0T3B0aW9ucyIsImkxOG4iLCJsb2NhbGUiLCJzZXRMb2NhbGUiLCJ1c2VTdGF0ZSIsImZsb3dSYXRlVW5pdCIsInNldEZsb3dSYXRlVW5pdCIsImRhdGVUaW1lRm9ybWF0Iiwic2V0RGF0ZVRpbWVGb3JtYXQiLCJ0aW1lem9uZSIsInNldFRpbWV6b25lIiwiZGVwYXJ0bWVudHMiLCJzZXREZXBhcnRtZW50cyIsImJ1c2luZXNzUm9sZXMiLCJzZXRCdXNpbmVzc1JvbGVzIiwiZGVwYXJ0bWVudCIsInNldERlcGFydG1lbnQiLCJidXNpbmVzc1JvbGUiLCJzZXRCdXNpbmVzc1JvbGUiLCJpbml0aWFsUGFyYW1zU3RhdGUiLCJmaXJzdF9uYW1lIiwibGFzdF9uYW1lIiwicGhvbmUiLCJlbWFpbCIsInRpbWVfem9uZSIsImRhdGVfdGltZV9mb3JtYXQiLCJ0ZWxlZ3JhbV9uYW1lIiwib3RoZXJfYnVzaW5lc3Nfcm9sZV9uYW1lIiwib3RoZXJfZGVwYXJ0bWVudF9uYW1lIiwiYnVzaW5lc3Nfcm9sZSIsImZsb3dfcmF0ZV91bml0IiwiaXNUZWxlZ3JhbU9wZW4iLCJzZXRJc1RlbGVncmFtT3BlbiIsInNob3dQYXNzd29yZE1vZGFsIiwic2V0U2hvd1Bhc3N3b3JkTW9kYWwiLCJzdWJtaXR0aW5nIiwic2V0U3VibWl0dGluZyIsInNob3dTdWNjZXNzTWVzc2FnZSIsInNldFNob3dTdWNjZXNzTWVzc2FnZSIsInNob3dFcnJvck1lc3NhZ2UiLCJzZXRTaG93RXJyb3JNZXNzYWdlIiwic2hvd1RlbGVncmFtUmVzcG9uc2VNZXNzYWdlIiwic2V0U2hvd1RlbGVncmFtUmVzcG9uc2VNZXNzYWdlIiwic2hvdyIsInN0YXR1cyIsIm1lc3NhZ2UiLCJwYXJhbXMiLCJzZXRQYXJhbXMiLCJoYW5kbGVPbkNoYW5nZSIsImUiLCJzdGFydHNXaXRoIiwicmVwbGFjZSIsInByZXZTdGF0ZSIsIm5hbWUiLCJ0YXJnZXQiLCJoYW5kbGVCdXNpbmVzc1JvbGVDaGFuZ2UiLCJoYW5kbGVEZXBhcnRtZW50Q2hhbmdlIiwiZ2V0UGFyYW1zV2l0aEFnZ3JlZ2F0ZWRWYWx1ZXMiLCJkZXBhcnRtZW50X2lkIiwidW5kZWZpbmVkIiwiYnVzaW5lc3Nfcm9sZV9pZCIsIndhdGVyQXV0aG9yaXR5TmFtZSIsInVzZVNlbGVjdG9yIiwic3RhdGUiLCJnbG9iYWxfZGF0YSIsInNob3dUb2FzdCIsImRhdGEiLCJ1c2VybmFtZSIsImVycm9yIiwidG9hc3QiLCJzdWNjZXNzIiwiY29uY2F0IiwicG9zaXRpb24iLCJkaXNwYXRjaCIsInVzZURpc3BhdGNoIiwiaGFuZGxlU3VibWl0IiwicHJldmVudERlZmF1bHQiLCJheGlvcyIsInB1dCIsInVzZXIiLCJ0aGVuIiwicmVzcCIsImVycm9ycyIsIlBlcm1pc3Npb25zU2xpY2UiLCJhY3Rpb25zIiwic2V0VXNlckluZm8iLCJKU09OIiwicGFyc2UiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJmb3JFYWNoIiwicCIsImlubmVySFRNTCIsImNsYXNzTGlzdCIsInJlbW92ZSIsImZpbmRMb2NhbGUiLCJmaW5kIiwiZmluZEZsb3dSYXRlVW5pdCIsImZpbmREYXRlVGltZUZvcm1hdCIsImZpbmRUaW1lem9uZSIsInNldFRpbWVvdXQiLCJmaW5kRWxlbWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJwYXJlbnQiLCJjbG9zZXN0IiwiZmluZElucHV0IiwiYWRkIiwiY2F0Y2giLCJ1c2VFZmZlY3QiLCJhbmFseXRpY3NUcmFjayIsInV0aWxpdHlfbmFtZSIsInRva2VuIiwiY29udGVudCIsImRlZmF1bHRzIiwiaGVhZGVycyIsImNvbW1vbiIsImdldCIsImZpbmRQcm9wZXJ0eSIsIm9iamVjdCIsInByb3BlcnR5IiwiYnVzaW5lc3Nfcm9sZXMiLCJhbGVydCIsImRlZmF1bHQiLCJjcmVhdGVFbGVtZW50IiwiQ29udGFpbmVyIiwiY2xhc3NOYW1lIiwiYWN0aW9uIiwib25TdWJtaXQiLCJ0eXBlIiwib25DaGFuZ2UiLCJyZWFkT25seSIsImNvdW50cnkiLCJsb2NhbGl6YXRpb24iLCJpbnB1dENsYXNzIiwiY29udGFpbmVyQ2xhc3MiLCJidXR0b25DbGFzcyIsImRyb3Bkb3duQ2xhc3MiLCJlbmFibGVTZWFyY2giLCJzZWFyY2hQbGFjZWhvbGRlciIsImNvdW50cnlDb2RlRWRpdGFibGUiLCJpbnB1dFByb3BzIiwiRnJhZ21lbnQiLCJTZWxlY3QiLCJzZXRWYWx1ZSIsIm9wdGlvbnMiLCJjYW5jZWxUZXh0V2lkdGgiLCJ0cmFuc2xhdGUiLCJ0cmFuc2xhdGlvbl9rZXkiLCJsZW5ndGgiLCJvbkNsaWNrIiwiUmVhY3RDb21wb25lbnQiLCJ3aWR0aCIsImhlaWdodCIsImZpbGwiLCJEYXRlIiwidG9Mb2NhbGVEYXRlU3RyaW5nIiwidG9VcHBlckNhc2UiLCJzdWJzdHJpbmciLCJkaXNhYmxlZCIsIlBhc3N3b3JkTW9kYWwiLCJjbG9zZSIsInNhdmUiLCJUZWxlZ3JhbU1vZGFsIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWdlcy9Qcm9maWxlUGFnZS9Qcm9maWxlUGFnZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBTZWxlY3QgfSBmcm9tICdzcmMvY29tcG9uZW50cy9DdXN0b21JbnB1dHMvU2VsZWN0L1NlbGVjdCc7XG5pbXBvcnQgaTE4biBmcm9tICdzcmMvdXRpbGl0aWVzL2kxOG4nO1xuaW1wb3J0IHsgUGFzc3dvcmRNb2RhbCB9IGZyb20gJy4vUGFzc3dvcmRNb2RhbC9QYXNzd29yZE1vZGFsJztcbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIFBlblN2ZyB9IGZyb20gJy4vcGVuLnN2Zyc7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBDYW5jZWwgfSBmcm9tICcuL2NhbmNlbC5zdmcnO1xuaW1wb3J0IFBob25lSW5wdXQgZnJvbSAncmVhY3QtcGhvbmUtaW5wdXQtMic7XG5pbXBvcnQgJ3JlYWN0LXBob25lLWlucHV0LTIvbGliL3N0eWxlLmNzcyc7XG5pbXBvcnQgeyBUZWxlZ3JhbU1vZGFsIH0gZnJvbSAnLi9UZWxlZ3JhbU1vZGFsL1RlbGVncmFtTW9kYWwnO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IENvbnRhaW5lciB9IGZyb20gJy4vQ29udGFpbmVyJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50LXRpbWV6b25lJztcbmltcG9ydCB7IGFuYWx5dGljc1RyYWNrIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL0FuYWx5dGljcyc7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQgeyB0b2FzdCB9IGZyb20gJ3JlYWN0LXRvYXN0aWZ5JztcbmltcG9ydCB7IFBlcm1pc3Npb25zU2xpY2UgfSBmcm9tICdzcmMvc3RvcmUvcGVybWlzc2lvbnMvcGVybWlzc2lvbnNTbGljZSc7XG5cbmV4cG9ydCBjb25zdCBQcm9maWxlUGFnZSA9ICgpID0+IHtcbiAgY29uc3QgdGltZXpvbmVzQXJyYXkgPSBtb21lbnQudHoubmFtZXMoKTtcbiAgY29uc3QgZGF0ZVRpbWVGb3JtYXRPcHRpb25zID0gW1xuICAgIHtcbiAgICAgIHZhbHVlOiAndXMnLFxuICAgICAgbGFiZWw6ICdVbml0ZWQgU3RhdGVzJyxcbiAgICAgIGZvcm1hdDoge1xuICAgICAgICBtb250aDogJ3Nob3J0JyxcbiAgICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICAgIHllYXI6ICdudW1lcmljJyxcbiAgICAgICAgaG91cjogJ251bWVyaWMnLFxuICAgICAgICBtaW51dGU6ICdudW1lcmljJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICB2YWx1ZTogJ2V1JyxcbiAgICAgIGxhYmVsOiAnRXVyb3BlJyxcbiAgICAgIGZvcm1hdDoge1xuICAgICAgICBkYXk6ICdudW1lcmljJyxcbiAgICAgICAgbW9udGg6ICdudW1lcmljJyxcbiAgICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgICBob3VyOiAnbnVtZXJpYycsXG4gICAgICAgIG1pbnV0ZTogJ251bWVyaWMnLFxuICAgICAgICBob3VyMTI6IGZhbHNlLFxuICAgICAgfSxcbiAgICB9LFxuICBdO1xuXG4gIGNvbnN0IHRpbWV6b25lcyA9IHRpbWV6b25lc0FycmF5Lm1hcCgodCkgPT4ge1xuICAgIHJldHVybiB7IHZhbHVlOiB0LCBsYWJlbDogdCB9O1xuICB9KTtcblxuICBjb25zdCBsb2NhbGVPcHRpb25zID0gW1xuICAgIHsgdmFsdWU6ICdlbicsIGxhYmVsOiAnRW5nbGlzaCcgfSxcbiAgICB7IHZhbHVlOiAnZW5fdWsnLCBsYWJlbDogJ0VuZ2xpc2ggKFVLKScgfSxcbiAgICB7IHZhbHVlOiAnaGUnLCBsYWJlbDogJ9ei15HXqNeZ16onIH0sXG4gICAgeyB2YWx1ZTogJ2ZyJywgbGFiZWw6ICdGcmFuw6dhaXMnIH0sXG4gICAgeyB2YWx1ZTogJ2l0JywgbGFiZWw6ICdJdGFsaWFubycgfSxcbiAgXTtcblxuICBjb25zdCBmbG93UmF0ZVVuaXRPcHRpb25zID0gW1xuICAgIHtcbiAgICAgIHZhbHVlOiAnbWdkJyxcbiAgICAgIGxhYmVsOiBpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmZsb3dfcmF0ZV91bml0X29wdGlvbnMubWdkJyksXG4gICAgfSxcbiAgICB7XG4gICAgICB2YWx1ZTogJ20zZCcsXG4gICAgICBsYWJlbDogaTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5mbG93X3JhdGVfdW5pdF9vcHRpb25zLm0zZCcpLFxuICAgIH0sXG4gIF07XG5cbiAgY29uc3QgW2xvY2FsZSwgc2V0TG9jYWxlXSA9IHVzZVN0YXRlPHtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH0+KGxvY2FsZU9wdGlvbnNbMF0pO1xuXG4gIGNvbnN0IFtmbG93UmF0ZVVuaXQsIHNldEZsb3dSYXRlVW5pdF0gPSB1c2VTdGF0ZTx7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICB9PihmbG93UmF0ZVVuaXRPcHRpb25zWzBdKTtcblxuICBjb25zdCBbZGF0ZVRpbWVGb3JtYXQsIHNldERhdGVUaW1lRm9ybWF0XSA9IHVzZVN0YXRlPHtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgZm9ybWF0OiBvYmplY3Q7XG4gIH0+KGRhdGVUaW1lRm9ybWF0T3B0aW9uc1swXSk7XG5cbiAgY29uc3QgW3RpbWV6b25lLCBzZXRUaW1lem9uZV0gPSB1c2VTdGF0ZTx7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICB9Pih0aW1lem9uZXNbMjBdKTtcblxuICBjb25zdCBbZGVwYXJ0bWVudHMsIHNldERlcGFydG1lbnRzXSA9IHVzZVN0YXRlPFxuICAgIHtcbiAgICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgICBsYWJlbDogc3RyaW5nO1xuICAgIH1bXVxuICA+KFt7IHZhbHVlOiAnJywgbGFiZWw6ICcnIH1dKTtcblxuICBjb25zdCBbYnVzaW5lc3NSb2xlcywgc2V0QnVzaW5lc3NSb2xlc10gPSB1c2VTdGF0ZTxcbiAgICB7XG4gICAgICB2YWx1ZTogc3RyaW5nO1xuICAgICAgbGFiZWw6IHN0cmluZztcbiAgICB9W11cbiAgPihbeyB2YWx1ZTogJycsIGxhYmVsOiAnJyB9XSk7XG5cbiAgY29uc3QgW2RlcGFydG1lbnQsIHNldERlcGFydG1lbnRdID0gdXNlU3RhdGU8YW55PihkZXBhcnRtZW50c1swXSk7XG5cbiAgY29uc3QgW2J1c2luZXNzUm9sZSwgc2V0QnVzaW5lc3NSb2xlXSA9IHVzZVN0YXRlPGFueT4oYnVzaW5lc3NSb2xlc1swXSk7XG5cbiAgY29uc3QgaW5pdGlhbFBhcmFtc1N0YXRlID0ge1xuICAgIGZpcnN0X25hbWU6ICcnLFxuICAgIGxhc3RfbmFtZTogJycsXG4gICAgcGhvbmU6ICcnLFxuICAgIGVtYWlsOiAnJyxcbiAgICB0aW1lX3pvbmU6ICcnLFxuICAgIGRhdGVfdGltZV9mb3JtYXQ6ICcnLFxuICAgIGxvY2FsZTogJycsXG4gICAgdGVsZWdyYW1fbmFtZTogJycsXG4gICAgb3RoZXJfYnVzaW5lc3Nfcm9sZV9uYW1lOiAnJyxcbiAgICBvdGhlcl9kZXBhcnRtZW50X25hbWU6ICcnLFxuICAgIGJ1c2luZXNzX3JvbGU6ICcnLFxuICAgIGRlcGFydG1lbnQ6ICcnLFxuICAgIGZsb3dfcmF0ZV91bml0OiAnJyxcbiAgfTtcblxuICBjb25zdCBbaXNUZWxlZ3JhbU9wZW4sIHNldElzVGVsZWdyYW1PcGVuXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgW3Nob3dQYXNzd29yZE1vZGFsLCBzZXRTaG93UGFzc3dvcmRNb2RhbF0gPSB1c2VTdGF0ZTxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IFtzdWJtaXR0aW5nLCBzZXRTdWJtaXR0aW5nXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgW3Nob3dTdWNjZXNzTWVzc2FnZSwgc2V0U2hvd1N1Y2Nlc3NNZXNzYWdlXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgW3Nob3dFcnJvck1lc3NhZ2UsIHNldFNob3dFcnJvck1lc3NhZ2VdID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBbc2hvd1RlbGVncmFtUmVzcG9uc2VNZXNzYWdlLCBzZXRTaG93VGVsZWdyYW1SZXNwb25zZU1lc3NhZ2VdID1cbiAgICB1c2VTdGF0ZTx7XG4gICAgICBzaG93OiBib29sZWFuO1xuICAgICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgfT4oe1xuICAgICAgc2hvdzogZmFsc2UsXG4gICAgICBzdGF0dXM6ICcnLFxuICAgICAgbWVzc2FnZTogJycsXG4gICAgfSk7XG4gIGNvbnN0IFtwYXJhbXMsIHNldFBhcmFtc10gPSB1c2VTdGF0ZTx7XG4gICAgZmlyc3RfbmFtZTogc3RyaW5nO1xuICAgIGxhc3RfbmFtZTogc3RyaW5nO1xuICAgIHBob25lOiBzdHJpbmc7XG4gICAgZW1haWw6IHN0cmluZztcbiAgICB0aW1lX3pvbmU6IHN0cmluZztcbiAgICBkYXRlX3RpbWVfZm9ybWF0OiBzdHJpbmc7XG4gICAgbG9jYWxlOiBzdHJpbmc7XG4gICAgdGVsZWdyYW1fbmFtZTogc3RyaW5nO1xuICAgIG90aGVyX2J1c2luZXNzX3JvbGVfbmFtZTogc3RyaW5nO1xuICAgIG90aGVyX2RlcGFydG1lbnRfbmFtZTogc3RyaW5nO1xuICAgIGZsb3dfcmF0ZV91bml0OiBzdHJpbmc7XG4gIH0+KGluaXRpYWxQYXJhbXNTdGF0ZSk7XG5cbiAgY29uc3QgaGFuZGxlT25DaGFuZ2UgPSAoZSkgPT4ge1xuICAgIGlmICh0eXBlb2YgZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmIChlLnN0YXJ0c1dpdGgoJzk3MjAnKSkge1xuICAgICAgICBlID0gZS5yZXBsYWNlKC8oOTcyMCkvZywgJzk3MicpO1xuICAgICAgfVxuICAgICAgc2V0UGFyYW1zKChwcmV2U3RhdGUpID0+ICh7XG4gICAgICAgIC4uLnByZXZTdGF0ZSxcbiAgICAgICAgcGhvbmU6IGUsXG4gICAgICB9KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgdmFsdWUsIG5hbWUgfSA9IGUudGFyZ2V0O1xuICAgICAgc2V0UGFyYW1zKChwcmV2U3RhdGUpID0+ICh7XG4gICAgICAgIC4uLnByZXZTdGF0ZSxcbiAgICAgICAgW25hbWVdOiB2YWx1ZSxcbiAgICAgIH0pKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQnVzaW5lc3NSb2xlQ2hhbmdlID0gKGUpID0+IHtcbiAgICBpZiAoZS50YXJnZXQgIT09IG51bGwpIHtcbiAgICAgIHNldFBhcmFtcyh7XG4gICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgYnVzaW5lc3Nfcm9sZTogZS52YWx1ZSxcbiAgICAgICAgb3RoZXJfYnVzaW5lc3Nfcm9sZV9uYW1lOiBlLnRhcmdldC52YWx1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVEZXBhcnRtZW50Q2hhbmdlID0gKGUpID0+IHtcbiAgICBpZiAoZS50YXJnZXQgIT09IG51bGwpIHtcbiAgICAgIHNldFBhcmFtcyh7XG4gICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgZGVwYXJ0bWVudDogZS52YWx1ZSxcbiAgICAgICAgb3RoZXJfZGVwYXJ0bWVudF9uYW1lOiBlLnRhcmdldC52YWx1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBnZXRQYXJhbXNXaXRoQWdncmVnYXRlZFZhbHVlcyA9ICgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4ucGFyYW1zLFxuICAgICAgZGF0ZV90aW1lX2Zvcm1hdDogZGF0ZVRpbWVGb3JtYXQudmFsdWUsXG4gICAgICBsb2NhbGU6IGxvY2FsZS52YWx1ZSxcbiAgICAgIHRpbWVfem9uZTogdGltZXpvbmUudmFsdWUsXG4gICAgICBkZXBhcnRtZW50X2lkOiBkZXBhcnRtZW50ID09PSB1bmRlZmluZWQgPyBudWxsIDogZGVwYXJ0bWVudC52YWx1ZSxcbiAgICAgIGJ1c2luZXNzX3JvbGVfaWQ6IGJ1c2luZXNzUm9sZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGJ1c2luZXNzUm9sZS52YWx1ZSxcbiAgICAgIGZsb3dfcmF0ZV91bml0OiBmbG93UmF0ZVVuaXQudmFsdWUsXG4gICAgfTtcbiAgfTtcblxuICBjb25zdCB3YXRlckF1dGhvcml0eU5hbWUgPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLmdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5TmFtZSxcbiAgKTtcblxuICBjb25zdCBzaG93VG9hc3QgPSAoZGF0YSkgPT4ge1xuICAgIGNvbnN0IHVzZXJuYW1lID0gZGF0YS51c2VybmFtZTtcbiAgICBjb25zdCBlcnJvciA9IGRhdGEuZXJyb3I7XG4gICAgaWYgKGRhdGEuc3RhdHVzID09PSAnc3VjY2VzcycpIHtcbiAgICAgIHRvYXN0LnN1Y2Nlc3MoXG4gICAgICAgIGkxOG4udChgbXlfcHJvZmlsZV90YWIudGVsZWdyYW1fbWVzc2FnZXMuJHtkYXRhLm1lc3NhZ2V9YCwge1xuICAgICAgICAgIHVzZXJuYW1lLFxuICAgICAgICB9KSxcbiAgICAgICAge1xuICAgICAgICAgIHBvc2l0aW9uOiAndG9wLWNlbnRlcicsXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0b2FzdC5lcnJvcihcbiAgICAgICAgaTE4bi50KGBteV9wcm9maWxlX3RhYi50ZWxlZ3JhbV9tZXNzYWdlcy4ke2RhdGEubWVzc2FnZX1gLCB7XG4gICAgICAgICAgZXJyb3I6IGVycm9yLFxuICAgICAgICAgIHVzZXJuYW1lOiB1c2VybmFtZSxcbiAgICAgICAgfSksXG4gICAgICAgIHtcbiAgICAgICAgICBwb3NpdGlvbjogJ3RvcC1jZW50ZXInLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdCA9IChlKSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHNldFN1Ym1pdHRpbmcodHJ1ZSk7XG4gICAgYXhpb3NcbiAgICAgIC5wdXQoJy9wcm9maWxlcycsIHsgdXNlcjogZ2V0UGFyYW1zV2l0aEFnZ3JlZ2F0ZWRWYWx1ZXMoKSB9KVxuICAgICAgLnRoZW4oKHJlc3ApID0+IHtcbiAgICAgICAgaWYgKHJlc3AuZGF0YS5lcnJvcnMgPT09IG51bGwpIHtcbiAgICAgICAgICBkaXNwYXRjaChcbiAgICAgICAgICAgIFBlcm1pc3Npb25zU2xpY2UuYWN0aW9ucy5zZXRVc2VySW5mbyhKU09OLnBhcnNlKHJlc3AuZGF0YS51c2VyKSksXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGRvY3VtZW50XG4gICAgICAgICAgICAucXVlcnlTZWxlY3RvckFsbCgnLmVycm9yLW1lc3NhZ2UnKVxuICAgICAgICAgICAgLmZvckVhY2goKHApID0+IChwLmlubmVySFRNTCA9ICcnKSk7XG5cbiAgICAgICAgICBkb2N1bWVudFxuICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoJy5pbnZhbGlkLWZpZWxkJylcbiAgICAgICAgICAgIC5mb3JFYWNoKChwKSA9PiBwLmNsYXNzTGlzdC5yZW1vdmUoJ2ludmFsaWQtZmllbGQnKSk7XG4gICAgICAgICAgbGV0IHVzZXIgPSBKU09OLnBhcnNlKHJlc3AuZGF0YS51c2VyKTtcbiAgICAgICAgICBjb25zdCBmaW5kTG9jYWxlID0gbG9jYWxlT3B0aW9ucy5maW5kKChlKSA9PiBlLnZhbHVlID09PSB1c2VyLmxvY2FsZSk7XG4gICAgICAgICAgY29uc3QgZmluZEZsb3dSYXRlVW5pdCA9IGZsb3dSYXRlVW5pdE9wdGlvbnMuZmluZChcbiAgICAgICAgICAgIChlKSA9PiBlLnZhbHVlID09PSB1c2VyLmZsb3dfcmF0ZV91bml0LFxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgZmluZERhdGVUaW1lRm9ybWF0ID0gZGF0ZVRpbWVGb3JtYXRPcHRpb25zLmZpbmQoXG4gICAgICAgICAgICAoZSkgPT4gZS52YWx1ZSA9PT0gdXNlci5kYXRlX3RpbWVfZm9ybWF0LFxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgZmluZFRpbWV6b25lID0gdGltZXpvbmVzLmZpbmQoXG4gICAgICAgICAgICAoZSkgPT4gZS52YWx1ZSA9PT0gdXNlci50aW1lX3pvbmUsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHNldFBhcmFtcyh1c2VyKTtcbiAgICAgICAgICBzZXRMb2NhbGUoZmluZExvY2FsZSEpO1xuICAgICAgICAgIHNldEZsb3dSYXRlVW5pdChmaW5kRmxvd1JhdGVVbml0ISk7XG4gICAgICAgICAgc2V0RGF0ZVRpbWVGb3JtYXQoZmluZERhdGVUaW1lRm9ybWF0ISk7XG4gICAgICAgICAgc2V0VGltZXpvbmUoZmluZFRpbWV6b25lISk7XG4gICAgICAgICAgc2V0U2hvd1N1Y2Nlc3NNZXNzYWdlKHRydWUpO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgc2V0U2hvd1N1Y2Nlc3NNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgICB9LCA2MDAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkb2N1bWVudFxuICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoJy5lcnJvci1tZXNzYWdlJylcbiAgICAgICAgICAgIC5mb3JFYWNoKChwKSA9PiAocC5pbm5lckhUTUwgPSAnJykpO1xuICAgICAgICAgIGxldCBlcnJvcnMgPSByZXNwLmRhdGEudXNlci5lcnJvcnM7XG4gICAgICAgICAgZm9yIChjb25zdCBlcnJvciBpbiBlcnJvcnMpIHtcbiAgICAgICAgICAgIGxldCBmaW5kRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYGlucHV0W25hbWU9JyR7ZXJyb3J9J11gKTtcbiAgICAgICAgICAgIGxldCBwYXJlbnQgPSBmaW5kRWxlbWVudCEuY2xvc2VzdCgnLmZpZWxkJyk7XG4gICAgICAgICAgICBsZXQgZmluZElucHV0ID0gcGFyZW50IS5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpO1xuICAgICAgICAgICAgZmluZElucHV0IS5jbGFzc0xpc3QuYWRkKCdpbnZhbGlkLWZpZWxkJyk7XG4gICAgICAgICAgICBwYXJlbnQhLnF1ZXJ5U2VsZWN0b3IoJy5lcnJvci1tZXNzYWdlJykhLmlubmVySFRNTCA9IGkxOG4udChcbiAgICAgICAgICAgICAgYGRhc2hib2FyZF92Mi5wcm9maWxlLmVycm9ycy4ke2Vycm9yfWAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZXRTaG93U3VjY2Vzc01lc3NhZ2UoZmFsc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0U3VibWl0dGluZyhmYWxzZSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICBzZXRTaG93RXJyb3JNZXNzYWdlKHRydWUpO1xuICAgICAgICBzZXRTaG93U3VjY2Vzc01lc3NhZ2UoZmFsc2UpO1xuICAgICAgICBzZXRTdWJtaXR0aW5nKGZhbHNlKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgc2V0U2hvd0Vycm9yTWVzc2FnZShmYWxzZSk7XG4gICAgICAgIH0sIDYwMDApO1xuICAgICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBhbmFseXRpY3NUcmFjaygnVmlld2VkIFByb2ZpbGUgUGFnZScsIHtcbiAgICAgIHV0aWxpdHlfbmFtZTogd2F0ZXJBdXRob3JpdHlOYW1lLFxuICAgIH0pO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCB0b2tlbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tuYW1lPWNzcmYtdG9rZW5dJykhLmNvbnRlbnQ7XG4gICAgYXhpb3MuZGVmYXVsdHMuaGVhZGVycy5jb21tb25bJ1gtQ1NSRi1UT0tFTiddID0gdG9rZW47XG4gICAgYXhpb3MuZGVmYXVsdHMuaGVhZGVycy5jb21tb25bJ0NvbnRlbnQtVHlwZSddID0gJ2FwcGxpY2F0aW9uL2pzJztcbiAgICBheGlvc1xuICAgICAgLmdldChgL3Byb2ZpbGVzL3Jlc291cmNlYClcbiAgICAgIC50aGVuKChyZXNwKSA9PiB7XG4gICAgICAgIHNldFBhcmFtcyhyZXNwLmRhdGEudXNlcik7XG4gICAgICAgIGNvbnN0IGZpbmRQcm9wZXJ0eSA9IChvYmplY3QsIHByb3BlcnR5KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG9iamVjdC5maW5kKChlKSA9PiBlLnZhbHVlID09PSBwcm9wZXJ0eSk7XG4gICAgICAgIH07XG4gICAgICAgIHNldExvY2FsZShmaW5kUHJvcGVydHkobG9jYWxlT3B0aW9ucywgcmVzcC5kYXRhLnVzZXIubG9jYWxlKSk7XG4gICAgICAgIHNldEZsb3dSYXRlVW5pdChcbiAgICAgICAgICBmaW5kUHJvcGVydHkoZmxvd1JhdGVVbml0T3B0aW9ucywgcmVzcC5kYXRhLnVzZXIuZmxvd19yYXRlX3VuaXQpLFxuICAgICAgICApO1xuICAgICAgICBzZXREYXRlVGltZUZvcm1hdChcbiAgICAgICAgICBmaW5kUHJvcGVydHkoZGF0ZVRpbWVGb3JtYXRPcHRpb25zLCByZXNwLmRhdGEudXNlci5kYXRlX3RpbWVfZm9ybWF0KSxcbiAgICAgICAgKTtcbiAgICAgICAgc2V0VGltZXpvbmUoZmluZFByb3BlcnR5KHRpbWV6b25lcywgcmVzcC5kYXRhLnVzZXIudGltZV96b25lKSk7XG4gICAgICAgIHNldEJ1c2luZXNzUm9sZShcbiAgICAgICAgICBmaW5kUHJvcGVydHkoXG4gICAgICAgICAgICByZXNwLmRhdGEuYnVzaW5lc3Nfcm9sZXMsXG4gICAgICAgICAgICByZXNwLmRhdGEudXNlci5idXNpbmVzc19yb2xlX2lkLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICAgIHNldERlcGFydG1lbnQoXG4gICAgICAgICAgZmluZFByb3BlcnR5KHJlc3AuZGF0YS5kZXBhcnRtZW50cywgcmVzcC5kYXRhLnVzZXIuZGVwYXJ0bWVudF9pZCksXG4gICAgICAgICk7XG4gICAgICAgIHNldERlcGFydG1lbnRzKHJlc3AuZGF0YS5kZXBhcnRtZW50cyk7XG4gICAgICAgIHNldEJ1c2luZXNzUm9sZXMocmVzcC5kYXRhLmJ1c2luZXNzX3JvbGVzKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiBhbGVydChlcnJvcikpO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWFkZXItdGl0bGVcIj57aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS50aXRsZScpfTwvZGl2PlxuICAgICAgPGZvcm0gYWN0aW9uPVwiXCIgb25TdWJtaXQ9eyhlKSA9PiBoYW5kbGVTdWJtaXQoZSl9PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRlbnRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRpdGxlXCI+XG4gICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5wZXJzb25hbC1kZXRhaWxzJyl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwicGVyc29uYWxcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmZpcnN0X25hbWUnKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJteS1pbnB1dFwiXG4gICAgICAgICAgICAgICAgbmFtZT17J2ZpcnN0X25hbWUnfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtwYXJhbXMuZmlyc3RfbmFtZX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZU9uQ2hhbmdlKGUpfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9eydlcnJvci1tZXNzYWdlJ30+PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5sYXN0X25hbWUnKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJteS1pbnB1dFwiXG4gICAgICAgICAgICAgICAgbmFtZT17J2xhc3RfbmFtZSd9XG4gICAgICAgICAgICAgICAgdmFsdWU9e3BhcmFtcy5sYXN0X25hbWV9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVPbkNoYW5nZShlKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPXsnZXJyb3ItbWVzc2FnZSd9PjwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZCBmaWVsZC0tcmVhZG9ubHlcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmVtYWlsJyl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICByZWFkT25seT17dHJ1ZX1cbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXktaW5wdXRcIlxuICAgICAgICAgICAgICAgIG5hbWU9eydlbWFpbCd9XG4gICAgICAgICAgICAgICAgdmFsdWU9e3BhcmFtcy5lbWFpbH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPXsnZXJyb3ItbWVzc2FnZSd9PjwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUucGhvbmUnKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxQaG9uZUlucHV0XG4gICAgICAgICAgICAgICAgY291bnRyeT17J2lsJ31cbiAgICAgICAgICAgICAgICBsb2NhbGl6YXRpb249e2kxOG4udCgnY291bnRyaWVzJyl9XG4gICAgICAgICAgICAgICAgaW5wdXRDbGFzcz1cInBob25lLWlucHV0XCJcbiAgICAgICAgICAgICAgICBjb250YWluZXJDbGFzcz1cIm15LXBob25lXCJcbiAgICAgICAgICAgICAgICBidXR0b25DbGFzcz1cImRyb3Bkb3duXCJcbiAgICAgICAgICAgICAgICBkcm9wZG93bkNsYXNzPVwicGhvbmUtZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgIHZhbHVlPXtwYXJhbXMucGhvbmV9XG4gICAgICAgICAgICAgICAgZW5hYmxlU2VhcmNoXG4gICAgICAgICAgICAgICAgc2VhcmNoUGxhY2Vob2xkZXI9e2kxOG4udCgnc2VhcmNoJyl9XG4gICAgICAgICAgICAgICAgY291bnRyeUNvZGVFZGl0YWJsZT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgaGFuZGxlT25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgaW5wdXRQcm9wcz17eyBuYW1lOiAncGhvbmUnIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT17J2Vycm9yLW1lc3NhZ2UnfT48L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIHtkZXBhcnRtZW50c1swXS52YWx1ZSAhPT0gJycgJiYgKFxuICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuZGVwYXJ0bWVudCcpfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm15LWlucHV0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZT17c2V0RGVwYXJ0bWVudH1cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGkxOG4udChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYGRhc2hib2FyZF92Mi5wcm9maWxlLmRlcGFydG1lbnRzLiR7ZGVwYXJ0bWVudD8ubGFiZWx9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZGVwYXJ0bWVudD8udmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPXtkZXBhcnRtZW50c31cbiAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxUZXh0V2lkdGhcbiAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IGRlcGFydG1lbnRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25fa2V5OiAnZGFzaGJvYXJkX3YyLnByb2ZpbGUuZGVwYXJ0bWVudHMnLFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmJ1c2luZXNzX3JvbGUnKX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteS1pbnB1dFwiPlxuICAgICAgICAgICAgICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWU9e3NldEJ1c2luZXNzUm9sZX1cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGkxOG4udChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYGRhc2hib2FyZF92Mi5wcm9maWxlLmJ1c2luZXNzX3JvbGVzLiR7YnVzaW5lc3NSb2xlPy5sYWJlbH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBidXNpbmVzc1JvbGU/LnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz17YnVzaW5lc3NSb2xlc31cbiAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxUZXh0V2lkdGhcbiAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IGJ1c2luZXNzUm9sZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbl9rZXk6ICdkYXNoYm9hcmRfdjIucHJvZmlsZS5idXNpbmVzc19yb2xlcycsXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7ZGVwYXJ0bWVudHNbMF0udmFsdWUgIT09ICcnICYmIChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BmaWVsZCAke1xuICAgICAgICAgICAgICAgICAgICBkZXBhcnRtZW50ICYmXG4gICAgICAgICAgICAgICAgICAgIGRlcGFydG1lbnQ/LnZhbHVlID09PVxuICAgICAgICAgICAgICAgICAgICAgIGRlcGFydG1lbnRzW2RlcGFydG1lbnRzLmxlbmd0aCAtIDFdLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgPyAnJ1xuICAgICAgICAgICAgICAgICAgICAgIDogJ2ZpZWxkLS1oaWRkZW4nXG4gICAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmRlcGFydG1lbnRfYWx0Jyl9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICByZWFkT25seT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXktaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPXsnb3RoZXJfZGVwYXJ0bWVudF9uYW1lJ31cbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3BhcmFtcy5vdGhlcl9kZXBhcnRtZW50X25hbWV9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlRGVwYXJ0bWVudENoYW5nZShlKX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgZmllbGQgJHtcbiAgICAgICAgICAgICAgICAgICAgYnVzaW5lc3NSb2xlICYmXG4gICAgICAgICAgICAgICAgICAgIGJ1c2luZXNzUm9sZT8udmFsdWUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgYnVzaW5lc3NSb2xlc1tidXNpbmVzc1JvbGVzLmxlbmd0aCAtIDFdLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgPyAnJ1xuICAgICAgICAgICAgICAgICAgICAgIDogJ2ZpZWxkLS1oaWRkZW4nXG4gICAgICAgICAgICAgICAgICB9IGB9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5idXNpbmVzc19yb2xlX2FsdCcpfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgcmVhZE9ubHk9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm15LWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT17J290aGVyX2J1c2luZXNzX3JvbGVfbmFtZSd9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtwYXJhbXMub3RoZXJfYnVzaW5lc3Nfcm9sZV9uYW1lfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZUJ1c2luZXNzUm9sZUNoYW5nZShlKX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImNoYW5nZS1wYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U2hvd1Bhc3N3b3JkTW9kYWwodHJ1ZSl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8UGVuU3ZnIHdpZHRoPVwiMTJweFwiIGhlaWdodD1cIjEycHhcIiBmaWxsPVwiI2YwMTM0Y1wiIC8+XG4gICAgICAgICAgICAgICAgeycgICd9XG4gICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuY2hhbmdlLXBhc3N3b3JkJyl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGl0bGVcIj57aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5zZXR0aW5ncycpfTwvZGl2PlxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzTmFtZT1cInNldHRpbmdzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS50aW1lLXpvbmUnKX0qXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm15LWlucHV0XCI+XG4gICAgICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICAgICAgc2V0VmFsdWU9e3NldFRpbWV6b25lfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e3RpbWV6b25lfVxuICAgICAgICAgICAgICAgICAgb3B0aW9ucz17dGltZXpvbmVzfVxuICAgICAgICAgICAgICAgICAgY2FuY2VsVGV4dFdpZHRoXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmRhdGUtdGltZS1mb3JtYXQnKX0qXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm15LWlucHV0XCI+XG4gICAgICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICAgICAgb3B0aW9ucz17ZGF0ZVRpbWVGb3JtYXRPcHRpb25zfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e2RhdGVUaW1lRm9ybWF0fVxuICAgICAgICAgICAgICAgICAgc2V0VmFsdWU9e3NldERhdGVUaW1lRm9ybWF0fVxuICAgICAgICAgICAgICAgICAgY2FuY2VsVGV4dFdpZHRoXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZGF0ZS10aW1lLWZvcm1hdCd9PlxuICAgICAgICAgICAgICAgIHtkYXRlVGltZUZvcm1hdCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICBuZXcgRGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZygnZW4tVVMnLCBkYXRlVGltZUZvcm1hdC5mb3JtYXQpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUubGFuZ3VhZ2UnKX0qXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J215LWlucHV0J30+XG4gICAgICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICAgICAgb3B0aW9ucz17bG9jYWxlT3B0aW9uc31cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICBzZXRWYWx1ZT17c2V0TG9jYWxlfVxuICAgICAgICAgICAgICAgICAgY2FuY2VsVGV4dFdpZHRoXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGQgZmllbGQtLWJ1dHRvbnNcIj5cbiAgICAgICAgICAgICAge3BhcmFtcy50ZWxlZ3JhbV9uYW1lID09PSAnJyAmJiAoXG4gICAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPVwidGVsZWdyYW1cIiBvbkNsaWNrPXsoKSA9PiBzZXRJc1RlbGVncmFtT3Blbih0cnVlKX0+XG4gICAgICAgICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5jb25uZWN0LXRvLXRlbGVncmFtJyl9XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7cGFyYW1zLnRlbGVncmFtX25hbWUgIT09ICcnICYmIChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUudGVsZWdyYW1fbmFtZScpfVxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzVGVsZWdyYW1PcGVuKHRydWUpfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQZW5Tdmcgd2lkdGg9XCIxMnB4XCIgaGVpZ2h0PVwiMTJweFwiIGZpbGw9XCIjZjAxMzRjXCIgLz57JyAnfVxuICAgICAgICAgICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuY2hhbmdlLW5hbWUnKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsndGVsZWdyYW0tZXhpc3RpbmctaW5wdXQnfT5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRPbmx5PXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXktaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT17J3RlbGVncmFtX25hbWUnfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3BhcmFtcy50ZWxlZ3JhbV9uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsndGVsZWdyYW0tZXhpc3RpbmctaW5wdXRfX2NhbmNlbC1idXR0b24nfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UGFyYW1zKChwcmV2U3RhdGUpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbGVncmFtX25hbWU6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDYW5jZWwgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT17J2Vycm9yLW1lc3NhZ2UnfT48L3A+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsndGVsZWdyYW0gb3Blbid9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXhpb3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldChgL3RlbGVncmFtL3NlbmRfdGVzdF9tZXNzYWdlLmpzb25gKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbigocmVzcCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNob3dUZWxlZ3JhbVJlc3BvbnNlTWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3AuZGF0YS51c2VyLnN0YXR1c1swXS50b1VwcGVyQ2FzZSgpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcC5kYXRhLnVzZXIuc3RhdHVzLnN1YnN0cmluZygxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHJlc3AuZGF0YS51c2VyLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2hvd1RlbGVncmFtUmVzcG9uc2VNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3c6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgNjAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1RvYXN0KHJlc3AuZGF0YS51c2VyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gYWxlcnQoZXJyb3IpKTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgeyFzaG93VGVsZWdyYW1SZXNwb25zZU1lc3NhZ2Uuc2hvdyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgaTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5zZW5kX3RlbGVncmFtX21lc3NhZ2UnKX1cbiAgICAgICAgICAgICAgICAgICAgICB7c2hvd1RlbGVncmFtUmVzcG9uc2VNZXNzYWdlLnNob3cgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dUZWxlZ3JhbVJlc3BvbnNlTWVzc2FnZS5zdGF0dXN9XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5mbG93X3JhdGVfdW5pdHMnKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnbXktaW5wdXQnfT5cbiAgICAgICAgICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgICAgICAgICBvcHRpb25zPXtmbG93UmF0ZVVuaXRPcHRpb25zfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e2Zsb3dSYXRlVW5pdH1cbiAgICAgICAgICAgICAgICAgIHNldFZhbHVlPXtzZXRGbG93UmF0ZVVuaXR9XG4gICAgICAgICAgICAgICAgICBjYW5jZWxUZXh0V2lkdGhcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgICA8YnV0dG9uIHR5cGU9eydzdWJtaXQnfSBjbGFzc05hbWU9eydzYXZlJ30gZGlzYWJsZWQ9e3N1Ym1pdHRpbmd9PlxuICAgICAgICAgICAgeyFzdWJtaXR0aW5nICYmXG4gICAgICAgICAgICAgICFzaG93U3VjY2Vzc01lc3NhZ2UgJiZcbiAgICAgICAgICAgICAgIXNob3dFcnJvck1lc3NhZ2UgJiZcbiAgICAgICAgICAgICAgaTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5zdWJtaXQnKX1cbiAgICAgICAgICAgIHtzdWJtaXR0aW5nICYmXG4gICAgICAgICAgICAgICFzaG93U3VjY2Vzc01lc3NhZ2UgJiZcbiAgICAgICAgICAgICAgIXNob3dFcnJvck1lc3NhZ2UgJiZcbiAgICAgICAgICAgICAgaTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5zdWJtaXR0aW5nJyl9XG4gICAgICAgICAgICB7c2hvd1N1Y2Nlc3NNZXNzYWdlICYmIGkxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuc3VjY2VzcycpfVxuICAgICAgICAgICAge3Nob3dFcnJvck1lc3NhZ2UgJiYgaTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5lcnJvcicpfVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZm9ybT5cblxuICAgICAge3Nob3dQYXNzd29yZE1vZGFsICYmIChcbiAgICAgICAgPFBhc3N3b3JkTW9kYWxcbiAgICAgICAgICBjbG9zZT17KCkgPT4gc2V0U2hvd1Bhc3N3b3JkTW9kYWwoZmFsc2UpfVxuICAgICAgICAgIHNhdmU9eygpID0+IHt9fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIHtpc1RlbGVncmFtT3BlbiAmJiAoXG4gICAgICAgIDxUZWxlZ3JhbU1vZGFsXG4gICAgICAgICAgY2xvc2U9eygpID0+IHNldElzVGVsZWdyYW1PcGVuKGZhbHNlKX1cbiAgICAgICAgICBoYW5kbGVPbkNoYW5nZT17aGFuZGxlT25DaGFuZ2V9XG4gICAgICAgICAgaGFuZGxlU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvQ29udGFpbmVyPlxuICApO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxLQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxjQUFBLEdBQUFKLE9BQUE7QUFBOEQsSUFBQUssSUFBQSxHQUFBTCxPQUFBO0FBQUEsSUFBQU0sT0FBQSxHQUFBTixPQUFBO0FBRzlELElBQUFPLGdCQUFBLEdBQUFKLHNCQUFBLENBQUFILE9BQUE7QUFDQUEsT0FBQTtBQUNBLElBQUFRLGNBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLE1BQUEsR0FBQU4sc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFVLFVBQUEsR0FBQVYsT0FBQTtBQUNBLElBQUFXLGVBQUEsR0FBQVIsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFZLFVBQUEsR0FBQVosT0FBQTtBQUNBLElBQUFhLFdBQUEsR0FBQWIsT0FBQTtBQUNBLElBQUFjLGNBQUEsR0FBQWQsT0FBQTtBQUNBLElBQUFlLGlCQUFBLEdBQUFmLE9BQUE7QUFFTyxNQUFNZ0IsV0FBVyxHQUFHQSxDQUFBLEtBQU07RUFDL0IsTUFBTUMsY0FBYyxHQUFHQyx1QkFBTSxDQUFDQyxFQUFFLENBQUNDLEtBQUssQ0FBQyxDQUFDO0VBQ3hDLE1BQU1DLHFCQUFxQixHQUFHLENBQzVCO0lBQ0VDLEtBQUssRUFBRSxJQUFJO0lBQ1hDLEtBQUssRUFBRSxlQUFlO0lBQ3RCQyxNQUFNLEVBQUU7TUFDTkMsS0FBSyxFQUFFLE9BQU87TUFDZEMsR0FBRyxFQUFFLFNBQVM7TUFDZEMsSUFBSSxFQUFFLFNBQVM7TUFDZkMsSUFBSSxFQUFFLFNBQVM7TUFDZkMsTUFBTSxFQUFFO0lBQ1Y7RUFDRixDQUFDLEVBQ0Q7SUFDRVAsS0FBSyxFQUFFLElBQUk7SUFDWEMsS0FBSyxFQUFFLFFBQVE7SUFDZkMsTUFBTSxFQUFFO01BQ05FLEdBQUcsRUFBRSxTQUFTO01BQ2RELEtBQUssRUFBRSxTQUFTO01BQ2hCRSxJQUFJLEVBQUUsU0FBUztNQUNmQyxJQUFJLEVBQUUsU0FBUztNQUNmQyxNQUFNLEVBQUUsU0FBUztNQUNqQkMsTUFBTSxFQUFFO0lBQ1Y7RUFDRixDQUFDLENBQ0Y7RUFFRCxNQUFNQyxTQUFTLEdBQUdkLGNBQWMsQ0FBQ2UsR0FBRyxDQUFFQyxDQUFDLElBQUs7SUFDMUMsT0FBTztNQUFFWCxLQUFLLEVBQUVXLENBQUM7TUFBRVYsS0FBSyxFQUFFVTtJQUFFLENBQUM7RUFDL0IsQ0FBQyxDQUFDO0VBRUYsTUFBTUMsYUFBYSxHQUFHLENBQ3BCO0lBQUVaLEtBQUssRUFBRSxJQUFJO0lBQUVDLEtBQUssRUFBRTtFQUFVLENBQUMsRUFDakM7SUFBRUQsS0FBSyxFQUFFLE9BQU87SUFBRUMsS0FBSyxFQUFFO0VBQWUsQ0FBQyxFQUN6QztJQUFFRCxLQUFLLEVBQUUsSUFBSTtJQUFFQyxLQUFLLEVBQUU7RUFBUSxDQUFDLEVBQy9CO0lBQUVELEtBQUssRUFBRSxJQUFJO0lBQUVDLEtBQUssRUFBRTtFQUFXLENBQUMsRUFDbEM7SUFBRUQsS0FBSyxFQUFFLElBQUk7SUFBRUMsS0FBSyxFQUFFO0VBQVcsQ0FBQyxDQUNuQztFQUVELE1BQU1ZLG1CQUFtQixHQUFHLENBQzFCO0lBQ0ViLEtBQUssRUFBRSxLQUFLO0lBQ1pDLEtBQUssRUFBRWEsYUFBSSxDQUFDSCxDQUFDLENBQUMsaURBQWlEO0VBQ2pFLENBQUMsRUFDRDtJQUNFWCxLQUFLLEVBQUUsS0FBSztJQUNaQyxLQUFLLEVBQUVhLGFBQUksQ0FBQ0gsQ0FBQyxDQUFDLGlEQUFpRDtFQUNqRSxDQUFDLENBQ0Y7RUFFRCxNQUFNLENBQUNJLE1BQU0sRUFBRUMsU0FBUyxDQUFDLEdBQUcsSUFBQUMsZUFBUSxFQUdqQ0wsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBRXBCLE1BQU0sQ0FBQ00sWUFBWSxFQUFFQyxlQUFlLENBQUMsR0FBRyxJQUFBRixlQUFRLEVBRzdDSixtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUUxQixNQUFNLENBQUNPLGNBQWMsRUFBRUMsaUJBQWlCLENBQUMsR0FBRyxJQUFBSixlQUFRLEVBSWpEbEIscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFFNUIsTUFBTSxDQUFDdUIsUUFBUSxFQUFFQyxXQUFXLENBQUMsR0FBRyxJQUFBTixlQUFRLEVBR3JDUixTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7RUFFakIsTUFBTSxDQUFDZSxXQUFXLEVBQUVDLGNBQWMsQ0FBQyxHQUFHLElBQUFSLGVBQVEsRUFLNUMsQ0FBQztJQUFFakIsS0FBSyxFQUFFLEVBQUU7SUFBRUMsS0FBSyxFQUFFO0VBQUcsQ0FBQyxDQUFDLENBQUM7RUFFN0IsTUFBTSxDQUFDeUIsYUFBYSxFQUFFQyxnQkFBZ0IsQ0FBQyxHQUFHLElBQUFWLGVBQVEsRUFLaEQsQ0FBQztJQUFFakIsS0FBSyxFQUFFLEVBQUU7SUFBRUMsS0FBSyxFQUFFO0VBQUcsQ0FBQyxDQUFDLENBQUM7RUFFN0IsTUFBTSxDQUFDMkIsVUFBVSxFQUFFQyxhQUFhLENBQUMsR0FBRyxJQUFBWixlQUFRLEVBQU1PLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUVqRSxNQUFNLENBQUNNLFlBQVksRUFBRUMsZUFBZSxDQUFDLEdBQUcsSUFBQWQsZUFBUSxFQUFNUyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFFdkUsTUFBTU0sa0JBQWtCLEdBQUc7SUFDekJDLFVBQVUsRUFBRSxFQUFFO0lBQ2RDLFNBQVMsRUFBRSxFQUFFO0lBQ2JDLEtBQUssRUFBRSxFQUFFO0lBQ1RDLEtBQUssRUFBRSxFQUFFO0lBQ1RDLFNBQVMsRUFBRSxFQUFFO0lBQ2JDLGdCQUFnQixFQUFFLEVBQUU7SUFDcEJ2QixNQUFNLEVBQUUsRUFBRTtJQUNWd0IsYUFBYSxFQUFFLEVBQUU7SUFDakJDLHdCQUF3QixFQUFFLEVBQUU7SUFDNUJDLHFCQUFxQixFQUFFLEVBQUU7SUFDekJDLGFBQWEsRUFBRSxFQUFFO0lBQ2pCZCxVQUFVLEVBQUUsRUFBRTtJQUNkZSxjQUFjLEVBQUU7RUFDbEIsQ0FBQztFQUVELE1BQU0sQ0FBQ0MsY0FBYyxFQUFFQyxpQkFBaUIsQ0FBQyxHQUFHLElBQUE1QixlQUFRLEVBQVUsS0FBSyxDQUFDO0VBQ3BFLE1BQU0sQ0FBQzZCLGlCQUFpQixFQUFFQyxvQkFBb0IsQ0FBQyxHQUFHLElBQUE5QixlQUFRLEVBQVUsS0FBSyxDQUFDO0VBQzFFLE1BQU0sQ0FBQytCLFVBQVUsRUFBRUMsYUFBYSxDQUFDLEdBQUcsSUFBQWhDLGVBQVEsRUFBVSxLQUFLLENBQUM7RUFDNUQsTUFBTSxDQUFDaUMsa0JBQWtCLEVBQUVDLHFCQUFxQixDQUFDLEdBQUcsSUFBQWxDLGVBQVEsRUFBVSxLQUFLLENBQUM7RUFDNUUsTUFBTSxDQUFDbUMsZ0JBQWdCLEVBQUVDLG1CQUFtQixDQUFDLEdBQUcsSUFBQXBDLGVBQVEsRUFBVSxLQUFLLENBQUM7RUFDeEUsTUFBTSxDQUFDcUMsMkJBQTJCLEVBQUVDLDhCQUE4QixDQUFDLEdBQ2pFLElBQUF0QyxlQUFRLEVBSUw7SUFDRHVDLElBQUksRUFBRSxLQUFLO0lBQ1hDLE1BQU0sRUFBRSxFQUFFO0lBQ1ZDLE9BQU8sRUFBRTtFQUNYLENBQUMsQ0FBQztFQUNKLE1BQU0sQ0FBQ0MsTUFBTSxFQUFFQyxTQUFTLENBQUMsR0FBRyxJQUFBM0MsZUFBUSxFQVlqQ2Usa0JBQWtCLENBQUM7RUFFdEIsTUFBTTZCLGNBQWMsR0FBSUMsQ0FBQyxJQUFLO0lBQzVCLElBQUksT0FBT0EsQ0FBQyxLQUFLLFFBQVEsRUFBRTtNQUN6QixJQUFJQSxDQUFDLENBQUNDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUN4QkQsQ0FBQyxHQUFHQSxDQUFDLENBQUNFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDO01BQ2pDO01BQ0FKLFNBQVMsQ0FBRUssU0FBUyxLQUFNO1FBQ3hCLEdBQUdBLFNBQVM7UUFDWjlCLEtBQUssRUFBRTJCO01BQ1QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLE1BQU07TUFDTCxNQUFNO1FBQUU5RCxLQUFLO1FBQUVrRTtNQUFLLENBQUMsR0FBR0osQ0FBQyxDQUFDSyxNQUFNO01BQ2hDUCxTQUFTLENBQUVLLFNBQVMsS0FBTTtRQUN4QixHQUFHQSxTQUFTO1FBQ1osQ0FBQ0MsSUFBSSxHQUFHbEU7TUFDVixDQUFDLENBQUMsQ0FBQztJQUNMO0VBQ0YsQ0FBQztFQUVELE1BQU1vRSx3QkFBd0IsR0FBSU4sQ0FBQyxJQUFLO0lBQ3RDLElBQUlBLENBQUMsQ0FBQ0ssTUFBTSxLQUFLLElBQUksRUFBRTtNQUNyQlAsU0FBUyxDQUFDO1FBQ1IsR0FBR0QsTUFBTTtRQUNUakIsYUFBYSxFQUFFb0IsQ0FBQyxDQUFDOUQsS0FBSztRQUN0QndDLHdCQUF3QixFQUFFc0IsQ0FBQyxDQUFDSyxNQUFNLENBQUNuRTtNQUNyQyxDQUFDLENBQUM7SUFDSjtFQUNGLENBQUM7RUFFRCxNQUFNcUUsc0JBQXNCLEdBQUlQLENBQUMsSUFBSztJQUNwQyxJQUFJQSxDQUFDLENBQUNLLE1BQU0sS0FBSyxJQUFJLEVBQUU7TUFDckJQLFNBQVMsQ0FBQztRQUNSLEdBQUdELE1BQU07UUFDVC9CLFVBQVUsRUFBRWtDLENBQUMsQ0FBQzlELEtBQUs7UUFDbkJ5QyxxQkFBcUIsRUFBRXFCLENBQUMsQ0FBQ0ssTUFBTSxDQUFDbkU7TUFDbEMsQ0FBQyxDQUFDO0lBQ0o7RUFDRixDQUFDO0VBRUQsTUFBTXNFLDZCQUE2QixHQUFHQSxDQUFBLEtBQU07SUFDMUMsT0FBTztNQUNMLEdBQUdYLE1BQU07TUFDVHJCLGdCQUFnQixFQUFFbEIsY0FBYyxDQUFDcEIsS0FBSztNQUN0Q2UsTUFBTSxFQUFFQSxNQUFNLENBQUNmLEtBQUs7TUFDcEJxQyxTQUFTLEVBQUVmLFFBQVEsQ0FBQ3RCLEtBQUs7TUFDekJ1RSxhQUFhLEVBQUUzQyxVQUFVLEtBQUs0QyxTQUFTLEdBQUcsSUFBSSxHQUFHNUMsVUFBVSxDQUFDNUIsS0FBSztNQUNqRXlFLGdCQUFnQixFQUFFM0MsWUFBWSxLQUFLMEMsU0FBUyxHQUFHLElBQUksR0FBRzFDLFlBQVksQ0FBQzlCLEtBQUs7TUFDeEUyQyxjQUFjLEVBQUV6QixZQUFZLENBQUNsQjtJQUMvQixDQUFDO0VBQ0gsQ0FBQztFQUVELE1BQU0wRSxrQkFBa0IsR0FBRyxJQUFBQyx1QkFBVyxFQUNuQ0MsS0FBSyxJQUFLQSxLQUFLLENBQUNDLFdBQVcsQ0FBQ0gsa0JBQy9CLENBQUM7RUFFRCxNQUFNSSxTQUFTLEdBQUlDLElBQUksSUFBSztJQUMxQixNQUFNQyxRQUFRLEdBQUdELElBQUksQ0FBQ0MsUUFBUTtJQUM5QixNQUFNQyxLQUFLLEdBQUdGLElBQUksQ0FBQ0UsS0FBSztJQUN4QixJQUFJRixJQUFJLENBQUN0QixNQUFNLEtBQUssU0FBUyxFQUFFO01BQzdCeUIsb0JBQUssQ0FBQ0MsT0FBTyxDQUNYckUsYUFBSSxDQUFDSCxDQUFDLHFDQUFBeUUsTUFBQSxDQUFxQ0wsSUFBSSxDQUFDckIsT0FBTyxHQUFJO1FBQ3pEc0I7TUFDRixDQUFDLENBQUMsRUFDRjtRQUNFSyxRQUFRLEVBQUU7TUFDWixDQUNGLENBQUM7SUFDSCxDQUFDLE1BQU07TUFDTEgsb0JBQUssQ0FBQ0QsS0FBSyxDQUNUbkUsYUFBSSxDQUFDSCxDQUFDLHFDQUFBeUUsTUFBQSxDQUFxQ0wsSUFBSSxDQUFDckIsT0FBTyxHQUFJO1FBQ3pEdUIsS0FBSyxFQUFFQSxLQUFLO1FBQ1pELFFBQVEsRUFBRUE7TUFDWixDQUFDLENBQUMsRUFDRjtRQUNFSyxRQUFRLEVBQUU7TUFDWixDQUNGLENBQUM7SUFDSDtFQUNGLENBQUM7RUFFRCxNQUFNQyxRQUFRLEdBQUcsSUFBQUMsdUJBQVcsRUFBQyxDQUFDO0VBRTlCLE1BQU1DLFlBQVksR0FBSTFCLENBQUMsSUFBSztJQUMxQkEsQ0FBQyxDQUFDMkIsY0FBYyxDQUFDLENBQUM7SUFDbEJ4QyxhQUFhLENBQUMsSUFBSSxDQUFDO0lBQ25CeUMsY0FBSyxDQUNGQyxHQUFHLENBQUMsV0FBVyxFQUFFO01BQUVDLElBQUksRUFBRXRCLDZCQUE2QixDQUFDO0lBQUUsQ0FBQyxDQUFDLENBQzNEdUIsSUFBSSxDQUFFQyxJQUFJLElBQUs7TUFDZCxJQUFJQSxJQUFJLENBQUNmLElBQUksQ0FBQ2dCLE1BQU0sS0FBSyxJQUFJLEVBQUU7UUFDN0JULFFBQVEsQ0FDTlUsa0NBQWdCLENBQUNDLE9BQU8sQ0FBQ0MsV0FBVyxDQUFDQyxJQUFJLENBQUNDLEtBQUssQ0FBQ04sSUFBSSxDQUFDZixJQUFJLENBQUNhLElBQUksQ0FBQyxDQUNqRSxDQUFDO1FBRURTLFFBQVEsQ0FDTEMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsQ0FDbENDLE9BQU8sQ0FBRUMsQ0FBQyxJQUFNQSxDQUFDLENBQUNDLFNBQVMsR0FBRyxFQUFHLENBQUM7UUFFckNKLFFBQVEsQ0FDTEMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsQ0FDbENDLE9BQU8sQ0FBRUMsQ0FBQyxJQUFLQSxDQUFDLENBQUNFLFNBQVMsQ0FBQ0MsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3RELElBQUlmLElBQUksR0FBR08sSUFBSSxDQUFDQyxLQUFLLENBQUNOLElBQUksQ0FBQ2YsSUFBSSxDQUFDYSxJQUFJLENBQUM7UUFDckMsTUFBTWdCLFVBQVUsR0FBR2hHLGFBQWEsQ0FBQ2lHLElBQUksQ0FBRS9DLENBQUMsSUFBS0EsQ0FBQyxDQUFDOUQsS0FBSyxLQUFLNEYsSUFBSSxDQUFDN0UsTUFBTSxDQUFDO1FBQ3JFLE1BQU0rRixnQkFBZ0IsR0FBR2pHLG1CQUFtQixDQUFDZ0csSUFBSSxDQUM5Qy9DLENBQUMsSUFBS0EsQ0FBQyxDQUFDOUQsS0FBSyxLQUFLNEYsSUFBSSxDQUFDakQsY0FDMUIsQ0FBQztRQUNELE1BQU1vRSxrQkFBa0IsR0FBR2hILHFCQUFxQixDQUFDOEcsSUFBSSxDQUNsRC9DLENBQUMsSUFBS0EsQ0FBQyxDQUFDOUQsS0FBSyxLQUFLNEYsSUFBSSxDQUFDdEQsZ0JBQzFCLENBQUM7UUFDRCxNQUFNMEUsWUFBWSxHQUFHdkcsU0FBUyxDQUFDb0csSUFBSSxDQUNoQy9DLENBQUMsSUFBS0EsQ0FBQyxDQUFDOUQsS0FBSyxLQUFLNEYsSUFBSSxDQUFDdkQsU0FDMUIsQ0FBQztRQUVEdUIsU0FBUyxDQUFDZ0MsSUFBSSxDQUFDO1FBQ2Y1RSxTQUFTLENBQUM0RixVQUFXLENBQUM7UUFDdEJ6RixlQUFlLENBQUMyRixnQkFBaUIsQ0FBQztRQUNsQ3pGLGlCQUFpQixDQUFDMEYsa0JBQW1CLENBQUM7UUFDdEN4RixXQUFXLENBQUN5RixZQUFhLENBQUM7UUFDMUI3RCxxQkFBcUIsQ0FBQyxJQUFJLENBQUM7UUFDM0I4RCxVQUFVLENBQUMsTUFBTTtVQUNmOUQscUJBQXFCLENBQUMsS0FBSyxDQUFDO1FBQzlCLENBQUMsRUFBRSxJQUFJLENBQUM7TUFDVixDQUFDLE1BQU07UUFDTGtELFFBQVEsQ0FDTEMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsQ0FDbENDLE9BQU8sQ0FBRUMsQ0FBQyxJQUFNQSxDQUFDLENBQUNDLFNBQVMsR0FBRyxFQUFHLENBQUM7UUFDckMsSUFBSVYsTUFBTSxHQUFHRCxJQUFJLENBQUNmLElBQUksQ0FBQ2EsSUFBSSxDQUFDRyxNQUFNO1FBQ2xDLEtBQUssTUFBTWQsS0FBSyxJQUFJYyxNQUFNLEVBQUU7VUFDMUIsSUFBSW1CLFdBQVcsR0FBR2IsUUFBUSxDQUFDYyxhQUFhLGdCQUFBL0IsTUFBQSxDQUFnQkgsS0FBSyxPQUFJLENBQUM7VUFDbEUsSUFBSW1DLE1BQU0sR0FBR0YsV0FBVyxDQUFFRyxPQUFPLENBQUMsUUFBUSxDQUFDO1VBQzNDLElBQUlDLFNBQVMsR0FBR0YsTUFBTSxDQUFFRCxhQUFhLENBQUMsT0FBTyxDQUFDO1VBQzlDRyxTQUFTLENBQUVaLFNBQVMsQ0FBQ2EsR0FBRyxDQUFDLGVBQWUsQ0FBQztVQUN6Q0gsTUFBTSxDQUFFRCxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBRVYsU0FBUyxHQUFHM0YsYUFBSSxDQUFDSCxDQUFDLGdDQUFBeUUsTUFBQSxDQUMxQkgsS0FBSyxDQUN0QyxDQUFDO1FBQ0g7UUFDQTlCLHFCQUFxQixDQUFDLEtBQUssQ0FBQztNQUM5QjtNQUVBRixhQUFhLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUMsQ0FBQyxDQUNEdUUsS0FBSyxDQUFFdkMsS0FBSyxJQUFLO01BQ2hCNUIsbUJBQW1CLENBQUMsSUFBSSxDQUFDO01BQ3pCRixxQkFBcUIsQ0FBQyxLQUFLLENBQUM7TUFDNUJGLGFBQWEsQ0FBQyxLQUFLLENBQUM7TUFDcEJnRSxVQUFVLENBQUMsTUFBTTtRQUNmNUQsbUJBQW1CLENBQUMsS0FBSyxDQUFDO01BQzVCLENBQUMsRUFBRSxJQUFJLENBQUM7SUFDVixDQUFDLENBQUM7RUFDTixDQUFDO0VBRUQsSUFBQW9FLGdCQUFTLEVBQUMsTUFBTTtJQUNkLElBQUFDLHlCQUFjLEVBQUMscUJBQXFCLEVBQUU7TUFDcENDLFlBQVksRUFBRWpEO0lBQ2hCLENBQUMsQ0FBQztJQUNGO0lBQ0EsTUFBTWtELEtBQUssR0FBR3ZCLFFBQVEsQ0FBQ2MsYUFBYSxDQUFDLG1CQUFtQixDQUFDLENBQUVVLE9BQU87SUFDbEVuQyxjQUFLLENBQUNvQyxRQUFRLENBQUNDLE9BQU8sQ0FBQ0MsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHSixLQUFLO0lBQ3JEbEMsY0FBSyxDQUFDb0MsUUFBUSxDQUFDQyxPQUFPLENBQUNDLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxnQkFBZ0I7SUFDaEV0QyxjQUFLLENBQ0Z1QyxHQUFHLHFCQUFxQixDQUFDLENBQ3pCcEMsSUFBSSxDQUFFQyxJQUFJLElBQUs7TUFDZGxDLFNBQVMsQ0FBQ2tDLElBQUksQ0FBQ2YsSUFBSSxDQUFDYSxJQUFJLENBQUM7TUFDekIsTUFBTXNDLFlBQVksR0FBR0EsQ0FBQ0MsTUFBTSxFQUFFQyxRQUFRLEtBQUs7UUFDekMsT0FBT0QsTUFBTSxDQUFDdEIsSUFBSSxDQUFFL0MsQ0FBQyxJQUFLQSxDQUFDLENBQUM5RCxLQUFLLEtBQUtvSSxRQUFRLENBQUM7TUFDakQsQ0FBQztNQUNEcEgsU0FBUyxDQUFDa0gsWUFBWSxDQUFDdEgsYUFBYSxFQUFFa0YsSUFBSSxDQUFDZixJQUFJLENBQUNhLElBQUksQ0FBQzdFLE1BQU0sQ0FBQyxDQUFDO01BQzdESSxlQUFlLENBQ2IrRyxZQUFZLENBQUNySCxtQkFBbUIsRUFBRWlGLElBQUksQ0FBQ2YsSUFBSSxDQUFDYSxJQUFJLENBQUNqRCxjQUFjLENBQ2pFLENBQUM7TUFDRHRCLGlCQUFpQixDQUNmNkcsWUFBWSxDQUFDbkkscUJBQXFCLEVBQUUrRixJQUFJLENBQUNmLElBQUksQ0FBQ2EsSUFBSSxDQUFDdEQsZ0JBQWdCLENBQ3JFLENBQUM7TUFDRGYsV0FBVyxDQUFDMkcsWUFBWSxDQUFDekgsU0FBUyxFQUFFcUYsSUFBSSxDQUFDZixJQUFJLENBQUNhLElBQUksQ0FBQ3ZELFNBQVMsQ0FBQyxDQUFDO01BQzlETixlQUFlLENBQ2JtRyxZQUFZLENBQ1ZwQyxJQUFJLENBQUNmLElBQUksQ0FBQ3NELGNBQWMsRUFDeEJ2QyxJQUFJLENBQUNmLElBQUksQ0FBQ2EsSUFBSSxDQUFDbkIsZ0JBQ2pCLENBQ0YsQ0FBQztNQUNENUMsYUFBYSxDQUNYcUcsWUFBWSxDQUFDcEMsSUFBSSxDQUFDZixJQUFJLENBQUN2RCxXQUFXLEVBQUVzRSxJQUFJLENBQUNmLElBQUksQ0FBQ2EsSUFBSSxDQUFDckIsYUFBYSxDQUNsRSxDQUFDO01BQ0Q5QyxjQUFjLENBQUNxRSxJQUFJLENBQUNmLElBQUksQ0FBQ3ZELFdBQVcsQ0FBQztNQUNyQ0csZ0JBQWdCLENBQUNtRSxJQUFJLENBQUNmLElBQUksQ0FBQ3NELGNBQWMsQ0FBQztJQUM1QyxDQUFDLENBQUMsQ0FDRGIsS0FBSyxDQUFFdkMsS0FBSyxJQUFLcUQsS0FBSyxDQUFDckQsS0FBSyxDQUFDLENBQUM7RUFDbkMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUVOLG9CQUNFekcsTUFBQSxDQUFBK0osT0FBQSxDQUFBQyxhQUFBLENBQUNwSixVQUFBLENBQUFxSixTQUFTLHFCQUNSakssTUFBQSxDQUFBK0osT0FBQSxDQUFBQyxhQUFBO0lBQUtFLFNBQVMsRUFBQztFQUFjLEdBQUU1SCxhQUFJLENBQUNILENBQUMsQ0FBQyw0QkFBNEIsQ0FBTyxDQUFDLGVBQzFFbkMsTUFBQSxDQUFBK0osT0FBQSxDQUFBQyxhQUFBO0lBQU1HLE1BQU0sRUFBQyxFQUFFO0lBQUNDLFFBQVEsRUFBRzlFLENBQUMsSUFBSzBCLFlBQVksQ0FBQzFCLENBQUM7RUFBRSxnQkFDL0N0RixNQUFBLENBQUErSixPQUFBLENBQUFDLGFBQUE7SUFBS0UsU0FBUyxFQUFDO0VBQVMsZ0JBQ3RCbEssTUFBQSxDQUFBK0osT0FBQSxDQUFBQyxhQUFBO0lBQUtFLFNBQVMsRUFBQztFQUFPLEdBQ25CNUgsYUFBSSxDQUFDSCxDQUFDLENBQUMsdUNBQXVDLENBQzVDLENBQUMsZUFDTm5DLE1BQUEsQ0FBQStKLE9BQUEsQ0FBQUMsYUFBQTtJQUFTRSxTQUFTLEVBQUM7RUFBVSxnQkFDM0JsSyxNQUFBLENBQUErSixPQUFBLENBQUFDLGFBQUE7SUFBS0UsU0FBUyxFQUFDO0VBQU8sZ0JBQ3BCbEssTUFBQSxDQUFBK0osT0FBQSxDQUFBQyxhQUFBO0lBQUtFLFNBQVMsRUFBQztFQUFPLEdBQ25CNUgsYUFBSSxDQUFDSCxDQUFDLENBQUMsaUNBQWlDLENBQ3RDLENBQUMsZUFDTm5DLE1BQUEsQ0FBQStKLE9BQUEsQ0FBQUMsYUFBQTtJQUNFSyxJQUFJLEVBQUMsTUFBTTtJQUNYSCxTQUFTLEVBQUMsVUFBVTtJQUNwQnhFLElBQUksRUFBRSxZQUFhO0lBQ25CbEUsS0FBSyxFQUFFMkQsTUFBTSxDQUFDMUIsVUFBVztJQUN6QjZHLFFBQVEsRUFBR2hGLENBQUMsSUFBS0QsY0FBYyxDQUFDQyxDQUFDO0VBQUUsQ0FDcEMsQ0FBQyxlQUNGdEYsTUFBQSxDQUFBK0osT0FBQSxDQUFBQyxhQUFBO0lBQUdFLFNBQVMsRUFBRTtFQUFnQixDQUFJLENBQy9CLENBQUMsZUFDTmxLLE1BQUEsQ0FBQStKLE9BQUEsQ0FBQUMsYUFBQTtJQUFLRSxTQUFTLEVBQUM7RUFBTyxnQkFDcEJsSyxNQUFBLENBQUErSixPQUFBLENBQUFDLGFBQUE7SUFBS0UsU0FBUyxFQUFDO0VBQU8sR0FDbkI1SCxhQUFJLENBQUNILENBQUMsQ0FBQyxnQ0FBZ0MsQ0FDckMsQ0FBQyxlQUNObkMsTUFBQSxDQUFBK0osT0FBQSxDQUFBQyxhQUFBO0lBQ0VLLElBQUksRUFBQyxNQUFNO0lBQ1hILFNBQVMsRUFBQyxVQUFVO0lBQ3BCeEUsSUFBSSxFQUFFLFdBQVk7SUFDbEJsRSxLQUFLLEVBQUUyRCxNQUFNLENBQUN6QixTQUFVO0lBQ3hCNEcsUUFBUSxFQUFHaEYsQ0FBQyxJQUFLRCxjQUFjLENBQUNDLENBQUM7RUFBRSxDQUNwQyxDQUFDLGVBQ0Z0RixNQUFBLENBQUErSixPQUFBLENBQUFDLGFBQUE7SUFBR0UsU0FBUyxFQUFFO0VBQWdCLENBQUksQ0FDL0IsQ0FBQyxlQUNObEssTUFBQSxDQUFBK0osT0FBQSxDQUFBQyxhQUFBO0lBQUtFLFNBQVMsRUFBQztFQUF1QixnQkFDcENsSyxNQUFBLENBQUErSixPQUFBLENBQUFDLGFBQUE7SUFBS0UsU0FBUyxFQUFDO0VBQU8sR0FDbkI1SCxhQUFJLENBQUNILENBQUMsQ0FBQyw0QkFBNEIsQ0FDakMsQ0FBQyxlQUNObkMsTUFBQSxDQUFBK0osT0FBQSxDQUFBQyxhQUFBO0lBQ0VPLFFBQVEsRUFBRSxJQUFLO0lBQ2ZGLElBQUksRUFBQyxNQUFNO0lBQ1hILFNBQVMsRUFBQyxVQUFVO0lBQ3BCeEUsSUFBSSxFQUFFLE9BQVE7SUFDZGxFLEtBQUssRUFBRTJELE1BQU0sQ0FBQ3ZCO0VBQU0sQ0FDckIsQ0FBQyxlQUNGNUQsTUFBQSxDQUFBK0osT0FBQSxDQUFBQyxhQUFBO0lBQUdFLFNBQVMsRUFBRTtFQUFnQixDQUFJLENBQy9CLENBQUMsZUFDTmxLLE1BQUEsQ0FBQStKLE9BQUEsQ0FBQUMsYUFBQTtJQUFLRSxTQUFTLEVBQUM7RUFBTyxnQkFDcEJsSyxNQUFBLENBQUErSixPQUFBLENBQUFDLGFBQUE7SUFBS0UsU0FBUyxFQUFDO0VBQU8sR0FDbkI1SCxhQUFJLENBQUNILENBQUMsQ0FBQyw0QkFBNEIsQ0FDakMsQ0FBQyxlQUNObkMsTUFBQSxDQUFBK0osT0FBQSxDQUFBQyxhQUFBLENBQUN2SixnQkFBQSxDQUFBc0osT0FBVTtJQUNUUyxPQUFPLEVBQUUsSUFBSztJQUNkQyxZQUFZLEVBQUVuSSxhQUFJLENBQUNILENBQUMsQ0FBQyxXQUFXLENBQUU7SUFDbEN1SSxVQUFVLEVBQUMsYUFBYTtJQUN4QkMsY0FBYyxFQUFDLFVBQVU7SUFDekJDLFdBQVcsRUFBQyxVQUFVO0lBQ3RCQyxhQUFhLEVBQUMsZ0JBQWdCO0lBQzlCckosS0FBSyxFQUFFMkQsTUFBTSxDQUFDeEIsS0FBTTtJQUNwQm1ILFlBQVk7SUFDWkMsaUJBQWlCLEVBQUV6SSxhQUFJLENBQUNILENBQUMsQ0FBQyxRQUFRLENBQUU7SUFDcEM2SSxtQkFBbUIsRUFBRSxLQUFNO0lBQzNCVixRQUFRLEVBQUc5SSxLQUFLLElBQUs7TUFDbkI2RCxjQUFjLENBQUM3RCxLQUFLLENBQUM7SUFDdkIsQ0FBRTtJQUNGeUosVUFBVSxFQUFFO01BQUV2RixJQUFJLEVBQUU7SUFBUTtFQUFFLENBQy9CLENBQUMsZUFDRjFGLE1BQUEsQ0FBQStKLE9BQUEsQ0FBQUMsYUFBQTtJQUFHRSxTQUFTLEVBQUU7RUFBZ0IsQ0FBSSxDQUMvQixDQUFDLEVBQ0xsSCxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUN4QixLQUFLLEtBQUssRUFBRSxpQkFDMUJ4QixNQUFBLENBQUErSixPQUFBLENBQUFDLGFBQUEsQ0FBQWhLLE1BQUEsQ0FBQStKLE9BQUEsQ0FBQW1CLFFBQUEscUJBQ0VsTCxNQUFBLENBQUErSixPQUFBLENBQUFDLGFBQUE7SUFBS0UsU0FBUyxFQUFDO0VBQU8sZ0JBQ3BCbEssTUFBQSxDQUFBK0osT0FBQSxDQUFBQyxhQUFBO0lBQUtFLFNBQVMsRUFBQztFQUFPLEdBQ25CNUgsYUFBSSxDQUFDSCxDQUFDLENBQUMsaUNBQWlDLENBQ3RDLENBQUMsZUFDTm5DLE1BQUEsQ0FBQStKLE9BQUEsQ0FBQUMsYUFBQTtJQUFLRSxTQUFTLEVBQUM7RUFBVSxnQkFDdkJsSyxNQUFBLENBQUErSixPQUFBLENBQUFDLGFBQUEsQ0FBQzdKLE9BQUEsQ0FBQWdMLE1BQU07SUFDTEMsUUFBUSxFQUFFL0gsYUFBYztJQUN4QjdCLEtBQUssRUFBRTtNQUNMQyxLQUFLLEVBQUVhLGFBQUksQ0FBQ0gsQ0FBQyxxQ0FBQXlFLE1BQUEsQ0FDeUJ4RCxVQUFVLGFBQVZBLFVBQVUsdUJBQVZBLFVBQVUsQ0FBRTNCLEtBQUssQ0FDdkQsQ0FBQztNQUNERCxLQUFLLEVBQUU0QixVQUFVLGFBQVZBLFVBQVUsdUJBQVZBLFVBQVUsQ0FBRTVCO0lBQ3JCLENBQUU7SUFDRjZKLE9BQU8sRUFBRXJJLFdBQVk7SUFDckJzSSxlQUFlO0lBQ2ZDLFNBQVMsRUFBRTtNQUNURixPQUFPLEVBQUVySSxXQUFXO01BQ3BCd0ksZUFBZSxFQUFFO0lBQ25CO0VBQUUsQ0FDSCxDQUNFLENBQ0YsQ0FBQyxlQUNOeEwsTUFBQSxDQUFBK0osT0FBQSxDQUFBQyxhQUFBO0lBQUtFLFNBQVMsRUFBQztFQUFPLGdCQUNwQmxLLE1BQUEsQ0FBQStKLE9BQUEsQ0FBQUMsYUFBQTtJQUFLRSxTQUFTLEVBQUM7RUFBTyxHQUNuQjVILGFBQUksQ0FBQ0gsQ0FBQyxDQUFDLG9DQUFvQyxDQUN6QyxDQUFDLGVBQ05uQyxNQUFBLENBQUErSixPQUFBLENBQUFDLGFBQUE7SUFBS0UsU0FBUyxFQUFDO0VBQVUsZ0JBQ3ZCbEssTUFBQSxDQUFBK0osT0FBQSxDQUFBQyxhQUFBLENBQUM3SixPQUFBLENBQUFnTCxNQUFNO0lBQ0xDLFFBQVEsRUFBRTdILGVBQWdCO0lBQzFCL0IsS0FBSyxFQUFFO01BQ0xDLEtBQUssRUFBRWEsYUFBSSxDQUFDSCxDQUFDLHdDQUFBeUUsTUFBQSxDQUM0QnRELFlBQVksYUFBWkEsWUFBWSx1QkFBWkEsWUFBWSxDQUFFN0IsS0FBSyxDQUM1RCxDQUFDO01BQ0RELEtBQUssRUFBRThCLFlBQVksYUFBWkEsWUFBWSx1QkFBWkEsWUFBWSxDQUFFOUI7SUFDdkIsQ0FBRTtJQUNGNkosT0FBTyxFQUFFbkksYUFBYztJQUN2Qm9JLGVBQWU7SUFDZkMsU0FBUyxFQUFFO01BQ1RGLE9BQU8sRUFBRW5JLGFBQWE7TUFDdEJzSSxlQUFlLEVBQUU7SUFDbkI7RUFBRSxDQUNILENBQ0UsQ0FDRixDQUNMLENBQ0gsRUFDQXhJLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQ3hCLEtBQUssS0FBSyxFQUFFLGlCQUMxQnhCLE1BQUEsQ0FBQStKLE9BQUEsQ0FBQUMsYUFBQSxDQUFBaEssTUFBQSxDQUFBK0osT0FBQSxDQUFBbUIsUUFBQSxxQkFDRWxMLE1BQUEsQ0FBQStKLE9BQUEsQ0FBQUMsYUFBQTtJQUNFRSxTQUFTLFdBQUF0RCxNQUFBLENBQ1B4RCxVQUFVLElBQ1YsQ0FBQUEsVUFBVSxhQUFWQSxVQUFVLHVCQUFWQSxVQUFVLENBQUU1QixLQUFLLE1BQ2Z3QixXQUFXLENBQUNBLFdBQVcsQ0FBQ3lJLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQ2pLLEtBQUssR0FDdkMsRUFBRSxHQUNGLGVBQWU7RUFDbEIsZ0JBRUh4QixNQUFBLENBQUErSixPQUFBLENBQUFDLGFBQUE7SUFBS0UsU0FBUyxFQUFDO0VBQU8sR0FDbkI1SCxhQUFJLENBQUNILENBQUMsQ0FBQyxxQ0FBcUMsQ0FDMUMsQ0FBQyxlQUNObkMsTUFBQSxDQUFBK0osT0FBQSxDQUFBQyxhQUFBO0lBQ0VPLFFBQVEsRUFBRSxLQUFNO0lBQ2hCRixJQUFJLEVBQUMsTUFBTTtJQUNYSCxTQUFTLEVBQUMsVUFBVTtJQUNwQnhFLElBQUksRUFBRSx1QkFBd0I7SUFDOUJsRSxLQUFLLEVBQUUyRCxNQUFNLENBQUNsQixxQkFBc0I7SUFDcENxRyxRQUFRLEVBQUdoRixDQUFDLElBQUtPLHNCQUFzQixDQUFDUCxDQUFDO0VBQUUsQ0FDNUMsQ0FDRSxDQUFDLGVBQ050RixNQUFBLENBQUErSixPQUFBLENBQUFDLGFBQUE7SUFDRUUsU0FBUyxXQUFBdEQsTUFBQSxDQUNQdEQsWUFBWSxJQUNaLENBQUFBLFlBQVksYUFBWkEsWUFBWSx1QkFBWkEsWUFBWSxDQUFFOUIsS0FBSyxNQUNqQjBCLGFBQWEsQ0FBQ0EsYUFBYSxDQUFDdUksTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDakssS0FBSyxHQUMzQyxFQUFFLEdBQ0YsZUFBZTtFQUNqQixnQkFFSnhCLE1BQUEsQ0FBQStKLE9BQUEsQ0FBQUMsYUFBQTtJQUFLRSxTQUFTLEVBQUM7RUFBTyxHQUNuQjVILGFBQUksQ0FBQ0gsQ0FBQyxDQUFDLHdDQUF3QyxDQUM3QyxDQUFDLGVBQ05uQyxNQUFBLENBQUErSixPQUFBLENBQUFDLGFBQUE7SUFDRU8sUUFBUSxFQUFFLEtBQU07SUFDaEJGLElBQUksRUFBQyxNQUFNO0lBQ1hILFNBQVMsRUFBQyxVQUFVO0lBQ3BCeEUsSUFBSSxFQUFFLDBCQUEyQjtJQUNqQ2xFLEtBQUssRUFBRTJELE1BQU0sQ0FBQ25CLHdCQUF5QjtJQUN2Q3NHLFFBQVEsRUFBR2hGLENBQUMsSUFBS00sd0JBQXdCLENBQUNOLENBQUM7RUFBRSxDQUM5QyxDQUNFLENBQ0wsQ0FDSCxlQUNEdEYsTUFBQSxDQUFBK0osT0FBQSxDQUFBQyxhQUFBO0lBQUtFLFNBQVMsRUFBQztFQUFPLGdCQUNwQmxLLE1BQUEsQ0FBQStKLE9BQUEsQ0FBQUMsYUFBQTtJQUNFRSxTQUFTLEVBQUMsaUJBQWlCO0lBQzNCd0IsT0FBTyxFQUFFQSxDQUFBLEtBQU1uSCxvQkFBb0IsQ0FBQyxJQUFJO0VBQUUsZ0JBRTFDdkUsTUFBQSxDQUFBK0osT0FBQSxDQUFBQyxhQUFBLENBQUN6SixJQUFBLENBQUFvTCxjQUFNO0lBQUNDLEtBQUssRUFBQyxNQUFNO0lBQUNDLE1BQU0sRUFBQyxNQUFNO0lBQUNDLElBQUksRUFBQztFQUFTLENBQUUsQ0FBQyxFQUNuRCxJQUFJLEVBQ0p4SixhQUFJLENBQUNILENBQUMsQ0FBQyxzQ0FBc0MsQ0FDM0MsQ0FDRixDQUNFLENBQUMsZUFDVm5DLE1BQUEsQ0FBQStKLE9BQUEsQ0FBQUMsYUFBQTtJQUFLRSxTQUFTLEVBQUM7RUFBTyxHQUFFNUgsYUFBSSxDQUFDSCxDQUFDLENBQUMsK0JBQStCLENBQU8sQ0FBQyxlQUN0RW5DLE1BQUEsQ0FBQStKLE9BQUEsQ0FBQUMsYUFBQTtJQUFTRSxTQUFTLEVBQUM7RUFBVSxnQkFDM0JsSyxNQUFBLENBQUErSixPQUFBLENBQUFDLGFBQUE7SUFBS0UsU0FBUyxFQUFDO0VBQU8sZ0JBQ3BCbEssTUFBQSxDQUFBK0osT0FBQSxDQUFBQyxhQUFBO0lBQUtFLFNBQVMsRUFBQztFQUFPLEdBQ25CNUgsYUFBSSxDQUFDSCxDQUFDLENBQUMsZ0NBQWdDLENBQUMsRUFBQyxHQUN2QyxDQUFDLGVBQ05uQyxNQUFBLENBQUErSixPQUFBLENBQUFDLGFBQUE7SUFBS0UsU0FBUyxFQUFDO0VBQVUsZ0JBQ3ZCbEssTUFBQSxDQUFBK0osT0FBQSxDQUFBQyxhQUFBLENBQUM3SixPQUFBLENBQUFnTCxNQUFNO0lBQ0xDLFFBQVEsRUFBRXJJLFdBQVk7SUFDdEJ2QixLQUFLLEVBQUVzQixRQUFTO0lBQ2hCdUksT0FBTyxFQUFFcEosU0FBVTtJQUNuQnFKLGVBQWU7RUFBQSxDQUNoQixDQUNFLENBQ0YsQ0FBQyxlQUNOdEwsTUFBQSxDQUFBK0osT0FBQSxDQUFBQyxhQUFBO0lBQUtFLFNBQVMsRUFBQztFQUFPLGdCQUNwQmxLLE1BQUEsQ0FBQStKLE9BQUEsQ0FBQUMsYUFBQTtJQUFLRSxTQUFTLEVBQUM7RUFBTyxHQUNuQjVILGFBQUksQ0FBQ0gsQ0FBQyxDQUFDLHVDQUF1QyxDQUFDLEVBQUMsR0FDOUMsQ0FBQyxlQUNObkMsTUFBQSxDQUFBK0osT0FBQSxDQUFBQyxhQUFBO0lBQUtFLFNBQVMsRUFBQztFQUFVLGdCQUN2QmxLLE1BQUEsQ0FBQStKLE9BQUEsQ0FBQUMsYUFBQSxDQUFDN0osT0FBQSxDQUFBZ0wsTUFBTTtJQUNMRSxPQUFPLEVBQUU5SixxQkFBc0I7SUFDL0JDLEtBQUssRUFBRW9CLGNBQWU7SUFDdEJ3SSxRQUFRLEVBQUV2SSxpQkFBa0I7SUFDNUJ5SSxlQUFlO0VBQUEsQ0FDaEIsQ0FDRSxDQUFDLGVBQ050TCxNQUFBLENBQUErSixPQUFBLENBQUFDLGFBQUE7SUFBS0UsU0FBUyxFQUFFO0VBQW1CLEdBQ2hDdEgsY0FBYyxLQUFLb0QsU0FBUyxJQUMzQixJQUFJK0YsSUFBSSxDQUFDLENBQUMsQ0FBQ0Msa0JBQWtCLENBQUMsT0FBTyxFQUFFcEosY0FBYyxDQUFDbEIsTUFBTSxDQUMzRCxDQUNGLENBQUMsZUFDTjFCLE1BQUEsQ0FBQStKLE9BQUEsQ0FBQUMsYUFBQTtJQUFLRSxTQUFTLEVBQUM7RUFBTyxnQkFDcEJsSyxNQUFBLENBQUErSixPQUFBLENBQUFDLGFBQUE7SUFBS0UsU0FBUyxFQUFDO0VBQU8sR0FDbkI1SCxhQUFJLENBQUNILENBQUMsQ0FBQywrQkFBK0IsQ0FBQyxFQUFDLEdBQ3RDLENBQUMsZUFDTm5DLE1BQUEsQ0FBQStKLE9BQUEsQ0FBQUMsYUFBQTtJQUFLRSxTQUFTLEVBQUU7RUFBVyxnQkFDekJsSyxNQUFBLENBQUErSixPQUFBLENBQUFDLGFBQUEsQ0FBQzdKLE9BQUEsQ0FBQWdMLE1BQU07SUFDTEUsT0FBTyxFQUFFakosYUFBYztJQUN2QlosS0FBSyxFQUFFZSxNQUFPO0lBQ2Q2SSxRQUFRLEVBQUU1SSxTQUFVO0lBQ3BCOEksZUFBZTtFQUFBLENBQ2hCLENBQ0UsQ0FDRixDQUFDLGVBQ050TCxNQUFBLENBQUErSixPQUFBLENBQUFDLGFBQUE7SUFBS0UsU0FBUyxFQUFDO0VBQXNCLEdBQ2xDL0UsTUFBTSxDQUFDcEIsYUFBYSxLQUFLLEVBQUUsaUJBQzFCL0QsTUFBQSxDQUFBK0osT0FBQSxDQUFBQyxhQUFBO0lBQUdFLFNBQVMsRUFBQyxVQUFVO0lBQUN3QixPQUFPLEVBQUVBLENBQUEsS0FBTXJILGlCQUFpQixDQUFDLElBQUk7RUFBRSxHQUM1RC9CLGFBQUksQ0FBQ0gsQ0FBQyxDQUFDLDBDQUEwQyxDQUNqRCxDQUNKLEVBQ0FnRCxNQUFNLENBQUNwQixhQUFhLEtBQUssRUFBRSxpQkFDMUIvRCxNQUFBLENBQUErSixPQUFBLENBQUFDLGFBQUEsQ0FBQWhLLE1BQUEsQ0FBQStKLE9BQUEsQ0FBQW1CLFFBQUEscUJBQ0VsTCxNQUFBLENBQUErSixPQUFBLENBQUFDLGFBQUE7SUFBS0UsU0FBUyxFQUFDO0VBQU8sZ0JBQ3BCbEssTUFBQSxDQUFBK0osT0FBQSxDQUFBQyxhQUFBO0lBQUtFLFNBQVMsRUFBQztFQUFPLEdBQ25CNUgsYUFBSSxDQUFDSCxDQUFDLENBQUMsb0NBQW9DLENBQUMsZUFDN0NuQyxNQUFBLENBQUErSixPQUFBLENBQUFDLGFBQUE7SUFDRUUsU0FBUyxFQUFDLE9BQU87SUFDakJ3QixPQUFPLEVBQUVBLENBQUEsS0FBTXJILGlCQUFpQixDQUFDLElBQUk7RUFBRSxnQkFFdkNyRSxNQUFBLENBQUErSixPQUFBLENBQUFDLGFBQUEsQ0FBQ3pKLElBQUEsQ0FBQW9MLGNBQU07SUFBQ0MsS0FBSyxFQUFDLE1BQU07SUFBQ0MsTUFBTSxFQUFDLE1BQU07SUFBQ0MsSUFBSSxFQUFDO0VBQVMsQ0FBRSxDQUFDLEVBQUMsR0FBRyxFQUN2RHhKLGFBQUksQ0FBQ0gsQ0FBQyxDQUFDLGtDQUFrQyxDQUN2QyxDQUNGLENBQUMsZUFDTm5DLE1BQUEsQ0FBQStKLE9BQUEsQ0FBQUMsYUFBQTtJQUFLRSxTQUFTLEVBQUU7RUFBMEIsZ0JBQ3hDbEssTUFBQSxDQUFBK0osT0FBQSxDQUFBQyxhQUFBO0lBQ0VPLFFBQVEsRUFBRSxJQUFLO0lBQ2ZGLElBQUksRUFBQyxNQUFNO0lBQ1hILFNBQVMsRUFBQyxVQUFVO0lBQ3BCeEUsSUFBSSxFQUFFLGVBQWdCO0lBQ3RCbEUsS0FBSyxFQUFFMkQsTUFBTSxDQUFDcEI7RUFBYyxDQUM3QixDQUFDLGVBQ0YvRCxNQUFBLENBQUErSixPQUFBLENBQUFDLGFBQUE7SUFDRUUsU0FBUyxFQUFFLHdDQUF5QztJQUNwRHdCLE9BQU8sRUFBR3BHLENBQUMsSUFBSztNQUNkRixTQUFTLENBQUVLLFNBQVMsS0FBTTtRQUN4QixHQUFHQSxTQUFTO1FBQ1oxQixhQUFhLEVBQUU7TUFDakIsQ0FBQyxDQUFDLENBQUM7SUFDTDtFQUFFLGdCQUVGL0QsTUFBQSxDQUFBK0osT0FBQSxDQUFBQyxhQUFBLENBQUN4SixPQUFBLENBQUFtTCxjQUFNLE1BQUUsQ0FDTixDQUNGLENBQUMsZUFDTjNMLE1BQUEsQ0FBQStKLE9BQUEsQ0FBQUMsYUFBQTtJQUFHRSxTQUFTLEVBQUU7RUFBZ0IsQ0FBSSxDQUMvQixDQUFDLGVBQ05sSyxNQUFBLENBQUErSixPQUFBLENBQUFDLGFBQUEsMkJBQ0VoSyxNQUFBLENBQUErSixPQUFBLENBQUFDLGFBQUE7SUFDRUUsU0FBUyxFQUFFLGVBQWdCO0lBQzNCd0IsT0FBTyxFQUFFQSxDQUFBLEtBQU07TUFDYnhFLGNBQUssQ0FDRnVDLEdBQUcsbUNBQW1DLENBQUMsQ0FDdkNwQyxJQUFJLENBQUVDLElBQUksSUFBSztRQUNkdkMsOEJBQThCLENBQUM7VUFDN0JFLE1BQU0sRUFDSnFDLElBQUksQ0FBQ2YsSUFBSSxDQUFDYSxJQUFJLENBQUNuQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUNnSCxXQUFXLENBQUMsQ0FBQyxHQUN0QzNFLElBQUksQ0FBQ2YsSUFBSSxDQUFDYSxJQUFJLENBQUNuQyxNQUFNLENBQUNpSCxTQUFTLENBQUMsQ0FBQyxDQUFDO1VBQ3BDaEgsT0FBTyxFQUFFb0MsSUFBSSxDQUFDZixJQUFJLENBQUNhLElBQUksQ0FBQ2xDLE9BQU87VUFDL0JGLElBQUksRUFBRTtRQUNSLENBQUMsQ0FBQztRQUNGeUQsVUFBVSxDQUFDLE1BQU07VUFDZjFELDhCQUE4QixDQUFDO1lBQzdCRSxNQUFNLEVBQUUsRUFBRTtZQUNWQyxPQUFPLEVBQUUsRUFBRTtZQUNYRixJQUFJLEVBQUU7VUFDUixDQUFDLENBQUM7UUFDSixDQUFDLEVBQUUsSUFBSSxDQUFDO1FBQ1JzQixTQUFTLENBQUNnQixJQUFJLENBQUNmLElBQUksQ0FBQ2EsSUFBSSxDQUFDO01BQzNCLENBQUMsQ0FBQyxDQUNENEIsS0FBSyxDQUFFdkMsS0FBSyxJQUFLcUQsS0FBSyxDQUFDckQsS0FBSyxDQUFDLENBQUM7SUFDbkM7RUFBRSxHQUVELENBQUMzQiwyQkFBMkIsQ0FBQ0UsSUFBSSxJQUNoQzFDLGFBQUksQ0FBQ0gsQ0FBQyxDQUFDLDRDQUE0QyxDQUFDLEVBQ3JEMkMsMkJBQTJCLENBQUNFLElBQUksSUFDL0JGLDJCQUEyQixDQUFDRyxNQUM3QixDQUNBLENBQ0wsQ0FFRCxDQUFDLGVBQ05qRixNQUFBLENBQUErSixPQUFBLENBQUFDLGFBQUE7SUFBS0UsU0FBUyxFQUFDO0VBQU8sZ0JBQ3BCbEssTUFBQSxDQUFBK0osT0FBQSxDQUFBQyxhQUFBO0lBQUtFLFNBQVMsRUFBQztFQUFPLEdBQ25CNUgsYUFBSSxDQUFDSCxDQUFDLENBQUMsc0NBQXNDLENBQzNDLENBQUMsZUFDTm5DLE1BQUEsQ0FBQStKLE9BQUEsQ0FBQUMsYUFBQTtJQUFLRSxTQUFTLEVBQUU7RUFBVyxnQkFDekJsSyxNQUFBLENBQUErSixPQUFBLENBQUFDLGFBQUEsQ0FBQzdKLE9BQUEsQ0FBQWdMLE1BQU07SUFDTEUsT0FBTyxFQUFFaEosbUJBQW9CO0lBQzdCYixLQUFLLEVBQUVrQixZQUFhO0lBQ3BCMEksUUFBUSxFQUFFekksZUFBZ0I7SUFDMUIySSxlQUFlO0VBQUEsQ0FDaEIsQ0FDRSxDQUNGLENBQ0UsQ0FBQyxlQUNWdEwsTUFBQSxDQUFBK0osT0FBQSxDQUFBQyxhQUFBO0lBQVFLLElBQUksRUFBRSxRQUFTO0lBQUNILFNBQVMsRUFBRSxNQUFPO0lBQUNpQyxRQUFRLEVBQUUzSDtFQUFXLEdBQzdELENBQUNBLFVBQVUsSUFDVixDQUFDRSxrQkFBa0IsSUFDbkIsQ0FBQ0UsZ0JBQWdCLElBQ2pCdEMsYUFBSSxDQUFDSCxDQUFDLENBQUMsNkJBQTZCLENBQUMsRUFDdENxQyxVQUFVLElBQ1QsQ0FBQ0Usa0JBQWtCLElBQ25CLENBQUNFLGdCQUFnQixJQUNqQnRDLGFBQUksQ0FBQ0gsQ0FBQyxDQUFDLGlDQUFpQyxDQUFDLEVBQzFDdUMsa0JBQWtCLElBQUlwQyxhQUFJLENBQUNILENBQUMsQ0FBQyw4QkFBOEIsQ0FBQyxFQUM1RHlDLGdCQUFnQixJQUFJdEMsYUFBSSxDQUFDSCxDQUFDLENBQUMsNEJBQTRCLENBQ2xELENBQ0wsQ0FDRCxDQUFDLEVBRU5tQyxpQkFBaUIsaUJBQ2hCdEUsTUFBQSxDQUFBK0osT0FBQSxDQUFBQyxhQUFBLENBQUMxSixjQUFBLENBQUE4TCxhQUFhO0lBQ1pDLEtBQUssRUFBRUEsQ0FBQSxLQUFNOUgsb0JBQW9CLENBQUMsS0FBSyxDQUFFO0lBQ3pDK0gsSUFBSSxFQUFFQSxDQUFBLEtBQU0sQ0FBQztFQUFFLENBQ2hCLENBQ0YsRUFDQWxJLGNBQWMsaUJBQ2JwRSxNQUFBLENBQUErSixPQUFBLENBQUFDLGFBQUEsQ0FBQ3RKLGNBQUEsQ0FBQTZMLGFBQWE7SUFDWkYsS0FBSyxFQUFFQSxDQUFBLEtBQU1oSSxpQkFBaUIsQ0FBQyxLQUFLLENBQUU7SUFDdENnQixjQUFjLEVBQUVBLGNBQWU7SUFDL0IyQixZQUFZLEVBQUVBO0VBQWEsQ0FDNUIsQ0FFTSxDQUFDO0FBRWhCLENBQUM7QUFBQ3dGLE9BQUEsQ0FBQXRMLFdBQUEsR0FBQUEsV0FBQSJ9