@kando-env/kando-ui 1.2.383 → 1.2.384

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 (584) hide show
  1. package/lib/Router.js +73 -36
  2. package/lib/Widgets/EventsCarousel/EventsCarousel.js +35 -25
  3. package/lib/Widgets/EventsRow/EventsRow.js +39 -27
  4. package/lib/Widgets/Map/GraphUtils.js +3 -3
  5. package/lib/Widgets/Map/Map.js +122 -86
  6. package/lib/Widgets/Map/MapUtils.js +95 -81
  7. package/lib/Widgets/Map/areas/AreaPolygon.js +77 -53
  8. package/lib/Widgets/Map/areas/AreaPolygons.js +24 -23
  9. package/lib/Widgets/Map/areas/AreaUtils.js +46 -47
  10. package/lib/Widgets/Map/areas/Patterns.js +4 -4
  11. package/lib/Widgets/Map/edges/Edge.js +37 -33
  12. package/lib/Widgets/Map/edges/Edges.js +26 -21
  13. package/lib/Widgets/Map/edges/arrows/Arrows.js +44 -23
  14. package/lib/Widgets/Map/events/Event.js +17 -17
  15. package/lib/Widgets/Map/events/EventIndicator.js +60 -65
  16. package/lib/Widgets/Map/events/EventPath.js +23 -25
  17. package/lib/Widgets/Map/events/EventUtils.js +80 -60
  18. package/lib/Widgets/Map/events/NetworkForSpecificEvent.js +18 -17
  19. package/lib/Widgets/Map/events/PointOfEvent.js +34 -29
  20. package/lib/Widgets/Map/events/PointsForSpecificEvent.js +37 -30
  21. package/lib/Widgets/Map/events/Snail.js +20 -19
  22. package/lib/Widgets/Map/graphDNDArea/GraphDNDArea.js +86 -93
  23. package/lib/Widgets/Map/map/FloatingGraph.js +18 -22
  24. package/lib/Widgets/Map/map/GraphDateButton.js +17 -25
  25. package/lib/Widgets/Map/matchGraph/MatchGraph.js +12 -13
  26. package/lib/Widgets/Map/matchGraph/createFloatingGraph.js +15 -16
  27. package/lib/Widgets/Map/points/PointIcon.js +15 -22
  28. package/lib/Widgets/Map/points/PointMarker.js +87 -71
  29. package/lib/Widgets/Map/points/PointMarkers.js +66 -45
  30. package/lib/Widgets/Map/points/PointUtils.js +83 -145
  31. package/lib/Widgets/MostPolluting/Areas/AreaBox/AreaBox.js +47 -30
  32. package/lib/Widgets/MostPolluting/Areas/AreaBox/Map/Map.js +10 -11
  33. package/lib/Widgets/MostPolluting/Areas/AreaBox/PieChart/PieChart.js +12 -11
  34. package/lib/Widgets/MostPolluting/Areas/AreaBox/styles.js +3 -3
  35. package/lib/Widgets/MostPolluting/Areas/Areas.js +60 -31
  36. package/lib/Widgets/MostPolluting/Areas/areas.mock.js +3 -3
  37. package/lib/Widgets/MostPolluting/Areas/styles.js +3 -3
  38. package/lib/Widgets/MostPolluting/EmptyState/EmptyState.js +8 -11
  39. package/lib/Widgets/MostPolluting/Factories/Factories.js +70 -39
  40. package/lib/Widgets/MostPolluting/Factories/FactoryBox/FactoryBox.js +18 -15
  41. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PieChart/PieChart.js +8 -8
  42. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PollutionScore.js +10 -12
  43. package/lib/Widgets/MostPolluting/Factories/FactoryBox/styles.js +3 -3
  44. package/lib/Widgets/MostPolluting/Factories/factories.mock.js +2 -2
  45. package/lib/Widgets/MostPolluting/Factories/styles.js +3 -3
  46. package/lib/Widgets/MostPolluting/MostPolluting.js +35 -25
  47. package/lib/Widgets/MostPolluting/MostPolluting.stories.js +22 -18
  48. package/lib/Widgets/MostPolluting/ShowMore/ShowMore.js +4 -6
  49. package/lib/Widgets/MostPolluting/ShowMore/styles.js +4 -6
  50. package/lib/Widgets/MostPolluting/assets/index.js +10 -10
  51. package/lib/Widgets/MostPolluting/components/ChangePercent.js +13 -19
  52. package/lib/Widgets/MostPolluting/components/ChangePercent.test.js +30 -35
  53. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.js +35 -45
  54. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.test.js +35 -39
  55. package/lib/Widgets/MostPolluting/components/PotentialImpact.js +27 -28
  56. package/lib/Widgets/MostPolluting/components/PotentialImpact.test.js +50 -54
  57. package/lib/Widgets/MostPolluting/styles.js +3 -3
  58. package/lib/Widgets/PotentialImpactSummary/Back/Back.js +5 -7
  59. package/lib/Widgets/PotentialImpactSummary/Icon.js +6 -8
  60. package/lib/Widgets/PotentialImpactSummary/index.js +27 -19
  61. package/lib/Widgets/PotentialImpactSummary/index.test.js +52 -47
  62. package/lib/Widgets/PotentialImpactSummary/styles.js +7 -7
  63. package/lib/Widgets/QualitySummary/PieChart/LegendMenu/LegendMenu.js +7 -9
  64. package/lib/Widgets/QualitySummary/PieChart/PieChart.js +17 -22
  65. package/lib/Widgets/QualitySummary/PieChart/PieChart.test.js +32 -35
  66. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.js +24 -26
  67. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.test.js +37 -35
  68. package/lib/Widgets/QualitySummary/QualitySummary.js +13 -9
  69. package/lib/Widgets/QualitySummary/qualitySummary.mock.js +4 -4
  70. package/lib/Widgets/QualitySummary/styles.js +15 -23
  71. package/lib/Widgets/UtilityInformation/MapModal/MapModal.js +13 -12
  72. package/lib/Widgets/UtilityInformation/PopupWithMap/Map/Map.js +26 -27
  73. package/lib/Widgets/UtilityInformation/PopupWithMap/PopupWithMap.js +24 -29
  74. package/lib/Widgets/UtilityInformation/UtilityInformation.js +37 -23
  75. package/lib/Widgets/UtilityInformation/styles.js +25 -34
  76. package/lib/Widgets/UtilityInformation/utilityInformation.mock.js +3 -3
  77. package/lib/assets/icons/TopNavbar/index.js +6 -6
  78. package/lib/assets/icons/TrendSvg.js +6 -6
  79. package/lib/assets/icons/index.js +15 -15
  80. package/lib/assets/icons/kandoStepper/index.js +5 -5
  81. package/lib/assets/icons/siteTypes/index.js +1 -1
  82. package/lib/components/ApplyButton/ApplyButton.js +9 -9
  83. package/lib/components/Backdrop/Backdrop.js +4 -6
  84. package/lib/components/ContentLoader/ContentLoader.js +9 -11
  85. package/lib/components/ContentLoader/index.js +1 -1
  86. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.js +12 -13
  87. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.stories.js +5 -3
  88. package/lib/components/CustomInputs/DoubleTabs/styles.js +12 -20
  89. package/lib/components/CustomInputs/PasswordInput/PasswordInput.js +20 -13
  90. package/lib/components/CustomInputs/PrimaryButton/PrimaryButton.js +4 -6
  91. package/lib/components/CustomInputs/Search/Search.js +63 -42
  92. package/lib/components/CustomInputs/Select/Select.js +58 -45
  93. package/lib/components/CustomInputs/Select/Select.stories.js +6 -4
  94. package/lib/components/DamageType/DamageType.js +57 -35
  95. package/lib/components/DataLoaderError/DataLoaderError.js +6 -8
  96. package/lib/components/DischargeHeatmap/DischargeHeatmap.js +10 -9
  97. package/lib/components/DischargeHeatmap/DischargeHeatmap.test.js +71 -70
  98. package/lib/components/DischargeHeatmap/DischargeHeatmapContainer.js +37 -27
  99. package/lib/components/DischargeHeatmap/HighchartsOptions.js +12 -10
  100. package/lib/components/DischargeHeatmap/mocks/handlers.js +3 -3
  101. package/lib/components/DischargeHeatmap/popupText.js +10 -10
  102. package/lib/components/DischargeHeatmap/titles.js +3 -3
  103. package/lib/components/ErrorBoundary.js +41 -27
  104. package/lib/components/Events/Events.js +58 -41
  105. package/lib/components/Graph/Graph.js +96 -77
  106. package/lib/components/Header/Breadcrumbs/Breadcrumbs.js +21 -17
  107. package/lib/components/Header/DoubleTabs/DoubleTabs.js +33 -25
  108. package/lib/components/Header/DoubleTabs/DoubleTabs.stories.js +5 -3
  109. package/lib/components/Header/DoubleTabs/styles.js +4 -4
  110. package/lib/components/Header/Header.js +2 -2
  111. package/lib/components/Header/Header.stories.js +5 -3
  112. package/lib/components/Header/InfoBar/Breadcrumbs/Breadcrumbs.js +34 -22
  113. package/lib/components/Header/InfoBar/InfoBar.js +103 -74
  114. package/lib/components/Header/InfoBar/Search/Control.js +9 -9
  115. package/lib/components/Header/InfoBar/Search/GroupLabel.js +5 -7
  116. package/lib/components/Header/InfoBar/Search/Search.js +21 -16
  117. package/lib/components/Header/InfoBar/Search/SearchContainer.js +33 -21
  118. package/lib/components/Header/InfoBar/Search/searchStyle.js +49 -41
  119. package/lib/components/Header/InfoBar/TimeFilter.js +14 -11
  120. package/lib/components/Header/KandoNavbar/KandoNavbar.js +89 -64
  121. package/lib/components/Header/Slideshow/Slideshow.js +90 -68
  122. package/lib/components/Header/Toolbar/ClientImg/ClientImg.js +4 -6
  123. package/lib/components/Header/Toolbar/CustomerMenu/CustomerMenu.js +23 -21
  124. package/lib/components/Header/Toolbar/MenuCreator/MenuCreator.js +18 -18
  125. package/lib/components/Header/Toolbar/SearchDropdown/SearchDropdown.js +43 -37
  126. package/lib/components/Header/Toolbar/Toolbar.js +74 -55
  127. package/lib/components/InfoBar/InfoBar.js +23 -10
  128. package/lib/components/InfoBar/InfoBar.stories.js +5 -3
  129. package/lib/components/KandoModal/KandoModal.js +41 -27
  130. package/lib/components/Link.js +7 -8
  131. package/lib/components/Links/CustomRedirect/CustomRedirect.js +8 -9
  132. package/lib/components/Links/StyledLink/StyledLink.js +12 -12
  133. package/lib/components/Links/StyledNavLink/StyledNavLink.js +10 -11
  134. package/lib/components/LiveEvents/CarouselSlide.js +7 -9
  135. package/lib/components/LiveEvents/LiveEvents.js +3 -5
  136. package/lib/components/LoaderByPercent/LoaderByPercent.js +29 -37
  137. package/lib/components/Map/Map.js +23 -20
  138. package/lib/components/Modal/Modal.js +9 -9
  139. package/lib/components/NarrowHeader.js +31 -17
  140. package/lib/components/PointInfo/PointInfo.js +17 -19
  141. package/lib/components/PopupModal/PopupModal.js +16 -12
  142. package/lib/components/PopupModal/PopupModal.stories.js +19 -15
  143. package/lib/components/Sector/Sector.js +6 -8
  144. package/lib/components/Sector/Sector.test.js +20 -19
  145. package/lib/components/Sector/sectorIcons.js +2 -2
  146. package/lib/components/SevereEvent/Eta/Eta.js +52 -49
  147. package/lib/components/SevereEvent/Eta/styles.js +6 -10
  148. package/lib/components/SevereEvent/SevereEvent.js +37 -30
  149. package/lib/components/Spinner/Spinner.js +8 -8
  150. package/lib/components/Spinner/Spinner.stories.js +6 -4
  151. package/lib/components/Spinner/styles.js +14 -22
  152. package/lib/components/Tabs/Tabs.js +29 -21
  153. package/lib/components/Tabs/Tabs.stories.js +6 -4
  154. package/lib/components/Tabs/assets/index.js +5 -5
  155. package/lib/components/TimeRangeSelector/KandoRangePicker/ComparisonSelect.js +15 -12
  156. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePicker.js +51 -40
  157. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePickerContainer.js +31 -19
  158. package/lib/components/TimeRangeSelector/TimeRangeHelper.js +25 -20
  159. package/lib/components/TimeRangeSelector/TimeRangeItem/TimeRangeItem.js +13 -13
  160. package/lib/components/TimeRangeSelector/TimeRangeList.js +24 -23
  161. package/lib/components/TimeRangeSelector/TimeRangeOptions.js +25 -17
  162. package/lib/components/TimeRangeSelector/TimeRangeSelector.js +32 -31
  163. package/lib/components/TimeRangeSelector/TimeRangeSelector.stories.js +6 -4
  164. package/lib/components/TimeRangeSelector/constants.js +3 -3
  165. package/lib/components/Toggle/Toggle.js +17 -12
  166. package/lib/components/TrendGraph/TrendGraph.js +39 -23
  167. package/lib/components/TrendGraphNVL/TrendGraphNVL.js +33 -27
  168. package/lib/development-environment/index.js +12 -8
  169. package/lib/development-environment/mock/browser.js +4 -2
  170. package/lib/development-environment/mock/get.js +10 -8
  171. package/lib/development-environment/mock/handlers.js +2 -2
  172. package/lib/development-environment/mock/mockBus.js +4 -4
  173. package/lib/development-environment/mock/mockObjects/area-trends-graph.js +2 -2
  174. package/lib/development-environment/mock/mockObjects/areaInformation.js +2 -2
  175. package/lib/development-environment/mock/mockObjects/areaQualitySummary.js +2 -2
  176. package/lib/development-environment/mock/mockObjects/areaSitesData.js +2 -2
  177. package/lib/development-environment/mock/mockObjects/areasJson.js +2 -2
  178. package/lib/development-environment/mock/mockObjects/controlRoomNetworkEdges.js +2 -2
  179. package/lib/development-environment/mock/mockObjects/covidView-areasData-24.js +2 -2
  180. package/lib/development-environment/mock/mockObjects/data-menuData.js +2 -2
  181. package/lib/development-environment/mock/mockObjects/data-search.js +2 -2
  182. package/lib/development-environment/mock/mockObjects/discharge_effluent_quality.js +2 -2
  183. package/lib/development-environment/mock/mockObjects/discharge_pattern_overtime.js +2 -2
  184. package/lib/development-environment/mock/mockObjects/eventFiltersJson.js +2 -2
  185. package/lib/development-environment/mock/mockObjects/eventsJson.js +2 -2
  186. package/lib/development-environment/mock/mockObjects/metascore.js +2 -2
  187. package/lib/development-environment/mock/mockObjects/permissionsJson.js +2 -2
  188. package/lib/development-environment/mock/mockObjects/pointsJson.js +2 -2
  189. package/lib/development-environment/mock/mockObjects/site-info.js +2 -2
  190. package/lib/development-environment/mock/mockObjects/trend-graph-component-data-907.js +2 -2
  191. package/lib/development-environment/togly/ToglyDashboard.js +22 -13
  192. package/lib/development-environment/togly/ToglyItem.js +31 -36
  193. package/lib/development-environment/togly/init.js +2 -2
  194. package/lib/development-environment/togly/macro.js +10 -14
  195. package/lib/development-environment/togly/useDoubleKeyDown.js +9 -7
  196. package/lib/development-environment/togly/useLocalStorage.js +18 -13
  197. package/lib/hooks/useApi.js +55 -19
  198. package/lib/hooks/useApiWithDashboardQuery.js +49 -30
  199. package/lib/hooks/useClickOutside.js +3 -3
  200. package/lib/hooks/useInitializeHeaders.js +5 -5
  201. package/lib/hooks/useKandoFetch.js +29 -16
  202. package/lib/hooks/useMap.js +34 -22
  203. package/lib/hooks/useNavContext.js +26 -22
  204. package/lib/hooks/useRemoveExistingLayers.js +6 -6
  205. package/lib/hooks/useUpdateEventBodyTail.js +17 -13
  206. package/lib/hooks/useUserTimeZone.js +30 -33
  207. package/lib/hooks/useUserTimeZone.test.js +22 -19
  208. package/lib/hooks/useWindowSize.js +14 -7
  209. package/lib/index.js +12 -11
  210. package/lib/macros/getVersion.js +3 -3
  211. package/lib/pages/AreaPage/AreaPage.js +67 -34
  212. package/lib/pages/AreaPage/Dashboard/AreaMapContainer/AreaMapContainer.js +17 -16
  213. package/lib/pages/AreaPage/Dashboard/Dashboard.js +31 -30
  214. package/lib/pages/AreaPage/Dashboard/LineChart/LineChart.js +25 -17
  215. package/lib/pages/AreaPage/Dashboard/LineChart/options/options.js +4 -4
  216. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/PieChart/PieChart.js +8 -8
  217. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/SiteBox.js +11 -11
  218. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/styles.js +3 -3
  219. package/lib/pages/AreaPage/Dashboard/Sites/factories.mock.js +2 -2
  220. package/lib/pages/AreaPage/Dashboard/Sites/styles.js +4 -4
  221. package/lib/pages/AssessmentPage/AssessmentPage.js +46 -40
  222. package/lib/pages/CannyWidget/Feedback.js +13 -13
  223. package/lib/pages/CovidPage/CovidPage.js +13 -8
  224. package/lib/pages/CovidPage/components/Body.js +27 -25
  225. package/lib/pages/CovidPage/components/Map.js +39 -29
  226. package/lib/pages/CovidPage/components/Sidebar.js +15 -16
  227. package/lib/pages/CovidPage/components/Summary.js +27 -20
  228. package/lib/pages/CovidPage/components/TrendGraphNVL/TrendGraphNVL.js +33 -27
  229. package/lib/pages/CovidPage/components/TrendPopupContent/TrendPopupContent.js +73 -51
  230. package/lib/pages/CovidPage/components/areas/Area.js +40 -29
  231. package/lib/pages/CovidPage/components/areas/AreaPolygonWBE.js +46 -55
  232. package/lib/pages/CovidPage/components/areas/AreaPolygonsWBE.js +35 -32
  233. package/lib/pages/CovidPage/components/areas/AreasList.js +46 -34
  234. package/lib/pages/CovidPage/components/areas/Sort.js +14 -11
  235. package/lib/pages/CovidPage/components/nvlStatusHelper.js +11 -11
  236. package/lib/pages/DashboardMap/AreaCard.js +28 -28
  237. package/lib/pages/DashboardMap/AssessmentIcon.js +7 -8
  238. package/lib/pages/DashboardMap/Capacity.js +80 -31
  239. package/lib/pages/DashboardMap/FactoryCard.js +26 -31
  240. package/lib/pages/DashboardMap/HighchartsOptions.js +4 -5
  241. package/lib/pages/DashboardMap/List.js +105 -74
  242. package/lib/pages/DashboardMap/ListContext.js +19 -15
  243. package/lib/pages/DashboardMap/Loader.js +2 -2
  244. package/lib/pages/DashboardMap/SeverityBadge.js +18 -10
  245. package/lib/pages/DashboardMap/WWTPMap.js +60 -48
  246. package/lib/pages/DashboardMap/WaterDischarge.js +8 -8
  247. package/lib/pages/DashboardMap/Widget.js +71 -54
  248. package/lib/pages/DashboardMap/utils.js +65 -48
  249. package/lib/pages/EventsPage/Body/Body.js +15 -20
  250. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropContainer.js +19 -17
  251. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropUtils.js +35 -27
  252. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropWrapper.js +6 -8
  253. package/lib/pages/EventsPage/DragAndDropArea/DraggableItem.js +7 -11
  254. package/lib/pages/EventsPage/DragAndDropArea/DraggableList.js +30 -21
  255. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +64 -53
  256. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainerHelpers.js +31 -19
  257. package/lib/pages/EventsPage/EventsPage.js +10 -7
  258. package/lib/pages/EventsPage/FloatingGraph/FloatingGraph.js +38 -26
  259. package/lib/pages/EventsPage/events/MoreInfo.js +16 -17
  260. package/lib/pages/EventsPage/events/Sidebar.js +18 -22
  261. package/lib/pages/EventsPage/events/event_info/Contaminants/Contaminants.js +7 -7
  262. package/lib/pages/EventsPage/events/event_info/Contaminants/ContaminantsList.js +20 -17
  263. package/lib/pages/EventsPage/events/event_info/EarlyWarnings.js +35 -30
  264. package/lib/pages/EventsPage/events/event_info/EventDetails.js +37 -40
  265. package/lib/pages/EventsPage/events/event_info/EventInfo.js +42 -43
  266. package/lib/pages/EventsPage/events/event_info/EventPath/EventPath.js +4 -4
  267. package/lib/pages/EventsPage/events/event_info/EventSection.js +19 -17
  268. package/lib/pages/EventsPage/events/event_info/EventSection.test.js +38 -43
  269. package/lib/pages/EventsPage/events/event_info/EventTimeRange.js +47 -39
  270. package/lib/pages/EventsPage/events/event_info/Header/Header.js +4 -6
  271. package/lib/pages/EventsPage/events/event_info/Header/HeaderContainer.js +33 -30
  272. package/lib/pages/EventsPage/events/event_info/HistoricalInformation.js +6 -6
  273. package/lib/pages/EventsPage/events/event_info/MiniEventTree.js +36 -29
  274. package/lib/pages/EventsPage/events/event_info/MobileEventPath.js +6 -4
  275. package/lib/pages/EventsPage/events/event_info/PollutionAssessment /PollutionAssessment.js +10 -10
  276. package/lib/pages/EventsPage/events/event_info/PollutionAssessment /PollutionTypesList.js +9 -7
  277. package/lib/pages/EventsPage/events/event_info/PollutionDischarge.js +21 -22
  278. package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResult.js +19 -12
  279. package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResultButton.js +3 -5
  280. package/lib/pages/EventsPage/events/event_info/SamplingList/SamplingDetails.js +9 -11
  281. package/lib/pages/EventsPage/events/event_info/SamplingList/Samplings.js +26 -22
  282. package/lib/pages/EventsPage/events/event_info/SeverityScore/ScoreExplanation.js +8 -12
  283. package/lib/pages/EventsPage/events/event_info/SeverityScore/SeverityScore.js +7 -7
  284. package/lib/pages/EventsPage/events/event_info/SourceDetails/Confidence.js +4 -6
  285. package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.js +2 -2
  286. package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.test.js +10 -12
  287. package/lib/pages/EventsPage/events/event_info/SourceDetails/IconAndTitles.js +8 -10
  288. package/lib/pages/EventsPage/events/event_info/SourceDetails/MoreInfoButton.js +12 -10
  289. package/lib/pages/EventsPage/events/event_info/SourceDetails/OtherSources.js +3 -5
  290. package/lib/pages/EventsPage/events/event_info/SourceDetails/PotentialSources.js +5 -7
  291. package/lib/pages/EventsPage/events/event_info/SourceDetails/SingleSource.js +5 -7
  292. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceCardBody.js +4 -6
  293. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.js +9 -11
  294. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.test.js +15 -15
  295. package/lib/pages/EventsPage/events/event_info/SourceDetails/WaterDischarge.js +6 -6
  296. package/lib/pages/EventsPage/events/event_info/Timelines/DischargeBox.js +5 -7
  297. package/lib/pages/EventsPage/events/event_info/Timelines/EarlyWarning.js +15 -17
  298. package/lib/pages/EventsPage/events/event_info/Timelines/LiveStatusBadge.js +4 -4
  299. package/lib/pages/EventsPage/events/event_info/Timelines/SeenBox.js +8 -10
  300. package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.js +11 -16
  301. package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.test.js +8 -9
  302. package/lib/pages/EventsPage/events/event_info/Timelines/Titles.js +2 -2
  303. package/lib/pages/EventsPage/events/event_info/Timelines/style.js +3 -3
  304. package/lib/pages/EventsPage/events/event_info/charts/EventDetailsPieChart.js +38 -25
  305. package/lib/pages/EventsPage/events/event_info/damage_type/DamageType.js +36 -29
  306. package/lib/pages/EventsPage/events/event_info/samplingsOld/Sampling.js +9 -11
  307. package/lib/pages/EventsPage/events/event_info/samplingsOld/Samplings.js +17 -15
  308. package/lib/pages/EventsPage/events/event_info/sources/Source.js +30 -27
  309. package/lib/pages/EventsPage/events/event_info/sources/Sources.js +26 -23
  310. package/lib/pages/EventsPage/events/event_info/styles.js +12 -20
  311. package/lib/pages/EventsPage/events/events_list/EventItem.js +19 -18
  312. package/lib/pages/EventsPage/events/events_list/EventUtils.js +10 -10
  313. package/lib/pages/EventsPage/events/events_list/EventsList.js +145 -124
  314. package/lib/pages/EventsPage/events/events_list/Filter/Filter.js +55 -40
  315. package/lib/pages/EventsPage/events/events_list/Filter/FilterContainer.js +115 -79
  316. package/lib/pages/EventsPage/events/events_list/Filter/FilterItem.js +77 -60
  317. package/lib/pages/EventsPage/events/events_list/Filter/FiltersDropDown.js +41 -38
  318. package/lib/pages/EventsPage/events/events_list/Filter/OptionsDropDown.js +36 -29
  319. package/lib/pages/EventsPage/events/events_list/Sort.js +16 -13
  320. package/lib/pages/ImportFileWizard/FileUploadRespones.js +20 -13
  321. package/lib/pages/ImportFileWizard/ImportButtomButtons.js +4 -6
  322. package/lib/pages/ImportFileWizard/ImportFile.js +22 -20
  323. package/lib/pages/ImportFileWizard/ResponseBody.js +33 -24
  324. package/lib/pages/ImportFileWizard/ValidationForm.js +22 -23
  325. package/lib/pages/ImportFileWizard/ValidationResponse.js +21 -21
  326. package/lib/pages/ImportFileWizard/importFileUtils.js +1 -1
  327. package/lib/pages/ImportGisPage/ImportGisContainer.js +24 -21
  328. package/lib/pages/ImportGisPage/ImportedGisFilesPage.js +23 -21
  329. package/lib/pages/ImportGisPage/importGisUtils.js +21 -13
  330. package/lib/pages/ImportGisProcess/index.js +15 -12
  331. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/MultiChoiceTabs.js +12 -7
  332. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/RadioTabs.js +19 -17
  333. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/SeverityButtons.js +3 -3
  334. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.js +65 -56
  335. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.stories.js +8 -6
  336. package/lib/pages/NotificationsPage/Notification/Notification.js +12 -16
  337. package/lib/pages/NotificationsPage/Notifications.mock.js +2 -2
  338. package/lib/pages/NotificationsPage/Notifications.stories.js +6 -4
  339. package/lib/pages/NotificationsPage/NotificationsPage.js +36 -18
  340. package/lib/pages/NotificationsPage/assets/index.js +9 -9
  341. package/lib/pages/NotificationsPageV2/NotificationsPage.js +97 -71
  342. package/lib/pages/NotificationsPageV2/components/NotificationsCard.js +63 -94
  343. package/lib/pages/NotificationsPageV2/components/NotificationsForm/EventType.js +16 -14
  344. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSendVia.js +16 -18
  345. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSensors.js +21 -17
  346. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSources.js +21 -17
  347. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationTags.js +22 -18
  348. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationsFormContent.js +69 -83
  349. package/lib/pages/NotificationsPageV2/components/NotificationsForm/WaterAuthoritySelection.js +22 -18
  350. package/lib/pages/NotificationsPageV2/components/NotificationsSidebar.js +74 -74
  351. package/lib/pages/NotificationsPageV2/components/NotificationsUtils.js +95 -97
  352. package/lib/pages/NotificationsPageV2/notificationUtils.js +48 -54
  353. package/lib/pages/OldSitePage/OldSitePage.js +132 -57
  354. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.js +5 -5
  355. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.stories.js +5 -3
  356. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +6 -8
  357. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +20 -18
  358. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +7 -9
  359. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +18 -12
  360. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +12 -16
  361. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +5 -3
  362. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +12 -18
  363. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +63 -51
  364. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +7 -9
  365. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.js +53 -29
  366. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.mock.js +4 -4
  367. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.stories.js +12 -10
  368. package/lib/pages/OldSitePage/SamplingParameters/charts/ParametersChart.js +10 -11
  369. package/lib/pages/OldSitePage/SamplingParameters/charts/SamplingChart.js +11 -10
  370. package/lib/pages/OldSitePage/SamplingParameters/charts/options/options.js +28 -32
  371. package/lib/pages/OldSitePage/SamplingParameters/dataParser.js +29 -27
  372. package/lib/pages/OldSitePage/SamplingParameters/styles/samplingParameters.js +4 -4
  373. package/lib/pages/OldSitePage/SamplingParameters/styles/styles.js +12 -18
  374. package/lib/pages/ProfilePage/Container.js +2 -2
  375. package/lib/pages/ProfilePage/PasswordModal/PasswordModal.js +44 -28
  376. package/lib/pages/ProfilePage/ProfilePage.js +214 -121
  377. package/lib/pages/ProfilePage/TelegramModal/TelegramModal.js +33 -25
  378. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.js +16 -19
  379. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.test.js +30 -28
  380. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionContainer.js +117 -57
  381. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionDropdown.js +20 -17
  382. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActions.js +10 -12
  383. package/lib/pages/SamplingsPage/ActionsDropDown/ViewLabResult.js +41 -39
  384. package/lib/pages/SamplingsPage/DesktopActions/DesktopActions.js +26 -25
  385. package/lib/pages/SamplingsPage/DesktopActions/DownloadCSV.js +16 -16
  386. package/lib/pages/SamplingsPage/DesktopActions/UploadLabResult.js +15 -13
  387. package/lib/pages/SamplingsPage/NavigationDropdown.js +32 -45
  388. package/lib/pages/SamplingsPage/NewSamplingAction.js +100 -76
  389. package/lib/pages/SamplingsPage/SamplingMobileModal.js +101 -129
  390. package/lib/pages/SamplingsPage/SamplingProperties/ImageDeleteModal.js +22 -21
  391. package/lib/pages/SamplingsPage/SamplingProperties/ImagePreviewModal.js +22 -34
  392. package/lib/pages/SamplingsPage/SamplingProperties/ImageUpload.js +59 -36
  393. package/lib/pages/SamplingsPage/SamplingProperties/ManholeImageMobile.js +18 -15
  394. package/lib/pages/SamplingsPage/SamplingProperties/SamplerInProcess.js +7 -9
  395. package/lib/pages/SamplingsPage/SamplingProperties/SamplingProperties.js +194 -110
  396. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesForm.js +55 -49
  397. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHead.js +43 -47
  398. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHeadMobile.js +45 -49
  399. package/lib/pages/SamplingsPage/SamplingProperties/samplingPropertiesUtils.js +20 -19
  400. package/lib/pages/SamplingsPage/SamplingProperties/styles.js +3 -3
  401. package/lib/pages/SamplingsPage/SamplingSiteTableCell.js +6 -10
  402. package/lib/pages/SamplingsPage/SamplingsMobileItem.js +54 -58
  403. package/lib/pages/SamplingsPage/SamplingsMobileList.js +28 -21
  404. package/lib/pages/SamplingsPage/SamplingsPage.js +33 -27
  405. package/lib/pages/SamplingsPage/SamplingsPageContainer.js +58 -50
  406. package/lib/pages/SamplingsPage/samplingsPageUtils.js +76 -68
  407. package/lib/pages/SitePage/DischargePattern/DischargePattern.js +4 -6
  408. package/lib/pages/SitePage/PollutionContributor/PollutionContributor.js +13 -14
  409. package/lib/pages/SitePage/PollutionContributor/PollutionContributorContainer.js +13 -10
  410. package/lib/pages/SitePage/PollutionContributor/contributorUtils.js +16 -16
  411. package/lib/pages/SitePage/SamplingParameters/NoResults/NoResults.stories.js +5 -3
  412. package/lib/pages/SitePage/SamplingParameters/NoResults/index.js +10 -14
  413. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +8 -9
  414. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.test.js +23 -26
  415. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +17 -14
  416. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.test.js +32 -36
  417. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +7 -9
  418. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +24 -15
  419. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +12 -16
  420. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +5 -3
  421. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +12 -18
  422. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +70 -58
  423. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +7 -9
  424. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.js +26 -15
  425. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.mock.js +5 -5
  426. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.stories.js +12 -10
  427. package/lib/pages/SitePage/SamplingParameters/body/Body.js +9 -9
  428. package/lib/pages/SitePage/SamplingParameters/body/BodyContainer.js +37 -29
  429. package/lib/pages/SitePage/SamplingParameters/charts/ParametersChart.js +11 -11
  430. package/lib/pages/SitePage/SamplingParameters/charts/SamplingChart.js +11 -10
  431. package/lib/pages/SitePage/SamplingParameters/charts/options/options.js +59 -60
  432. package/lib/pages/SitePage/SamplingParameters/dataParser.js +39 -30
  433. package/lib/pages/SitePage/SamplingParameters/dataParser.test.js +9 -11
  434. package/lib/pages/SitePage/SamplingParameters/styles/samplingParameters.js +4 -4
  435. package/lib/pages/SitePage/SamplingParameters/styles/styles.js +12 -18
  436. package/lib/pages/SitePage/SiteInformation/EmptyState.js +7 -11
  437. package/lib/pages/SitePage/SiteInformation/SiteInformation.js +30 -31
  438. package/lib/pages/SitePage/SitePage.js +81 -42
  439. package/lib/pages/UploadLabResult/index.js +13 -13
  440. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.js +35 -26
  441. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.stories.js +8 -6
  442. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.js +8 -9
  443. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.stories.js +5 -3
  444. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/Eta.js +48 -47
  445. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/styles.js +6 -10
  446. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/LinkedSevereEvent.js +4 -4
  447. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/OptionalLinkedSevereEvent.js +6 -4
  448. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/SevereEvent.js +12 -13
  449. package/lib/pages/UtilityDashboardPage/TopBar/TopBar.js +12 -15
  450. package/lib/pages/UtilityDashboardPage/TopBar/constants.js +7 -7
  451. package/lib/pages/UtilityDashboardPage/TopBar/styles.js +2 -2
  452. package/lib/pages/UtilityDashboardPage/UtilityDashboard.js +29 -21
  453. package/lib/pages/UtilityDashboardPage/UtilityDashboard.stories.js +30 -26
  454. package/lib/pages/UtilityDashboardPage/UtilityDashboardMapContainer/UtilityDashboardMapContainer.js +17 -16
  455. package/lib/pages/UtilityDashboardPage/UtilityDashboardPage.js +13 -7
  456. package/lib/pages/UtilityDashboardPage/VirtualAreaDashboardPage.js +31 -27
  457. package/lib/pages/WbeDashboard/ExpandableComponent.js +8 -9
  458. package/lib/pages/WbeDashboard/GraphWrapper.js +36 -30
  459. package/lib/pages/WbeDashboard/IndividualTinyGraph.js +19 -17
  460. package/lib/pages/WbeDashboard/SearchInput.js +20 -15
  461. package/lib/pages/WbeDashboard/SummaryGraph.js +76 -50
  462. package/lib/pages/WbeDashboard/SummaryGraphModal.js +17 -19
  463. package/lib/pages/WbeDashboard/Tabs.js +11 -11
  464. package/lib/pages/WbeDashboard/WbeDashboardPage.js +213 -151
  465. package/lib/pages/WbeDashboard/WbeSummaryBar.js +48 -40
  466. package/lib/pages/WwtpPage/DashboardCard.js +23 -26
  467. package/lib/pages/WwtpPage/DischargePatternCard.js +23 -14
  468. package/lib/pages/WwtpPage/InletsCard/InletsBar.js +22 -26
  469. package/lib/pages/WwtpPage/InletsCard/InletsCard.js +18 -19
  470. package/lib/pages/WwtpPage/Map.js +3 -5
  471. package/lib/pages/WwtpPage/OrganicCard.js +2 -2
  472. package/lib/pages/WwtpPage/PotentialSaving/ImpactCard.js +2 -2
  473. package/lib/pages/WwtpPage/PotentialSaving/PotentialItem.js +6 -8
  474. package/lib/pages/WwtpPage/PotentialSaving/PotentialSaving.js +8 -9
  475. package/lib/pages/WwtpPage/PotentialSaving/PotentialSavingContainer.js +14 -18
  476. package/lib/pages/WwtpPage/PredictionCard.js +2 -2
  477. package/lib/pages/WwtpPage/TrendCard.js +19 -18
  478. package/lib/pages/WwtpPage/UpgradeBox.js +3 -3
  479. package/lib/pages/WwtpPage/WwtpPage.js +8 -8
  480. package/lib/pages/WwtpPage/WwtpPageContainer.js +16 -21
  481. package/lib/providers/Slideshow/SlideshowContext.js +9 -11
  482. package/lib/providers/Slideshow/SlideshowProvider.js +38 -22
  483. package/lib/providers/Slideshow/SlideshowRunner.js +19 -17
  484. package/lib/providers/UrlHistory/UrlHistoryContext.js +4 -6
  485. package/lib/providers/UrlHistory/UrlHistoryProvider.js +11 -12
  486. package/lib/providers/UrlHistory/index.js +2 -2
  487. package/lib/providers/UrlHistory/useLastVisited.js +5 -5
  488. package/lib/store/ImportGis/actionTypes.js +1 -1
  489. package/lib/store/ImportGis/actionsCreator.js +5 -7
  490. package/lib/store/ImportGis/reducer.js +29 -40
  491. package/lib/store/WBE/actionTypes.js +2 -2
  492. package/lib/store/WBE/reducer.js +9 -13
  493. package/lib/store/WWTPDashboard/WWTPDashboardSlice.js +14 -24
  494. package/lib/store/areas/actionTypes.js +4 -4
  495. package/lib/store/areas/actions.js +13 -7
  496. package/lib/store/areas/reducer.js +6 -8
  497. package/lib/store/context/actionTypes.js +3 -3
  498. package/lib/store/context/actions.js +3 -3
  499. package/lib/store/context/contextMiddlewares.js +16 -14
  500. package/lib/store/context/reducer.js +9 -13
  501. package/lib/store/dashboard/dashboardSlice.js +10 -18
  502. package/lib/store/edges/actionTypes.js +5 -5
  503. package/lib/store/edges/actions.js +8 -4
  504. package/lib/store/edges/reducer.js +17 -13
  505. package/lib/store/events/actionTypes.js +17 -17
  506. package/lib/store/events/actions.js +7 -3
  507. package/lib/store/events/reducer.js +49 -42
  508. package/lib/store/global/actionTypes.js +11 -11
  509. package/lib/store/global/actions.js +6 -8
  510. package/lib/store/global/reducer.js +10 -11
  511. package/lib/store/permissions/permissionsSlice.js +8 -12
  512. package/lib/store/points/actionTypes.js +3 -3
  513. package/lib/store/points/actions.js +8 -4
  514. package/lib/store/points/reducer.js +5 -7
  515. package/lib/store/rootActionTypes.js +2 -2
  516. package/lib/store/rootReducer.js +12 -17
  517. package/lib/store/rootStore.js +5 -5
  518. package/lib/store/samplings/actionTypes.js +1 -1
  519. package/lib/store/samplings/reducer.js +14 -16
  520. package/lib/styles/StylesLayout.js +3 -5
  521. package/lib/styles/theme/theme.js +27 -26
  522. package/lib/test/mocks/browser.js +4 -2
  523. package/lib/test/test-utils.js +15 -17
  524. package/lib/ui-kit/Button/Button.js +80 -128
  525. package/lib/ui-kit/Button/Button.test.js +29 -24
  526. package/lib/ui-kit/Checkbox/Checkbox.js +20 -30
  527. package/lib/ui-kit/ContentCard/ContentCard.js +18 -15
  528. package/lib/ui-kit/Dashboard/Dashboard.js +22 -25
  529. package/lib/ui-kit/DropDown/DropDown.js +24 -23
  530. package/lib/ui-kit/DropDown/DropDown.test.js +12 -12
  531. package/lib/ui-kit/DropDown/DropDownItem.js +21 -24
  532. package/lib/ui-kit/DropDown/DropdownToggle.js +8 -12
  533. package/lib/ui-kit/EmptyState/EmptyState.js +4 -6
  534. package/lib/ui-kit/IconAction/IconAction.js +5 -7
  535. package/lib/ui-kit/ImageUploadButton/ImageUploadButton.js +64 -48
  536. package/lib/ui-kit/InfoTooltip/InfoTooltip.js +52 -69
  537. package/lib/ui-kit/InletsPie/InletsPie.js +13 -15
  538. package/lib/ui-kit/InletsPie/options.js +6 -6
  539. package/lib/ui-kit/KandoList/KandoList.js +12 -14
  540. package/lib/ui-kit/KandoTable/KandoTable.js +40 -48
  541. package/lib/ui-kit/KandoTable/KandoTable.test.js +22 -16
  542. package/lib/ui-kit/Layout/Layout.js +4 -6
  543. package/lib/ui-kit/MobileInput/MobileInput.js +50 -60
  544. package/lib/ui-kit/ModalConfirmation/ModalConfirmation.js +16 -13
  545. package/lib/ui-kit/OrganicEvents/GaugeChart.js +6 -8
  546. package/lib/ui-kit/OrganicEvents/OrganicEvents.js +6 -6
  547. package/lib/ui-kit/OrganicEvents/OrganicEventsContainer.js +20 -27
  548. package/lib/ui-kit/OrganicEvents/TextInfo.js +10 -15
  549. package/lib/ui-kit/RadioButtons/RadioButtonGroup.js +8 -10
  550. package/lib/ui-kit/SamplingStatus/SamplingStatus.js +17 -14
  551. package/lib/ui-kit/SamplingStatus/SamplingStatusHelper.js +3 -3
  552. package/lib/ui-kit/ScoreGauge/ScoreGauge.js +20 -20
  553. package/lib/ui-kit/ScoreGauge/constant.js +3 -3
  554. package/lib/ui-kit/TimeLineChart/TrendChart.js +42 -54
  555. package/lib/ui-kit/TitleAndCloseHeader/TitleAndCloseHeader.js +7 -8
  556. package/lib/ui-kit/Tooltip/Tooltip.js +8 -14
  557. package/lib/ui-kit/index.js +8 -8
  558. package/lib/ui-kit/kandoStepper/KandoStepper.js +12 -12
  559. package/lib/ui-kit/siteName/SiteName.js +8 -11
  560. package/lib/utilities/ActionUtility.js +7 -7
  561. package/lib/utilities/Alert.js +17 -21
  562. package/lib/utilities/Analytics.js +11 -11
  563. package/lib/utilities/Array.js +5 -4
  564. package/lib/utilities/Enum.js +51 -15
  565. package/lib/utilities/ErrorBoundary.js +41 -27
  566. package/lib/utilities/File.js +69 -40
  567. package/lib/utilities/GetDir.js +7 -8
  568. package/lib/utilities/KandoDate.js +15 -7
  569. package/lib/utilities/KandoModal.js +26 -16
  570. package/lib/utilities/LocalStorage.js +10 -8
  571. package/lib/utilities/ThousandsToK.js +3 -3
  572. package/lib/utilities/TimeFormat.js +20 -21
  573. package/lib/utilities/Truncate.js +25 -17
  574. package/lib/utilities/edgesMath.js +15 -14
  575. package/lib/utilities/i18n.js +3 -3
  576. package/lib/utilities/kql.js +14 -12
  577. package/lib/utilities/map/icons.js +3 -3
  578. package/lib/utilities/polylinedecorator.js +112 -87
  579. package/lib/utilities/scoreToData.js +17 -17
  580. package/lib/utilities/scoreToData.test.js +5 -5
  581. package/lib/utilities/time.js +8 -8
  582. package/lib/utilities/uploadToS3.js +11 -11
  583. package/lib/utilities/urls.js +59 -61
  584. package/package.json +1 -1
