@kando-env/kando-ui 1.2.383 → 1.2.384

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (584) hide show
  1. package/lib/Router.js +73 -36
  2. package/lib/Widgets/EventsCarousel/EventsCarousel.js +35 -25
  3. package/lib/Widgets/EventsRow/EventsRow.js +39 -27
  4. package/lib/Widgets/Map/GraphUtils.js +3 -3
  5. package/lib/Widgets/Map/Map.js +122 -86
  6. package/lib/Widgets/Map/MapUtils.js +95 -81
  7. package/lib/Widgets/Map/areas/AreaPolygon.js +77 -53
  8. package/lib/Widgets/Map/areas/AreaPolygons.js +24 -23
  9. package/lib/Widgets/Map/areas/AreaUtils.js +46 -47
  10. package/lib/Widgets/Map/areas/Patterns.js +4 -4
  11. package/lib/Widgets/Map/edges/Edge.js +37 -33
  12. package/lib/Widgets/Map/edges/Edges.js +26 -21
  13. package/lib/Widgets/Map/edges/arrows/Arrows.js +44 -23
  14. package/lib/Widgets/Map/events/Event.js +17 -17
  15. package/lib/Widgets/Map/events/EventIndicator.js +60 -65
  16. package/lib/Widgets/Map/events/EventPath.js +23 -25
  17. package/lib/Widgets/Map/events/EventUtils.js +80 -60
  18. package/lib/Widgets/Map/events/NetworkForSpecificEvent.js +18 -17
  19. package/lib/Widgets/Map/events/PointOfEvent.js +34 -29
  20. package/lib/Widgets/Map/events/PointsForSpecificEvent.js +37 -30
  21. package/lib/Widgets/Map/events/Snail.js +20 -19
  22. package/lib/Widgets/Map/graphDNDArea/GraphDNDArea.js +86 -93
  23. package/lib/Widgets/Map/map/FloatingGraph.js +18 -22
  24. package/lib/Widgets/Map/map/GraphDateButton.js +17 -25
  25. package/lib/Widgets/Map/matchGraph/MatchGraph.js +12 -13
  26. package/lib/Widgets/Map/matchGraph/createFloatingGraph.js +15 -16
  27. package/lib/Widgets/Map/points/PointIcon.js +15 -22
  28. package/lib/Widgets/Map/points/PointMarker.js +87 -71
  29. package/lib/Widgets/Map/points/PointMarkers.js +66 -45
  30. package/lib/Widgets/Map/points/PointUtils.js +83 -145
  31. package/lib/Widgets/MostPolluting/Areas/AreaBox/AreaBox.js +47 -30
  32. package/lib/Widgets/MostPolluting/Areas/AreaBox/Map/Map.js +10 -11
  33. package/lib/Widgets/MostPolluting/Areas/AreaBox/PieChart/PieChart.js +12 -11
  34. package/lib/Widgets/MostPolluting/Areas/AreaBox/styles.js +3 -3
  35. package/lib/Widgets/MostPolluting/Areas/Areas.js +60 -31
  36. package/lib/Widgets/MostPolluting/Areas/areas.mock.js +3 -3
  37. package/lib/Widgets/MostPolluting/Areas/styles.js +3 -3
  38. package/lib/Widgets/MostPolluting/EmptyState/EmptyState.js +8 -11
  39. package/lib/Widgets/MostPolluting/Factories/Factories.js +70 -39
  40. package/lib/Widgets/MostPolluting/Factories/FactoryBox/FactoryBox.js +18 -15
  41. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PieChart/PieChart.js +8 -8
  42. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PollutionScore.js +10 -12
  43. package/lib/Widgets/MostPolluting/Factories/FactoryBox/styles.js +3 -3
  44. package/lib/Widgets/MostPolluting/Factories/factories.mock.js +2 -2
  45. package/lib/Widgets/MostPolluting/Factories/styles.js +3 -3
  46. package/lib/Widgets/MostPolluting/MostPolluting.js +35 -25
  47. package/lib/Widgets/MostPolluting/MostPolluting.stories.js +22 -18
  48. package/lib/Widgets/MostPolluting/ShowMore/ShowMore.js +4 -6
  49. package/lib/Widgets/MostPolluting/ShowMore/styles.js +4 -6
  50. package/lib/Widgets/MostPolluting/assets/index.js +10 -10
  51. package/lib/Widgets/MostPolluting/components/ChangePercent.js +13 -19
  52. package/lib/Widgets/MostPolluting/components/ChangePercent.test.js +30 -35
  53. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.js +35 -45
  54. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.test.js +35 -39
  55. package/lib/Widgets/MostPolluting/components/PotentialImpact.js +27 -28
  56. package/lib/Widgets/MostPolluting/components/PotentialImpact.test.js +50 -54
  57. package/lib/Widgets/MostPolluting/styles.js +3 -3
  58. package/lib/Widgets/PotentialImpactSummary/Back/Back.js +5 -7
  59. package/lib/Widgets/PotentialImpactSummary/Icon.js +6 -8
  60. package/lib/Widgets/PotentialImpactSummary/index.js +27 -19
  61. package/lib/Widgets/PotentialImpactSummary/index.test.js +52 -47
  62. package/lib/Widgets/PotentialImpactSummary/styles.js +7 -7
  63. package/lib/Widgets/QualitySummary/PieChart/LegendMenu/LegendMenu.js +7 -9
  64. package/lib/Widgets/QualitySummary/PieChart/PieChart.js +17 -22
  65. package/lib/Widgets/QualitySummary/PieChart/PieChart.test.js +32 -35
  66. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.js +24 -26
  67. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.test.js +37 -35
  68. package/lib/Widgets/QualitySummary/QualitySummary.js +13 -9
  69. package/lib/Widgets/QualitySummary/qualitySummary.mock.js +4 -4
  70. package/lib/Widgets/QualitySummary/styles.js +15 -23
  71. package/lib/Widgets/UtilityInformation/MapModal/MapModal.js +13 -12
  72. package/lib/Widgets/UtilityInformation/PopupWithMap/Map/Map.js +26 -27
  73. package/lib/Widgets/UtilityInformation/PopupWithMap/PopupWithMap.js +24 -29
  74. package/lib/Widgets/UtilityInformation/UtilityInformation.js +37 -23
  75. package/lib/Widgets/UtilityInformation/styles.js +25 -34
  76. package/lib/Widgets/UtilityInformation/utilityInformation.mock.js +3 -3
  77. package/lib/assets/icons/TopNavbar/index.js +6 -6
  78. package/lib/assets/icons/TrendSvg.js +6 -6
  79. package/lib/assets/icons/index.js +15 -15
  80. package/lib/assets/icons/kandoStepper/index.js +5 -5
  81. package/lib/assets/icons/siteTypes/index.js +1 -1
  82. package/lib/components/ApplyButton/ApplyButton.js +9 -9
  83. package/lib/components/Backdrop/Backdrop.js +4 -6
  84. package/lib/components/ContentLoader/ContentLoader.js +9 -11
  85. package/lib/components/ContentLoader/index.js +1 -1
  86. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.js +12 -13
  87. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.stories.js +5 -3
  88. package/lib/components/CustomInputs/DoubleTabs/styles.js +12 -20
  89. package/lib/components/CustomInputs/PasswordInput/PasswordInput.js +20 -13
  90. package/lib/components/CustomInputs/PrimaryButton/PrimaryButton.js +4 -6
  91. package/lib/components/CustomInputs/Search/Search.js +63 -42
  92. package/lib/components/CustomInputs/Select/Select.js +58 -45
  93. package/lib/components/CustomInputs/Select/Select.stories.js +6 -4
  94. package/lib/components/DamageType/DamageType.js +57 -35
  95. package/lib/components/DataLoaderError/DataLoaderError.js +6 -8
  96. package/lib/components/DischargeHeatmap/DischargeHeatmap.js +10 -9
  97. package/lib/components/DischargeHeatmap/DischargeHeatmap.test.js +71 -70
  98. package/lib/components/DischargeHeatmap/DischargeHeatmapContainer.js +37 -27
  99. package/lib/components/DischargeHeatmap/HighchartsOptions.js +12 -10
  100. package/lib/components/DischargeHeatmap/mocks/handlers.js +3 -3
  101. package/lib/components/DischargeHeatmap/popupText.js +10 -10
  102. package/lib/components/DischargeHeatmap/titles.js +3 -3
  103. package/lib/components/ErrorBoundary.js +41 -27
  104. package/lib/components/Events/Events.js +58 -41
  105. package/lib/components/Graph/Graph.js +96 -77
  106. package/lib/components/Header/Breadcrumbs/Breadcrumbs.js +21 -17
  107. package/lib/components/Header/DoubleTabs/DoubleTabs.js +33 -25
  108. package/lib/components/Header/DoubleTabs/DoubleTabs.stories.js +5 -3
  109. package/lib/components/Header/DoubleTabs/styles.js +4 -4
  110. package/lib/components/Header/Header.js +2 -2
  111. package/lib/components/Header/Header.stories.js +5 -3
  112. package/lib/components/Header/InfoBar/Breadcrumbs/Breadcrumbs.js +34 -22
  113. package/lib/components/Header/InfoBar/InfoBar.js +103 -74
  114. package/lib/components/Header/InfoBar/Search/Control.js +9 -9
  115. package/lib/components/Header/InfoBar/Search/GroupLabel.js +5 -7
  116. package/lib/components/Header/InfoBar/Search/Search.js +21 -16
  117. package/lib/components/Header/InfoBar/Search/SearchContainer.js +33 -21
  118. package/lib/components/Header/InfoBar/Search/searchStyle.js +49 -41
  119. package/lib/components/Header/InfoBar/TimeFilter.js +14 -11
  120. package/lib/components/Header/KandoNavbar/KandoNavbar.js +89 -64
  121. package/lib/components/Header/Slideshow/Slideshow.js +90 -68
  122. package/lib/components/Header/Toolbar/ClientImg/ClientImg.js +4 -6
  123. package/lib/components/Header/Toolbar/CustomerMenu/CustomerMenu.js +23 -21
  124. package/lib/components/Header/Toolbar/MenuCreator/MenuCreator.js +18 -18
  125. package/lib/components/Header/Toolbar/SearchDropdown/SearchDropdown.js +43 -37
  126. package/lib/components/Header/Toolbar/Toolbar.js +74 -55
  127. package/lib/components/InfoBar/InfoBar.js +23 -10
  128. package/lib/components/InfoBar/InfoBar.stories.js +5 -3
  129. package/lib/components/KandoModal/KandoModal.js +41 -27
  130. package/lib/components/Link.js +7 -8
  131. package/lib/components/Links/CustomRedirect/CustomRedirect.js +8 -9
  132. package/lib/components/Links/StyledLink/StyledLink.js +12 -12
  133. package/lib/components/Links/StyledNavLink/StyledNavLink.js +10 -11
  134. package/lib/components/LiveEvents/CarouselSlide.js +7 -9
  135. package/lib/components/LiveEvents/LiveEvents.js +3 -5
  136. package/lib/components/LoaderByPercent/LoaderByPercent.js +29 -37
  137. package/lib/components/Map/Map.js +23 -20
  138. package/lib/components/Modal/Modal.js +9 -9
  139. package/lib/components/NarrowHeader.js +31 -17
  140. package/lib/components/PointInfo/PointInfo.js +17 -19
  141. package/lib/components/PopupModal/PopupModal.js +16 -12
  142. package/lib/components/PopupModal/PopupModal.stories.js +19 -15
  143. package/lib/components/Sector/Sector.js +6 -8
  144. package/lib/components/Sector/Sector.test.js +20 -19
  145. package/lib/components/Sector/sectorIcons.js +2 -2
  146. package/lib/components/SevereEvent/Eta/Eta.js +52 -49
  147. package/lib/components/SevereEvent/Eta/styles.js +6 -10
  148. package/lib/components/SevereEvent/SevereEvent.js +37 -30
  149. package/lib/components/Spinner/Spinner.js +8 -8
  150. package/lib/components/Spinner/Spinner.stories.js +6 -4
  151. package/lib/components/Spinner/styles.js +14 -22
  152. package/lib/components/Tabs/Tabs.js +29 -21
  153. package/lib/components/Tabs/Tabs.stories.js +6 -4
  154. package/lib/components/Tabs/assets/index.js +5 -5
  155. package/lib/components/TimeRangeSelector/KandoRangePicker/ComparisonSelect.js +15 -12
  156. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePicker.js +51 -40
  157. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePickerContainer.js +31 -19
  158. package/lib/components/TimeRangeSelector/TimeRangeHelper.js +25 -20
  159. package/lib/components/TimeRangeSelector/TimeRangeItem/TimeRangeItem.js +13 -13
  160. package/lib/components/TimeRangeSelector/TimeRangeList.js +24 -23
  161. package/lib/components/TimeRangeSelector/TimeRangeOptions.js +25 -17
  162. package/lib/components/TimeRangeSelector/TimeRangeSelector.js +32 -31
  163. package/lib/components/TimeRangeSelector/TimeRangeSelector.stories.js +6 -4
  164. package/lib/components/TimeRangeSelector/constants.js +3 -3
  165. package/lib/components/Toggle/Toggle.js +17 -12
  166. package/lib/components/TrendGraph/TrendGraph.js +39 -23
  167. package/lib/components/TrendGraphNVL/TrendGraphNVL.js +33 -27
  168. package/lib/development-environment/index.js +12 -8
  169. package/lib/development-environment/mock/browser.js +4 -2
  170. package/lib/development-environment/mock/get.js +10 -8
  171. package/lib/development-environment/mock/handlers.js +2 -2
  172. package/lib/development-environment/mock/mockBus.js +4 -4
  173. package/lib/development-environment/mock/mockObjects/area-trends-graph.js +2 -2
  174. package/lib/development-environment/mock/mockObjects/areaInformation.js +2 -2
  175. package/lib/development-environment/mock/mockObjects/areaQualitySummary.js +2 -2
  176. package/lib/development-environment/mock/mockObjects/areaSitesData.js +2 -2
  177. package/lib/development-environment/mock/mockObjects/areasJson.js +2 -2
  178. package/lib/development-environment/mock/mockObjects/controlRoomNetworkEdges.js +2 -2
  179. package/lib/development-environment/mock/mockObjects/covidView-areasData-24.js +2 -2
  180. package/lib/development-environment/mock/mockObjects/data-menuData.js +2 -2
  181. package/lib/development-environment/mock/mockObjects/data-search.js +2 -2
  182. package/lib/development-environment/mock/mockObjects/discharge_effluent_quality.js +2 -2
  183. package/lib/development-environment/mock/mockObjects/discharge_pattern_overtime.js +2 -2
  184. package/lib/development-environment/mock/mockObjects/eventFiltersJson.js +2 -2
  185. package/lib/development-environment/mock/mockObjects/eventsJson.js +2 -2
  186. package/lib/development-environment/mock/mockObjects/metascore.js +2 -2
  187. package/lib/development-environment/mock/mockObjects/permissionsJson.js +2 -2
  188. package/lib/development-environment/mock/mockObjects/pointsJson.js +2 -2
  189. package/lib/development-environment/mock/mockObjects/site-info.js +2 -2
  190. package/lib/development-environment/mock/mockObjects/trend-graph-component-data-907.js +2 -2
  191. package/lib/development-environment/togly/ToglyDashboard.js +22 -13
  192. package/lib/development-environment/togly/ToglyItem.js +31 -36
  193. package/lib/development-environment/togly/init.js +2 -2
  194. package/lib/development-environment/togly/macro.js +10 -14
  195. package/lib/development-environment/togly/useDoubleKeyDown.js +9 -7
  196. package/lib/development-environment/togly/useLocalStorage.js +18 -13
  197. package/lib/hooks/useApi.js +55 -19
  198. package/lib/hooks/useApiWithDashboardQuery.js +49 -30
  199. package/lib/hooks/useClickOutside.js +3 -3
  200. package/lib/hooks/useInitializeHeaders.js +5 -5
  201. package/lib/hooks/useKandoFetch.js +29 -16
  202. package/lib/hooks/useMap.js +34 -22
  203. package/lib/hooks/useNavContext.js +26 -22
  204. package/lib/hooks/useRemoveExistingLayers.js +6 -6
  205. package/lib/hooks/useUpdateEventBodyTail.js +17 -13
  206. package/lib/hooks/useUserTimeZone.js +30 -33
  207. package/lib/hooks/useUserTimeZone.test.js +22 -19
  208. package/lib/hooks/useWindowSize.js +14 -7
  209. package/lib/index.js +12 -11
  210. package/lib/macros/getVersion.js +3 -3
  211. package/lib/pages/AreaPage/AreaPage.js +67 -34
  212. package/lib/pages/AreaPage/Dashboard/AreaMapContainer/AreaMapContainer.js +17 -16
  213. package/lib/pages/AreaPage/Dashboard/Dashboard.js +31 -30
  214. package/lib/pages/AreaPage/Dashboard/LineChart/LineChart.js +25 -17
  215. package/lib/pages/AreaPage/Dashboard/LineChart/options/options.js +4 -4
  216. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/PieChart/PieChart.js +8 -8
  217. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/SiteBox.js +11 -11
  218. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/styles.js +3 -3
  219. package/lib/pages/AreaPage/Dashboard/Sites/factories.mock.js +2 -2
  220. package/lib/pages/AreaPage/Dashboard/Sites/styles.js +4 -4
  221. package/lib/pages/AssessmentPage/AssessmentPage.js +46 -40
  222. package/lib/pages/CannyWidget/Feedback.js +13 -13
  223. package/lib/pages/CovidPage/CovidPage.js +13 -8
  224. package/lib/pages/CovidPage/components/Body.js +27 -25
  225. package/lib/pages/CovidPage/components/Map.js +39 -29
  226. package/lib/pages/CovidPage/components/Sidebar.js +15 -16
  227. package/lib/pages/CovidPage/components/Summary.js +27 -20
  228. package/lib/pages/CovidPage/components/TrendGraphNVL/TrendGraphNVL.js +33 -27
  229. package/lib/pages/CovidPage/components/TrendPopupContent/TrendPopupContent.js +73 -51
  230. package/lib/pages/CovidPage/components/areas/Area.js +40 -29
  231. package/lib/pages/CovidPage/components/areas/AreaPolygonWBE.js +46 -55
  232. package/lib/pages/CovidPage/components/areas/AreaPolygonsWBE.js +35 -32
  233. package/lib/pages/CovidPage/components/areas/AreasList.js +46 -34
  234. package/lib/pages/CovidPage/components/areas/Sort.js +14 -11
  235. package/lib/pages/CovidPage/components/nvlStatusHelper.js +11 -11
  236. package/lib/pages/DashboardMap/AreaCard.js +28 -28
  237. package/lib/pages/DashboardMap/AssessmentIcon.js +7 -8
  238. package/lib/pages/DashboardMap/Capacity.js +80 -31
  239. package/lib/pages/DashboardMap/FactoryCard.js +26 -31
  240. package/lib/pages/DashboardMap/HighchartsOptions.js +4 -5
  241. package/lib/pages/DashboardMap/List.js +105 -74
  242. package/lib/pages/DashboardMap/ListContext.js +19 -15
  243. package/lib/pages/DashboardMap/Loader.js +2 -2
  244. package/lib/pages/DashboardMap/SeverityBadge.js +18 -10
  245. package/lib/pages/DashboardMap/WWTPMap.js +60 -48
  246. package/lib/pages/DashboardMap/WaterDischarge.js +8 -8
  247. package/lib/pages/DashboardMap/Widget.js +71 -54
  248. package/lib/pages/DashboardMap/utils.js +65 -48
  249. package/lib/pages/EventsPage/Body/Body.js +15 -20
  250. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropContainer.js +19 -17
  251. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropUtils.js +35 -27
  252. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropWrapper.js +6 -8
  253. package/lib/pages/EventsPage/DragAndDropArea/DraggableItem.js +7 -11
  254. package/lib/pages/EventsPage/DragAndDropArea/DraggableList.js +30 -21
  255. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +64 -53
  256. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainerHelpers.js +31 -19
  257. package/lib/pages/EventsPage/EventsPage.js +10 -7
  258. package/lib/pages/EventsPage/FloatingGraph/FloatingGraph.js +38 -26
  259. package/lib/pages/EventsPage/events/MoreInfo.js +16 -17
  260. package/lib/pages/EventsPage/events/Sidebar.js +18 -22
  261. package/lib/pages/EventsPage/events/event_info/Contaminants/Contaminants.js +7 -7
  262. package/lib/pages/EventsPage/events/event_info/Contaminants/ContaminantsList.js +20 -17
  263. package/lib/pages/EventsPage/events/event_info/EarlyWarnings.js +35 -30
  264. package/lib/pages/EventsPage/events/event_info/EventDetails.js +37 -40
  265. package/lib/pages/EventsPage/events/event_info/EventInfo.js +42 -43
  266. package/lib/pages/EventsPage/events/event_info/EventPath/EventPath.js +4 -4
  267. package/lib/pages/EventsPage/events/event_info/EventSection.js +19 -17
  268. package/lib/pages/EventsPage/events/event_info/EventSection.test.js +38 -43
  269. package/lib/pages/EventsPage/events/event_info/EventTimeRange.js +47 -39
  270. package/lib/pages/EventsPage/events/event_info/Header/Header.js +4 -6
  271. package/lib/pages/EventsPage/events/event_info/Header/HeaderContainer.js +33 -30
  272. package/lib/pages/EventsPage/events/event_info/HistoricalInformation.js +6 -6
  273. package/lib/pages/EventsPage/events/event_info/MiniEventTree.js +36 -29
  274. package/lib/pages/EventsPage/events/event_info/MobileEventPath.js +6 -4
  275. package/lib/pages/EventsPage/events/event_info/PollutionAssessment /PollutionAssessment.js +10 -10
  276. package/lib/pages/EventsPage/events/event_info/PollutionAssessment /PollutionTypesList.js +9 -7
  277. package/lib/pages/EventsPage/events/event_info/PollutionDischarge.js +21 -22
  278. package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResult.js +19 -12
  279. package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResultButton.js +3 -5
  280. package/lib/pages/EventsPage/events/event_info/SamplingList/SamplingDetails.js +9 -11
  281. package/lib/pages/EventsPage/events/event_info/SamplingList/Samplings.js +26 -22
  282. package/lib/pages/EventsPage/events/event_info/SeverityScore/ScoreExplanation.js +8 -12
  283. package/lib/pages/EventsPage/events/event_info/SeverityScore/SeverityScore.js +7 -7
  284. package/lib/pages/EventsPage/events/event_info/SourceDetails/Confidence.js +4 -6
  285. package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.js +2 -2
  286. package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.test.js +10 -12
  287. package/lib/pages/EventsPage/events/event_info/SourceDetails/IconAndTitles.js +8 -10
  288. package/lib/pages/EventsPage/events/event_info/SourceDetails/MoreInfoButton.js +12 -10
  289. package/lib/pages/EventsPage/events/event_info/SourceDetails/OtherSources.js +3 -5
  290. package/lib/pages/EventsPage/events/event_info/SourceDetails/PotentialSources.js +5 -7
  291. package/lib/pages/EventsPage/events/event_info/SourceDetails/SingleSource.js +5 -7
  292. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceCardBody.js +4 -6
  293. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.js +9 -11
  294. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.test.js +15 -15
  295. package/lib/pages/EventsPage/events/event_info/SourceDetails/WaterDischarge.js +6 -6
  296. package/lib/pages/EventsPage/events/event_info/Timelines/DischargeBox.js +5 -7
  297. package/lib/pages/EventsPage/events/event_info/Timelines/EarlyWarning.js +15 -17
  298. package/lib/pages/EventsPage/events/event_info/Timelines/LiveStatusBadge.js +4 -4
  299. package/lib/pages/EventsPage/events/event_info/Timelines/SeenBox.js +8 -10
  300. package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.js +11 -16
  301. package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.test.js +8 -9
  302. package/lib/pages/EventsPage/events/event_info/Timelines/Titles.js +2 -2
  303. package/lib/pages/EventsPage/events/event_info/Timelines/style.js +3 -3
  304. package/lib/pages/EventsPage/events/event_info/charts/EventDetailsPieChart.js +38 -25
  305. package/lib/pages/EventsPage/events/event_info/damage_type/DamageType.js +36 -29
  306. package/lib/pages/EventsPage/events/event_info/samplingsOld/Sampling.js +9 -11
  307. package/lib/pages/EventsPage/events/event_info/samplingsOld/Samplings.js +17 -15
  308. package/lib/pages/EventsPage/events/event_info/sources/Source.js +30 -27
  309. package/lib/pages/EventsPage/events/event_info/sources/Sources.js +26 -23
  310. package/lib/pages/EventsPage/events/event_info/styles.js +12 -20
  311. package/lib/pages/EventsPage/events/events_list/EventItem.js +19 -18
  312. package/lib/pages/EventsPage/events/events_list/EventUtils.js +10 -10
  313. package/lib/pages/EventsPage/events/events_list/EventsList.js +145 -124
  314. package/lib/pages/EventsPage/events/events_list/Filter/Filter.js +55 -40
  315. package/lib/pages/EventsPage/events/events_list/Filter/FilterContainer.js +115 -79
  316. package/lib/pages/EventsPage/events/events_list/Filter/FilterItem.js +77 -60
  317. package/lib/pages/EventsPage/events/events_list/Filter/FiltersDropDown.js +41 -38
  318. package/lib/pages/EventsPage/events/events_list/Filter/OptionsDropDown.js +36 -29
  319. package/lib/pages/EventsPage/events/events_list/Sort.js +16 -13
  320. package/lib/pages/ImportFileWizard/FileUploadRespones.js +20 -13
  321. package/lib/pages/ImportFileWizard/ImportButtomButtons.js +4 -6
  322. package/lib/pages/ImportFileWizard/ImportFile.js +22 -20
  323. package/lib/pages/ImportFileWizard/ResponseBody.js +33 -24
  324. package/lib/pages/ImportFileWizard/ValidationForm.js +22 -23
  325. package/lib/pages/ImportFileWizard/ValidationResponse.js +21 -21
  326. package/lib/pages/ImportFileWizard/importFileUtils.js +1 -1
  327. package/lib/pages/ImportGisPage/ImportGisContainer.js +24 -21
  328. package/lib/pages/ImportGisPage/ImportedGisFilesPage.js +23 -21
  329. package/lib/pages/ImportGisPage/importGisUtils.js +21 -13
  330. package/lib/pages/ImportGisProcess/index.js +15 -12
  331. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/MultiChoiceTabs.js +12 -7
  332. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/RadioTabs.js +19 -17
  333. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/SeverityButtons.js +3 -3
  334. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.js +65 -56
  335. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.stories.js +8 -6
  336. package/lib/pages/NotificationsPage/Notification/Notification.js +12 -16
  337. package/lib/pages/NotificationsPage/Notifications.mock.js +2 -2
  338. package/lib/pages/NotificationsPage/Notifications.stories.js +6 -4
  339. package/lib/pages/NotificationsPage/NotificationsPage.js +36 -18
  340. package/lib/pages/NotificationsPage/assets/index.js +9 -9
  341. package/lib/pages/NotificationsPageV2/NotificationsPage.js +97 -71
  342. package/lib/pages/NotificationsPageV2/components/NotificationsCard.js +63 -94
  343. package/lib/pages/NotificationsPageV2/components/NotificationsForm/EventType.js +16 -14
  344. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSendVia.js +16 -18
  345. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSensors.js +21 -17
  346. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSources.js +21 -17
  347. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationTags.js +22 -18
  348. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationsFormContent.js +69 -83
  349. package/lib/pages/NotificationsPageV2/components/NotificationsForm/WaterAuthoritySelection.js +22 -18
  350. package/lib/pages/NotificationsPageV2/components/NotificationsSidebar.js +74 -74
  351. package/lib/pages/NotificationsPageV2/components/NotificationsUtils.js +95 -97
  352. package/lib/pages/NotificationsPageV2/notificationUtils.js +48 -54
  353. package/lib/pages/OldSitePage/OldSitePage.js +132 -57
  354. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.js +5 -5
  355. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.stories.js +5 -3
  356. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +6 -8
  357. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +20 -18
  358. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +7 -9
  359. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +18 -12
  360. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +12 -16
  361. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +5 -3
  362. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +12 -18
  363. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +63 -51
  364. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +7 -9
  365. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.js +53 -29
  366. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.mock.js +4 -4
  367. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.stories.js +12 -10
  368. package/lib/pages/OldSitePage/SamplingParameters/charts/ParametersChart.js +10 -11
  369. package/lib/pages/OldSitePage/SamplingParameters/charts/SamplingChart.js +11 -10
  370. package/lib/pages/OldSitePage/SamplingParameters/charts/options/options.js +28 -32
  371. package/lib/pages/OldSitePage/SamplingParameters/dataParser.js +29 -27
  372. package/lib/pages/OldSitePage/SamplingParameters/styles/samplingParameters.js +4 -4
  373. package/lib/pages/OldSitePage/SamplingParameters/styles/styles.js +12 -18
  374. package/lib/pages/ProfilePage/Container.js +2 -2
  375. package/lib/pages/ProfilePage/PasswordModal/PasswordModal.js +44 -28
  376. package/lib/pages/ProfilePage/ProfilePage.js +214 -121
  377. package/lib/pages/ProfilePage/TelegramModal/TelegramModal.js +33 -25
  378. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.js +16 -19
  379. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.test.js +30 -28
  380. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionContainer.js +117 -57
  381. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionDropdown.js +20 -17
  382. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActions.js +10 -12
  383. package/lib/pages/SamplingsPage/ActionsDropDown/ViewLabResult.js +41 -39
  384. package/lib/pages/SamplingsPage/DesktopActions/DesktopActions.js +26 -25
  385. package/lib/pages/SamplingsPage/DesktopActions/DownloadCSV.js +16 -16
  386. package/lib/pages/SamplingsPage/DesktopActions/UploadLabResult.js +15 -13
  387. package/lib/pages/SamplingsPage/NavigationDropdown.js +32 -45
  388. package/lib/pages/SamplingsPage/NewSamplingAction.js +100 -76
  389. package/lib/pages/SamplingsPage/SamplingMobileModal.js +101 -129
  390. package/lib/pages/SamplingsPage/SamplingProperties/ImageDeleteModal.js +22 -21
  391. package/lib/pages/SamplingsPage/SamplingProperties/ImagePreviewModal.js +22 -34
  392. package/lib/pages/SamplingsPage/SamplingProperties/ImageUpload.js +59 -36
  393. package/lib/pages/SamplingsPage/SamplingProperties/ManholeImageMobile.js +18 -15
  394. package/lib/pages/SamplingsPage/SamplingProperties/SamplerInProcess.js +7 -9
  395. package/lib/pages/SamplingsPage/SamplingProperties/SamplingProperties.js +194 -110
  396. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesForm.js +55 -49
  397. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHead.js +43 -47
  398. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHeadMobile.js +45 -49
  399. package/lib/pages/SamplingsPage/SamplingProperties/samplingPropertiesUtils.js +20 -19
  400. package/lib/pages/SamplingsPage/SamplingProperties/styles.js +3 -3
  401. package/lib/pages/SamplingsPage/SamplingSiteTableCell.js +6 -10
  402. package/lib/pages/SamplingsPage/SamplingsMobileItem.js +54 -58
  403. package/lib/pages/SamplingsPage/SamplingsMobileList.js +28 -21
  404. package/lib/pages/SamplingsPage/SamplingsPage.js +33 -27
  405. package/lib/pages/SamplingsPage/SamplingsPageContainer.js +58 -50
  406. package/lib/pages/SamplingsPage/samplingsPageUtils.js +76 -68
  407. package/lib/pages/SitePage/DischargePattern/DischargePattern.js +4 -6
  408. package/lib/pages/SitePage/PollutionContributor/PollutionContributor.js +13 -14
  409. package/lib/pages/SitePage/PollutionContributor/PollutionContributorContainer.js +13 -10
  410. package/lib/pages/SitePage/PollutionContributor/contributorUtils.js +16 -16
  411. package/lib/pages/SitePage/SamplingParameters/NoResults/NoResults.stories.js +5 -3
  412. package/lib/pages/SitePage/SamplingParameters/NoResults/index.js +10 -14
  413. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +8 -9
  414. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.test.js +23 -26
  415. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +17 -14
  416. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.test.js +32 -36
  417. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +7 -9
  418. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +24 -15
  419. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +12 -16
  420. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +5 -3
  421. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +12 -18
  422. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +70 -58
  423. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +7 -9
  424. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.js +26 -15
  425. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.mock.js +5 -5
  426. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.stories.js +12 -10
  427. package/lib/pages/SitePage/SamplingParameters/body/Body.js +9 -9
  428. package/lib/pages/SitePage/SamplingParameters/body/BodyContainer.js +37 -29
  429. package/lib/pages/SitePage/SamplingParameters/charts/ParametersChart.js +11 -11
  430. package/lib/pages/SitePage/SamplingParameters/charts/SamplingChart.js +11 -10
  431. package/lib/pages/SitePage/SamplingParameters/charts/options/options.js +59 -60
  432. package/lib/pages/SitePage/SamplingParameters/dataParser.js +39 -30
  433. package/lib/pages/SitePage/SamplingParameters/dataParser.test.js +9 -11
  434. package/lib/pages/SitePage/SamplingParameters/styles/samplingParameters.js +4 -4
  435. package/lib/pages/SitePage/SamplingParameters/styles/styles.js +12 -18
  436. package/lib/pages/SitePage/SiteInformation/EmptyState.js +7 -11
  437. package/lib/pages/SitePage/SiteInformation/SiteInformation.js +30 -31
  438. package/lib/pages/SitePage/SitePage.js +81 -42
  439. package/lib/pages/UploadLabResult/index.js +13 -13
  440. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.js +35 -26
  441. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.stories.js +8 -6
  442. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.js +8 -9
  443. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.stories.js +5 -3
  444. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/Eta.js +48 -47
  445. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/styles.js +6 -10
  446. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/LinkedSevereEvent.js +4 -4
  447. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/OptionalLinkedSevereEvent.js +6 -4
  448. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/SevereEvent.js +12 -13
  449. package/lib/pages/UtilityDashboardPage/TopBar/TopBar.js +12 -15
  450. package/lib/pages/UtilityDashboardPage/TopBar/constants.js +7 -7
  451. package/lib/pages/UtilityDashboardPage/TopBar/styles.js +2 -2
  452. package/lib/pages/UtilityDashboardPage/UtilityDashboard.js +29 -21
  453. package/lib/pages/UtilityDashboardPage/UtilityDashboard.stories.js +30 -26
  454. package/lib/pages/UtilityDashboardPage/UtilityDashboardMapContainer/UtilityDashboardMapContainer.js +17 -16
  455. package/lib/pages/UtilityDashboardPage/UtilityDashboardPage.js +13 -7
  456. package/lib/pages/UtilityDashboardPage/VirtualAreaDashboardPage.js +31 -27
  457. package/lib/pages/WbeDashboard/ExpandableComponent.js +8 -9
  458. package/lib/pages/WbeDashboard/GraphWrapper.js +36 -30
  459. package/lib/pages/WbeDashboard/IndividualTinyGraph.js +19 -17
  460. package/lib/pages/WbeDashboard/SearchInput.js +20 -15
  461. package/lib/pages/WbeDashboard/SummaryGraph.js +76 -50
  462. package/lib/pages/WbeDashboard/SummaryGraphModal.js +17 -19
  463. package/lib/pages/WbeDashboard/Tabs.js +11 -11
  464. package/lib/pages/WbeDashboard/WbeDashboardPage.js +213 -151
  465. package/lib/pages/WbeDashboard/WbeSummaryBar.js +48 -40
  466. package/lib/pages/WwtpPage/DashboardCard.js +23 -26
  467. package/lib/pages/WwtpPage/DischargePatternCard.js +23 -14
  468. package/lib/pages/WwtpPage/InletsCard/InletsBar.js +22 -26
  469. package/lib/pages/WwtpPage/InletsCard/InletsCard.js +18 -19
  470. package/lib/pages/WwtpPage/Map.js +3 -5
  471. package/lib/pages/WwtpPage/OrganicCard.js +2 -2
  472. package/lib/pages/WwtpPage/PotentialSaving/ImpactCard.js +2 -2
  473. package/lib/pages/WwtpPage/PotentialSaving/PotentialItem.js +6 -8
  474. package/lib/pages/WwtpPage/PotentialSaving/PotentialSaving.js +8 -9
  475. package/lib/pages/WwtpPage/PotentialSaving/PotentialSavingContainer.js +14 -18
  476. package/lib/pages/WwtpPage/PredictionCard.js +2 -2
  477. package/lib/pages/WwtpPage/TrendCard.js +19 -18
  478. package/lib/pages/WwtpPage/UpgradeBox.js +3 -3
  479. package/lib/pages/WwtpPage/WwtpPage.js +8 -8
  480. package/lib/pages/WwtpPage/WwtpPageContainer.js +16 -21
  481. package/lib/providers/Slideshow/SlideshowContext.js +9 -11
  482. package/lib/providers/Slideshow/SlideshowProvider.js +38 -22
  483. package/lib/providers/Slideshow/SlideshowRunner.js +19 -17
  484. package/lib/providers/UrlHistory/UrlHistoryContext.js +4 -6
  485. package/lib/providers/UrlHistory/UrlHistoryProvider.js +11 -12
  486. package/lib/providers/UrlHistory/index.js +2 -2
  487. package/lib/providers/UrlHistory/useLastVisited.js +5 -5
  488. package/lib/store/ImportGis/actionTypes.js +1 -1
  489. package/lib/store/ImportGis/actionsCreator.js +5 -7
  490. package/lib/store/ImportGis/reducer.js +29 -40
  491. package/lib/store/WBE/actionTypes.js +2 -2
  492. package/lib/store/WBE/reducer.js +9 -13
  493. package/lib/store/WWTPDashboard/WWTPDashboardSlice.js +14 -24
  494. package/lib/store/areas/actionTypes.js +4 -4
  495. package/lib/store/areas/actions.js +13 -7
  496. package/lib/store/areas/reducer.js +6 -8
  497. package/lib/store/context/actionTypes.js +3 -3
  498. package/lib/store/context/actions.js +3 -3
  499. package/lib/store/context/contextMiddlewares.js +16 -14
  500. package/lib/store/context/reducer.js +9 -13
  501. package/lib/store/dashboard/dashboardSlice.js +10 -18
  502. package/lib/store/edges/actionTypes.js +5 -5
  503. package/lib/store/edges/actions.js +8 -4
  504. package/lib/store/edges/reducer.js +17 -13
  505. package/lib/store/events/actionTypes.js +17 -17
  506. package/lib/store/events/actions.js +7 -3
  507. package/lib/store/events/reducer.js +49 -42
  508. package/lib/store/global/actionTypes.js +11 -11
  509. package/lib/store/global/actions.js +6 -8
  510. package/lib/store/global/reducer.js +10 -11
  511. package/lib/store/permissions/permissionsSlice.js +8 -12
  512. package/lib/store/points/actionTypes.js +3 -3
  513. package/lib/store/points/actions.js +8 -4
  514. package/lib/store/points/reducer.js +5 -7
  515. package/lib/store/rootActionTypes.js +2 -2
  516. package/lib/store/rootReducer.js +12 -17
  517. package/lib/store/rootStore.js +5 -5
  518. package/lib/store/samplings/actionTypes.js +1 -1
  519. package/lib/store/samplings/reducer.js +14 -16
  520. package/lib/styles/StylesLayout.js +3 -5
  521. package/lib/styles/theme/theme.js +27 -26
  522. package/lib/test/mocks/browser.js +4 -2
  523. package/lib/test/test-utils.js +15 -17
  524. package/lib/ui-kit/Button/Button.js +80 -128
  525. package/lib/ui-kit/Button/Button.test.js +29 -24
  526. package/lib/ui-kit/Checkbox/Checkbox.js +20 -30
  527. package/lib/ui-kit/ContentCard/ContentCard.js +18 -15
  528. package/lib/ui-kit/Dashboard/Dashboard.js +22 -25
  529. package/lib/ui-kit/DropDown/DropDown.js +24 -23
  530. package/lib/ui-kit/DropDown/DropDown.test.js +12 -12
  531. package/lib/ui-kit/DropDown/DropDownItem.js +21 -24
  532. package/lib/ui-kit/DropDown/DropdownToggle.js +8 -12
  533. package/lib/ui-kit/EmptyState/EmptyState.js +4 -6
  534. package/lib/ui-kit/IconAction/IconAction.js +5 -7
  535. package/lib/ui-kit/ImageUploadButton/ImageUploadButton.js +64 -48
  536. package/lib/ui-kit/InfoTooltip/InfoTooltip.js +52 -69
  537. package/lib/ui-kit/InletsPie/InletsPie.js +13 -15
  538. package/lib/ui-kit/InletsPie/options.js +6 -6
  539. package/lib/ui-kit/KandoList/KandoList.js +12 -14
  540. package/lib/ui-kit/KandoTable/KandoTable.js +40 -48
  541. package/lib/ui-kit/KandoTable/KandoTable.test.js +22 -16
  542. package/lib/ui-kit/Layout/Layout.js +4 -6
  543. package/lib/ui-kit/MobileInput/MobileInput.js +50 -60
  544. package/lib/ui-kit/ModalConfirmation/ModalConfirmation.js +16 -13
  545. package/lib/ui-kit/OrganicEvents/GaugeChart.js +6 -8
  546. package/lib/ui-kit/OrganicEvents/OrganicEvents.js +6 -6
  547. package/lib/ui-kit/OrganicEvents/OrganicEventsContainer.js +20 -27
  548. package/lib/ui-kit/OrganicEvents/TextInfo.js +10 -15
  549. package/lib/ui-kit/RadioButtons/RadioButtonGroup.js +8 -10
  550. package/lib/ui-kit/SamplingStatus/SamplingStatus.js +17 -14
  551. package/lib/ui-kit/SamplingStatus/SamplingStatusHelper.js +3 -3
  552. package/lib/ui-kit/ScoreGauge/ScoreGauge.js +20 -20
  553. package/lib/ui-kit/ScoreGauge/constant.js +3 -3
  554. package/lib/ui-kit/TimeLineChart/TrendChart.js +42 -54
  555. package/lib/ui-kit/TitleAndCloseHeader/TitleAndCloseHeader.js +7 -8
  556. package/lib/ui-kit/Tooltip/Tooltip.js +8 -14
  557. package/lib/ui-kit/index.js +8 -8
  558. package/lib/ui-kit/kandoStepper/KandoStepper.js +12 -12
  559. package/lib/ui-kit/siteName/SiteName.js +8 -11
  560. package/lib/utilities/ActionUtility.js +7 -7
  561. package/lib/utilities/Alert.js +17 -21
  562. package/lib/utilities/Analytics.js +11 -11
  563. package/lib/utilities/Array.js +5 -4
  564. package/lib/utilities/Enum.js +51 -15
  565. package/lib/utilities/ErrorBoundary.js +41 -27
  566. package/lib/utilities/File.js +69 -40
  567. package/lib/utilities/GetDir.js +7 -8
  568. package/lib/utilities/KandoDate.js +15 -7
  569. package/lib/utilities/KandoModal.js +26 -16
  570. package/lib/utilities/LocalStorage.js +10 -8
  571. package/lib/utilities/ThousandsToK.js +3 -3
  572. package/lib/utilities/TimeFormat.js +20 -21
  573. package/lib/utilities/Truncate.js +25 -17
  574. package/lib/utilities/edgesMath.js +15 -14
  575. package/lib/utilities/i18n.js +3 -3
  576. package/lib/utilities/kql.js +14 -12
  577. package/lib/utilities/map/icons.js +3 -3
  578. package/lib/utilities/polylinedecorator.js +112 -87
  579. package/lib/utilities/scoreToData.js +17 -17
  580. package/lib/utilities/scoreToData.test.js +5 -5
  581. package/lib/utilities/time.js +8 -8
  582. package/lib/utilities/uploadToS3.js +11 -11
  583. package/lib/utilities/urls.js +59 -61
  584. package/package.json +1 -1
