@kando-env/kando-ui 1.2.466-alpha.7 → 1.2.466-alpha.9

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 (728) hide show
  1. package/lib/Router.js +81 -40
  2. package/lib/Widgets/EventsCarousel/EventsCarousel.js +35 -24
  3. package/lib/Widgets/EventsRow/EventsRow.js +39 -26
  4. package/lib/Widgets/Map/GraphUtils.js +6 -4
  5. package/lib/Widgets/Map/Map.js +139 -100
  6. package/lib/Widgets/Map/MapUtils.js +102 -83
  7. package/lib/Widgets/Map/areas/AreaPolygon.js +84 -57
  8. package/lib/Widgets/Map/areas/AreaPolygons.js +25 -23
  9. package/lib/Widgets/Map/areas/AreaUtils.js +46 -46
  10. package/lib/Widgets/Map/areas/Patterns.js +5 -5
  11. package/lib/Widgets/Map/edges/Edge.js +41 -32
  12. package/lib/Widgets/Map/edges/Edges.js +24 -19
  13. package/lib/Widgets/Map/edges/arrows/Arrows.js +45 -24
  14. package/lib/Widgets/Map/events/Event.js +14 -15
  15. package/lib/Widgets/Map/events/EventIndicator.js +63 -66
  16. package/lib/Widgets/Map/events/EventPath.js +34 -33
  17. package/lib/Widgets/Map/events/EventUtils.js +78 -54
  18. package/lib/Widgets/Map/events/NetworkForSpecificEvent.js +19 -17
  19. package/lib/Widgets/Map/events/PointOfEvent.js +36 -27
  20. package/lib/Widgets/Map/events/PointsForSpecificEvent.js +39 -29
  21. package/lib/Widgets/Map/events/Snail.js +11 -10
  22. package/lib/Widgets/Map/graphDNDArea/GraphDNDArea.js +79 -77
  23. package/lib/Widgets/Map/map/FloatingGraph.js +21 -24
  24. package/lib/Widgets/Map/map/GraphDateButton.js +20 -27
  25. package/lib/Widgets/Map/matchGraph/MatchGraph.js +14 -14
  26. package/lib/Widgets/Map/matchGraph/createFloatingGraph.js +16 -17
  27. package/lib/Widgets/Map/points/PointIcon.js +22 -23
  28. package/lib/Widgets/Map/points/PointMarker.js +88 -68
  29. package/lib/Widgets/Map/points/PointMarkers.js +36 -30
  30. package/lib/Widgets/Map/points/PointUtils.js +90 -76
  31. package/lib/Widgets/MostPolluting/Areas/AreaBox/AreaBox.js +43 -25
  32. package/lib/Widgets/MostPolluting/Areas/AreaBox/Map/Map.js +11 -11
  33. package/lib/Widgets/MostPolluting/Areas/AreaBox/PieChart/PieChart.js +14 -11
  34. package/lib/Widgets/MostPolluting/Areas/AreaBox/styles.js +6 -4
  35. package/lib/Widgets/MostPolluting/Areas/Areas.js +60 -28
  36. package/lib/Widgets/MostPolluting/Areas/areas.mock.js +4 -3
  37. package/lib/Widgets/MostPolluting/Areas/areasResponse.interface.js +1 -1
  38. package/lib/Widgets/MostPolluting/Areas/styles.js +6 -4
  39. package/lib/Widgets/MostPolluting/EmptyState/EmptyState.js +9 -12
  40. package/lib/Widgets/MostPolluting/Factories/Factories.js +65 -33
  41. package/lib/Widgets/MostPolluting/Factories/FactoryBox/CardLayout.js +20 -15
  42. package/lib/Widgets/MostPolluting/Factories/FactoryBox/FactoryBox.js +20 -15
  43. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PieChart/PieChart.js +10 -9
  44. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PollutionScore.js +11 -13
  45. package/lib/Widgets/MostPolluting/Factories/FactoryBox/styles.js +6 -4
  46. package/lib/Widgets/MostPolluting/Factories/factories.mock.js +3 -2
  47. package/lib/Widgets/MostPolluting/Factories/factoriesResponse.interface.js +1 -1
  48. package/lib/Widgets/MostPolluting/Factories/styles.js +6 -4
  49. package/lib/Widgets/MostPolluting/MostPolluting.js +34 -23
  50. package/lib/Widgets/MostPolluting/MostPolluting.stories.js +32 -20
  51. package/lib/Widgets/MostPolluting/ShowMore/ShowMore.js +5 -7
  52. package/lib/Widgets/MostPolluting/ShowMore/styles.js +6 -7
  53. package/lib/Widgets/MostPolluting/assets/index.js +12 -12
  54. package/lib/Widgets/MostPolluting/components/ChangePercent.js +14 -20
  55. package/lib/Widgets/MostPolluting/components/ChangePercent.test.js +31 -36
  56. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.js +54 -49
  57. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.test.js +40 -44
  58. package/lib/Widgets/MostPolluting/components/PotentialImpact.js +27 -28
  59. package/lib/Widgets/MostPolluting/components/PotentialImpact.test.js +49 -53
  60. package/lib/Widgets/MostPolluting/models.js +1 -1
  61. package/lib/Widgets/MostPolluting/styles.js +6 -4
  62. package/lib/Widgets/PotentialImpactSummary/Back/Back.js +6 -8
  63. package/lib/Widgets/PotentialImpactSummary/Icon.js +39 -30
  64. package/lib/Widgets/PotentialImpactSummary/index.js +28 -20
  65. package/lib/Widgets/PotentialImpactSummary/index.test.js +54 -48
  66. package/lib/Widgets/PotentialImpactSummary/styles.js +13 -8
  67. package/lib/Widgets/PotentialImpactSummary/useCasesResponse.interface.js +1 -1
  68. package/lib/Widgets/QualitySummary/PieChart/LegendMenu/LegendMenu.js +8 -10
  69. package/lib/Widgets/QualitySummary/PieChart/PieChart.js +18 -23
  70. package/lib/Widgets/QualitySummary/PieChart/PieChart.test.js +31 -34
  71. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.js +26 -28
  72. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.test.js +38 -35
  73. package/lib/Widgets/QualitySummary/QualitySummary.js +14 -10
  74. package/lib/Widgets/QualitySummary/qualitySummary.mock.js +7 -4
  75. package/lib/Widgets/QualitySummary/qualitySummaryResponse.interface.js +1 -1
  76. package/lib/Widgets/QualitySummary/styles.js +21 -24
  77. package/lib/Widgets/UtilityInformation/MapModal/MapModal.js +14 -12
  78. package/lib/Widgets/UtilityInformation/PopupWithMap/Map/Map.js +25 -25
  79. package/lib/Widgets/UtilityInformation/PopupWithMap/PopupWithMap.js +21 -26
  80. package/lib/Widgets/UtilityInformation/UtilityInformation.js +36 -23
  81. package/lib/Widgets/UtilityInformation/UtilityInformationResponse.interface.js +1 -1
  82. package/lib/Widgets/UtilityInformation/styles.js +31 -30
  83. package/lib/Widgets/UtilityInformation/utilityInformation.mock.js +5 -3
  84. package/lib/assets/icons/TopNavbar/index.js +7 -7
  85. package/lib/assets/icons/TrendSvg.js +7 -7
  86. package/lib/assets/icons/index.js +16 -16
  87. package/lib/assets/icons/kandoStepper/index.js +7 -7
  88. package/lib/assets/icons/siteTypes/index.js +2 -2
  89. package/lib/components/ApplyButton/ApplyButton.js +11 -10
  90. package/lib/components/ApplyButton/index.js +4 -3
  91. package/lib/components/Backdrop/Backdrop.js +5 -7
  92. package/lib/components/ContentLoader/ContentLoader.js +10 -12
  93. package/lib/components/ContentLoader/index.js +2 -2
  94. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.js +12 -12
  95. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.stories.js +9 -5
  96. package/lib/components/CustomInputs/DoubleTabs/styles.js +16 -21
  97. package/lib/components/CustomInputs/PasswordInput/PasswordInput.js +20 -12
  98. package/lib/components/CustomInputs/PrimaryButton/PrimaryButton.js +6 -7
  99. package/lib/components/CustomInputs/Search/Search.js +60 -37
  100. package/lib/components/CustomInputs/Search/index.js +4 -3
  101. package/lib/components/CustomInputs/Select/Select.js +55 -38
  102. package/lib/components/CustomInputs/Select/Select.stories.js +10 -6
  103. package/lib/components/DamageType/DamageType.js +60 -35
  104. package/lib/components/DamageType/index.js +4 -3
  105. package/lib/components/DataLoaderError/DataLoaderError.js +7 -9
  106. package/lib/components/DischargeHeatmap/DischargeHeatmap.js +13 -11
  107. package/lib/components/DischargeHeatmap/DischargeHeatmap.test.js +73 -72
  108. package/lib/components/DischargeHeatmap/DischargeHeatmapContainer.js +37 -25
  109. package/lib/components/DischargeHeatmap/HighchartsOptions.js +16 -12
  110. package/lib/components/DischargeHeatmap/index.js +4 -3
  111. package/lib/components/DischargeHeatmap/mocks/handlers.js +6 -5
  112. package/lib/components/DischargeHeatmap/popupText.js +12 -11
  113. package/lib/components/DischargeHeatmap/titles.js +6 -4
  114. package/lib/components/DischargeHeatmap/types.js +1 -1
  115. package/lib/components/ErrorBoundary.js +42 -27
  116. package/lib/components/Events/Events.js +48 -29
  117. package/lib/components/Events/index.js +4 -3
  118. package/lib/components/Graph/Graph.js +95 -74
  119. package/lib/components/Graph/index.js +4 -3
  120. package/lib/components/Header/Breadcrumbs/Breadcrumbs.js +24 -19
  121. package/lib/components/Header/Breadcrumbs/index.js +4 -3
  122. package/lib/components/Header/DoubleTabs/DoubleTabs.js +28 -18
  123. package/lib/components/Header/DoubleTabs/DoubleTabs.stories.js +9 -5
  124. package/lib/components/Header/DoubleTabs/styles.js +8 -5
  125. package/lib/components/Header/Header.js +3 -3
  126. package/lib/components/Header/Header.stories.js +9 -5
  127. package/lib/components/Header/InfoBar/Breadcrumbs/Breadcrumbs.js +36 -24
  128. package/lib/components/Header/InfoBar/InfoBar.js +102 -69
  129. package/lib/components/Header/InfoBar/Search/Control.js +10 -11
  130. package/lib/components/Header/InfoBar/Search/GroupLabel.js +7 -8
  131. package/lib/components/Header/InfoBar/Search/Search.js +24 -17
  132. package/lib/components/Header/InfoBar/Search/SearchContainer.js +35 -21
  133. package/lib/components/Header/InfoBar/Search/index.js +4 -3
  134. package/lib/components/Header/InfoBar/Search/searchStyle.js +49 -36
  135. package/lib/components/Header/InfoBar/TimeFilter.js +17 -13
  136. package/lib/components/Header/InfoBar/types.js +1 -1
  137. package/lib/components/Header/KandoNavbar/KandoNavbar.js +93 -66
  138. package/lib/components/Header/KandoNavbar/index.js +4 -3
  139. package/lib/components/Header/Slideshow/Slideshow.js +91 -67
  140. package/lib/components/Header/Slideshow/index.js +4 -3
  141. package/lib/components/Header/Toolbar/ClientImg/ClientImg.js +5 -7
  142. package/lib/components/Header/Toolbar/CustomerMenu/CustomerMenu.js +24 -22
  143. package/lib/components/Header/Toolbar/MenuCreator/MenuCreator.js +17 -17
  144. package/lib/components/Header/Toolbar/SearchDropdown/SearchDropdown.js +42 -36
  145. package/lib/components/Header/Toolbar/Toolbar.js +76 -58
  146. package/lib/components/InfoBar/InfoBar.js +24 -10
  147. package/lib/components/InfoBar/InfoBar.stories.js +9 -5
  148. package/lib/components/KandoModal/KandoModal.js +62 -26
  149. package/lib/components/KandoModal/index.js +4 -3
  150. package/lib/components/Link.js +8 -9
  151. package/lib/components/Links/CustomRedirect/CustomRedirect.js +7 -10
  152. package/lib/components/Links/StyledLink/StyledLink.js +20 -17
  153. package/lib/components/Links/StyledNavLink/StyledNavLink.js +10 -12
  154. package/lib/components/LiveEvents/CarouselSlide.js +10 -11
  155. package/lib/components/LiveEvents/LiveEvents.js +6 -7
  156. package/lib/components/LiveEvents/index.js +4 -3
  157. package/lib/components/LoaderByPercent/LoaderByPercent.js +30 -37
  158. package/lib/components/Map/Map.js +25 -20
  159. package/lib/components/Map/index.js +4 -3
  160. package/lib/components/Modal/Modal.js +10 -10
  161. package/lib/components/NarrowHeader.js +32 -18
  162. package/lib/components/PointInfo/PointInfo.js +19 -20
  163. package/lib/components/PointInfo/index.js +4 -3
  164. package/lib/components/PopupModal/PopupModal.js +17 -13
  165. package/lib/components/PopupModal/PopupModal.stories.js +24 -17
  166. package/lib/components/SeasonalInsights/SeasonalInsights.js +147 -0
  167. package/lib/components/Sector/Sector.js +40 -34
  168. package/lib/components/Sector/Sector.test.js +24 -24
  169. package/lib/components/Sector/SectorIconsNew.js +19 -26
  170. package/lib/components/Sector/index.js +4 -3
  171. package/lib/components/Sector/sectorIcons.js +5 -4
  172. package/lib/components/SevereEvent/Eta/Eta.js +54 -49
  173. package/lib/components/SevereEvent/Eta/styles.js +8 -11
  174. package/lib/components/SevereEvent/SevereEvent.js +52 -28
  175. package/lib/components/SevereEvent/SevereEvent.scss +24 -0
  176. package/lib/components/SevereEvent/UpstreamBadge.js +60 -0
  177. package/lib/components/Spinner/Spinner.js +8 -8
  178. package/lib/components/Spinner/Spinner.stories.js +11 -6
  179. package/lib/components/Spinner/index.js +4 -3
  180. package/lib/components/Spinner/styles.js +16 -21
  181. package/lib/components/Tabs/Tabs.js +31 -18
  182. package/lib/components/Tabs/Tabs.stories.js +10 -6
  183. package/lib/components/Tabs/assets/index.js +6 -6
  184. package/lib/components/TimeRangeSelector/KandoRangePicker/ComparisonSelect.js +18 -13
  185. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePicker.js +45 -32
  186. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePickerContainer.js +34 -20
  187. package/lib/components/TimeRangeSelector/KandoRangePicker/index.js +4 -3
  188. package/lib/components/TimeRangeSelector/TimeRangeHelper.js +22 -17
  189. package/lib/components/TimeRangeSelector/TimeRangeItem/TimeRangeItem.js +14 -13
  190. package/lib/components/TimeRangeSelector/TimeRangeItem/index.js +4 -3
  191. package/lib/components/TimeRangeSelector/TimeRangeList.js +27 -24
  192. package/lib/components/TimeRangeSelector/TimeRangeOptions.js +27 -17
  193. package/lib/components/TimeRangeSelector/TimeRangeSelector.js +31 -26
  194. package/lib/components/TimeRangeSelector/TimeRangeSelector.stories.js +10 -6
  195. package/lib/components/TimeRangeSelector/constants.js +5 -3
  196. package/lib/components/TimeRangeSelector/index.js +4 -3
  197. package/lib/components/Toggle/Toggle.js +18 -11
  198. package/lib/components/Toggle/index.js +4 -3
  199. package/lib/components/TopBanner/TopBanner.js +235 -0
  200. package/lib/components/TopBanner/insightsDismissalStorage.js +36 -0
  201. package/lib/components/TrendGraph/TrendGraph.js +42 -24
  202. package/lib/components/TrendGraph/index.js +4 -3
  203. package/lib/components/TrendGraphNVL/TrendGraphNVL.js +33 -26
  204. package/lib/components/TrendGraphNVL/index.js +4 -3
  205. package/lib/development-environment/index.js +13 -9
  206. package/lib/development-environment/mock/browser.js +5 -2
  207. package/lib/development-environment/mock/get.js +10 -8
  208. package/lib/development-environment/mock/handlers.js +3 -2
  209. package/lib/development-environment/mock/mockBus.js +5 -4
  210. package/lib/development-environment/mock/mockObjects/area-trends-graph.js +3 -2
  211. package/lib/development-environment/mock/mockObjects/areaInformation.js +3 -2
  212. package/lib/development-environment/mock/mockObjects/areaQualitySummary.js +3 -2
  213. package/lib/development-environment/mock/mockObjects/areaSitesData.js +3 -2
  214. package/lib/development-environment/mock/mockObjects/areasJson.js +3 -2
  215. package/lib/development-environment/mock/mockObjects/controlRoomNetworkEdges.js +3 -2
  216. package/lib/development-environment/mock/mockObjects/covidView-areasData-24.js +3 -2
  217. package/lib/development-environment/mock/mockObjects/data-menuData.js +3 -2
  218. package/lib/development-environment/mock/mockObjects/data-search.js +3 -2
  219. package/lib/development-environment/mock/mockObjects/discharge_effluent_quality.js +3 -2
  220. package/lib/development-environment/mock/mockObjects/discharge_pattern_overtime.js +3 -2
  221. package/lib/development-environment/mock/mockObjects/eventFiltersJson.js +3 -2
  222. package/lib/development-environment/mock/mockObjects/eventsJson.js +3 -2
  223. package/lib/development-environment/mock/mockObjects/metascore.js +3 -2
  224. package/lib/development-environment/mock/mockObjects/permissionsJson.js +3 -2
  225. package/lib/development-environment/mock/mockObjects/pointsJson.js +3 -2
  226. package/lib/development-environment/mock/mockObjects/site-info.js +3 -2
  227. package/lib/development-environment/mock/mockObjects/trend-graph-component-data-907.js +3 -2
  228. package/lib/development-environment/togly/ToglyDashboard.js +23 -13
  229. package/lib/development-environment/togly/ToglyItem.js +31 -24
  230. package/lib/development-environment/togly/flags.js +1 -1
  231. package/lib/development-environment/togly/init.js +4 -4
  232. package/lib/development-environment/togly/macro.js +9 -13
  233. package/lib/development-environment/togly/useDoubleKeyDown.js +9 -7
  234. package/lib/development-environment/togly/useLocalStorage.js +18 -13
  235. package/lib/hooks/useApi.js +56 -20
  236. package/lib/hooks/useApiWithDashboardQuery.js +43 -23
  237. package/lib/hooks/useClickOutside.js +5 -4
  238. package/lib/hooks/useInitializeHeaders.js +6 -6
  239. package/lib/hooks/useKandoFetch.js +31 -17
  240. package/lib/hooks/useMap.js +37 -25
  241. package/lib/hooks/useNavContext.js +26 -22
  242. package/lib/hooks/useQueryURL.js +3 -2
  243. package/lib/hooks/useRemoveExistingLayers.js +8 -7
  244. package/lib/hooks/useUpdateEventBodyTail.js +19 -14
  245. package/lib/hooks/useUserTimeZone.js +31 -34
  246. package/lib/hooks/useUserTimeZone.test.js +23 -19
  247. package/lib/hooks/useWindowSize.js +14 -7
  248. package/lib/i18n/en.json +15 -3
  249. package/lib/i18n/fr.json +4 -0
  250. package/lib/i18n/he.json +12 -1
  251. package/lib/i18n/it.json +4 -0
  252. package/lib/index.js +13 -11
  253. package/lib/macros/getVersion.js +2 -2
  254. package/lib/models/IAction.js +1 -1
  255. package/lib/models/IAppState.js +1 -1
  256. package/lib/pages/AreaPage/AreaPage.js +68 -34
  257. package/lib/pages/AreaPage/Dashboard/AreaMapContainer/AreaMapContainer.js +17 -15
  258. package/lib/pages/AreaPage/Dashboard/Dashboard.js +28 -26
  259. package/lib/pages/AreaPage/Dashboard/LineChart/LineChart.js +23 -14
  260. package/lib/pages/AreaPage/Dashboard/LineChart/options/options.js +5 -5
  261. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/PieChart/PieChart.js +8 -8
  262. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/SiteBox.js +10 -10
  263. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/styles.js +6 -4
  264. package/lib/pages/AreaPage/Dashboard/Sites/SitesResponse.interface.js +1 -1
  265. package/lib/pages/AreaPage/Dashboard/Sites/factories.mock.js +3 -2
  266. package/lib/pages/AreaPage/Dashboard/Sites/styles.js +8 -5
  267. package/lib/pages/AssessmentPage/AssessmentPage.js +46 -38
  268. package/lib/pages/CannyWidget/Feedback.js +16 -14
  269. package/lib/pages/CovidPage/CovidPage.js +16 -9
  270. package/lib/pages/CovidPage/components/Body.js +30 -26
  271. package/lib/pages/CovidPage/components/Map.js +40 -28
  272. package/lib/pages/CovidPage/components/Sidebar.js +16 -15
  273. package/lib/pages/CovidPage/components/Summary.js +29 -20
  274. package/lib/pages/CovidPage/components/TrendGraphNVL/TrendGraphNVL.js +33 -26
  275. package/lib/pages/CovidPage/components/TrendGraphNVL/index.js +4 -3
  276. package/lib/pages/CovidPage/components/TrendPopupContent/TrendPopupContent.js +76 -52
  277. package/lib/pages/CovidPage/components/TrendPopupContent/index.js +4 -3
  278. package/lib/pages/CovidPage/components/areas/Area.js +36 -24
  279. package/lib/pages/CovidPage/components/areas/AreaPolygonWBE.js +46 -45
  280. package/lib/pages/CovidPage/components/areas/AreaPolygonsWBE.js +36 -32
  281. package/lib/pages/CovidPage/components/areas/AreasList.js +42 -29
  282. package/lib/pages/CovidPage/components/areas/Sort.js +17 -12
  283. package/lib/pages/CovidPage/components/nvlStatusHelper.js +11 -11
  284. package/lib/pages/DashboardMap/AreaCard.js +27 -27
  285. package/lib/pages/DashboardMap/AssessmentIcon.js +7 -8
  286. package/lib/pages/DashboardMap/Capacity.js +77 -28
  287. package/lib/pages/DashboardMap/FactoryCard.js +24 -28
  288. package/lib/pages/DashboardMap/HighchartsOptions.js +5 -6
  289. package/lib/pages/DashboardMap/List.js +65 -55
  290. package/lib/pages/DashboardMap/ListContext.js +19 -14
  291. package/lib/pages/DashboardMap/Loader.js +3 -3
  292. package/lib/pages/DashboardMap/SeverityBadge.js +24 -16
  293. package/lib/pages/DashboardMap/WWTPMap.js +71 -57
  294. package/lib/pages/DashboardMap/WaterDischarge.js +9 -9
  295. package/lib/pages/DashboardMap/Widget.js +67 -48
  296. package/lib/pages/DashboardMap/index.js +4 -3
  297. package/lib/pages/DashboardMap/utils.js +60 -41
  298. package/lib/pages/EventsPage/Body/Body.js +12 -15
  299. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropContainer.js +20 -17
  300. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropUtils.js +27 -16
  301. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropWrapper.js +9 -10
  302. package/lib/pages/EventsPage/DragAndDropArea/DraggableItem.js +10 -13
  303. package/lib/pages/EventsPage/DragAndDropArea/DraggableList.js +31 -22
  304. package/lib/pages/EventsPage/DragAndDropArea/index.js +4 -3
  305. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +38 -30
  306. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainerHelpers.js +23 -14
  307. package/lib/pages/EventsPage/EventsPage.js +17 -10
  308. package/lib/pages/EventsPage/FloatingGraph/FloatingGraph.js +40 -26
  309. package/lib/pages/EventsPage/events/MoreInfo.js +19 -18
  310. package/lib/pages/EventsPage/events/Sidebar.js +11 -14
  311. package/lib/pages/EventsPage/events/event_info/Contaminants/Contaminants.js +10 -9
  312. package/lib/pages/EventsPage/events/event_info/Contaminants/ContaminantsList.js +24 -19
  313. package/lib/pages/EventsPage/events/event_info/Contaminants/index.js +4 -3
  314. package/lib/pages/EventsPage/events/event_info/EarlyWarnings.js +38 -31
  315. package/lib/pages/EventsPage/events/event_info/EventDetails.js +33 -35
  316. package/lib/pages/EventsPage/events/event_info/EventInfo.js +60 -50
  317. package/lib/pages/EventsPage/events/event_info/EventPath/EventPath.js +5 -5
  318. package/lib/pages/EventsPage/events/event_info/EventSection.js +21 -18
  319. package/lib/pages/EventsPage/events/event_info/EventSection.test.js +23 -29
  320. package/lib/pages/EventsPage/events/event_info/EventTimeRange.js +50 -39
  321. package/lib/pages/EventsPage/events/event_info/Header/Header.js +7 -8
  322. package/lib/pages/EventsPage/events/event_info/Header/HeaderContainer.js +35 -30
  323. package/lib/pages/EventsPage/events/event_info/Header/index.js +4 -3
  324. package/lib/pages/EventsPage/events/event_info/HistoricalInformation.js +7 -6
  325. package/lib/pages/EventsPage/events/event_info/MiniEventTree.js +39 -30
  326. package/lib/pages/EventsPage/events/event_info/MobileEventPath.js +9 -6
  327. package/lib/pages/EventsPage/events/event_info/PollutionAssessment /PollutionAssessment.js +15 -14
  328. package/lib/pages/EventsPage/events/event_info/PollutionAssessment /PollutionTypesList.js +12 -9
  329. package/lib/pages/EventsPage/events/event_info/PollutionAssessment /index.js +4 -3
  330. package/lib/pages/EventsPage/events/event_info/PollutionDischarge.js +24 -23
  331. package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResult.js +22 -13
  332. package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResultButton.js +6 -7
  333. package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/index.js +4 -3
  334. package/lib/pages/EventsPage/events/event_info/SamplingList/SamplingDetails.js +12 -13
  335. package/lib/pages/EventsPage/events/event_info/SamplingList/Samplings.js +28 -22
  336. package/lib/pages/EventsPage/events/event_info/SamplingList/index.js +4 -3
  337. package/lib/pages/EventsPage/events/event_info/SeverityScore/ScoreExplanation.js +10 -13
  338. package/lib/pages/EventsPage/events/event_info/SeverityScore/SeverityScore.js +9 -8
  339. package/lib/pages/EventsPage/events/event_info/SeverityScore/index.js +4 -3
  340. package/lib/pages/EventsPage/events/event_info/SourceDetails/Confidence.js +9 -9
  341. package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.js +5 -4
  342. package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.test.js +11 -13
  343. package/lib/pages/EventsPage/events/event_info/SourceDetails/IconAndTitles.js +5 -7
  344. package/lib/pages/EventsPage/events/event_info/SourceDetails/MoreInfoButton.js +14 -11
  345. package/lib/pages/EventsPage/events/event_info/SourceDetails/OtherSources.js +6 -7
  346. package/lib/pages/EventsPage/events/event_info/SourceDetails/PotentialSources.js +8 -9
  347. package/lib/pages/EventsPage/events/event_info/SourceDetails/SingleSource.js +8 -9
  348. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceCardBody.js +7 -8
  349. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.js +12 -13
  350. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.test.js +19 -18
  351. package/lib/pages/EventsPage/events/event_info/SourceDetails/WaterDischarge.js +7 -7
  352. package/lib/pages/EventsPage/events/event_info/Timelines/DischargeBox.js +8 -9
  353. package/lib/pages/EventsPage/events/event_info/Timelines/EarlyWarning.js +18 -19
  354. package/lib/pages/EventsPage/events/event_info/Timelines/LiveStatusBadge.js +7 -6
  355. package/lib/pages/EventsPage/events/event_info/Timelines/SeenBox.js +12 -13
  356. package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.js +19 -23
  357. package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.test.js +11 -12
  358. package/lib/pages/EventsPage/events/event_info/Timelines/Titles.js +7 -8
  359. package/lib/pages/EventsPage/events/event_info/Timelines/index.js +4 -3
  360. package/lib/pages/EventsPage/events/event_info/Timelines/style.js +6 -4
  361. package/lib/pages/EventsPage/events/event_info/charts/EventDetailsPieChart.js +40 -25
  362. package/lib/pages/EventsPage/events/event_info/damage_type/DamageType.js +39 -30
  363. package/lib/pages/EventsPage/events/event_info/samplingsOld/Sampling.js +12 -13
  364. package/lib/pages/EventsPage/events/event_info/samplingsOld/Samplings.js +20 -17
  365. package/lib/pages/EventsPage/events/event_info/sources/Source.js +31 -27
  366. package/lib/pages/EventsPage/events/event_info/sources/Sources.js +27 -22
  367. package/lib/pages/EventsPage/events/event_info/styles.js +15 -21
  368. package/lib/pages/EventsPage/events/events_list/EventItem.js +21 -18
  369. package/lib/pages/EventsPage/events/events_list/EventUtils.js +11 -11
  370. package/lib/pages/EventsPage/events/events_list/EventsList.js +142 -111
  371. package/lib/pages/EventsPage/events/events_list/Filter/Filter.js +58 -41
  372. package/lib/pages/EventsPage/events/events_list/Filter/FilterContainer.js +135 -90
  373. package/lib/pages/EventsPage/events/events_list/Filter/FilterItem.js +76 -54
  374. package/lib/pages/EventsPage/events/events_list/Filter/FiltersDropDown.js +44 -39
  375. package/lib/pages/EventsPage/events/events_list/Filter/OptionsDropDown.js +41 -32
  376. package/lib/pages/EventsPage/events/events_list/Filter/SingleSelect.js +21 -19
  377. package/lib/pages/EventsPage/events/events_list/Sort.js +39 -28
  378. package/lib/pages/ImportFileWizard/FileUploadRespones.js +22 -14
  379. package/lib/pages/ImportFileWizard/ImportButtomButtons.js +8 -9
  380. package/lib/pages/ImportFileWizard/ImportFile.js +25 -21
  381. package/lib/pages/ImportFileWizard/ResponseBody.js +36 -26
  382. package/lib/pages/ImportFileWizard/ValidationForm.js +23 -23
  383. package/lib/pages/ImportFileWizard/ValidationResponse.js +25 -23
  384. package/lib/pages/ImportFileWizard/importFileUtils.js +5 -4
  385. package/lib/pages/ImportFileWizard/index.js +4 -3
  386. package/lib/pages/ImportGisPage/ImportGisContainer.js +27 -22
  387. package/lib/pages/ImportGisPage/ImportedGisFilesPage.js +44 -38
  388. package/lib/pages/ImportGisPage/importGisUtils.js +52 -43
  389. package/lib/pages/ImportGisProcess/index.js +18 -14
  390. package/lib/pages/ImportSiteProcess/index.js +18 -14
  391. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/MultiChoiceTabs.js +13 -7
  392. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/RadioTabs.js +20 -18
  393. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/SeverityButtons.js +4 -4
  394. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.js +60 -28
  395. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.stories.js +12 -8
  396. package/lib/pages/NotificationsPage/Notification/Notification.js +13 -17
  397. package/lib/pages/NotificationsPage/Notifications.interface.js +1 -1
  398. package/lib/pages/NotificationsPage/Notifications.mock.js +3 -2
  399. package/lib/pages/NotificationsPage/Notifications.stories.js +10 -6
  400. package/lib/pages/NotificationsPage/NotificationsPage.js +38 -19
  401. package/lib/pages/NotificationsPage/assets/index.js +10 -10
  402. package/lib/pages/NotificationsPageV2/NotificationsPage.js +101 -72
  403. package/lib/pages/NotificationsPageV2/components/NotificationsCard.js +65 -95
  404. package/lib/pages/NotificationsPageV2/components/NotificationsForm/EventType.js +15 -13
  405. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSendVia.js +17 -19
  406. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSensors.js +22 -18
  407. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSources.js +22 -18
  408. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationTags.js +23 -19
  409. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationsFormContent.js +71 -82
  410. package/lib/pages/NotificationsPageV2/components/NotificationsForm/WaterAuthoritySelection.js +23 -19
  411. package/lib/pages/NotificationsPageV2/components/NotificationsSidebar.js +74 -71
  412. package/lib/pages/NotificationsPageV2/components/NotificationsUtils.js +94 -80
  413. package/lib/pages/NotificationsPageV2/notificationUtils.js +39 -40
  414. package/lib/pages/OldSitePage/IDashboardData.js +1 -1
  415. package/lib/pages/OldSitePage/OldSitePage.js +132 -56
  416. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.js +10 -6
  417. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.stories.js +9 -5
  418. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +7 -9
  419. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +19 -16
  420. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +12 -10
  421. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +19 -12
  422. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +11 -14
  423. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +9 -5
  424. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +16 -18
  425. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +64 -51
  426. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +8 -10
  427. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.js +54 -29
  428. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.mock.js +7 -4
  429. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.stories.js +19 -12
  430. package/lib/pages/OldSitePage/SamplingParameters/charts/ParametersChart.js +11 -11
  431. package/lib/pages/OldSitePage/SamplingParameters/charts/SamplingChart.js +12 -10
  432. package/lib/pages/OldSitePage/SamplingParameters/charts/options/options.js +23 -27
  433. package/lib/pages/OldSitePage/SamplingParameters/dataParser.js +30 -28
  434. package/lib/pages/OldSitePage/SamplingParameters/models.js +1 -1
  435. package/lib/pages/OldSitePage/SamplingParameters/styles/samplingParameters.js +8 -5
  436. package/lib/pages/OldSitePage/SamplingParameters/styles/styles.js +12 -16
  437. package/lib/pages/OperationsPage/LeftPanel.js +55 -35
  438. package/lib/pages/OperationsPage/Map/Map.js +12 -12
  439. package/lib/pages/OperationsPage/Map/useMap.js +64 -52
  440. package/lib/pages/OperationsPage/OperationsContainerPage.js +59 -32
  441. package/lib/pages/OperationsPage/OperationsFilePage.js +12 -10
  442. package/lib/pages/OperationsPage/OperationsUtilityPage.js +6 -5
  443. package/lib/pages/OperationsPage/RightPanel.js +25 -22
  444. package/lib/pages/OperationsPage/index.js +4 -4
  445. package/lib/pages/PollutionRiskAssessment/FactoryDetails.js +60 -27
  446. package/lib/pages/PollutionRiskAssessment/FilterBehaviors.js +25 -19
  447. package/lib/pages/PollutionRiskAssessment/FilterButton.js +10 -11
  448. package/lib/pages/PollutionRiskAssessment/Map.js +42 -38
  449. package/lib/pages/PollutionRiskAssessment/SearchButton.js +10 -11
  450. package/lib/pages/PollutionRiskAssessment/SearchField.js +40 -26
  451. package/lib/pages/PollutionRiskAssessment/TotalSavings.js +16 -16
  452. package/lib/pages/PollutionRiskAssessment/UseCases.js +34 -32
  453. package/lib/pages/PollutionRiskAssessment/index.js +136 -76
  454. package/lib/pages/PollutionRiskAssessment/useMap.js +50 -34
  455. package/lib/pages/PollutionRiskAssessment/utils.js +7 -7
  456. package/lib/pages/ProfilePage/Container.js +4 -3
  457. package/lib/pages/ProfilePage/PasswordModal/PasswordModal.js +40 -23
  458. package/lib/pages/ProfilePage/ProfilePage.js +205 -106
  459. package/lib/pages/ProfilePage/TelegramModal/TelegramModal.js +34 -25
  460. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.js +20 -20
  461. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.test.js +30 -27
  462. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionContainer.js +119 -57
  463. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionDropdown.js +23 -18
  464. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActions.js +13 -14
  465. package/lib/pages/SamplingsPage/ActionsDropDown/ViewLabResult.js +45 -40
  466. package/lib/pages/SamplingsPage/DesktopActions/DesktopActions.js +24 -25
  467. package/lib/pages/SamplingsPage/DesktopActions/DownloadCSV.js +19 -18
  468. package/lib/pages/SamplingsPage/DesktopActions/UploadLabResult.js +18 -15
  469. package/lib/pages/SamplingsPage/DesktopActions/index.js +4 -3
  470. package/lib/pages/SamplingsPage/NavigationDropdown.js +31 -43
  471. package/lib/pages/SamplingsPage/NewSamplingAction.js +102 -75
  472. package/lib/pages/SamplingsPage/SamplingMobileModal.js +98 -124
  473. package/lib/pages/SamplingsPage/SamplingProperties/ImageDeleteModal.js +25 -23
  474. package/lib/pages/SamplingsPage/SamplingProperties/ImagePreviewModal.js +25 -36
  475. package/lib/pages/SamplingsPage/SamplingProperties/ImageUpload.js +61 -36
  476. package/lib/pages/SamplingsPage/SamplingProperties/ManholeImageMobile.js +21 -16
  477. package/lib/pages/SamplingsPage/SamplingProperties/SamplerInProcess.js +9 -10
  478. package/lib/pages/SamplingsPage/SamplingProperties/SamplingProperties.js +193 -108
  479. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesForm.js +54 -47
  480. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHead.js +39 -42
  481. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHeadMobile.js +39 -42
  482. package/lib/pages/SamplingsPage/SamplingProperties/samplingPropertiesUtils.js +28 -21
  483. package/lib/pages/SamplingsPage/SamplingProperties/styles.js +6 -4
  484. package/lib/pages/SamplingsPage/SamplingSiteTableCell.js +7 -11
  485. package/lib/pages/SamplingsPage/SamplingsMobileItem.js +53 -51
  486. package/lib/pages/SamplingsPage/SamplingsMobileList.js +31 -22
  487. package/lib/pages/SamplingsPage/SamplingsPage.js +33 -25
  488. package/lib/pages/SamplingsPage/SamplingsPageContainer.js +58 -49
  489. package/lib/pages/SamplingsPage/index.js +3 -2
  490. package/lib/pages/SamplingsPage/samplingsPageUtils.js +83 -52
  491. package/lib/pages/SitePage/DischargePattern/DischargePattern.js +6 -7
  492. package/lib/pages/SitePage/PollutionContributor/PollutionContributor.js +16 -16
  493. package/lib/pages/SitePage/PollutionContributor/PollutionContributorContainer.js +16 -12
  494. package/lib/pages/SitePage/PollutionContributor/contributorUtils.js +16 -16
  495. package/lib/pages/SitePage/PollutionContributor/index.js +4 -3
  496. package/lib/pages/SitePage/SamplingParameters/NoResults/NoResults.stories.js +9 -5
  497. package/lib/pages/SitePage/SamplingParameters/NoResults/index.js +15 -15
  498. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +9 -10
  499. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.test.js +24 -27
  500. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +16 -12
  501. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.test.js +33 -37
  502. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +12 -10
  503. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +25 -15
  504. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +11 -14
  505. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +9 -5
  506. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +16 -18
  507. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +71 -58
  508. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +8 -10
  509. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.js +27 -15
  510. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.mock.js +9 -5
  511. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.stories.js +19 -12
  512. package/lib/pages/SitePage/SamplingParameters/body/Body.js +9 -10
  513. package/lib/pages/SitePage/SamplingParameters/body/BodyContainer.js +40 -30
  514. package/lib/pages/SitePage/SamplingParameters/body/index.js +4 -3
  515. package/lib/pages/SitePage/SamplingParameters/charts/ParametersChart.js +12 -11
  516. package/lib/pages/SitePage/SamplingParameters/charts/SamplingChart.js +12 -10
  517. package/lib/pages/SitePage/SamplingParameters/charts/options/options.js +54 -54
  518. package/lib/pages/SitePage/SamplingParameters/dataParser.js +41 -32
  519. package/lib/pages/SitePage/SamplingParameters/dataParser.test.js +9 -11
  520. package/lib/pages/SitePage/SamplingParameters/models.js +1 -1
  521. package/lib/pages/SitePage/SamplingParameters/styles/samplingParameters.js +8 -5
  522. package/lib/pages/SitePage/SamplingParameters/styles/styles.js +12 -16
  523. package/lib/pages/SitePage/SiteInformation/EmptyState.js +10 -13
  524. package/lib/pages/SitePage/SiteInformation/SiteInformation.js +31 -31
  525. package/lib/pages/SitePage/SitePage.js +77 -37
  526. package/lib/pages/UploadLabResult/index.js +16 -15
  527. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.js +37 -27
  528. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.stories.js +13 -8
  529. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.js +15 -11
  530. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.stories.js +9 -5
  531. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/Eta.js +50 -47
  532. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/styles.js +8 -11
  533. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/LinkedSevereEvent.js +5 -4
  534. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/OptionalLinkedSevereEvent.js +9 -6
  535. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/SevereEvent.js +10 -11
  536. package/lib/pages/UtilityDashboardPage/MostSevereEvents/models.js +1 -1
  537. package/lib/pages/UtilityDashboardPage/TopBar/TopBar.js +13 -16
  538. package/lib/pages/UtilityDashboardPage/TopBar/constants.js +8 -8
  539. package/lib/pages/UtilityDashboardPage/TopBar/styles.js +4 -3
  540. package/lib/pages/UtilityDashboardPage/UtilityDashboard.js +30 -20
  541. package/lib/pages/UtilityDashboardPage/UtilityDashboard.stories.js +40 -28
  542. package/lib/pages/UtilityDashboardPage/UtilityDashboardMapContainer/UtilityDashboardMapContainer.js +17 -15
  543. package/lib/pages/UtilityDashboardPage/UtilityDashboardPage.js +14 -7
  544. package/lib/pages/UtilityDashboardPage/VirtualAreaDashboardPage.js +31 -26
  545. package/lib/pages/WbeDashboard/ExpandableComponent.js +9 -9
  546. package/lib/pages/WbeDashboard/GraphWrapper.js +35 -28
  547. package/lib/pages/WbeDashboard/IndividualTinyGraph.js +19 -16
  548. package/lib/pages/WbeDashboard/SearchInput.js +21 -15
  549. package/lib/pages/WbeDashboard/SummaryGraph.js +77 -50
  550. package/lib/pages/WbeDashboard/SummaryGraphModal.js +18 -20
  551. package/lib/pages/WbeDashboard/Tabs.js +11 -11
  552. package/lib/pages/WbeDashboard/WbeDashboardPage.js +210 -147
  553. package/lib/pages/WbeDashboard/WbeSummaryBar.js +48 -39
  554. package/lib/pages/WwtpPage/DashboardCard.js +21 -25
  555. package/lib/pages/WwtpPage/DischargePatternCard.js +25 -14
  556. package/lib/pages/WwtpPage/InletsCard/InletsBar.js +11 -11
  557. package/lib/pages/WwtpPage/InletsCard/InletsCard.js +22 -22
  558. package/lib/pages/WwtpPage/InletsCard/index.js +4 -3
  559. package/lib/pages/WwtpPage/Map.js +6 -6
  560. package/lib/pages/WwtpPage/OrganicCard.js +5 -4
  561. package/lib/pages/WwtpPage/PotentialSaving/ImpactCard.js +5 -4
  562. package/lib/pages/WwtpPage/PotentialSaving/PotentialItem.js +7 -8
  563. package/lib/pages/WwtpPage/PotentialSaving/PotentialSaving.js +11 -11
  564. package/lib/pages/WwtpPage/PotentialSaving/PotentialSavingContainer.js +17 -20
  565. package/lib/pages/WwtpPage/PotentialSaving/index.js +4 -3
  566. package/lib/pages/WwtpPage/PotentialSaving/types.js +1 -1
  567. package/lib/pages/WwtpPage/PredictionCard.js +5 -4
  568. package/lib/pages/WwtpPage/TrendCard.js +22 -20
  569. package/lib/pages/WwtpPage/UpgradeBox.js +5 -4
  570. package/lib/pages/WwtpPage/WwtpPage.js +8 -9
  571. package/lib/pages/WwtpPage/WwtpPageContainer.js +19 -23
  572. package/lib/pages/WwtpPage/index.js +4 -3
  573. package/lib/providers/Slideshow/SlideshowContext.js +10 -11
  574. package/lib/providers/Slideshow/SlideshowProvider.js +40 -22
  575. package/lib/providers/Slideshow/SlideshowRunner.js +21 -18
  576. package/lib/providers/UrlHistory/UrlHistoryContext.js +6 -7
  577. package/lib/providers/UrlHistory/UrlHistoryProvider.js +13 -12
  578. package/lib/providers/UrlHistory/index.js +4 -4
  579. package/lib/providers/UrlHistory/useLastVisited.js +6 -5
  580. package/lib/react-app-env.d.js +1 -1
  581. package/lib/store/ImportGis/action.js +1 -1
  582. package/lib/store/ImportGis/actionTypes.js +5 -4
  583. package/lib/store/ImportGis/actionsCreator.js +5 -7
  584. package/lib/store/ImportGis/models/gisImports.js +1 -1
  585. package/lib/store/ImportGis/reducer.js +7 -9
  586. package/lib/store/WBE/actionTypes.js +3 -2
  587. package/lib/store/WBE/actions.js +1 -1
  588. package/lib/store/WBE/models/IAreaWBE.js +1 -1
  589. package/lib/store/WBE/models/IWBE.js +1 -1
  590. package/lib/store/WBE/models/IWBEState.js +1 -1
  591. package/lib/store/WBE/reducer.js +8 -10
  592. package/lib/store/WWTPDashboard/WWTPDashboardSlice.js +15 -24
  593. package/lib/store/WWTPDashboard/types.js +1 -1
  594. package/lib/store/areas/actionTypes.js +7 -4
  595. package/lib/store/areas/actions.js +13 -7
  596. package/lib/store/areas/models/IArea.js +1 -1
  597. package/lib/store/areas/models/IAreasState.js +1 -1
  598. package/lib/store/areas/reducer.js +6 -8
  599. package/lib/store/context/actionTypes.js +5 -3
  600. package/lib/store/context/actions.js +3 -3
  601. package/lib/store/context/contextMiddlewares.js +18 -15
  602. package/lib/store/context/models/INavContext.js +1 -1
  603. package/lib/store/context/models/INavContextState.js +1 -1
  604. package/lib/store/context/reducer.js +8 -10
  605. package/lib/store/dashboard/dashboardSlice.js +11 -18
  606. package/lib/store/dashboard/periodType.js +1 -1
  607. package/lib/store/edges/actionTypes.js +9 -5
  608. package/lib/store/edges/actions.js +8 -4
  609. package/lib/store/edges/models/IEdge.js +1 -1
  610. package/lib/store/edges/models/IEdgesState.js +1 -1
  611. package/lib/store/edges/reducer.js +17 -13
  612. package/lib/store/events/actionTypes.js +33 -17
  613. package/lib/store/events/actions.js +7 -3
  614. package/lib/store/events/models/IEvent.js +1 -1
  615. package/lib/store/events/models/IEventsState.js +1 -1
  616. package/lib/store/events/models/ISource.js +1 -1
  617. package/lib/store/events/reducer.js +39 -28
  618. package/lib/store/filters/IFilter.js +1 -1
  619. package/lib/store/filters/IFilterItem.js +1 -1
  620. package/lib/store/global/actionTypes.js +21 -11
  621. package/lib/store/global/actions.js +6 -8
  622. package/lib/store/global/models/IGlobalState.js +1 -1
  623. package/lib/store/global/reducer.js +7 -9
  624. package/lib/store/permissions/permissionsSlice.js +9 -12
  625. package/lib/store/points/actionTypes.js +5 -3
  626. package/lib/store/points/actions.js +10 -6
  627. package/lib/store/points/models/IGeoPoint.js +1 -1
  628. package/lib/store/points/models/IGroup.js +1 -1
  629. package/lib/store/points/models/IIssue.js +1 -1
  630. package/lib/store/points/models/IPoint.js +1 -1
  631. package/lib/store/points/models/IPointsState.js +1 -1
  632. package/lib/store/points/reducer.js +5 -7
  633. package/lib/store/rootActionTypes.js +3 -2
  634. package/lib/store/rootActions.js +1 -1
  635. package/lib/store/rootReducer.js +10 -12
  636. package/lib/store/rootStore.js +6 -6
  637. package/lib/store/samplings/action.js +1 -1
  638. package/lib/store/samplings/actionTypes.js +5 -4
  639. package/lib/store/samplings/actionsCreator.js +1 -1
  640. package/lib/store/samplings/models/Samplings.js +1 -1
  641. package/lib/store/samplings/reducer.js +10 -10
  642. package/lib/styles/StylesLayout.js +6 -7
  643. package/lib/styles/theme/theme.js +26 -23
  644. package/lib/test/mocks/browser.js +5 -2
  645. package/lib/test/test-utils.js +9 -12
  646. package/lib/ui-kit/Alert/KandoAlert.js +6 -8
  647. package/lib/ui-kit/Button/Button.js +83 -129
  648. package/lib/ui-kit/Button/Button.test.js +33 -27
  649. package/lib/ui-kit/Button/ButtonUtils.js +1 -1
  650. package/lib/ui-kit/Checkbox/Checkbox.js +27 -34
  651. package/lib/ui-kit/ContentCard/ContentCard.js +20 -16
  652. package/lib/ui-kit/Dashboard/Dashboard.js +28 -29
  653. package/lib/ui-kit/Dashboard/index.js +4 -3
  654. package/lib/ui-kit/DropDown/DropDown.js +22 -23
  655. package/lib/ui-kit/DropDown/DropDown.test.js +13 -13
  656. package/lib/ui-kit/DropDown/DropDownItem.js +25 -26
  657. package/lib/ui-kit/DropDown/DropdownToggle.js +10 -13
  658. package/lib/ui-kit/EmptyState/EmptyState.js +6 -7
  659. package/lib/ui-kit/HierarchyGraph/AutoFitTree.js +81 -69
  660. package/lib/ui-kit/HierarchyGraph/HierarchyGraph.js +167 -89
  661. package/lib/ui-kit/HierarchyGraph/LeafSign.js +7 -7
  662. package/lib/ui-kit/HierarchyGraph/MicroStackedBar.js +19 -17
  663. package/lib/ui-kit/HierarchyGraph/NodeIcon.js +8 -9
  664. package/lib/ui-kit/HierarchyGraph/NodeLayout.js +25 -22
  665. package/lib/ui-kit/HierarchyGraph/PollutionContributorNode.js +10 -11
  666. package/lib/ui-kit/HierarchyGraph/ScoreNode.js +9 -10
  667. package/lib/ui-kit/HierarchyGraph/index.js +4 -3
  668. package/lib/ui-kit/HierarchyGraph/utils.js +67 -57
  669. package/lib/ui-kit/IconAction/IconAction.js +8 -9
  670. package/lib/ui-kit/ImageUploadButton/ImageUploadButton.js +64 -47
  671. package/lib/ui-kit/InfoTooltip/InfoTooltip.js +49 -58
  672. package/lib/ui-kit/InletsPie/InletsPie.js +16 -17
  673. package/lib/ui-kit/InletsPie/index.js +4 -3
  674. package/lib/ui-kit/InletsPie/options.js +9 -7
  675. package/lib/ui-kit/KandoBottomSheet/KandoBottomSheet.js +38 -29
  676. package/lib/ui-kit/KandoFilter/KandoFilter.js +11 -10
  677. package/lib/ui-kit/KandoList/KandoList.js +12 -13
  678. package/lib/ui-kit/KandoList/kandoListUtils.js +1 -1
  679. package/lib/ui-kit/KandoTable/KandoTable.js +41 -48
  680. package/lib/ui-kit/KandoTable/KandoTable.test.js +27 -21
  681. package/lib/ui-kit/KandoTable/kandoTableUtils.js +1 -1
  682. package/lib/ui-kit/Layout/Layout.js +7 -8
  683. package/lib/ui-kit/MobileInput/MobileInput.js +50 -56
  684. package/lib/ui-kit/ModalConfirmation/ModalConfirmation.js +17 -14
  685. package/lib/ui-kit/ModalConfirmation/index.js +3 -2
  686. package/lib/ui-kit/OrganicEvents/GaugeChart.js +8 -9
  687. package/lib/ui-kit/OrganicEvents/OrganicEvents.js +9 -8
  688. package/lib/ui-kit/OrganicEvents/OrganicEventsContainer.js +22 -26
  689. package/lib/ui-kit/OrganicEvents/TextInfo.js +13 -17
  690. package/lib/ui-kit/OrganicEvents/index.js +4 -3
  691. package/lib/ui-kit/RadioButtons/RadioButtonGroup.js +11 -12
  692. package/lib/ui-kit/SamplingStatus/SamplingStatus.js +21 -17
  693. package/lib/ui-kit/SamplingStatus/SamplingStatusHelper.js +4 -3
  694. package/lib/ui-kit/ScoreGauge/ScoreGauge.js +24 -21
  695. package/lib/ui-kit/ScoreGauge/constant.js +4 -3
  696. package/lib/ui-kit/ScoreGauge/index.js +4 -3
  697. package/lib/ui-kit/TimeLineChart/TrendChart.js +28 -25
  698. package/lib/ui-kit/TimeLineChart/index.js +4 -3
  699. package/lib/ui-kit/TitleAndCloseHeader/TitleAndCloseHeader.js +11 -10
  700. package/lib/ui-kit/Tooltip/Tooltip.js +9 -15
  701. package/lib/ui-kit/index.js +8 -8
  702. package/lib/ui-kit/kandoStepper/KandoStepper.js +14 -13
  703. package/lib/ui-kit/siteName/SiteName.js +11 -13
  704. package/lib/utilities/ActionUtility.js +7 -7
  705. package/lib/utilities/Alert.js +20 -23
  706. package/lib/utilities/Analytics.js +19 -19
  707. package/lib/utilities/Array.js +5 -4
  708. package/lib/utilities/Enum.js +51 -15
  709. package/lib/utilities/ErrorBoundary.js +42 -27
  710. package/lib/utilities/File.js +73 -45
  711. package/lib/utilities/GetDir.js +10 -10
  712. package/lib/utilities/KandoDate.js +15 -7
  713. package/lib/utilities/KandoModal.js +28 -16
  714. package/lib/utilities/LocalStorage.js +7 -5
  715. package/lib/utilities/ThousandsToK.js +2 -2
  716. package/lib/utilities/TimeFormat.js +23 -22
  717. package/lib/utilities/Truncate.js +27 -17
  718. package/lib/utilities/edgesMath.js +16 -15
  719. package/lib/utilities/i18n.js +6 -5
  720. package/lib/utilities/kql.js +12 -10
  721. package/lib/utilities/map/icons.js +18 -18
  722. package/lib/utilities/polylinedecorator.js +113 -88
  723. package/lib/utilities/scoreToData.js +26 -20
  724. package/lib/utilities/scoreToData.test.js +5 -5
  725. package/lib/utilities/time.js +10 -9
  726. package/lib/utilities/uploadToS3.js +12 -12
  727. package/lib/utilities/urls.js +16 -19
  728. package/package.json +9 -12
