@kando-env/kando-ui 1.2.382 → 1.2.383

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 (585) hide show
  1. package/lib/Router.js +36 -73
  2. package/lib/Widgets/EventsCarousel/EventsCarousel.js +25 -35
  3. package/lib/Widgets/EventsRow/EventsRow.js +27 -39
  4. package/lib/Widgets/Map/GraphUtils.js +3 -3
  5. package/lib/Widgets/Map/Map.js +86 -122
  6. package/lib/Widgets/Map/MapUtils.js +81 -95
  7. package/lib/Widgets/Map/areas/AreaPolygon.js +53 -77
  8. package/lib/Widgets/Map/areas/AreaPolygons.js +23 -24
  9. package/lib/Widgets/Map/areas/AreaUtils.js +47 -46
  10. package/lib/Widgets/Map/areas/Patterns.js +4 -4
  11. package/lib/Widgets/Map/edges/Edge.js +33 -37
  12. package/lib/Widgets/Map/edges/Edges.js +21 -26
  13. package/lib/Widgets/Map/edges/arrows/Arrows.js +23 -44
  14. package/lib/Widgets/Map/events/Event.js +18 -21
  15. package/lib/Widgets/Map/events/EventIndicator.js +65 -60
  16. package/lib/Widgets/Map/events/EventPath.js +49 -24
  17. package/lib/Widgets/Map/events/EventUtils.js +60 -80
  18. package/lib/Widgets/Map/events/NetworkForSpecificEvent.js +17 -18
  19. package/lib/Widgets/Map/events/PointOfEvent.js +29 -34
  20. package/lib/Widgets/Map/events/PointsForSpecificEvent.js +30 -37
  21. package/lib/Widgets/Map/events/Snail.js +21 -22
  22. package/lib/Widgets/Map/graphDNDArea/GraphDNDArea.js +93 -86
  23. package/lib/Widgets/Map/map/FloatingGraph.js +22 -18
  24. package/lib/Widgets/Map/map/GraphDateButton.js +25 -17
  25. package/lib/Widgets/Map/matchGraph/MatchGraph.js +13 -12
  26. package/lib/Widgets/Map/matchGraph/createFloatingGraph.js +16 -15
  27. package/lib/Widgets/Map/points/PointIcon.js +22 -15
  28. package/lib/Widgets/Map/points/PointMarker.js +71 -87
  29. package/lib/Widgets/Map/points/PointMarkers.js +45 -66
  30. package/lib/Widgets/Map/points/PointUtils.js +145 -83
  31. package/lib/Widgets/MostPolluting/Areas/AreaBox/AreaBox.js +30 -47
  32. package/lib/Widgets/MostPolluting/Areas/AreaBox/Map/Map.js +11 -10
  33. package/lib/Widgets/MostPolluting/Areas/AreaBox/PieChart/PieChart.js +11 -12
  34. package/lib/Widgets/MostPolluting/Areas/AreaBox/styles.js +3 -3
  35. package/lib/Widgets/MostPolluting/Areas/Areas.js +31 -60
  36. package/lib/Widgets/MostPolluting/Areas/areas.mock.js +3 -3
  37. package/lib/Widgets/MostPolluting/Areas/styles.js +3 -3
  38. package/lib/Widgets/MostPolluting/EmptyState/EmptyState.js +11 -8
  39. package/lib/Widgets/MostPolluting/Factories/Factories.js +39 -70
  40. package/lib/Widgets/MostPolluting/Factories/FactoryBox/FactoryBox.js +15 -18
  41. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PieChart/PieChart.js +8 -8
  42. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PollutionScore.js +12 -10
  43. package/lib/Widgets/MostPolluting/Factories/FactoryBox/styles.js +3 -3
  44. package/lib/Widgets/MostPolluting/Factories/factories.mock.js +2 -2
  45. package/lib/Widgets/MostPolluting/Factories/styles.js +3 -3
  46. package/lib/Widgets/MostPolluting/MostPolluting.js +25 -35
  47. package/lib/Widgets/MostPolluting/MostPolluting.stories.js +18 -22
  48. package/lib/Widgets/MostPolluting/ShowMore/ShowMore.js +6 -4
  49. package/lib/Widgets/MostPolluting/ShowMore/styles.js +6 -4
  50. package/lib/Widgets/MostPolluting/assets/index.js +10 -10
  51. package/lib/Widgets/MostPolluting/components/ChangePercent.js +19 -13
  52. package/lib/Widgets/MostPolluting/components/ChangePercent.test.js +35 -30
  53. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.js +45 -35
  54. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.test.js +39 -35
  55. package/lib/Widgets/MostPolluting/components/PotentialImpact.js +28 -27
  56. package/lib/Widgets/MostPolluting/components/PotentialImpact.test.js +54 -50
  57. package/lib/Widgets/MostPolluting/styles.js +3 -3
  58. package/lib/Widgets/PotentialImpactSummary/Back/Back.js +7 -5
  59. package/lib/Widgets/PotentialImpactSummary/Icon.js +8 -6
  60. package/lib/Widgets/PotentialImpactSummary/index.js +19 -27
  61. package/lib/Widgets/PotentialImpactSummary/index.test.js +47 -52
  62. package/lib/Widgets/PotentialImpactSummary/styles.js +7 -7
  63. package/lib/Widgets/QualitySummary/PieChart/LegendMenu/LegendMenu.js +9 -7
  64. package/lib/Widgets/QualitySummary/PieChart/PieChart.js +22 -17
  65. package/lib/Widgets/QualitySummary/PieChart/PieChart.test.js +35 -32
  66. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.js +26 -24
  67. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.test.js +35 -37
  68. package/lib/Widgets/QualitySummary/QualitySummary.js +9 -13
  69. package/lib/Widgets/QualitySummary/qualitySummary.mock.js +4 -4
  70. package/lib/Widgets/QualitySummary/styles.js +23 -15
  71. package/lib/Widgets/UtilityInformation/MapModal/MapModal.js +12 -13
  72. package/lib/Widgets/UtilityInformation/PopupWithMap/Map/Map.js +27 -26
  73. package/lib/Widgets/UtilityInformation/PopupWithMap/PopupWithMap.js +29 -24
  74. package/lib/Widgets/UtilityInformation/UtilityInformation.js +23 -37
  75. package/lib/Widgets/UtilityInformation/styles.js +34 -25
  76. package/lib/Widgets/UtilityInformation/utilityInformation.mock.js +3 -3
  77. package/lib/assets/icons/TopNavbar/index.js +6 -6
  78. package/lib/assets/icons/TrendSvg.js +6 -6
  79. package/lib/assets/icons/index.js +15 -15
  80. package/lib/assets/icons/kandoStepper/index.js +5 -5
  81. package/lib/assets/icons/siteTypes/index.js +1 -1
  82. package/lib/components/ApplyButton/ApplyButton.js +9 -9
  83. package/lib/components/Backdrop/Backdrop.js +6 -4
  84. package/lib/components/ContentLoader/ContentLoader.js +11 -9
  85. package/lib/components/ContentLoader/index.js +1 -1
  86. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.js +13 -12
  87. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.stories.js +3 -5
  88. package/lib/components/CustomInputs/DoubleTabs/styles.js +20 -12
  89. package/lib/components/CustomInputs/PasswordInput/PasswordInput.js +13 -20
  90. package/lib/components/CustomInputs/PrimaryButton/PrimaryButton.js +6 -4
  91. package/lib/components/CustomInputs/Search/Search.js +42 -63
  92. package/lib/components/CustomInputs/Select/Select.js +45 -58
  93. package/lib/components/CustomInputs/Select/Select.stories.js +4 -6
  94. package/lib/components/DamageType/DamageType.js +35 -57
  95. package/lib/components/DataLoaderError/DataLoaderError.js +8 -6
  96. package/lib/components/DischargeHeatmap/DischargeHeatmap.js +9 -10
  97. package/lib/components/DischargeHeatmap/DischargeHeatmap.test.js +70 -71
  98. package/lib/components/DischargeHeatmap/DischargeHeatmapContainer.js +27 -37
  99. package/lib/components/DischargeHeatmap/HighchartsOptions.js +10 -12
  100. package/lib/components/DischargeHeatmap/mocks/handlers.js +3 -3
  101. package/lib/components/DischargeHeatmap/popupText.js +10 -10
  102. package/lib/components/DischargeHeatmap/titles.js +3 -3
  103. package/lib/components/ErrorBoundary.js +27 -41
  104. package/lib/components/Events/Events.js +41 -58
  105. package/lib/components/Graph/Graph.js +77 -96
  106. package/lib/components/Header/Breadcrumbs/Breadcrumbs.js +17 -21
  107. package/lib/components/Header/DoubleTabs/DoubleTabs.js +25 -33
  108. package/lib/components/Header/DoubleTabs/DoubleTabs.stories.js +3 -5
  109. package/lib/components/Header/DoubleTabs/styles.js +4 -4
  110. package/lib/components/Header/Header.js +2 -2
  111. package/lib/components/Header/Header.stories.js +3 -5
  112. package/lib/components/Header/InfoBar/Breadcrumbs/Breadcrumbs.js +22 -34
  113. package/lib/components/Header/InfoBar/InfoBar.js +74 -103
  114. package/lib/components/Header/InfoBar/Search/Control.js +9 -9
  115. package/lib/components/Header/InfoBar/Search/GroupLabel.js +7 -5
  116. package/lib/components/Header/InfoBar/Search/Search.js +16 -21
  117. package/lib/components/Header/InfoBar/Search/SearchContainer.js +21 -33
  118. package/lib/components/Header/InfoBar/Search/searchStyle.js +41 -49
  119. package/lib/components/Header/InfoBar/TimeFilter.js +11 -14
  120. package/lib/components/Header/KandoNavbar/KandoNavbar.js +64 -89
  121. package/lib/components/Header/Slideshow/Slideshow.js +68 -90
  122. package/lib/components/Header/Toolbar/ClientImg/ClientImg.js +6 -4
  123. package/lib/components/Header/Toolbar/CustomerMenu/CustomerMenu.js +21 -23
  124. package/lib/components/Header/Toolbar/MenuCreator/MenuCreator.js +18 -18
  125. package/lib/components/Header/Toolbar/SearchDropdown/SearchDropdown.js +37 -43
  126. package/lib/components/Header/Toolbar/Toolbar.js +55 -74
  127. package/lib/components/InfoBar/InfoBar.js +10 -23
  128. package/lib/components/InfoBar/InfoBar.stories.js +3 -5
  129. package/lib/components/KandoModal/KandoModal.js +27 -41
  130. package/lib/components/Link.js +8 -7
  131. package/lib/components/Links/CustomRedirect/CustomRedirect.js +9 -8
  132. package/lib/components/Links/StyledLink/StyledLink.js +12 -12
  133. package/lib/components/Links/StyledNavLink/StyledNavLink.js +11 -10
  134. package/lib/components/LiveEvents/CarouselSlide.js +9 -7
  135. package/lib/components/LiveEvents/LiveEvents.js +5 -3
  136. package/lib/components/LoaderByPercent/LoaderByPercent.js +37 -29
  137. package/lib/components/Map/Map.js +20 -23
  138. package/lib/components/Modal/Modal.js +9 -9
  139. package/lib/components/NarrowHeader.js +17 -31
  140. package/lib/components/PointInfo/PointInfo.js +19 -17
  141. package/lib/components/PopupModal/PopupModal.js +12 -16
  142. package/lib/components/PopupModal/PopupModal.stories.js +15 -19
  143. package/lib/components/Sector/Sector.js +8 -6
  144. package/lib/components/Sector/Sector.test.js +19 -20
  145. package/lib/components/Sector/sectorIcons.js +2 -2
  146. package/lib/components/SevereEvent/Eta/Eta.js +49 -52
  147. package/lib/components/SevereEvent/Eta/styles.js +10 -6
  148. package/lib/components/SevereEvent/SevereEvent.js +30 -37
  149. package/lib/components/Spinner/Spinner.js +8 -8
  150. package/lib/components/Spinner/Spinner.stories.js +4 -6
  151. package/lib/components/Spinner/styles.js +22 -14
  152. package/lib/components/Tabs/Tabs.js +21 -29
  153. package/lib/components/Tabs/Tabs.stories.js +4 -6
  154. package/lib/components/Tabs/assets/index.js +5 -5
  155. package/lib/components/TimeRangeSelector/KandoRangePicker/ComparisonSelect.js +12 -15
  156. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePicker.js +40 -51
  157. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePickerContainer.js +19 -31
  158. package/lib/components/TimeRangeSelector/TimeRangeHelper.js +20 -25
  159. package/lib/components/TimeRangeSelector/TimeRangeItem/TimeRangeItem.js +13 -13
  160. package/lib/components/TimeRangeSelector/TimeRangeList.js +23 -24
  161. package/lib/components/TimeRangeSelector/TimeRangeOptions.js +17 -25
  162. package/lib/components/TimeRangeSelector/TimeRangeSelector.js +31 -32
  163. package/lib/components/TimeRangeSelector/TimeRangeSelector.stories.js +4 -6
  164. package/lib/components/TimeRangeSelector/constants.js +3 -3
  165. package/lib/components/Toggle/Toggle.js +12 -17
  166. package/lib/components/TrendGraph/TrendGraph.js +23 -39
  167. package/lib/components/TrendGraphNVL/TrendGraphNVL.js +27 -33
  168. package/lib/development-environment/index.js +8 -12
  169. package/lib/development-environment/mock/browser.js +2 -4
  170. package/lib/development-environment/mock/get.js +8 -10
  171. package/lib/development-environment/mock/handlers.js +2 -2
  172. package/lib/development-environment/mock/mockBus.js +4 -4
  173. package/lib/development-environment/mock/mockObjects/area-trends-graph.js +2 -2
  174. package/lib/development-environment/mock/mockObjects/areaInformation.js +2 -2
  175. package/lib/development-environment/mock/mockObjects/areaQualitySummary.js +2 -2
  176. package/lib/development-environment/mock/mockObjects/areaSitesData.js +2 -2
  177. package/lib/development-environment/mock/mockObjects/areasJson.js +2 -2
  178. package/lib/development-environment/mock/mockObjects/controlRoomNetworkEdges.js +2 -2
  179. package/lib/development-environment/mock/mockObjects/covidView-areasData-24.js +2 -2
  180. package/lib/development-environment/mock/mockObjects/data-menuData.js +2 -2
  181. package/lib/development-environment/mock/mockObjects/data-search.js +2 -2
  182. package/lib/development-environment/mock/mockObjects/discharge_effluent_quality.js +2 -2
  183. package/lib/development-environment/mock/mockObjects/discharge_pattern_overtime.js +2 -2
  184. package/lib/development-environment/mock/mockObjects/eventFiltersJson.js +2 -2
  185. package/lib/development-environment/mock/mockObjects/eventsJson.js +2 -2
  186. package/lib/development-environment/mock/mockObjects/metascore.js +2 -2
  187. package/lib/development-environment/mock/mockObjects/permissionsJson.js +2 -2
  188. package/lib/development-environment/mock/mockObjects/pointsJson.js +2 -2
  189. package/lib/development-environment/mock/mockObjects/site-info.js +2 -2
  190. package/lib/development-environment/mock/mockObjects/trend-graph-component-data-907.js +2 -2
  191. package/lib/development-environment/togly/ToglyDashboard.js +13 -22
  192. package/lib/development-environment/togly/ToglyItem.js +36 -31
  193. package/lib/development-environment/togly/init.js +2 -2
  194. package/lib/development-environment/togly/macro.js +14 -10
  195. package/lib/development-environment/togly/useDoubleKeyDown.js +7 -9
  196. package/lib/development-environment/togly/useLocalStorage.js +13 -18
  197. package/lib/hooks/useApi.js +19 -55
  198. package/lib/hooks/useApiWithDashboardQuery.js +30 -49
  199. package/lib/hooks/useClickOutside.js +3 -3
  200. package/lib/hooks/useInitializeHeaders.js +5 -5
  201. package/lib/hooks/useKandoFetch.js +16 -29
  202. package/lib/hooks/useMap.js +22 -34
  203. package/lib/hooks/useNavContext.js +22 -26
  204. package/lib/hooks/useRemoveExistingLayers.js +6 -6
  205. package/lib/hooks/useUpdateEventBodyTail.js +13 -17
  206. package/lib/hooks/useUserTimeZone.js +33 -30
  207. package/lib/hooks/useUserTimeZone.test.js +19 -22
  208. package/lib/hooks/useWindowSize.js +7 -14
  209. package/lib/index.js +11 -12
  210. package/lib/macros/getVersion.js +3 -3
  211. package/lib/pages/AreaPage/AreaPage.js +34 -67
  212. package/lib/pages/AreaPage/Dashboard/AreaMapContainer/AreaMapContainer.js +16 -17
  213. package/lib/pages/AreaPage/Dashboard/Dashboard.js +30 -31
  214. package/lib/pages/AreaPage/Dashboard/LineChart/LineChart.js +17 -25
  215. package/lib/pages/AreaPage/Dashboard/LineChart/options/options.js +4 -4
  216. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/PieChart/PieChart.js +8 -8
  217. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/SiteBox.js +11 -11
  218. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/styles.js +3 -3
  219. package/lib/pages/AreaPage/Dashboard/Sites/factories.mock.js +2 -2
  220. package/lib/pages/AreaPage/Dashboard/Sites/styles.js +4 -4
  221. package/lib/pages/AssessmentPage/AssessmentPage.js +40 -46
  222. package/lib/pages/CannyWidget/Feedback.js +13 -13
  223. package/lib/pages/CovidPage/CovidPage.js +8 -13
  224. package/lib/pages/CovidPage/components/Body.js +25 -27
  225. package/lib/pages/CovidPage/components/Map.js +29 -39
  226. package/lib/pages/CovidPage/components/Sidebar.js +16 -15
  227. package/lib/pages/CovidPage/components/Summary.js +20 -27
  228. package/lib/pages/CovidPage/components/TrendGraphNVL/TrendGraphNVL.js +27 -33
  229. package/lib/pages/CovidPage/components/TrendPopupContent/TrendPopupContent.js +51 -73
  230. package/lib/pages/CovidPage/components/areas/Area.js +29 -40
  231. package/lib/pages/CovidPage/components/areas/AreaPolygonWBE.js +55 -46
  232. package/lib/pages/CovidPage/components/areas/AreaPolygonsWBE.js +32 -35
  233. package/lib/pages/CovidPage/components/areas/AreasList.js +34 -46
  234. package/lib/pages/CovidPage/components/areas/Sort.js +11 -14
  235. package/lib/pages/CovidPage/components/nvlStatusHelper.js +11 -11
  236. package/lib/pages/DashboardMap/AreaCard.js +28 -28
  237. package/lib/pages/DashboardMap/AssessmentIcon.js +8 -7
  238. package/lib/pages/DashboardMap/Capacity.js +31 -80
  239. package/lib/pages/DashboardMap/FactoryCard.js +31 -26
  240. package/lib/pages/DashboardMap/HighchartsOptions.js +5 -4
  241. package/lib/pages/DashboardMap/List.js +74 -105
  242. package/lib/pages/DashboardMap/ListContext.js +15 -19
  243. package/lib/pages/DashboardMap/Loader.js +2 -2
  244. package/lib/pages/DashboardMap/SeverityBadge.js +10 -18
  245. package/lib/pages/DashboardMap/WWTPMap.js +48 -60
  246. package/lib/pages/DashboardMap/WaterDischarge.js +8 -8
  247. package/lib/pages/DashboardMap/Widget.js +54 -71
  248. package/lib/pages/DashboardMap/utils.js +48 -65
  249. package/lib/pages/EventsPage/Body/Body.js +20 -15
  250. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropContainer.js +17 -19
  251. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropUtils.js +27 -35
  252. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropWrapper.js +8 -6
  253. package/lib/pages/EventsPage/DragAndDropArea/DraggableItem.js +11 -7
  254. package/lib/pages/EventsPage/DragAndDropArea/DraggableList.js +21 -30
  255. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +53 -64
  256. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainerHelpers.js +19 -31
  257. package/lib/pages/EventsPage/EventsPage.js +7 -10
  258. package/lib/pages/EventsPage/FloatingGraph/FloatingGraph.js +26 -38
  259. package/lib/pages/EventsPage/events/MoreInfo.js +17 -16
  260. package/lib/pages/EventsPage/events/Sidebar.js +21 -16
  261. package/lib/pages/EventsPage/events/event_info/Contaminants/Contaminants.js +7 -7
  262. package/lib/pages/EventsPage/events/event_info/Contaminants/ContaminantsList.js +17 -20
  263. package/lib/pages/EventsPage/events/event_info/EarlyWarnings.js +30 -35
  264. package/lib/pages/EventsPage/events/event_info/EventDetails.js +40 -37
  265. package/lib/pages/EventsPage/events/event_info/EventInfo.js +44 -43
  266. package/lib/pages/EventsPage/events/event_info/EventPath/EventPath.js +4 -4
  267. package/lib/pages/EventsPage/events/event_info/EventSection.js +17 -19
  268. package/lib/pages/EventsPage/events/event_info/EventSection.test.js +43 -38
  269. package/lib/pages/EventsPage/events/event_info/EventTimeRange.js +39 -47
  270. package/lib/pages/EventsPage/events/event_info/Header/Header.js +6 -4
  271. package/lib/pages/EventsPage/events/event_info/Header/HeaderContainer.js +30 -33
  272. package/lib/pages/EventsPage/events/event_info/HistoricalInformation.js +6 -6
  273. package/lib/pages/EventsPage/events/event_info/MiniEventTree.js +29 -36
  274. package/lib/pages/EventsPage/events/event_info/MobileEventPath.js +4 -6
  275. package/lib/pages/EventsPage/events/event_info/PollutionAssessment /PollutionAssessment.js +10 -10
  276. package/lib/pages/EventsPage/events/event_info/PollutionAssessment /PollutionTypesList.js +7 -9
  277. package/lib/pages/EventsPage/events/event_info/PollutionDischarge.js +22 -21
  278. package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResult.js +12 -19
  279. package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResultButton.js +5 -3
  280. package/lib/pages/EventsPage/events/event_info/SamplingList/SamplingDetails.js +11 -9
  281. package/lib/pages/EventsPage/events/event_info/SamplingList/Samplings.js +22 -26
  282. package/lib/pages/EventsPage/events/event_info/SeverityScore/ScoreExplanation.js +12 -8
  283. package/lib/pages/EventsPage/events/event_info/SeverityScore/SeverityScore.js +7 -7
  284. package/lib/pages/EventsPage/events/event_info/SourceDetails/Confidence.js +6 -4
  285. package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.js +2 -2
  286. package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.test.js +12 -10
  287. package/lib/pages/EventsPage/events/event_info/SourceDetails/IconAndTitles.js +10 -8
  288. package/lib/pages/EventsPage/events/event_info/SourceDetails/MoreInfoButton.js +10 -12
  289. package/lib/pages/EventsPage/events/event_info/SourceDetails/OtherSources.js +5 -3
  290. package/lib/pages/EventsPage/events/event_info/SourceDetails/PotentialSources.js +7 -5
  291. package/lib/pages/EventsPage/events/event_info/SourceDetails/SingleSource.js +7 -5
  292. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceCardBody.js +6 -4
  293. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.js +11 -9
  294. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.test.js +15 -15
  295. package/lib/pages/EventsPage/events/event_info/SourceDetails/WaterDischarge.js +6 -6
  296. package/lib/pages/EventsPage/events/event_info/Timelines/DischargeBox.js +7 -5
  297. package/lib/pages/EventsPage/events/event_info/Timelines/EarlyWarning.js +17 -15
  298. package/lib/pages/EventsPage/events/event_info/Timelines/LiveStatusBadge.js +4 -4
  299. package/lib/pages/EventsPage/events/event_info/Timelines/SeenBox.js +10 -8
  300. package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.js +16 -11
  301. package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.test.js +9 -8
  302. package/lib/pages/EventsPage/events/event_info/Timelines/Titles.js +2 -2
  303. package/lib/pages/EventsPage/events/event_info/Timelines/style.js +3 -3
  304. package/lib/pages/EventsPage/events/event_info/charts/EventDetailsPieChart.js +25 -38
  305. package/lib/pages/EventsPage/events/event_info/damage_type/DamageType.js +29 -36
  306. package/lib/pages/EventsPage/events/event_info/samplingsOld/Sampling.js +11 -9
  307. package/lib/pages/EventsPage/events/event_info/samplingsOld/Samplings.js +15 -17
  308. package/lib/pages/EventsPage/events/event_info/sources/Source.js +27 -30
  309. package/lib/pages/EventsPage/events/event_info/sources/Sources.js +23 -26
  310. package/lib/pages/EventsPage/events/event_info/styles.js +20 -12
  311. package/lib/pages/EventsPage/events/events_list/EventItem.js +18 -19
  312. package/lib/pages/EventsPage/events/events_list/EventUtils.js +10 -10
  313. package/lib/pages/EventsPage/events/events_list/EventsList.js +124 -145
  314. package/lib/pages/EventsPage/events/events_list/Filter/Filter.js +40 -55
  315. package/lib/pages/EventsPage/events/events_list/Filter/FilterContainer.js +79 -115
  316. package/lib/pages/EventsPage/events/events_list/Filter/FilterItem.js +60 -77
  317. package/lib/pages/EventsPage/events/events_list/Filter/FiltersDropDown.js +38 -41
  318. package/lib/pages/EventsPage/events/events_list/Filter/OptionsDropDown.js +29 -36
  319. package/lib/pages/EventsPage/events/events_list/Sort.js +13 -16
  320. package/lib/pages/ImportFileWizard/FileUploadRespones.js +13 -20
  321. package/lib/pages/ImportFileWizard/ImportButtomButtons.js +6 -4
  322. package/lib/pages/ImportFileWizard/ImportFile.js +20 -22
  323. package/lib/pages/ImportFileWizard/ResponseBody.js +24 -33
  324. package/lib/pages/ImportFileWizard/ValidationForm.js +23 -22
  325. package/lib/pages/ImportFileWizard/ValidationResponse.js +21 -21
  326. package/lib/pages/ImportFileWizard/importFileUtils.js +1 -1
  327. package/lib/pages/ImportGisPage/ImportGisContainer.js +21 -24
  328. package/lib/pages/ImportGisPage/ImportedGisFilesPage.js +21 -23
  329. package/lib/pages/ImportGisPage/importGisUtils.js +13 -21
  330. package/lib/pages/ImportGisProcess/index.js +12 -15
  331. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/MultiChoiceTabs.js +7 -12
  332. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/RadioTabs.js +17 -19
  333. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/SeverityButtons.js +3 -3
  334. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.js +56 -65
  335. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.stories.js +6 -8
  336. package/lib/pages/NotificationsPage/Notification/Notification.js +16 -12
  337. package/lib/pages/NotificationsPage/Notifications.mock.js +2 -2
  338. package/lib/pages/NotificationsPage/Notifications.stories.js +4 -6
  339. package/lib/pages/NotificationsPage/NotificationsPage.js +18 -36
  340. package/lib/pages/NotificationsPage/assets/index.js +9 -9
  341. package/lib/pages/NotificationsPageV2/NotificationsPage.js +71 -97
  342. package/lib/pages/NotificationsPageV2/components/NotificationsCard.js +94 -63
  343. package/lib/pages/NotificationsPageV2/components/NotificationsForm/EventType.js +14 -16
  344. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSendVia.js +18 -16
  345. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSensors.js +17 -21
  346. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSources.js +17 -21
  347. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationTags.js +18 -22
  348. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationsFormContent.js +83 -69
  349. package/lib/pages/NotificationsPageV2/components/NotificationsForm/WaterAuthoritySelection.js +18 -22
  350. package/lib/pages/NotificationsPageV2/components/NotificationsSidebar.js +74 -74
  351. package/lib/pages/NotificationsPageV2/components/NotificationsUtils.js +97 -95
  352. package/lib/pages/NotificationsPageV2/notificationUtils.js +54 -48
  353. package/lib/pages/OldSitePage/OldSitePage.js +57 -132
  354. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.js +5 -5
  355. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.stories.js +3 -5
  356. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +8 -6
  357. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +18 -20
  358. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +9 -7
  359. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +12 -18
  360. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +16 -12
  361. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +3 -5
  362. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +18 -12
  363. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +51 -63
  364. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +9 -7
  365. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.js +29 -53
  366. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.mock.js +4 -4
  367. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.stories.js +10 -12
  368. package/lib/pages/OldSitePage/SamplingParameters/charts/ParametersChart.js +11 -10
  369. package/lib/pages/OldSitePage/SamplingParameters/charts/SamplingChart.js +10 -11
  370. package/lib/pages/OldSitePage/SamplingParameters/charts/options/options.js +32 -28
  371. package/lib/pages/OldSitePage/SamplingParameters/dataParser.js +27 -29
  372. package/lib/pages/OldSitePage/SamplingParameters/styles/samplingParameters.js +4 -4
  373. package/lib/pages/OldSitePage/SamplingParameters/styles/styles.js +18 -12
  374. package/lib/pages/ProfilePage/Container.js +2 -2
  375. package/lib/pages/ProfilePage/PasswordModal/PasswordModal.js +28 -44
  376. package/lib/pages/ProfilePage/ProfilePage.js +121 -214
  377. package/lib/pages/ProfilePage/TelegramModal/TelegramModal.js +25 -33
  378. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.js +19 -16
  379. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.test.js +28 -30
  380. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionContainer.js +57 -117
  381. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionDropdown.js +17 -20
  382. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActions.js +12 -10
  383. package/lib/pages/SamplingsPage/ActionsDropDown/ViewLabResult.js +39 -41
  384. package/lib/pages/SamplingsPage/DesktopActions/DesktopActions.js +25 -26
  385. package/lib/pages/SamplingsPage/DesktopActions/DownloadCSV.js +16 -16
  386. package/lib/pages/SamplingsPage/DesktopActions/UploadLabResult.js +13 -15
  387. package/lib/pages/SamplingsPage/NavigationDropdown.js +45 -32
  388. package/lib/pages/SamplingsPage/NewSamplingAction.js +76 -100
  389. package/lib/pages/SamplingsPage/SamplingMobileModal.js +129 -101
  390. package/lib/pages/SamplingsPage/SamplingProperties/ImageDeleteModal.js +21 -22
  391. package/lib/pages/SamplingsPage/SamplingProperties/ImagePreviewModal.js +34 -22
  392. package/lib/pages/SamplingsPage/SamplingProperties/ImageUpload.js +36 -59
  393. package/lib/pages/SamplingsPage/SamplingProperties/ManholeImageMobile.js +15 -18
  394. package/lib/pages/SamplingsPage/SamplingProperties/SamplerInProcess.js +9 -7
  395. package/lib/pages/SamplingsPage/SamplingProperties/SamplingProperties.js +110 -194
  396. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesForm.js +49 -55
  397. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHead.js +47 -43
  398. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHeadMobile.js +49 -45
  399. package/lib/pages/SamplingsPage/SamplingProperties/samplingPropertiesUtils.js +19 -20
  400. package/lib/pages/SamplingsPage/SamplingProperties/styles.js +3 -3
  401. package/lib/pages/SamplingsPage/SamplingSiteTableCell.js +10 -6
  402. package/lib/pages/SamplingsPage/SamplingsMobileItem.js +58 -54
  403. package/lib/pages/SamplingsPage/SamplingsMobileList.js +21 -28
  404. package/lib/pages/SamplingsPage/SamplingsPage.js +27 -33
  405. package/lib/pages/SamplingsPage/SamplingsPageContainer.js +50 -58
  406. package/lib/pages/SamplingsPage/samplingsPageUtils.js +68 -76
  407. package/lib/pages/SitePage/DischargePattern/DischargePattern.js +6 -4
  408. package/lib/pages/SitePage/PollutionContributor/PollutionContributor.js +14 -13
  409. package/lib/pages/SitePage/PollutionContributor/PollutionContributorContainer.js +10 -13
  410. package/lib/pages/SitePage/PollutionContributor/contributorUtils.js +16 -16
  411. package/lib/pages/SitePage/SamplingParameters/NoResults/NoResults.stories.js +3 -5
  412. package/lib/pages/SitePage/SamplingParameters/NoResults/index.js +14 -10
  413. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +9 -8
  414. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.test.js +26 -23
  415. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +14 -17
  416. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.test.js +36 -32
  417. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +9 -7
  418. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +15 -24
  419. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +16 -12
  420. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +3 -5
  421. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +18 -12
  422. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +58 -70
  423. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +9 -7
  424. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.js +15 -26
  425. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.mock.js +5 -5
  426. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.stories.js +10 -12
  427. package/lib/pages/SitePage/SamplingParameters/body/Body.js +9 -9
  428. package/lib/pages/SitePage/SamplingParameters/body/BodyContainer.js +29 -37
  429. package/lib/pages/SitePage/SamplingParameters/charts/ParametersChart.js +11 -11
  430. package/lib/pages/SitePage/SamplingParameters/charts/SamplingChart.js +10 -11
  431. package/lib/pages/SitePage/SamplingParameters/charts/options/options.js +60 -59
  432. package/lib/pages/SitePage/SamplingParameters/dataParser.js +30 -39
  433. package/lib/pages/SitePage/SamplingParameters/dataParser.test.js +11 -9
  434. package/lib/pages/SitePage/SamplingParameters/styles/samplingParameters.js +4 -4
  435. package/lib/pages/SitePage/SamplingParameters/styles/styles.js +18 -12
  436. package/lib/pages/SitePage/SiteInformation/EmptyState.js +11 -7
  437. package/lib/pages/SitePage/SiteInformation/SiteInformation.js +31 -30
  438. package/lib/pages/SitePage/SitePage.js +42 -81
  439. package/lib/pages/UploadLabResult/index.js +13 -13
  440. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.js +26 -35
  441. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.stories.js +6 -8
  442. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.js +9 -8
  443. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.stories.js +3 -5
  444. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/Eta.js +47 -48
  445. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/styles.js +10 -6
  446. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/LinkedSevereEvent.js +4 -4
  447. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/OptionalLinkedSevereEvent.js +4 -6
  448. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/SevereEvent.js +13 -12
  449. package/lib/pages/UtilityDashboardPage/TopBar/TopBar.js +15 -12
  450. package/lib/pages/UtilityDashboardPage/TopBar/constants.js +7 -7
  451. package/lib/pages/UtilityDashboardPage/TopBar/styles.js +2 -2
  452. package/lib/pages/UtilityDashboardPage/UtilityDashboard.js +21 -29
  453. package/lib/pages/UtilityDashboardPage/UtilityDashboard.stories.js +26 -30
  454. package/lib/pages/UtilityDashboardPage/UtilityDashboardMapContainer/UtilityDashboardMapContainer.js +16 -17
  455. package/lib/pages/UtilityDashboardPage/UtilityDashboardPage.js +7 -13
  456. package/lib/pages/UtilityDashboardPage/VirtualAreaDashboardPage.js +27 -31
  457. package/lib/pages/WbeDashboard/ExpandableComponent.js +9 -8
  458. package/lib/pages/WbeDashboard/GraphWrapper.js +30 -36
  459. package/lib/pages/WbeDashboard/IndividualTinyGraph.js +17 -19
  460. package/lib/pages/WbeDashboard/SearchInput.js +15 -20
  461. package/lib/pages/WbeDashboard/SummaryGraph.js +50 -76
  462. package/lib/pages/WbeDashboard/SummaryGraphModal.js +19 -17
  463. package/lib/pages/WbeDashboard/Tabs.js +11 -11
  464. package/lib/pages/WbeDashboard/WbeDashboardPage.js +151 -213
  465. package/lib/pages/WbeDashboard/WbeSummaryBar.js +40 -48
  466. package/lib/pages/WwtpPage/DashboardCard.js +26 -23
  467. package/lib/pages/WwtpPage/DischargePatternCard.js +14 -23
  468. package/lib/pages/WwtpPage/InletsCard/InletsBar.js +26 -22
  469. package/lib/pages/WwtpPage/InletsCard/InletsCard.js +19 -18
  470. package/lib/pages/WwtpPage/Map.js +5 -3
  471. package/lib/pages/WwtpPage/OrganicCard.js +2 -2
  472. package/lib/pages/WwtpPage/PotentialSaving/ImpactCard.js +2 -2
  473. package/lib/pages/WwtpPage/PotentialSaving/PotentialItem.js +8 -6
  474. package/lib/pages/WwtpPage/PotentialSaving/PotentialSaving.js +9 -8
  475. package/lib/pages/WwtpPage/PotentialSaving/PotentialSavingContainer.js +18 -14
  476. package/lib/pages/WwtpPage/PredictionCard.js +2 -2
  477. package/lib/pages/WwtpPage/TrendCard.js +18 -19
  478. package/lib/pages/WwtpPage/UpgradeBox.js +3 -3
  479. package/lib/pages/WwtpPage/WwtpPage.js +8 -8
  480. package/lib/pages/WwtpPage/WwtpPageContainer.js +21 -16
  481. package/lib/providers/Slideshow/SlideshowContext.js +11 -9
  482. package/lib/providers/Slideshow/SlideshowProvider.js +22 -38
  483. package/lib/providers/Slideshow/SlideshowRunner.js +17 -19
  484. package/lib/providers/UrlHistory/UrlHistoryContext.js +6 -4
  485. package/lib/providers/UrlHistory/UrlHistoryProvider.js +12 -11
  486. package/lib/providers/UrlHistory/index.js +2 -2
  487. package/lib/providers/UrlHistory/useLastVisited.js +5 -5
  488. package/lib/store/ImportGis/actionTypes.js +1 -1
  489. package/lib/store/ImportGis/actionsCreator.js +7 -5
  490. package/lib/store/ImportGis/reducer.js +40 -29
  491. package/lib/store/WBE/actionTypes.js +2 -2
  492. package/lib/store/WBE/reducer.js +13 -9
  493. package/lib/store/WWTPDashboard/WWTPDashboardSlice.js +24 -14
  494. package/lib/store/areas/actionTypes.js +4 -4
  495. package/lib/store/areas/actions.js +7 -13
  496. package/lib/store/areas/reducer.js +8 -6
  497. package/lib/store/context/actionTypes.js +3 -3
  498. package/lib/store/context/actions.js +3 -3
  499. package/lib/store/context/contextMiddlewares.js +14 -16
  500. package/lib/store/context/reducer.js +13 -9
  501. package/lib/store/dashboard/dashboardSlice.js +18 -10
  502. package/lib/store/edges/actionTypes.js +5 -5
  503. package/lib/store/edges/actions.js +4 -8
  504. package/lib/store/edges/reducer.js +13 -17
  505. package/lib/store/events/actionTypes.js +17 -17
  506. package/lib/store/events/actions.js +3 -7
  507. package/lib/store/events/models/IEvent.js +1 -1
  508. package/lib/store/events/reducer.js +42 -49
  509. package/lib/store/global/actionTypes.js +11 -11
  510. package/lib/store/global/actions.js +8 -6
  511. package/lib/store/global/reducer.js +11 -10
  512. package/lib/store/permissions/permissionsSlice.js +12 -8
  513. package/lib/store/points/actionTypes.js +3 -3
  514. package/lib/store/points/actions.js +4 -8
  515. package/lib/store/points/reducer.js +7 -5
  516. package/lib/store/rootActionTypes.js +2 -2
  517. package/lib/store/rootReducer.js +17 -12
  518. package/lib/store/rootStore.js +5 -5
  519. package/lib/store/samplings/actionTypes.js +1 -1
  520. package/lib/store/samplings/reducer.js +16 -14
  521. package/lib/styles/StylesLayout.js +5 -3
  522. package/lib/styles/theme/theme.js +26 -27
  523. package/lib/test/mocks/browser.js +2 -4
  524. package/lib/test/test-utils.js +17 -15
  525. package/lib/ui-kit/Button/Button.js +128 -80
  526. package/lib/ui-kit/Button/Button.test.js +24 -29
  527. package/lib/ui-kit/Checkbox/Checkbox.js +30 -20
  528. package/lib/ui-kit/ContentCard/ContentCard.js +15 -18
  529. package/lib/ui-kit/Dashboard/Dashboard.js +25 -22
  530. package/lib/ui-kit/DropDown/DropDown.js +23 -24
  531. package/lib/ui-kit/DropDown/DropDown.test.js +12 -12
  532. package/lib/ui-kit/DropDown/DropDownItem.js +24 -21
  533. package/lib/ui-kit/DropDown/DropdownToggle.js +12 -8
  534. package/lib/ui-kit/EmptyState/EmptyState.js +6 -4
  535. package/lib/ui-kit/IconAction/IconAction.js +7 -5
  536. package/lib/ui-kit/ImageUploadButton/ImageUploadButton.js +48 -64
  537. package/lib/ui-kit/InfoTooltip/InfoTooltip.js +69 -52
  538. package/lib/ui-kit/InletsPie/InletsPie.js +15 -13
  539. package/lib/ui-kit/InletsPie/options.js +6 -6
  540. package/lib/ui-kit/KandoList/KandoList.js +14 -12
  541. package/lib/ui-kit/KandoTable/KandoTable.js +48 -40
  542. package/lib/ui-kit/KandoTable/KandoTable.test.js +16 -22
  543. package/lib/ui-kit/Layout/Layout.js +6 -4
  544. package/lib/ui-kit/MobileInput/MobileInput.js +60 -50
  545. package/lib/ui-kit/ModalConfirmation/ModalConfirmation.js +13 -16
  546. package/lib/ui-kit/OrganicEvents/GaugeChart.js +8 -6
  547. package/lib/ui-kit/OrganicEvents/OrganicEvents.js +6 -6
  548. package/lib/ui-kit/OrganicEvents/OrganicEventsContainer.js +27 -20
  549. package/lib/ui-kit/OrganicEvents/TextInfo.js +15 -10
  550. package/lib/ui-kit/RadioButtons/RadioButtonGroup.js +10 -8
  551. package/lib/ui-kit/SamplingStatus/SamplingStatus.js +14 -17
  552. package/lib/ui-kit/SamplingStatus/SamplingStatusHelper.js +3 -3
  553. package/lib/ui-kit/ScoreGauge/ScoreGauge.js +20 -20
  554. package/lib/ui-kit/ScoreGauge/constant.js +3 -3
  555. package/lib/ui-kit/TimeLineChart/TrendChart.js +54 -42
  556. package/lib/ui-kit/TitleAndCloseHeader/TitleAndCloseHeader.js +8 -7
  557. package/lib/ui-kit/Tooltip/Tooltip.js +14 -8
  558. package/lib/ui-kit/index.js +8 -8
  559. package/lib/ui-kit/kandoStepper/KandoStepper.js +12 -12
  560. package/lib/ui-kit/siteName/SiteName.js +11 -8
  561. package/lib/utilities/ActionUtility.js +7 -7
  562. package/lib/utilities/Alert.js +21 -17
  563. package/lib/utilities/Analytics.js +11 -11
  564. package/lib/utilities/Array.js +4 -5
  565. package/lib/utilities/Enum.js +15 -51
  566. package/lib/utilities/ErrorBoundary.js +27 -41
  567. package/lib/utilities/File.js +40 -69
  568. package/lib/utilities/GetDir.js +8 -7
  569. package/lib/utilities/KandoDate.js +7 -15
  570. package/lib/utilities/KandoModal.js +16 -26
  571. package/lib/utilities/LocalStorage.js +8 -10
  572. package/lib/utilities/ThousandsToK.js +3 -3
  573. package/lib/utilities/TimeFormat.js +21 -20
  574. package/lib/utilities/Truncate.js +17 -25
  575. package/lib/utilities/edgesMath.js +14 -15
  576. package/lib/utilities/i18n.js +3 -3
  577. package/lib/utilities/kql.js +12 -14
  578. package/lib/utilities/map/icons.js +3 -3
  579. package/lib/utilities/polylinedecorator.js +87 -112
  580. package/lib/utilities/scoreToData.js +17 -17
  581. package/lib/utilities/scoreToData.test.js +5 -5
  582. package/lib/utilities/time.js +8 -8
  583. package/lib/utilities/uploadToS3.js +11 -11
  584. package/lib/utilities/urls.js +61 -59
  585. package/package.json +1 -1