@@ -1,10 +1,12 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.default = void 0;
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
8
10
  var _freeSolidSvgIcons = require("@fortawesome/free-solid-svg-icons");
9
11
  var _reactFontawesome = require("@fortawesome/react-fontawesome");
10
12
  var _react = _interopRequireWildcard(require("react"));
@@ -20,73 +22,90 @@ var _actions = require("store/global/actions");
20
22
  var _ErrorBoundary = _interopRequireDefault(require("utilities/ErrorBoundary"));
21
23
  var _i18n = _interopRequireDefault(require("utilities/i18n"));
22
24
  require("./NavbarStyle.scss");
23
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
24
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
- const updatePageTitle = title => document.title = `Kando - ${title}`;
26
- const defaultProps = {
25
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
26
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
27
+ var updatePageTitle = function updatePageTitle(title) {
28
+ return document.title = "Kando - ".concat(title);
29
+ };
30
+ var defaultProps = {
27
31
  selectedLabel: '',
28
32
  hasSearch: false
29
33
  };
30
34
  function replaceURL(key, value) {
31
- let params = new URLSearchParams(window.location.search);
35
+ var params = new URLSearchParams(window.location.search);
32
36
  params.set(key, value);
33
37
  return window.location.protocol + '//' + window.location.host + window.location.pathname + '?' + params.toString();
34
38
  }
35
- const KandoNavbar = _ref => {
36
- let {
37
- waterAuthorityId,
38
- selectedLabel,
39
- hasSearch
40
- } = _ref;
41
- const [waterAuthorities, setWaterAuthorities] = (0, _react.useState)([]);
42
- const [localWaterAuthority, setLocalWaterAuthority] = (0, _react.useState)({
43
- photo_url: 'missing',
44
- label: ''
45
- });
46
- const [waId, setWaId] = (0, _react.useState)(waterAuthorityId);
47
- const [menu, setMenu] = (0, _react.useState)({});
48
- const dispatch = (0, _reactRedux.useDispatch)();
49
- const useQuery = () => {
39
+ var KandoNavbar = function KandoNavbar(_ref) {
40
+ var waterAuthorityId = _ref.waterAuthorityId,
41
+ selectedLabel = _ref.selectedLabel,
42
+ hasSearch = _ref.hasSearch;
43
+ var _useState = (0, _react.useState)([]),
44
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
45
+ waterAuthorities = _useState2[0],
46
+ setWaterAuthorities = _useState2[1];
47
+ var _useState3 = (0, _react.useState)({
48
+ photo_url: 'missing',
49
+ label: ''
50
+ }),
51
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
52
+ localWaterAuthority = _useState4[0],
53
+ setLocalWaterAuthority = _useState4[1];
54
+ var _useState5 = (0, _react.useState)(waterAuthorityId),
55
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
56
+ waId = _useState6[0],
57
+ setWaId = _useState6[1];
58
+ var _useState7 = (0, _react.useState)({}),
59
+ _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
60
+ menu = _useState8[0],
61
+ setMenu = _useState8[1];
62
+ var dispatch = (0, _reactRedux.useDispatch)();
63
+ var useQuery = function useQuery() {
50
64
  return new URLSearchParams((0, _reactRouterDom.useLocation)().search);
51
65
  };
52
- const query = useQuery();
53
- const [customerMenu, setCustomerMenu] = (0, _react.useState)({
54
- edit: {
55
- link: '',
56
- label: 'main_screen.edit_account'
57
- },
58
- feedback: {
59
- link: '',
60
- label: 'main_screen.feedback'
61
- },
62
- help: {
63
- link: '',
64
- label: 'main_screen.help'
65
- },
66
- my_profile: {
67
- link: '',
68
- label: 'main_screen.my_profile'
69
- },
70
- name: undefined,
71
- sign_out: {
72
- link: '',
73
- label: 'main_screen.sign_out',
74
- method: ''
75
- }
66
+ var query = useQuery();
67
+ var _useState9 = (0, _react.useState)({
68
+ edit: {
69
+ link: '',
70
+ label: 'main_screen.edit_account'
71
+ },
72
+ feedback: {
73
+ link: '',
74
+ label: 'main_screen.feedback'
75
+ },
76
+ help: {
77
+ link: '',
78
+ label: 'main_screen.help'
79
+ },
80
+ my_profile: {
81
+ link: '',
82
+ label: 'main_screen.my_profile'
83
+ },
84
+ name: undefined,
85
+ sign_out: {
86
+ link: '',
87
+ label: 'main_screen.sign_out',
88
+ method: ''
89
+ }
90
+ }),
91
+ _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
92
+ customerMenu = _useState10[0],
93
+ setCustomerMenu = _useState10[1];
94
+ var navContext = (0, _reactRedux.useSelector)(function (state) {
95
+ return state.nav_context_data.navContext;
76
96
  });
77
- const navContext = (0, _reactRedux.useSelector)(state => state.nav_context_data.navContext);
78
- const history = (0, _reactRouterDom.useHistory)();
79
- const handleChange = selectedOption => {
97
+ var history = (0, _reactRouterDom.useHistory)();
98
+ var handleChange = function handleChange(selectedOption) {
80
99
  setWaId(selectedOption.value);
81
100
  dispatch((0, _actions.setWaterAuthority)({
82
101
  id: selectedOption.value,
83
102
  name: ''
84
103
  }));
85
- history.push(`/${navContext.name}/index?locale=${navContext.locale}&water_authority_id=${selectedOption.value}`);
104
+ history.push("/".concat(navContext.name, "/index?locale=").concat(navContext.locale, "&water_authority_id=").concat(selectedOption.value));
86
105
  };
87
- const iterate = obj => {
88
- let items = [];
89
- for (const property in obj) {
106
+ var iterate = function iterate(obj) {
107
+ var items = [];
108
+ for (var property in obj) {
90
109
  if (obj[property].expandable) {
91
110
  items.push( /*#__PURE__*/_react.default.createElement(_reactBootstrap.NavDropdown, {
92
111
  key: obj[property].label,
@@ -111,9 +130,9 @@ const KandoNavbar = _ref => {
111
130
  }
112
131
  return items;
113
132
  };
114
- const renderClientsPhoto = () => {
133
+ var renderClientsPhoto = function renderClientsPhoto() {
115
134
  if (localWaterAuthority !== undefined) {
116
- let url = localWaterAuthority.photo_url;
135
+ var url = localWaterAuthority.photo_url;
117
136
  return /*#__PURE__*/_react.default.createElement("img", {
118
137
  alt: "missing",
119
138
  src: url.startsWith('missing') ? _authority.default : url,
@@ -126,7 +145,7 @@ const KandoNavbar = _ref => {
126
145
  return;
127
146
  }
128
147
  };
129
- const buildSwitchClient = () => {
148
+ var buildSwitchClient = function buildSwitchClient() {
130
149
  if (waterAuthorities !== undefined && waterAuthorities.length !== 0) {
131
150
  if (waterAuthorities.length === 1) {
132
151
  return /*#__PURE__*/_react.default.createElement("p", {
@@ -145,21 +164,25 @@ const KandoNavbar = _ref => {
145
164
  classNamePrefix: "select",
146
165
  isSearchable: true,
147
166
  name: "color",
148
- options: waterAuthorities.map(localWaterAuthority => {
167
+ options: waterAuthorities.map(function (localWaterAuthority) {
149
168
  return {
150
169
  value: localWaterAuthority.id,
151
170
  label: localWaterAuthority.name
152
171
  };
153
172
  }),
154
- getOptionLabel: localWaterAuthority => localWaterAuthority.label
173
+ getOptionLabel: function getOptionLabel(localWaterAuthority) {
174
+ return localWaterAuthority.label;
175
+ }
155
176
  // @ts-ignore
156
177
  ,
157
- onChange: e => handleChange(e)
178
+ onChange: function onChange(e) {
179
+ return handleChange(e);
180
+ }
158
181
  })));
159
182
  }
160
183
  return;
161
184
  };
162
- const buildCustomerMenu = contextName => {
185
+ var buildCustomerMenu = function buildCustomerMenu(contextName) {
163
186
  if (customerMenu !== undefined) {
164
187
  // @ts-ignore
165
188
  return /*#__PURE__*/_react.default.createElement(_reactBootstrap.NavDropdown, {
@@ -173,7 +196,7 @@ const KandoNavbar = _ref => {
173
196
  alt: "avatar"
174
197
  }), /*#__PURE__*/_react.default.createElement("span", {
175
198
  className: 'greeting'
176
- }, `${_i18n.default.t('main_screen.hello')} ${customerMenu.name === undefined ? _i18n.default.t('main_screen.there') : ', ' + customerMenu.name}`))
199
+ }, "".concat(_i18n.default.t('main_screen.hello'), " ").concat(customerMenu.name === undefined ? _i18n.default.t('main_screen.there') : ', ' + customerMenu.name)))
177
200
  }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.NavDropdown.Item, {
178
201
  href: customerMenu.my_profile.link
179
202
  }, _i18n.default.t('main_screen.my_profile')), /*#__PURE__*/_react.default.createElement(_reactBootstrap.NavDropdown.Item, {
@@ -202,9 +225,11 @@ const KandoNavbar = _ref => {
202
225
  }
203
226
  return;
204
227
  };
205
- (0, _react.useEffect)(() => {
206
- let locale = query.get('locale') || 'en';
207
- fetch(`/data/menu_data.json?water_authority_id=${waId}&locale=${locale}`).then(response => response.json()).then(json => {
228
+ (0, _react.useEffect)(function () {
229
+ var locale = query.get('locale') || 'en';
230
+ fetch("/data/menu_data.json?water_authority_id=".concat(waId, "&locale=").concat(locale)).then(function (response) {
231
+ return response.json();
232
+ }).then(function (json) {
208
233
  setWaterAuthorities(json.water_authorities);
209
234
  setMenu(json.menu);
210
235
  dispatch((0, _actions.setWaterAuthority)({
@@ -239,7 +264,7 @@ const KandoNavbar = _ref => {
239
264
  style: {
240
265
  color: 'blue'
241
266
  }
242
- }, iterate(menu).map(item => {
267
+ }, iterate(menu).map(function (item) {
243
268
  return item;
244
269
  }), /*#__PURE__*/_react.default.createElement("div", {
245
270
  className: 'switch-client-container'
@@ -250,4 +275,4 @@ const KandoNavbar = _ref => {
250
275
  KandoNavbar.defaultProps = defaultProps;
251
276
  var _default = KandoNavbar;
252
277
  exports.default = _default;
253
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZnJlZVNvbGlkU3ZnSWNvbnMiLCJyZXF1aXJlIiwiX3JlYWN0Rm9udGF3ZXNvbWUiLCJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9yZWFjdEJvb3RzdHJhcCIsIl9yZWFjdFJlZHV4IiwiX3JlYWN0Um91dGVyRG9tIiwiX3JlYWN0U2VsZWN0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9rYW5kb19sb2dvIiwiX2F1dGhvcml0eSIsIl91c2VyIiwiX1N0eWxlZExpbmsiLCJfYWN0aW9ucyIsIl9FcnJvckJvdW5kYXJ5IiwiX2kxOG4iLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwidXBkYXRlUGFnZVRpdGxlIiwidGl0bGUiLCJkb2N1bWVudCIsImRlZmF1bHRQcm9wcyIsInNlbGVjdGVkTGFiZWwiLCJoYXNTZWFyY2giLCJyZXBsYWNlVVJMIiwidmFsdWUiLCJwYXJhbXMiLCJVUkxTZWFyY2hQYXJhbXMiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInNlYXJjaCIsInByb3RvY29sIiwiaG9zdCIsInBhdGhuYW1lIiwidG9TdHJpbmciLCJLYW5kb05hdmJhciIsIl9yZWYiLCJ3YXRlckF1dGhvcml0eUlkIiwid2F0ZXJBdXRob3JpdGllcyIsInNldFdhdGVyQXV0aG9yaXRpZXMiLCJ1c2VTdGF0ZSIsImxvY2FsV2F0ZXJBdXRob3JpdHkiLCJzZXRMb2NhbFdhdGVyQXV0aG9yaXR5IiwicGhvdG9fdXJsIiwibGFiZWwiLCJ3YUlkIiwic2V0V2FJZCIsIm1lbnUiLCJzZXRNZW51IiwiZGlzcGF0Y2giLCJ1c2VEaXNwYXRjaCIsInVzZVF1ZXJ5IiwidXNlTG9jYXRpb24iLCJxdWVyeSIsImN1c3RvbWVyTWVudSIsInNldEN1c3RvbWVyTWVudSIsImVkaXQiLCJsaW5rIiwiZmVlZGJhY2siLCJoZWxwIiwibXlfcHJvZmlsZSIsIm5hbWUiLCJ1bmRlZmluZWQiLCJzaWduX291dCIsIm1ldGhvZCIsIm5hdkNvbnRleHQiLCJ1c2VTZWxlY3RvciIsInN0YXRlIiwibmF2X2NvbnRleHRfZGF0YSIsImhpc3RvcnkiLCJ1c2VIaXN0b3J5IiwiaGFuZGxlQ2hhbmdlIiwic2VsZWN0ZWRPcHRpb24iLCJzZXRXYXRlckF1dGhvcml0eSIsImlkIiwicHVzaCIsImxvY2FsZSIsIml0ZXJhdGUiLCJpdGVtcyIsInByb3BlcnR5IiwiZXhwYW5kYWJsZSIsImNyZWF0ZUVsZW1lbnQiLCJOYXZEcm9wZG93biIsImkxOG4iLCJ0IiwiZXhwYW5zaW9uIiwiY2xhc3MiLCJMaW5rIiwiY2xhc3NOYW1lIiwidG8iLCJJdGVtIiwiaHJlZiIsInJlbmRlckNsaWVudHNQaG90byIsInVybCIsImFsdCIsInNyYyIsInN0YXJ0c1dpdGgiLCJXYXRlckF1dGhvcml0eU1pc3NpbmdJY29uIiwic3R5bGUiLCJoZWlnaHQiLCJ3aWR0aCIsImJ1aWxkU3dpdGNoQ2xpZW50IiwibGVuZ3RoIiwiSXRlbVRleHQiLCJjbGFzc05hbWVQcmVmaXgiLCJpc1NlYXJjaGFibGUiLCJvcHRpb25zIiwibWFwIiwiZ2V0T3B0aW9uTGFiZWwiLCJvbkNoYW5nZSIsImUiLCJidWlsZEN1c3RvbWVyTWVudSIsImNvbnRleHROYW1lIiwiYWxpZ25SaWdodCIsIkF2YXRhciIsIkRpdmlkZXIiLCJ1c2VFZmZlY3QiLCJmZXRjaCIsInRoZW4iLCJyZXNwb25zZSIsImpzb24iLCJ3YXRlcl9hdXRob3JpdGllcyIsIndhdGVyX2F1dGhvcml0eSIsImlzX2NhcGFjaXR5IiwiY3VzdG9tZXJfbWVudSIsImNsZWFudXAiLCJGcmFnbWVudCIsIk5hdmJhciIsImV4cGFuZCIsIlRvZ2dsZSIsIkJyYW5kIiwiS2FuZG9Mb2dvIiwiQ29sbGFwc2UiLCJOYXYiLCJjb2xvciIsIml0ZW0iLCJGb250QXdlc29tZUljb24iLCJpY29uIiwiZmFUaW50IiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvSGVhZGVyL0thbmRvTmF2YmFyL0thbmRvTmF2YmFyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmYVRpbnQgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnO1xuaW1wb3J0IHsgRm9udEF3ZXNvbWVJY29uIH0gZnJvbSAnQGZvcnRhd2Vzb21lL3JlYWN0LWZvbnRhd2Vzb21lJztcbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgTmF2LCBOYXZiYXIsIE5hdkRyb3Bkb3duIH0gZnJvbSAncmVhY3QtYm9vdHN0cmFwJztcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gJ3JlYWN0LXJlZHV4JztcbmltcG9ydCB7IHVzZUhpc3RvcnksIHVzZUxvY2F0aW9uIH0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSc7XG5pbXBvcnQgU2VsZWN0IGZyb20gJ3JlYWN0LXNlbGVjdCc7XG5pbXBvcnQgS2FuZG9Mb2dvIGZyb20gJ3NyYy9hc3NldHMva2FuZG9fbG9nby5wbmcnO1xuaW1wb3J0IFdhdGVyQXV0aG9yaXR5TWlzc2luZ0ljb24gZnJvbSAnc3JjL2Fzc2V0cy9taXNzaW5nL2F1dGhvcml0eS5wbmcnO1xuaW1wb3J0IEF2YXRhciBmcm9tICdzcmMvYXNzZXRzL3VzZXIuc3ZnJztcbmltcG9ydCB7IExpbmsgfSBmcm9tICdzcmMvY29tcG9uZW50cy9MaW5rcy9TdHlsZWRMaW5rL1N0eWxlZExpbmsnO1xuaW1wb3J0IHsgc2V0V2F0ZXJBdXRob3JpdHkgfSBmcm9tICdzcmMvc3RvcmUvZ2xvYmFsL2FjdGlvbnMnO1xuaW1wb3J0IHsgYXBwUmVkdWNlciB9IGZyb20gJ3NyYy9zdG9yZS9yb290UmVkdWNlcic7XG5pbXBvcnQgRXJyb3JCb3VuZGFyeSBmcm9tICdzcmMvdXRpbGl0aWVzL0Vycm9yQm91bmRhcnknO1xuaW1wb3J0IGkxOG4gZnJvbSAnc3JjL3V0aWxpdGllcy9pMThuJztcbmltcG9ydCAnLi9OYXZiYXJTdHlsZS5zY3NzJztcblxuY29uc3QgdXBkYXRlUGFnZVRpdGxlID0gKHRpdGxlOiBzdHJpbmcpID0+XG4gIChkb2N1bWVudC50aXRsZSA9IGBLYW5kbyAtICR7dGl0bGV9YCk7XG5cbnR5cGUgSVByb3BzID0ge1xuICB3YXRlckF1dGhvcml0eUlkOiBudW1iZXI7XG4gIHNlbGVjdGVkTGFiZWw/OiBzdHJpbmc7XG4gIGhhc1NlYXJjaD86IGJvb2xlYW47XG59O1xuXG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gIHNlbGVjdGVkTGFiZWw6ICcnLFxuICBoYXNTZWFyY2g6IGZhbHNlLFxufTtcblxuZnVuY3Rpb24gcmVwbGFjZVVSTChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICBsZXQgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcbiAgcGFyYW1zLnNldChrZXksIHZhbHVlKTtcbiAgcmV0dXJuIChcbiAgICB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgK1xuICAgICcvLycgK1xuICAgIHdpbmRvdy5sb2NhdGlvbi5ob3N0ICtcbiAgICB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgK1xuICAgICc/JyArXG4gICAgcGFyYW1zLnRvU3RyaW5nKClcbiAgKTtcbn1cblxuY29uc3QgS2FuZG9OYXZiYXIgPSAoe1xuICB3YXRlckF1dGhvcml0eUlkLFxuICBzZWxlY3RlZExhYmVsLFxuICBoYXNTZWFyY2gsXG59OiBJUHJvcHMpID0+IHtcbiAgY29uc3QgW3dhdGVyQXV0aG9yaXRpZXMsIHNldFdhdGVyQXV0aG9yaXRpZXNdID0gdXNlU3RhdGUoW10pO1xuICBjb25zdCBbbG9jYWxXYXRlckF1dGhvcml0eSwgc2V0TG9jYWxXYXRlckF1dGhvcml0eV0gPSB1c2VTdGF0ZSh7XG4gICAgcGhvdG9fdXJsOiAnbWlzc2luZycsXG4gICAgbGFiZWw6ICcnLFxuICB9KTtcbiAgY29uc3QgW3dhSWQsIHNldFdhSWRdID0gdXNlU3RhdGUod2F0ZXJBdXRob3JpdHlJZCk7XG4gIGNvbnN0IFttZW51LCBzZXRNZW51XSA9IHVzZVN0YXRlKHt9KTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXG4gIGNvbnN0IHVzZVF1ZXJ5ID0gKCkgPT4ge1xuICAgIHJldHVybiBuZXcgVVJMU2VhcmNoUGFyYW1zKHVzZUxvY2F0aW9uKCkuc2VhcmNoKTtcbiAgfTtcbiAgY29uc3QgcXVlcnkgPSB1c2VRdWVyeSgpO1xuXG4gIGNvbnN0IFtjdXN0b21lck1lbnUsIHNldEN1c3RvbWVyTWVudV0gPSB1c2VTdGF0ZSh7XG4gICAgZWRpdDoge1xuICAgICAgbGluazogJycsXG4gICAgICBsYWJlbDogJ21haW5fc2NyZWVuLmVkaXRfYWNjb3VudCcsXG4gICAgfSxcbiAgICBmZWVkYmFjazoge1xuICAgICAgbGluazogJycsXG4gICAgICBsYWJlbDogJ21haW5fc2NyZWVuLmZlZWRiYWNrJyxcbiAgICB9LFxuICAgIGhlbHA6IHtcbiAgICAgIGxpbms6ICcnLFxuICAgICAgbGFiZWw6ICdtYWluX3NjcmVlbi5oZWxwJyxcbiAgICB9LFxuICAgIG15X3Byb2ZpbGU6IHtcbiAgICAgIGxpbms6ICcnLFxuICAgICAgbGFiZWw6ICdtYWluX3NjcmVlbi5teV9wcm9maWxlJyxcbiAgICB9LFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICBzaWduX291dDoge1xuICAgICAgbGluazogJycsXG4gICAgICBsYWJlbDogJ21haW5fc2NyZWVuLnNpZ25fb3V0JyxcbiAgICAgIG1ldGhvZDogJycsXG4gICAgfSxcbiAgfSk7XG4gIGNvbnN0IG5hdkNvbnRleHQgPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGU6IFJldHVyblR5cGU8dHlwZW9mIGFwcFJlZHVjZXI+KSA9PiBzdGF0ZS5uYXZfY29udGV4dF9kYXRhLm5hdkNvbnRleHQsXG4gICk7XG5cbiAgY29uc3QgaGlzdG9yeSA9IHVzZUhpc3RvcnkoKTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoc2VsZWN0ZWRPcHRpb246IGFueSkgPT4ge1xuICAgIHNldFdhSWQoc2VsZWN0ZWRPcHRpb24udmFsdWUpO1xuICAgIGRpc3BhdGNoKHNldFdhdGVyQXV0aG9yaXR5KHsgaWQ6IHNlbGVjdGVkT3B0aW9uLnZhbHVlLCBuYW1lOiAnJyB9KSk7XG4gICAgaGlzdG9yeS5wdXNoKFxuICAgICAgYC8ke25hdkNvbnRleHQubmFtZX0vaW5kZXg/bG9jYWxlPSR7bmF2Q29udGV4dC5sb2NhbGV9JndhdGVyX2F1dGhvcml0eV9pZD0ke3NlbGVjdGVkT3B0aW9uLnZhbHVlfWAsXG4gICAgKTtcbiAgfTtcblxuICBjb25zdCBpdGVyYXRlID0gKG9iajogYW55KSA9PiB7XG4gICAgbGV0IGl0ZW1zOiBhbnlbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gb2JqKSB7XG4gICAgICBpZiAob2JqW3Byb3BlcnR5XS5leHBhbmRhYmxlKSB7XG4gICAgICAgIGl0ZW1zLnB1c2goXG4gICAgICAgICAgPE5hdkRyb3Bkb3duXG4gICAgICAgICAgICBrZXk9e29ialtwcm9wZXJ0eV0ubGFiZWx9XG4gICAgICAgICAgICB0aXRsZT17aTE4bi50KG9ialtwcm9wZXJ0eV0ubGFiZWwpfVxuICAgICAgICAgICAgaWQ9XCJiYXNpYy1uYXYtZHJvcGRvd25cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpdGVyYXRlKG9ialtwcm9wZXJ0eV0uZXhwYW5zaW9uKX1cbiAgICAgICAgICA8L05hdkRyb3Bkb3duPixcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChvYmpbcHJvcGVydHldLmNsYXNzID09PSAnanMtaXMtcmVhY3QnKSB7XG4gICAgICAgICAgaXRlbXMucHVzaChcbiAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgIGtleT17b2JqW3Byb3BlcnR5XS5saW5rfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJkcm9wZG93bi1pdGVtXCJcbiAgICAgICAgICAgICAgdG89e29ialtwcm9wZXJ0eV0ubGlua31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2kxOG4udChvYmpbcHJvcGVydHldLmxhYmVsKX1cbiAgICAgICAgICAgIDwvTGluaz4sXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtcy5wdXNoKFxuICAgICAgICAgICAgPE5hdkRyb3Bkb3duLkl0ZW1cbiAgICAgICAgICAgICAga2V5PXtvYmpbcHJvcGVydHldLmxpbmt9XG4gICAgICAgICAgICAgIGhyZWY9e29ialtwcm9wZXJ0eV0ubGlua31cbiAgICAgICAgICAgICAgaWQ9XCJiYXNpYy1uYXZiYXItbmF2XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2kxOG4udChvYmpbcHJvcGVydHldLmxhYmVsKX1cbiAgICAgICAgICAgIDwvTmF2RHJvcGRvd24uSXRlbT4sXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpdGVtcztcbiAgfTtcblxuICBjb25zdCByZW5kZXJDbGllbnRzUGhvdG8gPSAoKSA9PiB7XG4gICAgaWYgKGxvY2FsV2F0ZXJBdXRob3JpdHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IHVybCA9IGxvY2FsV2F0ZXJBdXRob3JpdHkucGhvdG9fdXJsISBhcyBzdHJpbmc7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8aW1nXG4gICAgICAgICAgYWx0PVwibWlzc2luZ1wiXG4gICAgICAgICAgc3JjPXt1cmwuc3RhcnRzV2l0aCgnbWlzc2luZycpID8gV2F0ZXJBdXRob3JpdHlNaXNzaW5nSWNvbiA6IHVybH1cbiAgICAgICAgICBzdHlsZT17eyBoZWlnaHQ6ICc0MHB4Jywgd2lkdGg6ICdhdXRvJyB9fVxuICAgICAgICAvPlxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBidWlsZFN3aXRjaENsaWVudCA9ICgpID0+IHtcbiAgICBpZiAod2F0ZXJBdXRob3JpdGllcyAhPT0gdW5kZWZpbmVkICYmIHdhdGVyQXV0aG9yaXRpZXMubGVuZ3RoICE9PSAwKSB7XG4gICAgICBpZiAod2F0ZXJBdXRob3JpdGllcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8cCBjbGFzc05hbWU9eyd3YXRlci1hdXRob3JpdHktc2luZ2xlLWxhYmVsJ30+XG4gICAgICAgICAgICB7bG9jYWxXYXRlckF1dGhvcml0eS5sYWJlbH1cbiAgICAgICAgICA8L3A+XG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxOYXZEcm9wZG93blxuICAgICAgICAgIHRpdGxlPXtsb2NhbFdhdGVyQXV0aG9yaXR5ICE9PSBudWxsID8gbG9jYWxXYXRlckF1dGhvcml0eS5sYWJlbCA6ICcnfVxuICAgICAgICAgIGlkPVwiYmFzaWMtbmF2LWRyb3Bkb3duXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxOYXZEcm9wZG93bi5JdGVtVGV4dCBzdHlsZT17eyB3aWR0aDogJzMwMHB4JyB9fT5cbiAgICAgICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmFzaWMtc2luZ2xlXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lUHJlZml4PVwic2VsZWN0XCJcbiAgICAgICAgICAgICAgaXNTZWFyY2hhYmxlPXt0cnVlfVxuICAgICAgICAgICAgICBuYW1lPVwiY29sb3JcIlxuICAgICAgICAgICAgICBvcHRpb25zPXt3YXRlckF1dGhvcml0aWVzLm1hcCgobG9jYWxXYXRlckF1dGhvcml0eTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBsb2NhbFdhdGVyQXV0aG9yaXR5LmlkLFxuICAgICAgICAgICAgICAgICAgbGFiZWw6IGxvY2FsV2F0ZXJBdXRob3JpdHkubmFtZSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgZ2V0T3B0aW9uTGFiZWw9eyhsb2NhbFdhdGVyQXV0aG9yaXR5OiBhbnkpID0+XG4gICAgICAgICAgICAgICAgbG9jYWxXYXRlckF1dGhvcml0eS5sYWJlbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlOiBPYmplY3QpID0+IGhhbmRsZUNoYW5nZShlKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9OYXZEcm9wZG93bi5JdGVtVGV4dD5cbiAgICAgICAgPC9OYXZEcm9wZG93bj5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9O1xuXG4gIGNvbnN0IGJ1aWxkQ3VzdG9tZXJNZW51ID0gKGNvbnRleHROYW1lOiBzdHJpbmcpID0+IHtcbiAgICBpZiAoY3VzdG9tZXJNZW51ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxOYXZEcm9wZG93blxuICAgICAgICAgIGFsaWduUmlnaHRcbiAgICAgICAgICBjbGFzc05hbWU9eydjdXN0b21lci1tZW51IG9yZGVyLXNtLTMnfVxuICAgICAgICAgIGlkPVwiYmFzaWMtbmF2LWRyb3Bkb3duXCJcbiAgICAgICAgICB0aXRsZT17XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2N1c3RvbWVyLW1lbnVfX2NvbnRlbnQnfT5cbiAgICAgICAgICAgICAgPGltZyBzcmM9e0F2YXRhcn0gYWx0PVwiYXZhdGFyXCI+PC9pbWc+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17J2dyZWV0aW5nJ30+XG4gICAgICAgICAgICAgICAge2Ake2kxOG4udCgnbWFpbl9zY3JlZW4uaGVsbG8nKX0gJHtcbiAgICAgICAgICAgICAgICAgIGN1c3RvbWVyTWVudS5uYW1lID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgPyBpMThuLnQoJ21haW5fc2NyZWVuLnRoZXJlJylcbiAgICAgICAgICAgICAgICAgICAgOiAnLCAnICsgY3VzdG9tZXJNZW51Lm5hbWVcbiAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA+XG4gICAgICAgICAgPE5hdkRyb3Bkb3duLkl0ZW0gaHJlZj17Y3VzdG9tZXJNZW51Lm15X3Byb2ZpbGUubGlua30+XG4gICAgICAgICAgICB7aTE4bi50KCdtYWluX3NjcmVlbi5teV9wcm9maWxlJyl9XG4gICAgICAgICAgPC9OYXZEcm9wZG93bi5JdGVtPlxuICAgICAgICAgIDxOYXZEcm9wZG93bi5JdGVtXG4gICAgICAgICAgICBocmVmPXtjdXN0b21lck1lbnUuZWRpdC5saW5rfVxuICAgICAgICAgICAga2V5PXtjdXN0b21lck1lbnUuZWRpdC5saW5rfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpMThuLnQoJ21haW5fc2NyZWVuLmVkaXRfYWNjb3VudCcpfVxuICAgICAgICAgIDwvTmF2RHJvcGRvd24uSXRlbT5cbiAgICAgICAgICA8TmF2RHJvcGRvd24uSXRlbVxuICAgICAgICAgICAgaHJlZj17Y3VzdG9tZXJNZW51LmZlZWRiYWNrLmxpbmt9XG4gICAgICAgICAgICBrZXk9e2N1c3RvbWVyTWVudS5mZWVkYmFjay5saW5rfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpMThuLnQoJ21haW5fc2NyZWVuLmZlZWRiYWNrJyl9XG4gICAgICAgICAgPC9OYXZEcm9wZG93bi5JdGVtPlxuICAgICAgICAgIDxOYXZEcm9wZG93bi5JdGVtXG4gICAgICAgICAgICBocmVmPXtjdXN0b21lck1lbnUuaGVscC5saW5rfVxuICAgICAgICAgICAga2V5PXtjdXN0b21lck1lbnUuaGVscC5saW5rfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpMThuLnQoJ21haW5fc2NyZWVuLmhlbHAnKX1cbiAgICAgICAgICA8L05hdkRyb3Bkb3duLkl0ZW0+XG4gICAgICAgICAgPE5hdkRyb3Bkb3duLkRpdmlkZXIgLz5cbiAgICAgICAgICA8TmF2RHJvcGRvd24uSXRlbSBocmVmPXtyZXBsYWNlVVJMKCdsb2NhbGUnLCAnZW4nKX0+XG4gICAgICAgICAgICB7J0VuZ2xpc2gnfVxuICAgICAgICAgIDwvTmF2RHJvcGRvd24uSXRlbT5cbiAgICAgICAgICA8TmF2RHJvcGRvd24uSXRlbSBocmVmPXtyZXBsYWNlVVJMKCdsb2NhbGUnLCAnZW5fdWsnKX0+XG4gICAgICAgICAgICB7J0VuZ2xpc2ggKFVLKSd9XG4gICAgICAgICAgPC9OYXZEcm9wZG93bi5JdGVtPlxuICAgICAgICAgIDxOYXZEcm9wZG93bi5JdGVtIGhyZWY9e3JlcGxhY2VVUkwoJ2xvY2FsZScsICdoZScpfT5cbiAgICAgICAgICAgIHsn16LXkdeo15nXqid9XG4gICAgICAgICAgPC9OYXZEcm9wZG93bi5JdGVtPlxuICAgICAgICAgIDxOYXZEcm9wZG93bi5JdGVtIGhyZWY9e3JlcGxhY2VVUkwoJ2xvY2FsZScsICdmcicpfT5cbiAgICAgICAgICAgIHsnRnJhbsOnYWlzJ31cbiAgICAgICAgICA8L05hdkRyb3Bkb3duLkl0ZW0+XG4gICAgICAgICAgPE5hdkRyb3Bkb3duLkl0ZW0gaHJlZj17cmVwbGFjZVVSTCgnbG9jYWxlJywgJ2l0Jyl9PlxuICAgICAgICAgICAgeydJdGFsaWFubyd9XG4gICAgICAgICAgPC9OYXZEcm9wZG93bi5JdGVtPlxuICAgICAgICAgIDxOYXZEcm9wZG93bi5EaXZpZGVyIC8+XG4gICAgICAgICAgPE5hdkRyb3Bkb3duLkl0ZW1cbiAgICAgICAgICAgIGhyZWY9e2N1c3RvbWVyTWVudS5zaWduX291dC5saW5rfVxuICAgICAgICAgICAgZGF0YS1tZXRob2Q9e2N1c3RvbWVyTWVudS5zaWduX291dC5tZXRob2R9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2kxOG4udChjdXN0b21lck1lbnUuc2lnbl9vdXQubGFiZWwpfVxuICAgICAgICAgIDwvTmF2RHJvcGRvd24uSXRlbT5cbiAgICAgICAgPC9OYXZEcm9wZG93bj5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IGxvY2FsZSA9IHF1ZXJ5LmdldCgnbG9jYWxlJykgfHwgJ2VuJztcbiAgICBmZXRjaChgL2RhdGEvbWVudV9kYXRhLmpzb24/d2F0ZXJfYXV0aG9yaXR5X2lkPSR7d2FJZH0mbG9jYWxlPSR7bG9jYWxlfWApXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlLmpzb24oKSlcbiAgICAgIC50aGVuKChqc29uKSA9PiB7XG4gICAgICAgIHNldFdhdGVyQXV0aG9yaXRpZXMoanNvbi53YXRlcl9hdXRob3JpdGllcyk7XG4gICAgICAgIHNldE1lbnUoanNvbi5tZW51KTtcbiAgICAgICAgZGlzcGF0Y2goXG4gICAgICAgICAgc2V0V2F0ZXJBdXRob3JpdHkoe1xuICAgICAgICAgICAgaWQ6IGpzb24ud2F0ZXJfYXV0aG9yaXR5LnZhbHVlLFxuICAgICAgICAgICAgbmFtZToganNvbi53YXRlcl9hdXRob3JpdHkubGFiZWwsXG4gICAgICAgICAgICBpc19jYXBhY2l0eToganNvbi53YXRlcl9hdXRob3JpdHkuaXNfY2FwYWNpdHksXG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICAgIHNldExvY2FsV2F0ZXJBdXRob3JpdHkoanNvbi53YXRlcl9hdXRob3JpdHkpOyAvLyBhZGQgdG8gU3RvcmVcbiAgICAgICAgdXBkYXRlUGFnZVRpdGxlKGpzb24ud2F0ZXJfYXV0aG9yaXR5LmxhYmVsKTtcbiAgICAgICAgc2V0Q3VzdG9tZXJNZW51KGpzb24uY3VzdG9tZXJfbWVudSk7XG4gICAgICB9KTtcblxuICAgIHJldHVybiBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgICAgc2V0V2F0ZXJBdXRob3JpdGllcyhbXSk7XG4gICAgICBzZXRNZW51KHt9KTtcbiAgICB9O1xuICB9LCBbd2FJZF0pO1xuXG4gIHJldHVybiAoXG4gICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAgPEVycm9yQm91bmRhcnk+XG4gICAgICAgIDxOYXZiYXIgZXhwYW5kPVwic21cIiBjbGFzc05hbWU9eydqdXN0aWZ5LWNvbnRlbnQtYmV0d2Vlbid9PlxuICAgICAgICAgIDxOYXZiYXIuVG9nZ2xlIGFyaWEtY29udHJvbHM9XCJiYXNpYy1uYXZiYXItbmF2XCIgLz5cbiAgICAgICAgICA8TmF2YmFyLkJyYW5kIGNsYXNzTmFtZT17J2xvZ28nfT5cbiAgICAgICAgICAgIDxpbWcgc3JjPXtLYW5kb0xvZ299IGFsdD1cImthbmRvLWxvZ29cIj48L2ltZz5cbiAgICAgICAgICA8L05hdmJhci5CcmFuZD5cbiAgICAgICAgICA8TmF2YmFyLkJyYW5kIGNsYXNzTmFtZT17J2NsaWVudC1sb2dvJ30+XG4gICAgICAgICAgICB7cmVuZGVyQ2xpZW50c1Bob3RvKCl9XG4gICAgICAgICAgPC9OYXZiYXIuQnJhbmQ+XG4gICAgICAgICAge2J1aWxkQ3VzdG9tZXJNZW51KG5hdkNvbnRleHQubmFtZSl9XG4gICAgICAgICAgPE5hdmJhci5Db2xsYXBzZSBpZD1cImJhc2ljLW5hdmJhci1uYXZcIj5cbiAgICAgICAgICAgIDxOYXYgc3R5bGU9e3sgY29sb3I6ICdibHVlJyB9fT5cbiAgICAgICAgICAgICAge2l0ZXJhdGUobWVudSkubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3N3aXRjaC1jbGllbnQtY29udGFpbmVyJ30+XG4gICAgICAgICAgICAgICAgPEZvbnRBd2Vzb21lSWNvbiBpY29uPXtmYVRpbnR9IC8+XG4gICAgICAgICAgICAgICAge2J1aWxkU3dpdGNoQ2xpZW50KCl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9OYXY+XG4gICAgICAgICAgPC9OYXZiYXIuQ29sbGFwc2U+XG4gICAgICAgICAge31cbiAgICAgICAgPC9OYXZiYXI+XG4gICAgICA8L0Vycm9yQm91bmRhcnk+XG4gICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgKTtcbn07XG5LYW5kb05hdmJhci5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5cbmV4cG9ydCBkZWZhdWx0IEthbmRvTmF2YmFyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsa0JBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLGlCQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxNQUFBLEdBQUFDLHVCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxlQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxXQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxlQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxZQUFBLEdBQUFDLHNCQUFBLENBQUFSLE9BQUE7QUFDQSxJQUFBUyxXQUFBLEdBQUFELHNCQUFBLENBQUFSLE9BQUE7QUFDQSxJQUFBVSxVQUFBLEdBQUFGLHNCQUFBLENBQUFSLE9BQUE7QUFBeUUsSUFBQVcsS0FBQSxHQUFBSCxzQkFBQSxDQUFBUixPQUFBO0FBRXpFLElBQUFZLFdBQUEsR0FBQVosT0FBQTtBQUNBLElBQUFhLFFBQUEsR0FBQWIsT0FBQTtBQUVBLElBQUFjLGNBQUEsR0FBQU4sc0JBQUEsQ0FBQVIsT0FBQTtBQUNBLElBQUFlLEtBQUEsR0FB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
278
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZnJlZVNvbGlkU3ZnSWNvbnMiLCJyZXF1aXJlIiwiX3JlYWN0Rm9udGF3ZXNvbWUiLCJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9yZWFjdEJvb3RzdHJhcCIsIl9yZWFjdFJlZHV4IiwiX3JlYWN0Um91dGVyRG9tIiwiX3JlYWN0U2VsZWN0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9rYW5kb19sb2dvIiwiX2F1dGhvcml0eSIsIl91c2VyIiwiX1N0eWxlZExpbmsiLCJfYWN0aW9ucyIsIl9FcnJvckJvdW5kYXJ5IiwiX2kxOG4iLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsInVwZGF0ZVBhZ2VUaXRsZSIsInRpdGxlIiwiZG9jdW1lbnQiLCJjb25jYXQiLCJkZWZhdWx0UHJvcHMiLCJzZWxlY3RlZExhYmVsIiwiaGFzU2VhcmNoIiwicmVwbGFjZVVSTCIsInZhbHVlIiwicGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zIiwid2luZG93IiwibG9jYXRpb24iLCJzZWFyY2giLCJwcm90b2NvbCIsImhvc3QiLCJwYXRobmFtZSIsInRvU3RyaW5nIiwiS2FuZG9OYXZiYXIiLCJfcmVmIiwid2F0ZXJBdXRob3JpdHlJZCIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsIndhdGVyQXV0aG9yaXRpZXMiLCJzZXRXYXRlckF1dGhvcml0aWVzIiwiX3VzZVN0YXRlMyIsInBob3RvX3VybCIsImxhYmVsIiwiX3VzZVN0YXRlNCIsImxvY2FsV2F0ZXJBdXRob3JpdHkiLCJzZXRMb2NhbFdhdGVyQXV0aG9yaXR5IiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJ3YUlkIiwic2V0V2FJZCIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwibWVudSIsInNldE1lbnUiLCJkaXNwYXRjaCIsInVzZURpc3BhdGNoIiwidXNlUXVlcnkiLCJ1c2VMb2NhdGlvbiIsInF1ZXJ5IiwiX3VzZVN0YXRlOSIsImVkaXQiLCJsaW5rIiwiZmVlZGJhY2siLCJoZWxwIiwibXlfcHJvZmlsZSIsIm5hbWUiLCJ1bmRlZmluZWQiLCJzaWduX291dCIsIm1ldGhvZCIsIl91c2VTdGF0ZTEwIiwiY3VzdG9tZXJNZW51Iiwic2V0Q3VzdG9tZXJNZW51IiwibmF2Q29udGV4dCIsInVzZVNlbGVjdG9yIiwic3RhdGUiLCJuYXZfY29udGV4dF9kYXRhIiwiaGlzdG9yeSIsInVzZUhpc3RvcnkiLCJoYW5kbGVDaGFuZ2UiLCJzZWxlY3RlZE9wdGlvbiIsInNldFdhdGVyQXV0aG9yaXR5IiwiaWQiLCJwdXNoIiwibG9jYWxlIiwiaXRlcmF0ZSIsIml0ZW1zIiwicHJvcGVydHkiLCJleHBhbmRhYmxlIiwiY3JlYXRlRWxlbWVudCIsIk5hdkRyb3Bkb3duIiwiaTE4biIsInQiLCJleHBhbnNpb24iLCJjbGFzcyIsIkxpbmsiLCJjbGFzc05hbWUiLCJ0byIsIkl0ZW0iLCJocmVmIiwicmVuZGVyQ2xpZW50c1Bob3RvIiwidXJsIiwiYWx0Iiwic3JjIiwic3RhcnRzV2l0aCIsIldhdGVyQXV0aG9yaXR5TWlzc2luZ0ljb24iLCJzdHlsZSIsImhlaWdodCIsIndpZHRoIiwiYnVpbGRTd2l0Y2hDbGllbnQiLCJsZW5ndGgiLCJJdGVtVGV4dCIsImNsYXNzTmFtZVByZWZpeCIsImlzU2VhcmNoYWJsZSIsIm9wdGlvbnMiLCJtYXAiLCJnZXRPcHRpb25MYWJlbCIsIm9uQ2hhbmdlIiwiZSIsImJ1aWxkQ3VzdG9tZXJNZW51IiwiY29udGV4dE5hbWUiLCJhbGlnblJpZ2h0IiwiQXZhdGFyIiwiRGl2aWRlciIsInVzZUVmZmVjdCIsImZldGNoIiwidGhlbiIsInJlc3BvbnNlIiwianNvbiIsIndhdGVyX2F1dGhvcml0aWVzIiwid2F0ZXJfYXV0aG9yaXR5IiwiaXNfY2FwYWNpdHkiLCJjdXN0b21lcl9tZW51IiwiY2xlYW51cCIsIkZyYWdtZW50IiwiTmF2YmFyIiwiZXhwYW5kIiwiVG9nZ2xlIiwiQnJhbmQiLCJLYW5kb0xvZ28iLCJDb2xsYXBzZSIsIk5hdiIsImNvbG9yIiwiaXRlbSIsIkZvbnRBd2Vzb21lSWNvbiIsImljb24iLCJmYVRpbnQiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9IZWFkZXIvS2FuZG9OYXZiYXIvS2FuZG9OYXZiYXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZhVGludCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucyc7XG5pbXBvcnQgeyBGb250QXdlc29tZUljb24gfSBmcm9tICdAZm9ydGF3ZXNvbWUvcmVhY3QtZm9udGF3ZXNvbWUnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBOYXYsIE5hdmJhciwgTmF2RHJvcGRvd24gfSBmcm9tICdyZWFjdC1ib290c3RyYXAnO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IHsgdXNlSGlzdG9yeSwgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCBTZWxlY3QgZnJvbSAncmVhY3Qtc2VsZWN0JztcbmltcG9ydCBLYW5kb0xvZ28gZnJvbSAnc3JjL2Fzc2V0cy9rYW5kb19sb2dvLnBuZyc7XG5pbXBvcnQgV2F0ZXJBdXRob3JpdHlNaXNzaW5nSWNvbiBmcm9tICdzcmMvYXNzZXRzL21pc3NpbmcvYXV0aG9yaXR5LnBuZyc7XG5pbXBvcnQgQXZhdGFyIGZyb20gJ3NyYy9hc3NldHMvdXNlci5zdmcnO1xuaW1wb3J0IHsgTGluayB9IGZyb20gJ3NyYy9jb21wb25lbnRzL0xpbmtzL1N0eWxlZExpbmsvU3R5bGVkTGluayc7XG5pbXBvcnQgeyBzZXRXYXRlckF1dGhvcml0eSB9IGZyb20gJ3NyYy9zdG9yZS9nbG9iYWwvYWN0aW9ucyc7XG5pbXBvcnQgeyBhcHBSZWR1Y2VyIH0gZnJvbSAnc3JjL3N0b3JlL3Jvb3RSZWR1Y2VyJztcbmltcG9ydCBFcnJvckJvdW5kYXJ5IGZyb20gJ3NyYy91dGlsaXRpZXMvRXJyb3JCb3VuZGFyeSc7XG5pbXBvcnQgaTE4biBmcm9tICdzcmMvdXRpbGl0aWVzL2kxOG4nO1xuaW1wb3J0ICcuL05hdmJhclN0eWxlLnNjc3MnO1xuXG5jb25zdCB1cGRhdGVQYWdlVGl0bGUgPSAodGl0bGU6IHN0cmluZykgPT5cbiAgKGRvY3VtZW50LnRpdGxlID0gYEthbmRvIC0gJHt0aXRsZX1gKTtcblxudHlwZSBJUHJvcHMgPSB7XG4gIHdhdGVyQXV0aG9yaXR5SWQ6IG51bWJlcjtcbiAgc2VsZWN0ZWRMYWJlbD86IHN0cmluZztcbiAgaGFzU2VhcmNoPzogYm9vbGVhbjtcbn07XG5cbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgc2VsZWN0ZWRMYWJlbDogJycsXG4gIGhhc1NlYXJjaDogZmFsc2UsXG59O1xuXG5mdW5jdGlvbiByZXBsYWNlVVJMKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gIGxldCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuICBwYXJhbXMuc2V0KGtleSwgdmFsdWUpO1xuICByZXR1cm4gKFxuICAgIHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCArXG4gICAgJy8vJyArXG4gICAgd2luZG93LmxvY2F0aW9uLmhvc3QgK1xuICAgIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSArXG4gICAgJz8nICtcbiAgICBwYXJhbXMudG9TdHJpbmcoKVxuICApO1xufVxuXG5jb25zdCBLYW5kb05hdmJhciA9ICh7XG4gIHdhdGVyQXV0aG9yaXR5SWQsXG4gIHNlbGVjdGVkTGFiZWwsXG4gIGhhc1NlYXJjaCxcbn06IElQcm9wcykgPT4ge1xuICBjb25zdCBbd2F0ZXJBdXRob3JpdGllcywgc2V0V2F0ZXJBdXRob3JpdGllc10gPSB1c2VTdGF0ZShbXSk7XG4gIGNvbnN0IFtsb2NhbFdhdGVyQXV0aG9yaXR5LCBzZXRMb2NhbFdhdGVyQXV0aG9yaXR5XSA9IHVzZVN0YXRlKHtcbiAgICBwaG90b191cmw6ICdtaXNzaW5nJyxcbiAgICBsYWJlbDogJycsXG4gIH0pO1xuICBjb25zdCBbd2FJZCwgc2V0V2FJZF0gPSB1c2VTdGF0ZSh3YXRlckF1dGhvcml0eUlkKTtcbiAgY29uc3QgW21lbnUsIHNldE1lbnVdID0gdXNlU3RhdGUoe30pO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG5cbiAgY29uc3QgdXNlUXVlcnkgPSAoKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBVUkxTZWFyY2hQYXJhbXModXNlTG9jYXRpb24oKS5zZWFyY2gpO1xuICB9O1xuICBjb25zdCBxdWVyeSA9IHVzZVF1ZXJ5KCk7XG5cbiAgY29uc3QgW2N1c3RvbWVyTWVudSwgc2V0Q3VzdG9tZXJNZW51XSA9IHVzZVN0YXRlKHtcbiAgICBlZGl0OiB7XG4gICAgICBsaW5rOiAnJyxcbiAgICAgIGxhYmVsOiAnbWFpbl9zY3JlZW4uZWRpdF9hY2NvdW50JyxcbiAgICB9LFxuICAgIGZlZWRiYWNrOiB7XG4gICAgICBsaW5rOiAnJyxcbiAgICAgIGxhYmVsOiAnbWFpbl9zY3JlZW4uZmVlZGJhY2snLFxuICAgIH0sXG4gICAgaGVscDoge1xuICAgICAgbGluazogJycsXG4gICAgICBsYWJlbDogJ21haW5fc2NyZWVuLmhlbHAnLFxuICAgIH0sXG4gICAgbXlfcHJvZmlsZToge1xuICAgICAgbGluazogJycsXG4gICAgICBsYWJlbDogJ21haW5fc2NyZWVuLm15X3Byb2ZpbGUnLFxuICAgIH0sXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIHNpZ25fb3V0OiB7XG4gICAgICBsaW5rOiAnJyxcbiAgICAgIGxhYmVsOiAnbWFpbl9zY3JlZW4uc2lnbl9vdXQnLFxuICAgICAgbWV0aG9kOiAnJyxcbiAgICB9LFxuICB9KTtcbiAgY29uc3QgbmF2Q29udGV4dCA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZTogUmV0dXJuVHlwZTx0eXBlb2YgYXBwUmVkdWNlcj4pID0+IHN0YXRlLm5hdl9jb250ZXh0X2RhdGEubmF2Q29udGV4dCxcbiAgKTtcblxuICBjb25zdCBoaXN0b3J5ID0gdXNlSGlzdG9yeSgpO1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChzZWxlY3RlZE9wdGlvbjogYW55KSA9PiB7XG4gICAgc2V0V2FJZChzZWxlY3RlZE9wdGlvbi52YWx1ZSk7XG4gICAgZGlzcGF0Y2goc2V0V2F0ZXJBdXRob3JpdHkoeyBpZDogc2VsZWN0ZWRPcHRpb24udmFsdWUsIG5hbWU6ICcnIH0pKTtcbiAgICBoaXN0b3J5LnB1c2goXG4gICAgICBgLyR7bmF2Q29udGV4dC5uYW1lfS9pbmRleD9sb2NhbGU9JHtuYXZDb250ZXh0LmxvY2FsZX0md2F0ZXJfYXV0aG9yaXR5X2lkPSR7c2VsZWN0ZWRPcHRpb24udmFsdWV9YCxcbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IGl0ZXJhdGUgPSAob2JqOiBhbnkpID0+IHtcbiAgICBsZXQgaXRlbXM6IGFueVtdID0gW107XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBvYmopIHtcbiAgICAgIGlmIChvYmpbcHJvcGVydHldLmV4cGFuZGFibGUpIHtcbiAgICAgICAgaXRlbXMucHVzaChcbiAgICAgICAgICA8TmF2RHJvcGRvd25cbiAgICAgICAgICAgIGtleT17b2JqW3Byb3BlcnR5XS5sYWJlbH1cbiAgICAgICAgICAgIHRpdGxlPXtpMThuLnQob2JqW3Byb3BlcnR5XS5sYWJlbCl9XG4gICAgICAgICAgICBpZD1cImJhc2ljLW5hdi1kcm9wZG93blwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge2l0ZXJhdGUob2JqW3Byb3BlcnR5XS5leHBhbnNpb24pfVxuICAgICAgICAgIDwvTmF2RHJvcGRvd24+LFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKG9ialtwcm9wZXJ0eV0uY2xhc3MgPT09ICdqcy1pcy1yZWFjdCcpIHtcbiAgICAgICAgICBpdGVtcy5wdXNoKFxuICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAga2V5PXtvYmpbcHJvcGVydHldLmxpbmt9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImRyb3Bkb3duLWl0ZW1cIlxuICAgICAgICAgICAgICB0bz17b2JqW3Byb3BlcnR5XS5saW5rfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7aTE4bi50KG9ialtwcm9wZXJ0eV0ubGFiZWwpfVxuICAgICAgICAgICAgPC9MaW5rPixcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1zLnB1c2goXG4gICAgICAgICAgICA8TmF2RHJvcGRvd24uSXRlbVxuICAgICAgICAgICAgICBrZXk9e29ialtwcm9wZXJ0eV0ubGlua31cbiAgICAgICAgICAgICAgaHJlZj17b2JqW3Byb3BlcnR5XS5saW5rfVxuICAgICAgICAgICAgICBpZD1cImJhc2ljLW5hdmJhci1uYXZcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7aTE4bi50KG9ialtwcm9wZXJ0eV0ubGFiZWwpfVxuICAgICAgICAgICAgPC9OYXZEcm9wZG93bi5JdGVtPixcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9O1xuXG4gIGNvbnN0IHJlbmRlckNsaWVudHNQaG90byA9ICgpID0+IHtcbiAgICBpZiAobG9jYWxXYXRlckF1dGhvcml0eSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgdXJsID0gbG9jYWxXYXRlckF1dGhvcml0eS5waG90b191cmwhIGFzIHN0cmluZztcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxpbWdcbiAgICAgICAgICBhbHQ9XCJtaXNzaW5nXCJcbiAgICAgICAgICBzcmM9e3VybC5zdGFydHNXaXRoKCdtaXNzaW5nJykgPyBXYXRlckF1dGhvcml0eU1pc3NpbmdJY29uIDogdXJsfVxuICAgICAgICAgIHN0eWxlPXt7IGhlaWdodDogJzQwcHgnLCB3aWR0aDogJ2F1dG8nIH19XG4gICAgICAgIC8+XG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGJ1aWxkU3dpdGNoQ2xpZW50ID0gKCkgPT4ge1xuICAgIGlmICh3YXRlckF1dGhvcml0aWVzICE9PSB1bmRlZmluZWQgJiYgd2F0ZXJBdXRob3JpdGllcy5sZW5ndGggIT09IDApIHtcbiAgICAgIGlmICh3YXRlckF1dGhvcml0aWVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxwIGNsYXNzTmFtZT17J3dhdGVyLWF1dGhvcml0eS1zaW5nbGUtbGFiZWwnfT5cbiAgICAgICAgICAgIHtsb2NhbFdhdGVyQXV0aG9yaXR5LmxhYmVsfVxuICAgICAgICAgIDwvcD5cbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPE5hdkRyb3Bkb3duXG4gICAgICAgICAgdGl0bGU9e2xvY2FsV2F0ZXJBdXRob3JpdHkgIT09IG51bGwgPyBsb2NhbFdhdGVyQXV0aG9yaXR5LmxhYmVsIDogJyd9XG4gICAgICAgICAgaWQ9XCJiYXNpYy1uYXYtZHJvcGRvd25cIlxuICAgICAgICA+XG4gICAgICAgICAgPE5hdkRyb3Bkb3duLkl0ZW1UZXh0IHN0eWxlPXt7IHdpZHRoOiAnMzAwcHgnIH19PlxuICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJiYXNpYy1zaW5nbGVcIlxuICAgICAgICAgICAgICBjbGFzc05hbWVQcmVmaXg9XCJzZWxlY3RcIlxuICAgICAgICAgICAgICBpc1NlYXJjaGFibGU9e3RydWV9XG4gICAgICAgICAgICAgIG5hbWU9XCJjb2xvclwiXG4gICAgICAgICAgICAgIG9wdGlvbnM9e3dhdGVyQXV0aG9yaXRpZXMubWFwKChsb2NhbFdhdGVyQXV0aG9yaXR5OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgdmFsdWU6IGxvY2FsV2F0ZXJBdXRob3JpdHkuaWQsXG4gICAgICAgICAgICAgICAgICBsYWJlbDogbG9jYWxXYXRlckF1dGhvcml0eS5uYW1lLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICBnZXRPcHRpb25MYWJlbD17KGxvY2FsV2F0ZXJBdXRob3JpdHk6IGFueSkgPT5cbiAgICAgICAgICAgICAgICBsb2NhbFdhdGVyQXV0aG9yaXR5LmxhYmVsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGU6IE9iamVjdCkgPT4gaGFuZGxlQ2hhbmdlKGUpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L05hdkRyb3Bkb3duLkl0ZW1UZXh0PlxuICAgICAgICA8L05hdkRyb3Bkb3duPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH07XG5cbiAgY29uc3QgYnVpbGRDdXN0b21lck1lbnUgPSAoY29udGV4dE5hbWU6IHN0cmluZykgPT4ge1xuICAgIGlmIChjdXN0b21lck1lbnUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPE5hdkRyb3Bkb3duXG4gICAgICAgICAgYWxpZ25SaWdodFxuICAgICAgICAgIGNsYXNzTmFtZT17J2N1c3RvbWVyLW1lbnUgb3JkZXItc20tMyd9XG4gICAgICAgICAgaWQ9XCJiYXNpYy1uYXYtZHJvcGRvd25cIlxuICAgICAgICAgIHRpdGxlPXtcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY3VzdG9tZXItbWVudV9fY29udGVudCd9PlxuICAgICAgICAgICAgICA8aW1nIHNyYz17QXZhdGFyfSBhbHQ9XCJhdmF0YXJcIj48L2ltZz5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXsnZ3JlZXRpbmcnfT5cbiAgICAgICAgICAgICAgICB7YCR7aTE4bi50KCdtYWluX3NjcmVlbi5oZWxsbycpfSAke1xuICAgICAgICAgICAgICAgICAgY3VzdG9tZXJNZW51Lm5hbWUgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICA/IGkxOG4udCgnbWFpbl9zY3JlZW4udGhlcmUnKVxuICAgICAgICAgICAgICAgICAgICA6ICcsICcgKyBjdXN0b21lck1lbnUubmFtZVxuICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgID5cbiAgICAgICAgICA8TmF2RHJvcGRvd24uSXRlbSBocmVmPXtjdXN0b21lck1lbnUubXlfcHJvZmlsZS5saW5rfT5cbiAgICAgICAgICAgIHtpMThuLnQoJ21haW5fc2NyZWVuLm15X3Byb2ZpbGUnKX1cbiAgICAgICAgICA8L05hdkRyb3Bkb3duLkl0ZW0+XG4gICAgICAgICAgPE5hdkRyb3Bkb3duLkl0ZW1cbiAgICAgICAgICAgIGhyZWY9e2N1c3RvbWVyTWVudS5lZGl0Lmxpbmt9XG4gICAgICAgICAgICBrZXk9e2N1c3RvbWVyTWVudS5lZGl0Lmxpbmt9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2kxOG4udCgnbWFpbl9zY3JlZW4uZWRpdF9hY2NvdW50Jyl9XG4gICAgICAgICAgPC9OYXZEcm9wZG93bi5JdGVtPlxuICAgICAgICAgIDxOYXZEcm9wZG93bi5JdGVtXG4gICAgICAgICAgICBocmVmPXtjdXN0b21lck1lbnUuZmVlZGJhY2subGlua31cbiAgICAgICAgICAgIGtleT17Y3VzdG9tZXJNZW51LmZlZWRiYWNrLmxpbmt9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2kxOG4udCgnbWFpbl9zY3JlZW4uZmVlZGJhY2snKX1cbiAgICAgICAgICA8L05hdkRyb3Bkb3duLkl0ZW0+XG4gICAgICAgICAgPE5hdkRyb3Bkb3duLkl0ZW1cbiAgICAgICAgICAgIGhyZWY9e2N1c3RvbWVyTWVudS5oZWxwLmxpbmt9XG4gICAgICAgICAgICBrZXk9e2N1c3RvbWVyTWVudS5oZWxwLmxpbmt9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2kxOG4udCgnbWFpbl9zY3JlZW4uaGVscCcpfVxuICAgICAgICAgIDwvTmF2RHJvcGRvd24uSXRlbT5cbiAgICAgICAgICA8TmF2RHJvcGRvd24uRGl2aWRlciAvPlxuICAgICAgICAgIDxOYXZEcm9wZG93bi5JdGVtIGhyZWY9e3JlcGxhY2VVUkwoJ2xvY2FsZScsICdlbicpfT5cbiAgICAgICAgICAgIHsnRW5nbGlzaCd9XG4gICAgICAgICAgPC9OYXZEcm9wZG93bi5JdGVtPlxuICAgICAgICAgIDxOYXZEcm9wZG93bi5JdGVtIGhyZWY9e3JlcGxhY2VVUkwoJ2xvY2FsZScsICdlbl91aycpfT5cbiAgICAgICAgICAgIHsnRW5nbGlzaCAoVUspJ31cbiAgICAgICAgICA8L05hdkRyb3Bkb3duLkl0ZW0+XG4gICAgICAgICAgPE5hdkRyb3Bkb3duLkl0ZW0gaHJlZj17cmVwbGFjZVVSTCgnbG9jYWxlJywgJ2hlJyl9PlxuICAgICAgICAgICAgeyfXoteR16jXmdeqJ31cbiAgICAgICAgICA8L05hdkRyb3Bkb3duLkl0ZW0+XG4gICAgICAgICAgPE5hdkRyb3Bkb3duLkl0ZW0gaHJlZj17cmVwbGFjZVVSTCgnbG9jYWxlJywgJ2ZyJyl9PlxuICAgICAgICAgICAgeydGcmFuw6dhaXMnfVxuICAgICAgICAgIDwvTmF2RHJvcGRvd24uSXRlbT5cbiAgICAgICAgICA8TmF2RHJvcGRvd24uSXRlbSBocmVmPXtyZXBsYWNlVVJMKCdsb2NhbGUnLCAnaXQnKX0+XG4gICAgICAgICAgICB7J0l0YWxpYW5vJ31cbiAgICAgICAgICA8L05hdkRyb3Bkb3duLkl0ZW0+XG4gICAgICAgICAgPE5hdkRyb3Bkb3duLkRpdmlkZXIgLz5cbiAgICAgICAgICA8TmF2RHJvcGRvd24uSXRlbVxuICAgICAgICAgICAgaHJlZj17Y3VzdG9tZXJNZW51LnNpZ25fb3V0Lmxpbmt9XG4gICAgICAgICAgICBkYXRhLW1ldGhvZD17Y3VzdG9tZXJNZW51LnNpZ25fb3V0Lm1ldGhvZH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7aTE4bi50KGN1c3RvbWVyTWVudS5zaWduX291dC5sYWJlbCl9XG4gICAgICAgICAgPC9OYXZEcm9wZG93bi5JdGVtPlxuICAgICAgICA8L05hdkRyb3Bkb3duPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgbG9jYWxlID0gcXVlcnkuZ2V0KCdsb2NhbGUnKSB8fCAnZW4nO1xuICAgIGZldGNoKGAvZGF0YS9tZW51X2RhdGEuanNvbj93YXRlcl9hdXRob3JpdHlfaWQ9JHt3YUlkfSZsb2NhbGU9JHtsb2NhbGV9YClcbiAgICAgIC50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UuanNvbigpKVxuICAgICAgLnRoZW4oKGpzb24pID0+IHtcbiAgICAgICAgc2V0V2F0ZXJBdXRob3JpdGllcyhqc29uLndhdGVyX2F1dGhvcml0aWVzKTtcbiAgICAgICAgc2V0TWVudShqc29uLm1lbnUpO1xuICAgICAgICBkaXNwYXRjaChcbiAgICAgICAgICBzZXRXYXRlckF1dGhvcml0eSh7XG4gICAgICAgICAgICBpZDoganNvbi53YXRlcl9hdXRob3JpdHkudmFsdWUsXG4gICAgICAgICAgICBuYW1lOiBqc29uLndhdGVyX2F1dGhvcml0eS5sYWJlbCxcbiAgICAgICAgICAgIGlzX2NhcGFjaXR5OiBqc29uLndhdGVyX2F1dGhvcml0eS5pc19jYXBhY2l0eSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgICAgc2V0TG9jYWxXYXRlckF1dGhvcml0eShqc29uLndhdGVyX2F1dGhvcml0eSk7IC8vIGFkZCB0byBTdG9yZVxuICAgICAgICB1cGRhdGVQYWdlVGl0bGUoanNvbi53YXRlcl9hdXRob3JpdHkubGFiZWwpO1xuICAgICAgICBzZXRDdXN0b21lck1lbnUoanNvbi5jdXN0b21lcl9tZW51KTtcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgICBzZXRXYXRlckF1dGhvcml0aWVzKFtdKTtcbiAgICAgIHNldE1lbnUoe30pO1xuICAgIH07XG4gIH0sIFt3YUlkXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8UmVhY3QuRnJhZ21lbnQ+XG4gICAgICA8RXJyb3JCb3VuZGFyeT5cbiAgICAgICAgPE5hdmJhciBleHBhbmQ9XCJzbVwiIGNsYXNzTmFtZT17J2p1c3RpZnktY29udGVudC1iZXR3ZWVuJ30+XG4gICAgICAgICAgPE5hdmJhci5Ub2dnbGUgYXJpYS1jb250cm9scz1cImJhc2ljLW5hdmJhci1uYXZcIiAvPlxuICAgICAgICAgIDxOYXZiYXIuQnJhbmQgY2xhc3NOYW1lPXsnbG9nbyd9PlxuICAgICAgICAgICAgPGltZyBzcmM9e0thbmRvTG9nb30gYWx0PVwia2FuZG8tbG9nb1wiPjwvaW1nPlxuICAgICAgICAgIDwvTmF2YmFyLkJyYW5kPlxuICAgICAgICAgIDxOYXZiYXIuQnJhbmQgY2xhc3NOYW1lPXsnY2xpZW50LWxvZ28nfT5cbiAgICAgICAgICAgIHtyZW5kZXJDbGllbnRzUGhvdG8oKX1cbiAgICAgICAgICA8L05hdmJhci5CcmFuZD5cbiAgICAgICAgICB7YnVpbGRDdXN0b21lck1lbnUobmF2Q29udGV4dC5uYW1lKX1cbiAgICAgICAgICA8TmF2YmFyLkNvbGxhcHNlIGlkPVwiYmFzaWMtbmF2YmFyLW5hdlwiPlxuICAgICAgICAgICAgPE5hdiBzdHlsZT17eyBjb2xvcjogJ2JsdWUnIH19PlxuICAgICAgICAgICAgICB7aXRlcmF0ZShtZW51KS5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnc3dpdGNoLWNsaWVudC1jb250YWluZXInfT5cbiAgICAgICAgICAgICAgICA8Rm9udEF3ZXNvbWVJY29uIGljb249e2ZhVGludH0gLz5cbiAgICAgICAgICAgICAgICB7YnVpbGRTd2l0Y2hDbGllbnQoKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L05hdj5cbiAgICAgICAgICA8L05hdmJhci5Db2xsYXBzZT5cbiAgICAgICAgICB7fVxuICAgICAgICA8L05hdmJhcj5cbiAgICAgIDwvRXJyb3JCb3VuZGFyeT5cbiAgICA8L1JlYWN0LkZyYWdtZW50PlxuICApO1xufTtcbkthbmRvTmF2YmFyLmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcblxuZXhwb3J0IGRlZmF1bHQgS2FuZG9OYXZiYXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLElBQUFBLGtCQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsTUFBQSxHQUFBQyx1QkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksZUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssV0FBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sZUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sWUFBQSxHQUFBQyxzQkFBQSxDQUFBUixPQUFBO0FBQ0EsSUFBQVMsV0FBQSxHQUFBRCxzQkFBQSxDQUFBUixPQUFBO0FBQ0EsSUFBQVUsVUFBQSxHQUFBRixzQkFBQSxDQUFBUixPQUFBO0FBQXlFLElBQUFXLEtBQUEsR0FBQUgsc0JBQUEsQ0FBQVIsT0FBQTtBQUV6RSxJQUFBWSxXQUFBLEdBQUFaLE9BQUE7QUFDQSxJQUFBYSxRQUFBLEdBQUFiLE9BQUE7QUFFQSxJQUFBYyxjQUFBLEdBQUFOLHNCQUFBLENBQUFSLE9BQUE7QUFDQSxJQUFBZSxLQUFBLEdBQUFQLHNCQUFBLENBQUFSLE9BQUE7QUFDQUEsT0FBQTtBQUE0QixTQUFBZ0IseUJBQUFDLFdBQUEsZUFBQUMsT0FBQSxrQ0FBQUMsaUJBQUEsT0FBQUQsT0FBQSxRQUFBRSxnQkFBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxXQUFBLFdBQUFBLFdBQUEsR0FBQUcsZ0JBQUEsR0FBQUQsaUJBQUEsS0FBQUYsV0FBQTtBQUFBLFNBQUFkLHdCQUFBa0IsR0FBQSxFQUFBSixXQUFBLFNBQUFBLFdBQUEsSUFBQUksR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsV0FBQUQsR0FBQSxRQUFBQSxHQUFBLGFBQUFFLE9BQUEsQ0FBQUYsR0FBQSx5QkFBQUEsR0FBQSw0QkFBQUcsT0FBQSxFQUFBSCxHQUFBLFVBQUFJLEtBQUEsR0FBQVQsd0JBQUEsQ0FBQUMsV0FBQSxPQUFBUSxLQUFBLElBQUFBLEtBQUEsQ0FBQUMsR0FBQSxDQUFBTCxHQUFBLFlBQUFJLEtBQUEsQ0FBQUUsR0FBQSxDQUFBTixHQUFBLFNBQUFPLE1BQUEsV0FBQUMscUJBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsR0FBQSxJQUFBWixHQUFBLFFBQUFZLEdBQUEsa0JBQUFILE1BQUEsQ0FBQUksU0FBQSxDQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQWYsR0FBQSxFQUFBWSxHQUFBLFNBQUFJLElBQUEsR0FBQVIscUJBQUEsR0FBQUMsTUFBQSxDQUFBRSx3QkFBQSxDQUFBWCxHQUFBLEVBQUFZLEdBQUEsY0FBQUksSUFBQSxLQUFBQSxJQUFBLENBQUFWLEdBQUEsSUFBQVUsSUFBQSxDQUFBQyxHQUFBLEtBQUFSLE1BQUEsQ0FBQUMsY0FBQSxDQUFBSCxNQUFBLEVBQUFLLEdBQUEsRUFBQUksSUFBQSxZQUFBVCxNQUFBLENBQUFLLEdBQUEsSUFBQVosR0FBQSxDQUFBWSxHQUFBLFNBQUFMLE1BQUEsQ0FBQUosT0FBQSxHQUFBSCxHQUFBLE1BQUFJLEtBQUEsSUFBQUEsS0FBQSxDQUFBYSxHQUFBLENBQUFqQixHQUFBLEVBQUFPLE1BQUEsWUFBQUEsTUFBQTtBQUU1QixJQUFNVyxlQUFlLEdBQUcsU0FBbEJBLGVBQWVBLENBQUlDLEtBQWE7RUFBQSxPQUNuQ0MsUUFBUSxDQUFDRCxLQUFLLGNBQUFFLE1BQUEsQ0FBY0YsS0FBSyxDQUFFO0FBQUEsQ0FBQztBQVF2QyxJQUFNRyxZQUFZLEdBQUc7RUFDbkJDLGFBQWEsRUFBRSxFQUFFO0VBQ2pCQyxTQUFTLEVBQUU7QUFDYixDQUFDO0FBRUQsU0FBU0MsVUFBVUEsQ0FBQ2IsR0FBVyxFQUFFYyxLQUFhLEVBQUU7RUFDOUMsSUFBSUMsTUFBTSxHQUFHLElBQUlDLGVBQWUsQ0FBQ0MsTUFBTSxDQUFDQyxRQUFRLENBQUNDLE1BQU0sQ0FBQztFQUN4REosTUFBTSxDQUFDVixHQUFHLENBQUNMLEdBQUcsRUFBRWMsS0FBSyxDQUFDO0VBQ3RCLE9BQ0VHLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDRSxRQUFRLEdBQ3hCLElBQUksR0FDSkgsTUFBTSxDQUFDQyxRQUFRLENBQUNHLElBQUksR0FDcEJKLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDSSxRQUFRLEdBQ3hCLEdBQUcsR0FDSFAsTUFBTSxDQUFDUSxRQUFRLENBQUMsQ0FBQztBQUVyQjtBQUVBLElBQU1DLFdBQVcsR0FBRyxTQUFkQSxXQUFXQSxDQUFBQyxJQUFBLEVBSUg7RUFBQSxJQUhaQyxnQkFBZ0IsR0FBQUQsSUFBQSxDQUFoQkMsZ0JBQWdCO0lBQ2hCZixhQUFhLEdBQUFjLElBQUEsQ0FBYmQsYUFBYTtJQUNiQyxTQUFTLEdBQUFhLElBQUEsQ0FBVGIsU0FBUztFQUVULElBQUFlLFNBQUEsR0FBZ0QsSUFBQUMsZUFBUSxFQUFDLEVBQUUsQ0FBQztJQUFBQyxVQUFBLE9BQUFDLGVBQUEsQ0FBQXZDLE9BQUEsRUFBQW9DLFNBQUE7SUFBckRJLGdCQUFnQixHQUFBRixVQUFBO0lBQUVHLG1CQUFtQixHQUFBSCxVQUFBO0VBQzVDLElBQUFJLFVBQUEsR0FBc0QsSUFBQUwsZUFBUSxFQUFDO01BQzdETSxTQUFTLEVBQUUsU0FBUztNQUNwQkMsS0FBSyxFQUFFO0lBQ1QsQ0FBQyxDQUFDO0lBQUFDLFVBQUEsT0FBQU4sZUFBQSxDQUFBdkMsT0FBQSxFQUFBMEMsVUFBQTtJQUhLSSxtQkFBbUIsR0FBQUQsVUFBQTtJQUFFRSxzQkFBc0IsR0FBQUYsVUFBQTtFQUlsRCxJQUFBRyxVQUFBLEdBQXdCLElBQUFYLGVBQVEsRUFBQ0YsZ0JBQWdCLENBQUM7SUFBQWMsVUFBQSxPQUFBVixlQUFBLENBQUF2QyxPQUFBLEVBQUFnRCxVQUFBO0lBQTNDRSxJQUFJLEdBQUFELFVBQUE7SUFBRUUsT0FBTyxHQUFBRixVQUFBO0VBQ3BCLElBQUFHLFVBQUEsR0FBd0IsSUFBQWYsZUFBUSxFQUFDLENBQUMsQ0FBQyxDQUFDO0lBQUFnQixVQUFBLE9BQUFkLGVBQUEsQ0FBQXZDLE9BQUEsRUFBQW9ELFVBQUE7SUFBN0JFLElBQUksR0FBQUQsVUFBQTtJQUFFRSxPQUFPLEdBQUFGLFVBQUE7RUFDcEIsSUFBTUcsUUFBUSxHQUFHLElBQUFDLHVCQUFXLEVBQUMsQ0FBQztFQUU5QixJQUFNQyxRQUFRLEdBQUcsU0FBWEEsUUFBUUEsQ0FBQSxFQUFTO0lBQ3JCLE9BQU8sSUFBSWpDLGVBQWUsQ0FBQyxJQUFBa0MsMkJBQVcsRUFBQyxDQUFDLENBQUMvQixNQUFNLENBQUM7RUFDbEQsQ0FBQztFQUNELElBQU1nQyxLQUFLLEdBQUdGLFFBQVEsQ0FBQyxDQUFDO0VBRXhCLElBQUFHLFVBQUEsR0FBd0MsSUFBQXhCLGVBQVEsRUFBQztNQUMvQ3lCLElBQUksRUFBRTtRQUNKQyxJQUFJLEVBQUUsRUFBRTtRQUNSbkIsS0FBSyxFQUFFO01BQ1QsQ0FBQztNQUNEb0IsUUFBUSxFQUFFO1FBQ1JELElBQUksRUFBRSxFQUFFO1FBQ1JuQixLQUFLLEVBQUU7TUFDVCxDQUFDO01BQ0RxQixJQUFJLEVBQUU7UUFDSkYsSUFBSSxFQUFFLEVBQUU7UUFDUm5CLEtBQUssRUFBRTtNQUNULENBQUM7TUFDRHNCLFVBQVUsRUFBRTtRQUNWSCxJQUFJLEVBQUUsRUFBRTtRQUNSbkIsS0FBSyxFQUFFO01BQ1QsQ0FBQztNQUNEdUIsSUFBSSxFQUFFQyxTQUFTO01BQ2ZDLFFBQVEsRUFBRTtRQUNSTixJQUFJLEVBQUUsRUFBRTtRQUNSbkIsS0FBSyxFQUFFLHNCQUFzQjtRQUM3QjBCLE1BQU0sRUFBRTtNQUNWO0lBQ0YsQ0FBQyxDQUFDO0lBQUFDLFdBQUEsT0FBQWhDLGVBQUEsQ0FBQXZDLE9BQUEsRUFBQTZELFVBQUE7SUF2QktXLFlBQVksR0FBQUQsV0FBQTtJQUFFRSxlQUFlLEdBQUFGLFdBQUE7RUF3QnBDLElBQU1HLFVBQVUsR0FBRyxJQUFBQyx1QkFBVyxFQUM1QixVQUFDQyxLQUFvQztJQUFBLE9BQUtBLEtBQUssQ0FBQ0MsZ0JBQWdCLENBQUNILFVBQVU7RUFBQSxDQUM3RSxDQUFDO0VBRUQsSUFBTUksT0FBTyxHQUFHLElBQUFDLDBCQUFVLEVBQUMsQ0FBQztFQUU1QixJQUFNQyxZQUFZLEdBQUcsU0FBZkEsWUFBWUEsQ0FBSUMsY0FBbUIsRUFBSztJQUM1QzlCLE9BQU8sQ0FBQzhCLGNBQWMsQ0FBQzFELEtBQUssQ0FBQztJQUM3QmlDLFFBQVEsQ0FBQyxJQUFBMEIsMEJBQWlCLEVBQUM7TUFBRUMsRUFBRSxFQUFFRixjQUFjLENBQUMxRCxLQUFLO01BQUU0QyxJQUFJLEVBQUU7SUFBRyxDQUFDLENBQUMsQ0FBQztJQUNuRVcsT0FBTyxDQUFDTSxJQUFJLEtBQUFsRSxNQUFBLENBQ053RCxVQUFVLENBQUNQLElBQUksb0JBQUFqRCxNQUFBLENBQWlCd0QsVUFBVSxDQUFDVyxNQUFNLDBCQUFBbkUsTUFBQSxDQUF1QitELGNBQWMsQ0FBQzFELEtBQUssQ0FDbEcsQ0FBQztFQUNILENBQUM7RUFFRCxJQUFNK0QsT0FBTyxHQUFHLFNBQVZBLE9BQU9BLENBQUl6RixHQUFRLEVBQUs7SUFDNUIsSUFBSTBGLEtBQVksR0FBRyxFQUFFO0lBQ3JCLEtBQUssSUFBTUMsUUFBUSxJQUFJM0YsR0FBRyxFQUFFO01BQzFCLElBQUlBLEdBQUcsQ0FBQzJGLFFBQVEsQ0FBQyxDQUFDQyxVQUFVLEVBQUU7UUFDNUJGLEtBQUssQ0FBQ0gsSUFBSSxlQUNSMUcsTUFBQSxDQUFBc0IsT0FBQSxDQUFBMEYsYUFBQSxDQUFDOUcsZUFBQSxDQUFBK0csV0FBVztVQUNWbEYsR0FBRyxFQUFFWixHQUFHLENBQUMyRixRQUFRLENBQUMsQ0FBQzVDLEtBQU07VUFDekI1QixLQUFLLEVBQUU0RSxhQUFJLENBQUNDLENBQUMsQ0FBQ2hHLEdBQUcsQ0FBQzJGLFFBQVEsQ0FBQyxDQUFDNUMsS0FBSyxDQUFFO1VBQ25DdUMsRUFBRSxFQUFDO1FBQW9CLEdBRXRCRyxPQUFPLENBQUN6RixHQUFHLENBQUMyRixRQUFRLENBQUMsQ0FBQ00sU0FBUyxDQUNyQixDQUNmLENBQUM7TUFDSCxDQUFDLE1BQU07UUFDTCxJQUFJakcsR0FBRyxDQUFDMkYsUUFBUSxDQUFDLENBQUNPLEtBQUssS0FBSyxhQUFhLEVBQUU7VUFDekNSLEtBQUssQ0FBQ0gsSUFBSSxlQUNSMUcsTUFBQSxDQUFBc0IsT0FBQSxDQUFBMEYsYUFBQSxDQUFDdEcsV0FBQSxDQUFBNEcsSUFBSTtZQUNIdkYsR0FBRyxFQUFFWixHQUFHLENBQUMyRixRQUFRLENBQUMsQ0FBQ3pCLElBQUs7WUFDeEJrQyxTQUFTLEVBQUMsZUFBZTtZQUN6QkMsRUFBRSxFQUFFckcsR0FBRyxDQUFDMkYsUUFBUSxDQUFDLENBQUN6QjtVQUFLLEdBRXRCNkIsYUFBSSxDQUFDQyxDQUFDLENBQUNoRyxHQUFHLENBQUMyRixRQUFRLENBQUMsQ0FBQzVDLEtBQUssQ0FDdkIsQ0FDUixDQUFDO1FBQ0gsQ0FBQyxNQUFNO1VBQ0wyQyxLQUFLLENBQUNILElBQUksZUFDUjFHLE1BQUEsQ0FBQXNCLE9BQUEsQ0FBQTBGLGFBQUEsQ0FBQzlHLGVBQUEsQ0FBQStHLFdBQVcsQ0FBQ1EsSUFBSTtZQUNmMUYsR0FBRyxFQUFFWixHQUFHLENBQUMyRixRQUFRLENBQUMsQ0FBQ3pCLElBQUs7WUFDeEJxQyxJQUFJLEVBQUV2RyxHQUFHLENBQUMyRixRQUFRLENBQUMsQ0FBQ3pCLElBQUs7WUFDekJvQixFQUFFLEVBQUM7VUFBa0IsR0FFcEJTLGFBQUksQ0FBQ0MsQ0FBQyxDQUFDaEcsR0FBRyxDQUFDMkYsUUFBUSxDQUFDLENBQUM1QyxLQUFLLENBQ1gsQ0FDcEIsQ0FBQztRQUNIO01BQ0Y7SUFDRjtJQUVBLE9BQU8yQyxLQUFLO0VBQ2QsQ0FBQztFQUVELElBQU1jLGtCQUFrQixHQUFHLFNBQXJCQSxrQkFBa0JBLENBQUEsRUFBUztJQUMvQixJQUFJdkQsbUJBQW1CLEtBQUtzQixTQUFTLEVBQUU7TUFDckMsSUFBSWtDLEdBQUcsR0FBR3hELG1CQUFtQixDQUFDSCxTQUFvQjtNQUNsRCxvQkFDRWpFLE1BQUEsQ0FBQXNCLE9BQUEsQ0FBQTBGLGFBQUE7UUFDRWEsR0FBRyxFQUFDLFNBQVM7UUFDYkMsR0FBRyxFQUFFRixHQUFHLENBQUNHLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBR0Msa0JBQXlCLEdBQUdKLEdBQUk7UUFDakVLLEtBQUssRUFBRTtVQUFFQyxNQUFNLEVBQUUsTUFBTTtVQUFFQyxLQUFLLEVBQUU7UUFBTztNQUFFLENBQzFDLENBQUM7SUFFTixDQUFDLE1BQU07TUFDTDtJQUNGO0VBQ0YsQ0FBQztFQUVELElBQU1DLGlCQUFpQixHQUFHLFNBQXBCQSxpQkFBaUJBLENBQUEsRUFBUztJQUM5QixJQUFJdEUsZ0JBQWdCLEtBQUs0QixTQUFTLElBQUk1QixnQkFBZ0IsQ0FBQ3VFLE1BQU0sS0FBSyxDQUFDLEVBQUU7TUFDbkUsSUFBSXZFLGdCQUFnQixDQUFDdUUsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUNqQyxvQkFDRXJJLE1BQUEsQ0FBQXNCLE9BQUEsQ0FBQTBGLGFBQUE7VUFBR08sU0FBUyxFQUFFO1FBQStCLEdBQzFDbkQsbUJBQW1CLENBQUNGLEtBQ3BCLENBQUM7TUFFUjtNQUVBLG9CQUNFbEUsTUFBQSxDQUFBc0IsT0FBQSxDQUFBMEYsYUFBQSxDQUFDOUcsZUFBQSxDQUFBK0csV0FBVztRQUNWM0UsS0FBSyxFQUFFOEIsbUJBQW1CLEtBQUssSUFBSSxHQUFHQSxtQkFBbUIsQ0FBQ0YsS0FBSyxHQUFHLEVBQUc7UUFDckV1QyxFQUFFLEVBQUM7TUFBb0IsZ0JBRXZCekcsTUFBQSxDQUFBc0IsT0FBQSxDQUFBMEYsYUFBQSxDQUFDOUcsZUFBQSxDQUFBK0csV0FBVyxDQUFDcUIsUUFBUTtRQUFDTCxLQUFLLEVBQUU7VUFBRUUsS0FBSyxFQUFFO1FBQVE7TUFBRSxnQkFDOUNuSSxNQUFBLENBQUFzQixPQUFBLENBQUEwRixhQUFBLENBQUMzRyxZQUFBLENBQUFpQixPQUFNO1FBQ0xpRyxTQUFTLEVBQUMsY0FBYztRQUN4QmdCLGVBQWUsRUFBQyxRQUFRO1FBQ3hCQyxZQUFZLEVBQUUsSUFBSztRQUNuQi9DLElBQUksRUFBQyxPQUFPO1FBQ1pnRCxPQUFPLEVBQUUzRSxnQkFBZ0IsQ0FBQzRFLEdBQUcsQ0FBQyxVQUFDdEUsbUJBQXdCLEVBQUs7VUFDMUQsT0FBTztZQUNMdkIsS0FBSyxFQUFFdUIsbUJBQW1CLENBQUNxQyxFQUFFO1lBQzdCdkMsS0FBSyxFQUFFRSxtQkFBbUIsQ0FBQ3FCO1VBQzdCLENBQUM7UUFDSCxDQUFDLENBQUU7UUFDSGtELGNBQWMsRUFBRSxTQUFBQSxlQUFDdkUsbUJBQXdCO1VBQUEsT0FDdkNBLG1CQUFtQixDQUFDRixLQUFLO1FBQUE7UUFFM0I7UUFBQTtRQUNBMEUsUUFBUSxFQUFFLFNBQUFBLFNBQUNDLENBQVM7VUFBQSxPQUFLdkMsWUFBWSxDQUFDdUMsQ0FBQyxDQUFDO1FBQUE7TUFBQyxDQUMxQyxDQUNtQixDQUNYLENBQUM7SUFFbEI7SUFFQTtFQUNGLENBQUM7RUFFRCxJQUFNQyxpQkFBaUIsR0FBRyxTQUFwQkEsaUJBQWlCQSxDQUFJQyxXQUFtQixFQUFLO0lBQ2pELElBQUlqRCxZQUFZLEtBQUtKLFNBQVMsRUFBRTtNQUM5QjtNQUNBLG9CQUNFMUYsTUFBQSxDQUFBc0IsT0FBQSxDQUFBMEYsYUFBQSxDQUFDOUcsZUFBQSxDQUFBK0csV0FBVztRQUNWK0IsVUFBVTtRQUNWekIsU0FBUyxFQUFFLDBCQUEyQjtRQUN0Q2QsRUFBRSxFQUFDLG9CQUFvQjtRQUN2Qm5FLEtBQUssZUFDSHRDLE1BQUEsQ0FBQXNCLE9BQUEsQ0FBQTBGLGFBQUE7VUFBS08sU0FBUyxFQUFFO1FBQXlCLGdCQUN2Q3ZILE1BQUEsQ0FBQXNCLE9BQUEsQ0FBQTBGLGFBQUE7VUFBS2MsR0FBRyxFQUFFbUIsYUFBTztVQUFDcEIsR0FBRyxFQUFDO1FBQVEsQ0FBTSxDQUFDLGVBQ3JDN0gsTUFBQSxDQUFBc0IsT0FBQSxDQUFBMEYsYUFBQTtVQUFNTyxTQUFTLEVBQUU7UUFBVyxNQUFBL0UsTUFBQSxDQUN0QjBFLGFBQUksQ0FBQ0MsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLE9BQUEzRSxNQUFBLENBQzdCc0QsWUFBWSxDQUFDTCxJQUFJLEtBQUtDLFNBQVMsR0FDM0J3QixhQUFJLENBQUNDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxHQUMzQixJQUFJLEdBQUdyQixZQUFZLENBQUNMLElBQUksQ0FFMUIsQ0FDSDtNQUNOLGdCQUVEekYsTUFBQSxDQUFBc0IsT0FBQSxDQUFBMEYsYUFBQSxDQUFDOUcsZUFBQSxDQUFBK0csV0FBVyxDQUFDUSxJQUFJO1FBQUNDLElBQUksRUFBRTVCLFlBQVksQ0FBQ04sVUFBVSxDQUFDSDtNQUFLLEdBQ2xENkIsYUFBSSxDQUFDQyxDQUFDLENBQUMsd0JBQXdCLENBQ2hCLENBQUMsZUFDbkJuSCxNQUFBLENBQUFzQixPQUFBLENBQUEwRixhQUFBLENBQUM5RyxlQUFBLENBQUErRyxXQUFXLENBQUNRLElBQUk7UUFDZkMsSUFBSSxFQUFFNUIsWUFBWSxDQUFDVixJQUFJLENBQUNDLElBQUs7UUFDN0J0RCxHQUFHLEVBQUUrRCxZQUFZLENBQUNWLElBQUksQ0FBQ0M7TUFBSyxHQUUzQjZCLGFBQUksQ0FBQ0MsQ0FBQyxDQUFDLDBCQUEwQixDQUNsQixDQUFDLGVBQ25CbkgsTUFBQSxDQUFBc0IsT0FBQSxDQUFBMEYsYUFBQSxDQUFDOUcsZUFBQSxDQUFBK0csV0FBVyxDQUFDUSxJQUFJO1FBQ2ZDLElBQUksRUFBRTVCLFlBQVksQ0FBQ1IsUUFBUSxDQUFDRCxJQUFLO1FBQ2pDdEQsR0FBRyxFQUFFK0QsWUFBWSxDQUFDUixRQUFRLENBQUNEO01BQUssR0FFL0I2QixhQUFJLENBQUNDLENBQUMsQ0FBQyxzQkFBc0IsQ0FDZCxDQUFDLGVBQ25CbkgsTUFBQSxDQUFBc0IsT0FBQSxDQUFBMEYsYUFBQSxDQUFDOUcsZUFBQSxDQUFBK0csV0FBVyxDQUFDUSxJQUFJO1FBQ2ZDLElBQUksRUFBRTVCLFlBQVksQ0FBQ1AsSUFBSSxDQUFDRixJQUFLO1FBQzdCdEQsR0FBRyxFQUFFK0QsWUFBWSxDQUFDUCxJQUFJLENBQUNGO01BQUssR0FFM0I2QixhQUFJLENBQUNDLENBQUMsQ0FBQyxrQkFBa0IsQ0FDVixDQUFDLGVBQ25CbkgsTUFBQSxDQUFBc0IsT0FBQSxDQUFBMEYsYUFBQSxDQUFDOUcsZUFBQSxDQUFBK0csV0FBVyxDQUFDaUMsT0FBTyxNQUFFLENBQUMsZUFDdkJsSixNQUFBLENBQUFzQixPQUFBLENBQUEwRixhQUFBLENBQUM5RyxlQUFBLENBQUErRyxXQUFXLENBQUNRLElBQUk7UUFBQ0MsSUFBSSxFQUFFOUUsVUFBVSxDQUFDLFFBQVEsRUFBRSxJQUFJO01BQUUsR0FDaEQsU0FDZSxDQUFDLGVBQ25CNUMsTUFBQSxDQUFBc0IsT0FBQSxDQUFBMEYsYUFBQSxDQUFDOUcsZUFBQSxDQUFBK0csV0FBVyxDQUFDUSxJQUFJO1FBQUNDLElBQUksRUFBRTlFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsT0FBTztNQUFFLEdBQ25ELGNBQ2UsQ0FBQyxlQUNuQjVDLE1BQUEsQ0FBQXNCLE9BQUEsQ0FBQTBGLGFBQUEsQ0FBQzlHLGVBQUEsQ0FBQStHLFdBQVcsQ0FBQ1EsSUFBSTtRQUFDQyxJQUFJLEVBQUU5RSxVQUFVLENBQUMsUUFBUSxFQUFFLElBQUk7TUFBRSxHQUNoRCxPQUNlLENBQUMsZUFDbkI1QyxNQUFBLENBQUFzQixPQUFBLENBQUEwRixhQUFBLENBQUM5RyxlQUFBLENBQUErRyxXQUFXLENBQUNRLElBQUk7UUFBQ0MsSUFBSSxFQUFFOUUsVUFBVSxDQUFDLFFBQVEsRUFBRSxJQUFJO01BQUUsR0FDaEQsVUFDZSxDQUFDLGVBQ25CNUMsTUFBQSxDQUFBc0IsT0FBQSxDQUFBMEYsYUFBQSxDQUFDOUcsZUFBQSxDQUFBK0csV0FBVyxDQUFDUSxJQUFJO1FBQUNDLElBQUksRUFBRTlFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsSUFBSTtNQUFFLEdBQ2hELFVBQ2UsQ0FBQyxlQUNuQjVDLE1BQUEsQ0FBQXNCLE9BQUEsQ0FBQTBGLGFBQUEsQ0FBQzlHLGVBQUEsQ0FBQStHLFdBQVcsQ0FBQ2lDLE9BQU8sTUFBRSxDQUFDLGVBQ3ZCbEosTUFBQSxDQUFBc0IsT0FBQSxDQUFBMEYsYUFBQSxDQUFDOUcsZUFBQSxDQUFBK0csV0FBVyxDQUFDUSxJQUFJO1FBQ2ZDLElBQUksRUFBRTVCLFlBQVksQ0FBQ0gsUUFBUSxDQUFDTixJQUFLO1FBQ2pDLGVBQWFTLFlBQVksQ0FBQ0gsUUFBUSxDQUFDQztNQUFPLEdBRXpDc0IsYUFBSSxDQUFDQyxDQUFDLENBQUNyQixZQUFZLENBQUNILFFBQVEsQ0FBQ3pCLEtBQUssQ0FDbkIsQ0FDUCxDQUFDO0lBRWxCO0lBRUE7RUFDRixDQUFDO0VBRUQsSUFBQWlGLGdCQUFTLEVBQUMsWUFBTTtJQUNkLElBQUl4QyxNQUFNLEdBQUd6QixLQUFLLENBQUN6RCxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSTtJQUN4QzJILEtBQUssNENBQUE1RyxNQUFBLENBQTRDZ0MsSUFBSSxjQUFBaEMsTUFBQSxDQUFXbUUsTUFBTSxDQUFFLENBQUMsQ0FDdEUwQyxJQUFJLENBQUMsVUFBQ0MsUUFBUTtNQUFBLE9BQUtBLFFBQVEsQ0FBQ0MsSUFBSSxDQUFDLENBQUM7SUFBQSxFQUFDLENBQ25DRixJQUFJLENBQUMsVUFBQ0UsSUFBSSxFQUFLO01BQ2R4RixtQkFBbUIsQ0FBQ3dGLElBQUksQ0FBQ0MsaUJBQWlCLENBQUM7TUFDM0MzRSxPQUFPLENBQUMwRSxJQUFJLENBQUMzRSxJQUFJLENBQUM7TUFDbEJFLFFBQVEsQ0FDTixJQUFBMEIsMEJBQWlCLEVBQUM7UUFDaEJDLEVBQUUsRUFBRThDLElBQUksQ0FBQ0UsZUFBZSxDQUFDNUcsS0FBSztRQUM5QjRDLElBQUksRUFBRThELElBQUksQ0FBQ0UsZUFBZSxDQUFDdkYsS0FBSztRQUNoQ3dGLFdBQVcsRUFBRUgsSUFBSSxDQUFDRSxlQUFlLENBQUNDO01BQ3BDLENBQUMsQ0FDSCxDQUFDO01BQ0RyRixzQkFBc0IsQ0FBQ2tGLElBQUksQ0FBQ0UsZUFBZSxDQUFDLENBQUMsQ0FBQztNQUM5Q3BILGVBQWUsQ0FBQ2tILElBQUksQ0FBQ0UsZUFBZSxDQUFDdkYsS0FBSyxDQUFDO01BQzNDNkIsZUFBZSxDQUFDd0QsSUFBSSxDQUFDSSxhQUFhLENBQUM7SUFDckMsQ0FBQyxDQUFDO0lBRUosT0FBTyxTQUFTQyxPQUFPQSxDQUFBLEVBQUc7TUFDeEI3RixtQkFBbUIsQ0FBQyxFQUFFLENBQUM7TUFDdkJjLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNiLENBQUM7RUFDSCxDQUFDLEVBQUUsQ0FBQ0wsSUFBSSxDQUFDLENBQUM7RUFFVixvQkFDRXhFLE1BQUEsQ0FBQXNCLE9BQUEsQ0FBQTBGLGFBQUEsQ0FBQ2hILE1BQUEsQ0FBQXNCLE9BQUssQ0FBQ3VJLFFBQVEscUJBQ2I3SixNQUFBLENBQUFzQixPQUFBLENBQUEwRixhQUFBLENBQUNwRyxjQUFBLENBQUFVLE9BQWEscUJBQ1p0QixNQUFBLENBQUFzQixPQUFBLENBQUEwRixhQUFBLENBQUM5RyxlQUFBLENBQUE0SixNQUFNO0lBQUNDLE1BQU0sRUFBQyxJQUFJO0lBQUN4QyxTQUFTLEVBQUU7RUFBMEIsZ0JBQ3ZEdkgsTUFBQSxDQUFBc0IsT0FBQSxDQUFBMEYsYUFBQSxDQUFDOUcsZUFBQSxDQUFBNEosTUFBTSxDQUFDRSxNQUFNO0lBQUMsaUJBQWM7RUFBa0IsQ0FBRSxDQUFDLGVBQ2xEaEssTUFBQSxDQUFBc0IsT0FBQSxDQUFBMEYsYUFBQSxDQUFDOUcsZUFBQSxDQUFBNEosTUFBTSxDQUFDRyxLQUFLO0lBQUMxQyxTQUFTLEVBQUU7RUFBTyxnQkFDOUJ2SCxNQUFBLENBQUFzQixPQUFBLENBQUEwRixhQUFBO0lBQUtjLEdBQUcsRUFBRW9DLG1CQUFVO0lBQUNyQyxHQUFHLEVBQUM7RUFBWSxDQUFNLENBQy9CLENBQUMsZUFDZjdILE1BQUEsQ0FBQXNCLE9BQUEsQ0FBQTBGLGFBQUEsQ0FBQzlHLGVBQUEsQ0FBQTRKLE1BQU0sQ0FBQ0csS0FBSztJQUFDMUMsU0FBUyxFQUFFO0VBQWMsR0FDcENJLGtCQUFrQixDQUFDLENBQ1IsQ0FBQyxFQUNkbUIsaUJBQWlCLENBQUM5QyxVQUFVLENBQUNQLElBQUksQ0FBQyxlQUNuQ3pGLE1BQUEsQ0FBQXNCLE9BQUEsQ0FBQTBGLGFBQUEsQ0FBQzlHLGVBQUEsQ0FBQTRKLE1BQU0sQ0FBQ0ssUUFBUTtJQUFDMUQsRUFBRSxFQUFDO0VBQWtCLGdCQUNwQ3pHLE1BQUEsQ0FBQXNCLE9BQUEsQ0FBQTBGLGFBQUEsQ0FBQzlHLGVBQUEsQ0FBQWtLLEdBQUc7SUFBQ25DLEtBQUssRUFBRTtNQUFFb0MsS0FBSyxFQUFFO0lBQU87RUFBRSxHQUMzQnpELE9BQU8sQ0FBQ2hDLElBQUksQ0FBQyxDQUFDOEQsR0FBRyxDQUFDLFVBQUM0QixJQUFJLEVBQUs7SUFDM0IsT0FBT0EsSUFBSTtFQUNiLENBQUMsQ0FBQyxlQUNGdEssTUFBQSxDQUFBc0IsT0FBQSxDQUFBMEYsYUFBQTtJQUFLTyxTQUFTLEVBQUU7RUFBMEIsZ0JBQ3hDdkgsTUFBQSxDQUFBc0IsT0FBQSxDQUFBMEYsYUFBQSxDQUFDakgsaUJBQUEsQ0FBQXdLLGVBQWU7SUFBQ0MsSUFBSSxFQUFFQztFQUFPLENBQUUsQ0FBQyxFQUNoQ3JDLGlCQUFpQixDQUFDLENBQ2hCLENBQ0YsQ0FDVSxDQUVYLENBQ0ssQ0FDRCxDQUFDO0FBRXJCLENBQUM7QUFDRDdFLFdBQVcsQ0FBQ2QsWUFBWSxHQUFHQSxZQUFZO0FBQUMsSUFBQWlJLFFBQUEsR0FFekJuSCxXQUFXO0FBQUFvSCxPQUFBLENBQUFySixPQUFBLEdBQUFvSixRQUFBIn0=