@@ -1,11 +1,13 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.default = void 0;
9
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
9
11
  var _freeSolidSvgIcons = require("@fortawesome/free-solid-svg-icons");
10
12
  var _reactFontawesome = require("@fortawesome/react-fontawesome");
11
13
  var _react = _interopRequireWildcard(require("react"));
@@ -25,70 +27,70 @@ var _EventInfo = _interopRequireDefault(require("../event_info/EventInfo"));
25
27
  var _MoreInfo = _interopRequireDefault(require("../MoreInfo"));
26
28
  var _FilterContainer = _interopRequireDefault(require("./Filter/FilterContainer"));
27
29
  var _Sort = _interopRequireDefault(require("./Sort"));
30
+ 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); }
31
+ 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; }
28
32
  /* eslint-disable etc/no-commented-out-code */
29
33
 
30
34
  function mapStateToProps(state) {
31
- const {
32
- events_data,
33
- global_data,
34
- edges_data,
35
- points_data,
36
- areas_data,
37
- nav_context_data
38
- } = state;
35
+ var events_data = state.events_data,
36
+ global_data = state.global_data,
37
+ edges_data = state.edges_data,
38
+ points_data = state.points_data,
39
+ areas_data = state.areas_data,
40
+ nav_context_data = state.nav_context_data;
39
41
  return {
40
- events_data,
41
- global_data,
42
- edges_data,
43
- points_data,
44
- areas_data,
45
- nav_context_data
42
+ events_data: events_data,
43
+ global_data: global_data,
44
+ edges_data: edges_data,
45
+ points_data: points_data,
46
+ areas_data: areas_data,
47
+ nav_context_data: nav_context_data
46
48
  };
47
49
  }
