@kando-env/kando-ui 1.2.314-alpha.10 → 1.2.314-alpha.2

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 (670) hide show
  1. package/lib/Router.js +36 -75
  2. package/lib/Widgets/EventsCarousel/EventsCarousel.js +24 -35
  3. package/lib/Widgets/EventsRow/EventsRow.js +26 -39
  4. package/lib/Widgets/Map/GraphUtils.js +4 -6
  5. package/lib/Widgets/Map/Map.js +67 -85
  6. package/lib/Widgets/Map/MapUtils.js +41 -41
  7. package/lib/Widgets/Map/areas/AreaPolygon.js +51 -89
  8. package/lib/Widgets/Map/areas/AreaPolygons.js +28 -34
  9. package/lib/Widgets/Map/areas/AreaUtils.js +50 -51
  10. package/lib/Widgets/Map/areas/Patterns.js +7 -7
  11. package/lib/Widgets/Map/edges/Edge.js +24 -33
  12. package/lib/Widgets/Map/edges/Edges.js +20 -26
  13. package/lib/Widgets/Map/edges/arrows/Arrows.js +24 -45
  14. package/lib/Widgets/Map/events/Event.js +17 -18
  15. package/lib/Widgets/Map/events/EventIndicator.js +58 -55
  16. package/lib/Widgets/Map/events/EventPath.js +25 -25
  17. package/lib/Widgets/Map/events/EventUtils.js +56 -80
  18. package/lib/Widgets/Map/events/NetworkForSpecificEvent.js +17 -19
  19. package/lib/Widgets/Map/events/PointOfEvent.js +29 -35
  20. package/lib/Widgets/Map/events/PointsForSpecificEvent.js +28 -36
  21. package/lib/Widgets/Map/events/Snail.js +19 -21
  22. package/lib/Widgets/Map/graphDNDArea/GraphDNDArea.js +94 -90
  23. package/lib/Widgets/Map/map/FloatingGraph.js +24 -21
  24. package/lib/Widgets/Map/map/GraphDateButton.js +27 -20
  25. package/lib/Widgets/Map/matchGraph/MatchGraph.js +14 -14
  26. package/lib/Widgets/Map/matchGraph/createFloatingGraph.js +17 -16
  27. package/lib/Widgets/Map/points/PointIcon.js +17 -16
  28. package/lib/Widgets/Map/points/PointMarker.js +67 -97
  29. package/lib/Widgets/Map/points/PointMarkers.js +45 -67
  30. package/lib/Widgets/Map/points/PointUtils.js +59 -69
  31. package/lib/Widgets/MostPolluting/Areas/AreaBox/AreaBox.js +27 -45
  32. package/lib/Widgets/MostPolluting/Areas/AreaBox/Map/Map.js +14 -18
  33. package/lib/Widgets/MostPolluting/Areas/AreaBox/PieChart/PieChart.js +10 -12
  34. package/lib/Widgets/MostPolluting/Areas/AreaBox/styles.js +4 -6
  35. package/lib/Widgets/MostPolluting/Areas/Areas.js +28 -58
  36. package/lib/Widgets/MostPolluting/Areas/areas.mock.js +3 -4
  37. package/lib/Widgets/MostPolluting/Areas/areasResponse.interface.js +1 -1
  38. package/lib/Widgets/MostPolluting/Areas/styles.js +4 -6
  39. package/lib/Widgets/MostPolluting/EmptyState/EmptyState.js +12 -9
  40. package/lib/Widgets/MostPolluting/Factories/Factories.js +33 -65
  41. package/lib/Widgets/MostPolluting/Factories/FactoryBox/FactoryBox.js +15 -18
  42. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PieChart/PieChart.js +8 -8
  43. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PollutionScore.js +13 -11
  44. package/lib/Widgets/MostPolluting/Factories/FactoryBox/styles.js +4 -6
  45. package/lib/Widgets/MostPolluting/Factories/factories.mock.js +2 -3
  46. package/lib/Widgets/MostPolluting/Factories/factoriesResponse.interface.js +1 -1
  47. package/lib/Widgets/MostPolluting/Factories/styles.js +4 -6
  48. package/lib/Widgets/MostPolluting/MostPolluting.js +18 -24
  49. package/lib/Widgets/MostPolluting/MostPolluting.stories.js +20 -32
  50. package/lib/Widgets/MostPolluting/ShowMore/ShowMore.js +7 -5
  51. package/lib/Widgets/MostPolluting/ShowMore/styles.js +7 -6
  52. package/lib/Widgets/MostPolluting/assets/index.js +12 -12
  53. package/lib/Widgets/MostPolluting/components/ChangePercent.js +20 -14
  54. package/lib/Widgets/MostPolluting/components/ChangePercent.test.js +36 -31
  55. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.js +34 -32
  56. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.test.js +40 -36
  57. package/lib/Widgets/MostPolluting/components/PotentialImpact.js +28 -27
  58. package/lib/Widgets/MostPolluting/components/PotentialImpact.test.js +53 -49
  59. package/lib/Widgets/MostPolluting/models.js +1 -1
  60. package/lib/Widgets/MostPolluting/styles.js +4 -6
  61. package/lib/Widgets/PotentialImpactSummary/Back/Back.js +8 -6
  62. package/lib/Widgets/PotentialImpactSummary/Icon.js +8 -6
  63. package/lib/Widgets/PotentialImpactSummary/index.js +20 -28
  64. package/lib/Widgets/PotentialImpactSummary/index.test.js +48 -54
  65. package/lib/Widgets/PotentialImpactSummary/styles.js +8 -13
  66. package/lib/Widgets/PotentialImpactSummary/useCasesResponse.interface.js +1 -1
  67. package/lib/Widgets/QualitySummary/PieChart/LegendMenu/LegendMenu.js +10 -8
  68. package/lib/Widgets/QualitySummary/PieChart/PieChart.js +23 -18
  69. package/lib/Widgets/QualitySummary/PieChart/PieChart.test.js +36 -33
  70. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.js +27 -25
  71. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.test.js +35 -38
  72. package/lib/Widgets/QualitySummary/QualitySummary.js +10 -14
  73. package/lib/Widgets/QualitySummary/qualitySummary.mock.js +4 -7
  74. package/lib/Widgets/QualitySummary/qualitySummaryResponse.interface.js +1 -1
  75. package/lib/Widgets/QualitySummary/styles.js +20 -19
  76. package/lib/Widgets/UtilityInformation/MapModal/MapModal.js +12 -14
  77. package/lib/Widgets/UtilityInformation/PopupWithMap/Map/Map.js +25 -25
  78. package/lib/Widgets/UtilityInformation/PopupWithMap/PopupWithMap.js +30 -26
  79. package/lib/Widgets/UtilityInformation/UtilityInformation.js +25 -43
  80. package/lib/Widgets/UtilityInformation/UtilityInformationResponse.interface.js +1 -1
  81. package/lib/Widgets/UtilityInformation/styles.js +31 -29
  82. package/lib/Widgets/UtilityInformation/utilityInformation.mock.js +3 -5
  83. package/lib/assets/icons/TopNavbar/index.js +7 -7
  84. package/lib/assets/icons/TrendSvg.js +7 -7
  85. package/lib/assets/icons/index.js +15 -15
  86. package/lib/assets/icons/kandoStepper/index.js +6 -6
  87. package/lib/assets/icons/siteTypes/index.js +2 -2
  88. package/lib/components/ApplyButton/ApplyButton.js +10 -11
  89. package/lib/components/ApplyButton/index.js +3 -4
  90. package/lib/components/Backdrop/Backdrop.js +7 -5
  91. package/lib/components/ContentLoader/ContentLoader.js +12 -10
  92. package/lib/components/ContentLoader/index.js +2 -2
  93. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.js +12 -12
  94. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.stories.js +5 -9
  95. package/lib/components/CustomInputs/DoubleTabs/styles.js +21 -16
  96. package/lib/components/CustomInputs/PasswordInput/PasswordInput.js +12 -20
  97. package/lib/components/CustomInputs/PrimaryButton/PrimaryButton.js +7 -6
  98. package/lib/components/CustomInputs/Search/Search.js +40 -63
  99. package/lib/components/CustomInputs/Search/index.js +3 -4
  100. package/lib/components/CustomInputs/Select/Select.js +42 -56
  101. package/lib/components/CustomInputs/Select/Select.stories.js +6 -10
  102. package/lib/components/DamageType/DamageType.js +35 -60
  103. package/lib/components/DamageType/index.js +3 -4
  104. package/lib/components/DataLoaderError/DataLoaderError.js +9 -7
  105. package/lib/components/DischargeHeatmap/DischargeHeatmap.js +11 -13
  106. package/lib/components/DischargeHeatmap/DischargeHeatmap.test.js +71 -72
  107. package/lib/components/DischargeHeatmap/DischargeHeatmapContainer.js +28 -40
  108. package/lib/components/DischargeHeatmap/HighchartsOptions.js +12 -16
  109. package/lib/components/DischargeHeatmap/index.js +3 -4
  110. package/lib/components/DischargeHeatmap/mocks/handlers.js +3 -4
  111. package/lib/components/DischargeHeatmap/popupText.js +11 -12
  112. package/lib/components/DischargeHeatmap/titles.js +4 -6
  113. package/lib/components/DischargeHeatmap/types.js +1 -1
  114. package/lib/components/ErrorBoundary.js +27 -42
  115. package/lib/components/Events/Events.js +29 -48
  116. package/lib/components/Events/index.js +3 -4
  117. package/lib/components/Graph/Graph.js +70 -91
  118. package/lib/components/Graph/index.js +3 -4
  119. package/lib/components/Header/Breadcrumbs/Breadcrumbs.js +19 -24
  120. package/lib/components/Header/Breadcrumbs/index.js +3 -4
  121. package/lib/components/Header/DoubleTabs/DoubleTabs.js +18 -28
  122. package/lib/components/Header/DoubleTabs/DoubleTabs.stories.js +5 -9
  123. package/lib/components/Header/DoubleTabs/styles.js +5 -8
  124. package/lib/components/Header/Header.js +3 -3
  125. package/lib/components/Header/Header.stories.js +5 -9
  126. package/lib/components/Header/InfoBar/Breadcrumbs/Breadcrumbs.js +24 -24
  127. package/lib/components/Header/InfoBar/InfoBar.js +45 -105
  128. package/lib/components/Header/InfoBar/Search/Control.js +11 -12
  129. package/lib/components/Header/InfoBar/Search/GroupLabel.js +8 -7
  130. package/lib/components/Header/InfoBar/Search/Search.js +15 -22
  131. package/lib/components/Header/InfoBar/Search/SearchContainer.js +16 -30
  132. package/lib/components/Header/InfoBar/Search/index.js +3 -4
  133. package/lib/components/Header/InfoBar/Search/searchStyle.js +42 -51
  134. package/lib/components/Header/InfoBar/TimeFilter.js +13 -17
  135. package/lib/components/Header/KandoNavbar/KandoNavbar.js +63 -90
  136. package/lib/components/Header/KandoNavbar/index.js +3 -4
  137. package/lib/components/Header/Slideshow/Slideshow.js +67 -91
  138. package/lib/components/Header/Slideshow/index.js +3 -4
  139. package/lib/components/Header/Toolbar/ClientImg/ClientImg.js +7 -5
  140. package/lib/components/Header/Toolbar/CustomerMenu/CustomerMenu.js +22 -24
  141. package/lib/components/Header/Toolbar/MenuCreator/MenuCreator.js +14 -14
  142. package/lib/components/Header/Toolbar/SearchDropdown/SearchDropdown.js +27 -33
  143. package/lib/components/Header/Toolbar/Toolbar.js +56 -76
  144. package/lib/components/InfoBar/InfoBar.js +10 -24
  145. package/lib/components/InfoBar/InfoBar.stories.js +5 -9
  146. package/lib/components/KandoModal/KandoModal.js +24 -40
  147. package/lib/components/KandoModal/index.js +3 -4
  148. package/lib/components/Link.js +9 -8
  149. package/lib/components/Links/CustomRedirect/CustomRedirect.js +10 -9
  150. package/lib/components/Links/StyledLink/StyledLink.js +13 -14
  151. package/lib/components/Links/StyledNavLink/StyledNavLink.js +12 -12
  152. package/lib/components/LiveEvents/CarouselSlide.js +11 -10
  153. package/lib/components/LiveEvents/LiveEvents.js +7 -6
  154. package/lib/components/LiveEvents/index.js +3 -4
  155. package/lib/components/LoaderByPercent/LoaderByPercent.js +37 -30
  156. package/lib/components/Map/Map.js +20 -25
  157. package/lib/components/Map/index.js +3 -4
  158. package/lib/components/Modal/Modal.js +10 -10
  159. package/lib/components/NarrowHeader.js +18 -32
  160. package/lib/components/PointInfo/PointInfo.js +20 -19
  161. package/lib/components/PointInfo/index.js +3 -4
  162. package/lib/components/PopupModal/PopupModal.js +13 -17
  163. package/lib/components/PopupModal/PopupModal.stories.js +17 -24
  164. package/lib/components/Sector/Sector.js +10 -9
  165. package/lib/components/Sector/Sector.test.js +20 -21
  166. package/lib/components/Sector/index.js +3 -4
  167. package/lib/components/Sector/sectorIcons.js +4 -5
  168. package/lib/components/SevereEvent/Eta/Eta.js +49 -54
  169. package/lib/components/SevereEvent/Eta/styles.js +11 -8
  170. package/lib/components/SevereEvent/SevereEvent.js +27 -35
  171. package/lib/components/Spinner/Spinner.js +8 -8
  172. package/lib/components/Spinner/Spinner.stories.js +6 -11
  173. package/lib/components/Spinner/index.js +3 -4
  174. package/lib/components/Spinner/styles.js +21 -16
  175. package/lib/components/Tabs/Tabs.js +18 -29
  176. package/lib/components/Tabs/Tabs.stories.js +6 -10
  177. package/lib/components/Tabs/assets/index.js +6 -6
  178. package/lib/components/TimeRangeSelector/KandoRangePicker/ComparisonSelect.js +13 -18
  179. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePicker.js +35 -48
  180. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePickerContainer.js +20 -34
  181. package/lib/components/TimeRangeSelector/KandoRangePicker/index.js +3 -4
  182. package/lib/components/TimeRangeSelector/TimeRangeHelper.js +17 -22
  183. package/lib/components/TimeRangeSelector/TimeRangeItem/TimeRangeItem.js +13 -14
  184. package/lib/components/TimeRangeSelector/TimeRangeItem/index.js +3 -4
  185. package/lib/components/TimeRangeSelector/TimeRangeList.js +24 -27
  186. package/lib/components/TimeRangeSelector/TimeRangeOptions.js +17 -27
  187. package/lib/components/TimeRangeSelector/TimeRangeSelector.js +29 -32
  188. package/lib/components/TimeRangeSelector/TimeRangeSelector.stories.js +6 -10
  189. package/lib/components/TimeRangeSelector/constants.js +3 -5
  190. package/lib/components/TimeRangeSelector/index.js +3 -4
  191. package/lib/components/Toggle/Toggle.js +11 -18
  192. package/lib/components/Toggle/index.js +3 -4
  193. package/lib/components/TrendGraph/TrendGraph.js +24 -42
  194. package/lib/components/TrendGraph/index.js +3 -4
  195. package/lib/components/TrendGraphNVL/TrendGraphNVL.js +26 -33
  196. package/lib/components/TrendGraphNVL/index.js +3 -4
  197. package/lib/development-environment/index.js +9 -13
  198. package/lib/development-environment/mock/browser.js +2 -5
  199. package/lib/development-environment/mock/get.js +8 -10
  200. package/lib/development-environment/mock/handlers.js +2 -3
  201. package/lib/development-environment/mock/mockBus.js +4 -5
  202. package/lib/development-environment/mock/mockObjects/area-trends-graph.js +2 -3
  203. package/lib/development-environment/mock/mockObjects/areaInformation.js +2 -3
  204. package/lib/development-environment/mock/mockObjects/areaQualitySummary.js +2 -3
  205. package/lib/development-environment/mock/mockObjects/areaSitesData.js +2 -3
  206. package/lib/development-environment/mock/mockObjects/areasJson.js +2 -3
  207. package/lib/development-environment/mock/mockObjects/controlRoomNetworkEdges.js +2 -3
  208. package/lib/development-environment/mock/mockObjects/covidView-areasData-24.js +2 -3
  209. package/lib/development-environment/mock/mockObjects/data-menuData.js +2 -3
  210. package/lib/development-environment/mock/mockObjects/data-search.js +2 -3
  211. package/lib/development-environment/mock/mockObjects/discharge_effluent_quality.js +2 -3
  212. package/lib/development-environment/mock/mockObjects/discharge_pattern_overtime.js +2 -3
  213. package/lib/development-environment/mock/mockObjects/eventFiltersJson.js +2 -3
  214. package/lib/development-environment/mock/mockObjects/eventsJson.js +2 -3
  215. package/lib/development-environment/mock/mockObjects/metascore.js +2 -3
  216. package/lib/development-environment/mock/mockObjects/permissionsJson.js +2 -3
  217. package/lib/development-environment/mock/mockObjects/pointsJson.js +2 -3
  218. package/lib/development-environment/mock/mockObjects/site-info.js +2 -3
  219. package/lib/development-environment/mock/mockObjects/trend-graph-component-data-907.js +2 -3
  220. package/lib/development-environment/togly/ToglyDashboard.js +13 -23
  221. package/lib/development-environment/togly/ToglyItem.js +25 -29
  222. package/lib/development-environment/togly/flags.js +1 -1
  223. package/lib/development-environment/togly/init.js +3 -3
  224. package/lib/development-environment/togly/macro.js +13 -9
  225. package/lib/development-environment/togly/useDoubleKeyDown.js +7 -9
  226. package/lib/development-environment/togly/useLocalStorage.js +13 -18
  227. package/lib/hooks/useApi.js +20 -56
  228. package/lib/hooks/useApiWithDashboardQuery.js +30 -49
  229. package/lib/hooks/useClickOutside.js +4 -5
  230. package/lib/hooks/useInitializeHeaders.js +6 -6
  231. package/lib/hooks/useKandoFetch.js +17 -31
  232. package/lib/hooks/useMap.js +25 -37
  233. package/lib/hooks/useNavContext.js +22 -26
  234. package/lib/hooks/useQueryURL.js +2 -3
  235. package/lib/hooks/useRemoveExistingLayers.js +7 -8
  236. package/lib/hooks/useUpdateEventBodyTail.js +14 -19
  237. package/lib/hooks/useUserTimeZone.js +36 -35
  238. package/lib/hooks/useUserTimeZone.test.js +23 -27
  239. package/lib/hooks/useWindowSize.js +7 -14
  240. package/lib/i18n/en.json +2 -2
  241. package/lib/i18n/en_uk.json +1 -0
  242. package/lib/i18n/fr.json +1 -1
  243. package/lib/i18n/he.json +4 -4
  244. package/lib/i18n/it.json +1 -1
  245. package/lib/index.js +11 -13
  246. package/lib/macros/getVersion.js +2 -2
  247. package/lib/models/IAction.js +1 -1
  248. package/lib/models/IAppState.js +1 -1
  249. package/lib/pages/AreaPage/AreaPage.js +29 -70
  250. package/lib/pages/AreaPage/Dashboard/AreaMapContainer/AreaMapContainer.js +14 -16
  251. package/lib/pages/AreaPage/Dashboard/Dashboard.js +16 -19
  252. package/lib/pages/AreaPage/Dashboard/LineChart/LineChart.js +14 -23
  253. package/lib/pages/AreaPage/Dashboard/LineChart/options/options.js +5 -5
  254. package/lib/pages/AreaPage/Dashboard/Sites/Sites.js +34 -68
  255. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/PieChart/PieChart.js +8 -8
  256. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/SiteBox.js +10 -10
  257. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/styles.js +4 -6
  258. package/lib/pages/AreaPage/Dashboard/Sites/SitesResponse.interface.js +1 -1
  259. package/lib/pages/AreaPage/Dashboard/Sites/factories.mock.js +2 -3
  260. package/lib/pages/AreaPage/Dashboard/Sites/styles.js +5 -8
  261. package/lib/pages/AssessmentPage/AssessmentPage.js +38 -46
  262. package/lib/pages/CannyWidget/Feedback.js +14 -16
  263. package/lib/pages/CovidPage/CovidPage.js +9 -16
  264. package/lib/pages/CovidPage/components/Body.js +26 -30
  265. package/lib/pages/CovidPage/components/Map.js +28 -40
  266. package/lib/pages/CovidPage/components/Sidebar.js +15 -16
  267. package/lib/pages/CovidPage/components/Summary.js +20 -29
  268. package/lib/pages/CovidPage/components/TrendGraphNVL/TrendGraphNVL.js +26 -33
  269. package/lib/pages/CovidPage/components/TrendGraphNVL/index.js +3 -4
  270. package/lib/pages/CovidPage/components/TrendPopupContent/TrendPopupContent.js +52 -76
  271. package/lib/pages/CovidPage/components/TrendPopupContent/index.js +3 -4
  272. package/lib/pages/CovidPage/components/areas/Area.js +24 -36
  273. package/lib/pages/CovidPage/components/areas/AreaPolygonWBE.js +45 -46
  274. package/lib/pages/CovidPage/components/areas/AreaPolygonsWBE.js +32 -36
  275. package/lib/pages/CovidPage/components/areas/AreasList.js +29 -42
  276. package/lib/pages/CovidPage/components/areas/Sort.js +12 -17
  277. package/lib/pages/CovidPage/components/nvlStatusHelper.js +11 -11
  278. package/lib/pages/DashboardMap/AreaCard.js +22 -18
  279. package/lib/pages/DashboardMap/AssessmentIcon.js +8 -7
  280. package/lib/pages/DashboardMap/FactoryCard.js +25 -21
  281. package/lib/pages/DashboardMap/HighchartsOptions.js +6 -5
  282. package/lib/pages/DashboardMap/List.js +42 -54
  283. package/lib/pages/DashboardMap/ListContext.js +14 -19
  284. package/lib/pages/DashboardMap/Loader.js +3 -3
  285. package/lib/pages/DashboardMap/SeverityBadge.js +11 -19
  286. package/lib/pages/DashboardMap/WWTPMap.js +42 -57
  287. package/lib/pages/DashboardMap/WaterDischarge.js +9 -9
  288. package/lib/pages/DashboardMap/Widget.js +78 -79
  289. package/lib/pages/DashboardMap/index.js +3 -4
  290. package/lib/pages/DashboardMap/utils.js +19 -24
  291. package/lib/pages/EventsPage/Body/Body.js +21 -18
  292. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropContainer.js +17 -20
  293. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropUtils.js +27 -36
  294. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropWrapper.js +10 -9
  295. package/lib/pages/EventsPage/DragAndDropArea/DraggableItem.js +13 -10
  296. package/lib/pages/EventsPage/DragAndDropArea/DraggableList.js +22 -31
  297. package/lib/pages/EventsPage/DragAndDropArea/index.js +3 -4
  298. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +52 -64
  299. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainerHelpers.js +17 -23
  300. package/lib/pages/EventsPage/EventsPage.js +8 -13
  301. package/lib/pages/EventsPage/FloatingGraph/FloatingGraph.js +27 -41
  302. package/lib/pages/EventsPage/events/MoreInfo.js +18 -19
  303. package/lib/pages/EventsPage/events/Sidebar.js +22 -19
  304. package/lib/pages/EventsPage/events/event_info/EarlyWarnings.js +31 -38
  305. package/lib/pages/EventsPage/events/event_info/EventDetails.js +34 -32
  306. package/lib/pages/EventsPage/events/event_info/EventInfo.js +42 -43
  307. package/lib/pages/EventsPage/events/event_info/EventPath/EventPath.js +5 -5
  308. package/lib/pages/EventsPage/events/event_info/EventSection.js +15 -18
  309. package/lib/pages/EventsPage/events/event_info/EventSection.test.js +44 -39
  310. package/lib/pages/EventsPage/events/event_info/EventTimeRange.js +39 -50
  311. package/lib/pages/EventsPage/events/event_info/Header/Header.js +8 -7
  312. package/lib/pages/EventsPage/events/event_info/Header/HeaderContainer.js +29 -34
  313. package/lib/pages/EventsPage/events/event_info/Header/index.js +3 -4
  314. package/lib/pages/EventsPage/events/event_info/HistoricalInformation.js +6 -7
  315. package/lib/pages/EventsPage/events/event_info/MiniEventTree.js +30 -39
  316. package/lib/pages/EventsPage/events/event_info/MobileEventPath.js +6 -9
  317. package/lib/pages/EventsPage/events/event_info/PollutionDischarge.js +23 -24
  318. package/lib/pages/EventsPage/events/event_info/SamplingList/SamplingDetails.js +12 -11
  319. package/lib/pages/EventsPage/events/event_info/SamplingList/Samplings.js +11 -10
  320. package/lib/pages/EventsPage/events/event_info/SamplingList/index.js +3 -4
  321. package/lib/pages/EventsPage/events/event_info/SeverityScore/ScoreExplanation.js +13 -10
  322. package/lib/pages/EventsPage/events/event_info/SeverityScore/SeverityScore.js +8 -9
  323. package/lib/pages/EventsPage/events/event_info/SeverityScore/index.js +3 -4
  324. package/lib/pages/EventsPage/events/event_info/SourceDetails/Confidence.js +6 -4
  325. package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.js +4 -5
  326. package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.test.js +13 -11
  327. package/lib/pages/EventsPage/events/event_info/SourceDetails/IconAndTitles.js +7 -5
  328. package/lib/pages/EventsPage/events/event_info/SourceDetails/MoreInfoButton.js +11 -13
  329. package/lib/pages/EventsPage/events/event_info/SourceDetails/OtherSources.js +7 -6
  330. package/lib/pages/EventsPage/events/event_info/SourceDetails/PotentialSources.js +9 -8
  331. package/lib/pages/EventsPage/events/event_info/SourceDetails/SingleSource.js +9 -8
  332. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceCardBody.js +8 -7
  333. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.js +13 -12
  334. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.test.js +15 -16
  335. package/lib/pages/EventsPage/events/event_info/SourceDetails/WaterDischarge.js +7 -7
  336. package/lib/pages/EventsPage/events/event_info/Timelines/DischargeBox.js +9 -8
  337. package/lib/pages/EventsPage/events/event_info/Timelines/EarlyWarning.js +19 -18
  338. package/lib/pages/EventsPage/events/event_info/Timelines/LiveStatusBadge.js +6 -7
  339. package/lib/pages/EventsPage/events/event_info/Timelines/SeenBox.js +12 -11
  340. package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.js +15 -13
  341. package/lib/pages/EventsPage/events/event_info/Timelines/Titles.js +4 -5
  342. package/lib/pages/EventsPage/events/event_info/Timelines/index.js +3 -4
  343. package/lib/pages/EventsPage/events/event_info/Timelines/style.js +4 -6
  344. package/lib/pages/EventsPage/events/event_info/charts/EventDetailsPieChart.js +25 -40
  345. package/lib/pages/EventsPage/events/event_info/damage_type/DamageType.js +30 -39
  346. package/lib/pages/EventsPage/events/event_info/samplingsOld/Sampling.js +13 -12
  347. package/lib/pages/EventsPage/events/event_info/samplingsOld/Samplings.js +17 -20
  348. package/lib/pages/EventsPage/events/event_info/sources/Source.js +27 -31
  349. package/lib/pages/EventsPage/events/event_info/sources/Sources.js +22 -27
  350. package/lib/pages/EventsPage/events/event_info/styles.js +21 -15
  351. package/lib/pages/EventsPage/events/events_list/EventItem.js +18 -21
  352. package/lib/pages/EventsPage/events/events_list/EventUtils.js +11 -11
  353. package/lib/pages/EventsPage/events/events_list/EventsList.js +115 -139
  354. package/lib/pages/EventsPage/events/events_list/Filter/Filter.js +39 -56
  355. package/lib/pages/EventsPage/events/events_list/Filter/FilterContainer.js +73 -111
  356. package/lib/pages/EventsPage/events/events_list/Filter/FilterItem.js +53 -72
  357. package/lib/pages/EventsPage/events/events_list/Filter/FiltersDropDown.js +39 -44
  358. package/lib/pages/EventsPage/events/events_list/Filter/OptionsDropDown.js +30 -39
  359. package/lib/pages/EventsPage/events/events_list/Sort.js +14 -19
  360. package/lib/pages/ImportFileWizard/FileUploadRespones.js +14 -22
  361. package/lib/pages/ImportFileWizard/ImportButtomButtons.js +9 -8
  362. package/lib/pages/ImportFileWizard/ImportFile.js +21 -25
  363. package/lib/pages/ImportFileWizard/ResponseBody.js +26 -36
  364. package/lib/pages/ImportFileWizard/ValidationForm.js +22 -22
  365. package/lib/pages/ImportFileWizard/ValidationResponse.js +23 -25
  366. package/lib/pages/ImportFileWizard/importFileUtils.js +4 -5
  367. package/lib/pages/ImportFileWizard/index.js +3 -4
  368. package/lib/pages/ImportGisPage/ImportGisContainer.js +22 -27
  369. package/lib/pages/ImportGisPage/ImportedGisFilesPage.js +23 -26
  370. package/lib/pages/ImportGisPage/importGisUtils.js +15 -24
  371. package/lib/pages/ImportGisProcess/index.js +14 -18
  372. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/MultiChoiceTabs.js +7 -13
  373. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/RadioTabs.js +18 -20
  374. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/SeverityButtons.js +4 -4
  375. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.js +28 -58
  376. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.stories.js +8 -12
  377. package/lib/pages/NotificationsPage/Notification/Notification.js +17 -13
  378. package/lib/pages/NotificationsPage/Notifications.interface.js +1 -1
  379. package/lib/pages/NotificationsPage/Notifications.mock.js +2 -3
  380. package/lib/pages/NotificationsPage/Notifications.stories.js +6 -10
  381. package/lib/pages/NotificationsPage/NotificationsPage.js +19 -38
  382. package/lib/pages/NotificationsPage/assets/index.js +10 -10
  383. package/lib/pages/NotificationsPageV2/NotificationsPage.js +71 -97
  384. package/lib/pages/NotificationsPageV2/components/NotificationsCard.js +95 -65
  385. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationsFormContent.js +127 -140
  386. package/lib/pages/NotificationsPageV2/components/NotificationsSidebar.js +72 -74
  387. package/lib/pages/NotificationsPageV2/components/NotificationsUtils.js +90 -87
  388. package/lib/pages/NotificationsPageV2/notificationUtils.js +40 -39
  389. package/lib/pages/OldSitePage/IDashboardData.js +1 -1
  390. package/lib/pages/OldSitePage/OldSitePage.js +56 -132
  391. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.js +6 -10
  392. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.stories.js +5 -9
  393. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +9 -7
  394. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +19 -21
  395. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +10 -12
  396. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +12 -19
  397. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +17 -13
  398. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +5 -9
  399. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +18 -16
  400. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +51 -64
  401. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +10 -8
  402. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.js +29 -54
  403. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.mock.js +4 -7
  404. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.stories.js +12 -19
  405. package/lib/pages/OldSitePage/SamplingParameters/charts/ParametersChart.js +11 -11
  406. package/lib/pages/OldSitePage/SamplingParameters/charts/SamplingChart.js +10 -12
  407. package/lib/pages/OldSitePage/SamplingParameters/charts/options/options.js +27 -23
  408. package/lib/pages/OldSitePage/SamplingParameters/dataParser.js +28 -30
  409. package/lib/pages/OldSitePage/SamplingParameters/models.js +1 -1
  410. package/lib/pages/OldSitePage/SamplingParameters/styles/samplingParameters.js +5 -8
  411. package/lib/pages/OldSitePage/SamplingParameters/styles/styles.js +16 -12
  412. package/lib/pages/ProfilePage/Container.js +3 -4
  413. package/lib/pages/ProfilePage/PasswordModal/PasswordModal.js +23 -40
  414. package/lib/pages/ProfilePage/ProfilePage.js +111 -200
  415. package/lib/pages/ProfilePage/TelegramModal/TelegramModal.js +25 -34
  416. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.js +20 -20
  417. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.test.js +23 -26
  418. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionContainer.js +57 -119
  419. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionDropdown.js +18 -23
  420. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActions.js +14 -13
  421. package/lib/pages/SamplingsPage/ActionsDropDown/ViewLabResult.js +39 -43
  422. package/lib/pages/SamplingsPage/DesktopActions/DesktopActions.js +27 -29
  423. package/lib/pages/SamplingsPage/DesktopActions/DownloadCSV.js +18 -19
  424. package/lib/pages/SamplingsPage/DesktopActions/UploadLabResult.js +15 -18
  425. package/lib/pages/SamplingsPage/DesktopActions/index.js +3 -4
  426. package/lib/pages/SamplingsPage/NavigationDropdown.js +43 -31
  427. package/lib/pages/SamplingsPage/NewSamplingAction.js +75 -102
  428. package/lib/pages/SamplingsPage/SamplingMobileModal.js +124 -98
  429. package/lib/pages/SamplingsPage/SamplingProperties/ImageDeleteModal.js +23 -25
  430. package/lib/pages/SamplingsPage/SamplingProperties/ImagePreviewModal.js +36 -25
  431. package/lib/pages/SamplingsPage/SamplingProperties/ImageUpload.js +34 -59
  432. package/lib/pages/SamplingsPage/SamplingProperties/ManholeImageMobile.js +16 -21
  433. package/lib/pages/SamplingsPage/SamplingProperties/SamplerInProcess.js +10 -9
  434. package/lib/pages/SamplingsPage/SamplingProperties/SamplingProperties.js +107 -192
  435. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesForm.js +47 -54
  436. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHead.js +42 -39
  437. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHeadMobile.js +42 -39
  438. package/lib/pages/SamplingsPage/SamplingProperties/samplingPropertiesUtils.js +21 -28
  439. package/lib/pages/SamplingsPage/SamplingProperties/styles.js +4 -6
  440. package/lib/pages/SamplingsPage/SamplingSiteTableCell.js +11 -7
  441. package/lib/pages/SamplingsPage/SamplingsMobileItem.js +50 -52
  442. package/lib/pages/SamplingsPage/SamplingsMobileList.js +22 -31
  443. package/lib/pages/SamplingsPage/SamplingsPage.js +25 -33
  444. package/lib/pages/SamplingsPage/SamplingsPageContainer.js +49 -58
  445. package/lib/pages/SamplingsPage/index.js +2 -3
  446. package/lib/pages/SamplingsPage/samplingsPageUtils.js +68 -92
  447. package/lib/pages/SitePage/DischargePattern/DischargePattern.js +7 -5
  448. package/lib/pages/SitePage/SamplingParameters/NoResults/NoResults.stories.js +5 -9
  449. package/lib/pages/SitePage/SamplingParameters/NoResults/index.js +15 -15
  450. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +10 -9
  451. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.test.js +27 -24
  452. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +15 -18
  453. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.test.js +37 -33
  454. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +10 -12
  455. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +15 -25
  456. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +17 -13
  457. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +5 -9
  458. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +18 -16
  459. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +58 -71
  460. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +10 -8
  461. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.js +15 -27
  462. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.mock.js +5 -9
  463. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.stories.js +12 -19
  464. package/lib/pages/SitePage/SamplingParameters/body/Body.js +10 -11
  465. package/lib/pages/SitePage/SamplingParameters/body/BodyContainer.js +30 -40
  466. package/lib/pages/SitePage/SamplingParameters/body/index.js +3 -4
  467. package/lib/pages/SitePage/SamplingParameters/charts/ParametersChart.js +11 -12
  468. package/lib/pages/SitePage/SamplingParameters/charts/SamplingChart.js +10 -12
  469. package/lib/pages/SitePage/SamplingParameters/charts/options/options.js +54 -54
  470. package/lib/pages/SitePage/SamplingParameters/dataParser.js +31 -40
  471. package/lib/pages/SitePage/SamplingParameters/dataParser.test.js +11 -9
  472. package/lib/pages/SitePage/SamplingParameters/models.js +1 -1
  473. package/lib/pages/SitePage/SamplingParameters/styles/samplingParameters.js +5 -8
  474. package/lib/pages/SitePage/SamplingParameters/styles/styles.js +16 -12
  475. package/lib/pages/SitePage/SiteInformation/ContributorItem.js +11 -10
  476. package/lib/pages/SitePage/SiteInformation/EmptyState.js +13 -10
  477. package/lib/pages/SitePage/SiteInformation/PollutionContributor.js +13 -13
  478. package/lib/pages/SitePage/SiteInformation/SiteInformation.js +34 -46
  479. package/lib/pages/SitePage/SiteInformation/style.js +16 -12
  480. package/lib/pages/SitePage/SitePage.js +29 -70
  481. package/lib/pages/UploadLabResult/index.js +15 -16
  482. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.js +27 -37
  483. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.stories.js +8 -13
  484. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.js +11 -15
  485. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.stories.js +5 -9
  486. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/Eta.js +47 -50
  487. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/styles.js +11 -8
  488. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/LinkedSevereEvent.js +4 -5
  489. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/OptionalLinkedSevereEvent.js +6 -9
  490. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/SevereEvent.js +11 -10
  491. package/lib/pages/UtilityDashboardPage/MostSevereEvents/models.js +1 -1
  492. package/lib/pages/UtilityDashboardPage/TopBar/TopBar.js +16 -13
  493. package/lib/pages/UtilityDashboardPage/TopBar/constants.js +8 -9
  494. package/lib/pages/UtilityDashboardPage/TopBar/styles.js +3 -4
  495. package/lib/pages/UtilityDashboardPage/UtilityDashboard.js +15 -23
  496. package/lib/pages/UtilityDashboardPage/UtilityDashboard.stories.js +28 -40
  497. package/lib/pages/UtilityDashboardPage/UtilityDashboardMapContainer/UtilityDashboardMapContainer.js +14 -16
  498. package/lib/pages/UtilityDashboardPage/UtilityDashboardPage.js +7 -15
  499. package/lib/pages/UtilityDashboardPage/VirtualAreaDashboardPage.js +24 -34
  500. package/lib/pages/WbeDashboard/ExpandableComponent.js +9 -9
  501. package/lib/pages/WbeDashboard/GraphWrapper.js +28 -35
  502. package/lib/pages/WbeDashboard/IndividualTinyGraph.js +16 -19
  503. package/lib/pages/WbeDashboard/SearchInput.js +15 -21
  504. package/lib/pages/WbeDashboard/SummaryGraph.js +50 -77
  505. package/lib/pages/WbeDashboard/SummaryGraphModal.js +20 -18
  506. package/lib/pages/WbeDashboard/Tabs.js +11 -11
  507. package/lib/pages/WbeDashboard/WbeDashboardPage.js +145 -211
  508. package/lib/pages/WbeDashboard/WbeSummaryBar.js +39 -48
  509. package/lib/pages/WwtpPage/DashboardCard.js +25 -23
  510. package/lib/pages/WwtpPage/DischargePatternCard.js +20 -26
  511. package/lib/pages/WwtpPage/InletsCard/InletsBar.js +9 -8
  512. package/lib/pages/WwtpPage/InletsCard/InletsCard.js +22 -22
  513. package/lib/pages/WwtpPage/InletsCard/index.js +3 -4
  514. package/lib/pages/WwtpPage/Map.js +7 -6
  515. package/lib/pages/WwtpPage/OrganicCard.js +4 -5
  516. package/lib/pages/WwtpPage/PotentialSaving/ImpactCard.js +4 -5
  517. package/lib/pages/WwtpPage/PotentialSaving/PotentialItem.js +8 -7
  518. package/lib/pages/WwtpPage/PotentialSaving/PotentialSaving.js +11 -11
  519. package/lib/pages/WwtpPage/PotentialSaving/PotentialSavingContainer.js +20 -17
  520. package/lib/pages/WwtpPage/PotentialSaving/index.js +3 -4
  521. package/lib/pages/WwtpPage/PotentialSaving/types.js +1 -1
  522. package/lib/pages/WwtpPage/PredictionCard.js +4 -5
  523. package/lib/pages/WwtpPage/TrendCard.js +22 -27
  524. package/lib/pages/WwtpPage/UpgradeBox.js +4 -5
  525. package/lib/pages/WwtpPage/WwtpPage.js +9 -10
  526. package/lib/pages/WwtpPage/WwtpPageContainer.js +23 -19
  527. package/lib/pages/WwtpPage/index.js +3 -4
  528. package/lib/providers/Slideshow/SlideshowContext.js +11 -10
  529. package/lib/providers/Slideshow/SlideshowProvider.js +22 -40
  530. package/lib/providers/Slideshow/SlideshowRunner.js +18 -21
  531. package/lib/providers/UrlHistory/UrlHistoryContext.js +7 -6
  532. package/lib/providers/UrlHistory/UrlHistoryProvider.js +12 -13
  533. package/lib/providers/UrlHistory/index.js +4 -4
  534. package/lib/providers/UrlHistory/useLastVisited.js +5 -6
  535. package/lib/react-app-env.d.js +1 -1
  536. package/lib/store/ImportGis/action.js +1 -1
  537. package/lib/store/ImportGis/actionTypes.js +4 -5
  538. package/lib/store/ImportGis/actionsCreator.js +7 -5
  539. package/lib/store/ImportGis/models/gisImports.js +1 -1
  540. package/lib/store/ImportGis/reducer.js +41 -30
  541. package/lib/store/WBE/actionTypes.js +2 -3
  542. package/lib/store/WBE/actions.js +1 -1
  543. package/lib/store/WBE/models/IAreaWBE.js +1 -1
  544. package/lib/store/WBE/models/IWBE.js +1 -1
  545. package/lib/store/WBE/models/IWBEState.js +1 -1
  546. package/lib/store/WBE/reducer.js +14 -10
  547. package/lib/store/WWTPDashboard/WWTPDashboardSlice.js +24 -15
  548. package/lib/store/WWTPDashboard/types.js +1 -1
  549. package/lib/store/areas/actionTypes.js +4 -7
  550. package/lib/store/areas/actions.js +7 -13
  551. package/lib/store/areas/models/IArea.js +1 -1
  552. package/lib/store/areas/models/IAreasState.js +1 -1
  553. package/lib/store/areas/reducer.js +8 -6
  554. package/lib/store/context/actionTypes.js +3 -5
  555. package/lib/store/context/actions.js +3 -3
  556. package/lib/store/context/contextMiddlewares.js +15 -18
  557. package/lib/store/context/models/INavContext.js +1 -1
  558. package/lib/store/context/models/INavContextState.js +1 -1
  559. package/lib/store/context/reducer.js +14 -10
  560. package/lib/store/dashboard/dashboardSlice.js +18 -11
  561. package/lib/store/dashboard/periodType.js +1 -1
  562. package/lib/store/edges/actionTypes.js +5 -9
  563. package/lib/store/edges/actions.js +4 -8
  564. package/lib/store/edges/models/IEdge.js +1 -1
  565. package/lib/store/edges/models/IEdgesState.js +1 -1
  566. package/lib/store/edges/reducer.js +13 -17
  567. package/lib/store/events/actionTypes.js +17 -33
  568. package/lib/store/events/actions.js +3 -7
  569. package/lib/store/events/models/IEvent.js +1 -1
  570. package/lib/store/events/models/IEventsState.js +1 -1
  571. package/lib/store/events/models/ISource.js +1 -1
  572. package/lib/store/events/reducer.js +42 -49
  573. package/lib/store/filters/IFilter.js +1 -1
  574. package/lib/store/filters/IFilterItem.js +1 -1
  575. package/lib/store/global/actionTypes.js +11 -21
  576. package/lib/store/global/actions.js +6 -4
  577. package/lib/store/global/models/IGlobalState.js +1 -1
  578. package/lib/store/global/reducer.js +11 -10
  579. package/lib/store/permissions/permissionsSlice.js +12 -9
  580. package/lib/store/points/actionTypes.js +3 -5
  581. package/lib/store/points/actions.js +3 -7
  582. package/lib/store/points/models/IGroup.js +1 -1
  583. package/lib/store/points/models/IPoint.js +1 -1
  584. package/lib/store/points/models/IPointsState.js +1 -1
  585. package/lib/store/points/reducer.js +7 -5
  586. package/lib/store/rootActionTypes.js +2 -3
  587. package/lib/store/rootActions.js +1 -1
  588. package/lib/store/rootReducer.js +17 -13
  589. package/lib/store/rootStore.js +6 -6
  590. package/lib/store/samplings/action.js +1 -1
  591. package/lib/store/samplings/actionTypes.js +4 -5
  592. package/lib/store/samplings/actionsCreator.js +1 -1
  593. package/lib/store/samplings/models/Samplings.js +1 -1
  594. package/lib/store/samplings/reducer.js +16 -14
  595. package/lib/styles/StylesLayout.js +7 -6
  596. package/lib/styles/theme/theme.js +26 -30
  597. package/lib/test/mocks/browser.js +2 -5
  598. package/lib/test/test-utils.js +18 -16
  599. package/lib/ui-kit/Button/Button.js +129 -83
  600. package/lib/ui-kit/Button/Button.test.js +24 -30
  601. package/lib/ui-kit/Button/ButtonUtils.js +1 -1
  602. package/lib/ui-kit/Checkbox/Checkbox.js +32 -24
  603. package/lib/ui-kit/ContentCard/ContentCard.js +16 -20
  604. package/lib/ui-kit/Dashboard/Dashboard.js +23 -22
  605. package/lib/ui-kit/Dashboard/index.js +3 -4
  606. package/lib/ui-kit/DropDown/DropDown.js +18 -20
  607. package/lib/ui-kit/DropDown/DropDown.test.js +13 -13
  608. package/lib/ui-kit/DropDown/DropDownItem.js +26 -25
  609. package/lib/ui-kit/DropDown/DropdownToggle.js +13 -10
  610. package/lib/ui-kit/EmptyState/EmptyState.js +7 -6
  611. package/lib/ui-kit/IconAction/IconAction.js +9 -8
  612. package/lib/ui-kit/ImageUploadButton/ImageUploadButton.js +47 -64
  613. package/lib/ui-kit/InfoTooltip/InfoTooltip.js +58 -49
  614. package/lib/ui-kit/InletsPie/InletsPie.js +17 -16
  615. package/lib/ui-kit/InletsPie/index.js +3 -4
  616. package/lib/ui-kit/InletsPie/options.js +7 -9
  617. package/lib/ui-kit/KandoList/KandoList.js +13 -12
  618. package/lib/ui-kit/KandoList/kandoListUtils.js +1 -1
  619. package/lib/ui-kit/KandoTable/KandoTable.js +48 -41
  620. package/lib/ui-kit/KandoTable/KandoTable.test.js +17 -23
  621. package/lib/ui-kit/KandoTable/kandoTableUtils.js +1 -1
  622. package/lib/ui-kit/Layout/Layout.js +8 -7
  623. package/lib/ui-kit/MobileInput/MobileInput.js +56 -50
  624. package/lib/ui-kit/ModalConfirmation/ModalConfirmation.js +14 -17
  625. package/lib/ui-kit/ModalConfirmation/index.js +2 -3
  626. package/lib/ui-kit/OrganicEvents/GaugeChart.js +9 -8
  627. package/lib/ui-kit/OrganicEvents/OrganicEvents.js +8 -9
  628. package/lib/ui-kit/OrganicEvents/OrganicEventsContainer.js +29 -23
  629. package/lib/ui-kit/OrganicEvents/TextInfo.js +17 -13
  630. package/lib/ui-kit/OrganicEvents/index.js +3 -4
  631. package/lib/ui-kit/RadioButtons/RadioButtonGroup.js +12 -11
  632. package/lib/ui-kit/SamplingStatus/SamplingStatus.js +14 -18
  633. package/lib/ui-kit/SamplingStatus/SamplingStatusHelper.js +3 -4
  634. package/lib/ui-kit/ScoreGauge/ScoreGauge.js +21 -24
  635. package/lib/ui-kit/ScoreGauge/constant.js +3 -4
  636. package/lib/ui-kit/ScoreGauge/index.js +3 -4
  637. package/lib/ui-kit/TimeLineChart/TrendChart.js +52 -41
  638. package/lib/ui-kit/TimeLineChart/index.js +3 -4
  639. package/lib/ui-kit/TimeLineChart/test.json +25656 -0
  640. package/lib/ui-kit/TitleAndCloseHeader/TitleAndCloseHeader.js +10 -11
  641. package/lib/ui-kit/Tooltip/Tooltip.js +15 -9
  642. package/lib/ui-kit/index.js +8 -8
  643. package/lib/ui-kit/kandoStepper/KandoStepper.js +13 -14
  644. package/lib/ui-kit/siteName/SiteName.js +13 -11
  645. package/lib/utilities/ActionUtility.js +7 -7
  646. package/lib/utilities/Alert.js +23 -20
  647. package/lib/utilities/Analytics.js +12 -12
  648. package/lib/utilities/Array.js +4 -5
  649. package/lib/utilities/Enum.js +15 -51
  650. package/lib/utilities/ErrorBoundary.js +27 -42
  651. package/lib/utilities/File.js +41 -70
  652. package/lib/utilities/GetDir.js +10 -10
  653. package/lib/utilities/KandoDate.js +7 -15
  654. package/lib/utilities/KandoModal.js +16 -28
  655. package/lib/utilities/LocalStorage.js +5 -7
  656. package/lib/utilities/ThousandsToK.js +2 -2
  657. package/lib/utilities/TimeFormat.js +22 -23
  658. package/lib/utilities/Truncate.js +17 -27
  659. package/lib/utilities/edgesMath.js +15 -16
  660. package/lib/utilities/i18n.js +5 -6
  661. package/lib/utilities/kql.js +10 -12
  662. package/lib/utilities/map/icons.js +4 -4
  663. package/lib/utilities/polylinedecorator.js +88 -113
  664. package/lib/utilities/scoreToData.js +11 -11
  665. package/lib/utilities/scoreToData.test.js +5 -5
  666. package/lib/utilities/time.js +9 -10
  667. package/lib/utilities/uploadToS3.js +12 -12
  668. package/lib/utilities/urls.js +18 -21
  669. package/package.json +6 -7
  670. package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.test.js +0 -41
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof = require("@babel/runtime/helpers/typeof");
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
@@ -11,15 +11,13 @@ require("utilities/polylinedecorator");
11
11
  var _whitePoint = _interopRequireDefault(require("../../../assets/white-point.png"));