@@ -24,145 +24,175 @@ var _actionsCreator = require("store/samplings/actionsCreator");
24
24
  var _urls = require("utilities/urls");
25
25
  var _styleModule = _interopRequireDefault(require("./style.module.scss"));
26
26
  var _samplingsPageUtils = require("./samplingsPageUtils");
27
- var SamplingMobileModalStyle = _styledComponents.default.div.withConfig({
27
+ const SamplingMobileModalStyle = _styledComponents.default.div.withConfig({
28
28
  displayName: "SamplingMobileModal__SamplingMobileModalStyle",
29
29
  componentId: "sc-ksxd5-0"
30
- })(["*{font-family:Nunito,Gilroy,Arial,Helvetica,sans-serif;}.dropright{button{width:100vw;::after{display:none;}}}img{width:18px;height:18px;color:", ";}"], function (_ref) {
31
- var theme = _ref.theme;
30
+ })(["*{font-family:Nunito,Gilroy,Arial,Helvetica,sans-serif;}.dropright{button{width:100vw;::after{display:none;}}}img{width:18px;height:18px;color:", ";}"], _ref => {
31
+ let {
32
+ theme
33
+ } = _ref;
32
34
  return theme.colorScheme.primary.p1;
33
35
  });
34
- var ListGroupStyle = (0, _styledComponents.default)(_reactBootstrap.ListGroup).withConfig({
36
+ const ListGroupStyle = (0, _styledComponents.default)(_reactBootstrap.ListGroup).withConfig({
35
37
  displayName: "SamplingMobileModal__ListGroupStyle",
36
38
  componentId: "sc-ksxd5-1"
37
39
  })(["padding:0 10px !important;border-radius:14px;"]);
38
- var ModalContainerStyle = _styledComponents.default.div.withConfig({
40
+ const ModalContainerStyle = _styledComponents.default.div.withConfig({
39
41
  displayName: "SamplingMobileModal__ModalContainerStyle",
40
42
  componentId: "sc-ksxd5-2"
41
- })(["position:fixed;width:100vw;left:0;bottom:0;z-index:", ";"], function (_ref2) {
42
- var theme = _ref2.theme;
43
+ })(["position:fixed;width:100vw;left:0;bottom:0;z-index:", ";"], _ref2 => {
44
+ let {
45
+ theme
46
+ } = _ref2;
43
47
  return theme.zIndexes.modal;
44
48
  });
45
- var ListGroupItemStyle = (0, _styledComponents.default)(_reactBootstrap.ListGroup.Item).withConfig({
49
+ const ListGroupItemStyle = (0, _styledComponents.default)(_reactBootstrap.ListGroup.Item).withConfig({
46
50
  displayName: "SamplingMobileModal__ListGroupItemStyle",
47
51
  componentId: "sc-ksxd5-3"
48
- })(["font-size:", ";height:55px !important;justify-content:center !important;align-items:center;gap:5px;border-bottom:0.5px solid #858a947d !important;color:", " !important;"], function (_ref3) {
49
- var theme = _ref3.theme;
52
+ })(["font-size:", ";height:55px !important;justify-content:center !important;align-items:center;gap:5px;border-bottom:0.5px solid #858a947d !important;color:", " !important;"], _ref3 => {
53
+ let {
54
+ theme
55
+ } = _ref3;
50
56
  return theme.fontSize.md;
51
- }, function (_ref4) {
52
- var disabled = _ref4.disabled,
53
- theme = _ref4.theme;
57
+ }, _ref4 => {
58
+ let {
59
+ disabled,
60
+ theme
61
+ } = _ref4;
54
62
  return disabled ? theme.colorScheme.natural.n50 : theme.samplingsPage.mobile.modalListItemColor;
55
63
  });
56
- var RowInfoStyle = _styledComponents.default.div.withConfig({
64
+ const RowInfoStyle = _styledComponents.default.div.withConfig({
57
65
  displayName: "SamplingMobileModal__RowInfoStyle",
58
66
  componentId: "sc-ksxd5-4"
59
- })(["display:block;background:", ";border-top-left-radius:14px;border-top-right-radius:14px;border-bottom:0.5px solid #858a947d;padding:22px 32px 0;"], function (_ref5) {
60
- var theme = _ref5.theme;
67
+ })(["display:block;background:", ";border-top-left-radius:14px;border-top-right-radius:14px;border-bottom:0.5px solid #858a947d;padding:22px 32px 0;"], _ref5 => {
68
+ let {
69
+ theme
70
+ } = _ref5;
61
71
  return theme.colorScheme.natural.n1;
62
72
  });
63
- var InfoLineStyle = _styledComponents.default.div.withConfig({
73
+ const InfoLineStyle = _styledComponents.default.div.withConfig({
64
74
  displayName: "SamplingMobileModal__InfoLineStyle",
65
75
  componentId: "sc-ksxd5-5"
66
- })(["border-top:1px solid #858a947d;color:", ";display:flex;justify-content:space-between;width:100%;padding:16px 0;"], function (_ref6) {
67
- var theme = _ref6.theme;
76
+ })(["border-top:1px solid #858a947d;color:", ";display:flex;justify-content:space-between;width:100%;padding:16px 0;"], _ref6 => {
77
+ let {
78
+ theme
79
+ } = _ref6;
68
80
  return theme.colorScheme.natural.n60;
69
81
  });
70
- var OverlayStyle = _styledComponents.default.div.withConfig({
82
+ const OverlayStyle = _styledComponents.default.div.withConfig({
71
83
  displayName: "SamplingMobileModal__OverlayStyle",
72
84
  componentId: "sc-ksxd5-6"
73
- })(["background-color:", ";width:100%;height:100vh;left:0;bottom:0;position:fixed;z-index:", ";"], function (_ref7) {
74
- var theme = _ref7.theme;
85
+ })(["background-color:", ";width:100%;height:100vh;left:0;bottom:0;position:fixed;z-index:", ";"], _ref7 => {
86
+ let {
87
+ theme
88
+ } = _ref7;
75
89
  return theme.samplingsPage.mobile.modalOverlayBackground;
76
- }, function (_ref8) {
77
- var theme = _ref8.theme;
90
+ }, _ref8 => {
91
+ let {
92
+ theme
93
+ } = _ref8;
78
94
  return theme.zIndexes.modal;
79
95
  });
80
- var MainButtonStyle = (0, _styledComponents.default)(_uiKit.Button).withConfig({
96
+ const MainButtonStyle = (0, _styledComponents.default)(_uiKit.Button).withConfig({
81
97
  displayName: "SamplingMobileModal__MainButtonStyle",
82
98
  componentId: "sc-ksxd5-7"
83
- })(["font-size:18px;margin:10px;width:calc(100vw - 20px);border:none;height:53px;background-color:", " !important;border-radius:14px !important;"], function (_ref9) {
84
- var theme = _ref9.theme;
99
+ })(["font-size:18px;margin:10px;width:calc(100vw - 20px);border:none;height:53px;background-color:", " !important;border-radius:14px !important;"], _ref9 => {
100
+ let {
101
+ theme
102
+ } = _ref9;
85
103
  return theme.colorScheme.natural.n1;
86
104
  });
87
- var SiteStyle = _styledComponents.default.div.withConfig({
105
+ const SiteStyle = _styledComponents.default.div.withConfig({
88
106
  displayName: "SamplingMobileModal__SiteStyle",
89
107
  componentId: "sc-ksxd5-8"
90
108
  })(["font-family:Nunito,Gilroy,Arial,Helvetica,sans-serif;font-weight:bold;font-size:16px;color:#000;"]);
91
- var ContactNumberRowStyle = _styledComponents.default.a.withConfig({
109
+ const ContactNumberRowStyle = _styledComponents.default.a.withConfig({
92
110
  displayName: "SamplingMobileModal__ContactNumberRowStyle",
93
111
  componentId: "sc-ksxd5-9"
94
112
  })(["img{margin:0 5px;}"]);
95
- var SiteDetailsStyle = _styledComponents.default.div.withConfig({
113
+ const SiteDetailsStyle = _styledComponents.default.div.withConfig({
96
114
  displayName: "SamplingMobileModal__SiteDetailsStyle",
97
115
  componentId: "sc-ksxd5-10"
98
- })(["font-family:Nunito,Gilroy,Arial,Helvetica,sans-serif;font-size:12px;display:flex;justify-content:space-between;margin:0 0 10px;line-height:30px;color:", ";"], function (_ref10) {
99
- var theme = _ref10.theme;
116
+ })(["font-family:Nunito,Gilroy,Arial,Helvetica,sans-serif;font-size:12px;display:flex;justify-content:space-between;margin:0 0 10px;line-height:30px;color:", ";"], _ref10 => {
117
+ let {
118
+ theme
119
+ } = _ref10;
100
120
  return theme.colorScheme.natural.n60;
101
121
  });
102
- var SiteDetailsFirstStyle = _styledComponents.default.div.withConfig({
122
+ const SiteDetailsFirstStyle = _styledComponents.default.div.withConfig({
103
123
  displayName: "SamplingMobileModal__SiteDetailsFirstStyle",
104
124
  componentId: "sc-ksxd5-11"
105
125
  })([""]);
106
- var SiteDetailsSecondStyle = _styledComponents.default.div.withConfig({
126
+ const SiteDetailsSecondStyle = _styledComponents.default.div.withConfig({
107
127
  displayName: "SamplingMobileModal__SiteDetailsSecondStyle",
108
128
  componentId: "sc-ksxd5-12"
109
129
  })(["display:flex;flex-direction:column;align-items:flex-end;margin:5px 0 0;"]);
110
- var BottomSectionStyle = _styledComponents.default.div.withConfig({
130
+ const BottomSectionStyle = _styledComponents.default.div.withConfig({
111
131
  displayName: "SamplingMobileModal__BottomSectionStyle",
112
132
  componentId: "sc-ksxd5-13"
113
133
  })(["display:flex;gap:10px;"]);
114
- var StatusContainerStyle = _styledComponents.default.div.attrs(function (props) {
115
- return {
116
- isMobileProperties: props.isMobileProperties
117
- };
118
- }).withConfig({
134
+ const StatusContainerStyle = _styledComponents.default.div.attrs(props => ({
135
+ isMobileProperties: props.isMobileProperties
136
+ })).withConfig({
119
137
  displayName: "SamplingMobileModal__StatusContainerStyle",
120
138
  componentId: "sc-ksxd5-14"
121
- })(["display:flex;flex-direction:row-reverse;align-items:center;gap:4px;img{height:14px;width:14px;}", ""], function (_ref11) {
122
- var isMobileProperties = _ref11.isMobileProperties;
123
- return isMobileProperties && "\n justify-content: flex-end;\n ";
139
+ })(["display:flex;flex-direction:row-reverse;align-items:center;gap:4px;img{height:14px;width:14px;}", ""], _ref11 => {
140
+ let {
141
+ isMobileProperties
142
+ } = _ref11;
143
+ return isMobileProperties && `
144
+ justify-content: flex-end;
145
+ `;
124
146
  });
125
- var CloseTopButtonStyle = _styledComponents.default.div.withConfig({
147
+ const CloseTopButtonStyle = _styledComponents.default.div.withConfig({
126
148
  displayName: "SamplingMobileModal__CloseTopButtonStyle",
127
149
  componentId: "sc-ksxd5-15"
128
- })(["align-items:center;cursor:pointer;position:absolute;top:-40px;right:10px;width:30px;height:30px;background:", ";color:", ";border:2px solid ", ";border-radius:50%;text-align:center;font-size:20px;line-height:1.44em;margin:0 8px 0 0;padding:2px 0 0;"], function (_ref12) {
129
- var theme = _ref12.theme;
150
+ })(["align-items:center;cursor:pointer;position:absolute;top:-40px;right:10px;width:30px;height:30px;background:", ";color:", ";border:2px solid ", ";border-radius:50%;text-align:center;font-size:20px;line-height:1.44em;margin:0 8px 0 0;padding:2px 0 0;"], _ref12 => {
151
+ let {
152
+ theme
153
+ } = _ref12;
130
154
  return theme.colorScheme.natural.n100;
131
- }, function (_ref13) {
132
- var theme = _ref13.theme;
155
+ }, _ref13 => {
156
+ let {
157
+ theme
158
+ } = _ref13;
133
159
  return theme.colorScheme.natural.n1;
134
- }, function (_ref14) {
135
- var theme = _ref14.theme;
160
+ }, _ref14 => {
161
+ let {
162
+ theme
163
+ } = _ref14;
136
164
  return theme.colorScheme.natural.n100;
137
165
  });
138
- var SamplingMobileModal = function SamplingMobileModal(_ref15) {
139
- var onCloseModal = _ref15.onCloseModal,
140
- sampling = _ref15.sampling,
141
- isMobileProperties = _ref15.isMobileProperties;
142
- var contact = sampling.contact,
143
- contactNumber = sampling.contact_number,
144
- labName = sampling.lab_name,
145
- manholeAddress = sampling.manhole_address,
146
- status = sampling.status,
147
- site = sampling.site,
148
- samplingId = sampling.sampling_id,
149
- samplingDate = sampling.sampling_date,
150
- samplingTime = sampling.sampling_time;
151
- var history = (0, _reactRouterDom.useHistory)();
152
- var dispatch = (0, _reactRedux.useDispatch)();
153
- var navContext = (0, _reactRedux.useSelector)(function (state) {
154
- return state.nav_context_data.navContext;
155
- });
156
- var waterAuthorityId = (0, _reactRedux.useSelector)(function (state) {
157
- return state.global_data.waterAuthorityId;
158
- });
159
- var handleActionClick = function handleActionClick(op) {
166
+ const SamplingMobileModal = _ref15 => {
167
+ let {
168
+ onCloseModal,
169
+ sampling,
170
+ isMobileProperties
171
+ } = _ref15;
172
+ const {
173
+ contact,
174
+ contact_number: contactNumber,
175
+ lab_name: labName,
176
+ manhole_address: manholeAddress,
177
+ status,
178
+ site,
179
+ sampling_id: samplingId,
180
+ sampling_date: samplingDate,
181
+ sampling_time: samplingTime
182
+ } = sampling;
183
+ const history = (0, _reactRouterDom.useHistory)();
184
+ const dispatch = (0, _reactRedux.useDispatch)();
185
+ const navContext = (0, _reactRedux.useSelector)(state => state.nav_context_data.navContext);
186
+ const waterAuthorityId = (0, _reactRedux.useSelector)(state => state.global_data.waterAuthorityId);
187
+ const handleActionClick = op => {
160
188
  if (!op) {
161
189
  return;
162
190
  }
163
- var id = sampling.id;
191
+ const {
192
+ id
193
+ } = sampling;
164
194
  dispatch((0, _actionsCreator.getSamplingById)(id));
165
- var samplingPropertiesUrlParams = (0, _urls.urls)({
195
+ const samplingPropertiesUrlParams = (0, _urls.urls)({
166
196
  id: id,
167
197
  locale: navContext.locale,
168
198
  waterAuthorityId: waterAuthorityId,
@@ -170,13 +200,15 @@ var SamplingMobileModal = function SamplingMobileModal(_ref15) {
170
200
  });
171
201
  history.push(samplingPropertiesUrlParams.samplingsPage.samplingPropertiesRoute.url);
172
202
  };
173
- var getAddress = function getAddress() {
174
- return _samplingsPageUtils.MOBILE_MODAL_TEXT_LENGTH < manholeAddress.text.length ? manholeAddress.text.slice(0, _samplingsPageUtils.MOBILE_MODAL_TEXT_LENGTH) + "\u2026" : manholeAddress.text;
203
+ const getAddress = () => {
204
+ return _samplingsPageUtils.MOBILE_MODAL_TEXT_LENGTH < manholeAddress.text.length ? manholeAddress.text.slice(0, _samplingsPageUtils.MOBILE_MODAL_TEXT_LENGTH) + '\u2026' : manholeAddress.text;
175
205
  };
176
- var lat_lng = manholeAddress.lat_lng;
177
- var locationStr = "".concat(lat_lng[0], ",").concat(lat_lng[1]);
178
- var locationStrWaze = "ll=".concat(locationStr);
179
- var mobileActionsOptsMap = {
206
+ const {
207
+ lat_lng
208
+ } = manholeAddress;
209
+ const locationStr = `${lat_lng[0]},${lat_lng[1]}`;
210
+ const locationStrWaze = `ll=${locationStr}`;
211
+ const mobileActionsOptsMap = {
180
212
  collect: {
181
213
  clickOp: _samplingsPageUtils.COLLECT_SAMPLING_OP,
182
214
  value: _i18n.default.t('samplings_page.cancel_sampling')
@@ -198,26 +230,24 @@ var SamplingMobileModal = function SamplingMobileModal(_ref15) {
198
230
  value: _i18n.default.t('samplings_page.sampling_properties')
199
231
  }
200
232
  };
201
- var buildActionItem = function buildActionItem(key, props) {
202
- var opt = mobileActionsOptsMap[key];
203
- var disabled = props ? props['disabled'] : false;
204
- var clickOp = disabled ? false : opt['clickOp'];
233
+ const buildActionItem = (key, props) => {
234
+ const opt = mobileActionsOptsMap[key];
235
+ const disabled = props ? props['disabled'] : false;
236
+ const clickOp = disabled ? false : opt['clickOp'];
205
237
  return /*#__PURE__*/_react.default.createElement(ListGroupItemStyle, {
206
- onClick: function onClick() {
207
- return handleActionClick(clickOp);
208
- },
238
+ onClick: () => handleActionClick(clickOp),
209
239
  disabled: disabled
210
240
  }, opt['value']);
211
241
  };
212
- var mainButtonAction = function mainButtonAction(status) {
213
- var fmtStatus = (0, _SamplingStatusHelper.formatSamplingOperationStatus)(status.machine_name);
242
+ const mainButtonAction = status => {
243
+ const fmtStatus = (0, _SamplingStatusHelper.formatSamplingOperationStatus)(status.machine_name);
214
244
  if (['planned', 'active', 'ready'].includes(fmtStatus)) {
215
245
  return _samplingsPageUtils.COLLECT_SAMPLING_OP;
216
246
  }
217
247
  return _samplingsPageUtils.EDIT_PROPERTIES_OP;
218
248
  };
219
- var mainButtonTitle = function mainButtonTitle(status) {
220
- var fmtStatus = (0, _SamplingStatusHelper.formatSamplingOperationStatus)(status.machine_name);
249
+ const mainButtonTitle = status => {
250
+ const fmtStatus = (0, _SamplingStatusHelper.formatSamplingOperationStatus)(status.machine_name);
221
251
  if (['planned', 'active', 'ready'].includes(fmtStatus)) {
222
252
  return _i18n.default.t('samplings_page.collect');
223
253
  } else if (fmtStatus === 'collected') {
@@ -225,9 +255,9 @@ var SamplingMobileModal = function SamplingMobileModal(_ref15) {
225
255
  }
226
256
  return _i18n.default.t('samplings_page.sampling_properties');
227
257
  };
228
- var buildMobileActions = function buildMobileActions() {
229
- var fmtStatus = (0, _SamplingStatusHelper.formatSamplingOperationStatus)(status.machine_name);
230
- var result = [];
258
+ const buildMobileActions = () => {
259
+ const fmtStatus = (0, _SamplingStatusHelper.formatSamplingOperationStatus)(status.machine_name);
260
+ let result = [];
231
261
  if (['planned', 'active', 'ready'].includes(fmtStatus)) {
232
262
  result.push(buildActionItem('cancel'));
233
263
  } else if (fmtStatus === 'collected') {
@@ -253,7 +283,7 @@ var SamplingMobileModal = function SamplingMobileModal(_ref15) {
253
283
  src: _samplingModalPin.default,
254
284
  alt: "pin"
255
285
  }), /*#__PURE__*/_react.default.createElement("span", null, getAddress()), /*#__PURE__*/_react.default.createElement("a", {
256
- href: "https://www.waze.com/ul?".concat(locationStrWaze, "&navigate=yes"),
286
+ href: `https://www.waze.com/ul?${locationStrWaze}&navigate=yes`,
257
287
  target: "_blank",
258
288
  rel: "noreferrer"
259
289
  }, /*#__PURE__*/_react.default.createElement("img", {
@@ -261,7 +291,7 @@ var SamplingMobileModal = function SamplingMobileModal(_ref15) {
261
291
  src: _wazeIcon.default,
262
292
  alt: "waze-icon"
263
293
  })), /*#__PURE__*/_react.default.createElement("a", {
264
- href: "https://www.google.com/maps/dir/?api=1&origin=Current+Location&destination=".concat(locationStr),
294
+ href: `https://www.google.com/maps/dir/?api=1&origin=Current+Location&destination=${locationStr}`,
265
295
  rel: "noreferrer",
266
296
  target: "_blank"
267
297
  }, /*#__PURE__*/_react.default.createElement("img", {
@@ -269,7 +299,7 @@ var SamplingMobileModal = function SamplingMobileModal(_ref15) {
269
299
  src: _google_maps_icon.default,
270
300
  alt: "google-map-icon"
271
301
  }))), /*#__PURE__*/_react.default.createElement(ListGroupItemStyle, null, /*#__PURE__*/_react.default.createElement(ContactNumberRowStyle, {
272
- href: contactNumber ? "tel:".concat(contactNumber) : '#'
302
+ href: contactNumber ? `tel:${contactNumber}` : '#'
273
303
  }, /*#__PURE__*/_react.default.createElement("img", {
274
304
  src: _samplingModalPhone.default,
275
305
  alt: "pin"
@@ -277,10 +307,8 @@ var SamplingMobileModal = function SamplingMobileModal(_ref15) {
277
307
  variant: "primary",
278
308
  rounded: false,
279
309
  outline: true,
280
- onClick: function onClick() {
281
- return handleActionClick(mainButtonAction(status));
282
- }
310
+ onClick: () => handleActionClick(mainButtonAction(status))
283
311
  }, mainButtonTitle(status))));
284
312
  };
285
313
  exports.SamplingMobileModal = SamplingMobileModal;
286
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdEZvbnRhd2Vzb21lIiwiX3JlYWN0Qm9vdHN0cmFwIiwiX2ZyZWVTb2xpZFN2Z0ljb25zIiwiX3JlYWN0UmVkdXgiLCJfcmVhY3RSb3V0ZXJEb20iLCJfc2FtcGxpbmdNb2RhbFBob25lIiwiX3NhbXBsaW5nTW9kYWxQaW4iLCJfU2FtcGxpbmdTdGF0dXMiLCJfZ29vZ2xlX21hcHNfaWNvbiIsIl9pMThuIiwiX3dhemVJY29uIiwiX3VpS2l0IiwiX1NhbXBsaW5nU3RhdHVzSGVscGVyIiwiX2FjdGlvbnNDcmVhdG9yIiwiX3VybHMiLCJfc3R5bGVNb2R1bGUiLCJfc2FtcGxpbmdzUGFnZVV0aWxzIiwiU2FtcGxpbmdNb2JpbGVNb2RhbFN0eWxlIiwic3R5bGVkIiwiZGl2Iiwid2l0aENvbmZpZyIsImRpc3BsYXlOYW1lIiwiY29tcG9uZW50SWQiLCJfcmVmIiwidGhlbWUiLCJjb2xvclNjaGVtZSIsInByaW1hcnkiLCJwMSIsIkxpc3RHcm91cFN0eWxlIiwiTGlzdEdyb3VwIiwiTW9kYWxDb250YWluZXJTdHlsZSIsIl9yZWYyIiwiekluZGV4ZXMiLCJtb2RhbCIsIkxpc3RHcm91cEl0ZW1TdHlsZSIsIkl0ZW0iLCJfcmVmMyIsImZvbnRTaXplIiwibWQiLCJfcmVmNCIsImRpc2FibGVkIiwibmF0dXJhbCIsIm41MCIsInNhbXBsaW5nc1BhZ2UiLCJtb2JpbGUiLCJtb2RhbExpc3RJdGVtQ29sb3IiLCJSb3dJbmZvU3R5bGUiLCJfcmVmNSIsIm4xIiwiSW5mb0xpbmVTdHlsZSIsIl9yZWY2IiwibjYwIiwiT3ZlcmxheVN0eWxlIiwiX3JlZjciLCJtb2RhbE92ZXJsYXlCYWNrZ3JvdW5kIiwiX3JlZjgiLCJNYWluQnV0dG9uU3R5bGUiLCJCdXR0b24iLCJfcmVmOSIsIlNpdGVTdHlsZSIsIkNvbnRhY3ROdW1iZXJSb3dTdHlsZSIsImEiLCJTaXRlRGV0YWlsc1N0eWxlIiwiX3JlZjEwIiwiU2l0ZURldGFpbHNGaXJzdFN0eWxlIiwiU2l0ZURldGFpbHNTZWNvbmRTdHlsZSIsIkJvdHRvbVNlY3Rpb25TdHlsZSIsIlN0YXR1c0NvbnRhaW5lclN0eWxlIiwiYXR0cnMiLCJwcm9wcyIsImlzTW9iaWxlUHJvcGVydGllcyIsIl9yZWYxMSIsIkNsb3NlVG9wQnV0dG9uU3R5bGUiLCJfcmVmMTIiLCJuMTAwIiwiX3JlZjEzIiwiX3JlZjE0IiwiU2FtcGxpbmdNb2JpbGVNb2RhbCIsIl9yZWYxNSIsIm9uQ2xvc2VNb2RhbCIsInNhbXBsaW5nIiwiY29udGFjdCIsImNvbnRhY3ROdW1iZXIiLCJjb250YWN0X251bWJlciIsImxhYk5hbWUiLCJsYWJfbmFtZSIsIm1hbmhvbGVBZGRyZXNzIiwibWFuaG9sZV9hZGRyZXNzIiwic3RhdHVzIiwic2l0ZSIsInNhbXBsaW5nSWQiLCJzYW1wbGluZ19pZCIsInNhbXBsaW5nRGF0ZSIsInNhbXBsaW5nX2RhdGUiLCJzYW1wbGluZ1RpbWUiLCJzYW1wbGluZ190aW1lIiwiaGlzdG9yeSIsInVzZUhpc3RvcnkiLCJkaXNwYXRjaCIsInVzZURpc3BhdGNoIiwibmF2Q29udGV4dCIsInVzZVNlbGVjdG9yIiwic3RhdGUiLCJuYXZfY29udGV4dF9kYXRhIiwid2F0ZXJBdXRob3JpdHlJZCIsImdsb2JhbF9kYXRhIiwiaGFuZGxlQWN0aW9uQ2xpY2siLCJvcCIsImlkIiwiZ2V0U2FtcGxpbmdCeUlkIiwic2FtcGxpbmdQcm9wZXJ0aWVzVXJsUGFyYW1zIiwidXJscyIsImxvY2FsZSIsInB1c2giLCJzYW1wbGluZ1Byb3BlcnRpZXNSb3V0ZSIsInVybCIsImdldEFkZHJlc3MiLCJNT0JJTEVfTU9EQUxfVEVYVF9MRU5HVEgiLCJ0ZXh0IiwibGVuZ3RoIiwic2xpY2UiLCJsYXRfbG5nIiwibG9jYXRpb25TdHIiLCJjb25jYXQiLCJsb2NhdGlvblN0cldhemUiLCJtb2JpbGVBY3Rpb25zT3B0c01hcCIsImNvbGxlY3QiLCJjbGlja09wIiwiQ09MTEVDVF9TQU1QTElOR19PUCIsInZhbHVlIiwiaTE4biIsInQiLCJjYW5jZWwiLCJDQU5DRUxfU0FNUExJTkdfT1AiLCJyZXZlcnRfY2FuY2VsIiwiUkVWRVJUX0NBTkNFTExBVElPTiIsImRlbGV0ZSIsIkRFTEVURV9TQU1QTElOR19PUCIsInByb3BlcnRpZXNfZWRpdCIsIkVESVRfUFJPUEVSVElFU19PUCIsImJ1aWxkQWN0aW9uSXRlbSIsImtleSIsIm9wdCIsImRlZmF1bHQiLCJjcmVhdGVFbGVtZW50Iiwib25DbGljayIsIm1haW5CdXR0b25BY3Rpb24iLCJmbXRTdGF0dXMiLCJmb3JtYXRTYW1wbGluZ09wZXJhdGlvblN0YXR1cyIsIm1hY2hpbmVfbmFtZSIsImluY2x1ZGVzIiwibWFpbkJ1dHRvblRpdGxlIiwiYnVpbGRNb2JpbGVBY3Rpb25zIiwicmVzdWx0IiwiRm9udEF3ZXNvbWVJY29uIiwiaWNvbiIsImZhVGltZXMiLCJzcmMiLCJQaW4iLCJhbHQiLCJocmVmIiwidGFyZ2V0IiwicmVsIiwiY2xhc3NOYW1lIiwiU3R5bGUiLCJ3YXplTGluayIsIndhemVJY29uIiwiZ29vZ2xlTGluayIsImdvb2dsZU1hcHNJY29uIiwiUGhvbmUiLCJ2YXJpYW50Iiwicm91bmRlZCIsIm91dGxpbmUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhZ2VzL1NhbXBsaW5nc1BhZ2UvU2FtcGxpbmdNb2JpbGVNb2RhbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IEZDLCBSZWFjdEVsZW1lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzL21hY3JvJztcbmltcG9ydCB7IEZvbnRBd2Vzb21lSWNvbiB9IGZyb20gJ0Bmb3J0YXdlc29tZS9yZWFjdC1mb250YXdlc29tZSc7XG5pbXBvcnQgeyBMaXN0R3JvdXAgfSBmcm9tICdyZWFjdC1ib290c3RyYXAvJztcbmltcG9ydCB7IGZhVGltZXMgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IHsgdXNlSGlzdG9yeSB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuXG5pbXBvcnQgUGhvbmUgZnJvbSAnc3JjL2Fzc2V0cy9pY29ucy9zYW1wbGluZy1tb2RhbC1waG9uZS5zdmcnO1xuaW1wb3J0IFBpbiBmcm9tICdzcmMvYXNzZXRzL2ljb25zL3NhbXBsaW5nLW1vZGFsLXBpbi5zdmcnO1xuaW1wb3J0IFNhbXBsaW5nU3RhdHVzIGZyb20gJ3NyYy91aS1raXQvU2FtcGxpbmdTdGF0dXMvU2FtcGxpbmdTdGF0dXMnO1xuaW1wb3J0IGdvb2dsZU1hcHNJY29uIGZyb20gJ3NyYy9hc3NldHMvaWNvbnMvbmF2aWdhdGlvbi9nb29nbGVfbWFwc19pY29uLnBuZyc7XG5pbXBvcnQgaTE4biBmcm9tICdzcmMvdXRpbGl0aWVzL2kxOG4nO1xuaW1wb3J0IHdhemVJY29uIGZyb20gJ3NyYy9hc3NldHMvaWNvbnMvbmF2aWdhdGlvbi93YXplLWljb24ucG5nJztcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJ3NyYy91aS1raXQnO1xuaW1wb3J0IHsgYXBwUmVkdWNlciB9IGZyb20gJ3NyYy9zdG9yZS9yb290UmVkdWNlcic7XG5pbXBvcnQgeyBmb3JtYXRTYW1wbGluZ09wZXJhdGlvblN0YXR1cyB9IGZyb20gJ3NyYy91aS1raXQvU2FtcGxpbmdTdGF0dXMvU2FtcGxpbmdTdGF0dXNIZWxwZXInO1xuaW1wb3J0IHsgZ2V0U2FtcGxpbmdCeUlkIH0gZnJvbSAnc3JjL3N0b3JlL3NhbXBsaW5ncy9hY3Rpb25zQ3JlYXRvcic7XG5pbXBvcnQgeyB1cmxzIH0gZnJvbSAnc3JjL3V0aWxpdGllcy91cmxzJztcblxuaW1wb3J0IFN0eWxlIGZyb20gJy4vc3R5bGUubW9kdWxlLnNjc3MnO1xuXG5pbXBvcnQge1xuICBDQU5DRUxfU0FNUExJTkdfT1AsXG4gIENPTExFQ1RfU0FNUExJTkdfT1AsXG4gIERFTEVURV9TQU1QTElOR19PUCxcbiAgRURJVF9QUk9QRVJUSUVTX09QLFxuICBNT0JJTEVfTU9EQUxfVEVYVF9MRU5HVEgsXG4gIFJFVkVSVF9DQU5DRUxMQVRJT04sXG4gIFNhbXBsaW5nRGF0YSxcbn0gZnJvbSAnLi9zYW1wbGluZ3NQYWdlVXRpbHMnO1xuXG5pbnRlcmZhY2UgU2FtcGxpbmdNb2JpbGVQcm9wcyB7XG4gIG9uQ2xvc2VNb2RhbDogKCkgPT4gdm9pZDtcbiAgc2FtcGxpbmc6IFNhbXBsaW5nRGF0YTtcbiAgaXNNb2JpbGVQcm9wZXJ0aWVzPzogYm9vbGVhbjtcbn1cbmNvbnN0IFNhbXBsaW5nTW9iaWxlTW9kYWxTdHlsZSA9IHN0eWxlZC5kaXZgXG4gICoge1xuICAgIGZvbnQtZmFtaWx5OiBOdW5pdG8sIEdpbHJveSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtcbiAgfVxuICAuZHJvcHJpZ2h0IHtcbiAgICBidXR0b24ge1xuICAgICAgd2lkdGg6IDEwMHZ3O1xuICAgICAgOjphZnRlciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaW1nIHtcbiAgICB3aWR0aDogMThweDtcbiAgICBoZWlnaHQ6IDE4cHg7XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JTY2hlbWUucHJpbWFyeS5wMX07XG4gIH1cbmA7XG5cbmNvbnN0IExpc3RHcm91cFN0eWxlID0gc3R5bGVkKExpc3RHcm91cClgXG4gIC8qIG92ZXJyaWRlIHNlcnZlciBzdHlsZSAqL1xuICBwYWRkaW5nOiAwIDEwcHggIWltcG9ydGFudDtcbiAgYm9yZGVyLXJhZGl1czogMTRweDtcbmA7XG5jb25zdCBNb2RhbENvbnRhaW5lclN0eWxlID0gc3R5bGVkLmRpdmBcbiAgcG9zaXRpb246IGZpeGVkO1xuICB3aWR0aDogMTAwdnc7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgei1pbmRleDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS56SW5kZXhlcy5tb2RhbH07XG5gO1xuXG5jb25zdCBMaXN0R3JvdXBJdGVtU3R5bGUgPSBzdHlsZWQoTGlzdEdyb3VwLkl0ZW0pYFxuICBmb250LXNpemU6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuZm9udFNpemUubWR9O1xuICBoZWlnaHQ6IDU1cHggIWltcG9ydGFudDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiA1cHg7XG4gIGJvcmRlci1ib3R0b206IDAuNXB4IHNvbGlkICM4NThhOTQ3ZCAhaW1wb3J0YW50IDtcbiAgY29sb3I6ICR7KHsgZGlzYWJsZWQsIHRoZW1lIH0pID0+XG4gICAgZGlzYWJsZWRcbiAgICAgID8gdGhlbWUuY29sb3JTY2hlbWUubmF0dXJhbC5uNTBcbiAgICAgIDogdGhlbWUuc2FtcGxpbmdzUGFnZS5tb2JpbGUubW9kYWxMaXN0SXRlbUNvbG9yfSAhaW1wb3J0YW50O1xuYDtcblxuY29uc3QgUm93SW5mb1N0eWxlID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogYmxvY2s7XG4gIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JTY2hlbWUubmF0dXJhbC5uMX07XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDE0cHg7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAxNHB4O1xuICBib3JkZXItYm90dG9tOiAwLjVweCBzb2xpZCAjODU4YTk0N2Q7XG4gIHBhZGRpbmc6IDIycHggMzJweCAwO1xuYDtcblxuY29uc3QgSW5mb0xpbmVTdHlsZSA9IHN0eWxlZC5kaXZgXG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjODU4YTk0N2Q7XG4gIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9yU2NoZW1lLm5hdHVyYWwubjYwfTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMTZweCAwO1xuYDtcblxuY29uc3QgT3ZlcmxheVN0eWxlID0gc3R5bGVkLmRpdmBcbiAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNhbXBsaW5nc1BhZ2UubW9iaWxlLm1vZGFsT3ZlcmxheUJhY2tncm91bmR9O1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDB2aDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuekluZGV4ZXMubW9kYWx9O1xuYDtcblxuY29uc3QgTWFpbkJ1dHRvblN0eWxlID0gc3R5bGVkKEJ1dHRvbilgXG4gIGZvbnQtc2l6ZTogMThweDtcbiAgbWFyZ2luOiAxMHB4O1xuICB3aWR0aDogY2FsYygxMDB2dyAtIDIwcHgpO1xuICBib3JkZXI6IG5vbmU7XG4gIGhlaWdodDogNTNweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvclNjaGVtZS5uYXR1cmFsLm4xfSAhaW1wb3J0YW50O1xuICBib3JkZXItcmFkaXVzOiAxNHB4ICFpbXBvcnRhbnQ7XG5gO1xuXG5jb25zdCBTaXRlU3R5bGUgPSBzdHlsZWQuZGl2YFxuICBmb250LWZhbWlseTogTnVuaXRvLCBHaWxyb3ksIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBmb250LXNpemU6IDE2cHg7XG4gIGNvbG9yOiAjMDAwO1xuYDtcblxuY29uc3QgQ29udGFjdE51bWJlclJvd1N0eWxlID0gc3R5bGVkLmFgXG4gIGltZyB7XG4gICAgbWFyZ2luOiAwIDVweDtcbiAgfVxuYDtcblxuY29uc3QgU2l0ZURldGFpbHNTdHlsZSA9IHN0eWxlZC5kaXZgXG4gIGZvbnQtZmFtaWx5OiBOdW5pdG8sIEdpbHJveSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIG1hcmdpbjogMCAwIDEwcHg7XG4gIGxpbmUtaGVpZ2h0OiAzMHB4O1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvclNjaGVtZS5uYXR1cmFsLm42MH07XG5gO1xuXG5jb25zdCBTaXRlRGV0YWlsc0ZpcnN0U3R5bGUgPSBzdHlsZWQuZGl2YGA7XG5cbmNvbnN0IFNpdGVEZXRhaWxzU2Vjb25kU3R5bGUgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gIG1hcmdpbjogNXB4IDAgMDtcbmA7XG5cbmNvbnN0IEJvdHRvbVNlY3Rpb25TdHlsZSA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGdhcDogMTBweDtcbmA7XG5cbmludGVyZmFjZSBTYW1wbGluZ3NNb2JpbGVTdHlsZVByb3BzIHtcbiAgaXNNb2JpbGVQcm9wZXJ0aWVzPzogYm9vbGVhbjtcbn1cblxuY29uc3QgU3RhdHVzQ29udGFpbmVyU3R5bGUgPSBzdHlsZWQuZGl2LmF0dHJzKFxuICAocHJvcHM6IFNhbXBsaW5nc01vYmlsZVN0eWxlUHJvcHMpID0+ICh7XG4gICAgaXNNb2JpbGVQcm9wZXJ0aWVzOiBwcm9wcy5pc01vYmlsZVByb3BlcnRpZXMsXG4gIH0pLFxuKWBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDRweDtcbiAgaW1nIHtcbiAgICBoZWlnaHQ6IDE0cHg7XG4gICAgd2lkdGg6IDE0cHg7XG4gIH1cbiAgJHsoeyBpc01vYmlsZVByb3BlcnRpZXMgfSkgPT5cbiAgICBpc01vYmlsZVByb3BlcnRpZXMgJiZcbiAgICBgXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgYH1cbmA7XG5cbmNvbnN0IENsb3NlVG9wQnV0dG9uU3R5bGUgPSBzdHlsZWQuZGl2YFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAtNDBweDtcbiAgcmlnaHQ6IDEwcHg7XG4gIHdpZHRoOiAzMHB4O1xuICBoZWlnaHQ6IDMwcHg7XG4gIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JTY2hlbWUubmF0dXJhbC5uMTAwfTtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JTY2hlbWUubmF0dXJhbC5uMX07XG4gIGJvcmRlcjogMnB4IHNvbGlkICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JTY2hlbWUubmF0dXJhbC5uMTAwfTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgbGluZS1oZWlnaHQ6IDEuNDRlbTtcbiAgbWFyZ2luOiAwIDhweCAwIDA7XG4gIHBhZGRpbmc6IDJweCAwIDA7XG5gO1xuXG5leHBvcnQgY29uc3QgU2FtcGxpbmdNb2JpbGVNb2RhbDogRkM8U2FtcGxpbmdNb2JpbGVQcm9wcz4gPSAoe1xuICBvbkNsb3NlTW9kYWwsXG4gIHNhbXBsaW5nLFxuICBpc01vYmlsZVByb3BlcnRpZXMsXG59KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjb250YWN0LFxuICAgIGNvbnRhY3RfbnVtYmVyOiBjb250YWN0TnVtYmVyLFxuICAgIGxhYl9uYW1lOiBsYWJOYW1lLFxuICAgIG1hbmhvbGVfYWRkcmVzczogbWFuaG9sZUFkZHJlc3MsXG4gICAgc3RhdHVzLFxuICAgIHNpdGUsXG4gICAgc2FtcGxpbmdfaWQ6IHNhbXBsaW5nSWQsXG4gICAgc2FtcGxpbmdfZGF0ZTogc2FtcGxpbmdEYXRlLFxuICAgIHNhbXBsaW5nX3RpbWU6IHNhbXBsaW5nVGltZSxcbiAgfSA9IHNhbXBsaW5nO1xuICBjb25zdCBoaXN0b3J5ID0gdXNlSGlzdG9yeSgpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IG5hdkNvbnRleHQgPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGU6IFJldHVyblR5cGU8dHlwZW9mIGFwcFJlZHVjZXI+KSA9PiBzdGF0ZS5uYXZfY29udGV4dF9kYXRhLm5hdkNvbnRleHQsXG4gICk7XG5cbiAgY29uc3Qgd2F0ZXJBdXRob3JpdHlJZCA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZTogUmV0dXJuVHlwZTx0eXBlb2YgYXBwUmVkdWNlcj4pID0+XG4gICAgICBzdGF0ZS5nbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eUlkLFxuICApO1xuXG4gIGNvbnN0IGhhbmRsZUFjdGlvbkNsaWNrID0gKG9wOiBzdHJpbmcgfCBudWxsKSA9PiB7XG4gICAgaWYgKCFvcCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgaWQgfSA9IHNhbXBsaW5nO1xuICAgIGRpc3BhdGNoKGdldFNhbXBsaW5nQnlJZChpZCkpO1xuICAgIGNvbnN0IHNhbXBsaW5nUHJvcGVydGllc1VybFBhcmFtcyA9IHVybHMoe1xuICAgICAgaWQ6IGlkLFxuICAgICAgbG9jYWxlOiBuYXZDb250ZXh0LmxvY2FsZSxcbiAgICAgIHdhdGVyQXV0aG9yaXR5SWQ6IHdhdGVyQXV0aG9yaXR5SWQsXG4gICAgICBvcDogb3AsXG4gICAgfSk7XG4gICAgaGlzdG9yeS5wdXNoKFxuICAgICAgc2FtcGxpbmdQcm9wZXJ0aWVzVXJsUGFyYW1zLnNhbXBsaW5nc1BhZ2Uuc2FtcGxpbmdQcm9wZXJ0aWVzUm91dGUudXJsLFxuICAgICk7XG4gIH07XG5cbiAgY29uc3QgZ2V0QWRkcmVzcyA9ICgpID0+IHtcbiAgICByZXR1cm4gTU9CSUxFX01PREFMX1RFWFRfTEVOR1RIIDwgbWFuaG9sZUFkZHJlc3MudGV4dC5sZW5ndGhcbiAgICAgID8gbWFuaG9sZUFkZHJlc3MudGV4dC5zbGljZSgwLCBNT0JJTEVfTU9EQUxfVEVYVF9MRU5HVEgpICsgJ1xcdTIwMjYnXG4gICAgICA6IG1hbmhvbGVBZGRyZXNzLnRleHQ7XG4gIH07XG5cbiAgY29uc3QgeyBsYXRfbG5nIH0gPSBtYW5ob2xlQWRkcmVzcztcbiAgY29uc3QgbG9jYXRpb25TdHIgPSBgJHtsYXRfbG5nWzBdfSwke2xhdF9sbmdbMV19YDtcbiAgY29uc3QgbG9jYXRpb25TdHJXYXplID0gYGxsPSR7bG9jYXRpb25TdHJ9YDtcblxuICBjb25zdCBtb2JpbGVBY3Rpb25zT3B0c01hcDogeyBba2V5OiBzdHJpbmddOiBPYmplY3QgfSA9IHtcbiAgICBjb2xsZWN0OiB7XG4gICAgICBjbGlja09wOiBDT0xMRUNUX1NBTVBMSU5HX09QLFxuICAgICAgdmFsdWU6IGkxOG4udCgnc2FtcGxpbmdzX3BhZ2UuY2FuY2VsX3NhbXBsaW5nJyksXG4gICAgfSxcbiAgICBjYW5jZWw6IHtcbiAgICAgIGNsaWNrT3A6IENBTkNFTF9TQU1QTElOR19PUCxcbiAgICAgIHZhbHVlOiBpMThuLnQoJ3NhbXBsaW5nc19wYWdlLmNhbmNlbF9zYW1wbGluZycpLFxuICAgIH0sXG4gICAgcmV2ZXJ0X2NhbmNlbDoge1xuICAgICAgY2xpY2tPcDogUkVWRVJUX0NBTkNFTExBVElPTixcbiAgICAgIHZhbHVlOiBpMThuLnQoJ3NhbXBsaW5nc19wYWdlLnJldmVydF9jYW5jZWxsYXRpb24nKSxcbiAgICB9LFxuICAgIGRlbGV0ZToge1xuICAgICAgY2xpY2tPcDogREVMRVRFX1NBTVBMSU5HX09QLFxuICAgICAgdmFsdWU6IGkxOG4udCgnc2FtcGxpbmdzX3BhZ2UuZGVsZXRlJyksXG4gICAgfSxcbiAgICBwcm9wZXJ0aWVzX2VkaXQ6IHtcbiAgICAgIGNsaWNrT3A6IEVESVRfUFJPUEVSVElFU19PUCxcbiAgICAgIHZhbHVlOiBpMThuLnQoJ3NhbXBsaW5nc19wYWdlLnNhbXBsaW5nX3Byb3BlcnRpZXMnKSxcbiAgICB9LFxuICB9O1xuXG4gIGNvbnN0IGJ1aWxkQWN0aW9uSXRlbSA9IChrZXk6IHN0cmluZywgcHJvcHM/OiBvYmplY3QpOiBSZWFjdEVsZW1lbnQgPT4ge1xuICAgIGNvbnN0IG9wdCA9IG1vYmlsZUFjdGlvbnNPcHRzTWFwW2tleV07XG4gICAgY29uc3QgZGlzYWJsZWQgPSBwcm9wcyA/IHByb3BzWydkaXNhYmxlZCddIDogZmFsc2U7XG4gICAgY29uc3QgY2xpY2tPcCA9IGRpc2FibGVkID8gZmFsc2UgOiBvcHRbJ2NsaWNrT3AnXTtcbiAgICByZXR1cm4gKFxuICAgICAgPExpc3RHcm91cEl0ZW1TdHlsZVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVBY3Rpb25DbGljayhjbGlja09wKX1cbiAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgPlxuICAgICAgICB7b3B0Wyd2YWx1ZSddfVxuICAgICAgPC9MaXN0R3JvdXBJdGVtU3R5bGU+XG4gICAgKTtcbiAgfTtcblxuICBjb25zdCBtYWluQnV0dG9uQWN0aW9uID0gKHN0YXR1cykgPT4ge1xuICAgIGNvbnN0IGZtdFN0YXR1cyA9IGZvcm1hdFNhbXBsaW5nT3BlcmF0aW9uU3RhdHVzKHN0YXR1cy5tYWNoaW5lX25hbWUpO1xuICAgIGlmIChbJ3BsYW5uZWQnLCAnYWN0aXZlJywgJ3JlYWR5J10uaW5jbHVkZXMoZm10U3RhdHVzKSkge1xuICAgICAgcmV0dXJuIENPTExFQ1RfU0FNUExJTkdfT1A7XG4gICAgfVxuICAgIHJldHVybiBFRElUX1BST1BFUlRJRVNfT1A7XG4gIH07XG5cbiAgY29uc3QgbWFpbkJ1dHRvblRpdGxlID0gKHN0YXR1cykgPT4ge1xuICAgIGNvbnN0IGZtdFN0YXR1cyA9IGZvcm1hdFNhbXBsaW5nT3BlcmF0aW9uU3RhdHVzKHN0YXR1cy5tYWNoaW5lX25hbWUpO1xuICAgIGlmIChbJ3BsYW5uZWQnLCAnYWN0aXZlJywgJ3JlYWR5J10uaW5jbHVkZXMoZm10U3RhdHVzKSkge1xuICAgICAgcmV0dXJuIGkxOG4udCgnc2FtcGxpbmdzX3BhZ2UuY29sbGVjdCcpO1xuICAgIH0gZWxzZSBpZiAoZm10U3RhdHVzID09PSAnY29sbGVjdGVkJykge1xuICAgICAgcmV0dXJuIGkxOG4udCgnc2FtcGxpbmdzX3BhZ2Uuc2FtcGxpbmdfcHJvcGVydGllcycpO1xuICAgIH1cbiAgICByZXR1cm4gaTE4bi50KCdzYW1wbGluZ3NfcGFnZS5zYW1wbGluZ19wcm9wZXJ0aWVzJyk7XG4gIH07XG5cbiAgY29uc3QgYnVpbGRNb2JpbGVBY3Rpb25zID0gKCkgPT4ge1xuICAgIGNvbnN0IGZtdFN0YXR1cyA9IGZvcm1hdFNhbXBsaW5nT3BlcmF0aW9uU3RhdHVzKHN0YXR1cy5tYWNoaW5lX25hbWUpO1xuICAgIGxldCByZXN1bHQ6IFJlYWN0RWxlbWVudFtdID0gW107XG5cbiAgICBpZiAoWydwbGFubmVkJywgJ2FjdGl2ZScsICdyZWFkeSddLmluY2x1ZGVzKGZtdFN0YXR1cykpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGJ1aWxkQWN0aW9uSXRlbSgnY2FuY2VsJykpO1xuICAgIH0gZWxzZSBpZiAoZm10U3RhdHVzID09PSAnY29sbGVjdGVkJykge1xuICAgICAgcmVzdWx0LnB1c2goYnVpbGRBY3Rpb25JdGVtKCdjYW5jZWwnKSk7XG4gICAgfSBlbHNlIGlmIChmbXRTdGF0dXMgPT09ICdjYW5jZWxlZCcpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGJ1aWxkQWN0aW9uSXRlbSgncmV2ZXJ0X2NhbmNlbCcpKTtcbiAgICB9IGVsc2UgaWYgKGZtdFN0YXR1cyA9PT0gJ2NvbXBsZXRlZCcpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGJ1aWxkQWN0aW9uSXRlbSgnY2FuY2VsJywgeyBkaXNhYmxlZDogdHJ1ZSB9KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxTYW1wbGluZ01vYmlsZU1vZGFsU3R5bGU+XG4gICAgICA8T3ZlcmxheVN0eWxlIC8+XG4gICAgICA8TW9kYWxDb250YWluZXJTdHlsZT5cbiAgICAgICAgPExpc3RHcm91cFN0eWxlPlxuICAgICAgICAgIDxSb3dJbmZvU3R5bGU+XG4gICAgICAgICAgICA8Q2xvc2VUb3BCdXR0b25TdHlsZSBvbkNsaWNrPXtvbkNsb3NlTW9kYWx9PlxuICAgICAgICAgICAgICA8Rm9udEF3ZXNvbWVJY29uIGljb249e2ZhVGltZXN9IC8+XG4gICAgICAgICAgICA8L0Nsb3NlVG9wQnV0dG9uU3R5bGU+XG4gICAgICAgICAgICA8U2l0ZURldGFpbHNTdHlsZT5cbiAgICAgICAgICAgICAgPFNpdGVEZXRhaWxzRmlyc3RTdHlsZT5cbiAgICAgICAgICAgICAgICA8U2l0ZVN0eWxlPntzaXRlfTwvU2l0ZVN0eWxlPlxuICAgICAgICAgICAgICAgIDxkaXY+e3NhbXBsaW5nSWR9PC9kaXY+XG4gICAgICAgICAgICAgIDwvU2l0ZURldGFpbHNGaXJzdFN0eWxlPlxuICAgICAgICAgICAgICA8U2l0ZURldGFpbHNTZWNvbmRTdHlsZT5cbiAgICAgICAgICAgICAgICA8U3RhdHVzQ29udGFpbmVyU3R5bGUgaXNNb2JpbGVQcm9wZXJ0aWVzPXtpc01vYmlsZVByb3BlcnRpZXN9PlxuICAgICAgICAgICAgICAgICAgPFNhbXBsaW5nU3RhdHVzIHN0YXR1cz17c3RhdHVzfSAvPlxuICAgICAgICAgICAgICAgIDwvU3RhdHVzQ29udGFpbmVyU3R5bGU+XG4gICAgICAgICAgICAgICAgPEJvdHRvbVNlY3Rpb25TdHlsZT5cbiAgICAgICAgICAgICAgICAgIDxkaXY+e3NhbXBsaW5nRGF0ZX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+e3NhbXBsaW5nVGltZX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L0JvdHRvbVNlY3Rpb25TdHlsZT5cbiAgICAgICAgICAgICAgPC9TaXRlRGV0YWlsc1NlY29uZFN0eWxlPlxuICAgICAgICAgICAgPC9TaXRlRGV0YWlsc1N0eWxlPlxuICAgICAgICAgICAgPEluZm9MaW5lU3R5bGU+XG4gICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgIHtpMThuLnQoJ3NhbXBsaW5nc19wYWdlLnNhbXBsaW5nc190YWJsZV9jb2xzLmxhYl9uYW1lJyl9XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAge2xhYk5hbWUgfHwgaTE4bi50KCdzYW1wbGluZ3NfcGFnZS53YXNfbm90X3NlbGVjdGVkJyl9XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvSW5mb0xpbmVTdHlsZT5cbiAgICAgICAgICA8L1Jvd0luZm9TdHlsZT5cblxuICAgICAgICAgIDxMaXN0R3JvdXBJdGVtU3R5bGU+XG4gICAgICAgICAgICA8aW1nIHNyYz17UGlufSBhbHQ9XCJwaW5cIiAvPlxuICAgICAgICAgICAgPHNwYW4+e2dldEFkZHJlc3MoKX08L3NwYW4+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBocmVmPXtgaHR0cHM6Ly93d3cud2F6ZS5jb20vdWw/JHtsb2NhdGlvblN0cldhemV9Jm5hdmlnYXRlPXllc2B9XG4gICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgIHJlbD1cIm5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW1nIGNsYXNzTmFtZT17U3R5bGUud2F6ZUxpbmt9IHNyYz17d2F6ZUljb259IGFsdD1cIndhemUtaWNvblwiIC8+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBocmVmPXtgaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9tYXBzL2Rpci8/YXBpPTEmb3JpZ2luPUN1cnJlbnQrTG9jYXRpb24mZGVzdGluYXRpb249JHtsb2NhdGlvblN0cn1gfVxuICAgICAgICAgICAgICByZWw9XCJub3JlZmVycmVyXCJcbiAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17U3R5bGUuZ29vZ2xlTGlua31cbiAgICAgICAgICAgICAgICBzcmM9e2dvb2dsZU1hcHNJY29ufVxuICAgICAgICAgICAgICAgIGFsdD1cImdvb2dsZS1tYXAtaWNvblwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgPC9MaXN0R3JvdXBJdGVtU3R5bGU+XG5cbiAgICAgICAgICA8TGlzdEdyb3VwSXRlbVN0eWxlPlxuICAgICAgICAgICAgPENvbnRhY3ROdW1iZXJSb3dTdHlsZVxuICAgICAgICAgICAgICBocmVmPXtjb250YWN0TnVtYmVyID8gYHRlbDoke2NvbnRhY3ROdW1iZXJ9YCA6ICcjJ31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGltZyBzcmM9e1Bob25lfSBhbHQ9XCJwaW5cIiAvPlxuICAgICAgICAgICAgICB7Y29udGFjdCB8fCBpMThuLnQoJ3NhbXBsaW5nc19wYWdlLm5vX2NvbnRhY3QnKX1cbiAgICAgICAgICAgIDwvQ29udGFjdE51bWJlclJvd1N0eWxlPlxuICAgICAgICAgIDwvTGlzdEdyb3VwSXRlbVN0eWxlPlxuXG4gICAgICAgICAge2J1aWxkTW9iaWxlQWN0aW9ucygpfVxuICAgICAgICA8L0xpc3RHcm91cFN0eWxlPlxuICAgICAgICA8TWFpbkJ1dHRvblN0eWxlXG4gICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgIHJvdW5kZWQ9e2ZhbHNlfVxuICAgICAgICAgIG91dGxpbmVcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVBY3Rpb25DbGljayhtYWluQnV0dG9uQWN0aW9uKHN0YXR1cykpfVxuICAgICAgICA+XG4gICAgICAgICAge21haW5CdXR0b25UaXRsZShzdGF0dXMpfVxuICAgICAgICA8L01haW5CdXR0b25TdHlsZT5cbiAgICAgIDwvTW9kYWxDb250YWluZXJTdHls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
314
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdEZvbnRhd2Vzb21lIiwiX3JlYWN0Qm9vdHN0cmFwIiwiX2ZyZWVTb2xpZFN2Z0ljb25zIiwiX3JlYWN0UmVkdXgiLCJfcmVhY3RSb3V0ZXJEb20iLCJfc2FtcGxpbmdNb2RhbFBob25lIiwiX3NhbXBsaW5nTW9kYWxQaW4iLCJfU2FtcGxpbmdTdGF0dXMiLCJfZ29vZ2xlX21hcHNfaWNvbiIsIl9pMThuIiwiX3dhemVJY29uIiwiX3VpS2l0IiwiX1NhbXBsaW5nU3RhdHVzSGVscGVyIiwiX2FjdGlvbnNDcmVhdG9yIiwiX3VybHMiLCJfc3R5bGVNb2R1bGUiLCJfc2FtcGxpbmdzUGFnZVV0aWxzIiwiU2FtcGxpbmdNb2JpbGVNb2RhbFN0eWxlIiwic3R5bGVkIiwiZGl2Iiwid2l0aENvbmZpZyIsImRpc3BsYXlOYW1lIiwiY29tcG9uZW50SWQiLCJfcmVmIiwidGhlbWUiLCJjb2xvclNjaGVtZSIsInByaW1hcnkiLCJwMSIsIkxpc3RHcm91cFN0eWxlIiwiTGlzdEdyb3VwIiwiTW9kYWxDb250YWluZXJTdHlsZSIsIl9yZWYyIiwiekluZGV4ZXMiLCJtb2RhbCIsIkxpc3RHcm91cEl0ZW1TdHlsZSIsIkl0ZW0iLCJfcmVmMyIsImZvbnRTaXplIiwibWQiLCJfcmVmNCIsImRpc2FibGVkIiwibmF0dXJhbCIsIm41MCIsInNhbXBsaW5nc1BhZ2UiLCJtb2JpbGUiLCJtb2RhbExpc3RJdGVtQ29sb3IiLCJSb3dJbmZvU3R5bGUiLCJfcmVmNSIsIm4xIiwiSW5mb0xpbmVTdHlsZSIsIl9yZWY2IiwibjYwIiwiT3ZlcmxheVN0eWxlIiwiX3JlZjciLCJtb2RhbE92ZXJsYXlCYWNrZ3JvdW5kIiwiX3JlZjgiLCJNYWluQnV0dG9uU3R5bGUiLCJCdXR0b24iLCJfcmVmOSIsIlNpdGVTdHlsZSIsIkNvbnRhY3ROdW1iZXJSb3dTdHlsZSIsImEiLCJTaXRlRGV0YWlsc1N0eWxlIiwiX3JlZjEwIiwiU2l0ZURldGFpbHNGaXJzdFN0eWxlIiwiU2l0ZURldGFpbHNTZWNvbmRTdHlsZSIsIkJvdHRvbVNlY3Rpb25TdHlsZSIsIlN0YXR1c0NvbnRhaW5lclN0eWxlIiwiYXR0cnMiLCJwcm9wcyIsImlzTW9iaWxlUHJvcGVydGllcyIsIl9yZWYxMSIsIkNsb3NlVG9wQnV0dG9uU3R5bGUiLCJfcmVmMTIiLCJuMTAwIiwiX3JlZjEzIiwiX3JlZjE0IiwiU2FtcGxpbmdNb2JpbGVNb2RhbCIsIl9yZWYxNSIsIm9uQ2xvc2VNb2RhbCIsInNhbXBsaW5nIiwiY29udGFjdCIsImNvbnRhY3RfbnVtYmVyIiwiY29udGFjdE51bWJlciIsImxhYl9uYW1lIiwibGFiTmFtZSIsIm1hbmhvbGVfYWRkcmVzcyIsIm1hbmhvbGVBZGRyZXNzIiwic3RhdHVzIiwic2l0ZSIsInNhbXBsaW5nX2lkIiwic2FtcGxpbmdJZCIsInNhbXBsaW5nX2RhdGUiLCJzYW1wbGluZ0RhdGUiLCJzYW1wbGluZ190aW1lIiwic2FtcGxpbmdUaW1lIiwiaGlzdG9yeSIsInVzZUhpc3RvcnkiLCJkaXNwYXRjaCIsInVzZURpc3BhdGNoIiwibmF2Q29udGV4dCIsInVzZVNlbGVjdG9yIiwic3RhdGUiLCJuYXZfY29udGV4dF9kYXRhIiwid2F0ZXJBdXRob3JpdHlJZCIsImdsb2JhbF9kYXRhIiwiaGFuZGxlQWN0aW9uQ2xpY2siLCJvcCIsImlkIiwiZ2V0U2FtcGxpbmdCeUlkIiwic2FtcGxpbmdQcm9wZXJ0aWVzVXJsUGFyYW1zIiwidXJscyIsImxvY2FsZSIsInB1c2giLCJzYW1wbGluZ1Byb3BlcnRpZXNSb3V0ZSIsInVybCIsImdldEFkZHJlc3MiLCJNT0JJTEVfTU9EQUxfVEVYVF9MRU5HVEgiLCJ0ZXh0IiwibGVuZ3RoIiwic2xpY2UiLCJsYXRfbG5nIiwibG9jYXRpb25TdHIiLCJsb2NhdGlvblN0cldhemUiLCJtb2JpbGVBY3Rpb25zT3B0c01hcCIsImNvbGxlY3QiLCJjbGlja09wIiwiQ09MTEVDVF9TQU1QTElOR19PUCIsInZhbHVlIiwiaTE4biIsInQiLCJjYW5jZWwiLCJDQU5DRUxfU0FNUExJTkdfT1AiLCJyZXZlcnRfY2FuY2VsIiwiUkVWRVJUX0NBTkNFTExBVElPTiIsImRlbGV0ZSIsIkRFTEVURV9TQU1QTElOR19PUCIsInByb3BlcnRpZXNfZWRpdCIsIkVESVRfUFJPUEVSVElFU19PUCIsImJ1aWxkQWN0aW9uSXRlbSIsImtleSIsIm9wdCIsImRlZmF1bHQiLCJjcmVhdGVFbGVtZW50Iiwib25DbGljayIsIm1haW5CdXR0b25BY3Rpb24iLCJmbXRTdGF0dXMiLCJmb3JtYXRTYW1wbGluZ09wZXJhdGlvblN0YXR1cyIsIm1hY2hpbmVfbmFtZSIsImluY2x1ZGVzIiwibWFpbkJ1dHRvblRpdGxlIiwiYnVpbGRNb2JpbGVBY3Rpb25zIiwicmVzdWx0IiwiRm9udEF3ZXNvbWVJY29uIiwiaWNvbiIsImZhVGltZXMiLCJzcmMiLCJQaW4iLCJhbHQiLCJocmVmIiwidGFyZ2V0IiwicmVsIiwiY2xhc3NOYW1lIiwiU3R5bGUiLCJ3YXplTGluayIsIndhemVJY29uIiwiZ29vZ2xlTGluayIsImdvb2dsZU1hcHNJY29uIiwiUGhvbmUiLCJ2YXJpYW50Iiwicm91bmRlZCIsIm91dGxpbmUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhZ2VzL1NhbXBsaW5nc1BhZ2UvU2FtcGxpbmdNb2JpbGVNb2RhbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IEZDLCBSZWFjdEVsZW1lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzL21hY3JvJztcbmltcG9ydCB7IEZvbnRBd2Vzb21lSWNvbiB9IGZyb20gJ0Bmb3J0YXdlc29tZS9yZWFjdC1mb250YXdlc29tZSc7XG5pbXBvcnQgeyBMaXN0R3JvdXAgfSBmcm9tICdyZWFjdC1ib290c3RyYXAvJztcbmltcG9ydCB7IGZhVGltZXMgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IHsgdXNlSGlzdG9yeSB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuXG5pbXBvcnQgUGhvbmUgZnJvbSAnc3JjL2Fzc2V0cy9pY29ucy9zYW1wbGluZy1tb2RhbC1waG9uZS5zdmcnO1xuaW1wb3J0IFBpbiBmcm9tICdzcmMvYXNzZXRzL2ljb25zL3NhbXBsaW5nLW1vZGFsLXBpbi5zdmcnO1xuaW1wb3J0IFNhbXBsaW5nU3RhdHVzIGZyb20gJ3NyYy91aS1raXQvU2FtcGxpbmdTdGF0dXMvU2FtcGxpbmdTdGF0dXMnO1xuaW1wb3J0IGdvb2dsZU1hcHNJY29uIGZyb20gJ3NyYy9hc3NldHMvaWNvbnMvbmF2aWdhdGlvbi9nb29nbGVfbWFwc19pY29uLnBuZyc7XG5pbXBvcnQgaTE4biBmcm9tICdzcmMvdXRpbGl0aWVzL2kxOG4nO1xuaW1wb3J0IHdhemVJY29uIGZyb20gJ3NyYy9hc3NldHMvaWNvbnMvbmF2aWdhdGlvbi93YXplLWljb24ucG5nJztcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJ3NyYy91aS1raXQnO1xuaW1wb3J0IHsgYXBwUmVkdWNlciB9IGZyb20gJ3NyYy9zdG9yZS9yb290UmVkdWNlcic7XG5pbXBvcnQgeyBmb3JtYXRTYW1wbGluZ09wZXJhdGlvblN0YXR1cyB9IGZyb20gJ3NyYy91aS1raXQvU2FtcGxpbmdTdGF0dXMvU2FtcGxpbmdTdGF0dXNIZWxwZXInO1xuaW1wb3J0IHsgZ2V0U2FtcGxpbmdCeUlkIH0gZnJvbSAnc3JjL3N0b3JlL3NhbXBsaW5ncy9hY3Rpb25zQ3JlYXRvcic7XG5pbXBvcnQgeyB1cmxzIH0gZnJvbSAnc3JjL3V0aWxpdGllcy91cmxzJztcblxuaW1wb3J0IFN0eWxlIGZyb20gJy4vc3R5bGUubW9kdWxlLnNjc3MnO1xuXG5pbXBvcnQge1xuICBDQU5DRUxfU0FNUExJTkdfT1AsXG4gIENPTExFQ1RfU0FNUExJTkdfT1AsXG4gIERFTEVURV9TQU1QTElOR19PUCxcbiAgRURJVF9QUk9QRVJUSUVTX09QLFxuICBNT0JJTEVfTU9EQUxfVEVYVF9MRU5HVEgsXG4gIFJFVkVSVF9DQU5DRUxMQVRJT04sXG4gIFNhbXBsaW5nRGF0YSxcbn0gZnJvbSAnLi9zYW1wbGluZ3NQYWdlVXRpbHMnO1xuXG5pbnRlcmZhY2UgU2FtcGxpbmdNb2JpbGVQcm9wcyB7XG4gIG9uQ2xvc2VNb2RhbDogKCkgPT4gdm9pZDtcbiAgc2FtcGxpbmc6IFNhbXBsaW5nRGF0YTtcbiAgaXNNb2JpbGVQcm9wZXJ0aWVzPzogYm9vbGVhbjtcbn1cbmNvbnN0IFNhbXBsaW5nTW9iaWxlTW9kYWxTdHlsZSA9IHN0eWxlZC5kaXZgXG4gICoge1xuICAgIGZvbnQtZmFtaWx5OiBOdW5pdG8sIEdpbHJveSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtcbiAgfVxuICAuZHJvcHJpZ2h0IHtcbiAgICBidXR0b24ge1xuICAgICAgd2lkdGg6IDEwMHZ3O1xuICAgICAgOjphZnRlciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaW1nIHtcbiAgICB3aWR0aDogMThweDtcbiAgICBoZWlnaHQ6IDE4cHg7XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JTY2hlbWUucHJpbWFyeS5wMX07XG4gIH1cbmA7XG5cbmNvbnN0IExpc3RHcm91cFN0eWxlID0gc3R5bGVkKExpc3RHcm91cClgXG4gIC8qIG92ZXJyaWRlIHNlcnZlciBzdHlsZSAqL1xuICBwYWRkaW5nOiAwIDEwcHggIWltcG9ydGFudDtcbiAgYm9yZGVyLXJhZGl1czogMTRweDtcbmA7XG5jb25zdCBNb2RhbENvbnRhaW5lclN0eWxlID0gc3R5bGVkLmRpdmBcbiAgcG9zaXRpb246IGZpeGVkO1xuICB3aWR0aDogMTAwdnc7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgei1pbmRleDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS56SW5kZXhlcy5tb2RhbH07XG5gO1xuXG5jb25zdCBMaXN0R3JvdXBJdGVtU3R5bGUgPSBzdHlsZWQoTGlzdEdyb3VwLkl0ZW0pYFxuICBmb250LXNpemU6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuZm9udFNpemUubWR9O1xuICBoZWlnaHQ6IDU1cHggIWltcG9ydGFudDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiA1cHg7XG4gIGJvcmRlci1ib3R0b206IDAuNXB4IHNvbGlkICM4NThhOTQ3ZCAhaW1wb3J0YW50IDtcbiAgY29sb3I6ICR7KHsgZGlzYWJsZWQsIHRoZW1lIH0pID0+XG4gICAgZGlzYWJsZWRcbiAgICAgID8gdGhlbWUuY29sb3JTY2hlbWUubmF0dXJhbC5uNTBcbiAgICAgIDogdGhlbWUuc2FtcGxpbmdzUGFnZS5tb2JpbGUubW9kYWxMaXN0SXRlbUNvbG9yfSAhaW1wb3J0YW50O1xuYDtcblxuY29uc3QgUm93SW5mb1N0eWxlID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogYmxvY2s7XG4gIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JTY2hlbWUubmF0dXJhbC5uMX07XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDE0cHg7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAxNHB4O1xuICBib3JkZXItYm90dG9tOiAwLjVweCBzb2xpZCAjODU4YTk0N2Q7XG4gIHBhZGRpbmc6IDIycHggMzJweCAwO1xuYDtcblxuY29uc3QgSW5mb0xpbmVTdHlsZSA9IHN0eWxlZC5kaXZgXG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjODU4YTk0N2Q7XG4gIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9yU2NoZW1lLm5hdHVyYWwubjYwfTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMTZweCAwO1xuYDtcblxuY29uc3QgT3ZlcmxheVN0eWxlID0gc3R5bGVkLmRpdmBcbiAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNhbXBsaW5nc1BhZ2UubW9iaWxlLm1vZGFsT3ZlcmxheUJhY2tncm91bmR9O1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDB2aDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuekluZGV4ZXMubW9kYWx9O1xuYDtcblxuY29uc3QgTWFpbkJ1dHRvblN0eWxlID0gc3R5bGVkKEJ1dHRvbilgXG4gIGZvbnQtc2l6ZTogMThweDtcbiAgbWFyZ2luOiAxMHB4O1xuICB3aWR0aDogY2FsYygxMDB2dyAtIDIwcHgpO1xuICBib3JkZXI6IG5vbmU7XG4gIGhlaWdodDogNTNweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvclNjaGVtZS5uYXR1cmFsLm4xfSAhaW1wb3J0YW50O1xuICBib3JkZXItcmFkaXVzOiAxNHB4ICFpbXBvcnRhbnQ7XG5gO1xuXG5jb25zdCBTaXRlU3R5bGUgPSBzdHlsZWQuZGl2YFxuICBmb250LWZhbWlseTogTnVuaXRvLCBHaWxyb3ksIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBmb250LXNpemU6IDE2cHg7XG4gIGNvbG9yOiAjMDAwO1xuYDtcblxuY29uc3QgQ29udGFjdE51bWJlclJvd1N0eWxlID0gc3R5bGVkLmFgXG4gIGltZyB7XG4gICAgbWFyZ2luOiAwIDVweDtcbiAgfVxuYDtcblxuY29uc3QgU2l0ZURldGFpbHNTdHlsZSA9IHN0eWxlZC5kaXZgXG4gIGZvbnQtZmFtaWx5OiBOdW5pdG8sIEdpbHJveSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIG1hcmdpbjogMCAwIDEwcHg7XG4gIGxpbmUtaGVpZ2h0OiAzMHB4O1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvclNjaGVtZS5uYXR1cmFsLm42MH07XG5gO1xuXG5jb25zdCBTaXRlRGV0YWlsc0ZpcnN0U3R5bGUgPSBzdHlsZWQuZGl2YGA7XG5cbmNvbnN0IFNpdGVEZXRhaWxzU2Vjb25kU3R5bGUgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gIG1hcmdpbjogNXB4IDAgMDtcbmA7XG5cbmNvbnN0IEJvdHRvbVNlY3Rpb25TdHlsZSA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGdhcDogMTBweDtcbmA7XG5cbmludGVyZmFjZSBTYW1wbGluZ3NNb2JpbGVTdHlsZVByb3BzIHtcbiAgaXNNb2JpbGVQcm9wZXJ0aWVzPzogYm9vbGVhbjtcbn1cblxuY29uc3QgU3RhdHVzQ29udGFpbmVyU3R5bGUgPSBzdHlsZWQuZGl2LmF0dHJzKFxuICAocHJvcHM6IFNhbXBsaW5nc01vYmlsZVN0eWxlUHJvcHMpID0+ICh7XG4gICAgaXNNb2JpbGVQcm9wZXJ0aWVzOiBwcm9wcy5pc01vYmlsZVByb3BlcnRpZXMsXG4gIH0pLFxuKWBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDRweDtcbiAgaW1nIHtcbiAgICBoZWlnaHQ6IDE0cHg7XG4gICAgd2lkdGg6IDE0cHg7XG4gIH1cbiAgJHsoeyBpc01vYmlsZVByb3BlcnRpZXMgfSkgPT5cbiAgICBpc01vYmlsZVByb3BlcnRpZXMgJiZcbiAgICBgXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgYH1cbmA7XG5cbmNvbnN0IENsb3NlVG9wQnV0dG9uU3R5bGUgPSBzdHlsZWQuZGl2YFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAtNDBweDtcbiAgcmlnaHQ6IDEwcHg7XG4gIHdpZHRoOiAzMHB4O1xuICBoZWlnaHQ6IDMwcHg7XG4gIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JTY2hlbWUubmF0dXJhbC5uMTAwfTtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JTY2hlbWUubmF0dXJhbC5uMX07XG4gIGJvcmRlcjogMnB4IHNvbGlkICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JTY2hlbWUubmF0dXJhbC5uMTAwfTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgbGluZS1oZWlnaHQ6IDEuNDRlbTtcbiAgbWFyZ2luOiAwIDhweCAwIDA7XG4gIHBhZGRpbmc6IDJweCAwIDA7XG5gO1xuXG5leHBvcnQgY29uc3QgU2FtcGxpbmdNb2JpbGVNb2RhbDogRkM8U2FtcGxpbmdNb2JpbGVQcm9wcz4gPSAoe1xuICBvbkNsb3NlTW9kYWwsXG4gIHNhbXBsaW5nLFxuICBpc01vYmlsZVByb3BlcnRpZXMsXG59KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjb250YWN0LFxuICAgIGNvbnRhY3RfbnVtYmVyOiBjb250YWN0TnVtYmVyLFxuICAgIGxhYl9uYW1lOiBsYWJOYW1lLFxuICAgIG1hbmhvbGVfYWRkcmVzczogbWFuaG9sZUFkZHJlc3MsXG4gICAgc3RhdHVzLFxuICAgIHNpdGUsXG4gICAgc2FtcGxpbmdfaWQ6IHNhbXBsaW5nSWQsXG4gICAgc2FtcGxpbmdfZGF0ZTogc2FtcGxpbmdEYXRlLFxuICAgIHNhbXBsaW5nX3RpbWU6IHNhbXBsaW5nVGltZSxcbiAgfSA9IHNhbXBsaW5nO1xuICBjb25zdCBoaXN0b3J5ID0gdXNlSGlzdG9yeSgpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IG5hdkNvbnRleHQgPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGU6IFJldHVyblR5cGU8dHlwZW9mIGFwcFJlZHVjZXI+KSA9PiBzdGF0ZS5uYXZfY29udGV4dF9kYXRhLm5hdkNvbnRleHQsXG4gICk7XG5cbiAgY29uc3Qgd2F0ZXJBdXRob3JpdHlJZCA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZTogUmV0dXJuVHlwZTx0eXBlb2YgYXBwUmVkdWNlcj4pID0+XG4gICAgICBzdGF0ZS5nbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eUlkLFxuICApO1xuXG4gIGNvbnN0IGhhbmRsZUFjdGlvbkNsaWNrID0gKG9wOiBzdHJpbmcgfCBudWxsKSA9PiB7XG4gICAgaWYgKCFvcCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgaWQgfSA9IHNhbXBsaW5nO1xuICAgIGRpc3BhdGNoKGdldFNhbXBsaW5nQnlJZChpZCkpO1xuICAgIGNvbnN0IHNhbXBsaW5nUHJvcGVydGllc1VybFBhcmFtcyA9IHVybHMoe1xuICAgICAgaWQ6IGlkLFxuICAgICAgbG9jYWxlOiBuYXZDb250ZXh0LmxvY2FsZSxcbiAgICAgIHdhdGVyQXV0aG9yaXR5SWQ6IHdhdGVyQXV0aG9yaXR5SWQsXG4gICAgICBvcDogb3AsXG4gICAgfSk7XG4gICAgaGlzdG9yeS5wdXNoKFxuICAgICAgc2FtcGxpbmdQcm9wZXJ0aWVzVXJsUGFyYW1zLnNhbXBsaW5nc1BhZ2Uuc2FtcGxpbmdQcm9wZXJ0aWVzUm91dGUudXJsLFxuICAgICk7XG4gIH07XG5cbiAgY29uc3QgZ2V0QWRkcmVzcyA9ICgpID0+IHtcbiAgICByZXR1cm4gTU9CSUxFX01PREFMX1RFWFRfTEVOR1RIIDwgbWFuaG9sZUFkZHJlc3MudGV4dC5sZW5ndGhcbiAgICAgID8gbWFuaG9sZUFkZHJlc3MudGV4dC5zbGljZSgwLCBNT0JJTEVfTU9EQUxfVEVYVF9MRU5HVEgpICsgJ1xcdTIwMjYnXG4gICAgICA6IG1hbmhvbGVBZGRyZXNzLnRleHQ7XG4gIH07XG5cbiAgY29uc3QgeyBsYXRfbG5nIH0gPSBtYW5ob2xlQWRkcmVzcztcbiAgY29uc3QgbG9jYXRpb25TdHIgPSBgJHtsYXRfbG5nWzBdfSwke2xhdF9sbmdbMV19YDtcbiAgY29uc3QgbG9jYXRpb25TdHJXYXplID0gYGxsPSR7bG9jYXRpb25TdHJ9YDtcblxuICBjb25zdCBtb2JpbGVBY3Rpb25zT3B0c01hcDogeyBba2V5OiBzdHJpbmddOiBPYmplY3QgfSA9IHtcbiAgICBjb2xsZWN0OiB7XG4gICAgICBjbGlja09wOiBDT0xMRUNUX1NBTVBMSU5HX09QLFxuICAgICAgdmFsdWU6IGkxOG4udCgnc2FtcGxpbmdzX3BhZ2UuY2FuY2VsX3NhbXBsaW5nJyksXG4gICAgfSxcbiAgICBjYW5jZWw6IHtcbiAgICAgIGNsaWNrT3A6IENBTkNFTF9TQU1QTElOR19PUCxcbiAgICAgIHZhbHVlOiBpMThuLnQoJ3NhbXBsaW5nc19wYWdlLmNhbmNlbF9zYW1wbGluZycpLFxuICAgIH0sXG4gICAgcmV2ZXJ0X2NhbmNlbDoge1xuICAgICAgY2xpY2tPcDogUkVWRVJUX0NBTkNFTExBVElPTixcbiAgICAgIHZhbHVlOiBpMThuLnQoJ3NhbXBsaW5nc19wYWdlLnJldmVydF9jYW5jZWxsYXRpb24nKSxcbiAgICB9LFxuICAgIGRlbGV0ZToge1xuICAgICAgY2xpY2tPcDogREVMRVRFX1NBTVBMSU5HX09QLFxuICAgICAgdmFsdWU6IGkxOG4udCgnc2FtcGxpbmdzX3BhZ2UuZGVsZXRlJyksXG4gICAgfSxcbiAgICBwcm9wZXJ0aWVzX2VkaXQ6IHtcbiAgICAgIGNsaWNrT3A6IEVESVRfUFJPUEVSVElFU19PUCxcbiAgICAgIHZhbHVlOiBpMThuLnQoJ3NhbXBsaW5nc19wYWdlLnNhbXBsaW5nX3Byb3BlcnRpZXMnKSxcbiAgICB9LFxuICB9O1xuXG4gIGNvbnN0IGJ1aWxkQWN0aW9uSXRlbSA9IChrZXk6IHN0cmluZywgcHJvcHM/OiBvYmplY3QpOiBSZWFjdEVsZW1lbnQgPT4ge1xuICAgIGNvbnN0IG9wdCA9IG1vYmlsZUFjdGlvbnNPcHRzTWFwW2tleV07XG4gICAgY29uc3QgZGlzYWJsZWQgPSBwcm9wcyA/IHByb3BzWydkaXNhYmxlZCddIDogZmFsc2U7XG4gICAgY29uc3QgY2xpY2tPcCA9IGRpc2FibGVkID8gZmFsc2UgOiBvcHRbJ2NsaWNrT3AnXTtcbiAgICByZXR1cm4gKFxuICAgICAgPExpc3RHcm91cEl0ZW1TdHlsZVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVBY3Rpb25DbGljayhjbGlja09wKX1cbiAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgPlxuICAgICAgICB7b3B0Wyd2YWx1ZSddfVxuICAgICAgPC9MaXN0R3JvdXBJdGVtU3R5bGU+XG4gICAgKTtcbiAgfTtcblxuICBjb25zdCBtYWluQnV0dG9uQWN0aW9uID0gKHN0YXR1cykgPT4ge1xuICAgIGNvbnN0IGZtdFN0YXR1cyA9IGZvcm1hdFNhbXBsaW5nT3BlcmF0aW9uU3RhdHVzKHN0YXR1cy5tYWNoaW5lX25hbWUpO1xuICAgIGlmIChbJ3BsYW5uZWQnLCAnYWN0aXZlJywgJ3JlYWR5J10uaW5jbHVkZXMoZm10U3RhdHVzKSkge1xuICAgICAgcmV0dXJuIENPTExFQ1RfU0FNUExJTkdfT1A7XG4gICAgfVxuICAgIHJldHVybiBFRElUX1BST1BFUlRJRVNfT1A7XG4gIH07XG5cbiAgY29uc3QgbWFpbkJ1dHRvblRpdGxlID0gKHN0YXR1cykgPT4ge1xuICAgIGNvbnN0IGZtdFN0YXR1cyA9IGZvcm1hdFNhbXBsaW5nT3BlcmF0aW9uU3RhdHVzKHN0YXR1cy5tYWNoaW5lX25hbWUpO1xuICAgIGlmIChbJ3BsYW5uZWQnLCAnYWN0aXZlJywgJ3JlYWR5J10uaW5jbHVkZXMoZm10U3RhdHVzKSkge1xuICAgICAgcmV0dXJuIGkxOG4udCgnc2FtcGxpbmdzX3BhZ2UuY29sbGVjdCcpO1xuICAgIH0gZWxzZSBpZiAoZm10U3RhdHVzID09PSAnY29sbGVjdGVkJykge1xuICAgICAgcmV0dXJuIGkxOG4udCgnc2FtcGxpbmdzX3BhZ2Uuc2FtcGxpbmdfcHJvcGVydGllcycpO1xuICAgIH1cbiAgICByZXR1cm4gaTE4bi50KCdzYW1wbGluZ3NfcGFnZS5zYW1wbGluZ19wcm9wZXJ0aWVzJyk7XG4gIH07XG5cbiAgY29uc3QgYnVpbGRNb2JpbGVBY3Rpb25zID0gKCkgPT4ge1xuICAgIGNvbnN0IGZtdFN0YXR1cyA9IGZvcm1hdFNhbXBsaW5nT3BlcmF0aW9uU3RhdHVzKHN0YXR1cy5tYWNoaW5lX25hbWUpO1xuICAgIGxldCByZXN1bHQ6IFJlYWN0RWxlbWVudFtdID0gW107XG5cbiAgICBpZiAoWydwbGFubmVkJywgJ2FjdGl2ZScsICdyZWFkeSddLmluY2x1ZGVzKGZtdFN0YXR1cykpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGJ1aWxkQWN0aW9uSXRlbSgnY2FuY2VsJykpO1xuICAgIH0gZWxzZSBpZiAoZm10U3RhdHVzID09PSAnY29sbGVjdGVkJykge1xuICAgICAgcmVzdWx0LnB1c2goYnVpbGRBY3Rpb25JdGVtKCdjYW5jZWwnKSk7XG4gICAgfSBlbHNlIGlmIChmbXRTdGF0dXMgPT09ICdjYW5jZWxlZCcpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGJ1aWxkQWN0aW9uSXRlbSgncmV2ZXJ0X2NhbmNlbCcpKTtcbiAgICB9IGVsc2UgaWYgKGZtdFN0YXR1cyA9PT0gJ2NvbXBsZXRlZCcpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGJ1aWxkQWN0aW9uSXRlbSgnY2FuY2VsJywgeyBkaXNhYmxlZDogdHJ1ZSB9KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxTYW1wbGluZ01vYmlsZU1vZGFsU3R5bGU+XG4gICAgICA8T3ZlcmxheVN0eWxlIC8+XG4gICAgICA8TW9kYWxDb250YWluZXJTdHlsZT5cbiAgICAgICAgPExpc3RHcm91cFN0eWxlPlxuICAgICAgICAgIDxSb3dJbmZvU3R5bGU+XG4gICAgICAgICAgICA8Q2xvc2VUb3BCdXR0b25TdHlsZSBvbkNsaWNrPXtvbkNsb3NlTW9kYWx9PlxuICAgICAgICAgICAgICA8Rm9udEF3ZXNvbWVJY29uIGljb249e2ZhVGltZXN9IC8+XG4gICAgICAgICAgICA8L0Nsb3NlVG9wQnV0dG9uU3R5bGU+XG4gICAgICAgICAgICA8U2l0ZURldGFpbHNTdHlsZT5cbiAgICAgICAgICAgICAgPFNpdGVEZXRhaWxzRmlyc3RTdHlsZT5cbiAgICAgICAgICAgICAgICA8U2l0ZVN0eWxlPntzaXRlfTwvU2l0ZVN0eWxlPlxuICAgICAgICAgICAgICAgIDxkaXY+e3NhbXBsaW5nSWR9PC9kaXY+XG4gICAgICAgICAgICAgIDwvU2l0ZURldGFpbHNGaXJzdFN0eWxlPlxuICAgICAgICAgICAgICA8U2l0ZURldGFpbHNTZWNvbmRTdHlsZT5cbiAgICAgICAgICAgICAgICA8U3RhdHVzQ29udGFpbmVyU3R5bGUgaXNNb2JpbGVQcm9wZXJ0aWVzPXtpc01vYmlsZVByb3BlcnRpZXN9PlxuICAgICAgICAgICAgICAgICAgPFNhbXBsaW5nU3RhdHVzIHN0YXR1cz17c3RhdHVzfSAvPlxuICAgICAgICAgICAgICAgIDwvU3RhdHVzQ29udGFpbmVyU3R5bGU+XG4gICAgICAgICAgICAgICAgPEJvdHRvbVNlY3Rpb25TdHlsZT5cbiAgICAgICAgICAgICAgICAgIDxkaXY+e3NhbXBsaW5nRGF0ZX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+e3NhbXBsaW5nVGltZX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L0JvdHRvbVNlY3Rpb25TdHlsZT5cbiAgICAgICAgICAgICAgPC9TaXRlRGV0YWlsc1NlY29uZFN0eWxlPlxuICAgICAgICAgICAgPC9TaXRlRGV0YWlsc1N0eWxlPlxuICAgICAgICAgICAgPEluZm9MaW5lU3R5bGU+XG4gICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgIHtpMThuLnQoJ3NhbXBsaW5nc19wYWdlLnNhbXBsaW5nc190YWJsZV9jb2xzLmxhYl9uYW1lJyl9XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAge2xhYk5hbWUgfHwgaTE4bi50KCdzYW1wbGluZ3NfcGFnZS53YXNfbm90X3NlbGVjdGVkJyl9XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvSW5mb0xpbmVTdHlsZT5cbiAgICAgICAgICA8L1Jvd0luZm9TdHlsZT5cblxuICAgICAgICAgIDxMaXN0R3JvdXBJdGVtU3R5bGU+XG4gICAgICAgICAgICA8aW1nIHNyYz17UGlufSBhbHQ9XCJwaW5cIiAvPlxuICAgICAgICAgICAgPHNwYW4+e2dldEFkZHJlc3MoKX08L3NwYW4+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBocmVmPXtgaHR0cHM6Ly93d3cud2F6ZS5jb20vdWw/JHtsb2NhdGlvblN0cldhemV9Jm5hdmlnYXRlPXllc2B9XG4gICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgIHJlbD1cIm5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW1nIGNsYXNzTmFtZT17U3R5bGUud2F6ZUxpbmt9IHNyYz17d2F6ZUljb259IGFsdD1cIndhemUtaWNvblwiIC8+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBocmVmPXtgaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9tYXBzL2Rpci8/YXBpPTEmb3JpZ2luPUN1cnJlbnQrTG9jYXRpb24mZGVzdGluYXRpb249JHtsb2NhdGlvblN0cn1gfVxuICAgICAgICAgICAgICByZWw9XCJub3JlZmVycmVyXCJcbiAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17U3R5bGUuZ29vZ2xlTGlua31cbiAgICAgICAgICAgICAgICBzcmM9e2dvb2dsZU1hcHNJY29ufVxuICAgICAgICAgICAgICAgIGFsdD1cImdvb2dsZS1tYXAtaWNvblwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgPC9MaXN0R3JvdXBJdGVtU3R5bGU+XG5cbiAgICAgICAgICA8TGlzdEdyb3VwSXRlbVN0eWxlPlxuICAgICAgICAgICAgPENvbnRhY3ROdW1iZXJSb3dTdHlsZVxuICAgICAgICAgICAgICBocmVmPXtjb250YWN0TnVtYmVyID8gYHRlbDoke2NvbnRhY3ROdW1iZXJ9YCA6ICcjJ31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGltZyBzcmM9e1Bob25lfSBhbHQ9XCJwaW5cIiAvPlxuICAgICAgICAgICAgICB7Y29udGFjdCB8fCBpMThuLnQoJ3NhbXBsaW5nc19wYWdlLm5vX2NvbnRhY3QnKX1cbiAgICAgICAgICAgIDwvQ29udGFjdE51bWJlclJvd1N0eWxlPlxuICAgICAgICAgIDwvTGlzdEdyb3VwSXRlbVN0eWxlPlxuXG4gICAgICAgICAge2J1aWxkTW9iaWxlQWN0aW9ucygpfVxuICAgICAgICA8L0xpc3RHcm91cFN0eWxlPlxuICAgICAgICA8TWFpbkJ1dHRvblN0eWxlXG4gICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgIHJvdW5kZWQ9e2ZhbHNlfVxuICAgICAgICAgIG91dGxpbmVcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVBY3Rpb25DbGljayhtYWluQnV0dG9uQWN0aW9uKHN0YXR1cykpfVxuICAgICAgICA+XG4gICAgICAgICAge21haW5CdXR0b25UaXRsZShzdGF0dXMpfVxuICAgICAgICA8L01haW5CdXR0b25TdHlsZT5cbiAgICAgIDwvTW9kYWxDb250YWluZXJTdHlsZT5cbiAgICA8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
@@ -5,41 +5,40 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.default = void 0;
8
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
9
8
  var _react = _interopRequireDefault(require("react"));
10
9
  var _styledComponents = _interopRequireDefault(require("styled-components"));
11
10
  var _Alert = _interopRequireDefault(require("../../../utilities/Alert"));
12
11
  var _i18n = _interopRequireDefault(require("utilities/i18n"));
13
12
  var _theme = require("../../../styles/theme/theme");
14
- var ModalContent = _styledComponents.default.div.withConfig({
13
+ const ModalContent = _styledComponents.default.div.withConfig({
15
14
  displayName: "ImageDeleteModal__ModalContent",
16
15
  componentId: "sc-6upjqu-0"
17
16
  })(["padding:30px;font-size:16px;text-align:center;font-weight:600;"]);
18
- var ModalActions = _styledComponents.default.div.withConfig({
17
+ const ModalActions = _styledComponents.default.div.withConfig({
19
18
  displayName: "ImageDeleteModal__ModalActions",
20
19
  componentId: "sc-6upjqu-1"
21
20
  })(["position:absolute;bottom:0;width:100%;"]);
22
- var ModalActionsButton = _styledComponents.default.div.withConfig({
21
+ const ModalActionsButton = _styledComponents.default.div.withConfig({
23
22
  displayName: "ImageDeleteModal__ModalActionsButton",
24
23
  componentId: "sc-6upjqu-2"
25
- })(["border-top:1px solid #a8a8aa;text-align:center;height:45px;display:flex;justify-content:center;align-items:center;color:", ";"], function (_ref) {
26
- var color = _ref.color;
24
+ })(["border-top:1px solid #a8a8aa;text-align:center;height:45px;display:flex;justify-content:center;align-items:center;color:", ";"], _ref => {
25
+ let {
26
+ color
27
+ } = _ref;
27
28
  return color;
28
29
  });
29
- var ImageDeleteModal = function ImageDeleteModal(_ref2) {
30
- var modalDetails = _ref2.modalDetails,
31
- setPhotosToDelete = _ref2.setPhotosToDelete,
32
- setImgsUrls = _ref2.setImgsUrls,
33
- imgsUrls = _ref2.imgsUrls,
34
- setModalDetails = _ref2.setModalDetails;
35
- var handleImageDelete = function handleImageDelete() {
36
- setPhotosToDelete(function (prev) {
37
- return [].concat((0, _toConsumableArray2.default)(prev), [modalDetails.instance.id]);
38
- });
39
- var imgsUrlsCopy = JSON.parse(JSON.stringify(imgsUrls));
40
- var index = imgsUrlsCopy.findIndex(function (x) {
41
- return x.id === modalDetails.instance.id;
42
- });
30
+ const ImageDeleteModal = _ref2 => {
31
+ let {
32
+ modalDetails,
33
+ setPhotosToDelete,
34
+ setImgsUrls,
35
+ imgsUrls,
36
+ setModalDetails
37
+ } = _ref2;
38
+ const handleImageDelete = () => {
39
+ setPhotosToDelete(prev => [...prev, modalDetails.instance.id]);
40
+ let imgsUrlsCopy = JSON.parse(JSON.stringify(imgsUrls));
41
+ let index = imgsUrlsCopy.findIndex(x => x.id === modalDetails.instance.id);
43
42
  imgsUrlsCopy.splice(index, 1);
44
43
  index !== -1 && setImgsUrls(imgsUrlsCopy);
45
44
  };
@@ -48,7 +47,7 @@ var ImageDeleteModal = function ImageDeleteModal(_ref2) {
48
47
  children: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(ModalContent, null, _i18n.default.t('samplings_page.samplings_properties.delete_confirmation')), /*#__PURE__*/_react.default.createElement(ModalActions, null, /*#__PURE__*/_react.default.createElement(ModalActionsButton, {
49
48
  color: _theme.theme.colorScheme.natural.n60
50
49
  }, _i18n.default.t('samplings_page.samplings_properties.no')), /*#__PURE__*/_react.default.createElement(ModalActionsButton, {
51
- onClick: function onClick() {
50
+ onClick: () => {
52
51
  handleImageDelete();
53
52
  },
54
53
  color: _theme.theme.colorScheme.data.R100
@@ -57,4 +56,4 @@ var ImageDeleteModal = function ImageDeleteModal(_ref2) {
57
56
  };
58
57
  var _default = ImageDeleteModal;
59
58
  exports.default = _default;
60
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9zdHlsZWRDb21wb25lbnRzIiwiX0FsZXJ0IiwiX2kxOG4iLCJfdGhlbWUiLCJNb2RhbENvbnRlbnQiLCJzdHlsZWQiLCJkaXYiLCJ3aXRoQ29uZmlnIiwiZGlzcGxheU5hbWUiLCJjb21wb25lbnRJZCIsIk1vZGFsQWN0aW9ucyIsIk1vZGFsQWN0aW9uc0J1dHRvbiIsIl9yZWYiLCJjb2xvciIsIkltYWdlRGVsZXRlTW9kYWwiLCJfcmVmMiIsIm1vZGFsRGV0YWlscyIsInNldFBob3Rvc1RvRGVsZXRlIiwic2V0SW1nc1VybHMiLCJpbWdzVXJscyIsInNldE1vZGFsRGV0YWlscyIsImhhbmRsZUltYWdlRGVsZXRlIiwicHJldiIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJkZWZhdWx0IiwiaW5zdGFuY2UiLCJpZCIsImltZ3NVcmxzQ29weSIsIkpTT04iLCJwYXJzZSIsInN0cmluZ2lmeSIsImluZGV4IiwiZmluZEluZGV4IiwieCIsInNwbGljZSIsImNyZWF0ZUVsZW1lbnQiLCJjaGlsZHJlbiIsIkZyYWdtZW50IiwiaTE4biIsInQiLCJ0aGVtZSIsImNvbG9yU2NoZW1lIiwibmF0dXJhbCIsIm42MCIsIm9uQ2xpY2siLCJkYXRhIiwiUjEwMCIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wYWdlcy9TYW1wbGluZ3NQYWdlL1NhbXBsaW5nUHJvcGVydGllcy9JbWFnZURlbGV0ZU1vZGFsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgRkMgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBBbGVydCBmcm9tICcuLi8uLi8uLi91dGlsaXRpZXMvQWxlcnQnO1xuaW1wb3J0IGkxOG4gZnJvbSAnc3JjL3V0aWxpdGllcy9pMThuJztcbmltcG9ydCB7IHRoZW1lIH0gZnJvbSAnLi4vLi4vLi4vc3R5bGVzL3RoZW1lL3RoZW1lJztcbmltcG9ydCB7IEFsZXJ0RGV0YWlscyB9IGZyb20gJy4vc2FtcGxpbmdQcm9wZXJ0aWVzVXRpbHMnO1xuXG50eXBlIEltYWdlRGVsZXRlTW9kYWxQcm9wcyA9IHtcbiAgbW9kYWxEZXRhaWxzOiBBbGVydERldGFpbHM7XG4gIHNldE1vZGFsRGV0YWlsczogUmVhY3QuRGlzcGF0Y2g8UmVhY3QuU2V0U3RhdGVBY3Rpb248QWxlcnREZXRhaWxzPj47XG4gIHNldFBob3Rvc1RvRGVsZXRlOiBSZWFjdC5EaXNwYXRjaDxSZWFjdC5TZXRTdGF0ZUFjdGlvbjxudW1iZXJbXT4+O1xuICBzZXRJbWdzVXJsczogUmVhY3QuRGlzcGF0Y2g8UmVhY3QuU2V0U3RhdGVBY3Rpb248YW55W10+PjtcbiAgaW1nc1VybHM6IGFueVtdO1xufTtcblxuY29uc3QgTW9kYWxDb250ZW50ID0gc3R5bGVkLmRpdmBcbiAgcGFkZGluZzogMzBweDtcbiAgZm9udC1zaXplOiAxNnB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG5gO1xuXG5jb25zdCBNb2RhbEFjdGlvbnMgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogMDtcbiAgd2lkdGg6IDEwMCU7XG5gO1xuXG5jb25zdCBNb2RhbEFjdGlvbnNCdXR0b24gPSBzdHlsZWQuZGl2YFxuICBib3JkZXItdG9wOiAxcHggc29saWQgI2E4YThhYTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBoZWlnaHQ6IDQ1cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBjb2xvcjogJHsoeyBjb2xvciB9KSA9PiBjb2xvcn07XG5gO1xuXG5jb25zdCBJbWFnZURlbGV0ZU1vZGFsOiBGQzxJbWFnZURlbGV0ZU1vZGFsUHJvcHM+ID0gKHtcbiAgbW9kYWxEZXRhaWxzLFxuICBzZXRQaG90b3NUb0RlbGV0ZSxcbiAgc2V0SW1nc1VybHMsXG4gIGltZ3NVcmxzLFxuICBzZXRNb2RhbERldGFpbHMsXG59KSA9PiB7XG4gIGNvbnN0IGhhbmRsZUltYWdlRGVsZXRlID0gKCkgPT4ge1xuICAgIHNldFBob3Rvc1RvRGVsZXRlKChwcmV2KSA9PiBbLi4ucHJldiwgbW9kYWxEZXRhaWxzLmluc3RhbmNlLmlkXSk7XG4gICAgbGV0IGltZ3NVcmxzQ29weSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoaW1nc1VybHMpKTtcbiAgICBsZXQgaW5kZXggPSBpbWdzVXJsc0NvcHkuZmluZEluZGV4KFxuICAgICAgKHgpID0+IHguaWQgPT09IG1vZGFsRGV0YWlscy5pbnN0YW5jZS5pZCxcbiAgICApO1xuICAgIGltZ3NVcmxzQ29weS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIGluZGV4ICE9PSAtMSAmJiBzZXRJbWdzVXJscyhpbWdzVXJsc0NvcHkpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEFsZXJ0XG4gICAgICBzZXRNb2RhbERldGFpbHM9e3NldE1vZGFsRGV0YWlsc31cbiAgICAgIGNoaWxkcmVuPXtcbiAgICAgICAgPD5cbiAgICAgICAgICA8TW9kYWxDb250ZW50PlxuICAgICAgICAgICAge2kxOG4udCgnc2FtcGxpbmdzX3BhZ2Uuc2FtcGxpbmdzX3Byb3BlcnRpZXMuZGVsZXRlX2NvbmZpcm1hdGlvbicpfVxuICAgICAgICAgIDwvTW9kYWxDb250ZW50PlxuICAgICAgICAgIDxNb2RhbEFjdGlvbnM+XG4gICAgICAgICAgICA8TW9kYWxBY3Rpb25zQnV0dG9uIGNvbG9yPXt0aGVtZS5jb2xvclNjaGVtZS5uYXR1cmFsLm42MH0+XG4gICAgICAgICAgICAgIHtpMThuLnQoJ3NhbXBsaW5nc19wYWdlLnNhbXBsaW5nc19wcm9wZXJ0aWVzLm5vJyl9XG4gICAgICAgICAgICA8L01vZGFsQWN0aW9uc0J1dHRvbj5cbiAgICAgICAgICAgIDxNb2RhbEFjdGlvbnNCdXR0b25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGhhbmRsZUltYWdlRGVsZXRlKCk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGNvbG9yPXt0aGVtZS5jb2xvclNjaGVtZS5kYXRhLlIxMDB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtpMThuLnQoJ3NhbXBsaW5nc19wYWdlLnNhbXBsaW5nc19wcm9wZXJ0aWVzLnllcycpfVxuICAgICAgICAgICAgPC9Nb2RhbEFjdGlvbnNCdXR0b24+XG4gICAgICAgICAgPC9Nb2RhbEFjdGlvbnM+XG4gICAgICAgIDwvPlxuICAgICAgfVxuICAgIC8+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBJbWFnZURlbGV0ZU1vZGFsO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGlCQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxNQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxLQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxNQUFBLEdBQUFKLE9BQUE7QUFXQSxJQUFNSyxZQUFZLEdBQUdDLHlCQUFNLENBQUNDLEdBQUcsQ0FBQUMsVUFBQTtFQUFBQyxXQUFBO0VBQUFDLFdBQUE7QUFBQSxzRUFLOUI7QUFFRCxJQUFNQyxZQUFZLEdBQUdMLHlCQUFNLENBQUNDLEdBQUcsQ0FBQUMsVUFBQTtFQUFBQyxXQUFBO0VBQUFDLFdBQUE7QUFBQSw4Q0FJOUI7QUFFRCxJQUFNRSxrQkFBa0IsR0FBR04seUJBQU0sQ0FBQ0MsR0FBRyxDQUFBQyxVQUFBO0VBQUFDLFdBQUE7RUFBQUMsV0FBQTtBQUFBLHNJQU8xQixVQUFBRyxJQUFBO0VBQUEsSUFBR0MsS0FBSyxHQUFBRCxJQUFBLENBQUxDLEtBQUs7RUFBQSxP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
59
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9zdHlsZWRDb21wb25lbnRzIiwiX0FsZXJ0IiwiX2kxOG4iLCJfdGhlbWUiLCJNb2RhbENvbnRlbnQiLCJzdHlsZWQiLCJkaXYiLCJ3aXRoQ29uZmlnIiwiZGlzcGxheU5hbWUiLCJjb21wb25lbnRJZCIsIk1vZGFsQWN0aW9ucyIsIk1vZGFsQWN0aW9uc0J1dHRvbiIsIl9yZWYiLCJjb2xvciIsIkltYWdlRGVsZXRlTW9kYWwiLCJfcmVmMiIsIm1vZGFsRGV0YWlscyIsInNldFBob3Rvc1RvRGVsZXRlIiwic2V0SW1nc1VybHMiLCJpbWdzVXJscyIsInNldE1vZGFsRGV0YWlscyIsImhhbmRsZUltYWdlRGVsZXRlIiwicHJldiIsImluc3RhbmNlIiwiaWQiLCJpbWdzVXJsc0NvcHkiLCJKU09OIiwicGFyc2UiLCJzdHJpbmdpZnkiLCJpbmRleCIsImZpbmRJbmRleCIsIngiLCJzcGxpY2UiLCJkZWZhdWx0IiwiY3JlYXRlRWxlbWVudCIsImNoaWxkcmVuIiwiRnJhZ21lbnQiLCJpMThuIiwidCIsInRoZW1lIiwiY29sb3JTY2hlbWUiLCJuYXR1cmFsIiwibjYwIiwib25DbGljayIsImRhdGEiLCJSMTAwIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BhZ2VzL1NhbXBsaW5nc1BhZ2UvU2FtcGxpbmdQcm9wZXJ0aWVzL0ltYWdlRGVsZXRlTW9kYWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBGQyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IEFsZXJ0IGZyb20gJy4uLy4uLy4uL3V0aWxpdGllcy9BbGVydCc7XG5pbXBvcnQgaTE4biBmcm9tICdzcmMvdXRpbGl0aWVzL2kxOG4nO1xuaW1wb3J0IHsgdGhlbWUgfSBmcm9tICcuLi8uLi8uLi9zdHlsZXMvdGhlbWUvdGhlbWUnO1xuaW1wb3J0IHsgQWxlcnREZXRhaWxzIH0gZnJvbSAnLi9zYW1wbGluZ1Byb3BlcnRpZXNVdGlscyc7XG5cbnR5cGUgSW1hZ2VEZWxldGVNb2RhbFByb3BzID0ge1xuICBtb2RhbERldGFpbHM6IEFsZXJ0RGV0YWlscztcbiAgc2V0TW9kYWxEZXRhaWxzOiBSZWFjdC5EaXNwYXRjaDxSZWFjdC5TZXRTdGF0ZUFjdGlvbjxBbGVydERldGFpbHM+PjtcbiAgc2V0UGhvdG9zVG9EZWxldGU6IFJlYWN0LkRpc3BhdGNoPFJlYWN0LlNldFN0YXRlQWN0aW9uPG51bWJlcltdPj47XG4gIHNldEltZ3NVcmxzOiBSZWFjdC5EaXNwYXRjaDxSZWFjdC5TZXRTdGF0ZUFjdGlvbjxhbnlbXT4+O1xuICBpbWdzVXJsczogYW55W107XG59O1xuXG5jb25zdCBNb2RhbENvbnRlbnQgPSBzdHlsZWQuZGl2YFxuICBwYWRkaW5nOiAzMHB4O1xuICBmb250LXNpemU6IDE2cHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbmA7XG5cbmNvbnN0IE1vZGFsQWN0aW9ucyA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiAwO1xuICB3aWR0aDogMTAwJTtcbmA7XG5cbmNvbnN0IE1vZGFsQWN0aW9uc0J1dHRvbiA9IHN0eWxlZC5kaXZgXG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjYThhOGFhO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGhlaWdodDogNDVweDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGNvbG9yOiAkeyh7IGNvbG9yIH0pID0+IGNvbG9yfTtcbmA7XG5cbmNvbnN0IEltYWdlRGVsZXRlTW9kYWw6IEZDPEltYWdlRGVsZXRlTW9kYWxQcm9wcz4gPSAoe1xuICBtb2RhbERldGFpbHMsXG4gIHNldFBob3Rvc1RvRGVsZXRlLFxuICBzZXRJbWdzVXJscyxcbiAgaW1nc1VybHMsXG4gIHNldE1vZGFsRGV0YWlscyxcbn0pID0+IHtcbiAgY29uc3QgaGFuZGxlSW1hZ2VEZWxldGUgPSAoKSA9PiB7XG4gICAgc2V0UGhvdG9zVG9EZWxldGUoKHByZXYpID0+IFsuLi5wcmV2LCBtb2RhbERldGFpbHMuaW5zdGFuY2UuaWRdKTtcbiAgICBsZXQgaW1nc1VybHNDb3B5ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShpbWdzVXJscykpO1xuICAgIGxldCBpbmRleCA9IGltZ3NVcmxzQ29weS5maW5kSW5kZXgoXG4gICAgICAoeCkgPT4geC5pZCA9PT0gbW9kYWxEZXRhaWxzLmluc3RhbmNlLmlkLFxuICAgICk7XG4gICAgaW1nc1VybHNDb3B5LnNwbGljZShpbmRleCwgMSk7XG4gICAgaW5kZXggIT09IC0xICYmIHNldEltZ3NVcmxzKGltZ3NVcmxzQ29weSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8QWxlcnRcbiAgICAgIHNldE1vZGFsRGV0YWlscz17c2V0TW9kYWxEZXRhaWxzfVxuICAgICAgY2hpbGRyZW49e1xuICAgICAgICA8PlxuICAgICAgICAgIDxNb2RhbENvbnRlbnQ+XG4gICAgICAgICAgICB7aTE4bi50KCdzYW1wbGluZ3NfcGFnZS5zYW1wbGluZ3NfcHJvcGVydGllcy5kZWxldGVfY29uZmlybWF0aW9uJyl9XG4gICAgICAgICAgPC9Nb2RhbENvbnRlbnQ+XG4gICAgICAgICAgPE1vZGFsQWN0aW9ucz5cbiAgICAgICAgICAgIDxNb2RhbEFjdGlvbnNCdXR0b24gY29sb3I9e3RoZW1lLmNvbG9yU2NoZW1lLm5hdHVyYWwubjYwfT5cbiAgICAgICAgICAgICAge2kxOG4udCgnc2FtcGxpbmdzX3BhZ2Uuc2FtcGxpbmdzX3Byb3BlcnRpZXMubm8nKX1cbiAgICAgICAgICAgIDwvTW9kYWxBY3Rpb25zQnV0dG9uPlxuICAgICAgICAgICAgPE1vZGFsQWN0aW9uc0J1dHRvblxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgaGFuZGxlSW1hZ2VEZWxldGUoKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgY29sb3I9e3RoZW1lLmNvbG9yU2NoZW1lLmRhdGEuUjEwMH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2kxOG4udCgnc2FtcGxpbmdzX3BhZ2Uuc2FtcGxpbmdzX3Byb3BlcnRpZXMueWVzJyl9XG4gICAgICAgICAgICA8L01vZGFsQWN0aW9uc0J1dHRvbj5cbiAgICAgICAgICA8L01vZGFsQWN0aW9ucz5cbiAgICAgICAgPC8+XG4gICAgICB9XG4gICAgLz5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEltYWdlRGVsZXRlTW9kYWw7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsTUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsS0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksTUFBQSxHQUFBSixPQUFBO0FBV0EsTUFBTUssWUFBWSxHQUFHQyx5QkFBTSxDQUFDQyxHQUFHLENBQUFDLFVBQUE7RUFBQUMsV0FBQTtFQUFBQyxXQUFBO0FBQUEsc0VBSzlCO0FBRUQsTUFBTUMsWUFBWSxHQUFHTCx5QkFBTSxDQUFDQyxHQUFHLENBQUFDLFVBQUE7RUFBQUMsV0FBQTtFQUFBQyxXQUFBO0FBQUEsOENBSTlCO0FBRUQsTUFBTUUsa0JBQWtCLEdBQUdOLHlCQUFNLENBQUNDLEdBQUcsQ0FBQUMsVUFBQTtFQUFBQyxXQUFBO0VBQUFDLFdBQUE7QUFBQSxzSUFPMUJHLElBQUE7RUFBQSxJQUFDO0lBQUVDO0VBQU0sQ0FBQyxHQUFBRCxJQUFBO0VBQUEsT0FBS0MsS0FBSztBQUFBLEVBQzlCO0FBRUQsTUFBTUMsZ0JBQTJDLEdBQUdDLEtBQUEsSUFNOUM7RUFBQSxJQU4rQztJQUNuREMsWUFBWTtJQUNaQyxpQkFBaUI7SUFDakJDLFdBQVc7SUFDWEMsUUFBUTtJQUNSQztFQUNGLENBQUMsR0FBQUwsS0FBQTtFQUNDLE1BQU1NLGlCQUFpQixHQUFHQSxDQUFBLEtBQU07SUFDOUJKLGlCQUFpQixDQUFFSyxJQUFJLElBQUssQ0FBQyxHQUFHQSxJQUFJLEVBQUVOLFlBQVksQ0FBQ08sUUFBUSxDQUFDQyxFQUFFLENBQUMsQ0FBQztJQUNoRSxJQUFJQyxZQUFZLEdBQUdDLElBQUksQ0FBQ0MsS0FBSyxDQUFDRCxJQUFJLENBQUNFLFNBQVMsQ0FBQ1QsUUFBUSxDQUFDLENBQUM7SUFDdkQsSUFBSVUsS0FBSyxHQUFHSixZQUFZLENBQUNLLFNBQVMsQ0FDL0JDLENBQUMsSUFBS0EsQ0FBQyxDQUFDUCxFQUFFLEtBQUtSLFlBQVksQ0FBQ08sUUFBUSxDQUFDQyxFQUN4QyxDQUFDO0lBQ0RDLFlBQVksQ0FBQ08sTUFBTSxDQUFDSCxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzdCQSxLQUFLLEtBQUssQ0FBQyxDQUFDLElBQUlYLFdBQVcsQ0FBQ08sWUFBWSxDQUFDO0VBQzNDLENBQUM7RUFFRCxvQkFDRTVCLE1BQUEsQ0FBQW9DLE9BQUEsQ0FBQUMsYUFBQSxDQUFDakMsTUFBQSxDQUFBZ0MsT0FBSztJQUNKYixlQUFlLEVBQUVBLGVBQWdCO0lBQ2pDZSxRQUFRLGVBQ050QyxNQUFBLENBQUFvQyxPQUFBLENBQUFDLGFBQUEsQ0FBQXJDLE1BQUEsQ0FBQW9DLE9BQUEsQ0FBQUcsUUFBQSxxQkFDRXZDLE1BQUEsQ0FBQW9DLE9BQUEsQ0FBQUMsYUFBQSxDQUFDOUIsWUFBWSxRQUNWaUMsYUFBSSxDQUFDQyxDQUFDLENBQUMseURBQXlELENBQ3JELENBQUMsZUFDZnpDLE1BQUEsQ0FBQW9DLE9BQUEsQ0FBQUMsYUFBQSxDQUFDeEIsWUFBWSxxQkFDWGIsTUFBQSxDQUFBb0MsT0FBQSxDQUFBQyxhQUFBLENBQUN2QixrQkFBa0I7TUFBQ0UsS0FBSyxFQUFFMEIsWUFBSyxDQUFDQyxXQUFXLENBQUNDLE9BQU8sQ0FBQ0M7SUFBSSxHQUN0REwsYUFBSSxDQUFDQyxDQUFDLENBQUMsd0NBQXdDLENBQzlCLENBQUMsZUFDckJ6QyxNQUFBLENBQUFvQyxPQUFBLENBQUFDLGFBQUEsQ0FBQ3ZCLGtCQUFrQjtNQUNqQmdDLE9BQU8sRUFBRUEsQ0FBQSxLQUFNO1FBQ2J0QixpQkFBaUIsQ0FBQyxDQUFDO01BQ3JCLENBQUU7TUFDRlIsS0FBSyxFQUFFMEIsWUFBSyxDQUFDQyxXQUFXLENBQUNJLElBQUksQ0FBQ0M7SUFBSyxHQUVsQ1IsYUFBSSxDQUFDQyxDQUFDLENBQUMseUNBQXlDLENBQy9CLENBQ1IsQ0FDZDtFQUNILENBQ0YsQ0FBQztBQUVOLENBQUM7QUFBQyxJQUFBUSxRQUFBLEdBRWFoQyxnQkFBZ0I7QUFBQWlDLE9BQUEsQ0FBQWQsT0FBQSxHQUFBYSxRQUFBIn0=