48
- const EventsList = _ref => {
49
- let {
50
- areas_data,
51
- points_data,
52
- edges_data,
53
- global_data,
54
- sidenavExpanded,
55
- events_data,
56
- nav_context_data
57
- } = _ref;
58
- const dispatch = (0, _reactRedux.useDispatch)();
59
- const {
60
- items,
61
- isFetching,
62
- focusedEvent,
63
- hoveredEvent,
64
- hoveredEventPaths,
65
- hoveredEdgePaths
66
- } = events_data;
67
- const {
68
- waterAuthorityId,
69
- map
70
- } = global_data;
71
- const [filterPopupOpen, setFilterPopupOpen] = (0, _react.useState)(true);
72
- const [exceptionAlert, setExceptionAlert] = (0, _react.useState)({
73
- messages: [{
74
- message: '',
75
- event_id: 0
76
- }],
77
- event_ids: []
78
- });
79
- const lastVisited = (0, _UrlHistory.useLastVisited)();
80
- const useQuery = () => {
50
+ var EventsList = function EventsList(_ref) {
51
+ var areas_data = _ref.areas_data,
52
+ points_data = _ref.points_data,
53
+ edges_data = _ref.edges_data,
54
+ global_data = _ref.global_data,
55
+ sidenavExpanded = _ref.sidenavExpanded,
56
+ events_data = _ref.events_data,
57
+ nav_context_data = _ref.nav_context_data;
58
+ var dispatch = (0, _reactRedux.useDispatch)();
59
+ var items = events_data.items,
60
+ isFetching = events_data.isFetching,
61
+ focusedEvent = events_data.focusedEvent,
62
+ hoveredEvent = events_data.hoveredEvent,
63
+ hoveredEventPaths = events_data.hoveredEventPaths,
64
+ hoveredEdgePaths = events_data.hoveredEdgePaths;
65
+ var waterAuthorityId = global_data.waterAuthorityId,
66
+ map = global_data.map;
67
+ var _useState = (0, _react.useState)(true),
68
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
69
+ filterPopupOpen = _useState2[0],
70
+ setFilterPopupOpen = _useState2[1];
71
+ var _useState3 = (0, _react.useState)({
72
+ messages: [{
73
+ message: '',
74
+ event_id: 0
75
+ }],
76
+ event_ids: []
77
+ }),
78
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
79
+ exceptionAlert = _useState4[0],
80
+ setExceptionAlert = _useState4[1];
81
+ var lastVisited = (0, _UrlHistory.useLastVisited)();
82
+ var useQuery = function useQuery() {
81
83
  return new URLSearchParams((0, _reactRouterDom.useLocation)().search);
82
84
  };
83
- const history = (0, _reactRouterDom.useHistory)();
84
- const query = useQuery();
85
- const getKQLValuesFromURL = () => {
85
+ var history = (0, _reactRouterDom.useHistory)();
86
+ var query = useQuery();
87
+ var getKQLValuesFromURL = function getKQLValuesFromURL() {
86
88
  return query.get('valuesFromKQL');
87
89
  };
88
- const getEventIdFromURL = () => {
90
+ var getEventIdFromURL = function getEventIdFromURL() {
89
91
  return query.get('eventId');
90
92
  };
91
- const loader = () => {
93
+ var loader = function loader() {
92
94
  if (isFetching && items.length === 0 || areas_data.isFetching || points_data.isFetching || edges_data.isFetching) {
93
95
  return /*#__PURE__*/_react.default.createElement("div", {
94
96
  className: 'loader'
@@ -97,35 +99,39 @@ const EventsList = _ref => {
97
99
  return null;
98
100
  }
99
101
  };
100
- const handleExpansionToggle = () => {
102
+ var handleExpansionToggle = function handleExpansionToggle() {
101
103
  dispatch((0, _actions2.sideNavExpanded)(!sidenavExpanded));
102
104
  };
103
- const applyDefaultFilter = () => {
105
+ var applyDefaultFilter = function applyDefaultFilter() {
104
106
  history.push("/".concat(nav_context_data.navContext.name, "/index?water_authority_id=").concat(global_data.waterAuthorityId, "&locale=").concat(nav_context_data.navContext.locale, "&valuesFromKQL="));
105
107
  dispatch((0, _actions2.setEventFilterParam)(''));
106
108
  };
107
- const validateEvent = event => {
109
+ var validateEvent = function validateEvent(event) {
108
110
  // check that all observations' edges exists. If they are not exists it's indicates that their points are
109
111
  // not in the hierarchy or doesn't have lat/lng.
110
- let invalidObservationsMessages = [];
111
- event.observations.forEach(observation => {
112
+ var invalidObservationsMessages = [];
113
+ event.observations.forEach(function (observation) {
112
114
  // if observation is root (ex. WWTP) there is no edge that its a source. so we can skip this check
113
115
  if (!observation.point_is_root) {
114
- let edge = edges_data.items.find(edge => edge.source_point_id === observation.point_id);
116
+ var edge = edges_data.items.find(function (edge) {
117
+ return edge.source_point_id === observation.point_id;
118
+ });
115
119
  if (edge === undefined) {
116
120
  invalidObservationsMessages.push("".concat(observation.point_name, " (").concat(observation.point_id, ") "));
117
121
  }
118
122
  }
119
123
  });
120
124
  if (invalidObservationsMessages.length !== 0) {
121
- let index = exceptionAlert.messages.findIndex(msg => msg.event_id === event.id);
125
+ var index = exceptionAlert.messages.findIndex(function (msg) {
126
+ return msg.event_id === event.id;
127
+ });
122
128
  if (index === -1) {
123
129
  setExceptionAlert({
124
- messages: [...exceptionAlert.messages, {
130
+ messages: [].concat((0, _toConsumableArray2.default)(exceptionAlert.messages), [{
125
131
  message: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", null, _i18n.default.t('events_overview.event_data_missing'))),
126
132
  event_id: event.id
127
- }],
128
- event_ids: [...exceptionAlert.event_ids, event.id]
133
+ }]),
134
+ event_ids: [].concat((0, _toConsumableArray2.default)(exceptionAlert.event_ids), [event.id])
129
135
  });
130
136
  }
131
137
  return false;
@@ -133,13 +139,17 @@ const EventsList = _ref => {
133
139
 
134
140
  // same check as above but this time for the event path. If edge doesn't exist, it's indicates that one of the
135
141
  // points downstream doesn't have lat/lng.
136
- let invalidPathMessages = [];
137
- event.path.forEach(path => {
138
- let edge = edges_data.items.find(edge => edge.id === path.edge_id);
142
+ var invalidPathMessages = [];
143
+ event.path.forEach(function (path) {
144
+ var edge = edges_data.items.find(function (edge) {
145
+ return edge.id === path.edge_id;
146
+ });
139
147
  if (edge === undefined) {
140
148
  console.error("edge ".concat(path.edge_id, " can not be found"));
141
- let observation = event.observations.find(observation => observation.id === path.last_observation_id);
142
- let lastObservationPoint = 'Not found';
149
+ var observation = event.observations.find(function (observation) {
150
+ return observation.id === path.last_observation_id;
151
+ });
152
+ var lastObservationPoint = 'Not found';
143
153
  if (observation) {
144
154
  lastObservationPoint = observation.point_name;
145
155
  console.error('lastObservationPoint', lastObservationPoint);
@@ -148,19 +158,20 @@ const EventsList = _ref => {
148
158
  // invalidPathMessages.push(`${lastObservationPoint} `);
149
159
  }
150
160
  });
161
+
151
162
  if (invalidPathMessages.length !== 0) {
152
163
  setExceptionAlert({
153
- messages: [...exceptionAlert.messages, {
164
+ messages: [].concat((0, _toConsumableArray2.default)(exceptionAlert.messages), [{
154
165
  message: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("p", null, _i18n.default.t('events_overview.event_verify_coordinates')), /*#__PURE__*/_react.default.createElement("span", null, invalidPathMessages)),
155
166
  event_id: event.id
156
- }],
157
- event_ids: [...exceptionAlert.event_ids, event.id]
167
+ }]),
168
+ event_ids: [].concat((0, _toConsumableArray2.default)(exceptionAlert.event_ids), [event.id])
158
169
  });
159
170
  return false;
160
171
  }
161
172
  return true;
162
173
  };
163
- const handleEventItemClick = (event, ref) => {
174
+ var handleEventItemClick = function handleEventItemClick(event, ref) {
164
175
  if (ref !== null) onMouseLeaveEvent();
165
176
  // if (hoveredEventPaths && map) {
166
177
  // hoveredEventPaths.forEach((path) => {
@@ -172,23 +183,23 @@ const EventsList = _ref => {
172
183
  dispatch((0, _actions.setFocusedEvent)(event));
173
184
  setFilterPopupOpen(false);
174
185
  if (getEventIdFromURL() === null || getEventIdFromURL() === 'null') {
175
- setTimeout(() => {
186
+ setTimeout(function () {
176
187
  history.push("/".concat(nav_context_data.navContext.name, "/index?water_authority_id=").concat(global_data.waterAuthorityId, "&locale=").concat(nav_context_data.navContext.locale, "&eventId=").concat(event.id, "&valuesFromKQL=").concat(global_data.eventFilterParam, "&validEvent=").concat(validateEvent(event)));
177
188
  }, 500);
178
189
  }
179
190
  };
180
- const onMouseEnterEvent = event => {
191
+ var onMouseEnterEvent = function onMouseEnterEvent(event) {
181
192
  if (!focusedEvent && !hoveredEvent && validateEvent(event)) {
182
193
  dispatch((0, _actions.setHoveredEvent)(event));
183
194
  }
184
195
  };
185
- const onMouseLeaveEvent = () => {
196
+ var onMouseLeaveEvent = function onMouseLeaveEvent() {
186
197
  if (hoveredEvent && hoveredEventPaths && map) {
187
- hoveredEventPaths.forEach(path => {
198
+ hoveredEventPaths.forEach(function (path) {
188
199
  map.removeLayer(path);
189
200
  });
190
201
  if (hoveredEdgePaths) {
191
- hoveredEdgePaths.forEach(path => {
202
+ hoveredEdgePaths.forEach(function (path) {
192
203
  map.removeLayer(path);
193
204
  });
194
205
  }
@@ -212,35 +223,40 @@ const EventsList = _ref => {
212
223
  // }
213
224
  // }
214
225
  }
226
+
215
227
  dispatch((0, _actions.setHoveredEvent)(null));
216
228
  dispatch((0, _actions.setHoveredEventPaths)([]));
217
229
  dispatch((0, _actions.setHoveredEdgePaths)([]));
218
230
  };
219
- const isDataFetchedAndEventNotFocused = () => {
231
+ var isDataFetchedAndEventNotFocused = function isDataFetchedAndEventNotFocused() {
220
232
  return (getEventIdFromURL() === 'null' || getEventIdFromURL() === null) && focusedEvent === null && items.length !== 0 && !isFetching && !areas_data.isFetching && !points_data.isFetching && !edges_data.isFetching;
221
233
  };
222
- const setFocusedEventIfFoundInParams = () => {
234
+ var setFocusedEventIfFoundInParams = function setFocusedEventIfFoundInParams() {
223
235
  if (getEventIdFromURL() !== null && getEventIdFromURL() !== 'null' && focusedEvent === null && items.length !== 0 && !isFetching && !areas_data.isFetching && !points_data.isFetching && !edges_data.isFetching) {
224
- let event = events_data.items.find(e => e.id === parseInt(getEventIdFromURL()));
236
+ var event = events_data.items.find(function (e) {
237
+ return e.id === parseInt(getEventIdFromURL());
238
+ });
225
239
  if (event !== undefined) {
226
- setTimeout(() => {
240
+ setTimeout(function () {
227
241
  handleEventItemClick(event, null);
228
242
  }, 500);
229
243
  }
230
244
  }
231
245
  };
232
- const validEvent = (0, _react.useMemo)(() => {
233
- let event = events_data.items.find(e => e.id.toString() === getEventIdFromURL());
246
+ var validEvent = (0, _react.useMemo)(function () {
247
+ var event = events_data.items.find(function (e) {
248
+ return e.id.toString() === getEventIdFromURL();
249
+ });
234
250
  if (event !== undefined) {
235
251
  return validateEvent(event);
236
252
  } else {
237
253
  return true;
238
254
  }
239
255
  }, [events_data.focusedEvent, areas_data.isFetching, points_data.isFetching, edges_data.isFetching, events_data.isFetching]);
240
- const triggerSort = sort => {
256
+ var triggerSort = function triggerSort(sort) {
241
257
  if (global_data.activeFilter !== null && isDataFetchedAndEventNotFocused()) {
242
- let KQL;
243
- let URL;
258
+ var KQL;
259
+ var URL;
244
260
  switch (sort) {
245
261
  case 1:
246
262
  KQL = "".concat((0, _kql.buildKQLQuery)(global_data.activeFilter, 'newest'));
@@ -260,22 +276,28 @@ const EventsList = _ref => {
260
276
  history.push(URL);
261
277
  dispatch((0, _actions2.setEventFilterParam)(KQL));
262
278
  break;
279
+ case 4:
280
+ KQL = "".concat((0, _kql.buildKQLQuery)(global_data.activeFilter, 'observed_upstream'));
281
+ URL = "/".concat(nav_context_data.navContext.name, "/index?water_authority_id=").concat(global_data.waterAuthorityId, "&eventId=").concat(getEventIdFromURL(), "&locale=").concat(nav_context_data.navContext.locale, "&valuesFromKQL=").concat(KQL, "&validEvent=").concat(validEvent);
282
+ history.push(URL);
283
+ dispatch((0, _actions2.setEventFilterParam)(KQL));
284
+ break;
263
285
  }
264
286
  }
265
287
  };
266
- const calcEventsRealAmount = () => {
267
- let eventsCount = 0;
288
+ var calcEventsRealAmount = function calcEventsRealAmount() {
289
+ var eventsCount = 0;
268
290
  eventsCount = events_data.events_count;
269
291
  if (eventsCount > 50) eventsCount = "".concat(_i18n.default.t('events_overview.more_than'), " 50");
270
292
  return eventsCount;
271
293
  };
272
- (0, _react.useEffect)(() => {
294
+ (0, _react.useEffect)(function () {
273
295
  if (!focusedEvent) {
274
296
  var _getEventIdFromURL;
275
297
  dispatch((0, _actions.fetchEvents)(waterAuthorityId, getKQLValuesFromURL() || 'DEFAULT', ((_getEventIdFromURL = getEventIdFromURL()) === null || _getEventIdFromURL === void 0 ? void 0 : _getEventIdFromURL.toString()) || 'null'));
276
298
  }
277
299
  }, [global_data.waterAuthorityId, global_data.eventFilterParam, focusedEvent]);
278
- (0, _react.useEffect)(() => {
300
+ (0, _react.useEffect)(function () {
279
301
  if (!events_data.isFetching && !edges_data.isFetching && !points_data.isFetching && !areas_data.isFetching && areas_data.newAreas.length !== 0 && points_data.items.length !== 0 && filterPopupOpen) {
280
302
  setFocusedEventIfFoundInParams();
281
303
  }
@@ -286,10 +308,12 @@ const EventsList = _ref => {
286
308
  className: 'event-info ' + (!hoveredEvent && focusedEvent !== null ? '' : 'event-info--collapsed')
287
309
  }, !hoveredEvent && focusedEvent !== null && /*#__PURE__*/_react.default.createElement(_EventInfo.default, {
288
310
  event: focusedEvent,
289
- reOpenFilter: () => setFilterPopupOpen(true)
311
+ reOpenFilter: function reOpenFilter() {
312
+ return setFilterPopupOpen(true);
313
+ }
290
314
  })), /*#__PURE__*/_react.default.createElement("div", {
291
315
  className: "toggle-expansion-button",
292
- onClick: () => {
316
+ onClick: function onClick() {
293
317
  handleExpansionToggle();
294
318
  }
295
319
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -298,7 +322,7 @@ const EventsList = _ref => {
298
322
  icon: sidenavExpanded ? _freeSolidSvgIcons.faCaretLeft : _freeSolidSvgIcons.faCaretRight
299
323
  }))), /*#__PURE__*/_react.default.createElement("div", {
300
324
  className: 'toggle-expansion-button-mobile',
301
- onClick: () => {
325
+ onClick: function onClick() {
302
326
  handleExpansionToggle();
303
327
  }
304
328
  }, /*#__PURE__*/_react.default.createElement("a", {
@@ -328,7 +352,9 @@ const EventsList = _ref => {
328
352
  className: "icons"
329
353
  }, /*#__PURE__*/_react.default.createElement("button", {
330
354
  className: "filter",
331
- onClick: () => setFilterPopupOpen(!filterPopupOpen)
355
+ onClick: function onClick() {
356
+ return setFilterPopupOpen(!filterPopupOpen);
357
+ }
332
358
  }, /*#__PURE__*/_react.default.createElement(_funnel.ReactComponent, {
333
359
  width: "17px",
334
360
  height: "17px",
@@ -345,22 +371,27 @@ const EventsList = _ref => {
345
371
  alt: "NoEventsIcon"
346
372
  }), /*#__PURE__*/_react.default.createElement("h2", null, _i18n.default.t('events_overview.filter.blankslate.header')), /*#__PURE__*/_react.default.createElement("p", null, _i18n.default.t('events_overview.filter.blankslate.body')), /*#__PURE__*/_react.default.createElement("a", {
347
373
  className: 'apply_default_filter_button',
348
- onClick: () => applyDefaultFilter()
374
+ onClick: function onClick() {
375
+ return applyDefaultFilter();
376
+ }
349
377
  }, _i18n.default.t('events_overview.filter.blankslate.button'))), items.length !== 0 && !areas_data.isFetching && !points_data.isFetching && !edges_data.isFetching && !focusedEvent && /*#__PURE__*/_react.default.createElement("ul", {
350
378
  className: "events "
351
- }, items.map(event => /*#__PURE__*/_react.default.createElement("li", {
352
- key: event.id,
353
- className: "event",
354
- "data-event-id": event.id
355
- }, /*#__PURE__*/_react.default.createElement(_SevereEvent.SevereEvent, {
356
- event: event,
357
- handleClick: handleEventItemClick,
358
- onMouseEnterEvent: onMouseEnterEvent,
359
- onMouseLeaveEvent: onMouseLeaveEvent,
360
- validateEvent: validateEvent,
361
- exceptionAlert: exceptionAlert
362
- }))))));
379
+ }, items.map(function (event) {
380
+ return /*#__PURE__*/_react.default.createElement("li", {
381
+ key: event.id,
382
+ className: "event",
383
+ "data-event-id": event.id
384
+ }, /*#__PURE__*/_react.default.createElement(_SevereEvent.SevereEvent, {
385
+ event: event,
386
+ handleClick: handleEventItemClick,
387
+ onMouseEnterEvent: onMouseEnterEvent,
388
+ onMouseLeaveEvent: onMouseLeaveEvent,
389
+ validateEvent: validateEvent,
390
+ exceptionAlert: exceptionAlert
391
+ }));
392
+ }))));
363
393
  };
364
- const connector = (0, _reactRedux.connect)(mapStateToProps);
365
- var _default = exports.default = connector(EventsList);
366
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZnJlZVNvbGlkU3ZnSWNvbnMiLCJyZXF1aXJlIiwiX3JlYWN0Rm9udGF3ZXNvbWUiLCJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9yZWFjdFJlZHV4IiwiX3JlYWN0Um91dGVyRG9tIiwiX2Fycm93TGVmdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZnVubmVsIiwiX25vX2V2ZW50cyIsIl9TZXZlcmVFdmVudCIsIl9VcmxIaXN0b3J5IiwiX2FjdGlvbnMiLCJfYWN0aW9uczIiLCJfaTE4biIsIl9rcWwiLCJfRXZlbnRJbmZvIiwiX01vcmVJbmZvIiwiX0ZpbHRlckNvbnRhaW5lciIsIl9Tb3J0IiwibWFwU3RhdGVUb1Byb3BzIiwic3RhdGUiLCJldmVudHNfZGF0YSIsImdsb2JhbF9kYXRhIiwiZWRnZXNfZGF0YSIsInBvaW50c19kYXRhIiwiYXJlYXNfZGF0YSIsIm5hdl9jb250ZXh0X2RhdGEiLCJFdmVudHNMaXN0IiwiX3JlZiIsInNpZGVuYXZFeHBhbmRlZCIsImRpc3BhdGNoIiwidXNlRGlzcGF0Y2giLCJpdGVtcyIsImlzRmV0Y2hpbmciLCJmb2N1c2VkRXZlbnQiLCJob3ZlcmVkRXZlbnQiLCJob3ZlcmVkRXZlbnRQYXRocyIsImhvdmVyZWRFZGdlUGF0aHMiLCJ3YXRlckF1dGhvcml0eUlkIiwibWFwIiwiZmlsdGVyUG9wdXBPcGVuIiwic2V0RmlsdGVyUG9wdXBPcGVuIiwidXNlU3RhdGUiLCJleGNlcHRpb25BbGVydCIsInNldEV4Y2VwdGlvbkFsZXJ0IiwibWVzc2FnZXMiLCJtZXNzYWdlIiwiZXZlbnRfaWQiLCJldmVudF9pZHMiLCJsYXN0VmlzaXRlZCIsInVzZUxhc3RWaXNpdGVkIiwidXNlUXVlcnkiLCJVUkxTZWFyY2hQYXJhbXMiLCJ1c2VMb2NhdGlvbiIsInNlYXJjaCIsImhpc3RvcnkiLCJ1c2VIaXN0b3J5IiwicXVlcnkiLCJnZXRLUUxWYWx1ZXNGcm9tVVJMIiwiZ2V0IiwiZ2V0RXZlbnRJZEZyb21VUkwiLCJsb2FkZXIiLCJsZW5ndGgiLCJkZWZhdWx0IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsImhhbmRsZUV4cGFuc2lvblRvZ2dsZSIsInNpZGVOYXZFeHBhbmRlZCIsImFwcGx5RGVmYXVsdEZpbHRlciIsInB1c2giLCJjb25jYXQiLCJuYXZDb250ZXh0IiwibmFtZSIsImxvY2FsZSIsInNldEV2ZW50RmlsdGVyUGFyYW0iLCJ2YWxpZGF0ZUV2ZW50IiwiZXZlbnQiLCJpbnZhbGlkT2JzZXJ2YXRpb25zTWVzc2FnZXMiLCJvYnNlcnZhdGlvbnMiLCJmb3JFYWNoIiwib2JzZXJ2YXRpb24iLCJwb2ludF9pc19yb290IiwiZWRnZSIsImZpbmQiLCJzb3VyY2VfcG9pbnRfaWQiLCJwb2ludF9pZCIsInVuZGVmaW5lZCIsInBvaW50X25hbWUiLCJpbmRleCIsImZpbmRJbmRleCIsIm1zZyIsImlkIiwiRnJhZ21lbnQiLCJpMThuIiwidCIsImludmFsaWRQYXRoTWVzc2FnZXMiLCJwYXRoIiwiZWRnZV9pZCIsImNvbnNvbGUiLCJlcnJvciIsImxhc3Rfb2JzZXJ2YXRpb25faWQiLCJsYXN0T2JzZXJ2YXRpb25Qb2ludCIsImhhbmRsZUV2ZW50SXRlbUNsaWNrIiwicmVmIiwib25Nb3VzZUxlYXZlRXZlbnQiLCJzZXRGb2N1c2VkRXZlbnQiLCJzZXRUaW1lb3V0IiwiZXZlbnRGaWx0ZXJQYXJhbSIsIm9uTW91c2VFbnRlckV2ZW50Iiwic2V0SG92ZXJlZEV2ZW50IiwicmVtb3ZlTGF5ZXIiLCJzZXRIb3ZlcmVkRXZlbnRQYXRocyIsInNldEhvdmVyZWRFZGdlUGF0aHMiLCJpc0RhdGFGZXRjaGVkQW5kRXZlbnROb3RGb2N1c2VkIiwic2V0Rm9jdXNlZEV2ZW50SWZGb3VuZEluUGFyYW1zIiwiZSIsInBhcnNlSW50IiwidmFsaWRFdmVudCIsInVzZU1lbW8iLCJ0b1N0cmluZyIsInRyaWdnZXJTb3J0Iiwic29ydCIsImFjdGl2ZUZpbHRlciIsIktRTCIsIlVSTCIsImJ1aWxkS1FMUXVlcnkiLCJjYWxjRXZlbnRzUmVhbEFtb3VudCIsImV2ZW50c0NvdW50IiwiZXZlbnRzX2NvdW50IiwidXNlRWZmZWN0IiwiX2dldEV2ZW50SWRGcm9tVVJMIiwiZmV0Y2hFdmVudHMiLCJuZXdBcmVhcyIsIm1vcmVJbmZvIiwiYWN0aXZlIiwicmVPcGVuRmlsdGVyIiwib25DbGljayIsIkZvbnRBd2Vzb21lSWNvbiIsImljb24iLCJmYUNhcmV0TGVmdCIsImZhQ2FyZXRSaWdodCIsImhyZWYiLCJmYUFycm93TGVmdCIsIkxpbmsiLCJ0byIsInNyYyIsIkxlZnRBcnJvd0ljb24iLCJoZWlnaHQiLCJ3aWR0aCIsImFsdCIsImV2ZW50cyIsImV2ZW50c0ZldGNoaW5nIiwiUmVhY3RDb21wb25lbnQiLCJmaWxsIiwiZmV0Y2hUeXBlIiwiTm9FdmVudHNJbWFnZSIsImtleSIsIlNldmVyZUV2ZW50IiwiaGFuZGxlQ2xpY2siLCJjb25uZWN0b3IiLCJjb25uZWN0IiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3BhZ2VzL0V2ZW50c1BhZ2UvZXZlbnRzL2V2ZW50c19saXN0L0V2ZW50c0xpc3QudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGV0Yy9uby1jb21tZW50ZWQtb3V0LWNvZGUgKi9cbmltcG9ydCB7XG4gIGZhQXJyb3dMZWZ0LFxuICBmYUNhcmV0TGVmdCxcbiAgZmFDYXJldFJpZ2h0LFxufSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnO1xuaW1wb3J0IHsgRm9udEF3ZXNvbWVJY29uIH0gZnJvbSAnQGZvcnRhd2Vzb21lL3JlYWN0LWZvbnRhd2Vzb21lJztcbmltcG9ydCBSZWFjdCwgeyBSZWZPYmplY3QsIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjb25uZWN0LCBDb25uZWN0ZWRQcm9wcywgdXNlRGlzcGF0Y2ggfSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQgeyBMaW5rLCB1c2VIaXN0b3J5LCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IExlZnRBcnJvd0ljb24gZnJvbSAnc3JjL2Fzc2V0cy9pY29ucy9hcnJvdy1sZWZ0LnN2Zyc7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBGaWx0ZXJJY29uIH0gZnJvbSAnc3JjL2Fzc2V0cy9pY29ucy9mdW5uZWwuc3ZnJztcbmltcG9ydCBOb0V2ZW50c0ltYWdlIGZyb20gJ3NyYy9hc3NldHMvbm9fZXZlbnRzLnN2Zyc7XG5pbXBvcnQgeyBTZXZlcmVFdmVudCB9IGZyb20gJ3NyYy9jb21wb25lbnRzL1NldmVyZUV2ZW50L1NldmVyZUV2ZW50JztcbmltcG9ydCB7IElBcHBTdGF0ZSB9IGZyb20gJ3NyYy9tb2RlbHMvSUFwcFN0YXRlJztcbmltcG9ydCB7IHVzZUxhc3RWaXNpdGVkIH0gZnJvbSAnc3JjL3Byb3ZpZGVycy9VcmxIaXN0b3J5JztcbmltcG9ydCB7XG4gIGZldGNoRXZlbnRzLFxuICBzZXRGb2N1c2VkRXZlbnQsXG4gIHNldEhvdmVyZWRFZGdlUGF0aHMsXG4gIHNldEhvdmVyZWRFdmVudCxcbiAgc2V0SG92ZXJlZEV2ZW50UGF0aHMsXG59IGZyb20gJ3NyYy9zdG9yZS9ldmVudHMvYWN0aW9ucyc7XG5pbXBvcnQgeyBJRXZlbnQgfSBmcm9tICdzcmMvc3RvcmUvZXZlbnRzL21vZGVscy9JRXZlbnQnO1xuaW1wb3J0IHsgc2V0RXZlbnRGaWx0ZXJQYXJhbSwgc2lkZU5hdkV4cGFuZGVkIH0gZnJvbSAnc3JjL3N0b3JlL2dsb2JhbC9hY3Rpb25zJztcbmltcG9ydCBpMThuIGZyb20gJ3NyYy91dGlsaXRpZXMvaTE4bic7XG5pbXBvcnQgeyBidWlsZEtRTFF1ZXJ5IH0gZnJvbSAnc3JjL3V0aWxpdGllcy9rcWwnO1xuaW1wb3J0ICcuLi9FdmVudHNTdHlsZS5zY3NzJztcbmltcG9ydCBFdmVudEluZm8gZnJvbSAnLi4vZXZlbnRfaW5mby9FdmVudEluZm8nO1xuaW1wb3J0IE1vcmVJbmZvIGZyb20gJy4uL01vcmVJbmZvJztcbmltcG9ydCBGaWx0ZXJDb250YWluZXIgZnJvbSAnLi9GaWx0ZXIvRmlsdGVyQ29udGFpbmVyJztcbmltcG9ydCBTb3J0IGZyb20gJy4vU29ydCc7XG5cbmZ1bmN0aW9uIG1hcFN0YXRlVG9Qcm9wcyhzdGF0ZTogSUFwcFN0YXRlKSB7XG4gIGNvbnN0IHtcbiAgICBldmVudHNfZGF0YSxcbiAgICBnbG9iYWxfZGF0YSxcbiAgICBlZGdlc19kYXRhLFxuICAgIHBvaW50c19kYXRhLFxuICAgIGFyZWFzX2RhdGEsXG4gICAgbmF2X2NvbnRleHRfZGF0YSxcbiAgfSA9IHN0YXRlO1xuXG4gIHJldHVybiB7XG4gICAgZXZlbnRzX2RhdGEsXG4gICAgZ2xvYmFsX2RhdGEsXG4gICAgZWRnZXNfZGF0YSxcbiAgICBwb2ludHNfZGF0YSxcbiAgICBhcmVhc19kYXRhLFxuICAgIG5hdl9jb250ZXh0X2RhdGEsXG4gIH07XG59XG5cbnR5cGUgSVByb3BzID0gQ29ubmVjdGVkUHJvcHM8dHlwZW9mIGNvbm5lY3Rvcj4gJiB7XG4gIHNpZGVuYXZFeHBhbmRlZDogYm9vbGVhbjtcbn07XG5cbmNvbnN0IEV2ZW50c0xpc3Q6IFJlYWN0LkZDPElQcm9wcz4gPSAoe1xuICBhcmVhc19kYXRhLFxuICBwb2ludHNfZGF0YSxcbiAgZWRnZXNfZGF0YSxcbiAgZ2xvYmFsX2RhdGEsXG4gIHNpZGVuYXZFeHBhbmRlZCxcbiAgZXZlbnRzX2RhdGEsXG4gIG5hdl9jb250ZXh0X2RhdGEsXG59KSA9PiB7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3Qge1xuICAgIGl0ZW1zLFxuICAgIGlzRmV0Y2hpbmcsXG4gICAgZm9jdXNlZEV2ZW50LFxuICAgIGhvdmVyZWRFdmVudCxcbiAgICBob3ZlcmVkRXZlbnRQYXRocyxcbiAgICBob3ZlcmVkRWRnZVBhdGhzLFxuICB9ID0gZXZlbnRzX2RhdGE7XG4gIGNvbnN0IHsgd2F0ZXJBdXRob3JpdHlJZCwgbWFwIH0gPSBnbG9iYWxfZGF0YTtcbiAgY29uc3QgW2ZpbHRlclBvcHVwT3Blbiwgc2V0RmlsdGVyUG9wdXBPcGVuXSA9IHVzZVN0YXRlKHRydWUpO1xuICBjb25zdCBbZXhjZXB0aW9uQWxlcnQsIHNldEV4Y2VwdGlvbkFsZXJ0XSA9IHVzZVN0YXRlPHtcbiAgICBtZXNzYWdlczogeyBtZXNzYWdlOiBhbnk7IGV2ZW50X2lkOiBudW1iZXIgfVtdO1xuICAgIGV2ZW50X2lkczogbnVtYmVyW107XG4gIH0+KHsgbWVzc2FnZXM6IFt7IG1lc3NhZ2U6ICcnLCBldmVudF9pZDogMCB9XSwgZXZlbnRfaWRzOiBbXSB9KTtcbiAgY29uc3QgbGFzdFZpc2l0ZWQgPSB1c2VMYXN0VmlzaXRlZCgpO1xuXG4gIGNvbnN0IHVzZVF1ZXJ5ID0gKCkgPT4ge1xuICAgIHJldHVybiBuZXcgVVJMU2VhcmNoUGFyYW1zKHVzZUxvY2F0aW9uKCkuc2VhcmNoKTtcbiAgfTtcbiAgY29uc3QgaGlzdG9yeSA9IHVzZUhpc3RvcnkoKTtcbiAgY29uc3QgcXVlcnkgPSB1c2VRdWVyeSgpO1xuICBjb25zdCBnZXRLUUxWYWx1ZXNGcm9tVVJMID0gKCkgPT4ge1xuICAgIHJldHVybiBxdWVyeS5nZXQoJ3ZhbHVlc0Zyb21LUUwnKTtcbiAgfTtcbiAgY29uc3QgZ2V0RXZlbnRJZEZyb21VUkwgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHF1ZXJ5LmdldCgnZXZlbnRJZCcpO1xuICB9O1xuXG4gIGNvbnN0IGxvYWRlciA9ICgpID0+IHtcbiAgICBpZiAoXG4gICAgICAoaXNGZXRjaGluZyAmJiBpdGVtcy5sZW5ndGggPT09IDApIHx8XG4gICAgICBhcmVhc19kYXRhLmlzRmV0Y2hpbmcgfHxcbiAgICAgIHBvaW50c19kYXRhLmlzRmV0Y2hpbmcgfHxcbiAgICAgIGVkZ2VzX2RhdGEuaXNGZXRjaGluZ1xuICAgICkge1xuICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXsnbG9hZGVyJ30+PC9kaXY+O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRXhwYW5zaW9uVG9nZ2xlID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHNpZGVOYXZFeHBhbmRlZCghc2lkZW5hdkV4cGFuZGVkKSk7XG4gIH07XG5cbiAgY29uc3QgYXBwbHlEZWZhdWx0RmlsdGVyID0gKCkgPT4ge1xuICAgIGhpc3RvcnkucHVzaChcbiAgICAgIGAvJHtuYXZfY29udGV4dF9kYXRhLm5hdkNvbnRleHQubmFtZX0vaW5kZXg/d2F0ZXJfYXV0aG9yaXR5X2lkPSR7Z2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlJZH0mbG9jYWxlPSR7bmF2X2NvbnRleHRfZGF0YS5uYXZDb250ZXh0LmxvY2FsZX0mdmFsdWVzRnJvbUtRTD1gLFxuICAgICk7XG4gICAgZGlzcGF0Y2goc2V0RXZlbnRGaWx0ZXJQYXJhbSgnJykpO1xuICB9O1xuXG4gIGNvbnN0IHZhbGlkYXRlRXZlbnQgPSAoZXZlbnQ6IElFdmVudCkgPT4ge1xuICAgIC8vIGNoZWNrIHRoYXQgYWxsIG9ic2VydmF0aW9ucycgZWRnZXMgZXhpc3RzLiBJZiB0aGV5IGFyZSBub3QgZXhpc3RzIGl0J3MgaW5kaWNhdGVzIHRoYXQgdGhlaXIgcG9pbnRzIGFyZVxuICAgIC8vIG5vdCBpbiB0aGUgaGllcmFyY2h5IG9yIGRvZXNuJ3QgaGF2ZSBsYXQvbG5nLlxuICAgIGxldCBpbnZhbGlkT2JzZXJ2YXRpb25zTWVzc2FnZXM6IGFueSA9IFtdO1xuICAgIGV2ZW50Lm9ic2VydmF0aW9ucy5mb3JFYWNoKChvYnNlcnZhdGlvbjogYW55KSA9PiB7XG4gICAgICAvLyBpZiBvYnNlcnZhdGlvbiBpcyByb290IChleC4gV1dUUCkgdGhlcmUgaXMgbm8gZWRnZSB0aGF0IGl0cyBhIHNvdXJjZS4gc28gd2UgY2FuIHNraXAgdGhpcyBjaGVja1xuICAgICAgaWYgKCFvYnNlcnZhdGlvbi5wb2ludF9pc19yb290KSB7XG4gICAgICAgIGxldCBlZGdlID0gZWRnZXNfZGF0YS5pdGVtcy5maW5kKFxuICAgICAgICAgIChlZGdlKSA9PiBlZGdlLnNvdXJjZV9wb2ludF9pZCA9PT0gb2JzZXJ2YXRpb24ucG9pbnRfaWQsXG4gICAgICAgICk7XG4gICAgICAgIGlmIChlZGdlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpbnZhbGlkT2JzZXJ2YXRpb25zTWVzc2FnZXMucHVzaChcbiAgICAgICAgICAgIGAke29ic2VydmF0aW9uLnBvaW50X25hbWV9ICgke29ic2VydmF0aW9uLnBvaW50X2lkfSkgYCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoaW52YWxpZE9ic2VydmF0aW9uc01lc3NhZ2VzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgbGV0IGluZGV4ID0gZXhjZXB0aW9uQWxlcnQubWVzc2FnZXMuZmluZEluZGV4KFxuICAgICAgICAobXNnKSA9PiBtc2cuZXZlbnRfaWQgPT09IGV2ZW50LmlkLFxuICAgICAgKTtcblxuICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICBzZXRFeGNlcHRpb25BbGVydCh7XG4gICAgICAgICAgbWVzc2FnZXM6IFtcbiAgICAgICAgICAgIC4uLmV4Y2VwdGlvbkFsZXJ0Lm1lc3NhZ2VzLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBtZXNzYWdlOiAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPntpMThuLnQoJ2V2ZW50c19vdmVydmlldy5ldmVudF9kYXRhX21pc3NpbmcnKX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGV2ZW50X2lkOiBldmVudC5pZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBldmVudF9pZHM6IFsuLi5leGNlcHRpb25BbGVydC5ldmVudF9pZHMsIGV2ZW50LmlkXSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gc2FtZSBjaGVjayBhcyBhYm92ZSBidXQgdGhpcyB0aW1lIGZvciB0aGUgZXZlbnQgcGF0aC4gSWYgZWRnZSBkb2Vzbid0IGV4aXN0LCBpdCdzIGluZGljYXRlcyB0aGF0IG9uZSBvZiB0aGVcbiAgICAvLyBwb2ludHMgZG93bnN0cmVhbSBkb2Vzbid0IGhhdmUgbGF0L2xuZy5cbiAgICBsZXQgaW52YWxpZFBhdGhNZXNzYWdlczogYW55ID0gW107XG4gICAgZXZlbnQucGF0aC5mb3JFYWNoKChwYXRoOiBhbnkpID0+IHtcbiAgICAgIGxldCBlZGdlID0gZWRnZXNfZGF0YS5pdGVtcy5maW5kKChlZGdlKSA9PiBlZGdlLmlkID09PSBwYXRoLmVkZ2VfaWQpO1xuICAgICAgaWYgKGVkZ2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBlZGdlICR7cGF0aC5lZGdlX2lkfSBjYW4gbm90IGJlIGZvdW5kYCk7XG4gICAgICAgIGxldCBvYnNlcnZhdGlvbiA9IGV2ZW50Lm9ic2VydmF0aW9ucy5maW5kKFxuICAgICAgICAgIChvYnNlcnZhdGlvbikgPT4gb2JzZXJ2YXRpb24uaWQgPT09IHBhdGgubGFzdF9vYnNlcnZhdGlvbl9pZCxcbiAgICAgICAgKTtcbiAgICAgICAgbGV0IGxhc3RPYnNlcnZhdGlvblBvaW50ID0gJ05vdCBmb3VuZCc7XG4gICAgICAgIGlmIChvYnNlcnZhdGlvbikge1xuICAgICAgICAgIGxhc3RPYnNlcnZhdGlvblBvaW50ID0gb2JzZXJ2YXRpb24ucG9pbnRfbmFtZTtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdsYXN0T2JzZXJ2YXRpb25Qb2ludCcsIGxhc3RPYnNlcnZhdGlvblBvaW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGludmFsaWRQYXRoTWVzc2FnZXMucHVzaChgJHtsYXN0T2JzZXJ2YXRpb25Qb2ludH0gYCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoaW52YWxpZFBhdGhNZXNzYWdlcy5sZW5ndGggIT09IDApIHtcbiAgICAgIHNldEV4Y2VwdGlvbkFsZXJ0KHtcbiAgICAgICAgbWVzc2FnZXM6IFtcbiAgICAgICAgICAuLi5leGNlcHRpb25BbGVydC5tZXNzYWdlcyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtZXNzYWdlOiAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPHA+e2kxOG4udCgnZXZlbnRzX292ZXJ2aWV3LmV2ZW50X3ZlcmlmeV9jb29yZGluYXRlcycpfTwvcD5cbiAgICAgICAgICAgICAgICA8c3Bhbj57aW52YWxpZFBhdGhNZXNzYWdlc308L3NwYW4+XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGV2ZW50X2lkOiBldmVudC5pZCxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBldmVudF9pZHM6IFsuLi5leGNlcHRpb25BbGVydC5ldmVudF9pZHMsIGV2ZW50LmlkXSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUV2ZW50SXRlbUNsaWNrID0gKFxuICAgIGV2ZW50OiBJRXZlbnQsXG4gICAgcmVmOiBSZWZPYmplY3Q8SFRNTEVsZW1lbnQ+IHwgbnVsbCxcbiAgKSA9PiB7XG4gICAgaWYgKHJlZiAhPT0gbnVsbCkgb25Nb3VzZUxlYXZlRXZlbnQoKTtcbiAgICAvLyBpZiAoaG92ZXJlZEV2ZW50UGF0aHMgJiYgbWFwKSB7XG4gICAgLy8gICAgIGhvdmVyZWRFdmVudFBhdGhzLmZvckVhY2goKHBhdGgpID0+IHtcbiAgICAvLyAgICAgICAgIG1hcC5yZW1vdmVMYXllcihwYXRoKTtcbiAgICAvLyAgICAgfSk7XG4gICAgLy8gfVxuICAgIC8vIGRpc3BhdGNoKHNldEhvdmVyZWRFdmVudFBhdGhzKFtdKSk7XG4gICAgLy8gZGlzcGF0Y2goc2V0SG92ZXJFdmVudEluZGljYXRvcihudWxsKSk7XG4gICAgZGlzcGF0Y2goc2V0Rm9jdXNlZEV2ZW50KGV2ZW50KSk7XG4gICAgc2V0RmlsdGVyUG9wdXBPcGVuKGZhbHNlKTtcbiAgICBpZiAoZ2V0RXZlbnRJZEZyb21VUkwoKSA9PT0gbnVsbCB8fCBnZXRFdmVudElkRnJvbVVSTCgpID09PSAnbnVsbCcpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBoaXN0b3J5LnB1c2goXG4gICAgICAgICAgYC8ke25hdl9jb250ZXh0X2RhdGEubmF2Q29udGV4dC5uYW1lfS9pbmRleD93YXRlcl9hdXRob3JpdHlfaWQ9JHtcbiAgICAgICAgICAgIGdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWRcbiAgICAgICAgICB9JmxvY2FsZT0ke25hdl9jb250ZXh0X2RhdGEubmF2Q29udGV4dC5sb2NhbGV9JmV2ZW50SWQ9JHtcbiAgICAgICAgICAgIGV2ZW50LmlkXG4gICAgICAgICAgfSZ2YWx1ZXNGcm9tS1FMPSR7XG4gICAgICAgICAgICBnbG9iYWxfZGF0YS5ldmVudEZpbHRlclBhcmFtXG4gICAgICAgICAgfSZ2YWxpZEV2ZW50PSR7dmFsaWRhdGVFdmVudChldmVudCl9YCxcbiAgICAgICAgKTtcbiAgICAgIH0sIDUwMCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IG9uTW91c2VFbnRlckV2ZW50ID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkRXZlbnQgJiYgIWhvdmVyZWRFdmVudCAmJiB2YWxpZGF0ZUV2ZW50KGV2ZW50KSkge1xuICAgICAgZGlzcGF0Y2goc2V0SG92ZXJlZEV2ZW50KGV2ZW50KSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IG9uTW91c2VMZWF2ZUV2ZW50ID0gKCkgPT4ge1xuICAgIGlmIChob3ZlcmVkRXZlbnQgJiYgaG92ZXJlZEV2ZW50UGF0aHMgJiYgbWFwKSB7XG4gICAgICBob3ZlcmVkRXZlbnRQYXRocy5mb3JFYWNoKChwYXRoKSA9PiB7XG4gICAgICAgIG1hcC5yZW1vdmVMYXllcihwYXRoKTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoaG92ZXJlZEVkZ2VQYXRocykge1xuICAgICAgICBob3ZlcmVkRWRnZVBhdGhzLmZvckVhY2goKHBhdGgpID0+IHtcbiAgICAgICAgICBtYXAucmVtb3ZlTGF5ZXIocGF0aCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBsZXQgbGF5ZXJzID0gbWFwLl9sYXllcnM7XG4gICAgICAvLyBmb3IgKGNvbnN0IHByb3BlcnR5IGluIGxheWVycykge1xuICAgICAgLy8gICBjb25zdCBrYW5kb19vYmplY3QgPSBsYXllcnNbcHJvcGVydHldLmthbmRvX29iamVjdDtcbiAgICAgIC8vICAgaWYgKFxuICAgICAgLy8gICAgIGthbmRvX29iamVjdD8uaW5jbHVkZXMoJ0V2ZW50Qm9keScpIHx8XG4gICAgICAvLyAgICAgW1xuICAgICAgLy8gICAgICAgJ0V2ZW50VGFpbCcsXG4gICAgICAvLyAgICAgICAnU2FtcGxpbmdQb2ludCcsXG4gICAgICAvLyAgICAgICAnRGVjb3JhdG9yJyxcbiAgICAgIC8vICAgICAgICdIb3ZlcmVkRWRnZScsXG4gICAgICAvLyAgICAgICAnSG92ZXJlZEVkZ2VGcm9udCcsXG4gICAgICAvLyAgICAgICAnRm9jdXNlZEVkZ2UnLFxuICAgICAgLy8gICAgICAgJ0ZvY3VzZWRFZGdlRnJvbnQnLFxuICAgICAgLy8gICAgIF0uaW5jbHVkZXMoa2FuZG9fb2JqZWN0KVxuICAgICAgLy8gICApIHtcbiAgICAgIC8vICAgICBtYXAucmVtb3ZlTGF5ZXIobGF5ZXJzW3Byb3BlcnR5XSk7XG4gICAgICAvLyAgIH1cbiAgICAgIC8vIH1cbiAgICB9XG4gICAgZGlzcGF0Y2goc2V0SG92ZXJlZEV2ZW50KG51bGwpKTtcbiAgICBkaXNwYXRjaChzZXRIb3ZlcmVkRXZlbnRQYXRocyhbXSkpO1xuICAgIGRpc3BhdGNoKHNldEhvdmVyZWRFZGdlUGF0aHMoW10pKTtcbiAgfTtcblxuICBjb25zdCBpc0RhdGFGZXRjaGVkQW5kRXZlbnROb3RGb2N1c2VkID0gKCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICAoZ2V0RXZlbnRJZEZyb21VUkwoKSA9PT0gJ251bGwnIHx8IGdldEV2ZW50SWRGcm9tVVJMKCkgPT09IG51bGwpICYmXG4gICAgICBmb2N1c2VkRXZlbnQgPT09IG51bGwgJiZcbiAgICAgIGl0ZW1zLmxlbmd0aCAhPT0gMCAmJlxuICAgICAgIWlzRmV0Y2hpbmcgJiZcbiAgICAgICFhcmVhc19kYXRhLmlzRmV0Y2hpbmcgJiZcbiAgICAgICFwb2ludHNfZGF0YS5pc0ZldGNoaW5nICYmXG4gICAgICAhZWRnZXNfZGF0YS5pc0ZldGNoaW5nXG4gICAgKTtcbiAgfTtcblxuICBjb25zdCBzZXRGb2N1c2VkRXZlbnRJZkZvdW5kSW5QYXJhbXMgPSAoKSA9PiB7XG4gICAgaWYgKFxuICAgICAgZ2V0RXZlbnRJZEZyb21VUkwoKSAhPT0gbnVsbCAmJlxuICAgICAgZ2V0RXZlbnRJZEZyb21VUkwoKSAhPT0gJ251bGwnICYmXG4gICAgICBmb2N1c2VkRXZlbnQgPT09IG51bGwgJiZcbiAgICAgIGl0ZW1zLmxlbmd0aCAhPT0gMCAmJlxuICAgICAgIWlzRmV0Y2hpbmcgJiZcbiAgICAgICFhcmVhc19kYXRhLmlzRmV0Y2hpbmcgJiZcbiAgICAgICFwb2ludHNfZGF0YS5pc0ZldGNoaW5nICYmXG4gICAgICAhZWRnZXNfZGF0YS5pc0ZldGNoaW5nXG4gICAgKSB7XG4gICAgICBsZXQgZXZlbnQgPSBldmVudHNfZGF0YS5pdGVtcy5maW5kKFxuICAgICAgICAoZTogSUV2ZW50KSA9PiBlLmlkID09PSBwYXJzZUludChnZXRFdmVudElkRnJvbVVSTCgpISksXG4gICAgICApO1xuICAgICAgaWYgKGV2ZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaGFuZGxlRXZlbnRJdGVtQ2xpY2soZXZlbnQsIG51bGwpO1xuICAgICAgICB9LCA1MDApO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBjb25zdCB2YWxpZEV2ZW50ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgbGV0IGV2ZW50ID0gZXZlbnRzX2RhdGEuaXRlbXMuZmluZChcbiAgICAgIChlKSA9PiBlLmlkLnRvU3RyaW5nKCkgPT09IGdldEV2ZW50SWRGcm9tVVJMKCksXG4gICAgKTtcblxuICAgIGlmIChldmVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdmFsaWRhdGVFdmVudChldmVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSwgW1xuICAgIGV2ZW50c19kYXRhLmZvY3VzZWRFdmVudCxcbiAgICBhcmVhc19kYXRhLmlzRmV0Y2hpbmcsXG4gICAgcG9pbnRzX2RhdGEuaXNGZXRjaGluZyxcbiAgICBlZGdlc19kYXRhLmlzRmV0Y2hpbmcsXG4gICAgZXZlbnRzX2RhdGEuaXNGZXRjaGluZyxcbiAgXSk7XG5cbiAgY29uc3QgdHJpZ2dlclNvcnQgPSAoc29ydDogbnVtYmVyKSA9PiB7XG4gICAgaWYgKFxuICAgICAgZ2xvYmFsX2RhdGEuYWN0aXZlRmlsdGVyICE9PSBudWxsICYmXG4gICAgICBpc0RhdGFGZXRjaGVkQW5kRXZlbnROb3RGb2N1c2VkKClcbiAgICApIHtcbiAgICAgIGxldCBLUUw7XG4gICAgICBsZXQgVVJMO1xuICAgICAgc3dpdGNoIChzb3J0KSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBLUUwgPSBgJHtidWlsZEtRTFF1ZXJ5KGdsb2JhbF9kYXRhLmFjdGl2ZUZpbHRlciwgJ25ld2VzdCcpfWA7XG4gICAgICAgICAgVVJMID0gYC8ke1xuICAgICAgICAgICAgbmF2X2NvbnRleHRfZGF0YS5uYXZDb250ZXh0Lm5hbWVcbiAgICAgICAgICB9L2luZGV4P3dhdGVyX2F1dGhvcml0eV9pZD0ke1xuICAgICAgICAgICAgZ2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlJZFxuICAgICAgICAgIH0mZXZlbnRJZD0ke2dldEV2ZW50SWRGcm9tVVJMKCl9JmxvY2FsZT0ke1xuICAgICAgICAgICAgbmF2X2NvbnRleHRfZGF0YS5uYXZDb250ZXh0LmxvY2FsZVxuICAgICAgICAgIH0mdmFsdWVzRnJvbUtRTD0ke0tRTH0mdmFsaWRFdmVudD0ke3ZhbGlkRXZlbnR9YDtcbiAgICAgICAgICBoaXN0b3J5LnB1c2goVVJMKTtcbiAgICAgICAgICBkaXNwYXRjaChzZXRFdmVudEZpbHRlclBhcmFtKEtRTCkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgS1FMID0gYCR7YnVpbGRLUUxRdWVyeShnbG9iYWxfZGF0YS5hY3RpdmVGaWx0ZXIsICdvbGRlc3QnKX1gO1xuICAgICAgICAgIFVSTCA9IGAvJHtcbiAgICAgICAgICAgIG5hdl9jb250ZXh0X2RhdGEubmF2Q29udGV4dC5uYW1lXG4gICAgICAgICAgfS9pbmRleD93YXRlcl9hdXRob3JpdHlfaWQ9JHtcbiAgICAgICAgICAgIGdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWRcbiAgICAgICAgICB9JmV2ZW50SWQ9JHtnZXRFdmVudElkRnJvbVVSTCgpfSZsb2NhbGU9JHtcbiAgICAgICAgICAgIG5hdl9jb250ZXh0X2RhdGEubmF2Q29udGV4dC5sb2NhbGVcbiAgICAgICAgICB9JnZhbHVlc0Zyb21LUUw9JHtLUUx9JnZhbGlkRXZlbnQ9JHt2YWxpZEV2ZW50fWA7XG4gICAgICAgICAgaGlzdG9yeS5wdXNoKFVSTCk7XG4gICAgICAgICAgZGlzcGF0Y2goc2V0RXZlbnRGaWx0ZXJQYXJhbShLUUwpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIEtRTCA9IGAke2J1aWxkS1FMUXVlcnkoZ2xvYmFsX2RhdGEuYWN0aXZlRmlsdGVyLCAnc2V2ZXJpdHknKX1gO1xuICAgICAgICAgIFVSTCA9IGAvJHtcbiAgICAgICAgICAgIG5hdl9jb250ZXh0X2RhdGEubmF2Q29udGV4dC5uYW1lXG4gICAgICAgICAgfS9pbmRleD93YXRlcl9hdXRob3JpdHlfaWQ9JHtcbiAgICAgICAgICAgIGdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWRcbiAgICAgICAgICB9JmV2ZW50SWQ9JHtnZXRFdmVudElkRnJvbVVSTCgpfSZsb2NhbGU9JHtcbiAgICAgICAgICAgIG5hdl9jb250ZXh0X2RhdGEubmF2Q29udGV4dC5sb2NhbGVcbiAgICAgICAgICB9JnZhbHVlc0Zyb21LUUw9JHtLUUx9JnZhbGlkRXZlbnQ9JHt2YWxpZEV2ZW50fWA7XG4gICAgICAgICAgaGlzdG9yeS5wdXNoKFVSTCk7XG4gICAgICAgICAgZGlzcGF0Y2goc2V0RXZlbnRGaWx0ZXJQYXJhbShLUUwpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY2FsY0V2ZW50c1JlYWxBbW91bnQgPSAoKSA9PiB7XG4gICAgbGV0IGV2ZW50c0NvdW50OiBudW1iZXIgfCBzdHJpbmcgPSAwO1xuICAgIGV2ZW50c0NvdW50ID0gZXZlbnRzX2RhdGEuZXZlbnRzX2NvdW50O1xuICAgIGlmIChldmVudHNDb3VudCA+IDUwKVxuICAgICAgZXZlbnRzQ291bnQgPSBgJHtpMThuLnQoJ2V2ZW50c19vdmVydmlldy5tb3JlX3RoYW4nKX0gNTBgO1xuXG4gICAgcmV0dXJuIGV2ZW50c0NvdW50O1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkRXZlbnQpIHtcbiAgICAgIGRpc3BhdGNoKFxuICAgICAgICBmZXRjaEV2ZW50cyhcbiAgICAgICAgICB3YXRlckF1dGhvcml0eUlkLFxuICAgICAgICAgIGdldEtRTFZhbHVlc0Zyb21VUkwoKSB8fCAnREVGQVVMVCcsXG4gICAgICAgICAgZ2V0RXZlbnRJZEZyb21VUkwoKT8udG9TdHJpbmcoKSB8fCAnbnVsbCcsXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cbiAgfSwgW1xuICAgIGdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWQsXG4gICAgZ2xvYmFsX2RhdGEuZXZlbnRGaWx0ZXJQYXJhbSxcbiAgICBmb2N1c2VkRXZlbnQsXG4gIF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKFxuICAgICAgIWV2ZW50c19kYXRhLmlzRmV0Y2hpbmcgJiZcbiAgICAgICFlZGdlc19kYXRhLmlzRmV0Y2hpbmcgJiZcbiAgICAgICFwb2ludHNfZGF0YS5pc0ZldGNoaW5nICYmXG4gICAgICAhYXJlYXNfZGF0YS5pc0ZldGNoaW5nICYmXG4gICAgICBhcmVhc19kYXRhLm5ld0FyZWFzLmxlbmd0aCAhPT0gMCAmJlxuICAgICAgcG9pbnRzX2RhdGEuaXRlbXMubGVuZ3RoICE9PSAwICYmXG4gICAgICBmaWx0ZXJQb3B1cE9wZW5cbiAgICApIHtcbiAgICAgIHNldEZvY3VzZWRFdmVudElmRm91bmRJblBhcmFtcygpO1xuICAgIH1cbiAgfSwgW1xuICAgIGV2ZW50c19kYXRhLmlzRmV0Y2hpbmcsXG4gICAgZWRnZXNfZGF0YS5pc0ZldGNoaW5nLFxuICAgIHBvaW50c19kYXRhLmlzRmV0Y2hpbmcsXG4gICAgcG9pbnRzX2RhdGEuaXRlbXMubGVuZ3RoLFxuICAgIGFyZWFzX2RhdGEuaXRlbXMubGVuZ3RoLFxuICAgIGFyZWFzX2RhdGEuaXNGZXRjaGluZyxcbiAgICBnbG9iYWxfZGF0YS5ldmVudEZpbHRlclBhcmFtLFxuICAgIGZpbHRlclBvcHVwT3BlbixcbiAgXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17J3NpZGVuYXYgJyArIChzaWRlbmF2RXhwYW5kZWQgPyAnJyA6ICdzaWRlbmF2LS1jb2xsYXBzZWQnKX0+XG4gICAgICB7Z2xvYmFsX2RhdGEubW9yZUluZm8gIT09IHVuZGVmaW5lZCAmJiBnbG9iYWxfZGF0YS5tb3JlSW5mby5hY3RpdmUgJiYgKFxuICAgICAgICA8TW9yZUluZm8gLz5cbiAgICAgICl9XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtcbiAgICAgICAgICAnZXZlbnQtaW5mbyAnICtcbiAgICAgICAgICAoIWhvdmVyZWRFdmVudCAmJiBmb2N1c2VkRXZlbnQgIT09IG51bGxcbiAgICAgICAgICAgID8gJydcbiAgICAgICAgICAgIDogJ2V2ZW50LWluZm8tLWNvbGxhcHNlZCcpXG4gICAgICAgIH1cbiAgICAgID5cbiAgICAgICAgeyFob3ZlcmVkRXZlbnQgJiYgZm9jdXNlZEV2ZW50ICE9PSBudWxsICYmIChcbiAgICAgICAgICA8RXZlbnRJbmZvXG4gICAgICAgICAgICBldmVudD17Zm9jdXNlZEV2ZW50fVxuICAgICAgICAgICAgcmVPcGVuRmlsdGVyPXsoKSA9PiBzZXRGaWx0ZXJQb3B1cE9wZW4odHJ1ZSl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9XCJ0b2dnbGUtZXhwYW5zaW9uLWJ1dHRvblwiXG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICBoYW5kbGVFeHBhbnNpb25Ub2dnbGUoKTtcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuYXYtZXhwYW5zaW9uLWljb25cIj5cbiAgICAgICAgICA8Rm9udEF3ZXNvbWVJY29uXG4gICAgICAgICAgICBpY29uPXtzaWRlbmF2RXhwYW5kZWQgPyBmYUNhcmV0TGVmdCA6IGZhQ2FyZXRSaWdodH1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9eyd0b2dnbGUtZXhwYW5zaW9uLWJ1dHRvbi1tb2JpbGUnfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgaGFuZGxlRXhwYW5zaW9uVG9nZ2xlKCk7XG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxhIGhyZWY9XCIjXCI+XG4gICAgICAgICAgPEZvbnRBd2Vzb21lSWNvbiBpY29uPXtmYUFycm93TGVmdH0gLz5cbiAgICAgICAgICA8c3Bhbj4ge2kxOG4udCgnZXZlbnRzX292ZXJ2aWV3LmJhY2tfdG9fZGV0YWlscycpfTwvc3Bhbj5cbiAgICAgICAgPC9hPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImV2ZW50cy1oZWFkZXJcIj5cbiAgICAgICAge2xhc3RWaXNpdGVkICYmICFpc0ZldGNoaW5nICYmIChcbiAgICAgICAgICA8TGluayBjbGFzc05hbWU9XCJiYWNrXCIgdG89e2xhc3RWaXNpdGVkfT5cbiAgICAgICAgICAgIHsnICd9XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgIHNyYz17TGVmdEFycm93SWNvbn1cbiAgICAgICAgICAgICAgaGVpZ2h0PVwiMTBweFwiXG4gICAgICAgICAgICAgIHdpZHRoPVwiMTJweFwiXG4gICAgICAgICAgICAgIGFsdD1cImJhY2tcIlxuICAgICAgICAgICAgLz57JyAnfVxuICAgICAgICAgICAge2kxOG4udCgnYXJlYV9zY3JlZW4uYmFjaycpfVxuICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgKX1cbiAgICAgICAgPGg0PlxuICAgICAgICAgIHtpMThuLnQoJ2V2ZW50c19vdmVydmlldy5ldmVudHNfbGlzdCcpfVxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17J2V2ZW50cy1oZWFkZXJfX2V2ZW50c19hbW91bnQnfT5cbiAgICAgICAgICAgICh7Y2FsY0V2ZW50c1JlYWxBbW91bnQoKX0pXG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2g0PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpbHRlcmluZ1wiPlxuICAgICAgICAgIHtldmVudHNfZGF0YS5pdGVtcy5sZW5ndGggIT09IDAgJiYgKFxuICAgICAgICAgICAgPFNvcnRcbiAgICAgICAgICAgICAgdHJpZ2dlclNvcnQ9e3RyaWdnZXJTb3J0fVxuICAgICAgICAgICAgICBldmVudHM9e2V2ZW50c19kYXRhLml0ZW1zfVxuICAgICAgICAgICAgICBldmVudHNGZXRjaGluZz17ZXZlbnRzX2RhdGEuaXNGZXRjaGluZ31cbiAgICAgICAgICAgICAgYWN0aXZlRmlsdGVyPXtnbG9iYWxfZGF0YS5hY3RpdmVGaWx0ZXJ9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJpY29uc1wiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmaWx0ZXJcIlxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRGaWx0ZXJQb3B1cE9wZW4oIWZpbHRlclBvcHVwT3Blbil9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxGaWx0ZXJJY29uIHdpZHRoPVwiMTdweFwiIGhlaWdodD1cIjE3cHhcIiBmaWxsPVwiI2Y2MDA0ZlwiIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAge3BvaW50c19kYXRhLml0ZW1zLmxlbmd0aCAhPT0gMCAmJiAhZm9jdXNlZEV2ZW50ICYmIChcbiAgICAgICAgICA8RmlsdGVyQ29udGFpbmVyXG4gICAgICAgICAgICBmaWx0ZXJQb3B1cE9wZW49e2ZpbHRlclBvcHVwT3Blbn1cbiAgICAgICAgICAgIGZldGNoVHlwZT17J0V2ZW50RmlsdGVyJ31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImV2ZW50cy1jb250YWluZXIgc2Nyb2xsYmFyIFwiPlxuICAgICAgICB7bG9hZGVyKCl9XG4gICAgICAgIHshaXNGZXRjaGluZyAmJlxuICAgICAgICAgIGl0ZW1zLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAgICFwb2ludHNfZGF0YS5pc0ZldGNoaW5nICYmXG4gICAgICAgICAgIWVkZ2VzX2RhdGEuaXNGZXRjaGluZyAmJiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2V2ZW50c19fYmxhbmtzbGF0ZSd9PlxuICAgICAgICAgICAgICA8aW1nIHNyYz17Tm9FdmVudHNJbWFnZX0gYWx0PVwiTm9FdmVudHNJY29uXCIgLz5cbiAgICAgICAgICAgICAgPGgyPntpMThuLnQoJ2V2ZW50c19vdmVydmlldy5maWx0ZXIuYmxhbmtzbGF0ZS5oZWFkZXInKX08L2gyPlxuICAgICAgICAgICAgICA8cD57aTE4bi50KCdldmVudHNfb3ZlcnZpZXcuZmlsdGVyLmJsYW5rc2xhdGUuYm9keScpfTwvcD5cbiAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9eydhcHBseV9kZWZhdWx0X2ZpbHRlcl9idXR0b24nfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGFwcGx5RGVmYXVsdEZpbHRlcigpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2kxOG4udCgnZXZlbnRzX292ZXJ2aWV3LmZpbHRlci5ibGFua3NsYXRlLmJ1dHRvbicpfVxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApfVxuICAgICAgICB7aXRlbXMubGVuZ3RoICE9PSAwICYmXG4gICAgICAgICAgIWFyZWFzX2RhdGEuaXNGZXRjaGluZyAmJlxuICAgICAgICAgICFwb2ludHNfZGF0YS5pc0ZldGNoaW5nICYmXG4gICAgICAgICAgIWVkZ2VzX2RhdGEuaXNGZXRjaGluZyAmJlxuICAgICAgICAgICFmb2N1c2VkRXZlbnQgJiYgKFxuICAgICAgICAgICAgPHVsIGNsYXNzTmFtZT1cImV2ZW50cyBcIj5cbiAgICAgICAgICAgICAge2l0ZW1zLm1hcCgoZXZlbnQ6IGFueSkgPT4gKFxuICAgICAgICAgICAgICAgIDxsaSBrZXk9e2V2ZW50LmlkfSBjbGFzc05hbWU9XCJldmVudFwiIGRhdGEtZXZlbnQtaWQ9e2V2ZW50LmlkfT5cbiAgICAgICAgICAgICAgICAgIDxTZXZlcmVFdmVudFxuICAgICAgICAgICAgICAgICAgICBldmVudD17ZXZlbnR9XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZUNsaWNrPXtoYW5kbGVFdmVudEl0ZW1DbGlja31cbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyRXZlbnQ9e29uTW91c2VFbnRlckV2ZW50fVxuICAgICAgICAgICAgICAgICAgICBvbk1vdXNlTGVhdmVFdmVudD17b25Nb3VzZUxlYXZlRXZlbnR9XG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlRXZlbnQ9e3ZhbGlkYXRlRXZlbnR9XG4gICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkFsZXJ0PXtleGNlcHRpb25BbGVydH1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmNvbnN0IGNvbm5lY3RvciA9IGNvbm5lY3QobWFwU3RhdGVUb1Byb3BzKTtcbmV4cG9ydCBkZWZhdWx0IGNvbm5lY3RvcihFdmVudHNMaXN0KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFDQSxJQUFBQSxrQkFBQSxHQUFBQyxPQUFBO0FBS0EsSUFBQUMsaUJBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFJLFdBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLGVBQUEsR0FBQUwsT0FBQTtBQUFpRSxJQUFBTSxVQUFBLEdBQUFDLHNCQUFBLENBQUFQLE9BQUE7QUFBQSxJQUFBUSxPQUFBLEdBQUFSLE9BQUE7QUFBQSxJQUFBUyxVQUFBLEdBQUFGLHNCQUFBLENBQUFQLE9BQUE7QUFJakUsSUFBQVUsWUFBQSxHQUFBVixPQUFBO0FBRUEsSUFBQVcsV0FBQSxHQUFBWCxPQUFBO0FBQ0EsSUFBQVksUUFBQSxHQUFBWixPQUFBO0FBUUEsSUFBQWEsU0FB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
394
+ var connector = (0, _reactRedux.connect)(mapStateToProps);
395
+ var _default = connector(EventsList);
396
+ exports.default = _default;
397
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZnJlZVNvbGlkU3ZnSWNvbnMiLCJyZXF1aXJlIiwiX3JlYWN0Rm9udGF3ZXNvbWUiLCJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9yZWFjdFJlZHV4IiwiX3JlYWN0Um91dGVyRG9tIiwiX2Fycm93TGVmdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZnVubmVsIiwiX25vX2V2ZW50cyIsIl9TZXZlcmVFdmVudCIsIl9VcmxIaXN0b3J5IiwiX2FjdGlvbnMiLCJfYWN0aW9uczIiLCJfaTE4biIsIl9rcWwiLCJfRXZlbnRJbmZvIiwiX01vcmVJbmZvIiwiX0ZpbHRlckNvbnRhaW5lciIsIl9Tb3J0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJtYXBTdGF0ZVRvUHJvcHMiLCJzdGF0ZSIsImV2ZW50c19kYXRhIiwiZ2xvYmFsX2RhdGEiLCJlZGdlc19kYXRhIiwicG9pbnRzX2RhdGEiLCJhcmVhc19kYXRhIiwibmF2X2NvbnRleHRfZGF0YSIsIkV2ZW50c0xpc3QiLCJfcmVmIiwic2lkZW5hdkV4cGFuZGVkIiwiZGlzcGF0Y2giLCJ1c2VEaXNwYXRjaCIsIml0ZW1zIiwiaXNGZXRjaGluZyIsImZvY3VzZWRFdmVudCIsImhvdmVyZWRFdmVudCIsImhvdmVyZWRFdmVudFBhdGhzIiwiaG92ZXJlZEVkZ2VQYXRocyIsIndhdGVyQXV0aG9yaXR5SWQiLCJtYXAiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJmaWx0ZXJQb3B1cE9wZW4iLCJzZXRGaWx0ZXJQb3B1cE9wZW4iLCJfdXNlU3RhdGUzIiwibWVzc2FnZXMiLCJtZXNzYWdlIiwiZXZlbnRfaWQiLCJldmVudF9pZHMiLCJfdXNlU3RhdGU0IiwiZXhjZXB0aW9uQWxlcnQiLCJzZXRFeGNlcHRpb25BbGVydCIsImxhc3RWaXNpdGVkIiwidXNlTGFzdFZpc2l0ZWQiLCJ1c2VRdWVyeSIsIlVSTFNlYXJjaFBhcmFtcyIsInVzZUxvY2F0aW9uIiwic2VhcmNoIiwiaGlzdG9yeSIsInVzZUhpc3RvcnkiLCJxdWVyeSIsImdldEtRTFZhbHVlc0Zyb21VUkwiLCJnZXRFdmVudElkRnJvbVVSTCIsImxvYWRlciIsImxlbmd0aCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJoYW5kbGVFeHBhbnNpb25Ub2dnbGUiLCJzaWRlTmF2RXhwYW5kZWQiLCJhcHBseURlZmF1bHRGaWx0ZXIiLCJwdXNoIiwiY29uY2F0IiwibmF2Q29udGV4dCIsIm5hbWUiLCJsb2NhbGUiLCJzZXRFdmVudEZpbHRlclBhcmFtIiwidmFsaWRhdGVFdmVudCIsImV2ZW50IiwiaW52YWxpZE9ic2VydmF0aW9uc01lc3NhZ2VzIiwib2JzZXJ2YXRpb25zIiwiZm9yRWFjaCIsIm9ic2VydmF0aW9uIiwicG9pbnRfaXNfcm9vdCIsImVkZ2UiLCJmaW5kIiwic291cmNlX3BvaW50X2lkIiwicG9pbnRfaWQiLCJ1bmRlZmluZWQiLCJwb2ludF9uYW1lIiwiaW5kZXgiLCJmaW5kSW5kZXgiLCJtc2ciLCJpZCIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJGcmFnbWVudCIsImkxOG4iLCJ0IiwiaW52YWxpZFBhdGhNZXNzYWdlcyIsInBhdGgiLCJlZGdlX2lkIiwiY29uc29sZSIsImVycm9yIiwibGFzdF9vYnNlcnZhdGlvbl9pZCIsImxhc3RPYnNlcnZhdGlvblBvaW50IiwiaGFuZGxlRXZlbnRJdGVtQ2xpY2siLCJyZWYiLCJvbk1vdXNlTGVhdmVFdmVudCIsInNldEZvY3VzZWRFdmVudCIsInNldFRpbWVvdXQiLCJldmVudEZpbHRlclBhcmFtIiwib25Nb3VzZUVudGVyRXZlbnQiLCJzZXRIb3ZlcmVkRXZlbnQiLCJyZW1vdmVMYXllciIsInNldEhvdmVyZWRFdmVudFBhdGhzIiwic2V0SG92ZXJlZEVkZ2VQYXRocyIsImlzRGF0YUZldGNoZWRBbmRFdmVudE5vdEZvY3VzZWQiLCJzZXRGb2N1c2VkRXZlbnRJZkZvdW5kSW5QYXJhbXMiLCJlIiwicGFyc2VJbnQiLCJ2YWxpZEV2ZW50IiwidXNlTWVtbyIsInRvU3RyaW5nIiwidHJpZ2dlclNvcnQiLCJzb3J0IiwiYWN0aXZlRmlsdGVyIiwiS1FMIiwiVVJMIiwiYnVpbGRLUUxRdWVyeSIsImNhbGNFdmVudHNSZWFsQW1vdW50IiwiZXZlbnRzQ291bnQiLCJldmVudHNfY291bnQiLCJ1c2VFZmZlY3QiLCJfZ2V0RXZlbnRJZEZyb21VUkwiLCJmZXRjaEV2ZW50cyIsIm5ld0FyZWFzIiwibW9yZUluZm8iLCJhY3RpdmUiLCJyZU9wZW5GaWx0ZXIiLCJvbkNsaWNrIiwiRm9udEF3ZXNvbWVJY29uIiwiaWNvbiIsImZhQ2FyZXRMZWZ0IiwiZmFDYXJldFJpZ2h0IiwiaHJlZiIsImZhQXJyb3dMZWZ0IiwiTGluayIsInRvIiwic3JjIiwiTGVmdEFycm93SWNvbiIsImhlaWdodCIsIndpZHRoIiwiYWx0IiwiZXZlbnRzIiwiZXZlbnRzRmV0Y2hpbmciLCJSZWFjdENvbXBvbmVudCIsImZpbGwiLCJmZXRjaFR5cGUiLCJOb0V2ZW50c0ltYWdlIiwiU2V2ZXJlRXZlbnQiLCJoYW5kbGVDbGljayIsImNvbm5lY3RvciIsImNvbm5lY3QiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvcGFnZXMvRXZlbnRzUGFnZS9ldmVudHMvZXZlbnRzX2xpc3QvRXZlbnRzTGlzdC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgZXRjL25vLWNvbW1lbnRlZC1vdXQtY29kZSAqL1xuaW1wb3J0IHtcbiAgZmFBcnJvd0xlZnQsXG4gIGZhQ2FyZXRMZWZ0LFxuICBmYUNhcmV0UmlnaHQsXG59IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucyc7XG5pbXBvcnQgeyBGb250QXdlc29tZUljb24gfSBmcm9tICdAZm9ydGF3ZXNvbWUvcmVhY3QtZm9udGF3ZXNvbWUnO1xuaW1wb3J0IFJlYWN0LCB7IFJlZk9iamVjdCwgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNvbm5lY3QsIENvbm5lY3RlZFByb3BzLCB1c2VEaXNwYXRjaCB9IGZyb20gJ3JlYWN0LXJlZHV4JztcbmltcG9ydCB7IExpbmssIHVzZUhpc3RvcnksIHVzZUxvY2F0aW9uIH0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSc7XG5pbXBvcnQgTGVmdEFycm93SWNvbiBmcm9tICdzcmMvYXNzZXRzL2ljb25zL2Fycm93LWxlZnQuc3ZnJztcbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIEZpbHRlckljb24gfSBmcm9tICdzcmMvYXNzZXRzL2ljb25zL2Z1bm5lbC5zdmcnO1xuaW1wb3J0IE5vRXZlbnRzSW1hZ2UgZnJvbSAnc3JjL2Fzc2V0cy9ub19ldmVudHMuc3ZnJztcbmltcG9ydCB7IFNldmVyZUV2ZW50IH0gZnJvbSAnc3JjL2NvbXBvbmVudHMvU2V2ZXJlRXZlbnQvU2V2ZXJlRXZlbnQnO1xuaW1wb3J0IHsgSUFwcFN0YXRlIH0gZnJvbSAnc3JjL21vZGVscy9JQXBwU3RhdGUnO1xuaW1wb3J0IHsgdXNlTGFzdFZpc2l0ZWQgfSBmcm9tICdzcmMvcHJvdmlkZXJzL1VybEhpc3RvcnknO1xuaW1wb3J0IHtcbiAgZmV0Y2hFdmVudHMsXG4gIHNldEZvY3VzZWRFdmVudCxcbiAgc2V0SG92ZXJlZEVkZ2VQYXRocyxcbiAgc2V0SG92ZXJlZEV2ZW50LFxuICBzZXRIb3ZlcmVkRXZlbnRQYXRocyxcbn0gZnJvbSAnc3JjL3N0b3JlL2V2ZW50cy9hY3Rpb25zJztcbmltcG9ydCB7IElFdmVudCB9IGZyb20gJ3NyYy9zdG9yZS9ldmVudHMvbW9kZWxzL0lFdmVudCc7XG5pbXBvcnQgeyBzZXRFdmVudEZpbHRlclBhcmFtLCBzaWRlTmF2RXhwYW5kZWQgfSBmcm9tICdzcmMvc3RvcmUvZ2xvYmFsL2FjdGlvbnMnO1xuaW1wb3J0IGkxOG4gZnJvbSAnc3JjL3V0aWxpdGllcy9pMThuJztcbmltcG9ydCB7IGJ1aWxkS1FMUXVlcnkgfSBmcm9tICdzcmMvdXRpbGl0aWVzL2txbCc7XG5pbXBvcnQgJy4uL0V2ZW50c1N0eWxlLnNjc3MnO1xuaW1wb3J0IEV2ZW50SW5mbyBmcm9tICcuLi9ldmVudF9pbmZvL0V2ZW50SW5mbyc7XG5pbXBvcnQgTW9yZUluZm8gZnJvbSAnLi4vTW9yZUluZm8nO1xuaW1wb3J0IEZpbHRlckNvbnRhaW5lciBmcm9tICcuL0ZpbHRlci9GaWx0ZXJDb250YWluZXInO1xuaW1wb3J0IFNvcnQgZnJvbSAnLi9Tb3J0JztcblxuZnVuY3Rpb24gbWFwU3RhdGVUb1Byb3BzKHN0YXRlOiBJQXBwU3RhdGUpIHtcbiAgY29uc3Qge1xuICAgIGV2ZW50c19kYXRhLFxuICAgIGdsb2JhbF9kYXRhLFxuICAgIGVkZ2VzX2RhdGEsXG4gICAgcG9pbnRzX2RhdGEsXG4gICAgYXJlYXNfZGF0YSxcbiAgICBuYXZfY29udGV4dF9kYXRhLFxuICB9ID0gc3RhdGU7XG5cbiAgcmV0dXJuIHtcbiAgICBldmVudHNfZGF0YSxcbiAgICBnbG9iYWxfZGF0YSxcbiAgICBlZGdlc19kYXRhLFxuICAgIHBvaW50c19kYXRhLFxuICAgIGFyZWFzX2RhdGEsXG4gICAgbmF2X2NvbnRleHRfZGF0YSxcbiAgfTtcbn1cblxudHlwZSBJUHJvcHMgPSBDb25uZWN0ZWRQcm9wczx0eXBlb2YgY29ubmVjdG9yPiAmIHtcbiAgc2lkZW5hdkV4cGFuZGVkOiBib29sZWFuO1xufTtcblxuY29uc3QgRXZlbnRzTGlzdDogUmVhY3QuRkM8SVByb3BzPiA9ICh7XG4gIGFyZWFzX2RhdGEsXG4gIHBvaW50c19kYXRhLFxuICBlZGdlc19kYXRhLFxuICBnbG9iYWxfZGF0YSxcbiAgc2lkZW5hdkV4cGFuZGVkLFxuICBldmVudHNfZGF0YSxcbiAgbmF2X2NvbnRleHRfZGF0YSxcbn0pID0+IHtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7XG4gICAgaXRlbXMsXG4gICAgaXNGZXRjaGluZyxcbiAgICBmb2N1c2VkRXZlbnQsXG4gICAgaG92ZXJlZEV2ZW50LFxuICAgIGhvdmVyZWRFdmVudFBhdGhzLFxuICAgIGhvdmVyZWRFZGdlUGF0aHMsXG4gIH0gPSBldmVudHNfZGF0YTtcbiAgY29uc3QgeyB3YXRlckF1dGhvcml0eUlkLCBtYXAgfSA9IGdsb2JhbF9kYXRhO1xuICBjb25zdCBbZmlsdGVyUG9wdXBPcGVuLCBzZXRGaWx0ZXJQb3B1cE9wZW5dID0gdXNlU3RhdGUodHJ1ZSk7XG4gIGNvbnN0IFtleGNlcHRpb25BbGVydCwgc2V0RXhjZXB0aW9uQWxlcnRdID0gdXNlU3RhdGU8e1xuICAgIG1lc3NhZ2VzOiB7IG1lc3NhZ2U6IGFueTsgZXZlbnRfaWQ6IG51bWJlciB9W107XG4gICAgZXZlbnRfaWRzOiBudW1iZXJbXTtcbiAgfT4oeyBtZXNzYWdlczogW3sgbWVzc2FnZTogJycsIGV2ZW50X2lkOiAwIH1dLCBldmVudF9pZHM6IFtdIH0pO1xuICBjb25zdCBsYXN0VmlzaXRlZCA9IHVzZUxhc3RWaXNpdGVkKCk7XG5cbiAgY29uc3QgdXNlUXVlcnkgPSAoKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBVUkxTZWFyY2hQYXJhbXModXNlTG9jYXRpb24oKS5zZWFyY2gpO1xuICB9O1xuICBjb25zdCBoaXN0b3J5ID0gdXNlSGlzdG9yeSgpO1xuICBjb25zdCBxdWVyeSA9IHVzZVF1ZXJ5KCk7XG4gIGNvbnN0IGdldEtRTFZhbHVlc0Zyb21VUkwgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHF1ZXJ5LmdldCgndmFsdWVzRnJvbUtRTCcpO1xuICB9O1xuICBjb25zdCBnZXRFdmVudElkRnJvbVVSTCA9ICgpID0+IHtcbiAgICByZXR1cm4gcXVlcnkuZ2V0KCdldmVudElkJyk7XG4gIH07XG5cbiAgY29uc3QgbG9hZGVyID0gKCkgPT4ge1xuICAgIGlmIChcbiAgICAgIChpc0ZldGNoaW5nICYmIGl0ZW1zLmxlbmd0aCA9PT0gMCkgfHxcbiAgICAgIGFyZWFzX2RhdGEuaXNGZXRjaGluZyB8fFxuICAgICAgcG9pbnRzX2RhdGEuaXNGZXRjaGluZyB8fFxuICAgICAgZWRnZXNfZGF0YS5pc0ZldGNoaW5nXG4gICAgKSB7XG4gICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9eydsb2FkZXInfT48L2Rpdj47XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVFeHBhbnNpb25Ub2dnbGUgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2goc2lkZU5hdkV4cGFuZGVkKCFzaWRlbmF2RXhwYW5kZWQpKTtcbiAgfTtcblxuICBjb25zdCBhcHBseURlZmF1bHRGaWx0ZXIgPSAoKSA9PiB7XG4gICAgaGlzdG9yeS5wdXNoKFxuICAgICAgYC8ke25hdl9jb250ZXh0X2RhdGEubmF2Q29udGV4dC5uYW1lfS9pbmRleD93YXRlcl9hdXRob3JpdHlfaWQ9JHtnbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eUlkfSZsb2NhbGU9JHtuYXZfY29udGV4dF9kYXRhLm5hdkNvbnRleHQubG9jYWxlfSZ2YWx1ZXNGcm9tS1FMPWAsXG4gICAgKTtcbiAgICBkaXNwYXRjaChzZXRFdmVudEZpbHRlclBhcmFtKCcnKSk7XG4gIH07XG5cbiAgY29uc3QgdmFsaWRhdGVFdmVudCA9IChldmVudDogSUV2ZW50KSA9PiB7XG4gICAgLy8gY2hlY2sgdGhhdCBhbGwgb2JzZXJ2YXRpb25zJyBlZGdlcyBleGlzdHMuIElmIHRoZXkgYXJlIG5vdCBleGlzdHMgaXQncyBpbmRpY2F0ZXMgdGhhdCB0aGVpciBwb2ludHMgYXJlXG4gICAgLy8gbm90IGluIHRoZSBoaWVyYXJjaHkgb3IgZG9lc24ndCBoYXZlIGxhdC9sbmcuXG4gICAgbGV0IGludmFsaWRPYnNlcnZhdGlvbnNNZXNzYWdlczogYW55ID0gW107XG4gICAgZXZlbnQub2JzZXJ2YXRpb25zLmZvckVhY2goKG9ic2VydmF0aW9uOiBhbnkpID0+IHtcbiAgICAgIC8vIGlmIG9ic2VydmF0aW9uIGlzIHJvb3QgKGV4LiBXV1RQKSB0aGVyZSBpcyBubyBlZGdlIHRoYXQgaXRzIGEgc291cmNlLiBzbyB3ZSBjYW4gc2tpcCB0aGlzIGNoZWNrXG4gICAgICBpZiAoIW9ic2VydmF0aW9uLnBvaW50X2lzX3Jvb3QpIHtcbiAgICAgICAgbGV0IGVkZ2UgPSBlZGdlc19kYXRhLml0ZW1zLmZpbmQoXG4gICAgICAgICAgKGVkZ2UpID0+IGVkZ2Uuc291cmNlX3BvaW50X2lkID09PSBvYnNlcnZhdGlvbi5wb2ludF9pZCxcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGVkZ2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGludmFsaWRPYnNlcnZhdGlvbnNNZXNzYWdlcy5wdXNoKFxuICAgICAgICAgICAgYCR7b2JzZXJ2YXRpb24ucG9pbnRfbmFtZX0gKCR7b2JzZXJ2YXRpb24ucG9pbnRfaWR9KSBgLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChpbnZhbGlkT2JzZXJ2YXRpb25zTWVzc2FnZXMubGVuZ3RoICE9PSAwKSB7XG4gICAgICBsZXQgaW5kZXggPSBleGNlcHRpb25BbGVydC5tZXNzYWdlcy5maW5kSW5kZXgoXG4gICAgICAgIChtc2cpID0+IG1zZy5ldmVudF9pZCA9PT0gZXZlbnQuaWQsXG4gICAgICApO1xuXG4gICAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICAgIHNldEV4Y2VwdGlvbkFsZXJ0KHtcbiAgICAgICAgICBtZXNzYWdlczogW1xuICAgICAgICAgICAgLi4uZXhjZXB0aW9uQWxlcnQubWVzc2FnZXMsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG1lc3NhZ2U6IChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e2kxOG4udCgnZXZlbnRzX292ZXJ2aWV3LmV2ZW50X2RhdGFfbWlzc2luZycpfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZXZlbnRfaWQ6IGV2ZW50LmlkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGV2ZW50X2lkczogWy4uLmV4Y2VwdGlvbkFsZXJ0LmV2ZW50X2lkcywgZXZlbnQuaWRdLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBzYW1lIGNoZWNrIGFzIGFib3ZlIGJ1dCB0aGlzIHRpbWUgZm9yIHRoZSBldmVudCBwYXRoLiBJZiBlZGdlIGRvZXNuJ3QgZXhpc3QsIGl0J3MgaW5kaWNhdGVzIHRoYXQgb25lIG9mIHRoZVxuICAgIC8vIHBvaW50cyBkb3duc3RyZWFtIGRvZXNuJ3QgaGF2ZSBsYXQvbG5nLlxuICAgIGxldCBpbnZhbGlkUGF0aE1lc3NhZ2VzOiBhbnkgPSBbXTtcbiAgICBldmVudC5wYXRoLmZvckVhY2goKHBhdGg6IGFueSkgPT4ge1xuICAgICAgbGV0IGVkZ2UgPSBlZGdlc19kYXRhLml0ZW1zLmZpbmQoKGVkZ2UpID0+IGVkZ2UuaWQgPT09IHBhdGguZWRnZV9pZCk7XG4gICAgICBpZiAoZWRnZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYGVkZ2UgJHtwYXRoLmVkZ2VfaWR9IGNhbiBub3QgYmUgZm91bmRgKTtcbiAgICAgICAgbGV0IG9ic2VydmF0aW9uID0gZXZlbnQub2JzZXJ2YXRpb25zLmZpbmQoXG4gICAgICAgICAgKG9ic2VydmF0aW9uKSA9PiBvYnNlcnZhdGlvbi5pZCA9PT0gcGF0aC5sYXN0X29ic2VydmF0aW9uX2lkLFxuICAgICAgICApO1xuICAgICAgICBsZXQgbGFzdE9ic2VydmF0aW9uUG9pbnQgPSAnTm90IGZvdW5kJztcbiAgICAgICAgaWYgKG9ic2VydmF0aW9uKSB7XG4gICAgICAgICAgbGFzdE9ic2VydmF0aW9uUG9pbnQgPSBvYnNlcnZhdGlvbi5wb2ludF9uYW1lO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ2xhc3RPYnNlcnZhdGlvblBvaW50JywgbGFzdE9ic2VydmF0aW9uUG9pbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gaW52YWxpZFBhdGhNZXNzYWdlcy5wdXNoKGAke2xhc3RPYnNlcnZhdGlvblBvaW50fSBgKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChpbnZhbGlkUGF0aE1lc3NhZ2VzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgc2V0RXhjZXB0aW9uQWxlcnQoe1xuICAgICAgICBtZXNzYWdlczogW1xuICAgICAgICAgIC4uLmV4Y2VwdGlvbkFsZXJ0Lm1lc3NhZ2VzLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8cD57aTE4bi50KCdldmVudHNfb3ZlcnZpZXcuZXZlbnRfdmVyaWZ5X2Nvb3JkaW5hdGVzJyl9PC9wPlxuICAgICAgICAgICAgICAgIDxzcGFuPntpbnZhbGlkUGF0aE1lc3NhZ2VzfTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZXZlbnRfaWQ6IGV2ZW50LmlkLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGV2ZW50X2lkczogWy4uLmV4Y2VwdGlvbkFsZXJ0LmV2ZW50X2lkcywgZXZlbnQuaWRdLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRXZlbnRJdGVtQ2xpY2sgPSAoXG4gICAgZXZlbnQ6IElFdmVudCxcbiAgICByZWY6IFJlZk9iamVjdDxIVE1MRWxlbWVudD4gfCBudWxsLFxuICApID0+IHtcbiAgICBpZiAocmVmICE9PSBudWxsKSBvbk1vdXNlTGVhdmVFdmVudCgpO1xuICAgIC8vIGlmIChob3ZlcmVkRXZlbnRQYXRocyAmJiBtYXApIHtcbiAgICAvLyAgICAgaG92ZXJlZEV2ZW50UGF0aHMuZm9yRWFjaCgocGF0aCkgPT4ge1xuICAgIC8vICAgICAgICAgbWFwLnJlbW92ZUxheWVyKHBhdGgpO1xuICAgIC8vICAgICB9KTtcbiAgICAvLyB9XG4gICAgLy8gZGlzcGF0Y2goc2V0SG92ZXJlZEV2ZW50UGF0aHMoW10pKTtcbiAgICAvLyBkaXNwYXRjaChzZXRIb3ZlckV2ZW50SW5kaWNhdG9yKG51bGwpKTtcbiAgICBkaXNwYXRjaChzZXRGb2N1c2VkRXZlbnQoZXZlbnQpKTtcbiAgICBzZXRGaWx0ZXJQb3B1cE9wZW4oZmFsc2UpO1xuICAgIGlmIChnZXRFdmVudElkRnJvbVVSTCgpID09PSBudWxsIHx8IGdldEV2ZW50SWRGcm9tVVJMKCkgPT09ICdudWxsJykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGhpc3RvcnkucHVzaChcbiAgICAgICAgICBgLyR7bmF2X2NvbnRleHRfZGF0YS5uYXZDb250ZXh0Lm5hbWV9L2luZGV4P3dhdGVyX2F1dGhvcml0eV9pZD0ke1xuICAgICAgICAgICAgZ2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlJZFxuICAgICAgICAgIH0mbG9jYWxlPSR7bmF2X2NvbnRleHRfZGF0YS5uYXZDb250ZXh0LmxvY2FsZX0mZXZlbnRJZD0ke1xuICAgICAgICAgICAgZXZlbnQuaWRcbiAgICAgICAgICB9JnZhbHVlc0Zyb21LUUw9JHtcbiAgICAgICAgICAgIGdsb2JhbF9kYXRhLmV2ZW50RmlsdGVyUGFyYW1cbiAgICAgICAgICB9JnZhbGlkRXZlbnQ9JHt2YWxpZGF0ZUV2ZW50KGV2ZW50KX1gLFxuICAgICAgICApO1xuICAgICAgfSwgNTAwKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgb25Nb3VzZUVudGVyRXZlbnQgPSAoZXZlbnQpID0+IHtcbiAgICBpZiAoIWZvY3VzZWRFdmVudCAmJiAhaG92ZXJlZEV2ZW50ICYmIHZhbGlkYXRlRXZlbnQoZXZlbnQpKSB7XG4gICAgICBkaXNwYXRjaChzZXRIb3ZlcmVkRXZlbnQoZXZlbnQpKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgb25Nb3VzZUxlYXZlRXZlbnQgPSAoKSA9PiB7XG4gICAgaWYgKGhvdmVyZWRFdmVudCAmJiBob3ZlcmVkRXZlbnRQYXRocyAmJiBtYXApIHtcbiAgICAgIGhvdmVyZWRFdmVudFBhdGhzLmZvckVhY2goKHBhdGgpID0+IHtcbiAgICAgICAgbWFwLnJlbW92ZUxheWVyKHBhdGgpO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChob3ZlcmVkRWRnZVBhdGhzKSB7XG4gICAgICAgIGhvdmVyZWRFZGdlUGF0aHMuZm9yRWFjaCgocGF0aCkgPT4ge1xuICAgICAgICAgIG1hcC5yZW1vdmVMYXllcihwYXRoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIGxldCBsYXllcnMgPSBtYXAuX2xheWVycztcbiAgICAgIC8vIGZvciAoY29uc3QgcHJvcGVydHkgaW4gbGF5ZXJzKSB7XG4gICAgICAvLyAgIGNvbnN0IGthbmRvX29iamVjdCA9IGxheWVyc1twcm9wZXJ0eV0ua2FuZG9fb2JqZWN0O1xuICAgICAgLy8gICBpZiAoXG4gICAgICAvLyAgICAga2FuZG9fb2JqZWN0Py5pbmNsdWRlcygnRXZlbnRCb2R5JykgfHxcbiAgICAgIC8vICAgICBbXG4gICAgICAvLyAgICAgICAnRXZlbnRUYWlsJyxcbiAgICAgIC8vICAgICAgICdTYW1wbGluZ1BvaW50JyxcbiAgICAgIC8vICAgICAgICdEZWNvcmF0b3InLFxuICAgICAgLy8gICAgICAgJ0hvdmVyZWRFZGdlJyxcbiAgICAgIC8vICAgICAgICdIb3ZlcmVkRWRnZUZyb250JyxcbiAgICAgIC8vICAgICAgICdGb2N1c2VkRWRnZScsXG4gICAgICAvLyAgICAgICAnRm9jdXNlZEVkZ2VGcm9udCcsXG4gICAgICAvLyAgICAgXS5pbmNsdWRlcyhrYW5kb19vYmplY3QpXG4gICAgICAvLyAgICkge1xuICAgICAgLy8gICAgIG1hcC5yZW1vdmVMYXllcihsYXllcnNbcHJvcGVydHldKTtcbiAgICAgIC8vICAgfVxuICAgICAgLy8gfVxuICAgIH1cbiAgICBkaXNwYXRjaChzZXRIb3ZlcmVkRXZlbnQobnVsbCkpO1xuICAgIGRpc3BhdGNoKHNldEhvdmVyZWRFdmVudFBhdGhzKFtdKSk7XG4gICAgZGlzcGF0Y2goc2V0SG92ZXJlZEVkZ2VQYXRocyhbXSkpO1xuICB9O1xuXG4gIGNvbnN0IGlzRGF0YUZldGNoZWRBbmRFdmVudE5vdEZvY3VzZWQgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIChnZXRFdmVudElkRnJvbVVSTCgpID09PSAnbnVsbCcgfHwgZ2V0RXZlbnRJZEZyb21VUkwoKSA9PT0gbnVsbCkgJiZcbiAgICAgIGZvY3VzZWRFdmVudCA9PT0gbnVsbCAmJlxuICAgICAgaXRlbXMubGVuZ3RoICE9PSAwICYmXG4gICAgICAhaXNGZXRjaGluZyAmJlxuICAgICAgIWFyZWFzX2RhdGEuaXNGZXRjaGluZyAmJlxuICAgICAgIXBvaW50c19kYXRhLmlzRmV0Y2hpbmcgJiZcbiAgICAgICFlZGdlc19kYXRhLmlzRmV0Y2hpbmdcbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IHNldEZvY3VzZWRFdmVudElmRm91bmRJblBhcmFtcyA9ICgpID0+IHtcbiAgICBpZiAoXG4gICAgICBnZXRFdmVudElkRnJvbVVSTCgpICE9PSBudWxsICYmXG4gICAgICBnZXRFdmVudElkRnJvbVVSTCgpICE9PSAnbnVsbCcgJiZcbiAgICAgIGZvY3VzZWRFdmVudCA9PT0gbnVsbCAmJlxuICAgICAgaXRlbXMubGVuZ3RoICE9PSAwICYmXG4gICAgICAhaXNGZXRjaGluZyAmJlxuICAgICAgIWFyZWFzX2RhdGEuaXNGZXRjaGluZyAmJlxuICAgICAgIXBvaW50c19kYXRhLmlzRmV0Y2hpbmcgJiZcbiAgICAgICFlZGdlc19kYXRhLmlzRmV0Y2hpbmdcbiAgICApIHtcbiAgICAgIGxldCBldmVudCA9IGV2ZW50c19kYXRhLml0ZW1zLmZpbmQoXG4gICAgICAgIChlOiBJRXZlbnQpID0+IGUuaWQgPT09IHBhcnNlSW50KGdldEV2ZW50SWRGcm9tVVJMKCkhKSxcbiAgICAgICk7XG4gICAgICBpZiAoZXZlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBoYW5kbGVFdmVudEl0ZW1DbGljayhldmVudCwgbnVsbCk7XG4gICAgICAgIH0sIDUwMCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHZhbGlkRXZlbnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBsZXQgZXZlbnQgPSBldmVudHNfZGF0YS5pdGVtcy5maW5kKFxuICAgICAgKGUpID0+IGUuaWQudG9TdHJpbmcoKSA9PT0gZ2V0RXZlbnRJZEZyb21VUkwoKSxcbiAgICApO1xuXG4gICAgaWYgKGV2ZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB2YWxpZGF0ZUV2ZW50KGV2ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9LCBbXG4gICAgZXZlbnRzX2RhdGEuZm9jdXNlZEV2ZW50LFxuICAgIGFyZWFzX2RhdGEuaXNGZXRjaGluZyxcbiAgICBwb2ludHNfZGF0YS5pc0ZldGNoaW5nLFxuICAgIGVkZ2VzX2RhdGEuaXNGZXRjaGluZyxcbiAgICBldmVudHNfZGF0YS5pc0ZldGNoaW5nLFxuICBdKTtcblxuICBjb25zdCB0cmlnZ2VyU29ydCA9IChzb3J0OiBudW1iZXIpID0+IHtcbiAgICBpZiAoXG4gICAgICBnbG9iYWxfZGF0YS5hY3RpdmVGaWx0ZXIgIT09IG51bGwgJiZcbiAgICAgIGlzRGF0YUZldGNoZWRBbmRFdmVudE5vdEZvY3VzZWQoKVxuICAgICkge1xuICAgICAgbGV0IEtRTDtcbiAgICAgIGxldCBVUkw7XG4gICAgICBzd2l0Y2ggKHNvcnQpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIEtRTCA9IGAke2J1aWxkS1FMUXVlcnkoZ2xvYmFsX2RhdGEuYWN0aXZlRmlsdGVyLCAnbmV3ZXN0Jyl9YDtcbiAgICAgICAgICBVUkwgPSBgLyR7XG4gICAgICAgICAgICBuYXZfY29udGV4dF9kYXRhLm5hdkNvbnRleHQubmFtZVxuICAgICAgICAgIH0vaW5kZXg/d2F0ZXJfYXV0aG9yaXR5X2lkPSR7XG4gICAgICAgICAgICBnbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eUlkXG4gICAgICAgICAgfSZldmVudElkPSR7Z2V0RXZlbnRJZEZyb21VUkwoKX0mbG9jYWxlPSR7XG4gICAgICAgICAgICBuYXZfY29udGV4dF9kYXRhLm5hdkNvbnRleHQubG9jYWxlXG4gICAgICAgICAgfSZ2YWx1ZXNGcm9tS1FMPSR7S1FMfSZ2YWxpZEV2ZW50PSR7dmFsaWRFdmVudH1gO1xuICAgICAgICAgIGhpc3RvcnkucHVzaChVUkwpO1xuICAgICAgICAgIGRpc3BhdGNoKHNldEV2ZW50RmlsdGVyUGFyYW0oS1FMKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBLUUwgPSBgJHtidWlsZEtRTFF1ZXJ5KGdsb2JhbF9kYXRhLmFjdGl2ZUZpbHRlciwgJ29sZGVzdCcpfWA7XG4gICAgICAgICAgVVJMID0gYC8ke1xuICAgICAgICAgICAgbmF2X2NvbnRleHRfZGF0YS5uYXZDb250ZXh0Lm5hbWVcbiAgICAgICAgICB9L2luZGV4P3dhdGVyX2F1dGhvcml0eV9pZD0ke1xuICAgICAgICAgICAgZ2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlJZFxuICAgICAgICAgIH0mZXZlbnRJZD0ke2dldEV2ZW50SWRGcm9tVVJMKCl9JmxvY2FsZT0ke1xuICAgICAgICAgICAgbmF2X2NvbnRleHRfZGF0YS5uYXZDb250ZXh0LmxvY2FsZVxuICAgICAgICAgIH0mdmFsdWVzRnJvbUtRTD0ke0tRTH0mdmFsaWRFdmVudD0ke3ZhbGlkRXZlbnR9YDtcbiAgICAgICAgICBoaXN0b3J5LnB1c2goVVJMKTtcbiAgICAgICAgICBkaXNwYXRjaChzZXRFdmVudEZpbHRlclBhcmFtKEtRTCkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgS1FMID0gYCR7YnVpbGRLUUxRdWVyeShnbG9iYWxfZGF0YS5hY3RpdmVGaWx0ZXIsICdzZXZlcml0eScpfWA7XG4gICAgICAgICAgVVJMID0gYC8ke1xuICAgICAgICAgICAgbmF2X2NvbnRleHRfZGF0YS5uYXZDb250ZXh0Lm5hbWVcbiAgICAgICAgICB9L2luZGV4P3dhdGVyX2F1dGhvcml0eV9pZD0ke1xuICAgICAgICAgICAgZ2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlJZFxuICAgICAgICAgIH0mZXZlbnRJZD0ke2dldEV2ZW50SWRGcm9tVVJMKCl9JmxvY2FsZT0ke1xuICAgICAgICAgICAgbmF2X2NvbnRleHRfZGF0YS5uYXZDb250ZXh0LmxvY2FsZVxuICAgICAgICAgIH0mdmFsdWVzRnJvbUtRTD0ke0tRTH0mdmFsaWRFdmVudD0ke3ZhbGlkRXZlbnR9YDtcbiAgICAgICAgICBoaXN0b3J5LnB1c2goVVJMKTtcbiAgICAgICAgICBkaXNwYXRjaChzZXRFdmVudEZpbHRlclBhcmFtKEtRTCkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgS1FMID0gYCR7YnVpbGRLUUxRdWVyeShcbiAgICAgICAgICAgIGdsb2JhbF9kYXRhLmFjdGl2ZUZpbHRlcixcbiAgICAgICAgICAgICdvYnNlcnZlZF91cHN0cmVhbScsXG4gICAgICAgICAgKX1gO1xuICAgICAgICAgIFVSTCA9IGAvJHtcbiAgICAgICAgICAgIG5hdl9jb250ZXh0X2RhdGEubmF2Q29udGV4dC5uYW1lXG4gICAgICAgICAgfS9pbmRleD93YXRlcl9hdXRob3JpdHlfaWQ9JHtcbiAgICAgICAgICAgIGdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWRcbiAgICAgICAgICB9JmV2ZW50SWQ9JHtnZXRFdmVudElkRnJvbVVSTCgpfSZsb2NhbGU9JHtcbiAgICAgICAgICAgIG5hdl9jb250ZXh0X2RhdGEubmF2Q29udGV4dC5sb2NhbGVcbiAgICAgICAgICB9JnZhbHVlc0Zyb21LUUw9JHtLUUx9JnZhbGlkRXZlbnQ9JHt2YWxpZEV2ZW50fWA7XG4gICAgICAgICAgaGlzdG9yeS5wdXNoKFVSTCk7XG4gICAgICAgICAgZGlzcGF0Y2goc2V0RXZlbnRGaWx0ZXJQYXJhbShLUUwpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY2FsY0V2ZW50c1JlYWxBbW91bnQgPSAoKSA9PiB7XG4gICAgbGV0IGV2ZW50c0NvdW50OiBudW1iZXIgfCBzdHJpbmcgPSAwO1xuICAgIGV2ZW50c0NvdW50ID0gZXZlbnRzX2RhdGEuZXZlbnRzX2NvdW50O1xuICAgIGlmIChldmVudHNDb3VudCA+IDUwKVxuICAgICAgZXZlbnRzQ291bnQgPSBgJHtpMThuLnQoJ2V2ZW50c19vdmVydmlldy5tb3JlX3RoYW4nKX0gNTBgO1xuXG4gICAgcmV0dXJuIGV2ZW50c0NvdW50O1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkRXZlbnQpIHtcbiAgICAgIGRpc3BhdGNoKFxuICAgICAgICBmZXRjaEV2ZW50cyhcbiAgICAgICAgICB3YXRlckF1dGhvcml0eUlkLFxuICAgICAgICAgIGdldEtRTFZhbHVlc0Zyb21VUkwoKSB8fCAnREVGQVVMVCcsXG4gICAgICAgICAgZ2V0RXZlbnRJZEZyb21VUkwoKT8udG9TdHJpbmcoKSB8fCAnbnVsbCcsXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cbiAgfSwgW1xuICAgIGdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWQsXG4gICAgZ2xvYmFsX2RhdGEuZXZlbnRGaWx0ZXJQYXJhbSxcbiAgICBmb2N1c2VkRXZlbnQsXG4gIF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKFxuICAgICAgIWV2ZW50c19kYXRhLmlzRmV0Y2hpbmcgJiZcbiAgICAgICFlZGdlc19kYXRhLmlzRmV0Y2hpbmcgJiZcbiAgICAgICFwb2ludHNfZGF0YS5pc0ZldGNoaW5nICYmXG4gICAgICAhYXJlYXNfZGF0YS5pc0ZldGNoaW5nICYmXG4gICAgICBhcmVhc19kYXRhLm5ld0FyZWFzLmxlbmd0aCAhPT0gMCAmJlxuICAgICAgcG9pbnRzX2RhdGEuaXRlbXMubGVuZ3RoICE9PSAwICYmXG4gICAgICBmaWx0ZXJQb3B1cE9wZW5cbiAgICApIHtcbiAgICAgIHNldEZvY3VzZWRFdmVudElmRm91bmRJblBhcmFtcygpO1xuICAgIH1cbiAgfSwgW1xuICAgIGV2ZW50c19kYXRhLmlzRmV0Y2hpbmcsXG4gICAgZWRnZXNfZGF0YS5pc0ZldGNoaW5nLFxuICAgIHBvaW50c19kYXRhLmlzRmV0Y2hpbmcsXG4gICAgcG9pbnRzX2RhdGEuaXRlbXMubGVuZ3RoLFxuICAgIGFyZWFzX2RhdGEuaXRlbXMubGVuZ3RoLFxuICAgIGFyZWFzX2RhdGEuaXNGZXRjaGluZyxcbiAgICBnbG9iYWxfZGF0YS5ldmVudEZpbHRlclBhcmFtLFxuICAgIGZpbHRlclBvcHVwT3BlbixcbiAgXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17J3NpZGVuYXYgJyArIChzaWRlbmF2RXhwYW5kZWQgPyAnJyA6ICdzaWRlbmF2LS1jb2xsYXBzZWQnKX0+XG4gICAgICB7Z2xvYmFsX2RhdGEubW9yZUluZm8gIT09IHVuZGVmaW5lZCAmJiBnbG9iYWxfZGF0YS5tb3JlSW5mby5hY3RpdmUgJiYgKFxuICAgICAgICA8TW9yZUluZm8gLz5cbiAgICAgICl9XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtcbiAgICAgICAgICAnZXZlbnQtaW5mbyAnICtcbiAgICAgICAgICAoIWhvdmVyZWRFdmVudCAmJiBmb2N1c2VkRXZlbnQgIT09IG51bGxcbiAgICAgICAgICAgID8gJydcbiAgICAgICAgICAgIDogJ2V2ZW50LWluZm8tLWNvbGxhcHNlZCcpXG4gICAgICAgIH1cbiAgICAgID5cbiAgICAgICAgeyFob3ZlcmVkRXZlbnQgJiYgZm9jdXNlZEV2ZW50ICE9PSBudWxsICYmIChcbiAgICAgICAgICA8RXZlbnRJbmZvXG4gICAgICAgICAgICBldmVudD17Zm9jdXNlZEV2ZW50fVxuICAgICAgICAgICAgcmVPcGVuRmlsdGVyPXsoKSA9PiBzZXRGaWx0ZXJQb3B1cE9wZW4odHJ1ZSl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9XCJ0b2dnbGUtZXhwYW5zaW9uLWJ1dHRvblwiXG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICBoYW5kbGVFeHBhbnNpb25Ub2dnbGUoKTtcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuYXYtZXhwYW5zaW9uLWljb25cIj5cbiAgICAgICAgICA8Rm9udEF3ZXNvbWVJY29uXG4gICAgICAgICAgICBpY29uPXtzaWRlbmF2RXhwYW5kZWQgPyBmYUNhcmV0TGVmdCA6IGZhQ2FyZXRSaWdodH1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9eyd0b2dnbGUtZXhwYW5zaW9uLWJ1dHRvbi1tb2JpbGUnfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgaGFuZGxlRXhwYW5zaW9uVG9nZ2xlKCk7XG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxhIGhyZWY9XCIjXCI+XG4gICAgICAgICAgPEZvbnRBd2Vzb21lSWNvbiBpY29uPXtmYUFycm93TGVmdH0gLz5cbiAgICAgICAgICA8c3Bhbj4ge2kxOG4udCgnZXZlbnRzX292ZXJ2aWV3LmJhY2tfdG9fZGV0YWlscycpfTwvc3Bhbj5cbiAgICAgICAgPC9hPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImV2ZW50cy1oZWFkZXJcIj5cbiAgICAgICAge2xhc3RWaXNpdGVkICYmICFpc0ZldGNoaW5nICYmIChcbiAgICAgICAgICA8TGluayBjbGFzc05hbWU9XCJiYWNrXCIgdG89e2xhc3RWaXNpdGVkfT5cbiAgICAgICAgICAgIHsnICd9XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgIHNyYz17TGVmdEFycm93SWNvbn1cbiAgICAgICAgICAgICAgaGVpZ2h0PVwiMTBweFwiXG4gICAgICAgICAgICAgIHdpZHRoPVwiMTJweFwiXG4gICAgICAgICAgICAgIGFsdD1cImJhY2tcIlxuICAgICAgICAgICAgLz57JyAnfVxuICAgICAgICAgICAge2kxOG4udCgnYXJlYV9zY3JlZW4uYmFjaycpfVxuICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgKX1cbiAgICAgICAgPGg0PlxuICAgICAgICAgIHtpMThuLnQoJ2V2ZW50c19vdmVydmlldy5ldmVudHNfbGlzdCcpfVxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17J2V2ZW50cy1oZWFkZXJfX2V2ZW50c19hbW91bnQnfT5cbiAgICAgICAgICAgICh7Y2FsY0V2ZW50c1JlYWxBbW91bnQoKX0pXG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2g0PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpbHRlcmluZ1wiPlxuICAgICAgICAgIHtldmVudHNfZGF0YS5pdGVtcy5sZW5ndGggIT09IDAgJiYgKFxuICAgICAgICAgICAgPFNvcnRcbiAgICAgICAgICAgICAgdHJpZ2dlclNvcnQ9e3RyaWdnZXJTb3J0fVxuICAgICAgICAgICAgICBldmVudHM9e2V2ZW50c19kYXRhLml0ZW1zfVxuICAgICAgICAgICAgICBldmVudHNGZXRjaGluZz17ZXZlbnRzX2RhdGEuaXNGZXRjaGluZ31cbiAgICAgICAgICAgICAgYWN0aXZlRmlsdGVyPXtnbG9iYWxfZGF0YS5hY3RpdmVGaWx0ZXJ9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJpY29uc1wiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmaWx0ZXJcIlxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRGaWx0ZXJQb3B1cE9wZW4oIWZpbHRlclBvcHVwT3Blbil9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxGaWx0ZXJJY29uIHdpZHRoPVwiMTdweFwiIGhlaWdodD1cIjE3cHhcIiBmaWxsPVwiI2Y2MDA0ZlwiIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAge3BvaW50c19kYXRhLml0ZW1zLmxlbmd0aCAhPT0gMCAmJiAhZm9jdXNlZEV2ZW50ICYmIChcbiAgICAgICAgICA8RmlsdGVyQ29udGFpbmVyXG4gICAgICAgICAgICBmaWx0ZXJQb3B1cE9wZW49e2ZpbHRlclBvcHVwT3Blbn1cbiAgICAgICAgICAgIGZldGNoVHlwZT17J0V2ZW50RmlsdGVyJ31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImV2ZW50cy1jb250YWluZXIgc2Nyb2xsYmFyIFwiPlxuICAgICAgICB7bG9hZGVyKCl9XG4gICAgICAgIHshaXNGZXRjaGluZyAmJlxuICAgICAgICAgIGl0ZW1zLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAgICFwb2ludHNfZGF0YS5pc0ZldGNoaW5nICYmXG4gICAgICAgICAgIWVkZ2VzX2RhdGEuaXNGZXRjaGluZyAmJiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2V2ZW50c19fYmxhbmtzbGF0ZSd9PlxuICAgICAgICAgICAgICA8aW1nIHNyYz17Tm9FdmVudHNJbWFnZX0gYWx0PVwiTm9FdmVudHNJY29uXCIgLz5cbiAgICAgICAgICAgICAgPGgyPntpMThuLnQoJ2V2ZW50c19vdmVydmlldy5maWx0ZXIuYmxhbmtzbGF0ZS5oZWFkZXInKX08L2gyPlxuICAgICAgICAgICAgICA8cD57aTE4bi50KCdldmVudHNfb3ZlcnZpZXcuZmlsdGVyLmJsYW5rc2xhdGUuYm9keScpfTwvcD5cbiAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9eydhcHBseV9kZWZhdWx0X2ZpbHRlcl9idXR0b24nfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGFwcGx5RGVmYXVsdEZpbHRlcigpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2kxOG4udCgnZXZlbnRzX292ZXJ2aWV3LmZpbHRlci5ibGFua3NsYXRlLmJ1dHRvbicpfVxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApfVxuICAgICAgICB7aXRlbXMubGVuZ3RoICE9PSAwICYmXG4gICAgICAgICAgIWFyZWFzX2RhdGEuaXNGZXRjaGluZyAmJlxuICAgICAgICAgICFwb2ludHNfZGF0YS5pc0ZldGNoaW5nICYmXG4gICAgICAgICAgIWVkZ2VzX2RhdGEuaXNGZXRjaGluZyAmJlxuICAgICAgICAgICFmb2N1c2VkRXZlbnQgJiYgKFxuICAgICAgICAgICAgPHVsIGNsYXNzTmFtZT1cImV2ZW50cyBcIj5cbiAgICAgICAgICAgICAge2l0ZW1zLm1hcCgoZXZlbnQ6IGFueSkgPT4gKFxuICAgICAgICAgICAgICAgIDxsaSBrZXk9e2V2ZW50LmlkfSBjbGFzc05hbWU9XCJldmVudFwiIGRhdGEtZXZlbnQtaWQ9e2V2ZW50LmlkfT5cbiAgICAgICAgICAgICAgICAgIDxTZXZlcmVFdmVudFxuICAgICAgICAgICAgICAgICAgICBldmVudD17ZXZlbnR9XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZUNsaWNrPXtoYW5kbGVFdmVudEl0ZW1DbGlja31cbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyRXZlbnQ9e29uTW91c2VFbnRlckV2ZW50fVxuICAgICAgICAgICAgICAgICAgICBvbk1vdXNlTGVhdmVFdmVudD17b25Nb3VzZUxlYXZlRXZlbnR9XG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlRXZlbnQ9e3ZhbGlkYXRlRXZlbnR9XG4gICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkFsZXJ0PXtleGNlcHRpb25BbGVydH1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmNvbnN0IGNvbm5lY3RvciA9IGNvbm5lY3QobWFwU3RhdGVUb1Byb3BzKTtcbmV4cG9ydCBkZWZhdWx0IGNvbm5lY3RvcihFdmVudHNMaXN0KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUNBLElBQUFBLGtCQUFBLEdBQUFDLE9BQUE7QUFLQSxJQUFBQyxpQkFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsTUFBQSxHQUFBQyx1QkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksV0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssZUFBQSxHQUFBTCxPQUFBO0FBQWlFLElBQUFNLFVBQUEsR0FBQUMsc0JBQUEsQ0FBQVAsT0FBQTtBQUFBLElBQUFRLE9BQUEsR0FBQVIsT0FBQTtBQUFBLElBQUFTLFVBQUEsR0FBQUYsc0JBQUEsQ0FBQVAsT0FBQTtBQUlqRSxJQUFBVSxZQUFBLEdBQUFWLE9BQUE7QUFFQSxJQUFBVyxXQUFBLEdBQUFYLE9BQUE7QUFDQSxJQUFBWSxRQUFBLEdBQUFaLE9BQUE7QUFR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