@@ -6,9 +6,9 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.waterAuthoritiesRadioButtons = exports.sourcesRadioButtons = exports.severitiesRadioButtons = exports.sendViaCheckBoxes = exports.mockTypes = exports.getNotificationString = exports.getEmptyNotification = void 0;
8
8
  var _i18n = _interopRequireDefault(require("utilities/i18n"));
9
- const mockTypes = ['PollutionAlertConfig', 'DataloggerThresholdAlertConfig', 'DataloggerOverflowAlertConfig', 'DeviceHealthAlertConfig', 'WbeAlertConfig', 'WbeWeeklyDigestAlertConfig', 'RollingEventAlertConfig', 'DataloggerPumpAlertConfig'];
9
+ var mockTypes = ['PollutionAlertConfig', 'DataloggerThresholdAlertConfig', 'DataloggerOverflowAlertConfig', 'DeviceHealthAlertConfig', 'WbeAlertConfig', 'WbeWeeklyDigestAlertConfig', 'RollingEventAlertConfig', 'DataloggerPumpAlertConfig'];
10
10
  exports.mockTypes = mockTypes;
11
- const getEmptyNotification = () => {
11
+ var getEmptyNotification = function getEmptyNotification() {
12
12
  return {
13
13
  available_types: ['PollutionAlertConfig', 'DataloggerThresholdAlertConfig', 'DataloggerOverflowAlertConfig', 'DeviceHealthAlertConfig', 'WbeAlertConfig', 'WbeWeeklyDigestAlertConfig', 'RollingEventAlertConfig', 'DataloggerPumpAlertConfig'],
14
14
  id: '',
@@ -40,7 +40,7 @@ const getEmptyNotification = () => {
40
40
  };
41
41
  };
42
42
  exports.getEmptyNotification = getEmptyNotification;
43
- const severitiesRadioButtons = [{
43
+ var severitiesRadioButtons = [{
44
44
  label: 'notifications_page.edit_extreme',
45
45
  name: 'severity',
46
46
  value: 'extreme'
@@ -54,7 +54,7 @@ const severitiesRadioButtons = [{
54
54
  value: 'medium'
55
55
  }];
56
56
  exports.severitiesRadioButtons = severitiesRadioButtons;
57
- const waterAuthoritiesRadioButtons = [{
57
+ var waterAuthoritiesRadioButtons = [{
58
58
  label: 'notifications_page.edit_all',
59
59
  name: 'water_authorities',
60
60
  value: 'all'
@@ -68,7 +68,7 @@ const waterAuthoritiesRadioButtons = [{
68
68
  value: 'exclude'
69
69
  }];
70
70
  exports.waterAuthoritiesRadioButtons = waterAuthoritiesRadioButtons;
71
- const sourcesRadioButtons = [{
71
+ var sourcesRadioButtons = [{
72
72
  label: 'notifications_page.edit_all',
73
73
  name: 'sources',
74
74
  value: 'all'
@@ -82,7 +82,7 @@ const sourcesRadioButtons = [{
82
82
  value: 'exclude'
83
83
  }];
84
84
  exports.sourcesRadioButtons = sourcesRadioButtons;
85
- const sendViaCheckBoxes = [{
85
+ var sendViaCheckBoxes = [{
86
86
  label: 'notifications_page.edit_telegram',
87
87
  name: 'actions',
88
88
  value: 'telegram'
@@ -98,96 +98,90 @@ const sendViaCheckBoxes = [{
98
98
  // },
99
99
  ];
100
100
  exports.sendViaCheckBoxes = sendViaCheckBoxes;
101
- const getNotificationString = notification => {
102
- const transIdx = 'notifications_page.notifications_text.';
103
- const title = _i18n.default.t(`${transIdx}title`);
104
- let typeString = '';
105
- let sampleString = '';
106
- sampleString = notification.pump_only === '1' ? ` ${_i18n.default.t('notifications_page.sampler_activated')}` : '.';
101
+ var getNotificationString = function getNotificationString(notification) {
102
+ var transIdx = 'notifications_page.notifications_text.';
103
+ var title = _i18n.default.t("".concat(transIdx, "title"));
104
+ var typeString = '';
105
+ var sampleString = '';
106
+ sampleString = notification.pump_only === '1' ? " ".concat(_i18n.default.t('notifications_page.sampler_activated')) : '.';
107
107
  switch (notification.type) {
108
108
  case 'RollingEventAlertConfig':
109
- typeString = [title, getNotificationAlertsString(notification), _i18n.default.t(`${transIdx}about_pollution_events`), getNotificationSeveritiesString(notification), getNotificationSourcesString(notification, transIdx)].join(' ');
109
+ typeString = [title, getNotificationAlertsString(notification), _i18n.default.t("".concat(transIdx, "about_pollution_events")), getNotificationSeveritiesString(notification), getNotificationSourcesString(notification, transIdx)].join(' ');
110
110
  typeString += sampleString;
111
111
  break;
112
112
  case 'PollutionAlertConfig':
113
- typeString = [title, getNotificationAlertsString(notification), _i18n.default.t(`${transIdx}about_pollution_events`), getNotificationSeveritiesString(notification), getNotificationSourcesString(notification, transIdx)].join(' ');
113
+ typeString = [title, getNotificationAlertsString(notification), _i18n.default.t("".concat(transIdx, "about_pollution_events")), getNotificationSeveritiesString(notification), getNotificationSourcesString(notification, transIdx)].join(' ');
114
114
  typeString += sampleString;
115
115
  break;
116
116
  case 'DataloggerThresholdAlertConfig':
117
- typeString = `${title} ${getNotificationAlertsString(notification)} ${_i18n.default.t(transIdx + 'sensors_thresholds')}${getNotificationSensorsString(notification)}.`;
117
+ typeString = "".concat(title, " ").concat(getNotificationAlertsString(notification), " ").concat(_i18n.default.t(transIdx + 'sensors_thresholds')).concat(getNotificationSensorsString(notification), ".");
118
118
  break;
119
119
  case 'DataloggerOverflowAlertConfig':
120
- typeString = `${title} ${getNotificationAlertsString(notification)} ${_i18n.default.t(transIdx + 'overflow_event')}, ${getNotificationSourcesString(notification, transIdx)}.`;
120
+ typeString = "".concat(title, " ").concat(getNotificationAlertsString(notification), " ").concat(_i18n.default.t(transIdx + 'overflow_event'), ", ").concat(getNotificationSourcesString(notification, transIdx), ".");
121
121
  break;
122
122
  case 'DeviceHealthAlertConfig':
123
- typeString = `${title} ${getNotificationAlertsString(notification)} ${_i18n.default.t(transIdx + 'device_malfunctioning')} ${getNotificationSourcesString(notification, transIdx)}.`;
123
+ typeString = "".concat(title, " ").concat(getNotificationAlertsString(notification), " ").concat(_i18n.default.t(transIdx + 'device_malfunctioning'), " ").concat(getNotificationSourcesString(notification, transIdx), ".");
124
124
  break;
125
125
  case 'WbeWeeklyDigestAlertConfig':
126
- typeString = `${title} ${getNotificationAlertsString(notification)} ${_i18n.default.t(transIdx + 'wbe_weekly')}.`;
126
+ typeString = "".concat(title, " ").concat(getNotificationAlertsString(notification), " ").concat(_i18n.default.t(transIdx + 'wbe_weekly'), ".");
127
127
  break;
128
128
  case 'WbeAlertConfig':
129
- typeString = `${title} ${getNotificationAlertsString(notification)} ${_i18n.default.t(transIdx + 'wbe_alert')}.`;
129
+ typeString = "".concat(title, " ").concat(getNotificationAlertsString(notification), " ").concat(_i18n.default.t(transIdx + 'wbe_alert'), ".");
130
130
  break;
131
131
  case 'DataloggerPumpAlertConfig':
132
- typeString = `${title} ${getNotificationAlertsString(notification)} ${_i18n.default.t(transIdx + 'datalogger_pump')}, ${getNotificationSourcesString(notification, transIdx)}.`;
132
+ typeString = "".concat(title, " ").concat(getNotificationAlertsString(notification), " ").concat(_i18n.default.t(transIdx + 'datalogger_pump'), ", ").concat(getNotificationSourcesString(notification, transIdx), ".");
133
133
  break;
134
134
  }
135
135
  return typeString;
136
136
  };
137
137
  exports.getNotificationString = getNotificationString;
138
138
  function getNotificationAlertsString(notification) {
139
- const sendVia = notification.actions;
140
- let tempArray = [];
141
- let sendViaString = '';
142
- for (const key in sendVia) {
139
+ var sendVia = notification.actions;
140
+ var tempArray = [];
141
+ var sendViaString = '';
142
+ for (var key in sendVia) {
143
143
  if (sendVia[key]) {
144
- tempArray.push(_i18n.default.t(`notifications_page.edit_${key}`));
144
+ tempArray.push(_i18n.default.t("notifications_page.edit_".concat(key)));
145
145
  }
146
146
  }
147
147
  sendViaString = tempArray.join(', ');
148
- let and = _i18n.default.t(`notifications_page.notifications_text.and`);
148
+ var and = _i18n.default.t("notifications_page.notifications_text.and");
149
149
  and += and === '&' ? ' ' : '';
150
- sendViaString = sendViaString.replace(/,\s([^,]+)$/, ` ${and}$1`);
150
+ sendViaString = sendViaString.replace(/,\s([^,]+)$/, " ".concat(and, "$1"));
151
151
  return sendViaString;
152
152
  }
153
153
  function getNotificationSeveritiesString(notification) {
154
- const {
155
- severity
156
- } = notification;
157
- let severityString = '';
158
- severity === 'extreme' ? severityString = _i18n.default.t('notifications_page.extreme') : severityString = _i18n.default.t(`notifications_page.${severity}`) + ' ' + _i18n.default.t(`notifications_page.notifications_text.or_higher`);
154
+ var severity = notification.severity;
155
+ var severityString = '';
156
+ severity === 'extreme' ? severityString = _i18n.default.t('notifications_page.extreme') : severityString = _i18n.default.t("notifications_page.".concat(severity)) + ' ' + _i18n.default.t("notifications_page.notifications_text.or_higher");
159
157
  return severityString;
160
158
  }
161
159
  function getNotificationSourcesString(notification, transIdx) {
162
- const {
163
- set
164
- } = notification.points;
165
- const {
166
- selection_type
167
- } = notification.points;
168
- let Strings = [];
169
- let sourcesString = '';
170
- if (selection_type === 'all') Strings.push(_i18n.default.t(`${transIdx}in_all_sources`));
171
- if (selection_type === 'exclude') Strings.push(_i18n.default.t(`${transIdx}excluding`));
172
- if (selection_type === 'include') sourcesString = _i18n.default.t(`${transIdx}in`) + ' ';
173
- if (selection_type !== 'all') set.map(source => Strings.push(source.text));
160
+ var set = notification.points.set;
161
+ var selection_type = notification.points.selection_type;
162
+ var Strings = [];
163
+ var sourcesString = '';
164
+ if (selection_type === 'all') Strings.push(_i18n.default.t("".concat(transIdx, "in_all_sources")));
165
+ if (selection_type === 'exclude') Strings.push(_i18n.default.t("".concat(transIdx, "excluding")));
166
+ if (selection_type === 'include') sourcesString = _i18n.default.t("".concat(transIdx, "in")) + ' ';
167
+ if (selection_type !== 'all') set.map(function (source) {
168
+ return Strings.push(source.text);
169
+ });
174
170
  sourcesString += Strings.join(Strings.length > 1 ? ', ' : ' ');
175
171
  return sourcesString;
176
172
  }
177
173
  function getNotificationSensorsString(notification) {
178
- const {
179
- set
180
- } = notification.sensors;
181
- const {
182
- selection_type
183
- } = notification.sensors;
184
- let Strings = [];
185
- let sensorsString = '';
174
+ var set = notification.sensors.set;
175
+ var selection_type = notification.sensors.selection_type;
176
+ var Strings = [];
177
+ var sensorsString = '';
186
178
  if (selection_type !== 'all') {
187
- set.map(sensor => Strings.push(sensor.text));
179
+ set.map(function (sensor) {
180
+ return Strings.push(sensor.text);
181
+ });
188
182
  sensorsString = ': ';
189
183
  sensorsString += Strings.join(', ');
190
184
  }
191
185
  return sensorsString;
192
186
  }
193
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaTE4biIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwibW9ja1R5cGVzIiwiZXhwb3J0cyIsImdldEVtcHR5Tm90aWZpY2F0aW9uIiwiYXZhaWxhYmxlX3R5cGVzIiwiaWQiLCJ0eXBlIiwic2V2ZXJpdHkiLCJ3YXRlcl9hdXRob3JpdGllcyIsInNlbGVjdGlvbl90eXBlIiwic2V0IiwicG9pbnRzIiwidGFncyIsInNlbnNvcnMiLCJhY3Rpb25zIiwidGVsZWdyYW0iLCJlbWFpbCIsInNtcyIsInB1bXBfb25seSIsImRpcmVjdF9pbXBhY3Rfb25seSIsInVuZGVmaW5lZCIsInNldmVyaXRpZXNSYWRpb0J1dHRvbnMiLCJsYWJlbCIsIm5hbWUiLCJ2YWx1ZSIsIndhdGVyQXV0aG9yaXRpZXNSYWRpb0J1dHRvbnMiLCJzb3VyY2VzUmFkaW9CdXR0b25zIiwic2VuZFZpYUNoZWNrQm94ZXMiLCJnZXROb3RpZmljYXRpb25TdHJpbmciLCJub3RpZmljYXRpb24iLCJ0cmFuc0lkeCIsInRpdGxlIiwiaTE4biIsInQiLCJ0eXBlU3RyaW5nIiwic2FtcGxlU3RyaW5nIiwiZ2V0Tm90aWZpY2F0aW9uQWxlcnRzU3RyaW5nIiwiZ2V0Tm90aWZpY2F0aW9uU2V2ZXJpdGllc1N0cmluZyIsImdldE5vdGlmaWNhdGlvblNvdXJjZXNTdHJpbmciLCJqb2luIiwiZ2V0Tm90aWZpY2F0aW9uU2Vuc29yc1N0cmluZyIsInNlbmRWaWEiLCJ0ZW1wQXJyYXkiLCJzZW5kVmlhU3RyaW5nIiwia2V5IiwicHVzaCIsImFuZCIsInJlcGxhY2UiLCJzZXZlcml0eVN0cmluZyIsIlN0cmluZ3MiLCJzb3VyY2VzU3RyaW5nIiwibWFwIiwic291cmNlIiwidGV4dCIsImxlbmd0aCIsInNlbnNvcnNTdHJpbmciLCJzZW5zb3IiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFnZXMvTm90aWZpY2F0aW9uc1BhZ2VWMi9ub3RpZmljYXRpb25VdGlscy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGkxOG4gZnJvbSAnc3JjL3V0aWxpdGllcy9pMThuJztcblxuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb24ge1xuICBhdmFpbGFibGVfdHlwZXM/OiBzdHJpbmdbXTtcbiAgaWQ6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICBzZXZlcml0eTogc3RyaW5nO1xuICB3YXRlcl9hdXRob3JpdGllczogQWR2YW5jZWRTZWxlY3Rpb247XG4gIHBvaW50czogQWR2YW5jZWRTZWxlY3Rpb247XG4gIHRhZ3M6IEFkdmFuY2VkU2VsZWN0aW9uO1xuICBzZW5zb3JzOiBBZHZhbmNlZFNlbGVjdGlvbjtcbiAgYWN0aW9uczogYW55O1xuICBwdW1wX29ubHk6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZHZhbmNlZFNlbGVjdGlvbiB7XG4gIHNlbGVjdGlvbl90eXBlOiBzdHJpbmc7XG4gIHNldDogYW55O1xuICB3YXRlcl9hdXRob3JpdHk/OiBhbnk7XG59XG5cbmV4cG9ydCBjb25zdCBtb2NrVHlwZXM6IGFueSA9IFtcbiAgJ1BvbGx1dGlvbkFsZXJ0Q29uZmlnJyxcbiAgJ0RhdGFsb2dnZXJUaHJlc2hvbGRBbGVydENvbmZpZycsXG4gICdEYXRhbG9nZ2VyT3ZlcmZsb3dBbGVydENvbmZpZycsXG4gICdEZXZpY2VIZWFsdGhBbGVydENvbmZpZycsXG4gICdXYmVBbGVydENvbmZpZycsXG4gICdXYmVXZWVrbHlEaWdlc3RBbGVydENvbmZpZycsXG4gICdSb2xsaW5nRXZlbnRBbGVydENvbmZpZycsXG4gICdEYXRhbG9nZ2VyUHVtcEFsZXJ0Q29uZmlnJyxcbl07XG5cbmV4cG9ydCBjb25zdCBnZXRFbXB0eU5vdGlmaWNhdGlvbiA9ICgpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBhdmFpbGFibGVfdHlwZXM6IFtcbiAgICAgICdQb2xsdXRpb25BbGVydENvbmZpZycsXG4gICAgICAnRGF0YWxvZ2dlclRocmVzaG9sZEFsZXJ0Q29uZmlnJyxcbiAgICAgICdEYXRhbG9nZ2VyT3ZlcmZsb3dBbGVydENvbmZpZycsXG4gICAgICAnRGV2aWNlSGVhbHRoQWxlcnRDb25maWcnLFxuICAgICAgJ1diZUFsZXJ0Q29uZmlnJyxcbiAgICAgICdXYmVXZWVrbHlEaWdlc3RBbGVydENvbmZpZycsXG4gICAgICAnUm9sbGluZ0V2ZW50QWxlcnRDb25maWcnLFxuICAgICAgJ0RhdGFsb2dnZXJQdW1wQWxlcnRDb25maWcnLFxuICAgIF0sXG4gICAgaWQ6ICcnLFxuICAgIHR5cGU6ICcnLFxuICAgIHNldmVyaXR5OiAnbWVkaXVtJyxcbiAgICB3YXRlcl9hdXRob3JpdGllczoge1xuICAgICAgc2VsZWN0aW9uX3R5cGU6ICdhbGwnLFxuICAgICAgc2V0OiBbXSxcbiAgICB9LFxuICAgIHBvaW50czoge1xuICAgICAgc2VsZWN0aW9uX3R5cGU6ICdhbGwnLFxuICAgICAgc2V0OiBbXSxcbiAgICB9LFxuICAgIHRhZ3M6IHtcbiAgICAgIHNlbGVjdGlvbl90eXBlOiAnYWxsJyxcbiAgICAgIHNldDogW10sXG4gICAgfSxcbiAgICBzZW5zb3JzOiB7XG4gICAgICBzZWxlY3Rpb25fdHlwZTogJ2FsbCcsXG4gICAgICBzZXQ6IFtdLFxuICAgIH0sXG4gICAgYWN0aW9uczogeyB0ZWxlZ3JhbTogZmFsc2UsIGVtYWlsOiB0cnVlLCBzbXM6IGZhbHNlIH0sXG4gICAgcHVtcF9vbmx5OiAnMCcsXG4gICAgZGlyZWN0X2ltcGFjdF9vbmx5OiB1bmRlZmluZWQsXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3Qgc2V2ZXJpdGllc1JhZGlvQnV0dG9ucyA9IFtcbiAge1xuICAgIGxhYmVsOiAnbm90aWZpY2F0aW9uc19wYWdlLmVkaXRfZXh0cmVtZScsXG4gICAgbmFtZTogJ3NldmVyaXR5JyxcbiAgICB2YWx1ZTogJ2V4dHJlbWUnLFxuICB9LFxuICB7XG4gICAgbGFiZWw6ICdub3RpZmljYXRpb25zX3BhZ2UuZWRpdF9oaWdoJyxcbiAgICBuYW1lOiAnc2V2ZXJpdHknLFxuICAgIHZhbHVlOiAnaGlnaCcsXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogJ25vdGlmaWNhdGlvbnNfcGFnZS5lZGl0X21lZGl1bScsXG4gICAgbmFtZTogJ3NldmVyaXR5JyxcbiAgICB2YWx1ZTogJ21lZGl1bScsXG4gIH0sXG5dO1xuXG5leHBvcnQgY29uc3Qgd2F0ZXJBdXRob3JpdGllc1JhZGlvQnV0dG9ucyA9IFtcbiAge1xuICAgIGxhYmVsOiAnbm90aWZpY2F0aW9uc19wYWdlLmVkaXRfYWxsJyxcbiAgICBuYW1lOiAnd2F0ZXJfYXV0aG9yaXRpZXMnLFxuICAgIHZhbHVlOiAnYWxsJyxcbiAgfSxcbiAge1xuICAgIGxhYmVsOiAnbm90aWZpY2F0aW9uc19wYWdlLmVkaXRfaW5jbHVkZScsXG4gICAgbmFtZTogJ3dhdGVyX2F1dGhvcml0aWVzJyxcbiAgICB2YWx1ZTogJ2luY2x1ZGUnLFxuICB9LFxuICB7XG4gICAgbGFiZWw6ICdub3RpZmljYXRpb25zX3BhZ2UuZWRpdF9leGNsdWRlJyxcbiAgICBuYW1lOiAnd2F0ZXJfYXV0aG9yaXRpZXMnLFxuICAgIHZhbHVlOiAnZXhjbHVkZScsXG4gIH0sXG5dO1xuXG5leHBvcnQgY29uc3Qgc291cmNlc1JhZGlvQnV0dG9ucyA9IFtcbiAge1xuICAgIGxhYmVsOiAnbm90aWZpY2F0aW9uc19wYWdlLmVkaXRfYWxsJyxcbiAgICBuYW1lOiAnc291cmNlcycsXG4gICAgdmFsdWU6ICdhbGwnLFxuICB9LFxuICB7XG4gICAgbGFiZWw6ICdub3RpZmljYXRpb25zX3BhZ2UuZWRpdF9pbmNsdWRlJyxcbiAgICBuYW1lOiAnc291cmNlcycsXG4gICAgdmFsdWU6ICdpbmNsdWRlJyxcbiAgfSxcbiAge1xuICAgIGxhYmVsOiAnbm90aWZpY2F0aW9uc19wYWdlLmVkaXRfZXhjbHVkZScsXG4gICAgbmFtZTogJ3NvdXJjZXMnLFxuICAgIHZhbHVlOiAnZXhjbHVkZScsXG4gIH0sXG5dO1xuXG5leHBvcnQgY29uc3Qgc2VuZFZpYUNoZWNrQm94ZXMgPSBbXG4gIHtcbiAgICBsYWJlbDogJ25vdGlmaWNhdGlvbnNfcGFnZS5lZGl0X3RlbGVncmFtJyxcbiAgICBuYW1lOiAnYWN0aW9ucycsXG4gICAgdmFsdWU6ICd0ZWxlZ3JhbScsXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogJ25vdGlmaWNhdGlvbnNfcGFnZS5lZGl0X2VtYWlsJyxcbiAgICBuYW1lOiAnYWN0aW9ucycsXG4gICAgdmFsdWU6ICdlbWFpbCcsXG4gIH0sXG4gIC8vIHtcbiAgLy8gICBsYWJlbDogJ25vdGlmaWNhdGlvbnNfcGFnZS5lZGl0X3NtcycsXG4gIC8vICAgbmFtZTogJ2FjdGlvbnMnLFxuICAvLyAgIHZhbHVlOiAnc21zJyxcbiAgLy8gfSxcbl07XG5cbmV4cG9ydCBjb25zdCBnZXROb3RpZmljYXRpb25TdHJpbmcgPSAobm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb24pID0+IHtcbiAgY29uc3QgdHJhbnNJZHggPSAnbm90aWZpY2F0aW9uc19wYWdlLm5vdGlmaWNhdGlvbnNfdGV4dC4nO1xuICBjb25zdCB0aXRsZSA9IGkxOG4udChgJHt0cmFuc0lkeH10aXRsZWApO1xuICBsZXQgdHlwZVN0cmluZyA9ICcnO1xuICBsZXQgc2FtcGxlU3RyaW5nID0gJyc7XG4gIHNhbXBsZVN0cmluZyA9XG4gICAgbm90aWZpY2F0aW9uLnB1bXBfb25seSA9PT0gJzEnXG4gICAgICA/IGAgJHtpMThuLnQoJ25vdGlmaWNhdGlvbnNfcGFnZS5zYW1wbGVyX2FjdGl2YXRlZCcpfWBcbiAgICAgIDogJy4nO1xuXG4gIHN3aXRjaCAobm90aWZpY2F0aW9uLnR5cGUpIHtcbiAgICBjYXNlICdSb2xsaW5nRXZlbnRBbGVydENvbmZpZyc6XG4gICAgICB0eXBlU3RyaW5nID0gW1xuICAgICAgICB0aXRsZSxcbiAgICAgICAgZ2V0Tm90aWZpY2F0aW9uQWxlcnRzU3RyaW5nKG5vdGlmaWNhdGlvbiksXG4gICAgICAgIGkxOG4udChgJHt0cmFuc0lkeH1hYm91dF9wb2xsdXRpb25fZXZlbnRzYCksXG4gICAgICAgIGdldE5vdGlmaWNhdGlvblNldmVyaXRpZXNTdHJpbmcobm90aWZpY2F0aW9uKSxcbiAgICAgICAgZ2V0Tm90aWZpY2F0aW9uU291cmNlc1N0cmluZyhub3RpZmljYXRpb24sIHRyYW5zSWR4KSxcbiAgICAgIF0uam9pbignICcpO1xuICAgICAgdHlwZVN0cmluZyArPSBzYW1wbGVTdHJpbmc7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdQb2xsdXRpb25BbGVydENvbmZpZyc6XG4gICAgICB0eXBlU3RyaW5nID0gW1xuICAgICAgICB0aXRsZSxcbiAgICAgICAgZ2V0Tm90aWZpY2F0aW9uQWxlcnRzU3RyaW5nKG5vdGlmaWNhdGlvbiksXG4gICAgICAgIGkxOG4udChgJHt0cmFuc0lkeH1hYm91dF9wb2xsdXRpb25fZXZlbnRzYCksXG4gICAgICAgIGdldE5vdGlmaWNhdGlvblNldmVyaXRpZXNTdHJpbmcobm90aWZpY2F0aW9uKSxcbiAgICAgICAgZ2V0Tm90aWZpY2F0aW9uU291cmNlc1N0cmluZyhub3RpZmljYXRpb24sIHRyYW5zSWR4KSxcbiAgICAgIF0uam9pbignICcpO1xuICAgICAgdHlwZVN0cmluZyArPSBzYW1wbGVTdHJpbmc7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdEYXRhbG9nZ2VyVGhyZXNob2xkQWxlcnRDb25maWcnOlxuICAgICAgdHlwZVN0cmluZyA9IGAke3RpdGxlfSAke2dldE5vdGlmaWNhdGlvbkFsZXJ0c1N0cmluZyhcbiAgICAgICAgbm90aWZpY2F0aW9uLFxuICAgICAgKX0gJHtpMThuLnQoXG4gICAgICAgIHRyYW5zSWR4ICsgJ3NlbnNvcnNfdGhyZXNob2xkcycsXG4gICAgICApfSR7Z2V0Tm90aWZpY2F0aW9uU2Vuc29yc1N0cmluZyhub3RpZmljYXRpb24pfS5gO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnRGF0YWxvZ2dlck92ZXJmbG93QWxlcnRDb25maWcnOlxuICAgICAgdHlwZVN0cmluZyA9IGAke3RpdGxlfSAke2dldE5vdGlmaWNhdGlvbkFsZXJ0c1N0cmluZyhcbiAgICAgICAgbm90aWZpY2F0aW9uLFxuICAgICAgKX0gJHtpMThuLnQodHJhbnNJZHggKyAnb3ZlcmZsb3dfZXZlbnQnKX0sICR7Z2V0Tm90aWZpY2F0aW9uU291cmNlc1N0cmluZyhcbiAgICAgICAgbm90aWZpY2F0aW9uLFxuICAgICAgICB0cmFuc0lkeCxcbiAgICAgICl9LmA7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdEZXZpY2VIZWFsdGhBbGVydENvbmZpZyc6XG4gICAgICB0eXBlU3RyaW5nID0gYCR7dGl0bGV9ICR7Z2V0Tm90aWZpY2F0aW9uQWxlcnRzU3RyaW5nKFxuICAgICAgICBub3RpZmljYXRpb24sXG4gICAgICApfSAke2kxOG4udChcbiAgICAgICAgdHJhbnNJZHggKyAnZGV2aWNlX21hbGZ1bmN0aW9uaW5nJyxcbiAgICAgICl9ICR7Z2V0Tm90aWZpY2F0aW9uU291cmNlc1N0cmluZyhub3RpZmljYXRpb24sIHRyYW5zSWR4KX0uYDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ1diZVdlZWtseURpZ2VzdEFsZXJ0Q29uZmlnJzpcbiAgICAgIHR5cGVTdHJpbmcgPSBgJHt0aXRsZX0gJHtnZXROb3RpZmljYXRpb25BbGVydHNTdHJpbmcoXG4gICAgICAgIG5vdGlmaWNhdGlvbixcbiAgICAgICl9ICR7aTE4bi50KHRyYW5zSWR4ICsgJ3diZV93ZWVrbHknKX0uYDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ1diZUFsZXJ0Q29uZmlnJzpcbiAgICAgIHR5cGVTdHJpbmcgPSBgJHt0aXRsZX0gJHtnZXROb3RpZmljYXRpb25BbGVydHNTdHJpbmcoXG4gICAgICAgIG5vdGlmaWNhdGlvbixcbiAgICAgICl9ICR7aTE4bi50KHRyYW5zSWR4ICsgJ3diZV9hbGVydCcpfS5gO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnRGF0YWxvZ2dlclB1bXBBbGVydENvbmZpZyc6XG4gICAgICB0eXBlU3RyaW5nID0gYCR7dGl0bGV9ICR7Z2V0Tm90aWZpY2F0aW9uQWxlcnRzU3RyaW5nKFxuICAgICAgICBub3RpZmljYXRpb24sXG4gICAgICApfSAke2kxOG4udChcbiAgICAgICAgdHJhbnNJZHggKyAnZGF0YWxvZ2dlcl9wdW1wJyxcbiAgICAgICl9LCAke2dldE5vdGlmaWNhdGlvblNvdXJjZXNTdHJpbmcobm90aWZpY2F0aW9uLCB0cmFuc0lkeCl9LmA7XG4gICAgICBicmVhaztcbiAgfVxuICByZXR1cm4gdHlwZVN0cmluZztcbn07XG5cbmZ1bmN0aW9uIGdldE5vdGlmaWNhdGlvbkFsZXJ0c1N0cmluZyhub3RpZmljYXRpb24pIHtcbiAgY29uc3Qgc2VuZFZpYSA9IG5vdGlmaWNhdGlvbi5hY3Rpb25zO1xuICBsZXQgdGVtcEFycmF5OiBzdHJpbmdbXSA9IFtdO1xuXG4gIGxldCBzZW5kVmlhU3RyaW5nID0gJyc7XG4gIGZvciAoY29uc3Qga2V5IGluIHNlbmRWaWEpIHtcbiAgICBpZiAoc2VuZFZpYVtrZXldKSB7XG4gICAgICB0ZW1wQXJyYXkucHVzaChpMThuLnQoYG5vdGlmaWNhdGlvbnNfcGFnZS5lZGl0XyR7a2V5fWApKTtcbiAgICB9XG4gIH1cbiAgc2VuZFZpYVN0cmluZyA9IHRlbXBBcnJheS5qb2luKCcsICcpO1xuICBsZXQgYW5kID0gaTE4bi50KGBub3RpZmljYXRpb25zX3BhZ2Uubm90aWZpY2F0aW9uc190ZXh0LmFuZGApO1xuICBhbmQgKz0gYW5kID09PSAnJicgPyAnICcgOiAnJztcbiAgc2VuZFZpYVN0cmluZyA9IHNlbmRWaWFTdHJpbmcucmVwbGFjZSgvLFxccyhbXixdKykkLywgYCAke2FuZH0kMWApO1xuICByZXR1cm4gc2VuZFZpYVN0cmluZztcbn1cblxuZnVuY3Rpb24gZ2V0Tm90aWZpY2F0aW9uU2V2ZXJpdGllc1N0cmluZyhub3RpZmljYXRpb24pIHtcbiAgY29uc3QgeyBzZXZlcml0eSB9ID0gbm90aWZpY2F0aW9uO1xuICBsZXQgc2V2ZXJpdHlTdHJpbmcgPSAnJztcbiAgc2V2ZXJpdHkgPT09ICdleHRyZW1lJ1xuICAgID8gKHNldmVyaXR5U3RyaW5nID0gaTE4bi50KCdub3RpZmljYXRpb25zX3BhZ2UuZXh0cmVtZScpKVxuICAgIDogKHNldmVyaXR5U3RyaW5nID1cbiAgICAgICAgaTE4bi50KGBub3RpZmljYXRpb25zX3BhZ2UuJHtzZXZlcml0eX1gKSArXG4gICAgICAgICcgJyArXG4gICAgICAgIGkxOG4udChgbm90aWZpY2F0aW9uc19wYWdlLm5vdGlmaWNhdGlvbnNfdGV4dC5vcl9oaWdoZXJgKSk7XG4gIHJldHVybiBzZXZlcml0eVN0cmluZztcbn1cblxuZnVuY3Rpb24gZ2V0Tm90aWZpY2F0aW9uU291cmNlc1N0cmluZyhub3RpZmljYXRpb24sIHRyYW5zSWR4KSB7XG4gIGNvbnN0IHsgc2V0IH0gPSBub3RpZmljYXRpb24ucG9pbnRzO1xuICBjb25zdCB7IHNlbGVjdGlvbl90eXBlIH0gPSBub3RpZmljYXRpb24ucG9pbnRzO1xuXG4gIGxldCBTdHJpbmdzOiBzdHJpbmdbXSA9IFtdO1xuICBsZXQgc291cmNlc1N0cmluZyA9ICcnO1xuICBpZiAoc2VsZWN0aW9uX3R5cGUgPT09ICdhbGwnKVxuICAgIFN0cmluZ3MucHVzaChpMThuLnQoYCR7dHJhbnNJZHh9aW5fYWxsX3NvdXJjZXNgKSk7XG4gIGlmIChzZWxlY3Rpb25fdHlwZSA9PT0gJ2V4Y2x1ZGUnKVxuICAgIFN0cmluZ3MucHVzaChpMThuLnQoYCR7dHJhbnNJZHh9ZXhjbHVkaW5nYCkpO1xuICBpZiAoc2VsZWN0aW9uX3R5cGUgPT09ICdpbmNsdWRlJylcbiAgICBzb3VyY2VzU3RyaW5nID0gaTE4bi50KGAke3RyYW5zSWR4fWluYCkgKyAnICc7XG4gIGlmIChzZWxlY3Rpb25fdHlwZSAhPT0gJ2FsbCcpIHNldC5tYXAoKHNvdXJjZSkgPT4gU3RyaW5ncy5wdXNoKHNvdXJjZS50ZXh0KSk7XG4gIHNvdXJjZXNTdHJpbmcgKz0gU3RyaW5ncy5qb2luKFN0cmluZ3MubGVuZ3RoID4gMSA/ICcsICcgOiAnICcpO1xuICByZXR1cm4gc291cmNlc1N0cmluZztcbn1cblxuZnVuY3Rpb24gZ2V0Tm90aWZpY2F0aW9uU2Vuc29yc1N0cmluZyhub3RpZmljYXRpb24pIHtcbiAgY29uc3QgeyBzZXQgfSA9IG5vdGlmaWNhdGlvbi5zZW5zb3JzO1xuICBjb25zdCB7IHNlbGVjdGlvbl90eXBlIH0gPSBub3RpZmljYXRpb24uc2Vuc29ycztcblxuICBsZXQgU3RyaW5nczogc3RyaW5nW10gPSBbXTtcbiAgbGV0IHNlbnNvcnNTdHJpbmcgPSAnJztcbiAgaWYgKHNlbGVjdGlvbl90eXBlICE9PSAnYWxsJykge1xuICAgIHNldC5tYXAoKHNlbnNvcikgPT4gU3RyaW5ncy5wdXNoKHNlbnNvci50ZXh0KSk7XG4gICAgc2Vuc29yc1N0cmluZyA9ICc6ICc7XG4gICAgc2Vuc29yc1N0cmluZyArPSBTdHJpbmdzLmpvaW4oJywgJyk7XG4gIH1cbiAgcmV0dXJuIHNlbnNvcnNTdHJpbmc7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFxQk8sTUFBTUMsU0FBYyxHQUFHLENBQzVCLHNCQUFzQixFQUN0QixnQ0FBZ0MsRUFDaEMsK0JBQStCLEVBQy9CLHlCQUF5QixFQUN6QixnQkFBZ0IsRUFDaEIsNEJBQTRCLEVBQzVCLHlCQUF5QixFQUN6QiwyQkFBMkIsQ0FDNUI7QUFBQ0MsT0FBQSxDQUFBRCxTQUFBLEdBQUFBLFNBQUE7QUFFSyxNQUFNRSxvQkFBb0IsR0FBR0EsQ0FBQSxLQUFNO0VBQ3hDLE9BQU87SUFDTEMsZUFBZSxFQUFFLENBQ2Ysc0JBQXNCLEVBQ3RCLGdDQUFnQyxFQUNoQywrQkFBK0IsRUFDL0IseUJBQXlCLEVBQ3pCLGdCQUFnQixFQUNoQiw0QkFBNEIsRUFDNUIseUJBQXlCLEVBQ3pCLDJCQUEyQixDQUM1QjtJQUNEQyxFQUFFLEVBQUUsRUFBRTtJQUNOQyxJQUFJLEVBQUUsRUFBRTtJQUNSQyxRQUFRLEVBQUUsUUFBUTtJQUNsQkMsaUJBQWlCLEVBQUU7TUFDakJDLGNBQWMsRUFBRSxLQUFL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
187
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaTE4biIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwibW9ja1R5cGVzIiwiZXhwb3J0cyIsImdldEVtcHR5Tm90aWZpY2F0aW9uIiwiYXZhaWxhYmxlX3R5cGVzIiwiaWQiLCJ0eXBlIiwic2V2ZXJpdHkiLCJ3YXRlcl9hdXRob3JpdGllcyIsInNlbGVjdGlvbl90eXBlIiwic2V0IiwicG9pbnRzIiwidGFncyIsInNlbnNvcnMiLCJhY3Rpb25zIiwidGVsZWdyYW0iLCJlbWFpbCIsInNtcyIsInB1bXBfb25seSIsImRpcmVjdF9pbXBhY3Rfb25seSIsInVuZGVmaW5lZCIsInNldmVyaXRpZXNSYWRpb0J1dHRvbnMiLCJsYWJlbCIsIm5hbWUiLCJ2YWx1ZSIsIndhdGVyQXV0aG9yaXRpZXNSYWRpb0J1dHRvbnMiLCJzb3VyY2VzUmFkaW9CdXR0b25zIiwic2VuZFZpYUNoZWNrQm94ZXMiLCJnZXROb3RpZmljYXRpb25TdHJpbmciLCJub3RpZmljYXRpb24iLCJ0cmFuc0lkeCIsInRpdGxlIiwiaTE4biIsInQiLCJjb25jYXQiLCJ0eXBlU3RyaW5nIiwic2FtcGxlU3RyaW5nIiwiZ2V0Tm90aWZpY2F0aW9uQWxlcnRzU3RyaW5nIiwiZ2V0Tm90aWZpY2F0aW9uU2V2ZXJpdGllc1N0cmluZyIsImdldE5vdGlmaWNhdGlvblNvdXJjZXNTdHJpbmciLCJqb2luIiwiZ2V0Tm90aWZpY2F0aW9uU2Vuc29yc1N0cmluZyIsInNlbmRWaWEiLCJ0ZW1wQXJyYXkiLCJzZW5kVmlhU3RyaW5nIiwia2V5IiwicHVzaCIsImFuZCIsInJlcGxhY2UiLCJzZXZlcml0eVN0cmluZyIsIlN0cmluZ3MiLCJzb3VyY2VzU3RyaW5nIiwibWFwIiwic291cmNlIiwidGV4dCIsImxlbmd0aCIsInNlbnNvcnNTdHJpbmciLCJzZW5zb3IiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFnZXMvTm90aWZpY2F0aW9uc1BhZ2VWMi9ub3RpZmljYXRpb25VdGlscy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGkxOG4gZnJvbSAnc3JjL3V0aWxpdGllcy9pMThuJztcblxuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb24ge1xuICBhdmFpbGFibGVfdHlwZXM/OiBzdHJpbmdbXTtcbiAgaWQ6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICBzZXZlcml0eTogc3RyaW5nO1xuICB3YXRlcl9hdXRob3JpdGllczogQWR2YW5jZWRTZWxlY3Rpb247XG4gIHBvaW50czogQWR2YW5jZWRTZWxlY3Rpb247XG4gIHRhZ3M6IEFkdmFuY2VkU2VsZWN0aW9uO1xuICBzZW5zb3JzOiBBZHZhbmNlZFNlbGVjdGlvbjtcbiAgYWN0aW9uczogYW55O1xuICBwdW1wX29ubHk6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZHZhbmNlZFNlbGVjdGlvbiB7XG4gIHNlbGVjdGlvbl90eXBlOiBzdHJpbmc7XG4gIHNldDogYW55O1xuICB3YXRlcl9hdXRob3JpdHk/OiBhbnk7XG59XG5cbmV4cG9ydCBjb25zdCBtb2NrVHlwZXM6IGFueSA9IFtcbiAgJ1BvbGx1dGlvbkFsZXJ0Q29uZmlnJyxcbiAgJ0RhdGFsb2dnZXJUaHJlc2hvbGRBbGVydENvbmZpZycsXG4gICdEYXRhbG9nZ2VyT3ZlcmZsb3dBbGVydENvbmZpZycsXG4gICdEZXZpY2VIZWFsdGhBbGVydENvbmZpZycsXG4gICdXYmVBbGVydENvbmZpZycsXG4gICdXYmVXZWVrbHlEaWdlc3RBbGVydENvbmZpZycsXG4gICdSb2xsaW5nRXZlbnRBbGVydENvbmZpZycsXG4gICdEYXRhbG9nZ2VyUHVtcEFsZXJ0Q29uZmlnJyxcbl07XG5cbmV4cG9ydCBjb25zdCBnZXRFbXB0eU5vdGlmaWNhdGlvbiA9ICgpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBhdmFpbGFibGVfdHlwZXM6IFtcbiAgICAgICdQb2xsdXRpb25BbGVydENvbmZpZycsXG4gICAgICAnRGF0YWxvZ2dlclRocmVzaG9sZEFsZXJ0Q29uZmlnJyxcbiAgICAgICdEYXRhbG9nZ2VyT3ZlcmZsb3dBbGVydENvbmZpZycsXG4gICAgICAnRGV2aWNlSGVhbHRoQWxlcnRDb25maWcnLFxuICAgICAgJ1diZUFsZXJ0Q29uZmlnJyxcbiAgICAgICdXYmVXZWVrbHlEaWdlc3RBbGVydENvbmZpZycsXG4gICAgICAnUm9sbGluZ0V2ZW50QWxlcnRDb25maWcnLFxuICAgICAgJ0RhdGFsb2dnZXJQdW1wQWxlcnRDb25maWcnLFxuICAgIF0sXG4gICAgaWQ6ICcnLFxuICAgIHR5cGU6ICcnLFxuICAgIHNldmVyaXR5OiAnbWVkaXVtJyxcbiAgICB3YXRlcl9hdXRob3JpdGllczoge1xuICAgICAgc2VsZWN0aW9uX3R5cGU6ICdhbGwnLFxuICAgICAgc2V0OiBbXSxcbiAgICB9LFxuICAgIHBvaW50czoge1xuICAgICAgc2VsZWN0aW9uX3R5cGU6ICdhbGwnLFxuICAgICAgc2V0OiBbXSxcbiAgICB9LFxuICAgIHRhZ3M6IHtcbiAgICAgIHNlbGVjdGlvbl90eXBlOiAnYWxsJyxcbiAgICAgIHNldDogW10sXG4gICAgfSxcbiAgICBzZW5zb3JzOiB7XG4gICAgICBzZWxlY3Rpb25fdHlwZTogJ2FsbCcsXG4gICAgICBzZXQ6IFtdLFxuICAgIH0sXG4gICAgYWN0aW9uczogeyB0ZWxlZ3JhbTogZmFsc2UsIGVtYWlsOiB0cnVlLCBzbXM6IGZhbHNlIH0sXG4gICAgcHVtcF9vbmx5OiAnMCcsXG4gICAgZGlyZWN0X2ltcGFjdF9vbmx5OiB1bmRlZmluZWQsXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3Qgc2V2ZXJpdGllc1JhZGlvQnV0dG9ucyA9IFtcbiAge1xuICAgIGxhYmVsOiAnbm90aWZpY2F0aW9uc19wYWdlLmVkaXRfZXh0cmVtZScsXG4gICAgbmFtZTogJ3NldmVyaXR5JyxcbiAgICB2YWx1ZTogJ2V4dHJlbWUnLFxuICB9LFxuICB7XG4gICAgbGFiZWw6ICdub3RpZmljYXRpb25zX3BhZ2UuZWRpdF9oaWdoJyxcbiAgICBuYW1lOiAnc2V2ZXJpdHknLFxuICAgIHZhbHVlOiAnaGlnaCcsXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogJ25vdGlmaWNhdGlvbnNfcGFnZS5lZGl0X21lZGl1bScsXG4gICAgbmFtZTogJ3NldmVyaXR5JyxcbiAgICB2YWx1ZTogJ21lZGl1bScsXG4gIH0sXG5dO1xuXG5leHBvcnQgY29uc3Qgd2F0ZXJBdXRob3JpdGllc1JhZGlvQnV0dG9ucyA9IFtcbiAge1xuICAgIGxhYmVsOiAnbm90aWZpY2F0aW9uc19wYWdlLmVkaXRfYWxsJyxcbiAgICBuYW1lOiAnd2F0ZXJfYXV0aG9yaXRpZXMnLFxuICAgIHZhbHVlOiAnYWxsJyxcbiAgfSxcbiAge1xuICAgIGxhYmVsOiAnbm90aWZpY2F0aW9uc19wYWdlLmVkaXRfaW5jbHVkZScsXG4gICAgbmFtZTogJ3dhdGVyX2F1dGhvcml0aWVzJyxcbiAgICB2YWx1ZTogJ2luY2x1ZGUnLFxuICB9LFxuICB7XG4gICAgbGFiZWw6ICdub3RpZmljYXRpb25zX3BhZ2UuZWRpdF9leGNsdWRlJyxcbiAgICBuYW1lOiAnd2F0ZXJfYXV0aG9yaXRpZXMnLFxuICAgIHZhbHVlOiAnZXhjbHVkZScsXG4gIH0sXG5dO1xuXG5leHBvcnQgY29uc3Qgc291cmNlc1JhZGlvQnV0dG9ucyA9IFtcbiAge1xuICAgIGxhYmVsOiAnbm90aWZpY2F0aW9uc19wYWdlLmVkaXRfYWxsJyxcbiAgICBuYW1lOiAnc291cmNlcycsXG4gICAgdmFsdWU6ICdhbGwnLFxuICB9LFxuICB7XG4gICAgbGFiZWw6ICdub3RpZmljYXRpb25zX3BhZ2UuZWRpdF9pbmNsdWRlJyxcbiAgICBuYW1lOiAnc291cmNlcycsXG4gICAgdmFsdWU6ICdpbmNsdWRlJyxcbiAgfSxcbiAge1xuICAgIGxhYmVsOiAnbm90aWZpY2F0aW9uc19wYWdlLmVkaXRfZXhjbHVkZScsXG4gICAgbmFtZTogJ3NvdXJjZXMnLFxuICAgIHZhbHVlOiAnZXhjbHVkZScsXG4gIH0sXG5dO1xuXG5leHBvcnQgY29uc3Qgc2VuZFZpYUNoZWNrQm94ZXMgPSBbXG4gIHtcbiAgICBsYWJlbDogJ25vdGlmaWNhdGlvbnNfcGFnZS5lZGl0X3RlbGVncmFtJyxcbiAgICBuYW1lOiAnYWN0aW9ucycsXG4gICAgdmFsdWU6ICd0ZWxlZ3JhbScsXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogJ25vdGlmaWNhdGlvbnNfcGFnZS5lZGl0X2VtYWlsJyxcbiAgICBuYW1lOiAnYWN0aW9ucycsXG4gICAgdmFsdWU6ICdlbWFpbCcsXG4gIH0sXG4gIC8vIHtcbiAgLy8gICBsYWJlbDogJ25vdGlmaWNhdGlvbnNfcGFnZS5lZGl0X3NtcycsXG4gIC8vICAgbmFtZTogJ2FjdGlvbnMnLFxuICAvLyAgIHZhbHVlOiAnc21zJyxcbiAgLy8gfSxcbl07XG5cbmV4cG9ydCBjb25zdCBnZXROb3RpZmljYXRpb25TdHJpbmcgPSAobm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb24pID0+IHtcbiAgY29uc3QgdHJhbnNJZHggPSAnbm90aWZpY2F0aW9uc19wYWdlLm5vdGlmaWNhdGlvbnNfdGV4dC4nO1xuICBjb25zdCB0aXRsZSA9IGkxOG4udChgJHt0cmFuc0lkeH10aXRsZWApO1xuICBsZXQgdHlwZVN0cmluZyA9ICcnO1xuICBsZXQgc2FtcGxlU3RyaW5nID0gJyc7XG4gIHNhbXBsZVN0cmluZyA9XG4gICAgbm90aWZpY2F0aW9uLnB1bXBfb25seSA9PT0gJzEnXG4gICAgICA/IGAgJHtpMThuLnQoJ25vdGlmaWNhdGlvbnNfcGFnZS5zYW1wbGVyX2FjdGl2YXRlZCcpfWBcbiAgICAgIDogJy4nO1xuXG4gIHN3aXRjaCAobm90aWZpY2F0aW9uLnR5cGUpIHtcbiAgICBjYXNlICdSb2xsaW5nRXZlbnRBbGVydENvbmZpZyc6XG4gICAgICB0eXBlU3RyaW5nID0gW1xuICAgICAgICB0aXRsZSxcbiAgICAgICAgZ2V0Tm90aWZpY2F0aW9uQWxlcnRzU3RyaW5nKG5vdGlmaWNhdGlvbiksXG4gICAgICAgIGkxOG4udChgJHt0cmFuc0lkeH1hYm91dF9wb2xsdXRpb25fZXZlbnRzYCksXG4gICAgICAgIGdldE5vdGlmaWNhdGlvblNldmVyaXRpZXNTdHJpbmcobm90aWZpY2F0aW9uKSxcbiAgICAgICAgZ2V0Tm90aWZpY2F0aW9uU291cmNlc1N0cmluZyhub3RpZmljYXRpb24sIHRyYW5zSWR4KSxcbiAgICAgIF0uam9pbignICcpO1xuICAgICAgdHlwZVN0cmluZyArPSBzYW1wbGVTdHJpbmc7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdQb2xsdXRpb25BbGVydENvbmZpZyc6XG4gICAgICB0eXBlU3RyaW5nID0gW1xuICAgICAgICB0aXRsZSxcbiAgICAgICAgZ2V0Tm90aWZpY2F0aW9uQWxlcnRzU3RyaW5nKG5vdGlmaWNhdGlvbiksXG4gICAgICAgIGkxOG4udChgJHt0cmFuc0lkeH1hYm91dF9wb2xsdXRpb25fZXZlbnRzYCksXG4gICAgICAgIGdldE5vdGlmaWNhdGlvblNldmVyaXRpZXNTdHJpbmcobm90aWZpY2F0aW9uKSxcbiAgICAgICAgZ2V0Tm90aWZpY2F0aW9uU291cmNlc1N0cmluZyhub3RpZmljYXRpb24sIHRyYW5zSWR4KSxcbiAgICAgIF0uam9pbignICcpO1xuICAgICAgdHlwZVN0cmluZyArPSBzYW1wbGVTdHJpbmc7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdEYXRhbG9nZ2VyVGhyZXNob2xkQWxlcnRDb25maWcnOlxuICAgICAgdHlwZVN0cmluZyA9IGAke3RpdGxlfSAke2dldE5vdGlmaWNhdGlvbkFsZXJ0c1N0cmluZyhcbiAgICAgICAgbm90aWZpY2F0aW9uLFxuICAgICAgKX0gJHtpMThuLnQoXG4gICAgICAgIHRyYW5zSWR4ICsgJ3NlbnNvcnNfdGhyZXNob2xkcycsXG4gICAgICApfSR7Z2V0Tm90aWZpY2F0aW9uU2Vuc29yc1N0cmluZyhub3RpZmljYXRpb24pfS5gO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnRGF0YWxvZ2dlck92ZXJmbG93QWxlcnRDb25maWcnOlxuICAgICAgdHlwZVN0cmluZyA9IGAke3RpdGxlfSAke2dldE5vdGlmaWNhdGlvbkFsZXJ0c1N0cmluZyhcbiAgICAgICAgbm90aWZpY2F0aW9uLFxuICAgICAgKX0gJHtpMThuLnQodHJhbnNJZHggKyAnb3ZlcmZsb3dfZXZlbnQnKX0sICR7Z2V0Tm90aWZpY2F0aW9uU291cmNlc1N0cmluZyhcbiAgICAgICAgbm90aWZpY2F0aW9uLFxuICAgICAgICB0cmFuc0lkeCxcbiAgICAgICl9LmA7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdEZXZpY2VIZWFsdGhBbGVydENvbmZpZyc6XG4gICAgICB0eXBlU3RyaW5nID0gYCR7dGl0bGV9ICR7Z2V0Tm90aWZpY2F0aW9uQWxlcnRzU3RyaW5nKFxuICAgICAgICBub3RpZmljYXRpb24sXG4gICAgICApfSAke2kxOG4udChcbiAgICAgICAgdHJhbnNJZHggKyAnZGV2aWNlX21hbGZ1bmN0aW9uaW5nJyxcbiAgICAgICl9ICR7Z2V0Tm90aWZpY2F0aW9uU291cmNlc1N0cmluZyhub3RpZmljYXRpb24sIHRyYW5zSWR4KX0uYDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ1diZVdlZWtseURpZ2VzdEFsZXJ0Q29uZmlnJzpcbiAgICAgIHR5cGVTdHJpbmcgPSBgJHt0aXRsZX0gJHtnZXROb3RpZmljYXRpb25BbGVydHNTdHJpbmcoXG4gICAgICAgIG5vdGlmaWNhdGlvbixcbiAgICAgICl9ICR7aTE4bi50KHRyYW5zSWR4ICsgJ3diZV93ZWVrbHknKX0uYDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ1diZUFsZXJ0Q29uZmlnJzpcbiAgICAgIHR5cGVTdHJpbmcgPSBgJHt0aXRsZX0gJHtnZXROb3RpZmljYXRpb25BbGVydHNTdHJpbmcoXG4gICAgICAgIG5vdGlmaWNhdGlvbixcbiAgICAgICl9ICR7aTE4bi50KHRyYW5zSWR4ICsgJ3diZV9hbGVydCcpfS5gO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnRGF0YWxvZ2dlclB1bXBBbGVydENvbmZpZyc6XG4gICAgICB0eXBlU3RyaW5nID0gYCR7dGl0bGV9ICR7Z2V0Tm90aWZpY2F0aW9uQWxlcnRzU3RyaW5nKFxuICAgICAgICBub3RpZmljYXRpb24sXG4gICAgICApfSAke2kxOG4udChcbiAgICAgICAgdHJhbnNJZHggKyAnZGF0YWxvZ2dlcl9wdW1wJyxcbiAgICAgICl9LCAke2dldE5vdGlmaWNhdGlvblNvdXJjZXNTdHJpbmcobm90aWZpY2F0aW9uLCB0cmFuc0lkeCl9LmA7XG4gICAgICBicmVhaztcbiAgfVxuICByZXR1cm4gdHlwZVN0cmluZztcbn07XG5cbmZ1bmN0aW9uIGdldE5vdGlmaWNhdGlvbkFsZXJ0c1N0cmluZyhub3RpZmljYXRpb24pIHtcbiAgY29uc3Qgc2VuZFZpYSA9IG5vdGlmaWNhdGlvbi5hY3Rpb25zO1xuICBsZXQgdGVtcEFycmF5OiBzdHJpbmdbXSA9IFtdO1xuXG4gIGxldCBzZW5kVmlhU3RyaW5nID0gJyc7XG4gIGZvciAoY29uc3Qga2V5IGluIHNlbmRWaWEpIHtcbiAgICBpZiAoc2VuZFZpYVtrZXldKSB7XG4gICAgICB0ZW1wQXJyYXkucHVzaChpMThuLnQoYG5vdGlmaWNhdGlvbnNfcGFnZS5lZGl0XyR7a2V5fWApKTtcbiAgICB9XG4gIH1cbiAgc2VuZFZpYVN0cmluZyA9IHRlbXBBcnJheS5qb2luKCcsICcpO1xuICBsZXQgYW5kID0gaTE4bi50KGBub3RpZmljYXRpb25zX3BhZ2Uubm90aWZpY2F0aW9uc190ZXh0LmFuZGApO1xuICBhbmQgKz0gYW5kID09PSAnJicgPyAnICcgOiAnJztcbiAgc2VuZFZpYVN0cmluZyA9IHNlbmRWaWFTdHJpbmcucmVwbGFjZSgvLFxccyhbXixdKykkLywgYCAke2FuZH0kMWApO1xuICByZXR1cm4gc2VuZFZpYVN0cmluZztcbn1cblxuZnVuY3Rpb24gZ2V0Tm90aWZpY2F0aW9uU2V2ZXJpdGllc1N0cmluZyhub3RpZmljYXRpb24pIHtcbiAgY29uc3QgeyBzZXZlcml0eSB9ID0gbm90aWZpY2F0aW9uO1xuICBsZXQgc2V2ZXJpdHlTdHJpbmcgPSAnJztcbiAgc2V2ZXJpdHkgPT09ICdleHRyZW1lJ1xuICAgID8gKHNldmVyaXR5U3RyaW5nID0gaTE4bi50KCdub3RpZmljYXRpb25zX3BhZ2UuZXh0cmVtZScpKVxuICAgIDogKHNldmVyaXR5U3RyaW5nID1cbiAgICAgICAgaTE4bi50KGBub3RpZmljYXRpb25zX3BhZ2UuJHtzZXZlcml0eX1gKSArXG4gICAgICAgICcgJyArXG4gICAgICAgIGkxOG4udChgbm90aWZpY2F0aW9uc19wYWdlLm5vdGlmaWNhdGlvbnNfdGV4dC5vcl9oaWdoZXJgKSk7XG4gIHJldHVybiBzZXZlcml0eVN0cmluZztcbn1cblxuZnVuY3Rpb24gZ2V0Tm90aWZpY2F0aW9uU291cmNlc1N0cmluZyhub3RpZmljYXRpb24sIHRyYW5zSWR4KSB7XG4gIGNvbnN0IHsgc2V0IH0gPSBub3RpZmljYXRpb24ucG9pbnRzO1xuICBjb25zdCB7IHNlbGVjdGlvbl90eXBlIH0gPSBub3RpZmljYXRpb24ucG9pbnRzO1xuXG4gIGxldCBTdHJpbmdzOiBzdHJpbmdbXSA9IFtdO1xuICBsZXQgc291cmNlc1N0cmluZyA9ICcnO1xuICBpZiAoc2VsZWN0aW9uX3R5cGUgPT09ICdhbGwnKVxuICAgIFN0cmluZ3MucHVzaChpMThuLnQoYCR7dHJhbnNJZHh9aW5fYWxsX3NvdXJjZXNgKSk7XG4gIGlmIChzZWxlY3Rpb25fdHlwZSA9PT0gJ2V4Y2x1ZGUnKVxuICAgIFN0cmluZ3MucHVzaChpMThuLnQoYCR7dHJhbnNJZHh9ZXhjbHVkaW5nYCkpO1xuICBpZiAoc2VsZWN0aW9uX3R5cGUgPT09ICdpbmNsdWRlJylcbiAgICBzb3VyY2VzU3RyaW5nID0gaTE4bi50KGAke3RyYW5zSWR4fWluYCkgKyAnICc7XG4gIGlmIChzZWxlY3Rpb25fdHlwZSAhPT0gJ2FsbCcpIHNldC5tYXAoKHNvdXJjZSkgPT4gU3RyaW5ncy5wdXNoKHNvdXJjZS50ZXh0KSk7XG4gIHNvdXJjZXNTdHJpbmcgKz0gU3RyaW5ncy5qb2luKFN0cmluZ3MubGVuZ3RoID4gMSA/ICcsICcgOiAnICcpO1xuICByZXR1cm4gc291cmNlc1N0cmluZztcbn1cblxuZnVuY3Rpb24gZ2V0Tm90aWZpY2F0aW9uU2Vuc29yc1N0cmluZyhub3RpZmljYXRpb24pIHtcbiAgY29uc3QgeyBzZXQgfSA9IG5vdGlmaWNhdGlvbi5zZW5zb3JzO1xuICBjb25zdCB7IHNlbGVjdGlvbl90eXBlIH0gPSBub3RpZmljYXRpb24uc2Vuc29ycztcblxuICBsZXQgU3RyaW5nczogc3RyaW5nW10gPSBbXTtcbiAgbGV0IHNlbnNvcnNTdHJpbmcgPSAnJztcbiAgaWYgKHNlbGVjdGlvbl90eXBlICE9PSAnYWxsJykge1xuICAgIHNldC5tYXAoKHNlbnNvcikgPT4gU3RyaW5ncy5wdXNoKHNlbnNvci50ZXh0KSk7XG4gICAgc2Vuc29yc1N0cmluZyA9ICc6ICc7XG4gICAgc2Vuc29yc1N0cmluZyArPSBTdHJpbmdzLmpvaW4oJywgJyk7XG4gIH1cbiAgcmV0dXJuIHNlbnNvcnNTdHJpbmc7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFxQk8sSUFBTUMsU0FBYyxHQUFHLENBQzVCLHNCQUFzQixFQUN0QixnQ0FBZ0MsRUFDaEMsK0JBQStCLEVBQy9CLHlCQUF5QixFQUN6QixnQkFBZ0IsRUFDaEIsNEJBQTRCLEVBQzVCLHlCQUF5QixFQUN6QiwyQkFBMkIsQ0FDNUI7QUFBQ0MsT0FBQSxDQUFBRCxTQUFBLEdBQUFBLFNBQUE7QUFFSyxJQUFNRSxvQkFBb0IsR0FBRyxTQUF2QkEsb0JBQW9CQSxDQUFBLEVBQVM7RUFDeEMsT0FBTztJQUNMQyxlQUFlLEVBQUUsQ0FDZixzQkFBc0IsRUFDdEIsZ0NBQWdDLEVBQ2hDLCtCQUErQixFQUMvQix5QkFBeUIsRUFDekIsZ0JBQWdCLEVBQ2hCLDRCQUE0QixFQUM1Qix5QkFBeUIsRUFDekIsMkJBQTJCLENBQzVCO0lBQ0RDLEVBQUUsRUFBRSxFQUFFO0lBQ05DLElBQUksRUFBRSxFQUFFO0lBQ1JDLFFBQVEsRUFBRSxRQUFRO0lBQ2xCQyxpQkFBaUIsRUFB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