12
12
  var _actions = require("../../../store/events/actions");
13
13
  var _PointUtils = require("../points/PointUtils");
14
- 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); }
15
- 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; }
16
- var drawManholeIcon = function drawManholeIcon(sourcePoint, map) {
17
- var pointIcon = L.icon({
14
+ const drawManholeIcon = (sourcePoint, map) => {
15
+ let pointIcon = L.icon({
18
16
  iconUrl: _whitePoint.default,
19
17
  iconSize: [9, 9],
20
18
  iconAnchor: [4.5, 4.5]
21
19
  });
22
- var manholeIcon = L.marker([sourcePoint.latitude, sourcePoint.longitude], {
20
+ let manholeIcon = L.marker([sourcePoint.latitude, sourcePoint.longitude], {
23
21
  icon: pointIcon,
24
22
  riseOnHover: true
25
23
  }).addTo(map);
@@ -28,22 +26,16 @@ var drawManholeIcon = function drawManholeIcon(sourcePoint, map) {
28
26
  manholeIcon['kando_object'] = 'UpstreamPoint';
29
27
  };
30
28
  exports.drawManholeIcon = drawManholeIcon;
31
- var getFirstEdgeOfEventPath = function getFirstEdgeOfEventPath(edges, event) {
29
+ const getFirstEdgeOfEventPath = (edges, event) => {
32
30
  if (event.path[0] === undefined) return;
33
- return edges.find(function (edge) {
34
- return edge.id === event.path[0].edge_id;
35
- });
31
+ return edges.find(edge => edge.id === event.path[0].edge_id);
36
32
  };
37
33
  exports.getFirstEdgeOfEventPath = getFirstEdgeOfEventPath;
38
- var findEdges = function findEdges(edges, nextUpstreamLevelIds) {
39
- return edges.filter(function (edge) {
40
- return nextUpstreamLevelIds.includes(edge.target_point_id);
41
- });
34
+ const findEdges = (edges, nextUpstreamLevelIds) => {
35
+ return edges.filter(edge => nextUpstreamLevelIds.includes(edge.target_point_id));
42
36
  };
43
- var recursiveUpstreamSearch = function recursiveUpstreamSearch(nextLevel, edges, mapAllEdgesNesting, allUpstreamEdges) {
44
- var nextUpstreamLevelIds = nextLevel.map(function (edge) {
45
- return edge.source_point_id;
46
- });
37
+ const recursiveUpstreamSearch = (nextLevel, edges, mapAllEdgesNesting, allUpstreamEdges) => {
38
+ let nextUpstreamLevelIds = nextLevel.map(edge => edge.source_point_id);
47
39
  if (findEdges(edges, nextUpstreamLevelIds).length === 0) {
48
40
  return mapAllEdgesNesting([nextLevel]);
49
41
  } else {
@@ -52,55 +44,47 @@ var recursiveUpstreamSearch = function recursiveUpstreamSearch(nextLevel, edges,
52
44
  }
53
45
  return mapAllEdgesNesting(allUpstreamEdges);
54
46
  };
55
- var mapAllEdgesNesting = function mapAllEdgesNesting(allUpstreamEdges) {
56
- var mapped = [];
57
- allUpstreamEdges.forEach(function (edges) {
58
- edges.forEach(function (edge) {
47
+ const mapAllEdgesNesting = allUpstreamEdges => {
48
+ let mapped = [];
49
+ allUpstreamEdges.forEach(edges => {
50
+ edges.forEach(edge => {
59
51
  mapped.push(edge);
60
52
  });
61
53
  });
62
54
  return mapped;
63
55
  };
64
- var getUpstreamEdges = function getUpstreamEdges(firstEdge, edges) {
65
- var allUpstreamEdges = [];
66
- var firstUpstreamLevel = edges.filter(function (edge) {
67
- return edge.target_point_id === firstEdge.source_point_id;
68
- });
56
+ const getUpstreamEdges = (firstEdge, edges) => {
57
+ let allUpstreamEdges = [];
58
+ let firstUpstreamLevel = edges.filter(edge => edge.target_point_id === firstEdge.source_point_id);
69
59
  return recursiveUpstreamSearch(firstUpstreamLevel, edges, mapAllEdgesNesting, allUpstreamEdges);
70
60
  };
71
61
  exports.getUpstreamEdges = getUpstreamEdges;
72
- var findUpstreamEdgesToDraw = function findUpstreamEdgesToDraw(upstreamEdges, edgesToDraw, points, edges) {
73
- upstreamEdges.forEach(function (upstreamEdge) {
62
+ const findUpstreamEdgesToDraw = (upstreamEdges, edgesToDraw, points, edges) => {
63
+ upstreamEdges.forEach(upstreamEdge => {
74
64
  if (upstreamEdge) {
75
- var sourcePoint = points.find(function (point) {
76
- return point.id === upstreamEdge.source_point_id;
77
- });
65
+ let sourcePoint = points.find(point => point.id === upstreamEdge.source_point_id);
78
66
  if (sourcePoint) edgesToDraw.push(upstreamEdge);
79
- var connectionEdges = edges.filter(function (edge) {
80
- return edge.source_point_id === upstreamEdge.target_point_id;
81
- });
67
+ let connectionEdges = edges.filter(edge => edge.source_point_id === upstreamEdge.target_point_id);
82
68
  if (connectionEdges.length !== 0) {
83
- connectionEdges.forEach(function (edge) {
84
- return edgesToDraw.push(edge);
85
- });
69
+ connectionEdges.forEach(edge => edgesToDraw.push(edge));
86
70
  }
87
71
  }
88
72
  });
89
73
  return edgesToDraw;
90
74
  };
91
75
  exports.findUpstreamEdgesToDraw = findUpstreamEdgesToDraw;
92
- var findDownstreamEdgesToDraw = function findDownstreamEdgesToDraw(firstEdge, edges, downstreamNetwork, edgesToDraw) {
93
- recursiveDownStreamSearch(downstreamNetwork, edges).forEach(function (downStreamEdge) {
76
+ const findDownstreamEdgesToDraw = (firstEdge, edges, downstreamNetwork, edgesToDraw) => {
77
+ recursiveDownStreamSearch(downstreamNetwork, edges).forEach(downStreamEdge => {
94
78
  edgesToDraw.push(downStreamEdge);
95
79
  });
96
80
  };
97
81
  exports.findDownstreamEdgesToDraw = findDownstreamEdgesToDraw;
98
- var recursiveDownStreamSearch = function recursiveDownStreamSearch(downstreamNetwork, edges) {
99
- var lastDownStreamEdge = downstreamNetwork[downstreamNetwork.length - 1];
82
+ const recursiveDownStreamSearch = (downstreamNetwork, edges) => {
83
+ let lastDownStreamEdge = downstreamNetwork[downstreamNetwork.length - 1];
100
84
  if (nextLevelDownStream(lastDownStreamEdge, edges).length === 0) {
101
85
  return downstreamNetwork;
102
86
  } else {
103
- nextLevelDownStream(lastDownStreamEdge, edges).forEach(function (edge) {
87
+ nextLevelDownStream(lastDownStreamEdge, edges).forEach(edge => {
104
88
  downstreamNetwork.push(edge);
105
89
  recursiveDownStreamSearch(downstreamNetwork, edges);
106
90
  });
@@ -108,33 +92,29 @@ var recursiveDownStreamSearch = function recursiveDownStreamSearch(downstreamNet
108
92
  return downstreamNetwork;
109
93
  };
110
94
  exports.recursiveDownStreamSearch = recursiveDownStreamSearch;
111
- var nextLevelDownStream = function nextLevelDownStream(firstEdge, edges) {
112
- return edges.filter(function (edge) {
113
- return edge.source_point_id === firstEdge.target_point_id;
114
- });
95
+ const nextLevelDownStream = (firstEdge, edges) => {
96
+ return edges.filter(edge => edge.source_point_id === firstEdge.target_point_id);
115
97
  };
116
98
  exports.nextLevelDownStream = nextLevelDownStream;
117
- var findEdgesFromEventPathToDraw = function findEdgesFromEventPathToDraw(edgesToDraw, event, edges) {
118
- event.path.forEach(function (part) {
119
- var matchedPart = edges.find(function (edge) {
120
- return edge.id === part.edge_id;
121
- });
99
+ const findEdgesFromEventPathToDraw = (edgesToDraw, event, edges) => {
100
+ event.path.forEach(part => {
101
+ let matchedPart = edges.find(edge => edge.id === part.edge_id);
122
102
  if (matchedPart !== undefined) edgesToDraw.push(matchedPart);
123
103
  });
124
104
  };
125
105
  exports.findEdgesFromEventPathToDraw = findEdgesFromEventPathToDraw;
126
- var drawNetwork = function drawNetwork(edges, points, dispatch, map, event, layerGroup, flowRateUnit) {
127
- var latlngs = [];
128
- edges.forEach(function (edge) {
129
- edge.shape_data.forEach(function (data) {
106
+ const drawNetwork = (edges, points, dispatch, map, event, layerGroup, flowRateUnit) => {
107
+ let latlngs = [];
108
+ edges.forEach(edge => {
109
+ edge.shape_data.forEach(data => {
130
110
  latlngs.push([data.lat, data.lng]);
131
111
  });
132
- var polylineBack = L.polyline(latlngs, {
112
+ let polylineBack = L.polyline(latlngs, {
133
113
  color: 'rgb(227,227,227)',
134
114
  weight: 6,
135
115
  opacity: 1
136
116
  });
137
- var tailDash;
117
+ let tailDash;
138
118
  if (L.Symbol !== undefined) {
139
119
  tailDash = L.polylineDecorator(polylineBack._latlngs, {
140
120
  patterns: [
@@ -162,7 +142,7 @@ var drawNetwork = function drawNetwork(edges, points, dispatch, map, event, laye
162
142
  if (map !== null) layerGroup.addLayer(polylineBack);
163
143
  polylineBack.bringToFront();
164
144
  if (L.Symbol !== undefined) tailDash.bringToFront();
165
- var polylineFront = L.polyline(latlngs, {
145
+ let polylineFront = L.polyline(latlngs, {
166
146
  color: 'rgb(29,29,29)',
167
147
  weight: 1,
168
148
  opacity: 1
@@ -177,8 +157,8 @@ var drawNetwork = function drawNetwork(edges, points, dispatch, map, event, laye
177
157
  if (event.hovered) dispatch((0, _actions.setHoveredEdgePaths)([polylineBack, polylineFront]));
178
158
  latlngs = [];
179
159
  if (points.length !== 0) {
180
- var sourcePoint = pointFinder(points, edge.source_point_id);
181
- var targetPoint = pointFinder(points, edge.target_point_id);
160
+ let sourcePoint = pointFinder(points, edge.source_point_id);
161
+ let targetPoint = pointFinder(points, edge.target_point_id);
182
162
  if (sourcePoint !== undefined && targetPoint !== undefined) {
183
163
  polylineBack.bindPopup("Edge ID: ".concat(edge.id, ",<br>\n Source point: ").concat(sourcePoint.group.name, ",<br>\n Target point: ").concat(targetPoint.group.name, ",\n Distance: ").concat(edge.distance));
184
164
  }
@@ -190,18 +170,16 @@ var drawNetwork = function drawNetwork(edges, points, dispatch, map, event, laye
190
170
  });
191
171
  };
192
172
  exports.drawNetwork = drawNetwork;
193
- var pointFinder = function pointFinder(points, desiredPointId) {
194
- var desiredPoint = points.find(function (point) {
195
- return point.id === desiredPointId;
196
- });
173
+ const pointFinder = (points, desiredPointId) => {
174
+ let desiredPoint = points.find(point => point.id === desiredPointId);
197
175
  return desiredPoint;
198
176
  };
199
- var findAndDrawEventNetworkEdges = function findAndDrawEventNetworkEdges(edges, event, points, dispatch, map, layerGroup, flowRateUnit) {
200
- var edgesToDraw = [];
201
- var firstEdge = getFirstEdgeOfEventPath(edges, event);
177
+ const findAndDrawEventNetworkEdges = (edges, event, points, dispatch, map, layerGroup, flowRateUnit) => {
178
+ let edgesToDraw = [];
179
+ let firstEdge = getFirstEdgeOfEventPath(edges, event);
202
180
  if (firstEdge !== undefined) {
203
- var downstreamNetwork = [firstEdge];
204
- var upstreamEdges = getUpstreamEdges(firstEdge, edges);
181
+ let downstreamNetwork = [firstEdge];
182
+ let upstreamEdges = getUpstreamEdges(firstEdge, edges);
205
183
  if (upstreamEdges === undefined) return;
206
184
  if (upstreamEdges.length !== 0) findUpstreamEdgesToDraw(upstreamEdges, edgesToDraw, points, edges);
207
185
  findDownstreamEdgesToDraw(firstEdge, edges, downstreamNetwork, edgesToDraw);
@@ -209,28 +187,26 @@ var findAndDrawEventNetworkEdges = function findAndDrawEventNetworkEdges(edges,
209
187
  drawNetwork(edgesToDraw, points, dispatch, map, event, layerGroup, flowRateUnit);
210
188
  };
211
189
  exports.findAndDrawEventNetworkEdges = findAndDrawEventNetworkEdges;
212
- var pointIsObservation = function pointIsObservation(event, point) {
213
- return event.observations.find(function (obs) {
214
- return obs.point_id === point.id;
215
- });
190
+ const pointIsObservation = (event, point) => {
191
+ return event.observations.find(obs => obs.point_id === point.id);
216
192
  };
217
193
  exports.pointIsObservation = pointIsObservation;
218
- var pointIsWWTP = function pointIsWWTP(point) {
194
+ const pointIsWWTP = point => {
219
195
  return point.group.type === 'Groups::WastewaterTreatmentPlant';
220
196
  };
221
197
  exports.pointIsWWTP = pointIsWWTP;
222
- var pointIsCollector = function pointIsCollector(point) {
198
+ const pointIsCollector = point => {
223
199
  return point.group.type === 'Groups::Collectors';
224
200
  };
225
201
  exports.pointIsCollector = pointIsCollector;
226
- var isCollectorUnmonitored = function isCollectorUnmonitored(point) {
202
+ const isCollectorUnmonitored = point => {
227
203
  return pointIsCollector(point) && !point.has_device;
228
204
  };
229
205
  exports.isCollectorUnmonitored = isCollectorUnmonitored;
230
- var createPointLogic = function createPointLogic(point, map, layerGroup, flowRateUnit) {
206
+ const createPointLogic = (point, map, layerGroup, flowRateUnit) => {
231
207
  if (isCollectorUnmonitored(point)) {
232
208
  return;
233
209
  }
234
210
  (0, _PointUtils.createBubblePoint)([point.latitude, point.longitude], point, map, null, layerGroup, flowRateUnit);
235
211
  };
236
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX3doaXRlUG9pbnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2FjdGlvbnMiLCJfUG9pbnRVdGlscyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwiZHJhd01hbmhvbGVJY29uIiwic291cmNlUG9pbnQiLCJtYXAiLCJwb2ludEljb24iLCJpY29uIiwiaWNvblVybCIsIndoaXRlUG9pbnQiLCJpY29uU2l6ZSIsImljb25BbmNob3IiLCJtYW5ob2xlSWNvbiIsIm1hcmtlciIsImxhdGl0dWRlIiwibG9uZ2l0dWRlIiwicmlzZU9uSG92ZXIiLCJhZGRUbyIsImJpbmRUb29sdGlwIiwiY29uY2F0IiwiZ3JvdXAiLCJuYW1lIiwic2VjdG9yX25hbWUiLCJpZCIsImV4cG9ydHMiLCJnZXRGaXJzdEVkZ2VPZkV2ZW50UGF0aCIsImVkZ2VzIiwiZXZlbnQiLCJwYXRoIiwidW5kZWZpbmVkIiwiZmluZCIsImVkZ2UiLCJlZGdlX2lkIiwiZmluZEVkZ2VzIiwibmV4dFVwc3RyZWFtTGV2ZWxJZHMiLCJmaWx0ZXIiLCJpbmNsdWRlcyIsInRhcmdldF9wb2ludF9pZCIsInJlY3Vyc2l2ZVVwc3RyZWFtU2VhcmNoIiwibmV4dExldmVsIiwibWFwQWxsRWRnZXNOZXN0aW5nIiwiYWxsVXBzdHJlYW1FZGdlcyIsInNvdXJjZV9wb2ludF9pZCIsImxlbmd0aCIsInB1c2giLCJtYXBwZWQiLCJmb3JFYWNoIiwiZ2V0VXBzdHJlYW1FZGdlcyIsImZpcnN0RWRnZSIsImZpcnN0VXBzdHJlYW1MZXZlbCIsImZpbmRVcHN0cmVhbUVkZ2VzVG9EcmF3IiwidXBzdHJlYW1FZGdlcyIsImVkZ2VzVG9EcmF3IiwicG9pbnRzIiwidXBzdHJlYW1FZGdlIiwicG9pbnQiLCJjb25uZWN0aW9uRWRnZXMiLCJmaW5kRG93bnN0cmVhbUVkZ2VzVG9EcmF3IiwiZG93bnN0cmVhbU5ldHdvcmsiLCJyZWN1cnNpdmVEb3duU3RyZWFtU2VhcmNoIiwiZG93blN0cmVhbUVkZ2UiLCJsYXN0RG93blN0cmVhbUVkZ2UiLCJuZXh0TGV2ZWxEb3duU3RyZWFtIiwiZmluZEVkZ2VzRnJvbUV2ZW50UGF0aFRvRHJhdyIsInBhcnQiLCJtYXRjaGVkUGFydCIsImRyYXdOZXR3b3JrIiwiZGlzcGF0Y2giLCJsYXllckdyb3VwIiwiZmxvd1JhdGVVbml0IiwibGF0bG5ncyIsInNoYXBlX2RhdGEiLCJkYXRhIiwibGF0IiwibG5nIiwicG9seWxpbmVCYWNrIiwicG9seWxpbmUiLCJjb2xvciIsIndlaWdodCIsIm9wYWNpdHkiLCJ0YWlsRGFzaCIsIlN5bWJvbCIsInBvbHlsaW5lRGVjb3JhdG9yIiwiX2xhdGxuZ3MiLCJwYXR0ZXJucyIsIm9mZnNldCIsInJlcGVhdCIsInN5bWJvbCIsImFycm93SGVhZCIsInBpeGVsU2l6ZSIsInBvbHlnb24iLCJwYXRoT3B0aW9ucyIsInN0cm9rZSIsImFkZExheWVyIiwiaG92ZXJlZCIsImZvY3VzZWQiLCJicmluZ1RvRnJvbnQiLCJwb2x5bGluZUZyb250Iiwic2V0SG92ZXJlZEVkZ2VQYXRocyIsInBvaW50RmluZGVyIiwidGFyZ2V0UG9pbnQiLCJiaW5kUG9wdXAiLCJkaXN0YW5jZSIsImNyZWF0ZVBvaW50TG9naWMiLCJkZXNpcmVkUG9pbnRJZCIsImRlc2lyZWRQb2ludCIsImZpbmRBbmREcmF3RXZlbnROZXR3b3JrRWRnZXMiLCJwb2ludElzT2JzZXJ2YXRpb24iLCJvYnNlcnZhdGlvbnMiLCJvYnMiLCJwb2ludF9pZCIsInBvaW50SXNXV1RQIiwidHlwZSIsInBvaW50SXNDb2xsZWN0b3IiLCJpc0NvbGxlY3RvclVubW9uaXRvcmVkIiwiaGFzX2RldmljZSIsImNyZWF0ZUJ1YmJsZVBvaW50Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL1dpZGdldHMvTWFwL2V2ZW50cy9FdmVudFV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIEwgZnJvbSAnbGVhZmxldCc7XG5pbXBvcnQgJ3NyYy91dGlsaXRpZXMvcG9seWxpbmVkZWNvcmF0b3InO1xuaW1wb3J0IHdoaXRlUG9pbnQgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3doaXRlLXBvaW50LnBuZyc7XG5pbXBvcnQgeyBJRWRnZSB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL2VkZ2VzL21vZGVscy9JRWRnZSc7XG5pbXBvcnQgeyBJUG9pbnQgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9wb2ludHMvbW9kZWxzL0lQb2ludCc7XG5pbXBvcnQgeyBJRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9ldmVudHMvbW9kZWxzL0lFdmVudCc7XG5pbXBvcnQgeyBzZXRIb3ZlcmVkRWRnZVBhdGhzIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvZXZlbnRzL2FjdGlvbnMnO1xuaW1wb3J0IHsgY3JlYXRlQnViYmxlUG9pbnQgfSBmcm9tICcuLi9wb2ludHMvUG9pbnRVdGlscyc7XG5cbmV4cG9ydCBjb25zdCBkcmF3TWFuaG9sZUljb24gPSAoc291cmNlUG9pbnQ6IElQb2ludCwgbWFwOiBMLk1hcCkgPT4ge1xuICBsZXQgcG9pbnRJY29uID0gTC5pY29uKHtcbiAgICBpY29uVXJsOiB3aGl0ZVBvaW50LFxuICAgIGljb25TaXplOiBbOSwgOV0sXG4gICAgaWNvbkFuY2hvcjogWzQuNSwgNC41XSxcbiAgfSk7XG5cbiAgbGV0IG1hbmhvbGVJY29uOiBhbnkgPSBMLm1hcmtlcihcbiAgICBbc291cmNlUG9pbnQubGF0aXR1ZGUsIHNvdXJjZVBvaW50LmxvbmdpdHVkZV0sXG4gICAge1xuICAgICAgaWNvbjogcG9pbnRJY29uLFxuICAgICAgcmlzZU9uSG92ZXI6IHRydWUsXG4gICAgfSxcbiAgKS5hZGRUbyhtYXApO1xuICBtYW5ob2xlSWNvbi5iaW5kVG9vbHRpcChcbiAgICBgJHtzb3VyY2VQb2ludC5ncm91cC5uYW1lfSAoJHtzb3VyY2VQb2ludC5ncm91cC5zZWN0b3JfbmFtZX0pYCxcbiAgKTtcbiAgbWFuaG9sZUljb25bJ2thbmRvX29iamVjdF9pZCddID0gc291cmNlUG9pbnQuaWQ7XG4gIG1hbmhvbGVJY29uWydrYW5kb19vYmplY3QnXSA9ICdVcHN0cmVhbVBvaW50Jztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGaXJzdEVkZ2VPZkV2ZW50UGF0aCA9IChlZGdlczogSUVkZ2VbXSwgZXZlbnQ6IElFdmVudCkgPT4ge1xuICBpZiAoZXZlbnQucGF0aFswXSA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gIHJldHVybiBlZGdlcy5maW5kKChlZGdlKSA9PiBlZGdlLmlkID09PSBldmVudC5wYXRoWzBdLmVkZ2VfaWQpO1xufTtcblxuY29uc3QgZmluZEVkZ2VzID0gKGVkZ2VzLCBuZXh0VXBzdHJlYW1MZXZlbElkcykgPT4ge1xuICByZXR1cm4gZWRnZXMuZmlsdGVyKChlZGdlOiBJRWRnZSkgPT5cbiAgICBuZXh0VXBzdHJlYW1MZXZlbElkcy5pbmNsdWRlcyhlZGdlLnRhcmdldF9wb2ludF9pZCksXG4gICk7XG59O1xuXG5jb25zdCByZWN1cnNpdmVVcHN0cmVhbVNlYXJjaCA9IChcbiAgbmV4dExldmVsLFxuICBlZGdlcyxcbiAgbWFwQWxsRWRnZXNOZXN0aW5nLFxuICBhbGxVcHN0cmVhbUVkZ2VzLFxuKSA9PiB7XG4gIGxldCBuZXh0VXBzdHJlYW1MZXZlbElkcyA9IG5leHRMZXZlbC5tYXAoKGVkZ2UpID0+IGVkZ2Uuc291cmNlX3BvaW50X2lkKTtcbiAgaWYgKGZpbmRFZGdlcyhlZGdlcywgbmV4dFVwc3RyZWFtTGV2ZWxJZHMpLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBtYXBBbGxFZGdlc05lc3RpbmcoW25leHRMZXZlbF0pO1xuICB9IGVsc2Uge1xuICAgIGFsbFVwc3RyZWFtRWRnZXMucHVzaChmaW5kRWRnZXMoZWRnZXMsIG5leHRVcHN0cmVhbUxldmVsSWRzKSk7XG4gICAgcmVjdXJzaXZlVXBzdHJlYW1TZWFyY2goXG4gICAgICBmaW5kRWRnZXMoZWRnZXMsIG5leHRVcHN0cmVhbUxldmVsSWRzKSxcbiAgICAgIGVkZ2VzLFxuICAgICAgbWFwQWxsRWRnZXNOZXN0aW5nLFxuICAgICAgYWxsVXBzdHJlYW1FZGdlcyxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIG1hcEFsbEVkZ2VzTmVzdGluZyhhbGxVcHN0cmVhbUVkZ2VzKTtcbn07XG5cbmNvbnN0IG1hcEFsbEVkZ2VzTmVzdGluZyA9IChhbGxVcHN0cmVhbUVkZ2VzKSA9PiB7XG4gIGxldCBtYXBwZWQ6IGFueVtdID0gW107XG4gIGFsbFVwc3RyZWFtRWRnZXMuZm9yRWFjaCgoZWRnZXMpID0+IHtcbiAgICBlZGdlcy5mb3JFYWNoKChlZGdlKSA9PiB7XG4gICAgICBtYXBwZWQucHVzaChlZGdlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIG1hcHBlZDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRVcHN0cmVhbUVkZ2VzID0gKGZpcnN0RWRnZTogSUVkZ2UsIGVkZ2VzOiBJRWRnZVtdKSA9PiB7XG4gIGxldCBhbGxVcHN0cmVhbUVkZ2VzOiBhbnlbXSA9IFtdO1xuICBsZXQgZmlyc3RVcHN0cmVhbUxldmVsOiBJRWRnZVtdID0gZWRnZXMuZmlsdGVyKFxuICAgIChlZGdlKSA9PiBlZGdlLnRhcmdldF9wb2ludF9pZCA9PT0gZmlyc3RFZGdlIS5zb3VyY2VfcG9pbnRfaWQsXG4gICk7XG5cbiAgcmV0dXJuIHJlY3Vyc2l2ZVVwc3RyZWFtU2VhcmNoKFxuICAgIGZpcnN0VXBzdHJlYW1MZXZlbCxcbiAgICBlZGdlcyxcbiAgICBtYXBBbGxFZGdlc05lc3RpbmcsXG4gICAgYWxsVXBzdHJlYW1FZGdlcyxcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBmaW5kVXBzdHJlYW1FZGdlc1RvRHJhdyA9IChcbiAgdXBzdHJlYW1FZGdlczogSUVkZ2VbXSxcbiAgZWRnZXNUb0RyYXc6IElFZGdlW10sXG4gIHBvaW50czogSVBvaW50W10sXG4gIGVkZ2VzOiBJRWRnZVtdLFxuKSA9PiB7XG4gIHVwc3RyZWFtRWRnZXMuZm9yRWFjaCgodXBzdHJlYW1FZGdlKSA9PiB7XG4gICAgaWYgKHVwc3RyZWFtRWRnZSkge1xuICAgICAgbGV0IHNvdXJjZVBvaW50ID0gcG9pbnRzLmZpbmQoXG4gICAgICAgIChwb2ludCkgPT4gcG9pbnQuaWQgPT09IHVwc3RyZWFtRWRnZSEuc291cmNlX3BvaW50X2lkLFxuICAgICAgKTtcblxuICAgICAgaWYgKHNvdXJjZVBvaW50KSBlZGdlc1RvRHJhdy5wdXNoKHVwc3RyZWFtRWRnZSk7XG5cbiAgICAgIGxldCBjb25uZWN0aW9uRWRnZXMgPSBlZGdlcy5maWx0ZXIoXG4gICAgICAgIChlZGdlKSA9PiBlZGdlLnNvdXJjZV9wb2ludF9pZCA9PT0gdXBzdHJlYW1FZGdlLnRhcmdldF9wb2ludF9pZCxcbiAgICAgICk7XG5cbiAgICAgIGlmIChjb25uZWN0aW9uRWRnZXMubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIGNvbm5lY3Rpb25FZGdlcy5mb3JFYWNoKChlZGdlKSA9PiBlZGdlc1RvRHJhdy5wdXNoKGVkZ2UpKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBlZGdlc1RvRHJhdztcbn07XG5cbmV4cG9ydCBjb25zdCBmaW5kRG93bnN0cmVhbUVkZ2VzVG9EcmF3ID0gKFxuICBmaXJzdEVkZ2U6IElFZGdlLFxuICBlZGdlczogSUVkZ2VbXSxcbiAgZG93bnN0cmVhbU5ldHdvcmssXG4gIGVkZ2VzVG9EcmF3LFxuKSA9PiB7XG4gIHJlY3Vyc2l2ZURvd25TdHJlYW1TZWFyY2goZG93bnN0cmVhbU5ldHdvcmssIGVkZ2VzKS5mb3JFYWNoKFxuICAgIChkb3duU3RyZWFtRWRnZSkgPT4ge1xuICAgICAgZWRnZXNUb0RyYXcucHVzaChkb3duU3RyZWFtRWRnZSk7XG4gICAgfSxcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZWN1cnNpdmVEb3duU3RyZWFtU2VhcmNoID0gKFxuICBkb3duc3RyZWFtTmV0d29yazogSUVkZ2VbXSxcbiAgZWRnZXM6IElFZGdlW10sXG4pID0+IHtcbiAgbGV0IGxhc3REb3duU3RyZWFtRWRnZSA9IGRvd25zdHJlYW1OZXR3b3JrW2Rvd25zdHJlYW1OZXR3b3JrLmxlbmd0aCAtIDFdO1xuXG4gIGlmIChuZXh0TGV2ZWxEb3duU3RyZWFtKGxhc3REb3duU3RyZWFtRWRnZSwgZWRnZXMpLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBkb3duc3RyZWFtTmV0d29yaztcbiAgfSBlbHNlIHtcbiAgICBuZXh0TGV2ZWxEb3duU3RyZWFtKGxhc3REb3duU3RyZWFtRWRnZSwgZWRnZXMpLmZvckVhY2goKGVkZ2UpID0+IHtcbiAgICAgIGRvd25zdHJlYW1OZXR3b3JrLnB1c2goZWRnZSk7XG4gICAgICByZWN1cnNpdmVEb3duU3RyZWFtU2VhcmNoKGRvd25zdHJlYW1OZXR3b3JrLCBlZGdlcyk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gZG93bnN0cmVhbU5ldHdvcms7XG59O1xuXG5leHBvcnQgY29uc3QgbmV4dExldmVsRG93blN0cmVhbSA9IChmaXJzdEVkZ2U6IElFZGdlLCBlZGdlczogSUVkZ2VbXSkgPT4ge1xuICByZXR1cm4gZWRnZXMuZmlsdGVyKFxuICAgIChlZGdlKSA9PiBlZGdlLnNvdXJjZV9wb2ludF9pZCA9PT0gZmlyc3RFZGdlLnRhcmdldF9wb2ludF9pZCxcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBmaW5kRWRnZXNGcm9tRXZlbnRQYXRoVG9EcmF3ID0gKFxuICBlZGdlc1RvRHJhdzogSUVkZ2VbXSxcbiAgZXZlbnQ6IElFdmVudCxcbiAgZWRnZXM6IElFZGdlW10sXG4pID0+IHtcbiAgZXZlbnQucGF0aC5mb3JFYWNoKChwYXJ0KSA9PiB7XG4gICAgbGV0IG1hdGNoZWRQYXJ0ID0gZWRnZXMuZmluZCgoZWRnZSkgPT4gZWRnZS5pZCA9PT0gcGFydC5lZGdlX2lkKTtcbiAgICBpZiAobWF0Y2hlZFBhcnQgIT09IHVuZGVmaW5lZCkgZWRnZXNUb0RyYXcucHVzaChtYXRjaGVkUGFydCk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGRyYXdOZXR3b3JrID0gKFxuICBlZGdlczogSUVkZ2VbXSxcbiAgcG9pbnRzOiBJUG9pbnRbXSxcbiAgZGlzcGF0Y2gsXG4gIG1hcCxcbiAgZXZlbnQsXG4gIGxheWVyR3JvdXAsXG4gIGZsb3dSYXRlVW5pdCxcbikgPT4ge1xuICBsZXQgbGF0bG5nczogYW55ID0gW107XG4gIGVkZ2VzLmZvckVhY2goKGVkZ2UpID0+IHtcbiAgICBlZGdlLnNoYXBlX2RhdGEuZm9yRWFjaCgoZGF0YTogYW55KSA9PiB7XG4gICAgICBsYXRsbmdzLnB1c2goW2RhdGEubGF0LCBkYXRhLmxuZ10pO1xuICAgIH0pO1xuXG4gICAgbGV0IHBvbHlsaW5lQmFjazogYW55ID0gTC5wb2x5bGluZShsYXRsbmdzLCB7XG4gICAgICBjb2xvcjogJ3JnYigyMjcsMjI3LDIyNyknLFxuICAgICAgd2VpZ2h0OiA2LFxuICAgICAgb3BhY2l0eTogMSxcbiAgICB9KTtcblxuICAgIGxldCB0YWlsRGFzaDogYW55O1xuXG4gICAgaWYgKEwuU3ltYm9sICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRhaWxEYXNoID0gTC5wb2x5bGluZURlY29yYXRvcihwb2x5bGluZUJhY2suX2xhdGxuZ3MsIHtcbiAgICAgICAgcGF0dGVybnM6IFtcbiAgICAgICAgICAvLyBkZWZpbmVzIGEgcGF0dGVybiBvZiAxMHB4LXdpZGUgZGFzaGVzLCByZXBlYXRlZCBldmVyeSAyMHB4IG9uIHRoZSBsaW5lXG4gICAgICAgICAge1xuICAgICAgICAgICAgb2Zmc2V0OiAxNSxcbiAgICAgICAgICAgIHJlcGVhdDogMjUsXG4gICAgICAgICAgICBzeW1ib2w6IEwuU3ltYm9sLmFycm93SGVhZCh7XG4gICAgICAgICAgICAgIHBpeGVsU2l6ZTogMyxcbiAgICAgICAgICAgICAgcG9seWdvbjogZmFsc2UsXG4gICAgICAgICAgICAgIHBhdGhPcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgc3Ryb2tlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAncmdiYSgwLDAsMCknLFxuICAgICAgICAgICAgICAgIHdlaWdodDogMSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICAgIHRhaWxEYXNoWydrYW5kb19vYmplY3QnXSA9ICdEZWNvcmF0b3InO1xuICAgICAgbGF5ZXJHcm91cC5hZGRMYXllcih0YWlsRGFzaCk7XG4gICAgfVxuXG4gICAgcG9seWxpbmVCYWNrWydrYW5kb19vYmplY3RfaWQnXSA9IGVkZ2UuaWQ7XG4gICAgaWYgKGV2ZW50LmhvdmVyZWQpIHBvbHlsaW5lQmFja1sna2FuZG9fb2JqZWN0J10gPSAnSG92ZXJlZEVkZ2UnO1xuICAgIGlmIChldmVudC5mb2N1c2VkKSBwb2x5bGluZUJhY2tbJ2thbmRvX29iamVjdCddID0gJ0ZvY3VzZWRFZGdlJztcbiAgICBpZiAobWFwICE9PSBudWxsKSBsYXllckdyb3VwLmFkZExheWVyKHBvbHlsaW5lQmFjayk7XG4gICAgcG9seWxpbmVCYWNrLmJyaW5nVG9Gcm9udCgpO1xuICAgIGlmIChMLlN5bWJvbCAhPT0gdW5kZWZpbmVkKSB0YWlsRGFzaC5icmluZ1RvRnJvbnQoKTtcblxuICAgIGxldCBwb2x5bGluZUZyb250OiBhbnkgPSBMLnBvbHlsaW5lKGxhdGxuZ3MsIHtcbiAgICAgIGNvbG9yOiAncmdiKDI5LDI5LDI5KScsXG4gICAgICB3ZWlnaHQ6IDEsXG4gICAgICBvcGFjaXR5OiAxLFxuICAgIH0pO1xuXG4gICAgcG9seWxpbmVGcm9udFsna2FuZG9fb2JqZWN0X2lkJ10gPSBlZGdlLmlkO1xuICAgIGlmIChldmVudC5ob3ZlcmVkKSBwb2x5bGluZUZyb250WydrYW5kb19vYmplY3QnXSA9ICdIb3ZlcmVkRWRnZUZyb250JztcbiAgICBpZiAoZXZlbnQuZm9jdXNlZCkgcG9seWxpbmVGcm9udFsna2FuZG9fb2JqZWN0J10gPSAnRm9jdXNlZEVkZ2VGcm9udCc7XG4gICAgaWYgKG1hcCAhPT0gbnVsbCkgbGF5ZXJHcm91cC5hZGRMYXllcihwb2x5bGluZUZyb250KTtcbiAgICBwb2x5bGluZUJhY2suYWRkVG8obWFwKTtcbiAgICBwb2x5bGluZUZyb250LmFkZFRvKG1hcCk7XG5cbiAgICBwb2x5bGluZUZyb250LmJyaW5nVG9Gcm9udCgpO1xuICAgIGlmIChldmVudC5ob3ZlcmVkKVxuICAgICAgZGlzcGF0Y2goc2V0SG92ZXJlZEVkZ2VQYXRocyhbcG9seWxpbmVCYWNrLCBwb2x5bGluZUZyb250XSkpO1xuICAgIGxhdGxuZ3MgPSBbXTtcblxuICAgIGlmIChwb2ludHMubGVuZ3RoICE9PSAwKSB7XG4gICAgICBsZXQgc291cmNlUG9pbnQ6IElQb2ludCA9IHBvaW50RmluZGVyKHBvaW50cywgZWRnZS5zb3VyY2VfcG9pbnRfaWQpO1xuICAgICAgbGV0IHRhcmdldFBvaW50OiBJUG9pbnQgPSBwb2ludEZpbmRlcihwb2ludHMsIGVkZ2UudGFyZ2V0X3BvaW50X2lkKTtcbiAgICAgIGlmIChzb3VyY2VQb2ludCAhPT0gdW5kZWZpbmVkICYmIHRhcmdldFBvaW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcG9seWxpbmVCYWNrLmJpbmRQb3B1cChgRWRnZSBJRDogJHtlZGdlLmlkfSw8YnI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZSBwb2ludDogJHtzb3VyY2VQb2ludC5ncm91cC5uYW1lfSw8YnI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldCBwb2ludDogJHt0YXJnZXRQb2ludC5ncm91cC5uYW1lfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlzdGFuY2U6ICR7ZWRnZS5kaXN0YW5jZX1gKTtcbiAgICAgIH1cbiAgICAgIGNyZWF0ZVBvaW50TG9naWMoc291cmNlUG9pbnQsIG1hcCwgbGF5ZXJHcm91cCwgZmxvd1JhdGVVbml0KTtcbiAgICAgIGlmIChlZGdlc1tlZGdlcy5sZW5ndGggLSAxXS50YXJnZXRfcG9pbnRfaWQgPT09IGVkZ2UudGFyZ2V0X3BvaW50X2lkKSB7XG4gICAgICAgIGNyZWF0ZVBvaW50TG9naWModGFyZ2V0UG9pbnQsIG1hcCwgbGF5ZXJHcm91cCk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IHBvaW50RmluZGVyID0gKHBvaW50cywgZGVzaXJlZFBvaW50SWQpID0+IHtcbiAgbGV0IGRlc2lyZWRQb2ludDogSVBvaW50ID0gcG9pbnRzLmZpbmQoXG4gICAgKHBvaW50OiBJUG9pbnQpID0+IHBvaW50LmlkID09PSBkZXNpcmVkUG9pbnRJZCxcbiAgKTtcblxuICByZXR1cm4gZGVzaXJlZFBvaW50O1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbmRBbmREcmF3RXZlbnROZXR3b3JrRWRnZXMgPSAoXG4gIGVkZ2VzOiBJRWRnZVtdLFxuICBldmVudDogSUV2ZW50LFxuICBwb2ludHM6IElQb2ludFtdLFxuICBkaXNwYXRjaCxcbiAgbWFwLFxuICBsYXllckdyb3VwLFxuICBmbG93UmF0ZVVuaXQsXG4pID0+IHtcbiAgbGV0IGVkZ2VzVG9EcmF3OiBJRWRnZVtdID0gW107XG4gIGxldCBmaXJzdEVkZ2UgPSBnZXRGaXJzdEVkZ2VPZkV2ZW50UGF0aChlZGdlcywgZXZlbnQpO1xuXG4gIGlmIChmaXJzdEVkZ2UgIT09IHVuZGVmaW5lZCkge1xuICAgIGxldCBkb3duc3RyZWFtTmV0d29yazogSUVkZ2VbXSA9IFtmaXJzdEVkZ2VdO1xuICAgIGxldCB1cHN0cmVhbUVkZ2VzID0gZ2V0VXBzdHJlYW1FZGdlcyhmaXJzdEVkZ2UsIGVkZ2VzKTtcbiAgICBpZiAodXBzdHJlYW1FZGdlcyA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgaWYgKHVwc3RyZWFtRWRnZXMubGVuZ3RoICE9PSAwKVxuICAgICAgZmluZFVwc3RyZWFtRWRnZXNUb0RyYXcodXBzdHJlYW1FZGdlcywgZWRnZXNUb0RyYXcsIHBvaW50cywgZWRnZXMpO1xuICAgIGZpbmREb3duc3RyZWFtRWRnZXNUb0RyYXcoZmlyc3RFZGdlLCBlZGdlcywgZG93bnN0cmVhbU5ldHdvcmssIGVkZ2VzVG9EcmF3KTtcbiAgfVxuXG4gIGRyYXdOZXR3b3JrKFxuICAgIGVkZ2VzVG9EcmF3LFxuICAgIHBvaW50cyxcbiAgICBkaXNwYXRjaCxcbiAgICBtYXAsXG4gICAgZXZlbnQsXG4gICAgbGF5ZXJHcm91cCxcbiAgICBmbG93UmF0ZVVuaXQsXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgcG9pbnRJc09ic2VydmF0aW9uID0gKGV2ZW50OiBJRXZlbnQsIHBvaW50OiBJUG9pbnQpID0+IHtcbiAgcmV0dXJuIGV2ZW50Lm9ic2VydmF0aW9ucy5maW5kKChvYnMpID0+IG9icy5wb2ludF9pZCA9PT0gcG9pbnQuaWQpO1xufTtcblxuZXhwb3J0IGNvbnN0IHBvaW50SXNXV1RQID0gKHBvaW50OiBJUG9pbnQpID0+IHtcbiAgcmV0dXJuIHBvaW50Lmdyb3VwLnR5cGUgPT09ICdHcm91cHM6Oldhc3Rld2F0ZXJUcmVhdG1lbnRQbGFudCc7XG59O1xuXG5leHBvcnQgY29uc3QgcG9pbnRJc0NvbGxlY3RvciA9IChwb2ludDogSVBvaW50KSA9PiB7XG4gIHJldHVybiBwb2ludC5ncm91cC50eXBlID09PSAnR3JvdXBzOjpDb2xsZWN0b3JzJztcbn07XG5cbmV4cG9ydCBjb25zdCBpc0NvbGxlY3RvclVubW9uaXRvcmVkID0gKHBvaW50OiBJUG9pbnQpID0+IHtcbiAgcmV0dXJuIHBvaW50SXNDb2xsZWN0b3IocG9pbnQpICYmICFwb2ludC5oYXNfZGV2aWNlO1xufTtcblxuY29uc3QgY3JlYXRlUG9pbnRMb2dpYyA9IChwb2ludDogSVBvaW50LCBtYXAsIGxheWVyR3JvdXAsIGZsb3dSYXRlVW5pdCkgPT4ge1xuICBpZiAoaXNDb2xsZWN0b3JVbm1vbml0b3JlZChwb2ludCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjcmVhdGVCdWJibGVQb2ludChcbiAgICBbcG9pbnQubGF0aXR1ZGUsIHBvaW50LmxvbmdpdHVkZV0sXG4gICAgcG9pbnQsXG4gICAgbWFwLFxuICAgIG51bGwsXG4gICAgbGF5ZXJHcm91cCxcbiAgICBmbG93UmF0ZVVuaXQsXG4gICk7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLENBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBQSxPQUFBO0FBQ0EsSUFBQUMsV0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBSUEsSUFBQUcsUUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksV0FBQSxHQUFBSixPQUFBO0FBQXlELFNBQUFLLHlCQUFBQyxXQUFBLGVBQUFDLE9BQUEsa0NBQUFDLGlCQUFBLE9BQUFELE9BQUEsUUFBQUUsZ0JBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsV0FBQSxXQUFBQSxXQUFBLEdBQUFHLGdCQUFBLEdBQUFELGlCQUFBLEtBQUFGLFdBQUE7QUFBQSxTQUFBUCx3QkFBQVcsR0FBQSxFQUFBSixXQUFBLFNBQUFBLFdBQUEsSUFBQUksR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsV0FBQUQsR0FBQSxRQUFBQSxHQUFBLGFBQUFFLE9BQUEsQ0FBQUYsR0FBQSx5QkFBQUEsR0FBQSw0QkFBQUcsT0FBQSxFQUFBSCxHQUFBLFVBQUFJLEtBQUEsR0FBQVQsd0JBQUEsQ0FBQUMsV0FBQSxPQUFBUSxLQUFBLElBQUFBLEtBQUEsQ0FBQUMsR0FBQSxDQUFBTCxHQUFB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
212
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX3doaXRlUG9pbnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2FjdGlvbnMiLCJfUG9pbnRVdGlscyIsImRyYXdNYW5ob2xlSWNvbiIsInNvdXJjZVBvaW50IiwibWFwIiwicG9pbnRJY29uIiwiaWNvbiIsImljb25VcmwiLCJ3aGl0ZVBvaW50IiwiaWNvblNpemUiLCJpY29uQW5jaG9yIiwibWFuaG9sZUljb24iLCJtYXJrZXIiLCJsYXRpdHVkZSIsImxvbmdpdHVkZSIsInJpc2VPbkhvdmVyIiwiYWRkVG8iLCJiaW5kVG9vbHRpcCIsImNvbmNhdCIsImdyb3VwIiwibmFtZSIsInNlY3Rvcl9uYW1lIiwiaWQiLCJleHBvcnRzIiwiZ2V0Rmlyc3RFZGdlT2ZFdmVudFBhdGgiLCJlZGdlcyIsImV2ZW50IiwicGF0aCIsInVuZGVmaW5lZCIsImZpbmQiLCJlZGdlIiwiZWRnZV9pZCIsImZpbmRFZGdlcyIsIm5leHRVcHN0cmVhbUxldmVsSWRzIiwiZmlsdGVyIiwiaW5jbHVkZXMiLCJ0YXJnZXRfcG9pbnRfaWQiLCJyZWN1cnNpdmVVcHN0cmVhbVNlYXJjaCIsIm5leHRMZXZlbCIsIm1hcEFsbEVkZ2VzTmVzdGluZyIsImFsbFVwc3RyZWFtRWRnZXMiLCJzb3VyY2VfcG9pbnRfaWQiLCJsZW5ndGgiLCJwdXNoIiwibWFwcGVkIiwiZm9yRWFjaCIsImdldFVwc3RyZWFtRWRnZXMiLCJmaXJzdEVkZ2UiLCJmaXJzdFVwc3RyZWFtTGV2ZWwiLCJmaW5kVXBzdHJlYW1FZGdlc1RvRHJhdyIsInVwc3RyZWFtRWRnZXMiLCJlZGdlc1RvRHJhdyIsInBvaW50cyIsInVwc3RyZWFtRWRnZSIsInBvaW50IiwiY29ubmVjdGlvbkVkZ2VzIiwiZmluZERvd25zdHJlYW1FZGdlc1RvRHJhdyIsImRvd25zdHJlYW1OZXR3b3JrIiwicmVjdXJzaXZlRG93blN0cmVhbVNlYXJjaCIsImRvd25TdHJlYW1FZGdlIiwibGFzdERvd25TdHJlYW1FZGdlIiwibmV4dExldmVsRG93blN0cmVhbSIsImZpbmRFZGdlc0Zyb21FdmVudFBhdGhUb0RyYXciLCJwYXJ0IiwibWF0Y2hlZFBhcnQiLCJkcmF3TmV0d29yayIsImRpc3BhdGNoIiwibGF5ZXJHcm91cCIsImZsb3dSYXRlVW5pdCIsImxhdGxuZ3MiLCJzaGFwZV9kYXRhIiwiZGF0YSIsImxhdCIsImxuZyIsInBvbHlsaW5lQmFjayIsInBvbHlsaW5lIiwiY29sb3IiLCJ3ZWlnaHQiLCJvcGFjaXR5IiwidGFpbERhc2giLCJTeW1ib2wiLCJwb2x5bGluZURlY29yYXRvciIsIl9sYXRsbmdzIiwicGF0dGVybnMiLCJvZmZzZXQiLCJyZXBlYXQiLCJzeW1ib2wiLCJhcnJvd0hlYWQiLCJwaXhlbFNpemUiLCJwb2x5Z29uIiwicGF0aE9wdGlvbnMiLCJzdHJva2UiLCJhZGRMYXllciIsImhvdmVyZWQiLCJmb2N1c2VkIiwiYnJpbmdUb0Zyb250IiwicG9seWxpbmVGcm9udCIsInNldEhvdmVyZWRFZGdlUGF0aHMiLCJwb2ludEZpbmRlciIsInRhcmdldFBvaW50IiwiYmluZFBvcHVwIiwiZGlzdGFuY2UiLCJjcmVhdGVQb2ludExvZ2ljIiwiZGVzaXJlZFBvaW50SWQiLCJkZXNpcmVkUG9pbnQiLCJmaW5kQW5kRHJhd0V2ZW50TmV0d29ya0VkZ2VzIiwicG9pbnRJc09ic2VydmF0aW9uIiwib2JzZXJ2YXRpb25zIiwib2JzIiwicG9pbnRfaWQiLCJwb2ludElzV1dUUCIsInR5cGUiLCJwb2ludElzQ29sbGVjdG9yIiwiaXNDb2xsZWN0b3JVbm1vbml0b3JlZCIsImhhc19kZXZpY2UiLCJjcmVhdGVCdWJibGVQb2ludCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9XaWRnZXRzL01hcC9ldmVudHMvRXZlbnRVdGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBMIGZyb20gJ2xlYWZsZXQnO1xuaW1wb3J0ICdzcmMvdXRpbGl0aWVzL3BvbHlsaW5lZGVjb3JhdG9yJztcbmltcG9ydCB3aGl0ZVBvaW50IGZyb20gJy4uLy4uLy4uL2Fzc2V0cy93aGl0ZS1wb2ludC5wbmcnO1xuaW1wb3J0IHsgSUVkZ2UgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9lZGdlcy9tb2RlbHMvSUVkZ2UnO1xuaW1wb3J0IHsgSVBvaW50IH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvcG9pbnRzL21vZGVscy9JUG9pbnQnO1xuaW1wb3J0IHsgSUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvZXZlbnRzL21vZGVscy9JRXZlbnQnO1xuaW1wb3J0IHsgc2V0SG92ZXJlZEVkZ2VQYXRocyB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL2V2ZW50cy9hY3Rpb25zJztcbmltcG9ydCB7IGNyZWF0ZUJ1YmJsZVBvaW50IH0gZnJvbSAnLi4vcG9pbnRzL1BvaW50VXRpbHMnO1xuXG5leHBvcnQgY29uc3QgZHJhd01hbmhvbGVJY29uID0gKHNvdXJjZVBvaW50OiBJUG9pbnQsIG1hcDogTC5NYXApID0+IHtcbiAgbGV0IHBvaW50SWNvbiA9IEwuaWNvbih7XG4gICAgaWNvblVybDogd2hpdGVQb2ludCxcbiAgICBpY29uU2l6ZTogWzksIDldLFxuICAgIGljb25BbmNob3I6IFs0LjUsIDQuNV0sXG4gIH0pO1xuXG4gIGxldCBtYW5ob2xlSWNvbjogYW55ID0gTC5tYXJrZXIoXG4gICAgW3NvdXJjZVBvaW50LmxhdGl0dWRlLCBzb3VyY2VQb2ludC5sb25naXR1ZGVdLFxuICAgIHtcbiAgICAgIGljb246IHBvaW50SWNvbixcbiAgICAgIHJpc2VPbkhvdmVyOiB0cnVlLFxuICAgIH0sXG4gICkuYWRkVG8obWFwKTtcbiAgbWFuaG9sZUljb24uYmluZFRvb2x0aXAoXG4gICAgYCR7c291cmNlUG9pbnQuZ3JvdXAubmFtZX0gKCR7c291cmNlUG9pbnQuZ3JvdXAuc2VjdG9yX25hbWV9KWAsXG4gICk7XG4gIG1hbmhvbGVJY29uWydrYW5kb19vYmplY3RfaWQnXSA9IHNvdXJjZVBvaW50LmlkO1xuICBtYW5ob2xlSWNvblsna2FuZG9fb2JqZWN0J10gPSAnVXBzdHJlYW1Qb2ludCc7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rmlyc3RFZGdlT2ZFdmVudFBhdGggPSAoZWRnZXM6IElFZGdlW10sIGV2ZW50OiBJRXZlbnQpID0+IHtcbiAgaWYgKGV2ZW50LnBhdGhbMF0gPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICByZXR1cm4gZWRnZXMuZmluZCgoZWRnZSkgPT4gZWRnZS5pZCA9PT0gZXZlbnQucGF0aFswXS5lZGdlX2lkKTtcbn07XG5cbmNvbnN0IGZpbmRFZGdlcyA9IChlZGdlcywgbmV4dFVwc3RyZWFtTGV2ZWxJZHMpID0+IHtcbiAgcmV0dXJuIGVkZ2VzLmZpbHRlcigoZWRnZTogSUVkZ2UpID0+XG4gICAgbmV4dFVwc3RyZWFtTGV2ZWxJZHMuaW5jbHVkZXMoZWRnZS50YXJnZXRfcG9pbnRfaWQpLFxuICApO1xufTtcblxuY29uc3QgcmVjdXJzaXZlVXBzdHJlYW1TZWFyY2ggPSAoXG4gIG5leHRMZXZlbCxcbiAgZWRnZXMsXG4gIG1hcEFsbEVkZ2VzTmVzdGluZyxcbiAgYWxsVXBzdHJlYW1FZGdlcyxcbikgPT4ge1xuICBsZXQgbmV4dFVwc3RyZWFtTGV2ZWxJZHMgPSBuZXh0TGV2ZWwubWFwKChlZGdlKSA9PiBlZGdlLnNvdXJjZV9wb2ludF9pZCk7XG4gIGlmIChmaW5kRWRnZXMoZWRnZXMsIG5leHRVcHN0cmVhbUxldmVsSWRzKS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbWFwQWxsRWRnZXNOZXN0aW5nKFtuZXh0TGV2ZWxdKTtcbiAgfSBlbHNlIHtcbiAgICBhbGxVcHN0cmVhbUVkZ2VzLnB1c2goZmluZEVkZ2VzKGVkZ2VzLCBuZXh0VXBzdHJlYW1MZXZlbElkcykpO1xuICAgIHJlY3Vyc2l2ZVVwc3RyZWFtU2VhcmNoKFxuICAgICAgZmluZEVkZ2VzKGVkZ2VzLCBuZXh0VXBzdHJlYW1MZXZlbElkcyksXG4gICAgICBlZGdlcyxcbiAgICAgIG1hcEFsbEVkZ2VzTmVzdGluZyxcbiAgICAgIGFsbFVwc3RyZWFtRWRnZXMsXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBtYXBBbGxFZGdlc05lc3RpbmcoYWxsVXBzdHJlYW1FZGdlcyk7XG59O1xuXG5jb25zdCBtYXBBbGxFZGdlc05lc3RpbmcgPSAoYWxsVXBzdHJlYW1FZGdlcykgPT4ge1xuICBsZXQgbWFwcGVkOiBhbnlbXSA9IFtdO1xuICBhbGxVcHN0cmVhbUVkZ2VzLmZvckVhY2goKGVkZ2VzKSA9PiB7XG4gICAgZWRnZXMuZm9yRWFjaCgoZWRnZSkgPT4ge1xuICAgICAgbWFwcGVkLnB1c2goZWRnZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiBtYXBwZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VXBzdHJlYW1FZGdlcyA9IChmaXJzdEVkZ2U6IElFZGdlLCBlZGdlczogSUVkZ2VbXSkgPT4ge1xuICBsZXQgYWxsVXBzdHJlYW1FZGdlczogYW55W10gPSBbXTtcbiAgbGV0IGZpcnN0VXBzdHJlYW1MZXZlbDogSUVkZ2VbXSA9IGVkZ2VzLmZpbHRlcihcbiAgICAoZWRnZSkgPT4gZWRnZS50YXJnZXRfcG9pbnRfaWQgPT09IGZpcnN0RWRnZSEuc291cmNlX3BvaW50X2lkLFxuICApO1xuXG4gIHJldHVybiByZWN1cnNpdmVVcHN0cmVhbVNlYXJjaChcbiAgICBmaXJzdFVwc3RyZWFtTGV2ZWwsXG4gICAgZWRnZXMsXG4gICAgbWFwQWxsRWRnZXNOZXN0aW5nLFxuICAgIGFsbFVwc3RyZWFtRWRnZXMsXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgZmluZFVwc3RyZWFtRWRnZXNUb0RyYXcgPSAoXG4gIHVwc3RyZWFtRWRnZXM6IElFZGdlW10sXG4gIGVkZ2VzVG9EcmF3OiBJRWRnZVtdLFxuICBwb2ludHM6IElQb2ludFtdLFxuICBlZGdlczogSUVkZ2VbXSxcbikgPT4ge1xuICB1cHN0cmVhbUVkZ2VzLmZvckVhY2goKHVwc3RyZWFtRWRnZSkgPT4ge1xuICAgIGlmICh1cHN0cmVhbUVkZ2UpIHtcbiAgICAgIGxldCBzb3VyY2VQb2ludCA9IHBvaW50cy5maW5kKFxuICAgICAgICAocG9pbnQpID0+IHBvaW50LmlkID09PSB1cHN0cmVhbUVkZ2UhLnNvdXJjZV9wb2ludF9pZCxcbiAgICAgICk7XG5cbiAgICAgIGlmIChzb3VyY2VQb2ludCkgZWRnZXNUb0RyYXcucHVzaCh1cHN0cmVhbUVkZ2UpO1xuXG4gICAgICBsZXQgY29ubmVjdGlvbkVkZ2VzID0gZWRnZXMuZmlsdGVyKFxuICAgICAgICAoZWRnZSkgPT4gZWRnZS5zb3VyY2VfcG9pbnRfaWQgPT09IHVwc3RyZWFtRWRnZS50YXJnZXRfcG9pbnRfaWQsXG4gICAgICApO1xuXG4gICAgICBpZiAoY29ubmVjdGlvbkVkZ2VzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICBjb25uZWN0aW9uRWRnZXMuZm9yRWFjaCgoZWRnZSkgPT4gZWRnZXNUb0RyYXcucHVzaChlZGdlKSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZWRnZXNUb0RyYXc7XG59O1xuXG5leHBvcnQgY29uc3QgZmluZERvd25zdHJlYW1FZGdlc1RvRHJhdyA9IChcbiAgZmlyc3RFZGdlOiBJRWRnZSxcbiAgZWRnZXM6IElFZGdlW10sXG4gIGRvd25zdHJlYW1OZXR3b3JrLFxuICBlZGdlc1RvRHJhdyxcbikgPT4ge1xuICByZWN1cnNpdmVEb3duU3RyZWFtU2VhcmNoKGRvd25zdHJlYW1OZXR3b3JrLCBlZGdlcykuZm9yRWFjaChcbiAgICAoZG93blN0cmVhbUVkZ2UpID0+IHtcbiAgICAgIGVkZ2VzVG9EcmF3LnB1c2goZG93blN0cmVhbUVkZ2UpO1xuICAgIH0sXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVjdXJzaXZlRG93blN0cmVhbVNlYXJjaCA9IChcbiAgZG93bnN0cmVhbU5ldHdvcms6IElFZGdlW10sXG4gIGVkZ2VzOiBJRWRnZVtdLFxuKSA9PiB7XG4gIGxldCBsYXN0RG93blN0cmVhbUVkZ2UgPSBkb3duc3RyZWFtTmV0d29ya1tkb3duc3RyZWFtTmV0d29yay5sZW5ndGggLSAxXTtcblxuICBpZiAobmV4dExldmVsRG93blN0cmVhbShsYXN0RG93blN0cmVhbUVkZ2UsIGVkZ2VzKS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZG93bnN0cmVhbU5ldHdvcms7XG4gIH0gZWxzZSB7XG4gICAgbmV4dExldmVsRG93blN0cmVhbShsYXN0RG93blN0cmVhbUVkZ2UsIGVkZ2VzKS5mb3JFYWNoKChlZGdlKSA9PiB7XG4gICAgICBkb3duc3RyZWFtTmV0d29yay5wdXNoKGVkZ2UpO1xuICAgICAgcmVjdXJzaXZlRG93blN0cmVhbVNlYXJjaChkb3duc3RyZWFtTmV0d29yaywgZWRnZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGRvd25zdHJlYW1OZXR3b3JrO1xufTtcblxuZXhwb3J0IGNvbnN0IG5leHRMZXZlbERvd25TdHJlYW0gPSAoZmlyc3RFZGdlOiBJRWRnZSwgZWRnZXM6IElFZGdlW10pID0+IHtcbiAgcmV0dXJuIGVkZ2VzLmZpbHRlcihcbiAgICAoZWRnZSkgPT4gZWRnZS5zb3VyY2VfcG9pbnRfaWQgPT09IGZpcnN0RWRnZS50YXJnZXRfcG9pbnRfaWQsXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgZmluZEVkZ2VzRnJvbUV2ZW50UGF0aFRvRHJhdyA9IChcbiAgZWRnZXNUb0RyYXc6IElFZGdlW10sXG4gIGV2ZW50OiBJRXZlbnQsXG4gIGVkZ2VzOiBJRWRnZVtdLFxuKSA9PiB7XG4gIGV2ZW50LnBhdGguZm9yRWFjaCgocGFydCkgPT4ge1xuICAgIGxldCBtYXRjaGVkUGFydCA9IGVkZ2VzLmZpbmQoKGVkZ2UpID0+IGVkZ2UuaWQgPT09IHBhcnQuZWRnZV9pZCk7XG4gICAgaWYgKG1hdGNoZWRQYXJ0ICE9PSB1bmRlZmluZWQpIGVkZ2VzVG9EcmF3LnB1c2gobWF0Y2hlZFBhcnQpO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBkcmF3TmV0d29yayA9IChcbiAgZWRnZXM6IElFZGdlW10sXG4gIHBvaW50czogSVBvaW50W10sXG4gIGRpc3BhdGNoLFxuICBtYXAsXG4gIGV2ZW50LFxuICBsYXllckdyb3VwLFxuICBmbG93UmF0ZVVuaXQsXG4pID0+IHtcbiAgbGV0IGxhdGxuZ3M6IGFueSA9IFtdO1xuICBlZGdlcy5mb3JFYWNoKChlZGdlKSA9PiB7XG4gICAgZWRnZS5zaGFwZV9kYXRhLmZvckVhY2goKGRhdGE6IGFueSkgPT4ge1xuICAgICAgbGF0bG5ncy5wdXNoKFtkYXRhLmxhdCwgZGF0YS5sbmddKTtcbiAgICB9KTtcblxuICAgIGxldCBwb2x5bGluZUJhY2s6IGFueSA9IEwucG9seWxpbmUobGF0bG5ncywge1xuICAgICAgY29sb3I6ICdyZ2IoMjI3LDIyNywyMjcpJyxcbiAgICAgIHdlaWdodDogNixcbiAgICAgIG9wYWNpdHk6IDEsXG4gICAgfSk7XG5cbiAgICBsZXQgdGFpbERhc2g6IGFueTtcblxuICAgIGlmIChMLlN5bWJvbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0YWlsRGFzaCA9IEwucG9seWxpbmVEZWNvcmF0b3IocG9seWxpbmVCYWNrLl9sYXRsbmdzLCB7XG4gICAgICAgIHBhdHRlcm5zOiBbXG4gICAgICAgICAgLy8gZGVmaW5lcyBhIHBhdHRlcm4gb2YgMTBweC13aWRlIGRhc2hlcywgcmVwZWF0ZWQgZXZlcnkgMjBweCBvbiB0aGUgbGluZVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG9mZnNldDogMTUsXG4gICAgICAgICAgICByZXBlYXQ6IDI1LFxuICAgICAgICAgICAgc3ltYm9sOiBMLlN5bWJvbC5hcnJvd0hlYWQoe1xuICAgICAgICAgICAgICBwaXhlbFNpemU6IDMsXG4gICAgICAgICAgICAgIHBvbHlnb246IGZhbHNlLFxuICAgICAgICAgICAgICBwYXRoT3B0aW9uczoge1xuICAgICAgICAgICAgICAgIHN0cm9rZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ3JnYmEoMCwwLDApJyxcbiAgICAgICAgICAgICAgICB3ZWlnaHQ6IDEsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG4gICAgICB0YWlsRGFzaFsna2FuZG9fb2JqZWN0J10gPSAnRGVjb3JhdG9yJztcbiAgICAgIGxheWVyR3JvdXAuYWRkTGF5ZXIodGFpbERhc2gpO1xuICAgIH1cblxuICAgIHBvbHlsaW5lQmFja1sna2FuZG9fb2JqZWN0X2lkJ10gPSBlZGdlLmlkO1xuICAgIGlmIChldmVudC5ob3ZlcmVkKSBwb2x5bGluZUJhY2tbJ2thbmRvX29iamVjdCddID0gJ0hvdmVyZWRFZGdlJztcbiAgICBpZiAoZXZlbnQuZm9jdXNlZCkgcG9seWxpbmVCYWNrWydrYW5kb19vYmplY3QnXSA9ICdGb2N1c2VkRWRnZSc7XG4gICAgaWYgKG1hcCAhPT0gbnVsbCkgbGF5ZXJHcm91cC5hZGRMYXllcihwb2x5bGluZUJhY2spO1xuICAgIHBvbHlsaW5lQmFjay5icmluZ1RvRnJvbnQoKTtcbiAgICBpZiAoTC5TeW1ib2wgIT09IHVuZGVmaW5lZCkgdGFpbERhc2guYnJpbmdUb0Zyb250KCk7XG5cbiAgICBsZXQgcG9seWxpbmVGcm9udDogYW55ID0gTC5wb2x5bGluZShsYXRsbmdzLCB7XG4gICAgICBjb2xvcjogJ3JnYigyOSwyOSwyOSknLFxuICAgICAgd2VpZ2h0OiAxLFxuICAgICAgb3BhY2l0eTogMSxcbiAgICB9KTtcblxuICAgIHBvbHlsaW5lRnJvbnRbJ2thbmRvX29iamVjdF9pZCddID0gZWRnZS5pZDtcbiAgICBpZiAoZXZlbnQuaG92ZXJlZCkgcG9seWxpbmVGcm9udFsna2FuZG9fb2JqZWN0J10gPSAnSG92ZXJlZEVkZ2VGcm9udCc7XG4gICAgaWYgKGV2ZW50LmZvY3VzZWQpIHBvbHlsaW5lRnJvbnRbJ2thbmRvX29iamVjdCddID0gJ0ZvY3VzZWRFZGdlRnJvbnQnO1xuICAgIGlmIChtYXAgIT09IG51bGwpIGxheWVyR3JvdXAuYWRkTGF5ZXIocG9seWxpbmVGcm9udCk7XG4gICAgcG9seWxpbmVCYWNrLmFkZFRvKG1hcCk7XG4gICAgcG9seWxpbmVGcm9udC5hZGRUbyhtYXApO1xuXG4gICAgcG9seWxpbmVGcm9udC5icmluZ1RvRnJvbnQoKTtcbiAgICBpZiAoZXZlbnQuaG92ZXJlZClcbiAgICAgIGRpc3BhdGNoKHNldEhvdmVyZWRFZGdlUGF0aHMoW3BvbHlsaW5lQmFjaywgcG9seWxpbmVGcm9udF0pKTtcbiAgICBsYXRsbmdzID0gW107XG5cbiAgICBpZiAocG9pbnRzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgbGV0IHNvdXJjZVBvaW50OiBJUG9pbnQgPSBwb2ludEZpbmRlcihwb2ludHMsIGVkZ2Uuc291cmNlX3BvaW50X2lkKTtcbiAgICAgIGxldCB0YXJnZXRQb2ludDogSVBvaW50ID0gcG9pbnRGaW5kZXIocG9pbnRzLCBlZGdlLnRhcmdldF9wb2ludF9pZCk7XG4gICAgICBpZiAoc291cmNlUG9pbnQgIT09IHVuZGVmaW5lZCAmJiB0YXJnZXRQb2ludCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHBvbHlsaW5lQmFjay5iaW5kUG9wdXAoYEVkZ2UgSUQ6ICR7ZWRnZS5pZH0sPGJyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2UgcG9pbnQ6ICR7c291cmNlUG9pbnQuZ3JvdXAubmFtZX0sPGJyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYXJnZXQgcG9pbnQ6ICR7dGFyZ2V0UG9pbnQuZ3JvdXAubmFtZX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpc3RhbmNlOiAke2VkZ2UuZGlzdGFuY2V9YCk7XG4gICAgICB9XG4gICAgICBjcmVhdGVQb2ludExvZ2ljKHNvdXJjZVBvaW50LCBtYXAsIGxheWVyR3JvdXAsIGZsb3dSYXRlVW5pdCk7XG4gICAgICBpZiAoZWRnZXNbZWRnZXMubGVuZ3RoIC0gMV0udGFyZ2V0X3BvaW50X2lkID09PSBlZGdlLnRhcmdldF9wb2ludF9pZCkge1xuICAgICAgICBjcmVhdGVQb2ludExvZ2ljKHRhcmdldFBvaW50LCBtYXAsIGxheWVyR3JvdXApO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59O1xuXG5jb25zdCBwb2ludEZpbmRlciA9IChwb2ludHMsIGRlc2lyZWRQb2ludElkKSA9PiB7XG4gIGxldCBkZXNpcmVkUG9pbnQ6IElQb2ludCA9IHBvaW50cy5maW5kKFxuICAgIChwb2ludDogSVBvaW50KSA9PiBwb2ludC5pZCA9PT0gZGVzaXJlZFBvaW50SWQsXG4gICk7XG5cbiAgcmV0dXJuIGRlc2lyZWRQb2ludDtcbn07XG5cbmV4cG9ydCBjb25zdCBmaW5kQW5kRHJhd0V2ZW50TmV0d29ya0VkZ2VzID0gKFxuICBlZGdlczogSUVkZ2VbXSxcbiAgZXZlbnQ6IElFdmVudCxcbiAgcG9pbnRzOiBJUG9pbnRbXSxcbiAgZGlzcGF0Y2gsXG4gIG1hcCxcbiAgbGF5ZXJHcm91cCxcbiAgZmxvd1JhdGVVbml0LFxuKSA9PiB7XG4gIGxldCBlZGdlc1RvRHJhdzogSUVkZ2VbXSA9IFtdO1xuICBsZXQgZmlyc3RFZGdlID0gZ2V0Rmlyc3RFZGdlT2ZFdmVudFBhdGgoZWRnZXMsIGV2ZW50KTtcblxuICBpZiAoZmlyc3RFZGdlICE9PSB1bmRlZmluZWQpIHtcbiAgICBsZXQgZG93bnN0cmVhbU5ldHdvcms6IElFZGdlW10gPSBbZmlyc3RFZGdlXTtcbiAgICBsZXQgdXBzdHJlYW1FZGdlcyA9IGdldFVwc3RyZWFtRWRnZXMoZmlyc3RFZGdlLCBlZGdlcyk7XG4gICAgaWYgKHVwc3RyZWFtRWRnZXMgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICAgIGlmICh1cHN0cmVhbUVkZ2VzLmxlbmd0aCAhPT0gMClcbiAgICAgIGZpbmRVcHN0cmVhbUVkZ2VzVG9EcmF3KHVwc3RyZWFtRWRnZXMsIGVkZ2VzVG9EcmF3LCBwb2ludHMsIGVkZ2VzKTtcbiAgICBmaW5kRG93bnN0cmVhbUVkZ2VzVG9EcmF3KGZpcnN0RWRnZSwgZWRnZXMsIGRvd25zdHJlYW1OZXR3b3JrLCBlZGdlc1RvRHJhdyk7XG4gIH1cblxuICBkcmF3TmV0d29yayhcbiAgICBlZGdlc1RvRHJhdyxcbiAgICBwb2ludHMsXG4gICAgZGlzcGF0Y2gsXG4gICAgbWFwLFxuICAgIGV2ZW50LFxuICAgIGxheWVyR3JvdXAsXG4gICAgZmxvd1JhdGVVbml0LFxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IHBvaW50SXNPYnNlcnZhdGlvbiA9IChldmVudDogSUV2ZW50LCBwb2ludDogSVBvaW50KSA9PiB7XG4gIHJldHVybiBldmVudC5vYnNlcnZhdGlvbnMuZmluZCgob2JzKSA9PiBvYnMucG9pbnRfaWQgPT09IHBvaW50LmlkKTtcbn07XG5cbmV4cG9ydCBjb25zdCBwb2ludElzV1dUUCA9IChwb2ludDogSVBvaW50KSA9PiB7XG4gIHJldHVybiBwb2ludC5ncm91cC50eXBlID09PSAnR3JvdXBzOjpXYXN0ZXdhdGVyVHJlYXRtZW50UGxhbnQnO1xufTtcblxuZXhwb3J0IGNvbnN0IHBvaW50SXNDb2xsZWN0b3IgPSAocG9pbnQ6IElQb2ludCkgPT4ge1xuICByZXR1cm4gcG9pbnQuZ3JvdXAudHlwZSA9PT0gJ0dyb3Vwczo6Q29sbGVjdG9ycyc7XG59O1xuXG5leHBvcnQgY29uc3QgaXNDb2xsZWN0b3JVbm1vbml0b3JlZCA9IChwb2ludDogSVBvaW50KSA9PiB7XG4gIHJldHVybiBwb2ludElzQ29sbGVjdG9yKHBvaW50KSAmJiAhcG9pbnQuaGFzX2RldmljZTtcbn07XG5cbmNvbnN0IGNyZWF0ZVBvaW50TG9naWMgPSAocG9pbnQ6IElQb2ludCwgbWFwLCBsYXllckdyb3VwLCBmbG93UmF0ZVVuaXQpID0+IHtcbiAgaWYgKGlzQ29sbGVjdG9yVW5tb25pdG9yZWQocG9pbnQpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY3JlYXRlQnViYmxlUG9pbnQoXG4gICAgW3BvaW50LmxhdGl0dWRlLCBwb2ludC5sb25naXR1ZGVdLFxuICAgIHBvaW50LFxuICAgIG1hcCxcbiAgICBu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
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof = require("@babel/runtime/helpers/typeof");
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
@@ -11,31 +11,29 @@ var _react = _interopRequireWildcard(require("react"));
11
11
  var _reactRedux = require("react-redux");
12
12
  var _actions = require("store/events/actions");
13
13
  var _EventUtils = require("./EventUtils");
14
- 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); }
15
- 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; }
16
14
  // @ts-ignore
17
15
 
18
- var NetworkForSpecificEvent = function NetworkForSpecificEvent(_ref) {
19
- var event = _ref.event,
20
- edges = _ref.edges,
21
- points = _ref.points,
22
- map = _ref.map;
23
- var dispatch = (0, _reactRedux.useDispatch)();
24
- var cleanupLogic = function cleanupLogic() {
16
+ const NetworkForSpecificEvent = _ref => {
17
+ let {
18
+ event,
19
+ edges,
20
+ points,
21
+ map
22
+ } = _ref;
23
+ const dispatch = (0, _reactRedux.useDispatch)();
24
+ const cleanupLogic = () => {
25
25
  dispatch((0, _actions.setHoveredEdgePaths)([]));
26
- var layers = map._layers;
27
- for (var property in layers) {
26
+ let layers = map._layers;
27
+ for (const property in layers) {
28
28
  if (layers[property].kando_object !== undefined && (layers[property].kando_object === 'UpstreamPoint' || layers[property].kando_object === 'Point')) {
29
29
  map.removeLayer(layers[property]);
30
30
  }
31
31
  }
32
32
  };
33
- var flowRateUnit = (0, _reactRedux.useSelector)(function (state) {
34
- return state.permissions.user_info.flow_rate_unit;
35
- });
36
- (0, _react.useEffect)(function () {
33
+ const flowRateUnit = (0, _reactRedux.useSelector)(state => state.permissions.user_info.flow_rate_unit);
34
+ (0, _react.useEffect)(() => {
37
35
  if (map !== null && map !== undefined) {
38
- var layerGroup = _leaflet.default.layerGroup();
36
+ let layerGroup = _leaflet.default.layerGroup();
39
37
  (0, _EventUtils.findAndDrawEventNetworkEdges)(edges, event, points, dispatch, map, layerGroup, flowRateUnit);
40
38
  layerGroup.addTo(map);
41
39
  }
@@ -46,4 +44,4 @@ var NetworkForSpecificEvent = function NetworkForSpecificEvent(_ref) {
46
44
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null);
47
45
  };
48
46
  exports.NetworkForSpecificEvent = NetworkForSpecificEvent;
49
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGVhZmxldCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfcmVhY3RSZWR1eCIsIl9hY3Rpb25zIiwiX0V2ZW50VXRpbHMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIk5ldHdvcmtGb3JTcGVjaWZpY0V2ZW50IiwiX3JlZiIsImV2ZW50IiwiZWRnZXMiLCJwb2ludHMiLCJtYXAiLCJkaXNwYXRjaCIsInVzZURpc3BhdGNoIiwiY2xlYW51cExvZ2ljIiwic2V0SG92ZXJlZEVkZ2VQYXRocyIsImxheWVycyIsIl9sYXllcnMiLCJwcm9wZXJ0eSIsImthbmRvX29iamVjdCIsInVuZGVmaW5lZCIsInJlbW92ZUxheWVyIiwiZmxvd1JhdGVVbml0IiwidXNlU2VsZWN0b3IiLCJzdGF0ZSIsInBlcm1pc3Npb25zIiwidXNlcl9pbmZvIiwiZmxvd19yYXRlX3VuaXQiLCJ1c2VFZmZlY3QiLCJsYXllckdyb3VwIiwiTCIsImZpbmRBbmREcmF3RXZlbnROZXR3b3JrRWRnZXMiLCJhZGRUbyIsImNsZWFudXAiLCJjcmVhdGVFbGVtZW50IiwiRnJhZ21lbnQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL1dpZGdldHMvTWFwL2V2ZW50cy9OZXR3b3JrRm9yU3BlY2lmaWNFdmVudC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWlnbm9yZVxuaW1wb3J0IEwsIHsgTWFwIGFzIExlYWZsZXRNYXAgfSBmcm9tICdsZWFmbGV0JztcbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQgeyBzZXRIb3ZlcmVkRWRnZVBhdGhzIH0gZnJvbSAnc3JjL3N0b3JlL2V2ZW50cy9hY3Rpb25zJztcbmltcG9ydCB7IElFdmVudCB9IGZyb20gJ3NyYy9zdG9yZS9ldmVudHMvbW9kZWxzL0lFdmVudCc7XG5pbXBvcnQgeyBJRWRnZSB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL2VkZ2VzL21vZGVscy9JRWRnZSc7XG5pbXBvcnQgeyBJUG9pbnQgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9wb2ludHMvbW9kZWxzL0lQb2ludCc7XG5pbXBvcnQgeyBmaW5kQW5kRHJhd0V2ZW50TmV0d29ya0VkZ2VzIH0gZnJvbSAnLi9FdmVudFV0aWxzJztcblxudHlwZSBJUHJvcHMgPSB7XG4gIGV2ZW50OiBJRXZlbnQ7XG4gIGVkZ2VzOiBJRWRnZVtdO1xuICBwb2ludHM6IElQb2ludFtdO1xuICBtYXA6IExlYWZsZXRNYXAgfCBhbnk7XG59O1xuXG5leHBvcnQgY29uc3QgTmV0d29ya0ZvclNwZWNpZmljRXZlbnQ6IFJlYWN0LkZDPElQcm9wcz4gPSAoe1xuICBldmVudCxcbiAgZWRnZXMsXG4gIHBvaW50cyxcbiAgbWFwLFxufSkgPT4ge1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IGNsZWFudXBMb2dpYyA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChzZXRIb3ZlcmVkRWRnZVBhdGhzKFtdKSk7XG4gICAgbGV0IGxheWVycyA9IG1hcC5fbGF5ZXJzO1xuICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gbGF5ZXJzKSB7XG4gICAgICBpZiAoXG4gICAgICAgIGxheWVyc1twcm9wZXJ0eV0ua2FuZG9fb2JqZWN0ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgKGxheWVyc1twcm9wZXJ0eV0ua2FuZG9fb2JqZWN0ID09PSAnVXBzdHJlYW1Qb2ludCcgfHxcbiAgICAgICAgICBsYXllcnNbcHJvcGVydHldLmthbmRvX29iamVjdCA9PT0gJ1BvaW50JylcbiAgICAgICkge1xuICAgICAgICBtYXAucmVtb3ZlTGF5ZXIobGF5ZXJzW3Byb3BlcnR5XSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGZsb3dSYXRlVW5pdCA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUucGVybWlzc2lvbnMudXNlcl9pbmZvLmZsb3dfcmF0ZV91bml0LFxuICApO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChtYXAgIT09IG51bGwgJiYgbWFwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGxldCBsYXllckdyb3VwID0gTC5sYXllckdyb3VwKCk7XG4gICAgICBmaW5kQW5kRHJhd0V2ZW50TmV0d29ya0VkZ2VzKFxuICAgICAgICBlZGdlcyxcbiAgICAgICAgZXZlbnQsXG4gICAgICAgIHBvaW50cyxcbiAgICAgICAgZGlzcGF0Y2gsXG4gICAgICAgIG1hcCxcbiAgICAgICAgbGF5ZXJHcm91cCxcbiAgICAgICAgZmxvd1JhdGVVbml0LFxuICAgICAgKTtcblxuICAgICAgbGF5ZXJHcm91cC5hZGRUbyhtYXApO1xuICAgIH1cblxuICAgIHJldHVybiBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgICAgY2xlYW51cExvZ2ljKCk7XG4gICAgfTtcbiAgfSwgW2V2ZW50LCBtYXBdKTtcblxuICByZXR1cm4gPD48Lz47XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUNBLElBQUFBLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLFdBQUEs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
47
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGVhZmxldCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfcmVhY3RSZWR1eCIsIl9hY3Rpb25zIiwiX0V2ZW50VXRpbHMiLCJOZXR3b3JrRm9yU3BlY2lmaWNFdmVudCIsIl9yZWYiLCJldmVudCIsImVkZ2VzIiwicG9pbnRzIiwibWFwIiwiZGlzcGF0Y2giLCJ1c2VEaXNwYXRjaCIsImNsZWFudXBMb2dpYyIsInNldEhvdmVyZWRFZGdlUGF0aHMiLCJsYXllcnMiLCJfbGF5ZXJzIiwicHJvcGVydHkiLCJrYW5kb19vYmplY3QiLCJ1bmRlZmluZWQiLCJyZW1vdmVMYXllciIsImZsb3dSYXRlVW5pdCIsInVzZVNlbGVjdG9yIiwic3RhdGUiLCJwZXJtaXNzaW9ucyIsInVzZXJfaW5mbyIsImZsb3dfcmF0ZV91bml0IiwidXNlRWZmZWN0IiwibGF5ZXJHcm91cCIsIkwiLCJmaW5kQW5kRHJhd0V2ZW50TmV0d29ya0VkZ2VzIiwiYWRkVG8iLCJjbGVhbnVwIiwiZGVmYXVsdCIsImNyZWF0ZUVsZW1lbnQiLCJGcmFnbWVudCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvV2lkZ2V0cy9NYXAvZXZlbnRzL05ldHdvcmtGb3JTcGVjaWZpY0V2ZW50LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtaWdub3JlXG5pbXBvcnQgTCwgeyBNYXAgYXMgTGVhZmxldE1hcCB9IGZyb20gJ2xlYWZsZXQnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gJ3JlYWN0LXJlZHV4JztcbmltcG9ydCB7IHNldEhvdmVyZWRFZGdlUGF0aHMgfSBmcm9tICdzcmMvc3RvcmUvZXZlbnRzL2FjdGlvbnMnO1xuaW1wb3J0IHsgSUV2ZW50IH0gZnJvbSAnc3JjL3N0b3JlL2V2ZW50cy9tb2RlbHMvSUV2ZW50JztcbmltcG9ydCB7IElFZGdlIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvZWRnZXMvbW9kZWxzL0lFZGdlJztcbmltcG9ydCB7IElQb2ludCB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL3BvaW50cy9tb2RlbHMvSVBvaW50JztcbmltcG9ydCB7IGZpbmRBbmREcmF3RXZlbnROZXR3b3JrRWRnZXMgfSBmcm9tICcuL0V2ZW50VXRpbHMnO1xuXG50eXBlIElQcm9wcyA9IHtcbiAgZXZlbnQ6IElFdmVudDtcbiAgZWRnZXM6IElFZGdlW107XG4gIHBvaW50czogSVBvaW50W107XG4gIG1hcDogTGVhZmxldE1hcCB8IGFueTtcbn07XG5cbmV4cG9ydCBjb25zdCBOZXR3b3JrRm9yU3BlY2lmaWNFdmVudDogUmVhY3QuRkM8SVByb3BzPiA9ICh7XG4gIGV2ZW50LFxuICBlZGdlcyxcbiAgcG9pbnRzLFxuICBtYXAsXG59KSA9PiB7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgY2xlYW51cExvZ2ljID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHNldEhvdmVyZWRFZGdlUGF0aHMoW10pKTtcbiAgICBsZXQgbGF5ZXJzID0gbWFwLl9sYXllcnM7XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBsYXllcnMpIHtcbiAgICAgIGlmIChcbiAgICAgICAgbGF5ZXJzW3Byb3BlcnR5XS5rYW5kb19vYmplY3QgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAobGF5ZXJzW3Byb3BlcnR5XS5rYW5kb19vYmplY3QgPT09ICdVcHN0cmVhbVBvaW50JyB8fFxuICAgICAgICAgIGxheWVyc1twcm9wZXJ0eV0ua2FuZG9fb2JqZWN0ID09PSAnUG9pbnQnKVxuICAgICAgKSB7XG4gICAgICAgIG1hcC5yZW1vdmVMYXllcihsYXllcnNbcHJvcGVydHldKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZmxvd1JhdGVVbml0ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS5wZXJtaXNzaW9ucy51c2VyX2luZm8uZmxvd19yYXRlX3VuaXQsXG4gICk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG1hcCAhPT0gbnVsbCAmJiBtYXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IGxheWVyR3JvdXAgPSBMLmxheWVyR3JvdXAoKTtcbiAgICAgIGZpbmRBbmREcmF3RXZlbnROZXR3b3JrRWRnZXMoXG4gICAgICAgIGVkZ2VzLFxuICAgICAgICBldmVudCxcbiAgICAgICAgcG9pbnRzLFxuICAgICAgICBkaXNwYXRjaCxcbiAgICAgICAgbWFwLFxuICAgICAgICBsYXllckdyb3VwLFxuICAgICAgICBmbG93UmF0ZVVuaXQsXG4gICAgICApO1xuXG4gICAgICBsYXllckdyb3VwLmFkZFRvKG1hcCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgICBjbGVhbnVwTG9naWMoKTtcbiAgICB9O1xuICB9LCBbZXZlbnQsIG1hcF0pO1xuXG4gIHJldHVybiA8PjwvPjtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQ0EsSUFBQUEsUUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBQyx1QkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsV0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksUUFBQSxHQUFBSixPQUFBO0FBSUEsSUFBQUssV0FBQSxHQUFBTCxPQUFBO0FBUkE7O0FBaUJPLE1BQU1NLHVCQUF5QyxHQUFHQyxJQUFBLElBS25EO0VBQUEsSUFMb0Q7SUFDeERDLEtBQUs7SUFDTEMsS0FBSztJQUNMQyxNQUFNO0lBQ05DO0VBQ0YsQ0FBQyxHQUFBSixJQUFBO0VBQ0MsTUFBTUssUUFBUSxHQUFHLElBQUFDLHVCQUFXLEVBQUMsQ0FBQztFQUM5QixNQUFNQyxZQUFZLEdBQUdBLENBQUEsS0FBTTtJQUN6QkYsUUFBUSxDQUFDLElBQUFHLDRCQUFtQixFQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLElBQUlDLE1BQU0sR0FBR0wsR0FBRyxDQUFDTSxPQUFPO0lBQ3hCLEtBQUssTUFBTUMsUUFBUSxJQUFJRixNQUFNLEVBQUU7TUFDN0IsSUFDRUEsTUFBTSxDQUFDRSxRQUFRLENBQUMsQ0FBQ0MsWUFBWSxLQUFLQyxTQUFTLEtBQzFDSixNQUFNLENBQUNFLFFBQVEsQ0FBQyxDQUFDQyxZQUFZLEtBQUssZUFBZSxJQUNoREgsTUFBTSxDQUFDRSxRQUFRLENBQUMsQ0FBQ0MsWUFBWSxLQUFLLE9BQU8sQ0FBQyxFQUM1QztRQUNBUixHQUFHLENBQUNVLFdBQVcsQ0FBQ0wsTUFBTSxDQUFDRSxRQUFRLENBQUMsQ0FBQztNQUNuQztJQUNGO0VBQ0YsQ0FBQztFQUVELE1BQU1JLFlBQVksR0FBRyxJQUFBQyx1QkFBVyxFQUM3QkMsS0FBSyxJQUFLQSxLQUFLLENBQUNDLFdBQVcsQ0FBQ0MsU0FBUyxDQUFDQyxjQUN6QyxDQUFDO0VBQ0QsSUFBQUMsZ0JBQVMsRUFBQyxNQUFNO0lBQ2QsSUFBSWpCLEdBQUcsS0FBSyxJQUFJLElBQUlBLEdBQUcsS0FBS1MsU0FBUyxFQUFFO01BQ3JDLElBQUlTLFVBQVUsR0FBR0MsZ0JBQUMsQ0FBQ0QsVUFBVSxDQUFDLENBQUM7TUFDL0IsSUFBQUUsd0NBQTRCLEVBQzFCdEIsS0FBSyxFQUNMRCxLQUFLLEVBQ0xFLE1BQU0sRUFDTkUsUUFBUSxFQUNSRCxHQUFHLEVBQ0hrQixVQUFVLEVBQ1ZQLFlBQ0YsQ0FBQztNQUVETyxVQUFVLENBQUNHLEtBQUssQ0FBQ3JCLEdBQUcsQ0FBQztJQUN2QjtJQUVBLE9BQU8sU0FBU3NCLE9BQU9BLENBQUEsRUFBRztNQUN4Qm5CLFlBQVksQ0FBQyxDQUFDO0lBQ2hCLENBQUM7RUFDSCxDQUFDLEVBQUUsQ0FBQ04sS0FBSyxFQUFFRyxHQUFHLENBQUMsQ0FBQztFQUVoQixvQkFBT1YsTUFBQSxDQUFBaUMsT0FBQSxDQUFBQyxhQUFBLENBQUFsQyxNQUFBLENBQUFpQyxPQUFBLENBQUFFLFFBQUEsTUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUFDQyxPQUFBLENBQUEvQix1QkFBQSxHQUFBQSx1QkFBQSIsImlnbm9yZUxpc3QiOltdfQ==