@kando-env/kando-ui 1.2.466-alpha.7 → 1.2.466-alpha.8
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.
- package/lib/Router.js +76 -37
- package/lib/Widgets/EventsCarousel/EventsCarousel.js +35 -24
- package/lib/Widgets/EventsRow/EventsRow.js +39 -26
- package/lib/Widgets/Map/GraphUtils.js +6 -4
- package/lib/Widgets/Map/Map.js +138 -99
- package/lib/Widgets/Map/MapUtils.js +101 -83
- package/lib/Widgets/Map/areas/AreaPolygon.js +84 -57
- package/lib/Widgets/Map/areas/AreaPolygons.js +25 -23
- package/lib/Widgets/Map/areas/AreaUtils.js +46 -46
- package/lib/Widgets/Map/areas/Patterns.js +5 -5
- package/lib/Widgets/Map/edges/Edge.js +74 -50
- package/lib/Widgets/Map/edges/Edges.js +24 -19
- package/lib/Widgets/Map/edges/arrows/Arrows.js +45 -24
- package/lib/Widgets/Map/events/Event.js +14 -15
- package/lib/Widgets/Map/events/EventIndicator.js +63 -66
- package/lib/Widgets/Map/events/EventPath.js +34 -33
- package/lib/Widgets/Map/events/EventUtils.js +78 -54
- package/lib/Widgets/Map/events/NetworkForSpecificEvent.js +19 -17
- package/lib/Widgets/Map/events/PointOfEvent.js +36 -27
- package/lib/Widgets/Map/events/PointsForSpecificEvent.js +39 -29
- package/lib/Widgets/Map/events/Snail.js +11 -10
- package/lib/Widgets/Map/graphDNDArea/GraphDNDArea.js +79 -77
- package/lib/Widgets/Map/map/FloatingGraph.js +21 -24
- package/lib/Widgets/Map/map/GraphDateButton.js +20 -27
- package/lib/Widgets/Map/matchGraph/MatchGraph.js +14 -14
- package/lib/Widgets/Map/matchGraph/createFloatingGraph.js +16 -17
- package/lib/Widgets/Map/points/PointIcon.js +22 -23
- package/lib/Widgets/Map/points/PointMarker.js +88 -68
- package/lib/Widgets/Map/points/PointMarkers.js +36 -30
- package/lib/Widgets/Map/points/PointUtils.js +90 -76
- package/lib/Widgets/MostPolluting/Areas/AreaBox/AreaBox.js +43 -25
- package/lib/Widgets/MostPolluting/Areas/AreaBox/Map/Map.js +11 -11
- package/lib/Widgets/MostPolluting/Areas/AreaBox/PieChart/PieChart.js +14 -11
- package/lib/Widgets/MostPolluting/Areas/AreaBox/styles.js +6 -4
- package/lib/Widgets/MostPolluting/Areas/Areas.js +60 -28
- package/lib/Widgets/MostPolluting/Areas/areas.mock.js +4 -3
- package/lib/Widgets/MostPolluting/Areas/areasResponse.interface.js +1 -1
- package/lib/Widgets/MostPolluting/Areas/styles.js +6 -4
- package/lib/Widgets/MostPolluting/EmptyState/EmptyState.js +9 -12
- package/lib/Widgets/MostPolluting/Factories/Factories.js +65 -33
- package/lib/Widgets/MostPolluting/Factories/FactoryBox/CardLayout.js +20 -15
- package/lib/Widgets/MostPolluting/Factories/FactoryBox/FactoryBox.js +20 -15
- package/lib/Widgets/MostPolluting/Factories/FactoryBox/PieChart/PieChart.js +10 -9
- package/lib/Widgets/MostPolluting/Factories/FactoryBox/PollutionScore.js +11 -13
- package/lib/Widgets/MostPolluting/Factories/FactoryBox/styles.js +6 -4
- package/lib/Widgets/MostPolluting/Factories/factories.mock.js +3 -2
- package/lib/Widgets/MostPolluting/Factories/factoriesResponse.interface.js +1 -1
- package/lib/Widgets/MostPolluting/Factories/styles.js +6 -4
- package/lib/Widgets/MostPolluting/MostPolluting.js +34 -23
- package/lib/Widgets/MostPolluting/MostPolluting.stories.js +32 -20
- package/lib/Widgets/MostPolluting/ShowMore/ShowMore.js +5 -7
- package/lib/Widgets/MostPolluting/ShowMore/styles.js +6 -7
- package/lib/Widgets/MostPolluting/assets/index.js +12 -12
- package/lib/Widgets/MostPolluting/components/ChangePercent.js +14 -20
- package/lib/Widgets/MostPolluting/components/ChangePercent.test.js +31 -36
- package/lib/Widgets/MostPolluting/components/PollutionScorePercent.js +54 -49
- package/lib/Widgets/MostPolluting/components/PollutionScorePercent.test.js +40 -44
- package/lib/Widgets/MostPolluting/components/PotentialImpact.js +27 -28
- package/lib/Widgets/MostPolluting/components/PotentialImpact.test.js +49 -53
- package/lib/Widgets/MostPolluting/models.js +1 -1
- package/lib/Widgets/MostPolluting/styles.js +6 -4
- package/lib/Widgets/PotentialImpactSummary/Back/Back.js +6 -8
- package/lib/Widgets/PotentialImpactSummary/Icon.js +39 -30
- package/lib/Widgets/PotentialImpactSummary/index.js +28 -20
- package/lib/Widgets/PotentialImpactSummary/index.test.js +54 -48
- package/lib/Widgets/PotentialImpactSummary/styles.js +13 -8
- package/lib/Widgets/PotentialImpactSummary/useCasesResponse.interface.js +1 -1
- package/lib/Widgets/QualitySummary/PieChart/LegendMenu/LegendMenu.js +8 -10
- package/lib/Widgets/QualitySummary/PieChart/PieChart.js +18 -23
- package/lib/Widgets/QualitySummary/PieChart/PieChart.test.js +31 -34
- package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.js +26 -28
- package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.test.js +38 -35
- package/lib/Widgets/QualitySummary/QualitySummary.js +14 -10
- package/lib/Widgets/QualitySummary/qualitySummary.mock.js +7 -4
- package/lib/Widgets/QualitySummary/qualitySummaryResponse.interface.js +1 -1
- package/lib/Widgets/QualitySummary/styles.js +21 -24
- package/lib/Widgets/UtilityInformation/MapModal/MapModal.js +14 -12
- package/lib/Widgets/UtilityInformation/PopupWithMap/Map/Map.js +25 -25
- package/lib/Widgets/UtilityInformation/PopupWithMap/PopupWithMap.js +21 -26
- package/lib/Widgets/UtilityInformation/UtilityInformation.js +36 -23
- package/lib/Widgets/UtilityInformation/UtilityInformationResponse.interface.js +1 -1
- package/lib/Widgets/UtilityInformation/styles.js +31 -30
- package/lib/Widgets/UtilityInformation/utilityInformation.mock.js +5 -3
- package/lib/assets/icons/TopNavbar/index.js +7 -7
- package/lib/assets/icons/TrendSvg.js +7 -7
- package/lib/assets/icons/index.js +16 -16
- package/lib/assets/icons/kandoStepper/index.js +7 -7
- package/lib/assets/icons/siteTypes/index.js +2 -2
- package/lib/components/ApplyButton/ApplyButton.js +11 -10
- package/lib/components/ApplyButton/index.js +4 -3
- package/lib/components/Backdrop/Backdrop.js +5 -7
- package/lib/components/ContentLoader/ContentLoader.js +10 -12
- package/lib/components/ContentLoader/index.js +2 -2
- package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.js +12 -12
- package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.stories.js +9 -5
- package/lib/components/CustomInputs/DoubleTabs/styles.js +16 -21
- package/lib/components/CustomInputs/PasswordInput/PasswordInput.js +20 -12
- package/lib/components/CustomInputs/PrimaryButton/PrimaryButton.js +6 -7
- package/lib/components/CustomInputs/Search/Search.js +60 -37
- package/lib/components/CustomInputs/Search/index.js +4 -3
- package/lib/components/CustomInputs/Select/Select.js +55 -38
- package/lib/components/CustomInputs/Select/Select.stories.js +10 -6
- package/lib/components/DamageType/DamageType.js +60 -35
- package/lib/components/DamageType/index.js +4 -3
- package/lib/components/DataLoaderError/DataLoaderError.js +7 -9
- package/lib/components/DischargeHeatmap/DischargeHeatmap.js +13 -11
- package/lib/components/DischargeHeatmap/DischargeHeatmap.test.js +73 -72
- package/lib/components/DischargeHeatmap/DischargeHeatmapContainer.js +37 -25
- package/lib/components/DischargeHeatmap/HighchartsOptions.js +16 -12
- package/lib/components/DischargeHeatmap/index.js +4 -3
- package/lib/components/DischargeHeatmap/mocks/handlers.js +4 -3
- package/lib/components/DischargeHeatmap/popupText.js +12 -11
- package/lib/components/DischargeHeatmap/titles.js +6 -4
- package/lib/components/DischargeHeatmap/types.js +1 -1
- package/lib/components/ErrorBoundary.js +42 -27
- package/lib/components/Events/Events.js +48 -29
- package/lib/components/Events/index.js +4 -3
- package/lib/components/Graph/Graph.js +95 -74
- package/lib/components/Graph/index.js +4 -3
- package/lib/components/Header/Breadcrumbs/Breadcrumbs.js +24 -19
- package/lib/components/Header/Breadcrumbs/index.js +4 -3
- package/lib/components/Header/DoubleTabs/DoubleTabs.js +28 -18
- package/lib/components/Header/DoubleTabs/DoubleTabs.stories.js +9 -5
- package/lib/components/Header/DoubleTabs/styles.js +8 -5
- package/lib/components/Header/Header.js +3 -3
- package/lib/components/Header/Header.stories.js +9 -5
- package/lib/components/Header/InfoBar/Breadcrumbs/Breadcrumbs.js +36 -24
- package/lib/components/Header/InfoBar/InfoBar.js +102 -69
- package/lib/components/Header/InfoBar/Search/Control.js +10 -11
- package/lib/components/Header/InfoBar/Search/GroupLabel.js +7 -8
- package/lib/components/Header/InfoBar/Search/Search.js +24 -17
- package/lib/components/Header/InfoBar/Search/SearchContainer.js +35 -21
- package/lib/components/Header/InfoBar/Search/index.js +4 -3
- package/lib/components/Header/InfoBar/Search/searchStyle.js +49 -36
- package/lib/components/Header/InfoBar/TimeFilter.js +17 -13
- package/lib/components/Header/InfoBar/types.js +1 -1
- package/lib/components/Header/KandoNavbar/KandoNavbar.js +93 -66
- package/lib/components/Header/KandoNavbar/index.js +4 -3
- package/lib/components/Header/Slideshow/Slideshow.js +91 -67
- package/lib/components/Header/Slideshow/index.js +4 -3
- package/lib/components/Header/Toolbar/ClientImg/ClientImg.js +5 -7
- package/lib/components/Header/Toolbar/CustomerMenu/CustomerMenu.js +24 -22
- package/lib/components/Header/Toolbar/MenuCreator/MenuCreator.js +17 -17
- package/lib/components/Header/Toolbar/SearchDropdown/SearchDropdown.js +42 -36
- package/lib/components/Header/Toolbar/Toolbar.js +76 -56
- package/lib/components/InfoBar/InfoBar.js +24 -10
- package/lib/components/InfoBar/InfoBar.stories.js +9 -5
- package/lib/components/KandoModal/KandoModal.js +40 -24
- package/lib/components/KandoModal/index.js +4 -3
- package/lib/components/Link.js +8 -9
- package/lib/components/Links/CustomRedirect/CustomRedirect.js +7 -10
- package/lib/components/Links/StyledLink/StyledLink.js +20 -17
- package/lib/components/Links/StyledNavLink/StyledNavLink.js +10 -12
- package/lib/components/LiveEvents/CarouselSlide.js +10 -11
- package/lib/components/LiveEvents/LiveEvents.js +6 -7
- package/lib/components/LiveEvents/index.js +4 -3
- package/lib/components/LoaderByPercent/LoaderByPercent.js +30 -37
- package/lib/components/Map/Map.js +25 -20
- package/lib/components/Map/index.js +4 -3
- package/lib/components/Modal/Modal.js +10 -10
- package/lib/components/NarrowHeader.js +32 -18
- package/lib/components/PointInfo/PointInfo.js +19 -20
- package/lib/components/PointInfo/index.js +4 -3
- package/lib/components/PopupModal/PopupModal.js +17 -13
- package/lib/components/PopupModal/PopupModal.stories.js +24 -17
- package/lib/components/Sector/Sector.js +40 -34
- package/lib/components/Sector/Sector.test.js +24 -24
- package/lib/components/Sector/SectorIconsNew.js +19 -26
- package/lib/components/Sector/index.js +4 -3
- package/lib/components/Sector/sectorIcons.js +5 -4
- package/lib/components/SevereEvent/Eta/Eta.js +54 -49
- package/lib/components/SevereEvent/Eta/styles.js +8 -11
- package/lib/components/SevereEvent/SevereEvent.js +35 -27
- package/lib/components/Spinner/Spinner.js +8 -8
- package/lib/components/Spinner/Spinner.stories.js +11 -6
- package/lib/components/Spinner/index.js +4 -3
- package/lib/components/Spinner/styles.js +16 -21
- package/lib/components/Tabs/Tabs.js +31 -18
- package/lib/components/Tabs/Tabs.stories.js +10 -6
- package/lib/components/Tabs/assets/index.js +6 -6
- package/lib/components/TimeRangeSelector/KandoRangePicker/ComparisonSelect.js +18 -13
- package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePicker.js +45 -32
- package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePickerContainer.js +34 -20
- package/lib/components/TimeRangeSelector/KandoRangePicker/index.js +4 -3
- package/lib/components/TimeRangeSelector/TimeRangeHelper.js +22 -17
- package/lib/components/TimeRangeSelector/TimeRangeItem/TimeRangeItem.js +14 -13
- package/lib/components/TimeRangeSelector/TimeRangeItem/index.js +4 -3
- package/lib/components/TimeRangeSelector/TimeRangeList.js +27 -24
- package/lib/components/TimeRangeSelector/TimeRangeOptions.js +27 -17
- package/lib/components/TimeRangeSelector/TimeRangeSelector.js +31 -26
- package/lib/components/TimeRangeSelector/TimeRangeSelector.stories.js +10 -6
- package/lib/components/TimeRangeSelector/constants.js +5 -3
- package/lib/components/TimeRangeSelector/index.js +4 -3
- package/lib/components/Toggle/Toggle.js +18 -11
- package/lib/components/Toggle/index.js +4 -3
- package/lib/components/TrendGraph/TrendGraph.js +42 -24
- package/lib/components/TrendGraph/index.js +4 -3
- package/lib/components/TrendGraphNVL/TrendGraphNVL.js +33 -26
- package/lib/components/TrendGraphNVL/index.js +4 -3
- package/lib/development-environment/index.js +13 -9
- package/lib/development-environment/mock/browser.js +5 -2
- package/lib/development-environment/mock/get.js +10 -8
- package/lib/development-environment/mock/handlers.js +3 -2
- package/lib/development-environment/mock/mockBus.js +5 -4
- package/lib/development-environment/mock/mockObjects/area-trends-graph.js +3 -2
- package/lib/development-environment/mock/mockObjects/areaInformation.js +3 -2
- package/lib/development-environment/mock/mockObjects/areaQualitySummary.js +3 -2
- package/lib/development-environment/mock/mockObjects/areaSitesData.js +3 -2
- package/lib/development-environment/mock/mockObjects/areasJson.js +3 -2
- package/lib/development-environment/mock/mockObjects/controlRoomNetworkEdges.js +3 -2
- package/lib/development-environment/mock/mockObjects/covidView-areasData-24.js +3 -2
- package/lib/development-environment/mock/mockObjects/data-menuData.js +3 -2
- package/lib/development-environment/mock/mockObjects/data-search.js +3 -2
- package/lib/development-environment/mock/mockObjects/discharge_effluent_quality.js +3 -2
- package/lib/development-environment/mock/mockObjects/discharge_pattern_overtime.js +3 -2
- package/lib/development-environment/mock/mockObjects/eventFiltersJson.js +3 -2
- package/lib/development-environment/mock/mockObjects/eventsJson.js +3 -2
- package/lib/development-environment/mock/mockObjects/metascore.js +3 -2
- package/lib/development-environment/mock/mockObjects/permissionsJson.js +3 -2
- package/lib/development-environment/mock/mockObjects/pointsJson.js +3 -2
- package/lib/development-environment/mock/mockObjects/site-info.js +3 -2
- package/lib/development-environment/mock/mockObjects/trend-graph-component-data-907.js +3 -2
- package/lib/development-environment/togly/ToglyDashboard.js +23 -13
- package/lib/development-environment/togly/ToglyItem.js +31 -24
- package/lib/development-environment/togly/flags.js +1 -1
- package/lib/development-environment/togly/init.js +4 -4
- package/lib/development-environment/togly/macro.js +9 -13
- package/lib/development-environment/togly/useDoubleKeyDown.js +9 -7
- package/lib/development-environment/togly/useLocalStorage.js +18 -13
- package/lib/hooks/useApi.js +56 -20
- package/lib/hooks/useApiWithDashboardQuery.js +43 -23
- package/lib/hooks/useClickOutside.js +5 -4
- package/lib/hooks/useInitializeHeaders.js +6 -6
- package/lib/hooks/useKandoFetch.js +31 -17
- package/lib/hooks/useMap.js +37 -25
- package/lib/hooks/useNavContext.js +26 -22
- package/lib/hooks/useQueryURL.js +3 -2
- package/lib/hooks/useRemoveExistingLayers.js +8 -7
- package/lib/hooks/useUpdateEventBodyTail.js +19 -14
- package/lib/hooks/useUserTimeZone.js +31 -34
- package/lib/hooks/useUserTimeZone.test.js +23 -19
- package/lib/hooks/useWindowSize.js +14 -7
- package/lib/index.js +13 -11
- package/lib/macros/getVersion.js +2 -2
- package/lib/models/IAction.js +1 -1
- package/lib/models/IAppState.js +1 -1
- package/lib/pages/AreaPage/AreaPage.js +68 -34
- package/lib/pages/AreaPage/Dashboard/AreaMapContainer/AreaMapContainer.js +17 -15
- package/lib/pages/AreaPage/Dashboard/Dashboard.js +27 -25
- package/lib/pages/AreaPage/Dashboard/LineChart/LineChart.js +23 -14
- package/lib/pages/AreaPage/Dashboard/LineChart/options/options.js +5 -5
- package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/PieChart/PieChart.js +8 -8
- package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/SiteBox.js +10 -10
- package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/styles.js +6 -4
- package/lib/pages/AreaPage/Dashboard/Sites/SitesResponse.interface.js +1 -1
- package/lib/pages/AreaPage/Dashboard/Sites/factories.mock.js +3 -2
- package/lib/pages/AreaPage/Dashboard/Sites/styles.js +8 -5
- package/lib/pages/AssessmentPage/AssessmentPage.js +46 -38
- package/lib/pages/CannyWidget/Feedback.js +16 -14
- package/lib/pages/CovidPage/CovidPage.js +16 -9
- package/lib/pages/CovidPage/components/Body.js +30 -26
- package/lib/pages/CovidPage/components/Map.js +40 -28
- package/lib/pages/CovidPage/components/Sidebar.js +16 -15
- package/lib/pages/CovidPage/components/Summary.js +29 -20
- package/lib/pages/CovidPage/components/TrendGraphNVL/TrendGraphNVL.js +33 -26
- package/lib/pages/CovidPage/components/TrendGraphNVL/index.js +4 -3
- package/lib/pages/CovidPage/components/TrendPopupContent/TrendPopupContent.js +76 -52
- package/lib/pages/CovidPage/components/TrendPopupContent/index.js +4 -3
- package/lib/pages/CovidPage/components/areas/Area.js +36 -24
- package/lib/pages/CovidPage/components/areas/AreaPolygonWBE.js +46 -45
- package/lib/pages/CovidPage/components/areas/AreaPolygonsWBE.js +36 -32
- package/lib/pages/CovidPage/components/areas/AreasList.js +42 -29
- package/lib/pages/CovidPage/components/areas/Sort.js +17 -12
- package/lib/pages/CovidPage/components/nvlStatusHelper.js +11 -11
- package/lib/pages/DashboardMap/AreaCard.js +27 -27
- package/lib/pages/DashboardMap/AssessmentIcon.js +7 -8
- package/lib/pages/DashboardMap/Capacity.js +77 -28
- package/lib/pages/DashboardMap/FactoryCard.js +24 -28
- package/lib/pages/DashboardMap/HighchartsOptions.js +5 -6
- package/lib/pages/DashboardMap/List.js +65 -55
- package/lib/pages/DashboardMap/ListContext.js +19 -14
- package/lib/pages/DashboardMap/Loader.js +3 -3
- package/lib/pages/DashboardMap/SeverityBadge.js +24 -16
- package/lib/pages/DashboardMap/WWTPMap.js +71 -57
- package/lib/pages/DashboardMap/WaterDischarge.js +9 -9
- package/lib/pages/DashboardMap/Widget.js +67 -48
- package/lib/pages/DashboardMap/index.js +4 -3
- package/lib/pages/DashboardMap/utils.js +60 -41
- package/lib/pages/EventsPage/Body/Body.js +12 -15
- package/lib/pages/EventsPage/DragAndDropArea/DragAndDropContainer.js +20 -17
- package/lib/pages/EventsPage/DragAndDropArea/DragAndDropUtils.js +27 -16
- package/lib/pages/EventsPage/DragAndDropArea/DragAndDropWrapper.js +9 -10
- package/lib/pages/EventsPage/DragAndDropArea/DraggableItem.js +10 -13
- package/lib/pages/EventsPage/DragAndDropArea/DraggableList.js +31 -22
- package/lib/pages/EventsPage/DragAndDropArea/index.js +4 -3
- package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +38 -30
- package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainerHelpers.js +23 -14
- package/lib/pages/EventsPage/EventsPage.js +17 -10
- package/lib/pages/EventsPage/FloatingGraph/FloatingGraph.js +40 -26
- package/lib/pages/EventsPage/events/MoreInfo.js +19 -18
- package/lib/pages/EventsPage/events/Sidebar.js +11 -14
- package/lib/pages/EventsPage/events/event_info/Contaminants/Contaminants.js +10 -9
- package/lib/pages/EventsPage/events/event_info/Contaminants/ContaminantsList.js +24 -19
- package/lib/pages/EventsPage/events/event_info/Contaminants/index.js +4 -3
- package/lib/pages/EventsPage/events/event_info/EarlyWarnings.js +38 -31
- package/lib/pages/EventsPage/events/event_info/EventDetails.js +32 -34
- package/lib/pages/EventsPage/events/event_info/EventInfo.js +60 -50
- package/lib/pages/EventsPage/events/event_info/EventPath/EventPath.js +5 -5
- package/lib/pages/EventsPage/events/event_info/EventSection.js +21 -18
- package/lib/pages/EventsPage/events/event_info/EventSection.test.js +39 -44
- package/lib/pages/EventsPage/events/event_info/EventTimeRange.js +50 -39
- package/lib/pages/EventsPage/events/event_info/Header/Header.js +7 -8
- package/lib/pages/EventsPage/events/event_info/Header/HeaderContainer.js +34 -29
- package/lib/pages/EventsPage/events/event_info/Header/index.js +4 -3
- package/lib/pages/EventsPage/events/event_info/HistoricalInformation.js +7 -6
- package/lib/pages/EventsPage/events/event_info/MiniEventTree.js +39 -30
- package/lib/pages/EventsPage/events/event_info/MobileEventPath.js +9 -6
- package/lib/pages/EventsPage/events/event_info/PollutionAssessment /PollutionAssessment.js +15 -14
- package/lib/pages/EventsPage/events/event_info/PollutionAssessment /PollutionTypesList.js +12 -9
- package/lib/pages/EventsPage/events/event_info/PollutionAssessment /index.js +4 -3
- package/lib/pages/EventsPage/events/event_info/PollutionDischarge.js +24 -23
- package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResult.js +22 -13
- package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResultButton.js +6 -7
- package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/index.js +4 -3
- package/lib/pages/EventsPage/events/event_info/SamplingList/SamplingDetails.js +12 -13
- package/lib/pages/EventsPage/events/event_info/SamplingList/Samplings.js +28 -22
- package/lib/pages/EventsPage/events/event_info/SamplingList/index.js +4 -3
- package/lib/pages/EventsPage/events/event_info/SeverityScore/ScoreExplanation.js +10 -13
- package/lib/pages/EventsPage/events/event_info/SeverityScore/SeverityScore.js +9 -8
- package/lib/pages/EventsPage/events/event_info/SeverityScore/index.js +4 -3
- package/lib/pages/EventsPage/events/event_info/SourceDetails/Confidence.js +9 -9
- package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.js +5 -4
- package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.test.js +11 -13
- package/lib/pages/EventsPage/events/event_info/SourceDetails/IconAndTitles.js +5 -7
- package/lib/pages/EventsPage/events/event_info/SourceDetails/MoreInfoButton.js +14 -11
- package/lib/pages/EventsPage/events/event_info/SourceDetails/OtherSources.js +6 -7
- package/lib/pages/EventsPage/events/event_info/SourceDetails/PotentialSources.js +8 -9
- package/lib/pages/EventsPage/events/event_info/SourceDetails/SingleSource.js +8 -9
- package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceCardBody.js +7 -8
- package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.js +12 -13
- package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.test.js +19 -18
- package/lib/pages/EventsPage/events/event_info/SourceDetails/WaterDischarge.js +7 -7
- package/lib/pages/EventsPage/events/event_info/Timelines/DischargeBox.js +8 -9
- package/lib/pages/EventsPage/events/event_info/Timelines/EarlyWarning.js +18 -19
- package/lib/pages/EventsPage/events/event_info/Timelines/LiveStatusBadge.js +7 -6
- package/lib/pages/EventsPage/events/event_info/Timelines/SeenBox.js +12 -13
- package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.js +19 -23
- package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.test.js +11 -12
- package/lib/pages/EventsPage/events/event_info/Timelines/Titles.js +7 -8
- package/lib/pages/EventsPage/events/event_info/Timelines/index.js +4 -3
- package/lib/pages/EventsPage/events/event_info/Timelines/style.js +6 -4
- package/lib/pages/EventsPage/events/event_info/charts/EventDetailsPieChart.js +40 -25
- package/lib/pages/EventsPage/events/event_info/damage_type/DamageType.js +39 -30
- package/lib/pages/EventsPage/events/event_info/samplingsOld/Sampling.js +12 -13
- package/lib/pages/EventsPage/events/event_info/samplingsOld/Samplings.js +20 -17
- package/lib/pages/EventsPage/events/event_info/sources/Source.js +31 -27
- package/lib/pages/EventsPage/events/event_info/sources/Sources.js +27 -22
- package/lib/pages/EventsPage/events/event_info/styles.js +15 -21
- package/lib/pages/EventsPage/events/events_list/EventItem.js +21 -18
- package/lib/pages/EventsPage/events/events_list/EventUtils.js +11 -11
- package/lib/pages/EventsPage/events/events_list/EventsList.js +136 -111
- package/lib/pages/EventsPage/events/events_list/Filter/Filter.js +58 -41
- package/lib/pages/EventsPage/events/events_list/Filter/FilterContainer.js +135 -90
- package/lib/pages/EventsPage/events/events_list/Filter/FilterItem.js +73 -54
- package/lib/pages/EventsPage/events/events_list/Filter/FiltersDropDown.js +44 -39
- package/lib/pages/EventsPage/events/events_list/Filter/OptionsDropDown.js +41 -32
- package/lib/pages/EventsPage/events/events_list/Filter/SingleSelect.js +21 -19
- package/lib/pages/EventsPage/events/events_list/Sort.js +19 -14
- package/lib/pages/ImportFileWizard/FileUploadRespones.js +22 -14
- package/lib/pages/ImportFileWizard/ImportButtomButtons.js +8 -9
- package/lib/pages/ImportFileWizard/ImportFile.js +25 -21
- package/lib/pages/ImportFileWizard/ResponseBody.js +36 -26
- package/lib/pages/ImportFileWizard/ValidationForm.js +23 -23
- package/lib/pages/ImportFileWizard/ValidationResponse.js +25 -23
- package/lib/pages/ImportFileWizard/importFileUtils.js +5 -4
- package/lib/pages/ImportFileWizard/index.js +4 -3
- package/lib/pages/ImportGisPage/ImportGisContainer.js +27 -22
- package/lib/pages/ImportGisPage/ImportedGisFilesPage.js +44 -38
- package/lib/pages/ImportGisPage/importGisUtils.js +52 -43
- package/lib/pages/ImportGisProcess/index.js +18 -14
- package/lib/pages/ImportSiteProcess/index.js +18 -14
- package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/MultiChoiceTabs.js +13 -7
- package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/RadioTabs.js +20 -18
- package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/SeverityButtons.js +4 -4
- package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.js +60 -28
- package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.stories.js +12 -8
- package/lib/pages/NotificationsPage/Notification/Notification.js +13 -17
- package/lib/pages/NotificationsPage/Notifications.interface.js +1 -1
- package/lib/pages/NotificationsPage/Notifications.mock.js +3 -2
- package/lib/pages/NotificationsPage/Notifications.stories.js +10 -6
- package/lib/pages/NotificationsPage/NotificationsPage.js +38 -19
- package/lib/pages/NotificationsPage/assets/index.js +10 -10
- package/lib/pages/NotificationsPageV2/NotificationsPage.js +101 -72
- package/lib/pages/NotificationsPageV2/components/NotificationsCard.js +65 -95
- package/lib/pages/NotificationsPageV2/components/NotificationsForm/EventType.js +15 -13
- package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSendVia.js +17 -19
- package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSensors.js +22 -18
- package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSources.js +22 -18
- package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationTags.js +23 -19
- package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationsFormContent.js +71 -82
- package/lib/pages/NotificationsPageV2/components/NotificationsForm/WaterAuthoritySelection.js +23 -19
- package/lib/pages/NotificationsPageV2/components/NotificationsSidebar.js +74 -71
- package/lib/pages/NotificationsPageV2/components/NotificationsUtils.js +94 -80
- package/lib/pages/NotificationsPageV2/notificationUtils.js +39 -40
- package/lib/pages/OldSitePage/IDashboardData.js +1 -1
- package/lib/pages/OldSitePage/OldSitePage.js +132 -56
- package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.js +10 -6
- package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.stories.js +9 -5
- package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +7 -9
- package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +19 -16
- package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +12 -10
- package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +19 -12
- package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +11 -14
- package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +9 -5
- package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +16 -18
- package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +64 -51
- package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +8 -10
- package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.js +54 -29
- package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.mock.js +7 -4
- package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.stories.js +19 -12
- package/lib/pages/OldSitePage/SamplingParameters/charts/ParametersChart.js +11 -11
- package/lib/pages/OldSitePage/SamplingParameters/charts/SamplingChart.js +12 -10
- package/lib/pages/OldSitePage/SamplingParameters/charts/options/options.js +23 -27
- package/lib/pages/OldSitePage/SamplingParameters/dataParser.js +30 -28
- package/lib/pages/OldSitePage/SamplingParameters/models.js +1 -1
- package/lib/pages/OldSitePage/SamplingParameters/styles/samplingParameters.js +8 -5
- package/lib/pages/OldSitePage/SamplingParameters/styles/styles.js +12 -16
- package/lib/pages/OperationsPage/LeftPanel.js +55 -35
- package/lib/pages/OperationsPage/Map/Map.js +12 -12
- package/lib/pages/OperationsPage/Map/useMap.js +64 -52
- package/lib/pages/OperationsPage/OperationsContainerPage.js +59 -32
- package/lib/pages/OperationsPage/OperationsFilePage.js +12 -10
- package/lib/pages/OperationsPage/OperationsUtilityPage.js +6 -5
- package/lib/pages/OperationsPage/RightPanel.js +25 -22
- package/lib/pages/OperationsPage/index.js +4 -4
- package/lib/pages/PollutionRiskAssessment/FactoryDetails.js +60 -27
- package/lib/pages/PollutionRiskAssessment/FilterBehaviors.js +25 -19
- package/lib/pages/PollutionRiskAssessment/FilterButton.js +10 -11
- package/lib/pages/PollutionRiskAssessment/Map.js +42 -38
- package/lib/pages/PollutionRiskAssessment/SearchButton.js +10 -11
- package/lib/pages/PollutionRiskAssessment/SearchField.js +40 -26
- package/lib/pages/PollutionRiskAssessment/TotalSavings.js +16 -16
- package/lib/pages/PollutionRiskAssessment/UseCases.js +34 -32
- package/lib/pages/PollutionRiskAssessment/index.js +136 -76
- package/lib/pages/PollutionRiskAssessment/useMap.js +50 -34
- package/lib/pages/PollutionRiskAssessment/utils.js +7 -7
- package/lib/pages/ProfilePage/Container.js +4 -3
- package/lib/pages/ProfilePage/PasswordModal/PasswordModal.js +40 -23
- package/lib/pages/ProfilePage/ProfilePage.js +205 -106
- package/lib/pages/ProfilePage/TelegramModal/TelegramModal.js +34 -25
- package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.js +20 -20
- package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.test.js +30 -27
- package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionContainer.js +119 -57
- package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionDropdown.js +23 -18
- package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActions.js +13 -14
- package/lib/pages/SamplingsPage/ActionsDropDown/ViewLabResult.js +45 -40
- package/lib/pages/SamplingsPage/DesktopActions/DesktopActions.js +24 -25
- package/lib/pages/SamplingsPage/DesktopActions/DownloadCSV.js +19 -18
- package/lib/pages/SamplingsPage/DesktopActions/UploadLabResult.js +18 -15
- package/lib/pages/SamplingsPage/DesktopActions/index.js +4 -3
- package/lib/pages/SamplingsPage/NavigationDropdown.js +31 -43
- package/lib/pages/SamplingsPage/NewSamplingAction.js +102 -75
- package/lib/pages/SamplingsPage/SamplingMobileModal.js +98 -124
- package/lib/pages/SamplingsPage/SamplingProperties/ImageDeleteModal.js +25 -23
- package/lib/pages/SamplingsPage/SamplingProperties/ImagePreviewModal.js +25 -36
- package/lib/pages/SamplingsPage/SamplingProperties/ImageUpload.js +61 -36
- package/lib/pages/SamplingsPage/SamplingProperties/ManholeImageMobile.js +21 -16
- package/lib/pages/SamplingsPage/SamplingProperties/SamplerInProcess.js +9 -10
- package/lib/pages/SamplingsPage/SamplingProperties/SamplingProperties.js +193 -108
- package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesForm.js +54 -47
- package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHead.js +39 -42
- package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHeadMobile.js +39 -42
- package/lib/pages/SamplingsPage/SamplingProperties/samplingPropertiesUtils.js +28 -21
- package/lib/pages/SamplingsPage/SamplingProperties/styles.js +6 -4
- package/lib/pages/SamplingsPage/SamplingSiteTableCell.js +7 -11
- package/lib/pages/SamplingsPage/SamplingsMobileItem.js +53 -51
- package/lib/pages/SamplingsPage/SamplingsMobileList.js +31 -22
- package/lib/pages/SamplingsPage/SamplingsPage.js +33 -25
- package/lib/pages/SamplingsPage/SamplingsPageContainer.js +58 -49
- package/lib/pages/SamplingsPage/index.js +3 -2
- package/lib/pages/SamplingsPage/samplingsPageUtils.js +83 -52
- package/lib/pages/SitePage/DischargePattern/DischargePattern.js +6 -7
- package/lib/pages/SitePage/PollutionContributor/PollutionContributor.js +16 -16
- package/lib/pages/SitePage/PollutionContributor/PollutionContributorContainer.js +16 -12
- package/lib/pages/SitePage/PollutionContributor/contributorUtils.js +16 -16
- package/lib/pages/SitePage/PollutionContributor/index.js +4 -3
- package/lib/pages/SitePage/SamplingParameters/NoResults/NoResults.stories.js +9 -5
- package/lib/pages/SitePage/SamplingParameters/NoResults/index.js +15 -15
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +9 -10
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.test.js +24 -27
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +16 -12
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.test.js +33 -37
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +12 -10
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +25 -15
- package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +11 -14
- package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +9 -5
- package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +16 -18
- package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +71 -58
- package/lib/pages/SitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +8 -10
- package/lib/pages/SitePage/SamplingParameters/SamplingParameters.js +27 -15
- package/lib/pages/SitePage/SamplingParameters/SamplingParameters.mock.js +9 -5
- package/lib/pages/SitePage/SamplingParameters/SamplingParameters.stories.js +19 -12
- package/lib/pages/SitePage/SamplingParameters/body/Body.js +9 -10
- package/lib/pages/SitePage/SamplingParameters/body/BodyContainer.js +40 -30
- package/lib/pages/SitePage/SamplingParameters/body/index.js +4 -3
- package/lib/pages/SitePage/SamplingParameters/charts/ParametersChart.js +12 -11
- package/lib/pages/SitePage/SamplingParameters/charts/SamplingChart.js +12 -10
- package/lib/pages/SitePage/SamplingParameters/charts/options/options.js +54 -54
- package/lib/pages/SitePage/SamplingParameters/dataParser.js +41 -32
- package/lib/pages/SitePage/SamplingParameters/dataParser.test.js +9 -11
- package/lib/pages/SitePage/SamplingParameters/models.js +1 -1
- package/lib/pages/SitePage/SamplingParameters/styles/samplingParameters.js +8 -5
- package/lib/pages/SitePage/SamplingParameters/styles/styles.js +12 -16
- package/lib/pages/SitePage/SiteInformation/EmptyState.js +10 -13
- package/lib/pages/SitePage/SiteInformation/SiteInformation.js +31 -31
- package/lib/pages/SitePage/SitePage.js +76 -36
- package/lib/pages/UploadLabResult/index.js +16 -15
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.js +37 -27
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.stories.js +13 -8
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.js +15 -11
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.stories.js +9 -5
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/Eta.js +50 -47
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/styles.js +8 -11
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/LinkedSevereEvent.js +5 -4
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/OptionalLinkedSevereEvent.js +9 -6
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/SevereEvent.js +10 -11
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/models.js +1 -1
- package/lib/pages/UtilityDashboardPage/TopBar/TopBar.js +13 -16
- package/lib/pages/UtilityDashboardPage/TopBar/constants.js +8 -8
- package/lib/pages/UtilityDashboardPage/TopBar/styles.js +4 -3
- package/lib/pages/UtilityDashboardPage/UtilityDashboard.js +30 -20
- package/lib/pages/UtilityDashboardPage/UtilityDashboard.stories.js +40 -28
- package/lib/pages/UtilityDashboardPage/UtilityDashboardMapContainer/UtilityDashboardMapContainer.js +17 -15
- package/lib/pages/UtilityDashboardPage/UtilityDashboardPage.js +14 -7
- package/lib/pages/UtilityDashboardPage/VirtualAreaDashboardPage.js +31 -26
- package/lib/pages/WbeDashboard/ExpandableComponent.js +9 -9
- package/lib/pages/WbeDashboard/GraphWrapper.js +35 -28
- package/lib/pages/WbeDashboard/IndividualTinyGraph.js +19 -16
- package/lib/pages/WbeDashboard/SearchInput.js +21 -15
- package/lib/pages/WbeDashboard/SummaryGraph.js +77 -50
- package/lib/pages/WbeDashboard/SummaryGraphModal.js +18 -20
- package/lib/pages/WbeDashboard/Tabs.js +11 -11
- package/lib/pages/WbeDashboard/WbeDashboardPage.js +210 -147
- package/lib/pages/WbeDashboard/WbeSummaryBar.js +48 -39
- package/lib/pages/WwtpPage/DashboardCard.js +21 -25
- package/lib/pages/WwtpPage/DischargePatternCard.js +25 -14
- package/lib/pages/WwtpPage/InletsCard/InletsBar.js +11 -11
- package/lib/pages/WwtpPage/InletsCard/InletsCard.js +22 -22
- package/lib/pages/WwtpPage/InletsCard/index.js +4 -3
- package/lib/pages/WwtpPage/Map.js +6 -6
- package/lib/pages/WwtpPage/OrganicCard.js +5 -4
- package/lib/pages/WwtpPage/PotentialSaving/ImpactCard.js +5 -4
- package/lib/pages/WwtpPage/PotentialSaving/PotentialItem.js +7 -8
- package/lib/pages/WwtpPage/PotentialSaving/PotentialSaving.js +11 -11
- package/lib/pages/WwtpPage/PotentialSaving/PotentialSavingContainer.js +17 -20
- package/lib/pages/WwtpPage/PotentialSaving/index.js +4 -3
- package/lib/pages/WwtpPage/PotentialSaving/types.js +1 -1
- package/lib/pages/WwtpPage/PredictionCard.js +5 -4
- package/lib/pages/WwtpPage/TrendCard.js +22 -20
- package/lib/pages/WwtpPage/UpgradeBox.js +5 -4
- package/lib/pages/WwtpPage/WwtpPage.js +8 -9
- package/lib/pages/WwtpPage/WwtpPageContainer.js +19 -23
- package/lib/pages/WwtpPage/index.js +4 -3
- package/lib/providers/Slideshow/SlideshowContext.js +10 -11
- package/lib/providers/Slideshow/SlideshowProvider.js +40 -22
- package/lib/providers/Slideshow/SlideshowRunner.js +21 -18
- package/lib/providers/UrlHistory/UrlHistoryContext.js +6 -7
- package/lib/providers/UrlHistory/UrlHistoryProvider.js +13 -12
- package/lib/providers/UrlHistory/index.js +4 -4
- package/lib/providers/UrlHistory/useLastVisited.js +6 -5
- package/lib/react-app-env.d.js +1 -1
- package/lib/store/ImportGis/action.js +1 -1
- package/lib/store/ImportGis/actionTypes.js +5 -4
- package/lib/store/ImportGis/actionsCreator.js +5 -7
- package/lib/store/ImportGis/models/gisImports.js +1 -1
- package/lib/store/ImportGis/reducer.js +7 -9
- package/lib/store/WBE/actionTypes.js +3 -2
- package/lib/store/WBE/actions.js +1 -1
- package/lib/store/WBE/models/IAreaWBE.js +1 -1
- package/lib/store/WBE/models/IWBE.js +1 -1
- package/lib/store/WBE/models/IWBEState.js +1 -1
- package/lib/store/WBE/reducer.js +8 -10
- package/lib/store/WWTPDashboard/WWTPDashboardSlice.js +15 -24
- package/lib/store/WWTPDashboard/types.js +1 -1
- package/lib/store/areas/actionTypes.js +7 -4
- package/lib/store/areas/actions.js +13 -7
- package/lib/store/areas/models/IArea.js +1 -1
- package/lib/store/areas/models/IAreasState.js +1 -1
- package/lib/store/areas/reducer.js +6 -8
- package/lib/store/context/actionTypes.js +5 -3
- package/lib/store/context/actions.js +3 -3
- package/lib/store/context/contextMiddlewares.js +18 -15
- package/lib/store/context/models/INavContext.js +1 -1
- package/lib/store/context/models/INavContextState.js +1 -1
- package/lib/store/context/reducer.js +8 -10
- package/lib/store/dashboard/dashboardSlice.js +11 -18
- package/lib/store/dashboard/periodType.js +1 -1
- package/lib/store/edges/actionTypes.js +9 -5
- package/lib/store/edges/actions.js +8 -4
- package/lib/store/edges/models/IEdge.js +1 -1
- package/lib/store/edges/models/IEdgesState.js +1 -1
- package/lib/store/edges/reducer.js +17 -13
- package/lib/store/events/actionTypes.js +33 -17
- package/lib/store/events/actions.js +7 -3
- package/lib/store/events/models/IEvent.js +1 -1
- package/lib/store/events/models/IEventsState.js +1 -1
- package/lib/store/events/models/ISource.js +1 -1
- package/lib/store/events/reducer.js +39 -28
- package/lib/store/filters/IFilter.js +1 -1
- package/lib/store/filters/IFilterItem.js +1 -1
- package/lib/store/global/actionTypes.js +21 -11
- package/lib/store/global/actions.js +6 -8
- package/lib/store/global/models/IGlobalState.js +1 -1
- package/lib/store/global/reducer.js +7 -9
- package/lib/store/permissions/permissionsSlice.js +9 -12
- package/lib/store/points/actionTypes.js +5 -3
- package/lib/store/points/actions.js +10 -6
- package/lib/store/points/models/IGeoPoint.js +1 -1
- package/lib/store/points/models/IGroup.js +1 -1
- package/lib/store/points/models/IIssue.js +1 -1
- package/lib/store/points/models/IPoint.js +1 -1
- package/lib/store/points/models/IPointsState.js +1 -1
- package/lib/store/points/reducer.js +5 -7
- package/lib/store/rootActionTypes.js +3 -2
- package/lib/store/rootActions.js +1 -1
- package/lib/store/rootReducer.js +10 -12
- package/lib/store/rootStore.js +6 -6
- package/lib/store/samplings/action.js +1 -1
- package/lib/store/samplings/actionTypes.js +5 -4
- package/lib/store/samplings/actionsCreator.js +1 -1
- package/lib/store/samplings/models/Samplings.js +1 -1
- package/lib/store/samplings/reducer.js +10 -10
- package/lib/styles/StylesLayout.js +6 -7
- package/lib/styles/theme/theme.js +26 -23
- package/lib/test/mocks/browser.js +5 -2
- package/lib/test/test-utils.js +9 -12
- package/lib/ui-kit/Alert/KandoAlert.js +6 -8
- package/lib/ui-kit/Button/Button.js +83 -129
- package/lib/ui-kit/Button/Button.test.js +33 -27
- package/lib/ui-kit/Button/ButtonUtils.js +1 -1
- package/lib/ui-kit/Checkbox/Checkbox.js +27 -34
- package/lib/ui-kit/ContentCard/ContentCard.js +20 -16
- package/lib/ui-kit/Dashboard/Dashboard.js +28 -29
- package/lib/ui-kit/Dashboard/index.js +4 -3
- package/lib/ui-kit/DropDown/DropDown.js +22 -23
- package/lib/ui-kit/DropDown/DropDown.test.js +13 -13
- package/lib/ui-kit/DropDown/DropDownItem.js +25 -26
- package/lib/ui-kit/DropDown/DropdownToggle.js +10 -13
- package/lib/ui-kit/EmptyState/EmptyState.js +6 -7
- package/lib/ui-kit/HierarchyGraph/AutoFitTree.js +81 -69
- package/lib/ui-kit/HierarchyGraph/HierarchyGraph.js +167 -89
- package/lib/ui-kit/HierarchyGraph/LeafSign.js +7 -7
- package/lib/ui-kit/HierarchyGraph/MicroStackedBar.js +19 -17
- package/lib/ui-kit/HierarchyGraph/NodeIcon.js +8 -9
- package/lib/ui-kit/HierarchyGraph/NodeLayout.js +25 -22
- package/lib/ui-kit/HierarchyGraph/PollutionContributorNode.js +10 -11
- package/lib/ui-kit/HierarchyGraph/ScoreNode.js +9 -10
- package/lib/ui-kit/HierarchyGraph/index.js +4 -3
- package/lib/ui-kit/HierarchyGraph/utils.js +67 -57
- package/lib/ui-kit/IconAction/IconAction.js +8 -9
- package/lib/ui-kit/ImageUploadButton/ImageUploadButton.js +64 -47
- package/lib/ui-kit/InfoTooltip/InfoTooltip.js +49 -58
- package/lib/ui-kit/InletsPie/InletsPie.js +16 -17
- package/lib/ui-kit/InletsPie/index.js +4 -3
- package/lib/ui-kit/InletsPie/options.js +9 -7
- package/lib/ui-kit/KandoBottomSheet/KandoBottomSheet.js +38 -29
- package/lib/ui-kit/KandoFilter/KandoFilter.js +11 -10
- package/lib/ui-kit/KandoList/KandoList.js +12 -13
- package/lib/ui-kit/KandoList/kandoListUtils.js +1 -1
- package/lib/ui-kit/KandoTable/KandoTable.js +41 -48
- package/lib/ui-kit/KandoTable/KandoTable.test.js +27 -21
- package/lib/ui-kit/KandoTable/kandoTableUtils.js +1 -1
- package/lib/ui-kit/Layout/Layout.js +7 -8
- package/lib/ui-kit/MobileInput/MobileInput.js +50 -56
- package/lib/ui-kit/ModalConfirmation/ModalConfirmation.js +17 -14
- package/lib/ui-kit/ModalConfirmation/index.js +3 -2
- package/lib/ui-kit/OrganicEvents/GaugeChart.js +8 -9
- package/lib/ui-kit/OrganicEvents/OrganicEvents.js +9 -8
- package/lib/ui-kit/OrganicEvents/OrganicEventsContainer.js +22 -26
- package/lib/ui-kit/OrganicEvents/TextInfo.js +13 -17
- package/lib/ui-kit/OrganicEvents/index.js +4 -3
- package/lib/ui-kit/RadioButtons/RadioButtonGroup.js +11 -12
- package/lib/ui-kit/SamplingStatus/SamplingStatus.js +21 -17
- package/lib/ui-kit/SamplingStatus/SamplingStatusHelper.js +4 -3
- package/lib/ui-kit/ScoreGauge/ScoreGauge.js +24 -21
- package/lib/ui-kit/ScoreGauge/constant.js +4 -3
- package/lib/ui-kit/ScoreGauge/index.js +4 -3
- package/lib/ui-kit/TimeLineChart/TrendChart.js +28 -25
- package/lib/ui-kit/TimeLineChart/index.js +4 -3
- package/lib/ui-kit/TitleAndCloseHeader/TitleAndCloseHeader.js +11 -10
- package/lib/ui-kit/Tooltip/Tooltip.js +9 -15
- package/lib/ui-kit/index.js +8 -8
- package/lib/ui-kit/kandoStepper/KandoStepper.js +14 -13
- package/lib/ui-kit/siteName/SiteName.js +11 -13
- package/lib/utilities/ActionUtility.js +7 -7
- package/lib/utilities/Alert.js +20 -23
- package/lib/utilities/Analytics.js +19 -19
- package/lib/utilities/Array.js +5 -4
- package/lib/utilities/Enum.js +51 -15
- package/lib/utilities/ErrorBoundary.js +42 -27
- package/lib/utilities/File.js +73 -45
- package/lib/utilities/GetDir.js +10 -10
- package/lib/utilities/KandoDate.js +15 -7
- package/lib/utilities/KandoModal.js +28 -16
- package/lib/utilities/LocalStorage.js +7 -5
- package/lib/utilities/ThousandsToK.js +2 -2
- package/lib/utilities/TimeFormat.js +23 -22
- package/lib/utilities/Truncate.js +27 -17
- package/lib/utilities/edgesMath.js +16 -15
- package/lib/utilities/i18n.js +6 -5
- package/lib/utilities/kql.js +12 -10
- package/lib/utilities/map/icons.js +18 -18
- package/lib/utilities/polylinedecorator.js +113 -88
- package/lib/utilities/scoreToData.js +26 -20
- package/lib/utilities/scoreToData.test.js +5 -5
- package/lib/utilities/time.js +10 -9
- package/lib/utilities/uploadToS3.js +12 -12
- package/lib/utilities/urls.js +14 -17
- package/package.json +1 -1
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.ProfilePage = void 0;
|
|
9
|
-
var
|
|
9
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
|
|
10
|
+
var _objectSpread3 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
|
|
11
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
10
12
|
var _react = _interopRequireWildcard(require("react"));
|
|
11
13
|
var _Select = require("components/CustomInputs/Select/Select");
|
|
12
14
|
var _i18n = _interopRequireDefault(require("utilities/i18n"));
|
|
@@ -23,9 +25,11 @@ var _Analytics = require("../../utilities/Analytics");
|
|
|
23
25
|
var _reactRedux = require("react-redux");
|
|
24
26
|
var _reactToastify = require("react-toastify");
|
|
25
27
|
var _permissionsSlice = require("store/permissions/permissionsSlice");
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
28
|
+
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); }
|
|
29
|
+
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; }
|
|
30
|
+
var ProfilePage = function ProfilePage() {
|
|
31
|
+
var timezonesArray = _momentTimezone.default.tz.names();
|
|
32
|
+
var dateTimeFormatOptions = [{
|
|
29
33
|
value: 'us',
|
|
30
34
|
label: 'United States',
|
|
31
35
|
format: {
|
|
@@ -47,13 +51,13 @@ const ProfilePage = () => {
|
|
|
47
51
|
hour12: false
|
|
48
52
|
}
|
|
49
53
|
}];
|
|
50
|
-
|
|
54
|
+
var timezones = timezonesArray.map(function (t) {
|
|
51
55
|
return {
|
|
52
56
|
value: t,
|
|
53
57
|
label: t
|
|
54
58
|
};
|
|
55
59
|
});
|
|
56
|
-
|
|
60
|
+
var localeOptions = [{
|
|
57
61
|
value: 'en',
|
|
58
62
|
label: 'English'
|
|
59
63
|
}, {
|
|
@@ -69,7 +73,7 @@ const ProfilePage = () => {
|
|
|
69
73
|
value: 'it',
|
|
70
74
|
label: 'Italiano'
|
|
71
75
|
}];
|
|
72
|
-
|
|
76
|
+
var flowRateUnitOptions = [{
|
|
73
77
|
value: 'gd_us',
|
|
74
78
|
label: _i18n.default.t('dashboard_v2.profile.flow_rate_unit_options.gd_us')
|
|
75
79
|
}, {
|
|
@@ -79,29 +83,56 @@ const ProfilePage = () => {
|
|
|
79
83
|
value: 'm3d',
|
|
80
84
|
label: _i18n.default.t('dashboard_v2.profile.flow_rate_unit_options.m3d')
|
|
81
85
|
}];
|
|
82
|
-
|
|
86
|
+
var temperatureUnitOptions = [{
|
|
83
87
|
value: 'celsius',
|
|
84
88
|
label: _i18n.default.t('dashboard_v2.profile.temperature_unit_options.celsius')
|
|
85
89
|
}, {
|
|
86
90
|
value: 'fahrenheit',
|
|
87
91
|
label: _i18n.default.t('dashboard_v2.profile.temperature_unit_options.fahrenheit')
|
|
88
92
|
}];
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
93
|
+
var _useState = (0, _react.useState)(localeOptions[0]),
|
|
94
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
95
|
+
locale = _useState2[0],
|
|
96
|
+
setLocale = _useState2[1];
|
|
97
|
+
var _useState3 = (0, _react.useState)(flowRateUnitOptions[0]),
|
|
98
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
99
|
+
flowRateUnit = _useState4[0],
|
|
100
|
+
setFlowRateUnit = _useState4[1];
|
|
101
|
+
var _useState5 = (0, _react.useState)(temperatureUnitOptions[0]),
|
|
102
|
+
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
103
|
+
temperatureUnit = _useState6[0],
|
|
104
|
+
setTemperatureUnit = _useState6[1];
|
|
105
|
+
var _useState7 = (0, _react.useState)(dateTimeFormatOptions[0]),
|
|
106
|
+
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
|
|
107
|
+
dateTimeFormat = _useState8[0],
|
|
108
|
+
setDateTimeFormat = _useState8[1];
|
|
109
|
+
var _useState9 = (0, _react.useState)(timezones[20]),
|
|
110
|
+
_useState10 = (0, _slicedToArray2.default)(_useState9, 2),
|
|
111
|
+
timezone = _useState10[0],
|
|
112
|
+
setTimezone = _useState10[1];
|
|
113
|
+
var _useState11 = (0, _react.useState)([{
|
|
114
|
+
value: '',
|
|
115
|
+
label: ''
|
|
116
|
+
}]),
|
|
117
|
+
_useState12 = (0, _slicedToArray2.default)(_useState11, 2),
|
|
118
|
+
departments = _useState12[0],
|
|
119
|
+
setDepartments = _useState12[1];
|
|
120
|
+
var _useState13 = (0, _react.useState)([{
|
|
121
|
+
value: '',
|
|
122
|
+
label: ''
|
|
123
|
+
}]),
|
|
124
|
+
_useState14 = (0, _slicedToArray2.default)(_useState13, 2),
|
|
125
|
+
businessRoles = _useState14[0],
|
|
126
|
+
setBusinessRoles = _useState14[1];
|
|
127
|
+
var _useState15 = (0, _react.useState)(departments[0]),
|
|
128
|
+
_useState16 = (0, _slicedToArray2.default)(_useState15, 2),
|
|
129
|
+
department = _useState16[0],
|
|
130
|
+
setDepartment = _useState16[1];
|
|
131
|
+
var _useState17 = (0, _react.useState)(businessRoles[0]),
|
|
132
|
+
_useState18 = (0, _slicedToArray2.default)(_useState17, 2),
|
|
133
|
+
businessRole = _useState18[0],
|
|
134
|
+
setBusinessRole = _useState18[1];
|
|
135
|
+
var initialParamsState = {
|
|
105
136
|
first_name: '',
|
|
106
137
|
last_name: '',
|
|
107
138
|
phone: '',
|
|
@@ -117,53 +148,75 @@ const ProfilePage = () => {
|
|
|
117
148
|
flow_rate_unit: '',
|
|
118
149
|
temperature_unit: ''
|
|
119
150
|
};
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
151
|
+
var _useState19 = (0, _react.useState)(false),
|
|
152
|
+
_useState20 = (0, _slicedToArray2.default)(_useState19, 2),
|
|
153
|
+
isTelegramOpen = _useState20[0],
|
|
154
|
+
setIsTelegramOpen = _useState20[1];
|
|
155
|
+
var _useState21 = (0, _react.useState)(false),
|
|
156
|
+
_useState22 = (0, _slicedToArray2.default)(_useState21, 2),
|
|
157
|
+
showPasswordModal = _useState22[0],
|
|
158
|
+
setShowPasswordModal = _useState22[1];
|
|
159
|
+
var _useState23 = (0, _react.useState)(false),
|
|
160
|
+
_useState24 = (0, _slicedToArray2.default)(_useState23, 2),
|
|
161
|
+
submitting = _useState24[0],
|
|
162
|
+
setSubmitting = _useState24[1];
|
|
163
|
+
var _useState25 = (0, _react.useState)(false),
|
|
164
|
+
_useState26 = (0, _slicedToArray2.default)(_useState25, 2),
|
|
165
|
+
showSuccessMessage = _useState26[0],
|
|
166
|
+
setShowSuccessMessage = _useState26[1];
|
|
167
|
+
var _useState27 = (0, _react.useState)(false),
|
|
168
|
+
_useState28 = (0, _slicedToArray2.default)(_useState27, 2),
|
|
169
|
+
showErrorMessage = _useState28[0],
|
|
170
|
+
setShowErrorMessage = _useState28[1];
|
|
171
|
+
var _useState29 = (0, _react.useState)({
|
|
172
|
+
show: false,
|
|
173
|
+
status: '',
|
|
174
|
+
message: ''
|
|
175
|
+
}),
|
|
176
|
+
_useState30 = (0, _slicedToArray2.default)(_useState29, 2),
|
|
177
|
+
showTelegramResponseMessage = _useState30[0],
|
|
178
|
+
setShowTelegramResponseMessage = _useState30[1];
|
|
179
|
+
var _useState31 = (0, _react.useState)(initialParamsState),
|
|
180
|
+
_useState32 = (0, _slicedToArray2.default)(_useState31, 2),
|
|
181
|
+
params = _useState32[0],
|
|
182
|
+
setParams = _useState32[1];
|
|
183
|
+
var handleOnChange = function handleOnChange(e) {
|
|
132
184
|
if (typeof e === 'string') {
|
|
133
185
|
if (e.startsWith('9720')) {
|
|
134
186
|
e = e.replace(/(9720)/g, '972');
|
|
135
187
|
}
|
|
136
|
-
setParams(
|
|
137
|
-
|
|
138
|
-
|
|
188
|
+
setParams(function (prevState) {
|
|
189
|
+
return (0, _objectSpread3.default)((0, _objectSpread3.default)({}, prevState), {}, {
|
|
190
|
+
phone: e
|
|
191
|
+
});
|
|
192
|
+
});
|
|
139
193
|
} else {
|
|
140
|
-
|
|
141
|
-
value,
|
|
142
|
-
name
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
}));
|
|
194
|
+
var _e$target = e.target,
|
|
195
|
+
value = _e$target.value,
|
|
196
|
+
name = _e$target.name;
|
|
197
|
+
setParams(function (prevState) {
|
|
198
|
+
return (0, _objectSpread3.default)((0, _objectSpread3.default)({}, prevState), {}, (0, _defineProperty2.default)({}, name, value));
|
|
199
|
+
});
|
|
147
200
|
}
|
|
148
201
|
};
|
|
149
|
-
|
|
202
|
+
var handleBusinessRoleChange = function handleBusinessRoleChange(e) {
|
|
150
203
|
if (e.target !== null) {
|
|
151
|
-
setParams((0,
|
|
204
|
+
setParams((0, _objectSpread3.default)((0, _objectSpread3.default)({}, params), {}, {
|
|
152
205
|
business_role: e.value,
|
|
153
206
|
other_business_role_name: e.target.value
|
|
154
207
|
}));
|
|
155
208
|
}
|
|
156
209
|
};
|
|
157
|
-
|
|
210
|
+
var handleDepartmentChange = function handleDepartmentChange(e) {
|
|
158
211
|
if (e.target !== null) {
|
|
159
|
-
setParams((0,
|
|
212
|
+
setParams((0, _objectSpread3.default)((0, _objectSpread3.default)({}, params), {}, {
|
|
160
213
|
department: e.value,
|
|
161
214
|
other_department_name: e.target.value
|
|
162
215
|
}));
|
|
163
216
|
}
|
|
164
217
|
};
|
|
165
|
-
|
|
166
|
-
return (0,
|
|
218
|
+
var getParamsWithAggregatedValues = function getParamsWithAggregatedValues() {
|
|
219
|
+
return (0, _objectSpread3.default)((0, _objectSpread3.default)({}, params), {}, {
|
|
167
220
|
date_time_format: dateTimeFormat.value,
|
|
168
221
|
locale: locale.value,
|
|
169
222
|
time_zone: timezone.value,
|
|
@@ -173,13 +226,15 @@ const ProfilePage = () => {
|
|
|
173
226
|
temperature_unit: temperatureUnit.value
|
|
174
227
|
});
|
|
175
228
|
};
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
229
|
+
var waterAuthorityName = (0, _reactRedux.useSelector)(function (state) {
|
|
230
|
+
return state.global_data.waterAuthorityName;
|
|
231
|
+
});
|
|
232
|
+
var showToast = function showToast(data) {
|
|
233
|
+
var username = data.username;
|
|
234
|
+
var error = data.error;
|
|
180
235
|
if (data.status === 'success') {
|
|
181
236
|
_reactToastify.toast.success(_i18n.default.t("my_profile_tab.telegram_messages.".concat(data.message), {
|
|
182
|
-
username
|
|
237
|
+
username: username
|
|
183
238
|
}), {
|
|
184
239
|
position: 'top-center'
|
|
185
240
|
});
|
|
@@ -192,23 +247,37 @@ const ProfilePage = () => {
|
|
|
192
247
|
});
|
|
193
248
|
}
|
|
194
249
|
};
|
|
195
|
-
|
|
196
|
-
|
|
250
|
+
var dispatch = (0, _reactRedux.useDispatch)();
|
|
251
|
+
var handleSubmit = function handleSubmit(e) {
|
|
197
252
|
e.preventDefault();
|
|
198
253
|
setSubmitting(true);
|
|
199
254
|
_axios.default.put('/profiles', {
|
|
200
255
|
user: getParamsWithAggregatedValues()
|
|
201
|
-
}).then(resp
|
|
256
|
+
}).then(function (resp) {
|
|
202
257
|
if (resp.data.errors === null) {
|
|
203
258
|
dispatch(_permissionsSlice.PermissionsSlice.actions.setUserInfo(JSON.parse(resp.data.user)));
|
|
204
|
-
document.querySelectorAll('.error-message').forEach(
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
259
|
+
document.querySelectorAll('.error-message').forEach(function (p) {
|
|
260
|
+
return p.innerHTML = '';
|
|
261
|
+
});
|
|
262
|
+
document.querySelectorAll('.invalid-field').forEach(function (p) {
|
|
263
|
+
return p.classList.remove('invalid-field');
|
|
264
|
+
});
|
|
265
|
+
var user = JSON.parse(resp.data.user);
|
|
266
|
+
var findLocale = localeOptions.find(function (e) {
|
|
267
|
+
return e.value === user.locale;
|
|
268
|
+
});
|
|
269
|
+
var findFlowRateUnit = flowRateUnitOptions.find(function (e) {
|
|
270
|
+
return e.value === user.flow_rate_unit;
|
|
271
|
+
});
|
|
272
|
+
var findTemperatureUnit = temperatureUnitOptions.find(function (e) {
|
|
273
|
+
return e.value === user.temperature_unit;
|
|
274
|
+
});
|
|
275
|
+
var findDateTimeFormat = dateTimeFormatOptions.find(function (e) {
|
|
276
|
+
return e.value === user.date_time_format;
|
|
277
|
+
});
|
|
278
|
+
var findTimezone = timezones.find(function (e) {
|
|
279
|
+
return e.value === user.time_zone;
|
|
280
|
+
});
|
|
212
281
|
setParams(user);
|
|
213
282
|
setLocale(findLocale);
|
|
214
283
|
setFlowRateUnit(findFlowRateUnit);
|
|
@@ -216,43 +285,47 @@ const ProfilePage = () => {
|
|
|
216
285
|
setDateTimeFormat(findDateTimeFormat);
|
|
217
286
|
setTimezone(findTimezone);
|
|
218
287
|
setShowSuccessMessage(true);
|
|
219
|
-
setTimeout(()
|
|
288
|
+
setTimeout(function () {
|
|
220
289
|
setShowSuccessMessage(false);
|
|
221
290
|
}, 6000);
|
|
222
291
|
} else {
|
|
223
|
-
document.querySelectorAll('.error-message').forEach(
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
292
|
+
document.querySelectorAll('.error-message').forEach(function (p) {
|
|
293
|
+
return p.innerHTML = '';
|
|
294
|
+
});
|
|
295
|
+
var errors = resp.data.user.errors;
|
|
296
|
+
for (var error in errors) {
|
|
297
|
+
var findElement = document.querySelector("input[name='".concat(error, "']"));
|
|
298
|
+
var parent = findElement.closest('.field');
|
|
299
|
+
var findInput = parent.querySelector('input');
|
|
229
300
|
findInput.classList.add('invalid-field');
|
|
230
301
|
parent.querySelector('.error-message').innerHTML = _i18n.default.t("dashboard_v2.profile.errors.".concat(error));
|
|
231
302
|
}
|
|
232
303
|
setShowSuccessMessage(false);
|
|
233
304
|
}
|
|
234
305
|
setSubmitting(false);
|
|
235
|
-
}).catch(error
|
|
306
|
+
}).catch(function (error) {
|
|
236
307
|
setShowErrorMessage(true);
|
|
237
308
|
setShowSuccessMessage(false);
|
|
238
309
|
setSubmitting(false);
|
|
239
|
-
setTimeout(()
|
|
310
|
+
setTimeout(function () {
|
|
240
311
|
setShowErrorMessage(false);
|
|
241
312
|
}, 6000);
|
|
242
313
|
});
|
|
243
314
|
};
|
|
244
|
-
(0, _react.useEffect)(()
|
|
315
|
+
(0, _react.useEffect)(function () {
|
|
245
316
|
(0, _Analytics.analyticsTrack)('Viewed Profile Page', {
|
|
246
317
|
utility_name: waterAuthorityName
|
|
247
318
|
});
|
|
248
319
|
// @ts-ignore
|
|
249
|
-
|
|
320
|
+
var token = document.querySelector('[name=csrf-token]').content;
|
|
250
321
|
_axios.default.defaults.headers.common['X-CSRF-TOKEN'] = token;
|
|
251
322
|
_axios.default.defaults.headers.common['Content-Type'] = 'application/js';
|
|
252
|
-
_axios.default.get("/profiles/resource").then(resp
|
|
323
|
+
_axios.default.get("/profiles/resource").then(function (resp) {
|
|
253
324
|
setParams(resp.data.user);
|
|
254
|
-
|
|
255
|
-
return object.find(
|
|
325
|
+
var findProperty = function findProperty(object, property) {
|
|
326
|
+
return object.find(function (e) {
|
|
327
|
+
return e.value === property;
|
|
328
|
+
});
|
|
256
329
|
};
|
|
257
330
|
setLocale(findProperty(localeOptions, resp.data.user.locale));
|
|
258
331
|
setFlowRateUnit(findProperty(flowRateUnitOptions, resp.data.user.flow_rate_unit));
|
|
@@ -263,13 +336,17 @@ const ProfilePage = () => {
|
|
|
263
336
|
setDepartment(findProperty(resp.data.departments, resp.data.user.department_id));
|
|
264
337
|
setDepartments(resp.data.departments);
|
|
265
338
|
setBusinessRoles(resp.data.business_roles);
|
|
266
|
-
}).catch(
|
|
339
|
+
}).catch(function (error) {
|
|
340
|
+
return alert(error);
|
|
341
|
+
});
|
|
267
342
|
}, []);
|
|
268
343
|
return /*#__PURE__*/_react.default.createElement(_Container.Container, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
269
344
|
className: "header-title"
|
|
270
345
|
}, _i18n.default.t('dashboard_v2.profile.title')), /*#__PURE__*/_react.default.createElement("form", {
|
|
271
346
|
action: "",
|
|
272
|
-
onSubmit:
|
|
347
|
+
onSubmit: function onSubmit(e) {
|
|
348
|
+
return handleSubmit(e);
|
|
349
|
+
}
|
|
273
350
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
274
351
|
className: "content"
|
|
275
352
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -285,7 +362,9 @@ const ProfilePage = () => {
|
|
|
285
362
|
className: "my-input",
|
|
286
363
|
name: 'first_name',
|
|
287
364
|
value: params.first_name,
|
|
288
|
-
onChange:
|
|
365
|
+
onChange: function onChange(e) {
|
|
366
|
+
return handleOnChange(e);
|
|
367
|
+
}
|
|
289
368
|
}), /*#__PURE__*/_react.default.createElement("p", {
|
|
290
369
|
className: 'error-message'
|
|
291
370
|
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -297,7 +376,9 @@ const ProfilePage = () => {
|
|
|
297
376
|
className: "my-input",
|
|
298
377
|
name: 'last_name',
|
|
299
378
|
value: params.last_name,
|
|
300
|
-
onChange:
|
|
379
|
+
onChange: function onChange(e) {
|
|
380
|
+
return handleOnChange(e);
|
|
381
|
+
}
|
|
301
382
|
}), /*#__PURE__*/_react.default.createElement("p", {
|
|
302
383
|
className: 'error-message'
|
|
303
384
|
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -327,7 +408,7 @@ const ProfilePage = () => {
|
|
|
327
408
|
enableSearch: true,
|
|
328
409
|
searchPlaceholder: _i18n.default.t('search'),
|
|
329
410
|
countryCodeEditable: false,
|
|
330
|
-
onChange: value
|
|
411
|
+
onChange: function onChange(value) {
|
|
331
412
|
handleOnChange(value);
|
|
332
413
|
},
|
|
333
414
|
inputProps: {
|
|
@@ -381,7 +462,9 @@ const ProfilePage = () => {
|
|
|
381
462
|
className: "my-input",
|
|
382
463
|
name: 'other_department_name',
|
|
383
464
|
value: params.other_department_name,
|
|
384
|
-
onChange:
|
|
465
|
+
onChange: function onChange(e) {
|
|
466
|
+
return handleDepartmentChange(e);
|
|
467
|
+
}
|
|
385
468
|
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
386
469
|
className: "field ".concat(businessRole && (businessRole === null || businessRole === void 0 ? void 0 : businessRole.value) === businessRoles[businessRoles.length - 1].value ? '' : 'field--hidden', " ")
|
|
387
470
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -392,12 +475,16 @@ const ProfilePage = () => {
|
|
|
392
475
|
className: "my-input",
|
|
393
476
|
name: 'other_business_role_name',
|
|
394
477
|
value: params.other_business_role_name,
|
|
395
|
-
onChange:
|
|
478
|
+
onChange: function onChange(e) {
|
|
479
|
+
return handleBusinessRoleChange(e);
|
|
480
|
+
}
|
|
396
481
|
}))), /*#__PURE__*/_react.default.createElement("div", {
|
|
397
482
|
className: "field"
|
|
398
483
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
399
484
|
className: "change-password",
|
|
400
|
-
onClick: ()
|
|
485
|
+
onClick: function onClick() {
|
|
486
|
+
return setShowPasswordModal(true);
|
|
487
|
+
}
|
|
401
488
|
}, /*#__PURE__*/_react.default.createElement(_pen.ReactComponent, {
|
|
402
489
|
width: "12px",
|
|
403
490
|
height: "12px",
|
|
@@ -456,14 +543,18 @@ const ProfilePage = () => {
|
|
|
456
543
|
className: "field field--buttons"
|
|
457
544
|
}, params.telegram_name === '' && /*#__PURE__*/_react.default.createElement("a", {
|
|
458
545
|
className: "telegram",
|
|
459
|
-
onClick: ()
|
|
546
|
+
onClick: function onClick() {
|
|
547
|
+
return setIsTelegramOpen(true);
|
|
548
|
+
}
|
|
460
549
|
}, _i18n.default.t('dashboard_v2.profile.connect-to-telegram')), params.telegram_name !== '' && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
461
550
|
className: "field"
|
|
462
551
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
463
552
|
className: "label"
|
|
464
553
|
}, _i18n.default.t('dashboard_v2.profile.telegram_name'), /*#__PURE__*/_react.default.createElement("div", {
|
|
465
554
|
className: "right",
|
|
466
|
-
onClick: ()
|
|
555
|
+
onClick: function onClick() {
|
|
556
|
+
return setIsTelegramOpen(true);
|
|
557
|
+
}
|
|
467
558
|
}, /*#__PURE__*/_react.default.createElement(_pen.ReactComponent, {
|
|
468
559
|
width: "12px",
|
|
469
560
|
height: "12px",
|
|
@@ -478,23 +569,25 @@ const ProfilePage = () => {
|
|
|
478
569
|
value: params.telegram_name
|
|
479
570
|
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
480
571
|
className: 'telegram-existing-input__cancel-button',
|
|
481
|
-
onClick: e
|
|
482
|
-
setParams(
|
|
483
|
-
|
|
484
|
-
|
|
572
|
+
onClick: function onClick(e) {
|
|
573
|
+
setParams(function (prevState) {
|
|
574
|
+
return (0, _objectSpread3.default)((0, _objectSpread3.default)({}, prevState), {}, {
|
|
575
|
+
telegram_name: ''
|
|
576
|
+
});
|
|
577
|
+
});
|
|
485
578
|
}
|
|
486
579
|
}, /*#__PURE__*/_react.default.createElement(_cancel.ReactComponent, null))), /*#__PURE__*/_react.default.createElement("p", {
|
|
487
580
|
className: 'error-message'
|
|
488
581
|
})), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("a", {
|
|
489
582
|
className: 'telegram open',
|
|
490
|
-
onClick: ()
|
|
491
|
-
_axios.default.get("/telegram/send_test_message.json").then(resp
|
|
583
|
+
onClick: function onClick() {
|
|
584
|
+
_axios.default.get("/telegram/send_test_message.json").then(function (resp) {
|
|
492
585
|
setShowTelegramResponseMessage({
|
|
493
586
|
status: resp.data.status[0].toUpperCase() + resp.data.status.substring(1),
|
|
494
587
|
message: resp.data.message,
|
|
495
588
|
show: true
|
|
496
589
|
});
|
|
497
|
-
setTimeout(()
|
|
590
|
+
setTimeout(function () {
|
|
498
591
|
setShowTelegramResponseMessage({
|
|
499
592
|
status: '',
|
|
500
593
|
message: '',
|
|
@@ -502,7 +595,9 @@ const ProfilePage = () => {
|
|
|
502
595
|
});
|
|
503
596
|
}, 6000);
|
|
504
597
|
showToast(resp.data);
|
|
505
|
-
}).catch(
|
|
598
|
+
}).catch(function (error) {
|
|
599
|
+
return alert(error);
|
|
600
|
+
});
|
|
506
601
|
}
|
|
507
602
|
}, !showTelegramResponseMessage.show && _i18n.default.t('dashboard_v2.profile.send_telegram_message'), showTelegramResponseMessage.show && showTelegramResponseMessage.status)))), /*#__PURE__*/_react.default.createElement("div", {
|
|
508
603
|
className: "field"
|
|
@@ -520,13 +615,17 @@ const ProfilePage = () => {
|
|
|
520
615
|
className: 'save',
|
|
521
616
|
disabled: submitting
|
|
522
617
|
}, !submitting && !showSuccessMessage && !showErrorMessage && _i18n.default.t('dashboard_v2.profile.submit'), submitting && !showSuccessMessage && !showErrorMessage && _i18n.default.t('dashboard_v2.profile.submitting'), showSuccessMessage && _i18n.default.t('dashboard_v2.profile.success'), showErrorMessage && _i18n.default.t('dashboard_v2.profile.error')))), showPasswordModal && /*#__PURE__*/_react.default.createElement(_PasswordModal.PasswordModal, {
|
|
523
|
-
close: ()
|
|
524
|
-
|
|
618
|
+
close: function close() {
|
|
619
|
+
return setShowPasswordModal(false);
|
|
620
|
+
},
|
|
621
|
+
save: function save() {}
|
|
525
622
|
}), isTelegramOpen && /*#__PURE__*/_react.default.createElement(_TelegramModal.TelegramModal, {
|
|
526
|
-
close: ()
|
|
623
|
+
close: function close() {
|
|
624
|
+
return setIsTelegramOpen(false);
|
|
625
|
+
},
|
|
527
626
|
handleOnChange: handleOnChange,
|
|
528
627
|
handleSubmit: handleSubmit
|
|
529
628
|
}));
|
|
530
629
|
};
|
|
531
630
|
exports.ProfilePage = ProfilePage;
|
|
532
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfU2VsZWN0IiwiX2kxOG4iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX1Bhc3N3b3JkTW9kYWwiLCJfcGVuIiwiX2NhbmNlbCIsIl9yZWFjdFBob25lSW5wdXQiLCJfVGVsZWdyYW1Nb2RhbCIsIl9heGlvcyIsIl9Db250YWluZXIiLCJfbW9tZW50VGltZXpvbmUiLCJfQW5hbHl0aWNzIiwiX3JlYWN0UmVkdXgiLCJfcmVhY3RUb2FzdGlmeSIsIl9wZXJtaXNzaW9uc1NsaWNlIiwiUHJvZmlsZVBhZ2UiLCJ0aW1lem9uZXNBcnJheSIsIm1vbWVudCIsInR6IiwibmFtZXMiLCJkYXRlVGltZUZvcm1hdE9wdGlvbnMiLCJ2YWx1ZSIsImxhYmVsIiwiZm9ybWF0IiwibW9udGgiLCJkYXkiLCJ5ZWFyIiwiaG91ciIsIm1pbnV0ZSIsImhvdXIxMiIsInRpbWV6b25lcyIsIm1hcCIsInQiLCJsb2NhbGVPcHRpb25zIiwiZmxvd1JhdGVVbml0T3B0aW9ucyIsImkxOG4iLCJ0ZW1wZXJhdHVyZVVuaXRPcHRpb25zIiwibG9jYWxlIiwic2V0TG9jYWxlIiwidXNlU3RhdGUiLCJmbG93UmF0ZVVuaXQiLCJzZXRGbG93UmF0ZVVuaXQiLCJ0ZW1wZXJhdHVyZVVuaXQiLCJzZXRUZW1wZXJhdHVyZVVuaXQiLCJkYXRlVGltZUZvcm1hdCIsInNldERhdGVUaW1lRm9ybWF0IiwidGltZXpvbmUiLCJzZXRUaW1lem9uZSIsImRlcGFydG1lbnRzIiwic2V0RGVwYXJ0bWVudHMiLCJidXNpbmVzc1JvbGVzIiwic2V0QnVzaW5lc3NSb2xlcyIsImRlcGFydG1lbnQiLCJzZXREZXBhcnRtZW50IiwiYnVzaW5lc3NSb2xlIiwic2V0QnVzaW5lc3NSb2xlIiwiaW5pdGlhbFBhcmFtc1N0YXRlIiwiZmlyc3RfbmFtZSIsImxhc3RfbmFtZSIsInBob25lIiwiZW1haWwiLCJ0aW1lX3pvbmUiLCJkYXRlX3RpbWVfZm9ybWF0IiwidGVsZWdyYW1fbmFtZSIsIm90aGVyX2J1c2luZXNzX3JvbGVfbmFtZSIsIm90aGVyX2RlcGFydG1lbnRfbmFtZSIsImJ1c2luZXNzX3JvbGUiLCJmbG93X3JhdGVfdW5pdCIsInRlbXBlcmF0dXJlX3VuaXQiLCJpc1RlbGVncmFtT3BlbiIsInNldElzVGVsZWdyYW1PcGVuIiwic2hvd1Bhc3N3b3JkTW9kYWwiLCJzZXRTaG93UGFzc3dvcmRNb2RhbCIsInN1Ym1pdHRpbmciLCJzZXRTdWJtaXR0aW5nIiwic2hvd1N1Y2Nlc3NNZXNzYWdlIiwic2V0U2hvd1N1Y2Nlc3NNZXNzYWdlIiwic2hvd0Vycm9yTWVzc2FnZSIsInNldFNob3dFcnJvck1lc3NhZ2UiLCJzaG93VGVsZWdyYW1SZXNwb25zZU1lc3NhZ2UiLCJzZXRTaG93VGVsZWdyYW1SZXNwb25zZU1lc3NhZ2UiLCJzaG93Iiwic3RhdHVzIiwibWVzc2FnZSIsInBhcmFtcyIsInNldFBhcmFtcyIsImhhbmRsZU9uQ2hhbmdlIiwiZSIsInN0YXJ0c1dpdGgiLCJyZXBsYWNlIiwicHJldlN0YXRlIiwiX29iamVjdFNwcmVhZDIiLCJkZWZhdWx0IiwibmFtZSIsInRhcmdldCIsImhhbmRsZUJ1c2luZXNzUm9sZUNoYW5nZSIsImhhbmRsZURlcGFydG1lbnRDaGFuZ2UiLCJnZXRQYXJhbXNXaXRoQWdncmVnYXRlZFZhbHVlcyIsImRlcGFydG1lbnRfaWQiLCJ1bmRlZmluZWQiLCJidXNpbmVzc19yb2xlX2lkIiwid2F0ZXJBdXRob3JpdHlOYW1lIiwidXNlU2VsZWN0b3IiLCJzdGF0ZSIsImdsb2JhbF9kYXRhIiwic2hvd1RvYXN0IiwiZGF0YSIsInVzZXJuYW1lIiwiZXJyb3IiLCJ0b2FzdCIsInN1Y2Nlc3MiLCJjb25jYXQiLCJwb3NpdGlvbiIsImRpc3BhdGNoIiwidXNlRGlzcGF0Y2giLCJoYW5kbGVTdWJtaXQiLCJwcmV2ZW50RGVmYXVsdCIsImF4aW9zIiwicHV0IiwidXNlciIsInRoZW4iLCJyZXNwIiwiZXJyb3JzIiwiUGVybWlzc2lvbnNTbGljZSIsImFjdGlvbnMiLCJzZXRVc2VySW5mbyIsIkpTT04iLCJwYXJzZSIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvckFsbCIsImZvckVhY2giLCJwIiwiaW5uZXJIVE1MIiwiY2xhc3NMaXN0IiwicmVtb3ZlIiwiZmluZExvY2FsZSIsImZpbmQiLCJmaW5kRmxvd1JhdGVVbml0IiwiZmluZFRlbXBlcmF0dXJlVW5pdCIsImZpbmREYXRlVGltZUZvcm1hdCIsImZpbmRUaW1lem9uZSIsInNldFRpbWVvdXQiLCJmaW5kRWxlbWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJwYXJlbnQiLCJjbG9zZXN0IiwiZmluZElucHV0IiwiYWRkIiwiY2F0Y2giLCJ1c2VFZmZlY3QiLCJhbmFseXRpY3NUcmFjayIsInV0aWxpdHlfbmFtZSIsInRva2VuIiwiY29udGVudCIsImRlZmF1bHRzIiwiaGVhZGVycyIsImNvbW1vbiIsImdldCIsImZpbmRQcm9wZXJ0eSIsIm9iamVjdCIsInByb3BlcnR5IiwiYnVzaW5lc3Nfcm9sZXMiLCJhbGVydCIsImNyZWF0ZUVsZW1lbnQiLCJDb250YWluZXIiLCJjbGFzc05hbWUiLCJhY3Rpb24iLCJvblN1Ym1pdCIsInR5cGUiLCJvbkNoYW5nZSIsInJlYWRPbmx5IiwiY291bnRyeSIsImxvY2FsaXphdGlvbiIsImlucHV0Q2xhc3MiLCJjb250YWluZXJDbGFzcyIsImJ1dHRvbkNsYXNzIiwiZHJvcGRvd25DbGFzcyIsImVuYWJsZVNlYXJjaCIsInNlYXJjaFBsYWNlaG9sZGVyIiwiY291bnRyeUNvZGVFZGl0YWJsZSIsImlucHV0UHJvcHMiLCJGcmFnbWVudCIsIlNlbGVjdCIsInNldFZhbHVlIiwib3B0aW9ucyIsImNhbmNlbFRleHRXaWR0aCIsInRyYW5zbGF0ZSIsInRyYW5zbGF0aW9uX2tleSIsImxlbmd0aCIsIm9uQ2xpY2siLCJSZWFjdENvbXBvbmVudCIsIndpZHRoIiwiaGVpZ2h0IiwiZmlsbCIsIkRhdGUiLCJ0b0xvY2FsZURhdGVTdHJpbmciLCJ0b1VwcGVyQ2FzZSIsInN1YnN0cmluZyIsImRpc2FibGVkIiwiUGFzc3dvcmRNb2RhbCIsImNsb3NlIiwic2F2ZSIsIlRlbGVncmFtTW9kYWwiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhZ2VzL1Byb2ZpbGVQYWdlL1Byb2ZpbGVQYWdlLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFNlbGVjdCB9IGZyb20gJ3NyYy9jb21wb25lbnRzL0N1c3RvbUlucHV0cy9TZWxlY3QvU2VsZWN0JztcbmltcG9ydCBpMThuIGZyb20gJ3NyYy91dGlsaXRpZXMvaTE4bic7XG5pbXBvcnQgeyBQYXNzd29yZE1vZGFsIH0gZnJvbSAnLi9QYXNzd29yZE1vZGFsL1Bhc3N3b3JkTW9kYWwnO1xuaW1wb3J0IHsgUmVhY3RDb21wb25lbnQgYXMgUGVuU3ZnIH0gZnJvbSAnLi9wZW4uc3ZnJztcbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIENhbmNlbCB9IGZyb20gJy4vY2FuY2VsLnN2Zyc7XG5pbXBvcnQgUGhvbmVJbnB1dCBmcm9tICdyZWFjdC1waG9uZS1pbnB1dC0yJztcbmltcG9ydCAncmVhY3QtcGhvbmUtaW5wdXQtMi9saWIvc3R5bGUuY3NzJztcbmltcG9ydCB7IFRlbGVncmFtTW9kYWwgfSBmcm9tICcuL1RlbGVncmFtTW9kYWwvVGVsZWdyYW1Nb2RhbCc7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgQ29udGFpbmVyIH0gZnJvbSAnLi9Db250YWluZXInO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuaW1wb3J0IHsgYW5hbHl0aWNzVHJhY2sgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvQW5hbHl0aWNzJztcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gJ3JlYWN0LXJlZHV4JztcbmltcG9ydCB7IHRvYXN0IH0gZnJvbSAncmVhY3QtdG9hc3RpZnknO1xuaW1wb3J0IHsgUGVybWlzc2lvbnNTbGljZSB9IGZyb20gJ3NyYy9zdG9yZS9wZXJtaXNzaW9ucy9wZXJtaXNzaW9uc1NsaWNlJztcblxuZXhwb3J0IGNvbnN0IFByb2ZpbGVQYWdlID0gKCkgPT4ge1xuICBjb25zdCB0aW1lem9uZXNBcnJheSA9IG1vbWVudC50ei5uYW1lcygpO1xuICBjb25zdCBkYXRlVGltZUZvcm1hdE9wdGlvbnMgPSBbXG4gICAge1xuICAgICAgdmFsdWU6ICd1cycsXG4gICAgICBsYWJlbDogJ1VuaXRlZCBTdGF0ZXMnLFxuICAgICAgZm9ybWF0OiB7XG4gICAgICAgIG1vbnRoOiAnc2hvcnQnLFxuICAgICAgICBkYXk6ICdudW1lcmljJyxcbiAgICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgICBob3VyOiAnbnVtZXJpYycsXG4gICAgICAgIG1pbnV0ZTogJ251bWVyaWMnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHZhbHVlOiAnZXUnLFxuICAgICAgbGFiZWw6ICdFdXJvcGUnLFxuICAgICAgZm9ybWF0OiB7XG4gICAgICAgIGRheTogJ251bWVyaWMnLFxuICAgICAgICBtb250aDogJ251bWVyaWMnLFxuICAgICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgICAgIGhvdXI6ICdudW1lcmljJyxcbiAgICAgICAgbWludXRlOiAnbnVtZXJpYycsXG4gICAgICAgIGhvdXIxMjogZmFsc2UsXG4gICAgICB9LFxuICAgIH0sXG4gIF07XG5cbiAgY29uc3QgdGltZXpvbmVzID0gdGltZXpvbmVzQXJyYXkubWFwKCh0KSA9PiB7XG4gICAgcmV0dXJuIHsgdmFsdWU6IHQsIGxhYmVsOiB0IH07XG4gIH0pO1xuXG4gIGNvbnN0IGxvY2FsZU9wdGlvbnMgPSBbXG4gICAgeyB2YWx1ZTogJ2VuJywgbGFiZWw6ICdFbmdsaXNoJyB9LFxuICAgIHsgdmFsdWU6ICdlbl91aycsIGxhYmVsOiAnRW5nbGlzaCAoVUspJyB9LFxuICAgIHsgdmFsdWU6ICdoZScsIGxhYmVsOiAn16LXkdeo15nXqicgfSxcbiAgICB7IHZhbHVlOiAnZnInLCBsYWJlbDogJ0ZyYW7Dp2FpcycgfSxcbiAgICB7IHZhbHVlOiAnaXQnLCBsYWJlbDogJ0l0YWxpYW5vJyB9LFxuICBdO1xuXG4gIGNvbnN0IGZsb3dSYXRlVW5pdE9wdGlvbnMgPSBbXG4gICAge1xuICAgICAgdmFsdWU6ICdnZF91cycsXG4gICAgICBsYWJlbDogaTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5mbG93X3JhdGVfdW5pdF9vcHRpb25zLmdkX3VzJyksXG4gICAgfSxcbiAgICB7XG4gICAgICB2YWx1ZTogJ2dkX3VrJyxcbiAgICAgIGxhYmVsOiBpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmZsb3dfcmF0ZV91bml0X29wdGlvbnMuZ2RfdWsnKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHZhbHVlOiAnbTNkJyxcbiAgICAgIGxhYmVsOiBpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmZsb3dfcmF0ZV91bml0X29wdGlvbnMubTNkJyksXG4gICAgfSxcbiAgXTtcblxuICBjb25zdCB0ZW1wZXJhdHVyZVVuaXRPcHRpb25zID0gW1xuICAgIHtcbiAgICAgIHZhbHVlOiAnY2Vsc2l1cycsXG4gICAgICBsYWJlbDogaTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS50ZW1wZXJhdHVyZV91bml0X29wdGlvbnMuY2Vsc2l1cycpLFxuICAgIH0sXG4gICAge1xuICAgICAgdmFsdWU6ICdmYWhyZW5oZWl0JyxcbiAgICAgIGxhYmVsOiBpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLnRlbXBlcmF0dXJlX3VuaXRfb3B0aW9ucy5mYWhyZW5oZWl0JyksXG4gICAgfSxcbiAgXTtcblxuICBjb25zdCBbbG9jYWxlLCBzZXRMb2NhbGVdID0gdXNlU3RhdGU8e1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgfT4obG9jYWxlT3B0aW9uc1swXSk7XG5cbiAgY29uc3QgW2Zsb3dSYXRlVW5pdCwgc2V0Rmxvd1JhdGVVbml0XSA9IHVzZVN0YXRlPHtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH0+KGZsb3dSYXRlVW5pdE9wdGlvbnNbMF0pO1xuXG4gIGNvbnN0IFt0ZW1wZXJhdHVyZVVuaXQsIHNldFRlbXBlcmF0dXJlVW5pdF0gPSB1c2VTdGF0ZTx7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICB9Pih0ZW1wZXJhdHVyZVVuaXRPcHRpb25zWzBdKTtcblxuICBjb25zdCBbZGF0ZVRpbWVGb3JtYXQsIHNldERhdGVUaW1lRm9ybWF0XSA9IHVzZVN0YXRlPHtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgZm9ybWF0OiBvYmplY3Q7XG4gIH0+KGRhdGVUaW1lRm9ybWF0T3B0aW9uc1swXSk7XG5cbiAgY29uc3QgW3RpbWV6b25lLCBzZXRUaW1lem9uZV0gPSB1c2VTdGF0ZTx7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICB9Pih0aW1lem9uZXNbMjBdKTtcblxuICBjb25zdCBbZGVwYXJ0bWVudHMsIHNldERlcGFydG1lbnRzXSA9IHVzZVN0YXRlPFxuICAgIHtcbiAgICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgICBsYWJlbDogc3RyaW5nO1xuICAgIH1bXVxuICA+KFt7IHZhbHVlOiAnJywgbGFiZWw6ICcnIH1dKTtcblxuICBjb25zdCBbYnVzaW5lc3NSb2xlcywgc2V0QnVzaW5lc3NSb2xlc10gPSB1c2VTdGF0ZTxcbiAgICB7XG4gICAgICB2YWx1ZTogc3RyaW5nO1xuICAgICAgbGFiZWw6IHN0cmluZztcbiAgICB9W11cbiAgPihbeyB2YWx1ZTogJycsIGxhYmVsOiAnJyB9XSk7XG5cbiAgY29uc3QgW2RlcGFydG1lbnQsIHNldERlcGFydG1lbnRdID0gdXNlU3RhdGU8YW55PihkZXBhcnRtZW50c1swXSk7XG5cbiAgY29uc3QgW2J1c2luZXNzUm9sZSwgc2V0QnVzaW5lc3NSb2xlXSA9IHVzZVN0YXRlPGFueT4oYnVzaW5lc3NSb2xlc1swXSk7XG5cbiAgY29uc3QgaW5pdGlhbFBhcmFtc1N0YXRlID0ge1xuICAgIGZpcnN0X25hbWU6ICcnLFxuICAgIGxhc3RfbmFtZTogJycsXG4gICAgcGhvbmU6ICcnLFxuICAgIGVtYWlsOiAnJyxcbiAgICB0aW1lX3pvbmU6ICcnLFxuICAgIGRhdGVfdGltZV9mb3JtYXQ6ICcnLFxuICAgIGxvY2FsZTogJycsXG4gICAgdGVsZWdyYW1fbmFtZTogJycsXG4gICAgb3RoZXJfYnVzaW5lc3Nfcm9sZV9uYW1lOiAnJyxcbiAgICBvdGhlcl9kZXBhcnRtZW50X25hbWU6ICcnLFxuICAgIGJ1c2luZXNzX3JvbGU6ICcnLFxuICAgIGRlcGFydG1lbnQ6ICcnLFxuICAgIGZsb3dfcmF0ZV91bml0OiAnJyxcbiAgICB0ZW1wZXJhdHVyZV91bml0OiAnJyxcbiAgfTtcblxuICBjb25zdCBbaXNUZWxlZ3JhbU9wZW4sIHNldElzVGVsZWdyYW1PcGVuXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgW3Nob3dQYXNzd29yZE1vZGFsLCBzZXRTaG93UGFzc3dvcmRNb2RhbF0gPSB1c2VTdGF0ZTxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IFtzdWJtaXR0aW5nLCBzZXRTdWJtaXR0aW5nXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgW3Nob3dTdWNjZXNzTWVzc2FnZSwgc2V0U2hvd1N1Y2Nlc3NNZXNzYWdlXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgW3Nob3dFcnJvck1lc3NhZ2UsIHNldFNob3dFcnJvck1lc3NhZ2VdID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBbc2hvd1RlbGVncmFtUmVzcG9uc2VNZXNzYWdlLCBzZXRTaG93VGVsZWdyYW1SZXNwb25zZU1lc3NhZ2VdID1cbiAgICB1c2VTdGF0ZTx7XG4gICAgICBzaG93OiBib29sZWFuO1xuICAgICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgfT4oe1xuICAgICAgc2hvdzogZmFsc2UsXG4gICAgICBzdGF0dXM6ICcnLFxuICAgICAgbWVzc2FnZTogJycsXG4gICAgfSk7XG4gIGNvbnN0IFtwYXJhbXMsIHNldFBhcmFtc10gPSB1c2VTdGF0ZTx7XG4gICAgZmlyc3RfbmFtZTogc3RyaW5nO1xuICAgIGxhc3RfbmFtZTogc3RyaW5nO1xuICAgIHBob25lOiBzdHJpbmc7XG4gICAgZW1haWw6IHN0cmluZztcbiAgICB0aW1lX3pvbmU6IHN0cmluZztcbiAgICBkYXRlX3RpbWVfZm9ybWF0OiBzdHJpbmc7XG4gICAgbG9jYWxlOiBzdHJpbmc7XG4gICAgdGVsZWdyYW1fbmFtZTogc3RyaW5nO1xuICAgIG90aGVyX2J1c2luZXNzX3JvbGVfbmFtZTogc3RyaW5nO1xuICAgIG90aGVyX2RlcGFydG1lbnRfbmFtZTogc3RyaW5nO1xuICAgIGZsb3dfcmF0ZV91bml0OiBzdHJpbmc7XG4gIH0+KGluaXRpYWxQYXJhbXNTdGF0ZSk7XG5cbiAgY29uc3QgaGFuZGxlT25DaGFuZ2UgPSAoZSkgPT4ge1xuICAgIGlmICh0eXBlb2YgZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmIChlLnN0YXJ0c1dpdGgoJzk3MjAnKSkge1xuICAgICAgICBlID0gZS5yZXBsYWNlKC8oOTcyMCkvZywgJzk3MicpO1xuICAgICAgfVxuICAgICAgc2V0UGFyYW1zKChwcmV2U3RhdGUpID0+ICh7XG4gICAgICAgIC4uLnByZXZTdGF0ZSxcbiAgICAgICAgcGhvbmU6IGUsXG4gICAgICB9KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgdmFsdWUsIG5hbWUgfSA9IGUudGFyZ2V0O1xuICAgICAgc2V0UGFyYW1zKChwcmV2U3RhdGUpID0+ICh7XG4gICAgICAgIC4uLnByZXZTdGF0ZSxcbiAgICAgICAgW25hbWVdOiB2YWx1ZSxcbiAgICAgIH0pKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQnVzaW5lc3NSb2xlQ2hhbmdlID0gKGUpID0+IHtcbiAgICBpZiAoZS50YXJnZXQgIT09IG51bGwpIHtcbiAgICAgIHNldFBhcmFtcyh7XG4gICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgYnVzaW5lc3Nfcm9sZTogZS52YWx1ZSxcbiAgICAgICAgb3RoZXJfYnVzaW5lc3Nfcm9sZV9uYW1lOiBlLnRhcmdldC52YWx1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVEZXBhcnRtZW50Q2hhbmdlID0gKGUpID0+IHtcbiAgICBpZiAoZS50YXJnZXQgIT09IG51bGwpIHtcbiAgICAgIHNldFBhcmFtcyh7XG4gICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgZGVwYXJ0bWVudDogZS52YWx1ZSxcbiAgICAgICAgb3RoZXJfZGVwYXJ0bWVudF9uYW1lOiBlLnRhcmdldC52YWx1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBnZXRQYXJhbXNXaXRoQWdncmVnYXRlZFZhbHVlcyA9ICgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4ucGFyYW1zLFxuICAgICAgZGF0ZV90aW1lX2Zvcm1hdDogZGF0ZVRpbWVGb3JtYXQudmFsdWUsXG4gICAgICBsb2NhbGU6IGxvY2FsZS52YWx1ZSxcbiAgICAgIHRpbWVfem9uZTogdGltZXpvbmUudmFsdWUsXG4gICAgICBkZXBhcnRtZW50X2lkOiBkZXBhcnRtZW50ID09PSB1bmRlZmluZWQgPyBudWxsIDogZGVwYXJ0bWVudC52YWx1ZSxcbiAgICAgIGJ1c2luZXNzX3JvbGVfaWQ6IGJ1c2luZXNzUm9sZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGJ1c2luZXNzUm9sZS52YWx1ZSxcbiAgICAgIGZsb3dfcmF0ZV91bml0OiBmbG93UmF0ZVVuaXQudmFsdWUsXG4gICAgICB0ZW1wZXJhdHVyZV91bml0OiB0ZW1wZXJhdHVyZVVuaXQudmFsdWUsXG4gICAgfTtcbiAgfTtcblxuICBjb25zdCB3YXRlckF1dGhvcml0eU5hbWUgPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLmdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5TmFtZSxcbiAgKTtcblxuICBjb25zdCBzaG93VG9hc3QgPSAoZGF0YSkgPT4ge1xuICAgIGNvbnN0IHVzZXJuYW1lID0gZGF0YS51c2VybmFtZTtcbiAgICBjb25zdCBlcnJvciA9IGRhdGEuZXJyb3I7XG4gICAgaWYgKGRhdGEuc3RhdHVzID09PSAnc3VjY2VzcycpIHtcbiAgICAgIHRvYXN0LnN1Y2Nlc3MoXG4gICAgICAgIGkxOG4udChgbXlfcHJvZmlsZV90YWIudGVsZWdyYW1fbWVzc2FnZXMuJHtkYXRhLm1lc3NhZ2V9YCwge1xuICAgICAgICAgIHVzZXJuYW1lLFxuICAgICAgICB9KSxcbiAgICAgICAge1xuICAgICAgICAgIHBvc2l0aW9uOiAndG9wLWNlbnRlcicsXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0b2FzdC5lcnJvcihcbiAgICAgICAgaTE4bi50KGBteV9wcm9maWxlX3RhYi50ZWxlZ3JhbV9tZXNzYWdlcy4ke2RhdGEubWVzc2FnZX1gLCB7XG4gICAgICAgICAgZXJyb3I6IGVycm9yLFxuICAgICAgICAgIHVzZXJuYW1lOiB1c2VybmFtZSxcbiAgICAgICAgfSksXG4gICAgICAgIHtcbiAgICAgICAgICBwb3NpdGlvbjogJ3RvcC1jZW50ZXInLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdCA9IChlKSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHNldFN1Ym1pdHRpbmcodHJ1ZSk7XG4gICAgYXhpb3NcbiAgICAgIC5wdXQoJy9wcm9maWxlcycsIHsgdXNlcjogZ2V0UGFyYW1zV2l0aEFnZ3JlZ2F0ZWRWYWx1ZXMoKSB9KVxuICAgICAgLnRoZW4oKHJlc3ApID0+IHtcbiAgICAgICAgaWYgKHJlc3AuZGF0YS5lcnJvcnMgPT09IG51bGwpIHtcbiAgICAgICAgICBkaXNwYXRjaChcbiAgICAgICAgICAgIFBlcm1pc3Npb25zU2xpY2UuYWN0aW9ucy5zZXRVc2VySW5mbyhKU09OLnBhcnNlKHJlc3AuZGF0YS51c2VyKSksXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGRvY3VtZW50XG4gICAgICAgICAgICAucXVlcnlTZWxlY3RvckFsbCgnLmVycm9yLW1lc3NhZ2UnKVxuICAgICAgICAgICAgLmZvckVhY2goKHApID0+IChwLmlubmVySFRNTCA9ICcnKSk7XG5cbiAgICAgICAgICBkb2N1bWVudFxuICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoJy5pbnZhbGlkLWZpZWxkJylcbiAgICAgICAgICAgIC5mb3JFYWNoKChwKSA9PiBwLmNsYXNzTGlzdC5yZW1vdmUoJ2ludmFsaWQtZmllbGQnKSk7XG4gICAgICAgICAgbGV0IHVzZXIgPSBKU09OLnBhcnNlKHJlc3AuZGF0YS51c2VyKTtcbiAgICAgICAgICBjb25zdCBmaW5kTG9jYWxlID0gbG9jYWxlT3B0aW9ucy5maW5kKChlKSA9PiBlLnZhbHVlID09PSB1c2VyLmxvY2FsZSk7XG4gICAgICAgICAgY29uc3QgZmluZEZsb3dSYXRlVW5pdCA9IGZsb3dSYXRlVW5pdE9wdGlvbnMuZmluZChcbiAgICAgICAgICAgIChlKSA9PiBlLnZhbHVlID09PSB1c2VyLmZsb3dfcmF0ZV91bml0LFxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgZmluZFRlbXBlcmF0dXJlVW5pdCA9IHRlbXBlcmF0dXJlVW5pdE9wdGlvbnMuZmluZChcbiAgICAgICAgICAgIChlKSA9PiBlLnZhbHVlID09PSB1c2VyLnRlbXBlcmF0dXJlX3VuaXQsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBmaW5kRGF0ZVRpbWVGb3JtYXQgPSBkYXRlVGltZUZvcm1hdE9wdGlvbnMuZmluZChcbiAgICAgICAgICAgIChlKSA9PiBlLnZhbHVlID09PSB1c2VyLmRhdGVfdGltZV9mb3JtYXQsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBmaW5kVGltZXpvbmUgPSB0aW1lem9uZXMuZmluZChcbiAgICAgICAgICAgIChlKSA9PiBlLnZhbHVlID09PSB1c2VyLnRpbWVfem9uZSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgc2V0UGFyYW1zKHVzZXIpO1xuICAgICAgICAgIHNldExvY2FsZShmaW5kTG9jYWxlISk7XG4gICAgICAgICAgc2V0Rmxvd1JhdGVVbml0KGZpbmRGbG93UmF0ZVVuaXQhKTtcbiAgICAgICAgICBzZXRUZW1wZXJhdHVyZVVuaXQoZmluZFRlbXBlcmF0dXJlVW5pdCEpO1xuICAgICAgICAgIHNldERhdGVUaW1lRm9ybWF0KGZpbmREYXRlVGltZUZvcm1hdCEpO1xuICAgICAgICAgIHNldFRpbWV6b25lKGZpbmRUaW1lem9uZSEpO1xuICAgICAgICAgIHNldFNob3dTdWNjZXNzTWVzc2FnZSh0cnVlKTtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHNldFNob3dTdWNjZXNzTWVzc2FnZShmYWxzZSk7XG4gICAgICAgICAgfSwgNjAwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZG9jdW1lbnRcbiAgICAgICAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKCcuZXJyb3ItbWVzc2FnZScpXG4gICAgICAgICAgICAuZm9yRWFjaCgocCkgPT4gKHAuaW5uZXJIVE1MID0gJycpKTtcbiAgICAgICAgICBsZXQgZXJyb3JzID0gcmVzcC5kYXRhLnVzZXIuZXJyb3JzO1xuICAgICAgICAgIGZvciAoY29uc3QgZXJyb3IgaW4gZXJyb3JzKSB7XG4gICAgICAgICAgICBsZXQgZmluZEVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBpbnB1dFtuYW1lPScke2Vycm9yfSddYCk7XG4gICAgICAgICAgICBsZXQgcGFyZW50ID0gZmluZEVsZW1lbnQhLmNsb3Nlc3QoJy5maWVsZCcpO1xuICAgICAgICAgICAgbGV0IGZpbmRJbnB1dCA9IHBhcmVudCEucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcbiAgICAgICAgICAgIGZpbmRJbnB1dCEuY2xhc3NMaXN0LmFkZCgnaW52YWxpZC1maWVsZCcpO1xuICAgICAgICAgICAgcGFyZW50IS5xdWVyeVNlbGVjdG9yKCcuZXJyb3ItbWVzc2FnZScpIS5pbm5lckhUTUwgPSBpMThuLnQoXG4gICAgICAgICAgICAgIGBkYXNoYm9hcmRfdjIucHJvZmlsZS5lcnJvcnMuJHtlcnJvcn1gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc2V0U2hvd1N1Y2Nlc3NNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFN1Ym1pdHRpbmcoZmFsc2UpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgc2V0U2hvd0Vycm9yTWVzc2FnZSh0cnVlKTtcbiAgICAgICAgc2V0U2hvd1N1Y2Nlc3NNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgc2V0U3VibWl0dGluZyhmYWxzZSk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHNldFNob3dFcnJvck1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICB9LCA2MDAwKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgYW5hbHl0aWNzVHJhY2soJ1ZpZXdlZCBQcm9maWxlIFBhZ2UnLCB7XG4gICAgICB1dGlsaXR5X25hbWU6IHdhdGVyQXV0aG9yaXR5TmFtZSxcbiAgICB9KTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgdG9rZW4gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbbmFtZT1jc3JmLXRva2VuXScpIS5jb250ZW50O1xuICAgIGF4aW9zLmRlZmF1bHRzLmhlYWRlcnMuY29tbW9uWydYLUNTUkYtVE9LRU4nXSA9IHRva2VuO1xuICAgIGF4aW9zLmRlZmF1bHRzLmhlYWRlcnMuY29tbW9uWydDb250ZW50LVR5cGUnXSA9ICdhcHBsaWNhdGlvbi9qcyc7XG4gICAgYXhpb3NcbiAgICAgIC5nZXQoYC9wcm9maWxlcy9yZXNvdXJjZWApXG4gICAgICAudGhlbigocmVzcCkgPT4ge1xuICAgICAgICBzZXRQYXJhbXMocmVzcC5kYXRhLnVzZXIpO1xuICAgICAgICBjb25zdCBmaW5kUHJvcGVydHkgPSAob2JqZWN0LCBwcm9wZXJ0eSkgPT4ge1xuICAgICAgICAgIHJldHVybiBvYmplY3QuZmluZCgoZSkgPT4gZS52YWx1ZSA9PT0gcHJvcGVydHkpO1xuICAgICAgICB9O1xuICAgICAgICBzZXRMb2NhbGUoZmluZFByb3BlcnR5KGxvY2FsZU9wdGlvbnMsIHJlc3AuZGF0YS51c2VyLmxvY2FsZSkpO1xuICAgICAgICBzZXRGbG93UmF0ZVVuaXQoXG4gICAgICAgICAgZmluZFByb3BlcnR5KGZsb3dSYXRlVW5pdE9wdGlvbnMsIHJlc3AuZGF0YS51c2VyLmZsb3dfcmF0ZV91bml0KSxcbiAgICAgICAgKTtcbiAgICAgICAgc2V0VGVtcGVyYXR1cmVVbml0KFxuICAgICAgICAgIGZpbmRQcm9wZXJ0eSh0ZW1wZXJhdHVyZVVuaXRPcHRpb25zLCByZXNwLmRhdGEudXNlci50ZW1wZXJhdHVyZV91bml0KSxcbiAgICAgICAgKTtcbiAgICAgICAgc2V0RGF0ZVRpbWVGb3JtYXQoXG4gICAgICAgICAgZmluZFByb3BlcnR5KGRhdGVUaW1lRm9ybWF0T3B0aW9ucywgcmVzcC5kYXRhLnVzZXIuZGF0ZV90aW1lX2Zvcm1hdCksXG4gICAgICAgICk7XG4gICAgICAgIHNldFRpbWV6b25lKGZpbmRQcm9wZXJ0eSh0aW1lem9uZXMsIHJlc3AuZGF0YS51c2VyLnRpbWVfem9uZSkpO1xuICAgICAgICBzZXRCdXNpbmVzc1JvbGUoXG4gICAgICAgICAgZmluZFByb3BlcnR5KFxuICAgICAgICAgICAgcmVzcC5kYXRhLmJ1c2luZXNzX3JvbGVzLFxuICAgICAgICAgICAgcmVzcC5kYXRhLnVzZXIuYnVzaW5lc3Nfcm9sZV9pZCxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgICBzZXREZXBhcnRtZW50KFxuICAgICAgICAgIGZpbmRQcm9wZXJ0eShyZXNwLmRhdGEuZGVwYXJ0bWVudHMsIHJlc3AuZGF0YS51c2VyLmRlcGFydG1lbnRfaWQpLFxuICAgICAgICApO1xuICAgICAgICBzZXREZXBhcnRtZW50cyhyZXNwLmRhdGEuZGVwYXJ0bWVudHMpO1xuICAgICAgICBzZXRCdXNpbmVzc1JvbGVzKHJlc3AuZGF0YS5idXNpbmVzc19yb2xlcyk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4gYWxlcnQoZXJyb3IpKTtcbiAgfSwgW10pO1xuXG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lcj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVhZGVyLXRpdGxlXCI+e2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUudGl0bGUnKX08L2Rpdj5cbiAgICAgIDxmb3JtIGFjdGlvbj1cIlwiIG9uU3VibWl0PXsoZSkgPT4gaGFuZGxlU3VibWl0KGUpfT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250ZW50XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0aXRsZVwiPlxuICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUucGVyc29uYWwtZGV0YWlscycpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzTmFtZT1cInBlcnNvbmFsXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5maXJzdF9uYW1lJyl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXktaW5wdXRcIlxuICAgICAgICAgICAgICAgIG5hbWU9eydmaXJzdF9uYW1lJ31cbiAgICAgICAgICAgICAgICB2YWx1ZT17cGFyYW1zLmZpcnN0X25hbWV9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVPbkNoYW5nZShlKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPXsnZXJyb3ItbWVzc2FnZSd9PjwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUubGFzdF9uYW1lJyl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXktaW5wdXRcIlxuICAgICAgICAgICAgICAgIG5hbWU9eydsYXN0X25hbWUnfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtwYXJhbXMubGFzdF9uYW1lfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlT25DaGFuZ2UoZSl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT17J2Vycm9yLW1lc3NhZ2UnfT48L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGQgZmllbGQtLXJlYWRvbmx5XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5lbWFpbCcpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgcmVhZE9ubHk9e3RydWV9XG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm15LWlucHV0XCJcbiAgICAgICAgICAgICAgICBuYW1lPXsnZW1haWwnfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtwYXJhbXMuZW1haWx9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT17J2Vycm9yLW1lc3NhZ2UnfT48L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLnBob25lJyl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8UGhvbmVJbnB1dFxuICAgICAgICAgICAgICAgIGNvdW50cnk9eydpbCd9XG4gICAgICAgICAgICAgICAgbG9jYWxpemF0aW9uPXtpMThuLnQoJ2NvdW50cmllcycpfVxuICAgICAgICAgICAgICAgIGlucHV0Q2xhc3M9XCJwaG9uZS1pbnB1dFwiXG4gICAgICAgICAgICAgICAgY29udGFpbmVyQ2xhc3M9XCJteS1waG9uZVwiXG4gICAgICAgICAgICAgICAgYnV0dG9uQ2xhc3M9XCJkcm9wZG93blwiXG4gICAgICAgICAgICAgICAgZHJvcGRvd25DbGFzcz1cInBob25lLWRyb3Bkb3duXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17cGFyYW1zLnBob25lfVxuICAgICAgICAgICAgICAgIGVuYWJsZVNlYXJjaFxuICAgICAgICAgICAgICAgIHNlYXJjaFBsYWNlaG9sZGVyPXtpMThuLnQoJ3NlYXJjaCcpfVxuICAgICAgICAgICAgICAgIGNvdW50cnlDb2RlRWRpdGFibGU9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgIGhhbmRsZU9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIGlucHV0UHJvcHM9e3sgbmFtZTogJ3Bob25lJyB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9eydlcnJvci1tZXNzYWdlJ30+PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB7ZGVwYXJ0bWVudHNbMF0udmFsdWUgIT09ICcnICYmIChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmRlcGFydG1lbnQnKX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteS1pbnB1dFwiPlxuICAgICAgICAgICAgICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWU9e3NldERlcGFydG1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBpMThuLnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBkYXNoYm9hcmRfdjIucHJvZmlsZS5kZXBhcnRtZW50cy4ke2RlcGFydG1lbnQ/LmxhYmVsfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGRlcGFydG1lbnQ/LnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz17ZGVwYXJ0bWVudHN9XG4gICAgICAgICAgICAgICAgICAgICAgY2FuY2VsVGV4dFdpZHRoXG4gICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBkZXBhcnRtZW50cyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uX2tleTogJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmRlcGFydG1lbnRzJyxcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5idXNpbmVzc19yb2xlJyl9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXktaW5wdXRcIj5cbiAgICAgICAgICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgIHNldFZhbHVlPXtzZXRCdXNpbmVzc1JvbGV9XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBpMThuLnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBkYXNoYm9hcmRfdjIucHJvZmlsZS5idXNpbmVzc19yb2xlcy4ke2J1c2luZXNzUm9sZT8ubGFiZWx9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYnVzaW5lc3NSb2xlPy52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9e2J1c2luZXNzUm9sZXN9XG4gICAgICAgICAgICAgICAgICAgICAgY2FuY2VsVGV4dFdpZHRoXG4gICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBidXNpbmVzc1JvbGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25fa2V5OiAnZGFzaGJvYXJkX3YyLnByb2ZpbGUuYnVzaW5lc3Nfcm9sZXMnLFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge2RlcGFydG1lbnRzWzBdLnZhbHVlICE9PSAnJyAmJiAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgZmllbGQgJHtcbiAgICAgICAgICAgICAgICAgICAgZGVwYXJ0bWVudCAmJlxuICAgICAgICAgICAgICAgICAgICBkZXBhcnRtZW50Py52YWx1ZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICBkZXBhcnRtZW50c1tkZXBhcnRtZW50cy5sZW5ndGggLSAxXS52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgID8gJydcbiAgICAgICAgICAgICAgICAgICAgICA6ICdmaWVsZC0taGlkZGVuJ1xuICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5kZXBhcnRtZW50X2FsdCcpfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgcmVhZE9ubHk9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm15LWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT17J290aGVyX2RlcGFydG1lbnRfbmFtZSd9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtwYXJhbXMub3RoZXJfZGVwYXJ0bWVudF9uYW1lfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZURlcGFydG1lbnRDaGFuZ2UoZSl9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YGZpZWxkICR7XG4gICAgICAgICAgICAgICAgICAgIGJ1c2luZXNzUm9sZSAmJlxuICAgICAgICAgICAgICAgICAgICBidXNpbmVzc1JvbGU/LnZhbHVlID09PVxuICAgICAgICAgICAgICAgICAgICAgIGJ1c2luZXNzUm9sZXNbYnVzaW5lc3NSb2xlcy5sZW5ndGggLSAxXS52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgID8gJydcbiAgICAgICAgICAgICAgICAgICAgICA6ICdmaWVsZC0taGlkZGVuJ1xuICAgICAgICAgICAgICAgICAgfSBgfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuYnVzaW5lc3Nfcm9sZV9hbHQnKX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHJlYWRPbmx5PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJteS1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9eydvdGhlcl9idXNpbmVzc19yb2xlX25hbWUnfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17cGFyYW1zLm90aGVyX2J1c2luZXNzX3JvbGVfbmFtZX1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVCdXNpbmVzc1JvbGVDaGFuZ2UoZSl9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkXCI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJjaGFuZ2UtcGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNob3dQYXNzd29yZE1vZGFsKHRydWUpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFBlblN2ZyB3aWR0aD1cIjEycHhcIiBoZWlnaHQ9XCIxMnB4XCIgZmlsbD1cIiNmMDEzNGNcIiAvPlxuICAgICAgICAgICAgICAgIHsnICAnfVxuICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmNoYW5nZS1wYXNzd29yZCcpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRpdGxlXCI+e2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuc2V0dGluZ3MnKX08L2Rpdj5cbiAgICAgICAgICA8c2VjdGlvbiBjbGFzc05hbWU9XCJzZXR0aW5nc1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUudGltZS16b25lJyl9KlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteS1pbnB1dFwiPlxuICAgICAgICAgICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgICAgICAgIHNldFZhbHVlPXtzZXRUaW1lem9uZX1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aW1lem9uZX1cbiAgICAgICAgICAgICAgICAgIG9wdGlvbnM9e3RpbWV6b25lc31cbiAgICAgICAgICAgICAgICAgIGNhbmNlbFRleHRXaWR0aFxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5kYXRlLXRpbWUtZm9ybWF0Jyl9KlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteS1pbnB1dFwiPlxuICAgICAgICAgICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgICAgICAgIG9wdGlvbnM9e2RhdGVUaW1lRm9ybWF0T3B0aW9uc31cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtkYXRlVGltZUZvcm1hdH1cbiAgICAgICAgICAgICAgICAgIHNldFZhbHVlPXtzZXREYXRlVGltZUZvcm1hdH1cbiAgICAgICAgICAgICAgICAgIGNhbmNlbFRleHRXaWR0aFxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2RhdGUtdGltZS1mb3JtYXQnfT5cbiAgICAgICAgICAgICAgICB7ZGF0ZVRpbWVGb3JtYXQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgbmV3IERhdGUoKS50b0xvY2FsZURhdGVTdHJpbmcoJ2VuLVVTJywgZGF0ZVRpbWVGb3JtYXQuZm9ybWF0KX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmxhbmd1YWdlJyl9KlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydteS1pbnB1dCd9PlxuICAgICAgICAgICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgICAgICAgIG9wdGlvbnM9e2xvY2FsZU9wdGlvbnN9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17bG9jYWxlfVxuICAgICAgICAgICAgICAgICAgc2V0VmFsdWU9e3NldExvY2FsZX1cbiAgICAgICAgICAgICAgICAgIGNhbmNlbFRleHRXaWR0aFxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS50ZW1wZXJhdHVyZV91bml0cycpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydteS1pbnB1dCd9PlxuICAgICAgICAgICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgICAgICAgIG9wdGlvbnM9e3RlbXBlcmF0dXJlVW5pdE9wdGlvbnN9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17dGVtcGVyYXR1cmVVbml0fVxuICAgICAgICAgICAgICAgICAgc2V0VmFsdWU9e3NldFRlbXBlcmF0dXJlVW5pdH1cbiAgICAgICAgICAgICAgICAgIGNhbmNlbFRleHRXaWR0aFxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkIGZpZWxkLS1idXR0b25zXCI+XG4gICAgICAgICAgICAgIHtwYXJhbXMudGVsZWdyYW1fbmFtZSA9PT0gJycgJiYgKFxuICAgICAgICAgICAgICAgIDxhIGNsYXNzTmFtZT1cInRlbGVncmFtXCIgb25DbGljaz17KCkgPT4gc2V0SXNUZWxlZ3JhbU9wZW4odHJ1ZSl9PlxuICAgICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuY29ubmVjdC10by10ZWxlZ3JhbScpfVxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAge3BhcmFtcy50ZWxlZ3JhbV9uYW1lICE9PSAnJyAmJiAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLnRlbGVncmFtX25hbWUnKX1cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc1RlbGVncmFtT3Blbih0cnVlKX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UGVuU3ZnIHdpZHRoPVwiMTJweFwiIGhlaWdodD1cIjEycHhcIiBmaWxsPVwiI2YwMTM0Y1wiIC8+eycgJ31cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmNoYW5nZS1uYW1lJyl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3RlbGVncmFtLWV4aXN0aW5nLWlucHV0J30+XG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICByZWFkT25seT17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm15LWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9eyd0ZWxlZ3JhbV9uYW1lJ31cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtwYXJhbXMudGVsZWdyYW1fbmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17J3RlbGVncmFtLWV4aXN0aW5nLWlucHV0X19jYW5jZWwtYnV0dG9uJ31cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNldFBhcmFtcygocHJldlN0YXRlKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByZXZTdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZWxlZ3JhbV9uYW1lOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Q2FuY2VsIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9eydlcnJvci1tZXNzYWdlJ30+PC9wPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17J3RlbGVncmFtIG9wZW4nfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF4aW9zXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoYC90ZWxlZ3JhbS9zZW5kX3Rlc3RfbWVzc2FnZS5qc29uYClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTaG93VGVsZWdyYW1SZXNwb25zZU1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwLmRhdGEuc3RhdHVzWzBdLnRvVXBwZXJDYXNlKCkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwLmRhdGEuc3RhdHVzLnN1YnN0cmluZygxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHJlc3AuZGF0YS5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNob3dUZWxlZ3JhbVJlc3BvbnNlTWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDYwMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dUb2FzdChyZXNwLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBhbGVydChlcnJvcikpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7IXNob3dUZWxlZ3JhbVJlc3BvbnNlTWVzc2FnZS5zaG93ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLnNlbmRfdGVsZWdyYW1fbWVzc2FnZScpfVxuICAgICAgICAgICAgICAgICAgICAgIHtzaG93VGVsZWdyYW1SZXNwb25zZU1lc3NhZ2Uuc2hvdyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1RlbGVncmFtUmVzcG9uc2VNZXNzYWdlLnN0YXR1c31cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmZsb3dfcmF0ZV91bml0cycpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydteS1pbnB1dCd9PlxuICAgICAgICAgICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgICAgICAgIG9wdGlvbnM9e2Zsb3dSYXRlVW5pdE9wdGlvbnN9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17Zmxvd1JhdGVVbml0fVxuICAgICAgICAgICAgICAgICAgc2V0VmFsdWU9e3NldEZsb3dSYXRlVW5pdH1cbiAgICAgICAgICAgICAgICAgIGNhbmNlbFRleHRXaWR0aFxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgIDxidXR0b24gdHlwZT17J3N1Ym1pdCd9IGNsYXNzTmFtZT17J3NhdmUnfSBkaXNhYmxlZD17c3VibWl0dGluZ30+XG4gICAgICAgICAgICB7IXN1Ym1pdHRpbmcgJiZcbiAgICAgICAgICAgICAgIXNob3dTdWNjZXNzTWVzc2FnZSAmJlxuICAgICAgICAgICAgICAhc2hvd0Vycm9yTWVzc2FnZSAmJlxuICAgICAgICAgICAgICBpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLnN1Ym1pdCcpfVxuICAgICAgICAgICAge3N1Ym1pdHRpbmcgJiZcbiAgICAgICAgICAgICAgIXNob3dTdWNjZXNzTWVzc2FnZSAmJlxuICAgICAgICAgICAgICAhc2hvd0Vycm9yTWVzc2FnZSAmJlxuICAgICAgICAgICAgICBpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLnN1Ym1pdHRpbmcnKX1cbiAgICAgICAgICAgIHtzaG93U3VjY2Vzc01lc3NhZ2UgJiYgaTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5zdWNjZXNzJyl9XG4gICAgICAgICAgICB7c2hvd0Vycm9yTWVzc2FnZSAmJiBpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmVycm9yJyl9XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9mb3JtPlxuXG4gICAgICB7c2hvd1Bhc3N3b3JkTW9kYWwgJiYgKFxuICAgICAgICA8UGFzc3dvcmRNb2RhbFxuICAgICAgICAgIGNsb3NlPXsoKSA9PiBzZXRTaG93UGFzc3dvcmRNb2RhbChmYWxzZSl9XG4gICAgICAgICAgc2F2ZT17KCkgPT4ge319XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAge2lzVGVsZWdyYW1PcGVuICYmIChcbiAgICAgICAgPFRlbGVncmFtTW9kYWxcbiAgICAgICAgICBjbG9zZT17KCkgPT4gc2V0SXNUZWxlZ3JhbU9wZW4oZmFsc2UpfVxuICAgICAgICAgIGhhbmRsZU9uQ2hhbmdlPXtoYW5kbGVPbkNoYW5nZX1cbiAgICAgICAgICBoYW5kbGVTdWJtaXQ9e2hhbmRsZVN1Ym1pdH1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9Db250YWluZXI+XG4gICk7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxLQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxjQUFBLEdBQUFKLE9BQUE7QUFBOEQsSUFBQUssSUFBQSxHQUFBTCxPQUFBO0FBQUEsSUFBQU0sT0FBQSxHQUFBTixPQUFBO0FBRzlELElBQUFPLGdCQUFBLEdBQUFKLHNCQUFB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
|
|
631
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfU2VsZWN0IiwiX2kxOG4iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX1Bhc3N3b3JkTW9kYWwiLCJfcGVuIiwiX2NhbmNlbCIsIl9yZWFjdFBob25lSW5wdXQiLCJfVGVsZWdyYW1Nb2RhbCIsIl9heGlvcyIsIl9Db250YWluZXIiLCJfbW9tZW50VGltZXpvbmUiLCJfQW5hbHl0aWNzIiwiX3JlYWN0UmVkdXgiLCJfcmVhY3RUb2FzdGlmeSIsIl9wZXJtaXNzaW9uc1NsaWNlIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJQcm9maWxlUGFnZSIsInRpbWV6b25lc0FycmF5IiwibW9tZW50IiwidHoiLCJuYW1lcyIsImRhdGVUaW1lRm9ybWF0T3B0aW9ucyIsInZhbHVlIiwibGFiZWwiLCJmb3JtYXQiLCJtb250aCIsImRheSIsInllYXIiLCJob3VyIiwibWludXRlIiwiaG91cjEyIiwidGltZXpvbmVzIiwibWFwIiwidCIsImxvY2FsZU9wdGlvbnMiLCJmbG93UmF0ZVVuaXRPcHRpb25zIiwiaTE4biIsInRlbXBlcmF0dXJlVW5pdE9wdGlvbnMiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJsb2NhbGUiLCJzZXRMb2NhbGUiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImZsb3dSYXRlVW5pdCIsInNldEZsb3dSYXRlVW5pdCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwidGVtcGVyYXR1cmVVbml0Iiwic2V0VGVtcGVyYXR1cmVVbml0IiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJkYXRlVGltZUZvcm1hdCIsInNldERhdGVUaW1lRm9ybWF0IiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTEwIiwidGltZXpvbmUiLCJzZXRUaW1lem9uZSIsIl91c2VTdGF0ZTExIiwiX3VzZVN0YXRlMTIiLCJkZXBhcnRtZW50cyIsInNldERlcGFydG1lbnRzIiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsImJ1c2luZXNzUm9sZXMiLCJzZXRCdXNpbmVzc1JvbGVzIiwiX3VzZVN0YXRlMTUiLCJfdXNlU3RhdGUxNiIsImRlcGFydG1lbnQiLCJzZXREZXBhcnRtZW50IiwiX3VzZVN0YXRlMTciLCJfdXNlU3RhdGUxOCIsImJ1c2luZXNzUm9sZSIsInNldEJ1c2luZXNzUm9sZSIsImluaXRpYWxQYXJhbXNTdGF0ZSIsImZpcnN0X25hbWUiLCJsYXN0X25hbWUiLCJwaG9uZSIsImVtYWlsIiwidGltZV96b25lIiwiZGF0ZV90aW1lX2Zvcm1hdCIsInRlbGVncmFtX25hbWUiLCJvdGhlcl9idXNpbmVzc19yb2xlX25hbWUiLCJvdGhlcl9kZXBhcnRtZW50X25hbWUiLCJidXNpbmVzc19yb2xlIiwiZmxvd19yYXRlX3VuaXQiLCJ0ZW1wZXJhdHVyZV91bml0IiwiX3VzZVN0YXRlMTkiLCJfdXNlU3RhdGUyMCIsImlzVGVsZWdyYW1PcGVuIiwic2V0SXNUZWxlZ3JhbU9wZW4iLCJfdXNlU3RhdGUyMSIsIl91c2VTdGF0ZTIyIiwic2hvd1Bhc3N3b3JkTW9kYWwiLCJzZXRTaG93UGFzc3dvcmRNb2RhbCIsIl91c2VTdGF0ZTIzIiwiX3VzZVN0YXRlMjQiLCJzdWJtaXR0aW5nIiwic2V0U3VibWl0dGluZyIsIl91c2VTdGF0ZTI1IiwiX3VzZVN0YXRlMjYiLCJzaG93U3VjY2Vzc01lc3NhZ2UiLCJzZXRTaG93U3VjY2Vzc01lc3NhZ2UiLCJfdXNlU3RhdGUyNyIsIl91c2VTdGF0ZTI4Iiwic2hvd0Vycm9yTWVzc2FnZSIsInNldFNob3dFcnJvck1lc3NhZ2UiLCJfdXNlU3RhdGUyOSIsInNob3ciLCJzdGF0dXMiLCJtZXNzYWdlIiwiX3VzZVN0YXRlMzAiLCJzaG93VGVsZWdyYW1SZXNwb25zZU1lc3NhZ2UiLCJzZXRTaG93VGVsZWdyYW1SZXNwb25zZU1lc3NhZ2UiLCJfdXNlU3RhdGUzMSIsIl91c2VTdGF0ZTMyIiwicGFyYW1zIiwic2V0UGFyYW1zIiwiaGFuZGxlT25DaGFuZ2UiLCJlIiwic3RhcnRzV2l0aCIsInJlcGxhY2UiLCJwcmV2U3RhdGUiLCJfb2JqZWN0U3ByZWFkMyIsIl9lJHRhcmdldCIsInRhcmdldCIsIm5hbWUiLCJfZGVmaW5lUHJvcGVydHkyIiwiaGFuZGxlQnVzaW5lc3NSb2xlQ2hhbmdlIiwiaGFuZGxlRGVwYXJ0bWVudENoYW5nZSIsImdldFBhcmFtc1dpdGhBZ2dyZWdhdGVkVmFsdWVzIiwiZGVwYXJ0bWVudF9pZCIsInVuZGVmaW5lZCIsImJ1c2luZXNzX3JvbGVfaWQiLCJ3YXRlckF1dGhvcml0eU5hbWUiLCJ1c2VTZWxlY3RvciIsInN0YXRlIiwiZ2xvYmFsX2RhdGEiLCJzaG93VG9hc3QiLCJkYXRhIiwidXNlcm5hbWUiLCJlcnJvciIsInRvYXN0Iiwic3VjY2VzcyIsImNvbmNhdCIsInBvc2l0aW9uIiwiZGlzcGF0Y2giLCJ1c2VEaXNwYXRjaCIsImhhbmRsZVN1Ym1pdCIsInByZXZlbnREZWZhdWx0IiwiYXhpb3MiLCJwdXQiLCJ1c2VyIiwidGhlbiIsInJlc3AiLCJlcnJvcnMiLCJQZXJtaXNzaW9uc1NsaWNlIiwiYWN0aW9ucyIsInNldFVzZXJJbmZvIiwiSlNPTiIsInBhcnNlIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZm9yRWFjaCIsInAiLCJpbm5lckhUTUwiLCJjbGFzc0xpc3QiLCJyZW1vdmUiLCJmaW5kTG9jYWxlIiwiZmluZCIsImZpbmRGbG93UmF0ZVVuaXQiLCJmaW5kVGVtcGVyYXR1cmVVbml0IiwiZmluZERhdGVUaW1lRm9ybWF0IiwiZmluZFRpbWV6b25lIiwic2V0VGltZW91dCIsImZpbmRFbGVtZW50IiwicXVlcnlTZWxlY3RvciIsInBhcmVudCIsImNsb3Nlc3QiLCJmaW5kSW5wdXQiLCJhZGQiLCJjYXRjaCIsInVzZUVmZmVjdCIsImFuYWx5dGljc1RyYWNrIiwidXRpbGl0eV9uYW1lIiwidG9rZW4iLCJjb250ZW50IiwiZGVmYXVsdHMiLCJoZWFkZXJzIiwiY29tbW9uIiwiZmluZFByb3BlcnR5Iiwib2JqZWN0IiwicHJvcGVydHkiLCJidXNpbmVzc19yb2xlcyIsImFsZXJ0IiwiY3JlYXRlRWxlbWVudCIsIkNvbnRhaW5lciIsImNsYXNzTmFtZSIsImFjdGlvbiIsIm9uU3VibWl0IiwidHlwZSIsIm9uQ2hhbmdlIiwicmVhZE9ubHkiLCJjb3VudHJ5IiwibG9jYWxpemF0aW9uIiwiaW5wdXRDbGFzcyIsImNvbnRhaW5lckNsYXNzIiwiYnV0dG9uQ2xhc3MiLCJkcm9wZG93bkNsYXNzIiwiZW5hYmxlU2VhcmNoIiwic2VhcmNoUGxhY2Vob2xkZXIiLCJjb3VudHJ5Q29kZUVkaXRhYmxlIiwiaW5wdXRQcm9wcyIsIkZyYWdtZW50IiwiU2VsZWN0Iiwic2V0VmFsdWUiLCJvcHRpb25zIiwiY2FuY2VsVGV4dFdpZHRoIiwidHJhbnNsYXRlIiwidHJhbnNsYXRpb25fa2V5IiwibGVuZ3RoIiwib25DbGljayIsIlJlYWN0Q29tcG9uZW50Iiwid2lkdGgiLCJoZWlnaHQiLCJmaWxsIiwiRGF0ZSIsInRvTG9jYWxlRGF0ZVN0cmluZyIsInRvVXBwZXJDYXNlIiwic3Vic3RyaW5nIiwiZGlzYWJsZWQiLCJQYXNzd29yZE1vZGFsIiwiY2xvc2UiLCJzYXZlIiwiVGVsZWdyYW1Nb2RhbCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFnZXMvUHJvZmlsZVBhZ2UvUHJvZmlsZVBhZ2UudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgU2VsZWN0IH0gZnJvbSAnc3JjL2NvbXBvbmVudHMvQ3VzdG9tSW5wdXRzL1NlbGVjdC9TZWxlY3QnO1xuaW1wb3J0IGkxOG4gZnJvbSAnc3JjL3V0aWxpdGllcy9pMThuJztcbmltcG9ydCB7IFBhc3N3b3JkTW9kYWwgfSBmcm9tICcuL1Bhc3N3b3JkTW9kYWwvUGFzc3dvcmRNb2RhbCc7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBQZW5TdmcgfSBmcm9tICcuL3Blbi5zdmcnO1xuaW1wb3J0IHsgUmVhY3RDb21wb25lbnQgYXMgQ2FuY2VsIH0gZnJvbSAnLi9jYW5jZWwuc3ZnJztcbmltcG9ydCBQaG9uZUlucHV0IGZyb20gJ3JlYWN0LXBob25lLWlucHV0LTInO1xuaW1wb3J0ICdyZWFjdC1waG9uZS1pbnB1dC0yL2xpYi9zdHlsZS5jc3MnO1xuaW1wb3J0IHsgVGVsZWdyYW1Nb2RhbCB9IGZyb20gJy4vVGVsZWdyYW1Nb2RhbC9UZWxlZ3JhbU1vZGFsJztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBDb250YWluZXIgfSBmcm9tICcuL0NvbnRhaW5lcic7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSc7XG5pbXBvcnQgeyBhbmFseXRpY3NUcmFjayB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9BbmFseXRpY3MnO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IHsgdG9hc3QgfSBmcm9tICdyZWFjdC10b2FzdGlmeSc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uc1NsaWNlIH0gZnJvbSAnc3JjL3N0b3JlL3Blcm1pc3Npb25zL3Blcm1pc3Npb25zU2xpY2UnO1xuXG5leHBvcnQgY29uc3QgUHJvZmlsZVBhZ2UgPSAoKSA9PiB7XG4gIGNvbnN0IHRpbWV6b25lc0FycmF5ID0gbW9tZW50LnR6Lm5hbWVzKCk7XG4gIGNvbnN0IGRhdGVUaW1lRm9ybWF0T3B0aW9ucyA9IFtcbiAgICB7XG4gICAgICB2YWx1ZTogJ3VzJyxcbiAgICAgIGxhYmVsOiAnVW5pdGVkIFN0YXRlcycsXG4gICAgICBmb3JtYXQ6IHtcbiAgICAgICAgbW9udGg6ICdzaG9ydCcsXG4gICAgICAgIGRheTogJ251bWVyaWMnLFxuICAgICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgICAgIGhvdXI6ICdudW1lcmljJyxcbiAgICAgICAgbWludXRlOiAnbnVtZXJpYycsXG4gICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgdmFsdWU6ICdldScsXG4gICAgICBsYWJlbDogJ0V1cm9wZScsXG4gICAgICBmb3JtYXQ6IHtcbiAgICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICAgIG1vbnRoOiAnbnVtZXJpYycsXG4gICAgICAgIHllYXI6ICdudW1lcmljJyxcbiAgICAgICAgaG91cjogJ251bWVyaWMnLFxuICAgICAgICBtaW51dGU6ICdudW1lcmljJyxcbiAgICAgICAgaG91cjEyOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgfSxcbiAgXTtcblxuICBjb25zdCB0aW1lem9uZXMgPSB0aW1lem9uZXNBcnJheS5tYXAoKHQpID0+IHtcbiAgICByZXR1cm4geyB2YWx1ZTogdCwgbGFiZWw6IHQgfTtcbiAgfSk7XG5cbiAgY29uc3QgbG9jYWxlT3B0aW9ucyA9IFtcbiAgICB7IHZhbHVlOiAnZW4nLCBsYWJlbDogJ0VuZ2xpc2gnIH0sXG4gICAgeyB2YWx1ZTogJ2VuX3VrJywgbGFiZWw6ICdFbmdsaXNoIChVSyknIH0sXG4gICAgeyB2YWx1ZTogJ2hlJywgbGFiZWw6ICfXoteR16jXmdeqJyB9LFxuICAgIHsgdmFsdWU6ICdmcicsIGxhYmVsOiAnRnJhbsOnYWlzJyB9LFxuICAgIHsgdmFsdWU6ICdpdCcsIGxhYmVsOiAnSXRhbGlhbm8nIH0sXG4gIF07XG5cbiAgY29uc3QgZmxvd1JhdGVVbml0T3B0aW9ucyA9IFtcbiAgICB7XG4gICAgICB2YWx1ZTogJ2dkX3VzJyxcbiAgICAgIGxhYmVsOiBpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmZsb3dfcmF0ZV91bml0X29wdGlvbnMuZ2RfdXMnKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHZhbHVlOiAnZ2RfdWsnLFxuICAgICAgbGFiZWw6IGkxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuZmxvd19yYXRlX3VuaXRfb3B0aW9ucy5nZF91aycpLFxuICAgIH0sXG4gICAge1xuICAgICAgdmFsdWU6ICdtM2QnLFxuICAgICAgbGFiZWw6IGkxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuZmxvd19yYXRlX3VuaXRfb3B0aW9ucy5tM2QnKSxcbiAgICB9LFxuICBdO1xuXG4gIGNvbnN0IHRlbXBlcmF0dXJlVW5pdE9wdGlvbnMgPSBbXG4gICAge1xuICAgICAgdmFsdWU6ICdjZWxzaXVzJyxcbiAgICAgIGxhYmVsOiBpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLnRlbXBlcmF0dXJlX3VuaXRfb3B0aW9ucy5jZWxzaXVzJyksXG4gICAgfSxcbiAgICB7XG4gICAgICB2YWx1ZTogJ2ZhaHJlbmhlaXQnLFxuICAgICAgbGFiZWw6IGkxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUudGVtcGVyYXR1cmVfdW5pdF9vcHRpb25zLmZhaHJlbmhlaXQnKSxcbiAgICB9LFxuICBdO1xuXG4gIGNvbnN0IFtsb2NhbGUsIHNldExvY2FsZV0gPSB1c2VTdGF0ZTx7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICB9Pihsb2NhbGVPcHRpb25zWzBdKTtcblxuICBjb25zdCBbZmxvd1JhdGVVbml0LCBzZXRGbG93UmF0ZVVuaXRdID0gdXNlU3RhdGU8e1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgfT4oZmxvd1JhdGVVbml0T3B0aW9uc1swXSk7XG5cbiAgY29uc3QgW3RlbXBlcmF0dXJlVW5pdCwgc2V0VGVtcGVyYXR1cmVVbml0XSA9IHVzZVN0YXRlPHtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH0+KHRlbXBlcmF0dXJlVW5pdE9wdGlvbnNbMF0pO1xuXG4gIGNvbnN0IFtkYXRlVGltZUZvcm1hdCwgc2V0RGF0ZVRpbWVGb3JtYXRdID0gdXNlU3RhdGU8e1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBmb3JtYXQ6IG9iamVjdDtcbiAgfT4oZGF0ZVRpbWVGb3JtYXRPcHRpb25zWzBdKTtcblxuICBjb25zdCBbdGltZXpvbmUsIHNldFRpbWV6b25lXSA9IHVzZVN0YXRlPHtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH0+KHRpbWV6b25lc1syMF0pO1xuXG4gIGNvbnN0IFtkZXBhcnRtZW50cywgc2V0RGVwYXJ0bWVudHNdID0gdXNlU3RhdGU8XG4gICAge1xuICAgICAgdmFsdWU6IHN0cmluZztcbiAgICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgfVtdXG4gID4oW3sgdmFsdWU6ICcnLCBsYWJlbDogJycgfV0pO1xuXG4gIGNvbnN0IFtidXNpbmVzc1JvbGVzLCBzZXRCdXNpbmVzc1JvbGVzXSA9IHVzZVN0YXRlPFxuICAgIHtcbiAgICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgICBsYWJlbDogc3RyaW5nO1xuICAgIH1bXVxuICA+KFt7IHZhbHVlOiAnJywgbGFiZWw6ICcnIH1dKTtcblxuICBjb25zdCBbZGVwYXJ0bWVudCwgc2V0RGVwYXJ0bWVudF0gPSB1c2VTdGF0ZTxhbnk+KGRlcGFydG1lbnRzWzBdKTtcblxuICBjb25zdCBbYnVzaW5lc3NSb2xlLCBzZXRCdXNpbmVzc1JvbGVdID0gdXNlU3RhdGU8YW55PihidXNpbmVzc1JvbGVzWzBdKTtcblxuICBjb25zdCBpbml0aWFsUGFyYW1zU3RhdGUgPSB7XG4gICAgZmlyc3RfbmFtZTogJycsXG4gICAgbGFzdF9uYW1lOiAnJyxcbiAgICBwaG9uZTogJycsXG4gICAgZW1haWw6ICcnLFxuICAgIHRpbWVfem9uZTogJycsXG4gICAgZGF0ZV90aW1lX2Zvcm1hdDogJycsXG4gICAgbG9jYWxlOiAnJyxcbiAgICB0ZWxlZ3JhbV9uYW1lOiAnJyxcbiAgICBvdGhlcl9idXNpbmVzc19yb2xlX25hbWU6ICcnLFxuICAgIG90aGVyX2RlcGFydG1lbnRfbmFtZTogJycsXG4gICAgYnVzaW5lc3Nfcm9sZTogJycsXG4gICAgZGVwYXJ0bWVudDogJycsXG4gICAgZmxvd19yYXRlX3VuaXQ6ICcnLFxuICAgIHRlbXBlcmF0dXJlX3VuaXQ6ICcnLFxuICB9O1xuXG4gIGNvbnN0IFtpc1RlbGVncmFtT3Blbiwgc2V0SXNUZWxlZ3JhbU9wZW5dID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBbc2hvd1Bhc3N3b3JkTW9kYWwsIHNldFNob3dQYXNzd29yZE1vZGFsXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgW3N1Ym1pdHRpbmcsIHNldFN1Ym1pdHRpbmddID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBbc2hvd1N1Y2Nlc3NNZXNzYWdlLCBzZXRTaG93U3VjY2Vzc01lc3NhZ2VdID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBbc2hvd0Vycm9yTWVzc2FnZSwgc2V0U2hvd0Vycm9yTWVzc2FnZV0gPSB1c2VTdGF0ZTxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IFtzaG93VGVsZWdyYW1SZXNwb25zZU1lc3NhZ2UsIHNldFNob3dUZWxlZ3JhbVJlc3BvbnNlTWVzc2FnZV0gPVxuICAgIHVzZVN0YXRlPHtcbiAgICAgIHNob3c6IGJvb2xlYW47XG4gICAgICBzdGF0dXM6IHN0cmluZztcbiAgICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICB9Pih7XG4gICAgICBzaG93OiBmYWxzZSxcbiAgICAgIHN0YXR1czogJycsXG4gICAgICBtZXNzYWdlOiAnJyxcbiAgICB9KTtcbiAgY29uc3QgW3BhcmFtcywgc2V0UGFyYW1zXSA9IHVzZVN0YXRlPHtcbiAgICBmaXJzdF9uYW1lOiBzdHJpbmc7XG4gICAgbGFzdF9uYW1lOiBzdHJpbmc7XG4gICAgcGhvbmU6IHN0cmluZztcbiAgICBlbWFpbDogc3RyaW5nO1xuICAgIHRpbWVfem9uZTogc3RyaW5nO1xuICAgIGRhdGVfdGltZV9mb3JtYXQ6IHN0cmluZztcbiAgICBsb2NhbGU6IHN0cmluZztcbiAgICB0ZWxlZ3JhbV9uYW1lOiBzdHJpbmc7XG4gICAgb3RoZXJfYnVzaW5lc3Nfcm9sZV9uYW1lOiBzdHJpbmc7XG4gICAgb3RoZXJfZGVwYXJ0bWVudF9uYW1lOiBzdHJpbmc7XG4gICAgZmxvd19yYXRlX3VuaXQ6IHN0cmluZztcbiAgfT4oaW5pdGlhbFBhcmFtc1N0YXRlKTtcblxuICBjb25zdCBoYW5kbGVPbkNoYW5nZSA9IChlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBlID09PSAnc3RyaW5nJykge1xuICAgICAgaWYgKGUuc3RhcnRzV2l0aCgnOTcyMCcpKSB7XG4gICAgICAgIGUgPSBlLnJlcGxhY2UoLyg5NzIwKS9nLCAnOTcyJyk7XG4gICAgICB9XG4gICAgICBzZXRQYXJhbXMoKHByZXZTdGF0ZSkgPT4gKHtcbiAgICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgICBwaG9uZTogZSxcbiAgICAgIH0pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgeyB2YWx1ZSwgbmFtZSB9ID0gZS50YXJnZXQ7XG4gICAgICBzZXRQYXJhbXMoKHByZXZTdGF0ZSkgPT4gKHtcbiAgICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgICBbbmFtZV06IHZhbHVlLFxuICAgICAgfSkpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVCdXNpbmVzc1JvbGVDaGFuZ2UgPSAoZSkgPT4ge1xuICAgIGlmIChlLnRhcmdldCAhPT0gbnVsbCkge1xuICAgICAgc2V0UGFyYW1zKHtcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICBidXNpbmVzc19yb2xlOiBlLnZhbHVlLFxuICAgICAgICBvdGhlcl9idXNpbmVzc19yb2xlX25hbWU6IGUudGFyZ2V0LnZhbHVlLFxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZURlcGFydG1lbnRDaGFuZ2UgPSAoZSkgPT4ge1xuICAgIGlmIChlLnRhcmdldCAhPT0gbnVsbCkge1xuICAgICAgc2V0UGFyYW1zKHtcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICBkZXBhcnRtZW50OiBlLnZhbHVlLFxuICAgICAgICBvdGhlcl9kZXBhcnRtZW50X25hbWU6IGUudGFyZ2V0LnZhbHVlLFxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGdldFBhcmFtc1dpdGhBZ2dyZWdhdGVkVmFsdWVzID0gKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5wYXJhbXMsXG4gICAgICBkYXRlX3RpbWVfZm9ybWF0OiBkYXRlVGltZUZvcm1hdC52YWx1ZSxcbiAgICAgIGxvY2FsZTogbG9jYWxlLnZhbHVlLFxuICAgICAgdGltZV96b25lOiB0aW1lem9uZS52YWx1ZSxcbiAgICAgIGRlcGFydG1lbnRfaWQ6IGRlcGFydG1lbnQgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBkZXBhcnRtZW50LnZhbHVlLFxuICAgICAgYnVzaW5lc3Nfcm9sZV9pZDogYnVzaW5lc3NSb2xlID09PSB1bmRlZmluZWQgPyBudWxsIDogYnVzaW5lc3NSb2xlLnZhbHVlLFxuICAgICAgZmxvd19yYXRlX3VuaXQ6IGZsb3dSYXRlVW5pdC52YWx1ZSxcbiAgICAgIHRlbXBlcmF0dXJlX3VuaXQ6IHRlbXBlcmF0dXJlVW5pdC52YWx1ZSxcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IHdhdGVyQXV0aG9yaXR5TmFtZSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUuZ2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlOYW1lLFxuICApO1xuXG4gIGNvbnN0IHNob3dUb2FzdCA9IChkYXRhKSA9PiB7XG4gICAgY29uc3QgdXNlcm5hbWUgPSBkYXRhLnVzZXJuYW1lO1xuICAgIGNvbnN0IGVycm9yID0gZGF0YS5lcnJvcjtcbiAgICBpZiAoZGF0YS5zdGF0dXMgPT09ICdzdWNjZXNzJykge1xuICAgICAgdG9hc3Quc3VjY2VzcyhcbiAgICAgICAgaTE4bi50KGBteV9wcm9maWxlX3RhYi50ZWxlZ3JhbV9tZXNzYWdlcy4ke2RhdGEubWVzc2FnZX1gLCB7XG4gICAgICAgICAgdXNlcm5hbWUsXG4gICAgICAgIH0pLFxuICAgICAgICB7XG4gICAgICAgICAgcG9zaXRpb246ICd0b3AtY2VudGVyJyxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRvYXN0LmVycm9yKFxuICAgICAgICBpMThuLnQoYG15X3Byb2ZpbGVfdGFiLnRlbGVncmFtX21lc3NhZ2VzLiR7ZGF0YS5tZXNzYWdlfWAsIHtcbiAgICAgICAgICBlcnJvcjogZXJyb3IsXG4gICAgICAgICAgdXNlcm5hbWU6IHVzZXJuYW1lLFxuICAgICAgICB9KSxcbiAgICAgICAge1xuICAgICAgICAgIHBvc2l0aW9uOiAndG9wLWNlbnRlcicsXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG5cbiAgY29uc3QgaGFuZGxlU3VibWl0ID0gKGUpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgc2V0U3VibWl0dGluZyh0cnVlKTtcbiAgICBheGlvc1xuICAgICAgLnB1dCgnL3Byb2ZpbGVzJywgeyB1c2VyOiBnZXRQYXJhbXNXaXRoQWdncmVnYXRlZFZhbHVlcygpIH0pXG4gICAgICAudGhlbigocmVzcCkgPT4ge1xuICAgICAgICBpZiAocmVzcC5kYXRhLmVycm9ycyA9PT0gbnVsbCkge1xuICAgICAgICAgIGRpc3BhdGNoKFxuICAgICAgICAgICAgUGVybWlzc2lvbnNTbGljZS5hY3Rpb25zLnNldFVzZXJJbmZvKEpTT04ucGFyc2UocmVzcC5kYXRhLnVzZXIpKSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgZG9jdW1lbnRcbiAgICAgICAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKCcuZXJyb3ItbWVzc2FnZScpXG4gICAgICAgICAgICAuZm9yRWFjaCgocCkgPT4gKHAuaW5uZXJIVE1MID0gJycpKTtcblxuICAgICAgICAgIGRvY3VtZW50XG4gICAgICAgICAgICAucXVlcnlTZWxlY3RvckFsbCgnLmludmFsaWQtZmllbGQnKVxuICAgICAgICAgICAgLmZvckVhY2goKHApID0+IHAuY2xhc3NMaXN0LnJlbW92ZSgnaW52YWxpZC1maWVsZCcpKTtcbiAgICAgICAgICBsZXQgdXNlciA9IEpTT04ucGFyc2UocmVzcC5kYXRhLnVzZXIpO1xuICAgICAgICAgIGNvbnN0IGZpbmRMb2NhbGUgPSBsb2NhbGVPcHRpb25zLmZpbmQoKGUpID0+IGUudmFsdWUgPT09IHVzZXIubG9jYWxlKTtcbiAgICAgICAgICBjb25zdCBmaW5kRmxvd1JhdGVVbml0ID0gZmxvd1JhdGVVbml0T3B0aW9ucy5maW5kKFxuICAgICAgICAgICAgKGUpID0+IGUudmFsdWUgPT09IHVzZXIuZmxvd19yYXRlX3VuaXQsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBmaW5kVGVtcGVyYXR1cmVVbml0ID0gdGVtcGVyYXR1cmVVbml0T3B0aW9ucy5maW5kKFxuICAgICAgICAgICAgKGUpID0+IGUudmFsdWUgPT09IHVzZXIudGVtcGVyYXR1cmVfdW5pdCxcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnN0IGZpbmREYXRlVGltZUZvcm1hdCA9IGRhdGVUaW1lRm9ybWF0T3B0aW9ucy5maW5kKFxuICAgICAgICAgICAgKGUpID0+IGUudmFsdWUgPT09IHVzZXIuZGF0ZV90aW1lX2Zvcm1hdCxcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnN0IGZpbmRUaW1lem9uZSA9IHRpbWV6b25lcy5maW5kKFxuICAgICAgICAgICAgKGUpID0+IGUudmFsdWUgPT09IHVzZXIudGltZV96b25lLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBzZXRQYXJhbXModXNlcik7XG4gICAgICAgICAgc2V0TG9jYWxlKGZpbmRMb2NhbGUhKTtcbiAgICAgICAgICBzZXRGbG93UmF0ZVVuaXQoZmluZEZsb3dSYXRlVW5pdCEpO1xuICAgICAgICAgIHNldFRlbXBlcmF0dXJlVW5pdChmaW5kVGVtcGVyYXR1cmVVbml0ISk7XG4gICAgICAgICAgc2V0RGF0ZVRpbWVGb3JtYXQoZmluZERhdGVUaW1lRm9ybWF0ISk7XG4gICAgICAgICAgc2V0VGltZXpvbmUoZmluZFRpbWV6b25lISk7XG4gICAgICAgICAgc2V0U2hvd1N1Y2Nlc3NNZXNzYWdlKHRydWUpO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgc2V0U2hvd1N1Y2Nlc3NNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgICB9LCA2MDAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkb2N1bWVudFxuICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoJy5lcnJvci1tZXNzYWdlJylcbiAgICAgICAgICAgIC5mb3JFYWNoKChwKSA9PiAocC5pbm5lckhUTUwgPSAnJykpO1xuICAgICAgICAgIGxldCBlcnJvcnMgPSByZXNwLmRhdGEudXNlci5lcnJvcnM7XG4gICAgICAgICAgZm9yIChjb25zdCBlcnJvciBpbiBlcnJvcnMpIHtcbiAgICAgICAgICAgIGxldCBmaW5kRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYGlucHV0W25hbWU9JyR7ZXJyb3J9J11gKTtcbiAgICAgICAgICAgIGxldCBwYXJlbnQgPSBmaW5kRWxlbWVudCEuY2xvc2VzdCgnLmZpZWxkJyk7XG4gICAgICAgICAgICBsZXQgZmluZElucHV0ID0gcGFyZW50IS5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpO1xuICAgICAgICAgICAgZmluZElucHV0IS5jbGFzc0xpc3QuYWRkKCdpbnZhbGlkLWZpZWxkJyk7XG4gICAgICAgICAgICBwYXJlbnQhLnF1ZXJ5U2VsZWN0b3IoJy5lcnJvci1tZXNzYWdlJykhLmlubmVySFRNTCA9IGkxOG4udChcbiAgICAgICAgICAgICAgYGRhc2hib2FyZF92Mi5wcm9maWxlLmVycm9ycy4ke2Vycm9yfWAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZXRTaG93U3VjY2Vzc01lc3NhZ2UoZmFsc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0U3VibWl0dGluZyhmYWxzZSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICBzZXRTaG93RXJyb3JNZXNzYWdlKHRydWUpO1xuICAgICAgICBzZXRTaG93U3VjY2Vzc01lc3NhZ2UoZmFsc2UpO1xuICAgICAgICBzZXRTdWJtaXR0aW5nKGZhbHNlKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgc2V0U2hvd0Vycm9yTWVzc2FnZShmYWxzZSk7XG4gICAgICAgIH0sIDYwMDApO1xuICAgICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBhbmFseXRpY3NUcmFjaygnVmlld2VkIFByb2ZpbGUgUGFnZScsIHtcbiAgICAgIHV0aWxpdHlfbmFtZTogd2F0ZXJBdXRob3JpdHlOYW1lLFxuICAgIH0pO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCB0b2tlbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tuYW1lPWNzcmYtdG9rZW5dJykhLmNvbnRlbnQ7XG4gICAgYXhpb3MuZGVmYXVsdHMuaGVhZGVycy5jb21tb25bJ1gtQ1NSRi1UT0tFTiddID0gdG9rZW47XG4gICAgYXhpb3MuZGVmYXVsdHMuaGVhZGVycy5jb21tb25bJ0NvbnRlbnQtVHlwZSddID0gJ2FwcGxpY2F0aW9uL2pzJztcbiAgICBheGlvc1xuICAgICAgLmdldChgL3Byb2ZpbGVzL3Jlc291cmNlYClcbiAgICAgIC50aGVuKChyZXNwKSA9PiB7XG4gICAgICAgIHNldFBhcmFtcyhyZXNwLmRhdGEudXNlcik7XG4gICAgICAgIGNvbnN0IGZpbmRQcm9wZXJ0eSA9IChvYmplY3QsIHByb3BlcnR5KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG9iamVjdC5maW5kKChlKSA9PiBlLnZhbHVlID09PSBwcm9wZXJ0eSk7XG4gICAgICAgIH07XG4gICAgICAgIHNldExvY2FsZShmaW5kUHJvcGVydHkobG9jYWxlT3B0aW9ucywgcmVzcC5kYXRhLnVzZXIubG9jYWxlKSk7XG4gICAgICAgIHNldEZsb3dSYXRlVW5pdChcbiAgICAgICAgICBmaW5kUHJvcGVydHkoZmxvd1JhdGVVbml0T3B0aW9ucywgcmVzcC5kYXRhLnVzZXIuZmxvd19yYXRlX3VuaXQpLFxuICAgICAgICApO1xuICAgICAgICBzZXRUZW1wZXJhdHVyZVVuaXQoXG4gICAgICAgICAgZmluZFByb3BlcnR5KHRlbXBlcmF0dXJlVW5pdE9wdGlvbnMsIHJlc3AuZGF0YS51c2VyLnRlbXBlcmF0dXJlX3VuaXQpLFxuICAgICAgICApO1xuICAgICAgICBzZXREYXRlVGltZUZvcm1hdChcbiAgICAgICAgICBmaW5kUHJvcGVydHkoZGF0ZVRpbWVGb3JtYXRPcHRpb25zLCByZXNwLmRhdGEudXNlci5kYXRlX3RpbWVfZm9ybWF0KSxcbiAgICAgICAgKTtcbiAgICAgICAgc2V0VGltZXpvbmUoZmluZFByb3BlcnR5KHRpbWV6b25lcywgcmVzcC5kYXRhLnVzZXIudGltZV96b25lKSk7XG4gICAgICAgIHNldEJ1c2luZXNzUm9sZShcbiAgICAgICAgICBmaW5kUHJvcGVydHkoXG4gICAgICAgICAgICByZXNwLmRhdGEuYnVzaW5lc3Nfcm9sZXMsXG4gICAgICAgICAgICByZXNwLmRhdGEudXNlci5idXNpbmVzc19yb2xlX2lkLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICAgIHNldERlcGFydG1lbnQoXG4gICAgICAgICAgZmluZFByb3BlcnR5KHJlc3AuZGF0YS5kZXBhcnRtZW50cywgcmVzcC5kYXRhLnVzZXIuZGVwYXJ0bWVudF9pZCksXG4gICAgICAgICk7XG4gICAgICAgIHNldERlcGFydG1lbnRzKHJlc3AuZGF0YS5kZXBhcnRtZW50cyk7XG4gICAgICAgIHNldEJ1c2luZXNzUm9sZXMocmVzcC5kYXRhLmJ1c2luZXNzX3JvbGVzKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiBhbGVydChlcnJvcikpO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWFkZXItdGl0bGVcIj57aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS50aXRsZScpfTwvZGl2PlxuICAgICAgPGZvcm0gYWN0aW9uPVwiXCIgb25TdWJtaXQ9eyhlKSA9PiBoYW5kbGVTdWJtaXQoZSl9PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRlbnRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRpdGxlXCI+XG4gICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5wZXJzb25hbC1kZXRhaWxzJyl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwicGVyc29uYWxcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmZpcnN0X25hbWUnKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJteS1pbnB1dFwiXG4gICAgICAgICAgICAgICAgbmFtZT17J2ZpcnN0X25hbWUnfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtwYXJhbXMuZmlyc3RfbmFtZX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZU9uQ2hhbmdlKGUpfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9eydlcnJvci1tZXNzYWdlJ30+PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5sYXN0X25hbWUnKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJteS1pbnB1dFwiXG4gICAgICAgICAgICAgICAgbmFtZT17J2xhc3RfbmFtZSd9XG4gICAgICAgICAgICAgICAgdmFsdWU9e3BhcmFtcy5sYXN0X25hbWV9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVPbkNoYW5nZShlKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPXsnZXJyb3ItbWVzc2FnZSd9PjwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZCBmaWVsZC0tcmVhZG9ubHlcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmVtYWlsJyl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICByZWFkT25seT17dHJ1ZX1cbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXktaW5wdXRcIlxuICAgICAgICAgICAgICAgIG5hbWU9eydlbWFpbCd9XG4gICAgICAgICAgICAgICAgdmFsdWU9e3BhcmFtcy5lbWFpbH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPXsnZXJyb3ItbWVzc2FnZSd9PjwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUucGhvbmUnKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxQaG9uZUlucHV0XG4gICAgICAgICAgICAgICAgY291bnRyeT17J2lsJ31cbiAgICAgICAgICAgICAgICBsb2NhbGl6YXRpb249e2kxOG4udCgnY291bnRyaWVzJyl9XG4gICAgICAgICAgICAgICAgaW5wdXRDbGFzcz1cInBob25lLWlucHV0XCJcbiAgICAgICAgICAgICAgICBjb250YWluZXJDbGFzcz1cIm15LXBob25lXCJcbiAgICAgICAgICAgICAgICBidXR0b25DbGFzcz1cImRyb3Bkb3duXCJcbiAgICAgICAgICAgICAgICBkcm9wZG93bkNsYXNzPVwicGhvbmUtZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgIHZhbHVlPXtwYXJhbXMucGhvbmV9XG4gICAgICAgICAgICAgICAgZW5hYmxlU2VhcmNoXG4gICAgICAgICAgICAgICAgc2VhcmNoUGxhY2Vob2xkZXI9e2kxOG4udCgnc2VhcmNoJyl9XG4gICAgICAgICAgICAgICAgY291bnRyeUNvZGVFZGl0YWJsZT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgaGFuZGxlT25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgaW5wdXRQcm9wcz17eyBuYW1lOiAncGhvbmUnIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT17J2Vycm9yLW1lc3NhZ2UnfT48L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIHtkZXBhcnRtZW50c1swXS52YWx1ZSAhPT0gJycgJiYgKFxuICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuZGVwYXJ0bWVudCcpfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm15LWlucHV0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZT17c2V0RGVwYXJ0bWVudH1cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGkxOG4udChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYGRhc2hib2FyZF92Mi5wcm9maWxlLmRlcGFydG1lbnRzLiR7ZGVwYXJ0bWVudD8ubGFiZWx9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZGVwYXJ0bWVudD8udmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPXtkZXBhcnRtZW50c31cbiAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxUZXh0V2lkdGhcbiAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IGRlcGFydG1lbnRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25fa2V5OiAnZGFzaGJvYXJkX3YyLnByb2ZpbGUuZGVwYXJ0bWVudHMnLFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmJ1c2luZXNzX3JvbGUnKX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteS1pbnB1dFwiPlxuICAgICAgICAgICAgICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWU9e3NldEJ1c2luZXNzUm9sZX1cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGkxOG4udChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYGRhc2hib2FyZF92Mi5wcm9maWxlLmJ1c2luZXNzX3JvbGVzLiR7YnVzaW5lc3NSb2xlPy5sYWJlbH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBidXNpbmVzc1JvbGU/LnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz17YnVzaW5lc3NSb2xlc31cbiAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxUZXh0V2lkdGhcbiAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IGJ1c2luZXNzUm9sZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbl9rZXk6ICdkYXNoYm9hcmRfdjIucHJvZmlsZS5idXNpbmVzc19yb2xlcycsXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7ZGVwYXJ0bWVudHNbMF0udmFsdWUgIT09ICcnICYmIChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BmaWVsZCAke1xuICAgICAgICAgICAgICAgICAgICBkZXBhcnRtZW50ICYmXG4gICAgICAgICAgICAgICAgICAgIGRlcGFydG1lbnQ/LnZhbHVlID09PVxuICAgICAgICAgICAgICAgICAgICAgIGRlcGFydG1lbnRzW2RlcGFydG1lbnRzLmxlbmd0aCAtIDFdLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgPyAnJ1xuICAgICAgICAgICAgICAgICAgICAgIDogJ2ZpZWxkLS1oaWRkZW4nXG4gICAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmRlcGFydG1lbnRfYWx0Jyl9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICByZWFkT25seT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXktaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPXsnb3RoZXJfZGVwYXJ0bWVudF9uYW1lJ31cbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3BhcmFtcy5vdGhlcl9kZXBhcnRtZW50X25hbWV9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlRGVwYXJ0bWVudENoYW5nZShlKX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgZmllbGQgJHtcbiAgICAgICAgICAgICAgICAgICAgYnVzaW5lc3NSb2xlICYmXG4gICAgICAgICAgICAgICAgICAgIGJ1c2luZXNzUm9sZT8udmFsdWUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgYnVzaW5lc3NSb2xlc1tidXNpbmVzc1JvbGVzLmxlbmd0aCAtIDFdLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgPyAnJ1xuICAgICAgICAgICAgICAgICAgICAgIDogJ2ZpZWxkLS1oaWRkZW4nXG4gICAgICAgICAgICAgICAgICB9IGB9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5idXNpbmVzc19yb2xlX2FsdCcpfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgcmVhZE9ubHk9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm15LWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT17J290aGVyX2J1c2luZXNzX3JvbGVfbmFtZSd9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtwYXJhbXMub3RoZXJfYnVzaW5lc3Nfcm9sZV9uYW1lfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZUJ1c2luZXNzUm9sZUNoYW5nZShlKX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImNoYW5nZS1wYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U2hvd1Bhc3N3b3JkTW9kYWwodHJ1ZSl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8UGVuU3ZnIHdpZHRoPVwiMTJweFwiIGhlaWdodD1cIjEycHhcIiBmaWxsPVwiI2YwMTM0Y1wiIC8+XG4gICAgICAgICAgICAgICAgeycgICd9XG4gICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuY2hhbmdlLXBhc3N3b3JkJyl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGl0bGVcIj57aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5zZXR0aW5ncycpfTwvZGl2PlxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzTmFtZT1cInNldHRpbmdzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS50aW1lLXpvbmUnKX0qXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm15LWlucHV0XCI+XG4gICAgICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICAgICAgc2V0VmFsdWU9e3NldFRpbWV6b25lfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e3RpbWV6b25lfVxuICAgICAgICAgICAgICAgICAgb3B0aW9ucz17dGltZXpvbmVzfVxuICAgICAgICAgICAgICAgICAgY2FuY2VsVGV4dFdpZHRoXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmRhdGUtdGltZS1mb3JtYXQnKX0qXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm15LWlucHV0XCI+XG4gICAgICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICAgICAgb3B0aW9ucz17ZGF0ZVRpbWVGb3JtYXRPcHRpb25zfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e2RhdGVUaW1lRm9ybWF0fVxuICAgICAgICAgICAgICAgICAgc2V0VmFsdWU9e3NldERhdGVUaW1lRm9ybWF0fVxuICAgICAgICAgICAgICAgICAgY2FuY2VsVGV4dFdpZHRoXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZGF0ZS10aW1lLWZvcm1hdCd9PlxuICAgICAgICAgICAgICAgIHtkYXRlVGltZUZvcm1hdCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICBuZXcgRGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZygnZW4tVVMnLCBkYXRlVGltZUZvcm1hdC5mb3JtYXQpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUubGFuZ3VhZ2UnKX0qXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J215LWlucHV0J30+XG4gICAgICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICAgICAgb3B0aW9ucz17bG9jYWxlT3B0aW9uc31cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICBzZXRWYWx1ZT17c2V0TG9jYWxlfVxuICAgICAgICAgICAgICAgICAgY2FuY2VsVGV4dFdpZHRoXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLnRlbXBlcmF0dXJlX3VuaXRzJyl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J215LWlucHV0J30+XG4gICAgICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICAgICAgb3B0aW9ucz17dGVtcGVyYXR1cmVVbml0T3B0aW9uc31cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXt0ZW1wZXJhdHVyZVVuaXR9XG4gICAgICAgICAgICAgICAgICBzZXRWYWx1ZT17c2V0VGVtcGVyYXR1cmVVbml0fVxuICAgICAgICAgICAgICAgICAgY2FuY2VsVGV4dFdpZHRoXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGQgZmllbGQtLWJ1dHRvbnNcIj5cbiAgICAgICAgICAgICAge3BhcmFtcy50ZWxlZ3JhbV9uYW1lID09PSAnJyAmJiAoXG4gICAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPVwidGVsZWdyYW1cIiBvbkNsaWNrPXsoKSA9PiBzZXRJc1RlbGVncmFtT3Blbih0cnVlKX0+XG4gICAgICAgICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5jb25uZWN0LXRvLXRlbGVncmFtJyl9XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7cGFyYW1zLnRlbGVncmFtX25hbWUgIT09ICcnICYmIChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUudGVsZWdyYW1fbmFtZScpfVxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzVGVsZWdyYW1PcGVuKHRydWUpfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQZW5Tdmcgd2lkdGg9XCIxMnB4XCIgaGVpZ2h0PVwiMTJweFwiIGZpbGw9XCIjZjAxMzRjXCIgLz57JyAnfVxuICAgICAgICAgICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuY2hhbmdlLW5hbWUnKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsndGVsZWdyYW0tZXhpc3RpbmctaW5wdXQnfT5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRPbmx5PXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXktaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT17J3RlbGVncmFtX25hbWUnfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3BhcmFtcy50ZWxlZ3JhbV9uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsndGVsZWdyYW0tZXhpc3RpbmctaW5wdXRfX2NhbmNlbC1idXR0b24nfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UGFyYW1zKChwcmV2U3RhdGUpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbGVncmFtX25hbWU6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDYW5jZWwgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT17J2Vycm9yLW1lc3NhZ2UnfT48L3A+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsndGVsZWdyYW0gb3Blbid9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXhpb3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldChgL3RlbGVncmFtL3NlbmRfdGVzdF9tZXNzYWdlLmpzb25gKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbigocmVzcCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNob3dUZWxlZ3JhbVJlc3BvbnNlTWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3AuZGF0YS5zdGF0dXNbMF0udG9VcHBlckNhc2UoKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3AuZGF0YS5zdGF0dXMuc3Vic3RyaW5nKDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogcmVzcC5kYXRhLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2hvd1RlbGVncmFtUmVzcG9uc2VNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3c6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgNjAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1RvYXN0KHJlc3AuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IGFsZXJ0KGVycm9yKSk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHshc2hvd1RlbGVncmFtUmVzcG9uc2VNZXNzYWdlLnNob3cgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGkxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuc2VuZF90ZWxlZ3JhbV9tZXNzYWdlJyl9XG4gICAgICAgICAgICAgICAgICAgICAge3Nob3dUZWxlZ3JhbVJlc3BvbnNlTWVzc2FnZS5zaG93ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93VGVsZWdyYW1SZXNwb25zZU1lc3NhZ2Uuc3RhdHVzfVxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuZmxvd19yYXRlX3VuaXRzJyl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J215LWlucHV0J30+XG4gICAgICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICAgICAgb3B0aW9ucz17Zmxvd1JhdGVVbml0T3B0aW9uc31cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtmbG93UmF0ZVVuaXR9XG4gICAgICAgICAgICAgICAgICBzZXRWYWx1ZT17c2V0Rmxvd1JhdGVVbml0fVxuICAgICAgICAgICAgICAgICAgY2FuY2VsVGV4dFdpZHRoXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPXsnc3VibWl0J30gY2xhc3NOYW1lPXsnc2F2ZSd9IGRpc2FibGVkPXtzdWJtaXR0aW5nfT5cbiAgICAgICAgICAgIHshc3VibWl0dGluZyAmJlxuICAgICAgICAgICAgICAhc2hvd1N1Y2Nlc3NNZXNzYWdlICYmXG4gICAgICAgICAgICAgICFzaG93RXJyb3JNZXNzYWdlICYmXG4gICAgICAgICAgICAgIGkxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuc3VibWl0Jyl9XG4gICAgICAgICAgICB7c3VibWl0dGluZyAmJlxuICAgICAgICAgICAgICAhc2hvd1N1Y2Nlc3NNZXNzYWdlICYmXG4gICAgICAgICAgICAgICFzaG93RXJyb3JNZXNzYWdlICYmXG4gICAgICAgICAgICAgIGkxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuc3VibWl0dGluZycpfVxuICAgICAgICAgICAge3Nob3dTdWNjZXNzTWVzc2FnZSAmJiBpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLnN1Y2Nlc3MnKX1cbiAgICAgICAgICAgIHtzaG93RXJyb3JNZXNzYWdlICYmIGkxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuZXJyb3InKX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Zvcm0+XG5cbiAgICAgIHtzaG93UGFzc3dvcmRNb2RhbCAmJiAoXG4gICAgICAgIDxQYXNzd29yZE1vZGFsXG4gICAgICAgICAgY2xvc2U9eygpID0+IHNldFNob3dQYXNzd29yZE1vZGFsKGZhbHNlKX1cbiAgICAgICAgICBzYXZlPXsoKSA9PiB7fX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICB7aXNUZWxlZ3JhbU9wZW4gJiYgKFxuICAgICAgICA8VGVsZWdyYW1Nb2RhbFxuICAgICAgICAgIGNsb3NlPXsoKSA9PiBzZXRJc1RlbGVncmFtT3BlbihmYWxzZSl9XG4gICAgICAgICAgaGFuZGxlT25DaGFuZ2U9e2hhbmRsZU9uQ2hhbmdlfVxuICAgICAgICAgIGhhbmRsZVN1Ym1pdD17aGFuZGxlU3VibWl0fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L0NvbnRhaW5lcj5cbiAgKTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsS0FBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksY0FBQSxHQUFBSixPQUFBO0FBQThELElBQUFLLElBQUEsR0FBQUwsT0FBQTtBQUFBLElBQUFNLE9BQUEsR0FBQU4sT0FBQTtBQUc5RCxJQUFBTyxnQkFBQSxHQUFBSixzQkFBQSxDQUFBSCxPQUFBO0FBQ0FBLE9BQUE7QUFDQSxJQUFBUSxjQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxNQUFBLEdBQUFOLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBVSxVQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxlQUFBLEdBQUFSLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBWSxVQUFBLEdBQUFaLE9BQUE7QUFDQSxJQUFBYSxXQUFBLEdBQUFiLE9BQUE7QUFDQSxJQUFBYyxjQUFBLEdBQUFkLE9BQUE7QUFDQSxJQUFBZSxpQkFBQSxHQUFBZixPQUFBO0FBQTBFLFNBQUFnQix5QkFBQUMsV0FBQSxlQUFBQyxPQUFBLGtDQUFBQyxpQkFBQSxPQUFBRCxPQUFBLFFBQUFFLGdCQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLFdBQUEsV0FBQUEsV0FBQSxHQUFBRyxnQkFBQSxHQUFBRCxpQkFBQSxLQUFBRixXQUFBO0FBQUEsU0FBQWxCLHdCQUFBc0IsR0FBQSxFQUFBSixXQUFBLFNBQUFBLFdBQUEsSUFBQUksR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsV0FBQUQsR0FBQSxRQUFBQSxHQUFBLGFBQUFFLE9BQUEsQ0FBQUYsR0FBQSx5QkFBQUEsR0FBQSw0QkFBQUcsT0FBQSxFQUFBSCxHQUFBLFVBQUFJLEtBQUEsR0FBQVQsd0JBQUEsQ0FBQUMsV0FBQSxPQUFBUSxLQUFBLElBQUFBLEtBQUEsQ0FBQUMsR0FBQSxDQUFBTCxHQUFBLFlBQUFJLEtBQUEsQ0FBQUUsR0FBQSxDQUFBTixHQUFBLFNBQUFPLE1BQUEsV0FBQUMscUJBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsR0FBQSxJQUFBWixHQUFBLFFBQUFZLEdBQUEsa0JBQUFILE1BQUEsQ0FBQUksU0FBQSxDQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQWYsR0FBQSxFQUFBWSxHQUFBLFNBQUFJLElBQUEsR0FBQVIscUJBQUEsR0FBQUMsTUFBQSxDQUFBRSx3QkFBQSxDQUFBWCxHQUFBLEVBQUFZLEdBQUEsY0FBQUksSUFBQSxLQUFBQSxJQUFBLENBQUFWLEdBQUEsSUFBQVUsSUFBQSxDQUFBQyxHQUFBLEtBQUFSLE1BQUEsQ0FBQUMsY0FBQSxDQUFBSCxNQUFBLEVBQUFLLEdBQUEsRUFBQUksSUFBQSxZQUFBVCxNQUFBLENBQUFLLEdBQUEsSUFBQVosR0FBQSxDQUFBWSxHQUFBLFNBQUFMLE1BQUEsQ0FBQUosT0FBQSxHQUFBSCxHQUFBLE1BQUFJLEtBQUEsSUFBQUEsS0FBQSxDQUFBYSxHQUFBLENBQUFqQixHQUFBLEVBQUFPLE1BQUEsWUFBQUEsTUFBQTtBQUVuRSxJQUFNVyxXQUFXLEdBQUcsU0FBZEEsV0FBV0EsQ0FBQSxFQUFTO0VBQy9CLElBQU1DLGNBQWMsR0FBR0MsdUJBQU0sQ0FBQ0MsRUFBRSxDQUFDQyxLQUFLLENBQUMsQ0FBQztFQUN4QyxJQUFNQyxxQkFBcUIsR0FBRyxDQUM1QjtJQUNFQyxLQUFLLEVBQUUsSUFBSTtJQUNYQyxLQUFLLEVBQUUsZUFBZTtJQUN0QkMsTUFBTSxFQUFFO01BQ05DLEtBQUssRUFBRSxPQUFPO01BQ2RDLEdBQUcsRUFBRSxTQUFTO01BQ2RDLElBQUksRUFBRSxTQUFTO01BQ2ZDLElBQUksRUFBRSxTQUFTO01BQ2ZDLE1BQU0sRUFBRTtJQUNWO0VBQ0YsQ0FBQyxFQUNEO0lBQ0VQLEtBQUssRUFBRSxJQUFJO0lBQ1hDLEtBQUssRUFBRSxRQUFRO0lBQ2ZDLE1BQU0sRUFBRTtNQUNORSxHQUFHLEVBQUUsU0FBUztNQUNkRCxLQUFLLEVBQUUsU0FBUztNQUNoQkUsSUFBSSxFQUFFLFNBQVM7TUFDZkMsSUFBSSxFQUFFLFNBQVM7TUFDZkMsTUFBTSxFQUFFLFNBQVM7TUFDakJDLE1BQU0sRUFBRTtJQUNWO0VBQ0YsQ0FBQyxDQUNGO0VBRUQsSUFBTUMsU0FBUyxHQUFHZCxjQUFjLENBQUNlLEdBQUcsQ0FBQyxVQUFDQyxDQUFDLEVBQUs7SUFDMUMsT0FBTztNQUFFWCxLQUFLLEVBQUVXLENBQUM7TUFBRVYsS0FBSyxFQUFFVTtJQUFFLENBQUM7RUFDL0IsQ0FBQyxDQUFDO0VBRUYsSUFBTUMsYUFBYSxHQUFHLENBQ3BCO0lBQUVaLEtBQUssRUFBRSxJQUFJO0lBQUVDLEtBQUssRUFBRTtFQUFVLENBQUMsRUFDakM7SUFBRUQsS0FBSyxFQUFFLE9BQU87SUFBRUMsS0FBSyxFQUFFO0VBQWUsQ0FBQyxFQUN6QztJQUFFRCxLQUFLLEVBQUUsSUFBSTtJQUFFQyxLQUFLLEVBQUU7RUFBUSxDQUFDLEVBQy9CO0lBQUVELEtBQUssRUFBRSxJQUFJO0lBQUVDLEtBQUssRUFBRTtFQUFXLENBQUMsRUFDbEM7SUFBRUQsS0FBSyxFQUFFLElBQUk7SUFBRUMsS0FBSyxFQUFFO0VBQVcsQ0FBQyxDQUNuQztFQUVELElBQU1ZLG1CQUFtQixHQUFHLENBQzFCO0lBQ0ViLEtBQUssRUFBRSxPQUFPO0lBQ2RDLEtBQUssRUFBRWEsYUFBSSxDQUFDSCxDQUFDLENBQUMsbURBQW1EO0VBQ25FLENBQUMsRUFDRDtJQUNFWCxLQUFLLEVBQUUsT0FBTztJQUNkQyxLQUFLLEVBQUVhLGFBQUksQ0FBQ0gsQ0FBQyxDQUFDLG1EQUFtRDtFQUNuRSxDQUFDLEVBQ0Q7SUFDRVgsS0FBSyxFQUFFLEtBQUs7SUFDWkMsS0FBSyxFQUFFYSxhQUFJLENBQUNILENBQUMsQ0FBQyxpREFBaUQ7RUFDakUsQ0FBQyxDQUNGO0VBRUQsSUFBTUksc0JBQXNCLEdBQUcsQ0FDN0I7SUFDRWYsS0FBSyxFQUFFLFNBQVM7SUFDaEJDLEtBQUssRUFBRWEsYUFBSSxDQUFDSCxDQUFDLENBQUMsdURBQXVEO0VBQ3ZFLENBQUMsRUFDRDtJQUNFWCxLQUFLLEVBQUUsWUFBWTtJQUNuQkMsS0FBSyxFQUFFYSxhQUFJLENBQUNILENBQUMsQ0FBQywwREFBMEQ7RUFDMUUsQ0FBQyxDQUNGO0VBRUQsSUFBQUssU0FBQSxHQUE0QixJQUFBQyxlQUFRLEVBR2pDTCxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFBQU0sVUFBQSxPQUFBQyxlQUFBLENBQUF4QyxPQUFBLEVBQUFxQyxTQUFBO0lBSGJJLE1BQU0sR0FBQUYsVUFBQTtJQUFFRyxTQUFTLEdBQUFILFVBQUE7RUFLeEIsSUFBQUksVUFBQSxHQUF3QyxJQUFBTCxlQUFRLEVBRzdDSixtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUFBVSxVQUFBLE9BQUFKLGVBQUEsQ0FBQXhDLE9BQUEsRUFBQTJDLFVBQUE7SUFIbkJFLFlBQVksR0FBQUQsVUFBQTtJQUFFRSxlQUFlLEdBQUFGLFVBQUE7RUFLcEMsSUFBQUcsVUFBQSxHQUE4QyxJQUFBVCxlQUFRLEVBR25ERixzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUFBWSxVQUFBLE9BQUFSLGVBQUEsQ0FBQXhDLE9BQUEsRUFBQStDLFVBQUE7SUFIdEJFLGVBQWUsR0FBQUQsVUFBQTtJQUFFRSxrQkFBa0IsR0FBQUYsVUFBQTtFQUsxQyxJQUFBRyxVQUFBLEdBQTRDLElBQUFiLGVBQVEsRUFJakRsQixxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUFBZ0MsVUFBQSxPQUFBWixlQUFBLENBQUF4QyxPQUFBLEVBQUFtRCxVQUFBO0lBSnJCRSxjQUFjLEdBQUFELFVBQUE7SUFBRUUsaUJBQWlCLEdBQUFGLFVBQUE7RUFNeEMsSUFBQUcsVUFBQSxHQUFnQyxJQUFBakIsZUFBUSxFQUdyQ1IsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQUEwQixXQUFBLE9BQUFoQixlQUFBLENBQUF4QyxPQUFBLEVBQUF1RCxVQUFBO0lBSFZFLFFBQVEsR0FBQUQsV0FBQTtJQUFFRSxXQUFXLEdBQUFGLFdBQUE7RUFLNUIsSUFBQUcsV0FBQSxHQUFzQyxJQUFBckIsZUFBUSxFQUs1QyxDQUFDO01BQUVqQixLQUFLLEVBQUUsRUFBRTtNQUFFQyxLQUFLLEVBQUU7SUFBRyxDQUFDLENBQUMsQ0FBQztJQUFBc0MsV0FBQSxPQUFBcEIsZUFBQSxDQUFBeEMsT0FBQSxFQUFBMkQsV0FBQTtJQUx0QkUsV0FBVyxHQUFBRCxXQUFBO0lBQUVFLGNBQWMsR0FBQUYsV0FBQTtFQU9sQyxJQUFBRyxXQUFBLEdBQTBDLElBQUF6QixlQUFRLEVBS2hELENBQUM7TUFBRWpCLEtBQUssRUFBRSxFQUFFO01BQUVDLEtBQUssRUFBRTtJQUFHLENBQUMsQ0FBQyxDQUFDO0lBQUEwQyxXQUFBLE9BQUF4QixlQUFBLENBQUF4QyxPQUFBLEVBQUErRCxXQUFBO0lBTHRCRSxhQUFhLEdBQUFELFdBQUE7SUFBRUUsZ0JBQWdCLEdBQUFGLFdBQUE7RUFPdEMsSUFBQUcsV0FBQSxHQUFvQyxJQUFBN0IsZUFBUSxFQUFNdUIsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQUFPLFdBQUEsT0FBQTVCLGVBQUEsQ0FBQXhDLE9BQUEsRUFBQW1FLFdBQUE7SUFBMURFLFVBQVUsR0FBQUQsV0FBQTtJQUFFRSxhQUFhLEdBQUFGLFdBQUE7RUFFaEMsSUFBQUcsV0FBQSxHQUF3QyxJQUFBakMsZUFBUSxFQUFNMkIsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQUFPLFdBQUEsT0FBQWhDLGVBQUEsQ0FBQXhDLE9BQUEsRUFBQXVFLFdBQUE7SUFBaEVFLFlBQVksR0FBQUQsV0FBQTtJQUFFRSxlQUFlLEdBQUFGLFdBQUE7RUFFcEMsSUFBTUcsa0JBQWtCLEdBQUc7SUFDekJDLFVBQVUsRUFBRSxFQUFFO0lBQ2RDLFNBQVMsRUFBRSxFQUFFO0lBQ2JDLEtBQUssRUFBRSxFQUFFO0lBQ1RDLEtBQUssRUFBRSxFQUFFO0lBQ1RDLFNBQVMsRUFBRSxFQUFFO0lBQ2JDLGdCQUFnQixFQUFFLEVBQUU7SUFDcEJ4QyxNQUFNLEVBQUUsRUFBRTtJQUNWeUMsYUFBYSxFQUFFLEVBQUU7SUFDakJDLHdCQUF3QixFQUFFLEVBQUU7SUFDNUJDLHFCQUFxQixFQUFFLEVBQUU7SUFDekJDLGFBQWEsRUFBRSxFQUFFO0lBQ2pCaEIsVUFBVSxFQUFFLEVBQUU7SUFDZGlCLGNBQWMsRUFBRSxFQUFFO0lBQ2xCQyxnQkFBZ0IsRUFBRTtFQUNwQixDQUFDO0VBRUQsSUFBQUMsV0FBQSxHQUE0QyxJQUFBbEQsZUFBUSxFQUFVLEtBQUssQ0FBQztJQUFBbUQsV0FBQSxPQUFBakQsZUFBQSxDQUFBeEMsT0FBQSxFQUFBd0YsV0FBQTtJQUE3REUsY0FBYyxHQUFBRCxXQUFBO0lBQUVFLGlCQUFpQixHQUFBRixXQUFBO0VBQ3hDLElBQUFHLFdBQUEsR0FBa0QsSUFBQXRELGVBQVEsRUFBVSxLQUFLLENBQUM7SUFBQXVELFdBQUEsT0FBQXJELGVBQUEsQ0FBQXhDLE9BQUEsRUFBQTRGLFdBQUE7SUFBbkVFLGlCQUFpQixHQUFBRCxXQUFBO0lBQUVFLG9CQUFvQixHQUFBRixXQUFBO0VBQzlDLElBQUFHLFdBQUEsR0FBb0MsSUFBQTFELGVBQVEsRUFBVSxLQUFLLENBQUM7SUFBQTJELFdBQUEsT0FBQXpELGVBQUEsQ0FBQXhDLE9BQUEsRUFBQWdHLFdBQUE7SUFBckRFLFVBQVUsR0FBQUQsV0FBQTtJQUFFRSxhQUFhLEdBQUFGLFdBQUE7RUFDaEMsSUFBQUcsV0FBQSxHQUFvRCxJQUFBOUQsZUFBUSxFQUFVLEtBQUssQ0FBQztJQUFBK0QsV0FBQSxPQUFBN0QsZUFBQSxDQUFBeEMsT0FBQSxFQUFBb0csV0FBQTtJQUFyRUUsa0JBQWtCLEdBQUFELFdBQUE7SUFBRUUscUJBQXFCLEdBQUFGLFdBQUE7RUFDaEQsSUFBQUcsV0FBQSxHQUFnRCxJQUFBbEUsZUFBUSxFQUFVLEtBQUssQ0FBQztJQUFBbUUsV0FBQSxPQUFBakUsZUFBQSxDQUFBeEMsT0FBQSxFQUFBd0csV0FBQTtJQUFqRUUsZ0JBQWdCLEdBQUFELFdBQUE7SUFBRUUsbUJBQW1CLEdBQUFGLFdBQUE7RUFDNUMsSUFBQUcsV0FBQSxHQUNFLElBQUF0RSxlQUFRLEVBSUw7TUFDRHVFLElBQUksRUFBRSxLQUFLO01BQ1hDLE1BQU0sRUFBRSxFQUFFO01BQ1ZDLE9BQU8sRUFBRTtJQUNYLENBQUMsQ0FBQztJQUFBQyxXQUFBLE9BQUF4RSxlQUFBLENBQUF4QyxPQUFBLEVBQUE0RyxXQUFBO0lBVEdLLDJCQUEyQixHQUFBRCxXQUFBO0lBQUVFLDhCQUE4QixHQUFBRixXQUFBO0VBVWxFLElBQUFHLFdBQUEsR0FBNEIsSUFBQTdFLGVBQVEsRUFZakNxQyxrQkFBa0IsQ0FBQztJQUFBeUMsV0FBQSxPQUFBNUUsZUFBQSxDQUFBeEMsT0FBQSxFQUFBbUgsV0FBQTtJQVpmRSxNQUFNLEdBQUFELFdBQUE7SUFBRUUsU0FBUyxHQUFBRixXQUFBO0VBY3hCLElBQU1HLGNBQWMsR0FBRyxTQUFqQkEsY0FBY0EsQ0FBSUMsQ0FBQyxFQUFLO0lBQzVCLElBQUksT0FBT0EsQ0FBQyxLQUFLLFFBQVEsRUFBRTtNQUN6QixJQUFJQSxDQUFDLENBQUNDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUN4QkQsQ0FBQyxHQUFHQSxDQUFDLENBQUNFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDO01BQ2pDO01BQ0FKLFNBQVMsQ0FBQyxVQUFDSyxTQUFTO1FBQUEsV0FBQUMsY0FBQSxDQUFBNUgsT0FBQSxNQUFBNEgsY0FBQSxDQUFBNUgsT0FBQSxNQUNmMkgsU0FBUztVQUNaN0MsS0FBSyxFQUFFMEM7UUFBQztNQUFBLENBQ1IsQ0FBQztJQUNMLENBQUMsTUFBTTtNQUNMLElBQUFLLFNBQUEsR0FBd0JMLENBQUMsQ0FBQ00sTUFBTTtRQUF4QnpHLEtBQUssR0FBQXdHLFNBQUEsQ0FBTHhHLEtBQUs7UUFBRTBHLElBQUksR0FBQUYsU0FBQSxDQUFKRSxJQUFJO01BQ25CVCxTQUFTLENBQUMsVUFBQ0ssU0FBUztRQUFBLFdBQUFDLGNBQUEsQ0FBQTVILE9BQUEsTUFBQTRILGNBQUEsQ0FBQTVILE9BQUEsTUFDZjJILFNBQVMsV0FBQUssZ0JBQUEsQ0FBQWhJLE9BQUEsTUFDWCtILElBQUksRUFBRzFHLEtBQUs7TUFBQSxDQUNiLENBQUM7SUFDTDtFQUNGLENBQUM7RUFFRCxJQUFNNEcsd0JBQXdCLEdBQUcsU0FBM0JBLHdCQUF3QkEsQ0FBSVQsQ0FBQyxFQUFLO0lBQ3RDLElBQUlBLENBQUMsQ0FBQ00sTUFBTSxLQUFLLElBQUksRUFBRTtNQUNyQlIsU0FBUyxLQUFBTSxjQUFBLENBQUE1SCxPQUFBLE1BQUE0SCxjQUFBLENBQUE1SCxPQUFBLE1BQ0pxSCxNQUFNO1FBQ1RoQyxhQUFhLEVBQUVtQyxDQUFDLENBQUNuRyxLQUFLO1FBQ3RCOEQsd0JBQXdCLEVBQUVxQyxDQUFDLENBQUNNLE1BQU0sQ0FBQ3pHO01BQUssRUFDekMsQ0FBQztJQUNKO0VBQ0YsQ0FBQztFQUVELElBQU02RyxzQkFBc0IsR0FBRyxTQUF6QkEsc0JBQXNCQSxDQUFJVixDQUFDLEVBQUs7SUFDcEMsSUFBSUEsQ0FBQyxDQUFDTSxNQUFNLEtBQUssSUFBSSxFQUFFO01BQ3JCUixTQUFTLEtBQUFNLGNBQUEsQ0FBQTVILE9BQUEsTUFBQTRILGNBQUEsQ0FBQTVILE9BQUEsTUFDSnFILE1BQU07UUFDVGhELFVBQVUsRUFBRW1ELENBQUMsQ0FBQ25HLEtBQUs7UUFDbkIrRCxxQkFBcUIsRUFBRW9DLENBQUMsQ0FBQ00sTUFBTSxDQUFDekc7TUFBSyxFQUN0QyxDQUFDO0lBQ0o7RUFDRixDQUFDO0VBRUQsSUFBTThHLDZCQUE2QixHQUFHLFNBQWhDQSw2QkFBNkJBLENBQUEsRUFBUztJQUMxQyxXQUFBUCxjQUFBLENBQUE1SCxPQUFBLE1BQUE0SCxjQUFBLENBQUE1SCxPQUFBLE1BQ0txSCxNQUFNO01BQ1RwQyxnQkFBZ0IsRUFBRTVCLGNBQWMsQ0FBQ2hDLEtBQUs7TUFDdENvQixNQUFNLEVBQUVBLE1BQU0sQ0FBQ3BCLEtBQUs7TUFDcEIyRCxTQUFTLEVBQUV2QixRQUFRLENBQUNwQyxLQUFLO01BQ3pCK0csYUFBYSxFQUFFL0QsVUFBVSxLQUFLZ0UsU0FBUyxHQUFHLElBQUksR0FBR2hFLFVBQVUsQ0FBQ2hELEtBQUs7TUFDakVpSCxnQkFBZ0IsRUFBRTdELFlBQVksS0FBSzRELFNBQVMsR0FBRyxJQUFJLEdBQUc1RCxZQUFZLENBQUNwRCxLQUFLO01BQ3hFaUUsY0FBYyxFQUFFekMsWUFBWSxDQUFDeEIsS0FBSztNQUNsQ2tFLGdCQUFnQixFQUFFdEMsZUFBZSxDQUFDNUI7SUFBSztFQUUzQyxDQUFDO0VBRUQsSUFBTWtILGtCQUFrQixHQUFHLElBQUFDLHVCQUFXLEVBQ3BDLFVBQUNDLEtBQUs7SUFBQSxPQUFLQSxLQUFLLENBQUNDLFdBQVcsQ0FBQ0gsa0JBQWtCO0VBQUEsQ0FDakQsQ0FBQztFQUVELElBQU1JLFNBQVMsR0FBRyxTQUFaQSxTQUFTQSxDQUFJQyxJQUFJLEVBQUs7SUFDMUIsSUFBTUMsUUFBUSxHQUFHRCxJQUFJLENBQUNDLFFBQVE7SUFDOUIsSUFBTUMsS0FBSyxHQUFHRixJQUFJLENBQUNFLEtBQUs7SUFDeEIsSUFBSUYsSUFBSSxDQUFDOUIsTUFBTSxLQUFLLFNBQVMsRUFBRTtNQUM3QmlDLG9CQUFLLENBQUNDLE9BQU8sQ0FDWDdHLGFBQUksQ0FBQ0gsQ0FBQyxxQ0FBQWlILE1BQUEsQ0FBcUNMLElBQUksQ0FBQzdCLE9BQU8sR0FBSTtRQUN6RDhCLFFBQVEsRUFBUkE7TUFDRixDQUFDLENBQUMsRUFDRjtRQUNFSyxRQUFRLEVBQUU7TUFDWixDQUNGLENBQUM7SUFDSCxDQUFDLE1BQU07TUFDTEgsb0JBQUssQ0FBQ0QsS0FBSyxDQUNUM0csYUFBSSxDQUFDSCxDQUFDLHFDQUFBaUgsTUFBQSxDQUFxQ0wsSUFBSSxDQUFDN0IsT0FBTyxHQUFJO1FBQ3pEK0IsS0FBSyxFQUFFQSxLQUFLO1FBQ1pELFFBQVEsRUFBRUE7TUFDWixDQUFDLENBQUMsRUFDRjtRQUNFSyxRQUFRLEVBQUU7TUFDWixDQUNGLENBQUM7SUFDSDtFQUNGLENBQUM7RUFFRCxJQUFNQyxRQUFRLEdBQUcsSUFBQUMsdUJBQVcsRUFBQyxDQUFDO0VBRTlCLElBQU1DLFlBQVksR0FBRyxTQUFmQSxZQUFZQSxDQUFJN0IsQ0FBQyxFQUFLO0lBQzFCQSxDQUFDLENBQUM4QixjQUFjLENBQUMsQ0FBQztJQUNsQm5ELGFBQWEsQ0FBQyxJQUFJLENBQUM7SUFDbkJvRCxjQUFLLENBQ0ZDLEdBQUcsQ0FBQyxXQUFXLEVBQUU7TUFBRUMsSUFBSSxFQUFFdEIsNkJBQTZCLENBQUM7SUFBRSxDQUFDLENBQUMsQ0FDM0R1QixJQUFJLENBQUMsVUFBQ0MsSUFBSSxFQUFLO01BQ2QsSUFBSUEsSUFBSSxDQUFDZixJQUFJLENBQUNnQixNQUFNLEtBQUssSUFBSSxFQUFFO1FBQzdCVCxRQUFRLENBQ05VLGtDQUFnQixDQUFDQyxPQUFPLENBQUNDLFdBQVcsQ0FBQ0MsSUFBSSxDQUFDQyxLQUFLLENBQUNOLElBQUksQ0FBQ2YsSUFBSSxDQUFDYSxJQUFJLENBQUMsQ0FDakUsQ0FBQztRQUVEUyxRQUFRLENBQ0xDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLENBQ2xDQyxPQUFPLENBQUMsVUFBQ0MsQ0FBQztVQUFBLE9BQU1BLENBQUMsQ0FBQ0MsU0FBUyxHQUFHLEVBQUU7UUFBQSxDQUFDLENBQUM7UUFFckNKLFFBQVEsQ0FDTEMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsQ0FDbENDLE9BQU8sQ0FBQyxVQUFDQyxDQUFDO1VBQUEsT0FBS0EsQ0FBQyxDQUFDRSxTQUFTLENBQUNDLE1BQU0sQ0FBQyxlQUFlLENBQUM7UUFBQSxFQUFDO1FBQ3RELElBQUlmLElBQUksR0FBR08sSUFBSSxDQUFDQyxLQUFLLENBQUNOLElBQUksQ0FBQ2YsSUFBSSxDQUFDYSxJQUFJLENBQUM7UUFDckMsSUFBTWdCLFVBQVUsR0FBR3hJLGFBQWEsQ0FBQ3lJLElBQUksQ0FBQyxVQUFDbEQsQ0FBQztVQUFBLE9BQUtBLENBQUMsQ0FBQ25HLEtBQUssS0FBS29JLElBQUksQ0FBQ2hILE1BQU07UUFBQSxFQUFDO1FBQ3JFLElBQU1rSSxnQkFBZ0IsR0FBR3pJLG1CQUFtQixDQUFDd0ksSUFBSSxDQUMvQyxVQUFDbEQsQ0FBQztVQUFBLE9BQUtBLENBQUMsQ0FBQ25HLEtBQUssS0FBS29JLElBQUksQ0FBQ25FLGNBQWM7UUFBQSxDQUN4QyxDQUFDO1FBQ0QsSUFBTXNGLG1CQUFtQixHQUFHeEksc0JBQXNCLENBQUNzSSxJQUFJLENBQ3JELFVBQUNsRCxDQUFDO1VBQUEsT0FBS0EsQ0FBQyxDQUFDbkcsS0FBSyxLQUFLb0ksSUFBSSxDQUFDbEUsZ0JBQWdCO1FBQUEsQ0FDMUMsQ0FBQztRQUNELElBQU1zRixrQkFBa0IsR0FBR3pKLHFCQUFxQixDQUFDc0osSUFBSSxDQUNuRCxVQUFDbEQsQ0FBQztVQUFBLE9BQUtBLENBQUMsQ0FBQ25HLEtBQUssS0FBS29JLElBQUksQ0FBQ3hFLGdCQUFnQjtRQUFBLENBQzFDLENBQUM7UUFDRCxJQUFNNkYsWUFBWSxHQUFHaEosU0FBUyxDQUFDNEksSUFBSSxDQUNqQyxVQUFDbEQsQ0FBQztVQUFBLE9BQUtBLENBQUMsQ0FBQ25HLEtBQUssS0FBS29JLElBQUksQ0FBQ3pFLFNBQVM7UUFBQSxDQUNuQyxDQUFDO1FBRURzQyxTQUFTLENBQUNtQyxJQUFJLENBQUM7UUFDZi9HLFNBQVMsQ0FBQytILFVBQVcsQ0FBQztRQUN0QjNILGVBQWUsQ0FBQzZILGdCQUFpQixDQUFDO1FBQ2xDekgsa0JBQWtCLENBQUMwSCxtQkFBb0IsQ0FBQztRQUN4Q3RILGlCQUFpQixDQUFDdUgsa0JBQW1CLENBQUM7UUFDdENuSCxXQUFXLENBQUNvSCxZQUFhLENBQUM7UUFDMUJ2RSxxQkFBcUIsQ0FBQyxJQUFJLENBQUM7UUFDM0J3RSxVQUFVLENBQUMsWUFBTTtVQUNmeEUscUJBQXFCLENBQUMsS0FBSyxDQUFDO1FBQzlCLENBQUMsRUFBRSxJQUFJLENBQUM7TUFDVixDQUFDLE1BQU07UUFDTDJELFFBQVEsQ0FDTEMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsQ0FDbENDLE9BQU8sQ0FBQyxVQUFDQyxDQUFDO1VBQUEsT0FBTUEsQ0FBQyxDQUFDQyxTQUFTLEdBQUcsRUFBRTtRQUFBLENBQUMsQ0FBQztRQUNyQyxJQUFJVixNQUFNLEdBQUdELElBQUksQ0FBQ2YsSUFBSSxDQUFDYSxJQUFJLENBQUNHLE1BQU07UUFDbEMsS0FBSyxJQUFNZCxLQUFLLElBQUljLE1BQU0sRUFBRTtVQUMxQixJQUFJb0IsV0FBVyxHQUFHZCxRQUFRLENBQUNlLGFBQWEsZ0JBQUFoQyxNQUFBLENBQWdCSCxLQUFLLE9BQUksQ0FBQztVQUNsRSxJQUFJb0MsTUFBTSxHQUFHRixXQUFXLENBQUVHLE9BQU8sQ0FBQyxRQUFRLENBQUM7VUFDM0MsSUFBSUMsU0FBUyxHQUFHRixNQUFNLENBQUVELGFBQWEsQ0FBQyxPQUFPLENBQUM7VUFDOUNHLFNBQVMsQ0FBRWIsU0FBUyxDQUFDYyxHQUFHLENBQUMsZUFBZSxDQUFDO1VBQ3pDSCxNQUFNLENBQUVELGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFFWCxTQUFTLEdBQUduSSxhQUFJLENBQUNILENBQUMsZ0NBQUFpSCxNQUFBLENBQzFCSCxLQUFLLENBQ3RDLENBQUM7UUFDSDtRQUNBdkMscUJBQXFCLENBQUMsS0FBSyxDQUFDO01BQzlCO01BRUFKLGFBQWEsQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQyxDQUFDLENBQ0RtRixLQUFLLENBQUMsVUFBQ3hDLEtBQUssRUFBSztNQUNoQm5DLG1CQUFtQixDQUFDLElBQUksQ0FBQztNQUN6QkoscUJBQXFCLENBQUMsS0FBSyxDQUFDO01BQzVCSixhQUFhLENBQUMsS0FBSyxDQUFDO01BQ3BCNEUsVUFBVSxDQUFDLFlBQU07UUFDZnBFLG1CQUFtQixDQUFDLEtBQUssQ0FBQztNQUM1QixDQUFDLEVBQUUsSUFBSSxDQUFDO0lBQ1YsQ0FBQyxDQUFDO0VBQ04sQ0FBQztFQUVELElBQUE0RSxnQkFBUyxFQUFDLFlBQU07SUFDZCxJQUFBQyx5QkFBYyxFQUFDLHFCQUFxQixFQUFFO01BQ3BDQyxZQUFZLEVBQUVsRDtJQUNoQixDQUFDLENBQUM7SUFDRjtJQUNBLElBQU1tRCxLQUFLLEdBQUd4QixRQUFRLENBQUNlLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFFVSxPQUFPO0lBQ2xFcEMsY0FBSyxDQUFDcUMsUUFBUSxDQUFDQyxPQUFPLENBQUNDLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBR0osS0FBSztJQUNyRG5DLGNBQUssQ0FBQ3FDLFFBQVEsQ0FBQ0MsT0FBTyxDQUFDQyxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsZ0JBQWdCO0lBQ2hFdkMsY0FBSyxDQUNGcEosR0FBRyxxQkFBcUIsQ0FBQyxDQUN6QnVKLElBQUksQ0FBQyxVQUFDQyxJQUFJLEVBQUs7TUFDZHJDLFNBQVMsQ0FBQ3FDLElBQUksQ0FBQ2YsSUFBSSxDQUFDYSxJQUFJLENBQUM7TUFDekIsSUFBTXNDLFlBQVksR0FBRyxTQUFmQSxZQUFZQSxDQUFJQyxNQUFNLEVBQUVDLFFBQVEsRUFBSztRQUN6QyxPQUFPRCxNQUFNLENBQUN0QixJQUFJLENBQUMsVUFBQ2xELENBQUM7VUFBQSxPQUFLQSxDQUFDLENBQUNuRyxLQUFLLEtBQUs0SyxRQUFRO1FBQUEsRUFBQztNQUNqRCxDQUFDO01BQ0R2SixTQUFTLENBQUNxSixZQUFZLENBQUM5SixhQUFhLEVBQUUwSCxJQUFJLENBQUNmLElBQUksQ0FBQ2EsSUFBSSxDQUFDaEgsTUFBTSxDQUFDLENBQUM7TUFDN0RLLGVBQWUsQ0FDYmlKLFlBQVksQ0FBQzdKLG1CQUFtQixFQUFFeUgsSUFBSSxDQUFDZixJQUFJLENBQUNhLElBQUksQ0FBQ25FLGNBQWMsQ0FDakUsQ0FBQztNQUNEcEMsa0JBQWtCLENBQ2hCNkksWUFBWSxDQUFDM0osc0JBQXNCLEVBQUV1SCxJQUFJLENBQUNmLElBQUksQ0FBQ2EsSUFBSSxDQUFDbEUsZ0JBQWdCLENBQ3RFLENBQUM7TUFDRGpDLGlCQUFpQixDQUNmeUksWUFBWSxDQUFDM0sscUJBQXFCLEVBQUV1SSxJQUFJLENBQUNmLElBQUksQ0FBQ2EsSUFBSSxDQUFDeEUsZ0JBQWdCLENBQ3JFLENBQUM7TUFDRHZCLFdBQVcsQ0FBQ3FJLFlBQVksQ0FBQ2pLLFNBQVMsRUFBRTZILElBQUksQ0FBQ2YsSUFBSSxDQUFDYSxJQUFJLENBQUN6RSxTQUFTLENBQUMsQ0FBQztNQUM5RE4sZUFBZSxDQUNicUgsWUFBWSxDQUNWcEMsSUFBSSxDQUFDZixJQUFJLENBQUNzRCxjQUFjLEVBQ3hCdkMsSUFBSSxDQUFDZixJQUFJLENBQUNhLElBQUksQ0FBQ25CLGdCQUNqQixDQUNGLENBQUM7TUFDRGhFLGFBQWEsQ0FDWHlILFlBQVksQ0FBQ3BDLElBQUksQ0FBQ2YsSUFBSSxDQUFDL0UsV0FBVyxFQUFFOEYsSUFBSSxDQUFDZixJQUFJLENBQUNhLElBQUksQ0FBQ3JCLGFBQWEsQ0FDbEUsQ0FBQztNQUNEdEUsY0FBYyxDQUFDNkYsSUFBSSxDQUFDZixJQUFJLENBQUMvRSxXQUFXLENBQUM7TUFDckNLLGdCQUFnQixDQUFDeUYsSUFBSSxDQUFDZixJQUFJLENBQUNzRCxjQUFjLENBQUM7SUFDNUMsQ0FBQyxDQUFDLENBQ0RaLEtBQUssQ0FBQyxVQUFDeEMsS0FBSztNQUFBLE9BQUtxRCxLQUFLLENBQUNyRCxLQUFLLENBQUM7SUFBQSxFQUFDO0VBQ25DLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixvQkFDRXhLLE1BQUEsQ0FBQTBCLE9BQUEsQ0FBQW9NLGFBQUEsQ0FBQ2xOLFVBQUEsQ0FBQW1OLFNBQVMscUJBQ1IvTixNQUFBLENBQUEwQixPQUFBLENBQUFvTSxhQUFBO0lBQUtFLFNBQVMsRUFBQztFQUFjLEdBQUVuSyxhQUFJLENBQUNILENBQUMsQ0FBQyw0QkFBNEIsQ0FBTyxDQUFDLGVBQzFFMUQsTUFBQSxDQUFBMEIsT0FBQSxDQUFBb00sYUFBQTtJQUFNRyxNQUFNLEVBQUMsRUFBRTtJQUFDQyxRQUFRLEVBQUUsU0FBQUEsU0FBQ2hGLENBQUM7TUFBQSxPQUFLNkIsWUFBWSxDQUFDN0IsQ0FBQyxDQUFDO0lBQUE7RUFBQyxnQkFDL0NsSixNQUFBLENBQUEwQixPQUFBLENBQUFvTSxhQUFBO0lBQUtFLFNBQVMsRUFBQztFQUFTLGdCQUN0QmhPLE1BQUEsQ0FBQTBCLE9BQUEsQ0FBQW9NLGFBQUE7SUFBS0UsU0FBUyxFQUFDO0VBQU8sR0FDbkJuSyxhQUFJLENBQUNILENBQUMsQ0FBQyx1Q0FBdUMsQ0FDNUMsQ0FBQyxlQUNOMUQsTUFBQSxDQUFBMEIsT0FBQSxDQUFBb00sYUFBQTtJQUFTRSxTQUFTLEVBQUM7RUFBVSxnQkFDM0JoTyxNQUFBLENBQUEwQixPQUFBLENBQUFvTSxhQUFBO0lBQUtFLFNBQVMsRUFBQztFQUFPLGdCQUNwQmhPLE1BQUEsQ0FBQTBCLE9BQUEsQ0FBQW9NLGFBQUE7SUFBS0UsU0FBUyxFQUFDO0VBQU8sR0FDbkJuSyxhQUFJLENBQUNILENBQUMsQ0FBQyxpQ0FBaUMsQ0FDdEMsQ0FBQyxlQUNOMUQsTUFBQSxDQUFBMEIsT0FBQSxDQUFBb00sYUFBQTtJQUNFSyxJQUFJLEVBQUMsTUFBTTtJQUNYSCxTQUFTLEVBQUMsVUFBVTtJQUNwQnZFLElBQUksRUFBRSxZQUFhO0lBQ25CMUcsS0FBSyxFQUFFZ0csTUFBTSxDQUFDekMsVUFBVztJQUN6QjhILFFBQVEsRUFBRSxTQUFBQSxTQUFDbEYsQ0FBQztNQUFBLE9BQUtELGNBQWMsQ0FBQ0MsQ0FBQyxDQUFDO0lBQUE7RUFBQyxDQUNwQyxDQUFDLGVBQ0ZsSixNQUFBLENBQUEwQixPQUFBLENBQUFvTSxhQUFBO0lBQUdFLFNBQVMsRUFBRTtFQUFnQixDQUFJLENBQy9CLENBQUMsZUFDTmhPLE1BQUEsQ0FBQTBCLE9BQUEsQ0FBQW9NLGFBQUE7SUFBS0UsU0FBUyxFQUFDO0VBQU8sZ0JBQ3BCaE8sTUFBQSxDQUFBMEIsT0FBQSxDQUFBb00sYUFBQTtJQUFLRSxTQUFTLEVBQUM7RUFBTyxHQUNuQm5LLGFBQUksQ0FBQ0gsQ0FBQyxDQUFDLGdDQUFnQyxDQUNyQyxDQUFDLGVBQ04xRCxNQUFBLENBQUEwQixPQUFBLENBQUFvTSxhQUFBO0lBQ0VLLElBQUksRUFBQyxNQUFNO0lBQ1hILFNBQVMsRUFBQyxVQUFVO0lBQ3BCdkUsSUFBSSxFQUFFLFdBQVk7SUFDbEIxRyxLQUFLLEVBQUVnRyxNQUFNLENBQUN4QyxTQUFVO0lBQ3hCNkgsUUFBUSxFQUFFLFNBQUFBLFNBQUNsRixDQUFDO01BQUEsT0FBS0QsY0FBYyxDQUFDQyxDQUFDLENBQUM7SUFBQTtFQUFDLENBQ3BDLENBQUMsZUFDRmxKLE1BQUEsQ0FBQTBCLE9BQUEsQ0FBQW9NLGFBQUE7SUFBR0UsU0FBUyxFQUFFO0VBQWdCLENBQUksQ0FDL0IsQ0FBQyxlQUNOaE8sTUFBQSxDQUFBMEIsT0FBQSxDQUFBb00sYUFBQTtJQUFLRSxTQUFTLEVBQUM7RUFBdUIsZ0JBQ3BDaE8sTUFBQSxDQUFBMEIsT0FBQSxDQUFBb00sYUFBQTtJQUFLRSxTQUFTLEVBQUM7RUFBTyxHQUNuQm5LLGFBQUksQ0FBQ0gsQ0FBQyxDQUFDLDRCQUE0QixDQUNqQyxDQUFDLGVBQ04xRCxNQUFBLENBQUEwQixPQUFBLENBQUFvTSxhQUFBO0lBQ0VPLFFBQVEsRUFBRSxJQUFLO0lBQ2ZGLElBQUksRUFBQyxNQUFNO0lBQ1hILFNBQVMsRUFBQyxVQUFVO0lBQ3BCdkUsSUFBSSxFQUFFLE9BQVE7SUFDZDFHLEtBQUssRUFBRWdHLE1BQU0sQ0FBQ3RDO0VBQU0sQ0FDckIsQ0FBQyxlQUNGekcsTUFBQSxDQUFBMEIsT0FBQSxDQUFBb00sYUFBQTtJQUFHRSxTQUFTLEVBQUU7RUFBZ0IsQ0FBSSxDQUMvQixDQUFDLGVBQ05oTyxNQUFBLENBQUEwQixPQUFBLENBQUFvTSxhQUFBO0lBQUtFLFNBQVMsRUFBQztFQUFPLGdCQUNwQmhPLE1BQUEsQ0FBQTBCLE9BQUEsQ0FBQW9NLGFBQUE7SUFBS0UsU0FBUyxFQUFDO0VBQU8sR0FDbkJuSyxhQUFJLENBQUNILENBQUMsQ0FBQyw0QkFBNEIsQ0FDakMsQ0FBQyxlQUNOMUQsTUFBQSxDQUFBMEIsT0FBQSxDQUFBb00sYUFBQSxDQUFDck4sZ0JBQUEsQ0FBQWlCLE9BQVU7SUFDVDRNLE9BQU8sRUFBRSxJQUFLO0lBQ2RDLFlBQVksRUFBRTFLLGFBQUksQ0FBQ0gsQ0FBQyxDQUFDLFdBQVcsQ0FBRTtJQUNsQzhLLFVBQVUsRUFBQyxhQUFhO0lBQ3hCQyxjQUFjLEVBQUMsVUFBVTtJQUN6QkMsV0FBVyxFQUFDLFVBQVU7SUFDdEJDLGFBQWEsRUFBQyxnQkFBZ0I7SUFDOUI1TCxLQUFLLEVBQUVnRyxNQUFNLENBQUN2QyxLQUFNO0lBQ3BCb0ksWUFBWTtJQUNaQyxpQkFBaUIsRUFBRWhMLGFBQUksQ0FBQ0gsQ0FBQyxDQUFDLFFBQVEsQ0FBRTtJQUNwQ29MLG1CQUFtQixFQUFFLEtBQU07SUFDM0JWLFFBQVEsRUFBRSxTQUFBQSxTQUFDckwsS0FBSyxFQUFLO01BQ25Ca0csY0FBYyxDQUFDbEcsS0FBSyxDQUFDO0lBQ3ZCLENBQUU7SUFDRmdNLFVBQVUsRUFBRTtNQUFFdEYsSUFBSSxFQUFFO0lBQVE7RUFBRSxDQUMvQixDQUFDLGVBQ0Z6SixNQUFBLENBQUEwQixPQUFBLENBQUFvTSxhQUFBO0lBQUdFLFNBQVMsRUFBRTtFQUFnQixDQUFJLENBQy9CLENBQUMsRUFDTHpJLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQ3hDLEtBQUssS0FBSyxFQUFFLGlCQUMxQi9DLE1BQUEsQ0FBQTBCLE9BQUEsQ0FBQW9NLGFBQUEsQ0FBQTlOLE1BQUEsQ0FBQTBCLE9BQUEsQ0FBQXNOLFFBQUEscUJBQ0VoUCxNQUFBLENBQUEwQixPQUFBLENBQUFvTSxhQUFBO0lBQUtFLFNBQVMsRUFBQztFQUFPLGdCQUNwQmhPLE1BQUEsQ0FBQTBCLE9BQUEsQ0FBQW9NLGFBQUE7SUFBS0UsU0FBUyxFQUFDO0VBQU8sR0FDbkJuSyxhQUFJLENBQUNILENBQUMsQ0FBQyxpQ0FBaUMsQ0FDdEMsQ0FBQyxlQUNOMUQsTUFBQSxDQUFBMEIsT0FBQSxDQUFBb00sYUFBQTtJQUFLRSxTQUFTLEVBQUM7RUFBVSxnQkFDdkJoTyxNQUFBLENBQUEwQixPQUFBLENBQUFvTSxhQUFBLENBQUMzTixPQUFBLENBQUE4TyxNQUFNO0lBQ0xDLFFBQVEsRUFBRWxKLGFBQWM7SUFDeEJqRCxLQUFLLEVBQUU7TUFDTEMsS0FBSyxFQUFFYSxhQUFJLENBQUNILENBQUMscUNBQUFpSCxNQUFBLENBQ3lCNUUsVUFBVSxhQUFWQSxVQUFVLHVCQUFWQSxVQUFVLENBQUUvQyxLQUFLLENBQ3ZELENBQUM7TUFDREQsS0FBSyxFQUFFZ0QsVUFBVSxhQUFWQSxVQUFVLHVCQUFWQSxVQUFVLENBQUVoRDtJQUNyQixDQUFFO0lBQ0ZvTSxPQUFPLEVBQUU1SixXQUFZO0lBQ3JCNkosZUFBZTtJQUNmQyxTQUFTLEVBQUU7TUFDVEYsT0FBTyxFQUFFNUosV0FBVztNQUNwQitKLGVBQWUsRUFBRTtJQUNuQjtFQUFFLENBQ0gsQ0FDRSxDQUNGLENBQUMsZUFDTnRQLE1BQUEsQ0FBQTBCLE9BQUEsQ0FBQW9NLGFBQUE7SUFBS0UsU0FBUyxFQUFDO0VBQU8sZ0JBQ3BCaE8sTUFBQSxDQUFBMEIsT0FBQSxDQUFBb00sYUFBQTtJQUFLRSxTQUFTLEVBQUM7RUFBTyxHQUNuQm5LLGFBQUksQ0FBQ0gsQ0FBQyxDQUFDLG9DQUFvQyxDQUN6QyxDQUFDLGVBQ04xRCxNQUFBLENBQUEwQixPQUFBLENBQUFvTSxhQUFBO0lBQUtFLFNBQVMsRUFBQztFQUFVLGdCQUN2QmhPLE1BQUEsQ0FBQTBCLE9BQUEsQ0FBQW9NLGFBQUEsQ0FBQzNOLE9BQUEsQ0FBQThPLE1BQU07SUFDTEMsUUFBUSxFQUFFOUksZUFBZ0I7SUFDMUJyRCxLQUFLLEVBQUU7TUFDTEMsS0FBSyxFQUFFYSxhQUFJLENBQUNILENBQUMsd0NBQUFpSCxNQUFBLENBQzRCeEUsWUFBWSxhQUFaQSxZQUFZLHVCQUFaQSxZQUFZLENBQUVuRCxLQUFLLENBQzVELENBQUM7TUFDREQsS0FBSyxFQUFFb0QsWUFBWSxhQUFaQSxZQUFZLHVCQUFaQSxZQUFZLENBQUVwRDtJQUN2QixDQUFFO0lBQ0ZvTSxPQUFPLEVBQUV4SixhQUFjO0lBQ3ZCeUosZUFBZTtJQUNmQyxTQUFTLEVBQUU7TUFDVEYsT0FBTyxFQUFFeEosYUFBYTtNQUN0QjJKLGVBQWUsRUFBRTtJQUNuQjtFQUFFLENBQ0gsQ0FDRSxDQUNGLENBQ0wsQ0FDSCxFQUNBL0osV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDeEMsS0FBSyxLQUFLLEVBQUUsaUJBQzFCL0MsTUFBQSxDQUFBMEIsT0FBQSxDQUFBb00sYUFBQSxDQUFBOU4sTUFBQSxDQUFBMEIsT0FBQSxDQUFBc04sUUFBQSxxQkFDRWhQLE1BQUEsQ0FBQTBCLE9BQUEsQ0FBQW9NLGFBQUE7SUFDRUUsU0FBUyxXQUFBckQsTUFBQSxDQUNQNUUsVUFBVSxJQUNWLENBQUFBLFVBQVUsYUFBVkEsVUFBVSx1QkFBVkEsVUFBVSxDQUFFaEQsS0FBSyxNQUNmd0MsV0FBVyxDQUFDQSxXQUFXLENBQUNnSyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUN4TSxLQUFLLEdBQ3ZDLEVBQUUsR0FDRixlQUFlO0VBQ2xCLGdCQUVIL0MsTUFBQSxDQUFBMEIsT0FBQSxDQUFBb00sYUFBQTtJQUFLRSxTQUFTLEVBQUM7RUFBTyxHQUNuQm5LLGFBQUksQ0FBQ0gsQ0FBQyxDQUFDLHFDQUFxQyxDQUMxQyxDQUFDLGVBQ04xRCxNQUFBLENBQUEwQixPQUFBLENBQUFvTSxhQUFBO0lBQ0VPLFFBQVEsRUFBRSxLQUFNO0lBQ2hCRixJQUFJLEVBQUMsTUFBTTtJQUNYSCxTQUFTLEVBQUMsVUFBVTtJQUNwQnZFLElBQUksRUFBRSx1QkFBd0I7SUFDOUIxRyxLQUFLLEVBQUVnRyxNQUFNLENBQUNqQyxxQkFBc0I7SUFDcENzSCxRQUFRLEVBQUUsU0FBQUEsU0FBQ2xGLENBQUM7TUFBQSxPQUFLVSxzQkFBc0IsQ0FBQ1YsQ0FBQyxDQUFDO0lBQUE7RUFBQyxDQUM1QyxDQUNFLENBQUMsZUFDTmxKLE1BQUEsQ0FBQTBCLE9BQUEsQ0FBQW9NLGFBQUE7SUFDRUUsU0FBUyxXQUFBckQsTUFBQSxDQUNQeEUsWUFBWSxJQUNaLENBQUFBLFlBQVksYUFBWkEsWUFBWSx1QkFBWkEsWUFBWSxDQUFFcEQsS0FBSyxNQUNqQjRDLGFBQWEsQ0FBQ0EsYUFBYSxDQUFDNEosTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDeE0sS0FBSyxHQUMzQyxFQUFFLEdBQ0YsZUFBZTtFQUNqQixnQkFFSi9DLE1BQUEsQ0FBQTBCLE9BQUEsQ0FBQW9NLGFBQUE7SUFBS0UsU0FBUyxFQUFDO0VBQU8sR0FDbkJuSyxhQUFJLENBQUNILENBQUMsQ0FBQyx3Q0FBd0MsQ0FDN0MsQ0FBQyxlQUNOMUQsTUFBQSxDQUFBMEIsT0FBQSxDQUFBb00sYUFBQTtJQUNFTyxRQUFRLEVBQUUsS0FBTTtJQUNoQkYsSUFBSSxFQUFDLE1BQU07SUFDWEgsU0FBUyxFQUFDLFVBQVU7SUFDcEJ2RSxJQUFJLEVBQUUsMEJBQTJCO0lBQ2pDMUcsS0FBSyxFQUFFZ0csTUFBTSxDQUFDbEMsd0JBQXlCO0lBQ3ZDdUgsUUFBUSxFQUFFLFNBQUFBLFNBQUNsRixDQUFDO01BQUEsT0FBS1Msd0JBQXdCLENBQUNULENBQUMsQ0FBQztJQUFBO0VBQUMsQ0FDOUMsQ0FDRSxDQUNMLENBQ0gsZUFDRGxKLE1BQUEsQ0FBQTBCLE9BQUEsQ0FBQW9NLGFBQUE7SUFBS0UsU0FBUyxFQUFDO0VBQU8sZ0JBQ3BCaE8sTUFBQSxDQUFBMEIsT0FBQSxDQUFBb00sYUFBQTtJQUNFRSxTQUFTLEVBQUMsaUJBQWlCO0lBQzNCd0IsT0FBTyxFQUFFLFNBQUFBLFFBQUE7TUFBQSxPQUFNL0gsb0JBQW9CLENBQUMsSUFBSSxDQUFDO0lBQUE7RUFBQyxnQkFFMUN6SCxNQUFBLENBQUEwQixPQUFBLENBQUFvTSxhQUFBLENBQUN2TixJQUFBLENBQUFrUCxjQUFNO0lBQUNDLEtBQUssRUFBQyxNQUFNO0lBQUNDLE1BQU0sRUFBQyxNQUFNO0lBQUNDLElBQUksRUFBQztFQUFTLENBQUUsQ0FBQyxFQUNuRCxJQUFJLEVBQ0ovTCxhQUFJLENBQUNILENBQUMsQ0FBQyxzQ0FBc0MsQ0FDM0MsQ0FDRixDQUNFLENBQUMsZUFDVjFELE1BQUEsQ0FBQTBCLE9BQUEsQ0FBQW9NLGFBQUE7SUFBS0UsU0FBUyxFQUFDO0VBQU8sR0FBRW5LLGFBQUksQ0FBQ0gsQ0FBQyxDQUFDLCtCQUErQixDQUFPLENBQUMsZUFDdEUxRCxNQUFBLENBQUEwQixPQUFBLENBQUFvTSxhQUFBO0lBQVNFLFNBQVMsRUFBQztFQUFVLGdCQUMzQmhPLE1BQUEsQ0FBQTBCLE9BQUEsQ0FBQW9NLGFBQUE7SUFBS0UsU0FBUyxFQUFDO0VBQU8sZ0JBQ3BCaE8sTUFBQSxDQUFBMEIsT0FBQSxDQUFBb00sYUFBQTtJQUFLRSxTQUFTLEVBQUM7RUFBTyxHQUNuQm5LLGFBQUksQ0FBQ0gsQ0FBQyxDQUFDLGdDQUFnQyxDQUFDLEVBQUMsR0FDdkMsQ0FBQyxlQUNOMUQsTUFBQSxDQUFBMEIsT0FBQSxDQUFBb00sYUFBQTtJQUFLRSxTQUFTLEVBQUM7RUFBVSxnQkFDdkJoTyxNQUFBLENBQUEwQixPQUFBLENBQUFvTSxhQUFBLENBQUMzTixPQUFBLENBQUE4TyxNQUFNO0lBQ0xDLFFBQVEsRUFBRTlKLFdBQVk7SUFDdEJyQyxLQUFLLEVBQUVvQyxRQUFTO0lBQ2hCZ0ssT0FBTyxFQUFFM0wsU0FBVTtJQUNuQjRMLGVBQWU7RUFBQSxDQUNoQixDQUNFLENBQ0YsQ0FBQyxlQUNOcFAsTUFBQSxDQUFBMEIsT0FBQSxDQUFBb00sYUFBQTtJQUFLRSxTQUFTLEVBQUM7RUFBTyxnQkFDcEJoTyxNQUFBLENBQUEwQixPQUFBLENBQUFvTSxhQUFBO0lBQUtFLFNBQVMsRUFBQztFQUFPLEdBQ25CbkssYUFBSSxDQUFDSCxDQUFDLENBQUMsdUNBQXVDLENBQUMsRUFBQyxHQUM5QyxDQUFDLGVBQ04xRCxNQUFBLENBQUEwQixPQUFBLENBQUFvTSxhQUFBO0lBQUtFLFNBQVMsRUFBQztFQUFVLGdCQUN2QmhPLE1BQUEsQ0FBQTBCLE9BQUEsQ0FBQW9NLGFBQUEsQ0FBQzNOLE9BQUEsQ0FBQThPLE1BQU07SUFDTEUsT0FBTyxFQUFFck0scUJBQXNCO0lBQy9CQyxLQUFLLEVBQUVnQyxjQUFlO0lBQ3RCbUssUUFBUSxFQUFFbEssaUJBQWtCO0lBQzVCb0ssZUFBZTtFQUFBLENBQ2hCLENBQ0UsQ0FBQyxlQUNOcFAsTUFBQSxDQUFBMEIsT0FBQSxDQUFBb00sYUFBQTtJQUFLRSxTQUFTLEVBQUU7RUFBbUIsR0FDaENqSixjQUFjLEtBQUtnRixTQUFTLElBQzNCLElBQUk4RixJQUFJLENBQUMsQ0FBQyxDQUFDQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUvSyxjQUFjLENBQUM5QixNQUFNLENBQzNELENBQ0YsQ0FBQyxlQUNOakQsTUFBQSxDQUFBMEIsT0FBQSxDQUFBb00sYUFBQTtJQUFLRSxTQUFTLEVBQUM7RUFBTyxnQkFDcEJoTyxNQUFBLENBQUEwQixPQUFBLENBQUFvTSxhQUFBO0lBQUtFLFNBQVMsRUFBQztFQUFPLEdBQ25CbkssYUFBSSxDQUFDSCxDQUFDLENBQUMsK0JBQStCLENBQUMsRUFBQyxHQUN0QyxDQUFDLGVBQ04xRCxNQUFBLENBQUEwQixPQUFBLENBQUFvTSxhQUFBO0lBQUtFLFNBQVMsRUFBRTtFQUFXLGdCQUN6QmhPLE1BQUEsQ0FBQTBCLE9BQUEsQ0FBQW9NLGFBQUEsQ0FBQzNOLE9BQUEsQ0FBQThPLE1BQU07SUFDTEUsT0FBTyxFQUFFeEwsYUFBYztJQUN2QlosS0FBSyxFQUFFb0IsTUFBTztJQUNkK0ssUUFBUSxFQUFFOUssU0FBVTtJQUNwQmdMLGVBQWU7RUFBQSxDQUNoQixDQUNFLENBQ0YsQ0FBQyxlQUNOcFAsTUFBQSxDQUFBMEIsT0FBQSxDQUFBb00sYUFBQTtJQUFLRSxTQUFTLEVBQUM7RUFBTyxnQkFDcEJoTyxNQUFBLENBQUEwQixPQUFBLENBQUFvTSxhQUFBO0lBQUtFLFNBQVMsRUFBQztFQUFPLEdBQ25CbkssYUFBSSxDQUFDSCxDQUFDLENBQUMsd0NBQXdDLENBQzdDLENBQUMsZUFDTjFELE1BQUEsQ0FBQTBCLE9BQUEsQ0FBQW9NLGFBQUE7SUFBS0UsU0FBUyxFQUFFO0VBQVcsZ0JBQ3pCaE8sTUFBQSxDQUFBMEIsT0FBQSxDQUFBb00sYUFBQSxDQUFDM04sT0FBQSxDQUFBOE8sTUFBTTtJQUNMRSxPQUFPLEVBQUVyTCxzQkFBdUI7SUFDaENmLEtBQUssRUFBRTRCLGVBQWdCO0lBQ3ZCdUssUUFBUSxFQUFFdEssa0JBQW1CO0lBQzdCd0ssZUFBZTtFQUFBLENBQ2hCLENBQ0UsQ0FDRixDQUFDLGVBQ05wUCxNQUFBLENBQUEwQixPQUFBLENBQUFvTSxhQUFBO0lBQUtFLFNBQVMsRUFBQztFQUFzQixHQUNsQ2pGLE1BQU0sQ0FBQ25DLGFBQWEsS0FBSyxFQUFFLGlCQUMxQjVHLE1BQUEsQ0FBQTBCLE9BQUEsQ0FBQW9NLGFBQUE7SUFBR0UsU0FBUyxFQUFDLFVBQVU7SUFBQ3dCLE9BQU8sRUFBRSxTQUFBQSxRQUFBO01BQUEsT0FBTW5JLGlCQUFpQixDQUFDLElBQUksQ0FBQztJQUFBO0VBQUMsR0FDNUR4RCxhQUFJLENBQUNILENBQUMsQ0FBQywwQ0FBMEMsQ0FDakQsQ0FDSixFQUNBcUYsTUFBTSxDQUFDbkMsYUFBYSxLQUFLLEVBQUUsaUJBQzFCNUcsTUFBQSxDQUFBMEIsT0FBQSxDQUFBb00sYUFBQSxDQUFBOU4sTUFBQSxDQUFBMEIsT0FBQSxDQUFBc04sUUFBQSxxQkFDRWhQLE1BQUEsQ0FBQTBCLE9BQUEsQ0FBQW9NLGFBQUE7SUFBS0UsU0FBUyxFQUFDO0VBQU8sZ0JBQ3BCaE8sTUFBQSxDQUFBMEIsT0FBQSxDQUFBb00sYUFBQTtJQUFLRSxTQUFTLEVBQUM7RUFBTyxHQUNuQm5LLGFBQUksQ0FBQ0gsQ0FBQyxDQUFDLG9DQUFvQyxDQUFDLGVBQzdDMUQsTUFBQSxDQUFBMEIsT0FBQSxDQUFBb00sYUFBQTtJQUNFRSxTQUFTLEVBQUMsT0FBTztJQUNqQndCLE9BQU8sRUFBRSxTQUFBQSxRQUFBO01BQUEsT0FBTW5JLGlCQUFpQixDQUFDLElBQUksQ0FBQztJQUFBO0VBQUMsZ0JBRXZDckgsTUFBQSxDQUFBMEIsT0FBQSxDQUFBb00sYUFBQSxDQUFDdk4sSUFBQSxDQUFBa1AsY0FBTTtJQUFDQyxLQUFLLEVBQUMsTUFBTTtJQUFDQyxNQUFNLEVBQUMsTUFBTTtJQUFDQyxJQUFJLEVBQUM7RUFBUyxDQUFFLENBQUMsRUFBQyxHQUFHLEVBQ3ZEL0wsYUFBSSxDQUFDSCxDQUFDLENBQUMsa0NBQWtDLENBQ3ZDLENBQ0YsQ0FBQyxlQUNOMUQsTUFBQSxDQUFBMEIsT0FBQSxDQUFBb00sYUFBQTtJQUFLRSxTQUFTLEVBQUU7RUFBMEIsZ0JBQ3hDaE8sTUFBQSxDQUFBMEIsT0FBQSxDQUFBb00sYUFBQTtJQUNFTyxRQUFRLEVBQUUsSUFBSztJQUNmRixJQUFJLEVBQUMsTUFBTTtJQUNYSCxTQUFTLEVBQUMsVUFBVTtJQUNwQnZFLElBQUksRUFBRSxlQUFnQjtJQUN0QjFHLEtBQUssRUFBRWdHLE1BQU0sQ0FBQ25DO0VBQWMsQ0FDN0IsQ0FBQyxlQUNGNUcsTUFBQSxDQUFBMEIsT0FBQSxDQUFBb00sYUFBQTtJQUNFRSxTQUFTLEVBQUUsd0NBQXlDO0lBQ3BEd0IsT0FBTyxFQUFFLFNBQUFBLFFBQUN0RyxDQUFDLEVBQUs7TUFDZEYsU0FBUyxDQUFDLFVBQUNLLFNBQVM7UUFBQSxXQUFBQyxjQUFBLENBQUE1SCxPQUFBLE1BQUE0SCxjQUFBLENBQUE1SCxPQUFBLE1BQ2YySCxTQUFTO1VBQ1p6QyxhQUFhLEVBQUU7UUFBRTtNQUFBLENBQ2pCLENBQUM7SUFDTDtFQUFFLGdCQUVGNUcsTUFBQSxDQUFBMEIsT0FBQSxDQUFBb00sYUFBQSxDQUFDdE4sT0FBQSxDQUFBaVAsY0FBTSxNQUFFLENBQ04sQ0FDRixDQUFDLGVBQ056UCxNQUFBLENBQUEwQixPQUFBLENBQUFvTSxhQUFBO0lBQUdFLFNBQVMsRUFBRTtFQUFnQixDQUFJLENBQy9CLENBQUMsZUFDTmhPLE1BQUEsQ0FBQTBCLE9BQUEsQ0FBQW9NLGFBQUEsMkJBQ0U5TixNQUFBLENBQUEwQixPQUFBLENBQUFvTSxhQUFBO0lBQ0VFLFNBQVMsRUFBRSxlQUFnQjtJQUMzQndCLE9BQU8sRUFBRSxTQUFBQSxRQUFBLEVBQU07TUFDYnZFLGNBQUssQ0FDRnBKLEdBQUcsbUNBQW1DLENBQUMsQ0FDdkN1SixJQUFJLENBQUMsVUFBQ0MsSUFBSSxFQUFLO1FBQ2R6Qyw4QkFBOEIsQ0FBQztVQUM3QkosTUFBTSxFQUNKNkMsSUFBSSxDQUFDZixJQUFJLENBQUM5QixNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUN1SCxXQUFXLENBQUMsQ0FBQyxHQUNqQzFFLElBQUksQ0FBQ2YsSUFBSSxDQUFDOUIsTUFBTSxDQUFDd0gsU0FBUyxDQUFDLENBQUMsQ0FBQztVQUMvQnZILE9BQU8sRUFBRTRDLElBQUksQ0FBQ2YsSUFBSSxDQUFDN0IsT0FBTztVQUMxQkYsSUFBSSxFQUFFO1FBQ1IsQ0FBQyxDQUFDO1FBQ0ZrRSxVQUFVLENBQUMsWUFBTTtVQUNmN0QsOEJBQThCLENBQUM7WUFDN0JKLE1BQU0sRUFBRSxFQUFFO1lBQ1ZDLE9BQU8sRUFBRSxFQUFFO1lBQ1hGLElBQUksRUFBRTtVQUNSLENBQUMsQ0FBQztRQUNKLENBQUMsRUFBRSxJQUFJLENBQUM7UUFDUjhCLFNBQVMsQ0FBQ2dCLElBQUksQ0FBQ2YsSUFBSSxDQUFDO01BQ3RCLENBQUMsQ0FBQyxDQUNEMEMsS0FBSyxDQUFDLFVBQUN4QyxLQUFLO1FBQUEsT0FBS3FELEtBQUssQ0FBQ3JELEtBQUssQ0FBQztNQUFBLEVBQUM7SUFDbkM7RUFBRSxHQUVELENBQUM3QiwyQkFBMkIsQ0FBQ0osSUFBSSxJQUNoQzFFLGFBQUksQ0FBQ0gsQ0FBQyxDQUFDLDRDQUE0QyxDQUFDLEVBQ3JEaUYsMkJBQTJCLENBQUNKLElBQUksSUFDL0JJLDJCQUEyQixDQUFDSCxNQUM3QixDQUNBLENBQ0wsQ0FFRCxDQUFDLGVBQ054SSxNQUFBLENBQUEwQixPQUFBLENBQUFvTSxhQUFBO0lBQUtFLFNBQVMsRUFBQztFQUFPLGdCQUNwQmhPLE1BQUEsQ0FBQTBCLE9BQUEsQ0FBQW9NLGFBQUE7SUFBS0UsU0FBUyxFQUFDO0VBQU8sR0FDbkJuSyxhQUFJLENBQUNILENBQUMsQ0FBQyxzQ0FBc0MsQ0FDM0MsQ0FBQyxlQUNOMUQsTUFBQSxDQUFBMEIsT0FBQSxDQUFBb00sYUFBQTtJQUFLRSxTQUFTLEVBQUU7RUFBVyxnQkFDekJoTyxNQUFBLENBQUEwQixPQUFBLENBQUFvTSxhQUFBLENBQUMzTixPQUFBLENBQUE4TyxNQUFNO0lBQ0xFLE9BQU8sRUFBRXZMLG1CQUFvQjtJQUM3QmIsS0FBSyxFQUFFd0IsWUFBYTtJQUNwQjJLLFFBQVEsRUFBRTFLLGVBQWdCO0lBQzFCNEssZUFBZTtFQUFBLENBQ2hCLENBQ0UsQ0FDRixDQUNFLENBQUMsZUFDVnBQLE1BQUEsQ0FBQTBCLE9BQUEsQ0FBQW9NLGFBQUE7SUFBUUssSUFBSSxFQUFFLFFBQVM7SUFBQ0gsU0FBUyxFQUFFLE1BQU87SUFBQ2lDLFFBQVEsRUFBRXJJO0VBQVcsR0FDN0QsQ0FBQ0EsVUFBVSxJQUNWLENBQUNJLGtCQUFrQixJQUNuQixDQUFDSSxnQkFBZ0IsSUFDakJ2RSxhQUFJLENBQUNILENBQUMsQ0FBQyw2QkFBNkIsQ0FBQyxFQUN0Q2tFLFVBQVUsSUFDVCxDQUFDSSxrQkFBa0IsSUFDbkIsQ0FBQ0ksZ0JBQWdCLElBQ2pCdkUsYUFBSSxDQUFDSCxDQUFDLENBQUMsaUNBQWlDLENBQUMsRUFDMUNzRSxrQkFBa0IsSUFBSW5FLGFBQUksQ0FBQ0gsQ0FBQyxDQUFDLDhCQUE4QixDQUFDLEVBQzVEMEUsZ0JBQWdCLElBQUl2RSxhQUFJLENBQUNILENBQUMsQ0FBQyw0QkFBNEIsQ0FDbEQsQ0FDTCxDQUNELENBQUMsRUFFTjhELGlCQUFpQixpQkFDaEJ4SCxNQUFBLENBQUEwQixPQUFBLENBQUFvTSxhQUFBLENBQUN4TixjQUFBLENBQUE0UCxhQUFhO0lBQ1pDLEtBQUssRUFBRSxTQUFBQSxNQUFBO01BQUEsT0FBTTFJLG9CQUFvQixDQUFDLEtBQUssQ0FBQztJQUFBLENBQUM7SUFDekMySSxJQUFJLEVBQUUsU0FBQUEsS0FBQSxFQUFNLENBQUM7RUFBRSxDQUNoQixDQUNGLEVBQ0FoSixjQUFjLGlCQUNicEgsTUFBQSxDQUFBMEIsT0FBQSxDQUFBb00sYUFBQSxDQUFDcE4sY0FBQSxDQUFBMlAsYUFBYTtJQUNaRixLQUFLLEVBQUUsU0FBQUEsTUFBQTtNQUFBLE9BQU05SSxpQkFBaUIsQ0FBQyxLQUFLLENBQUM7SUFBQSxDQUFDO0lBQ3RDNEIsY0FBYyxFQUFFQSxjQUFlO0lBQy9COEIsWUFBWSxFQUFFQTtFQUFhLENBQzVCLENBRU0sQ0FBQztBQUVoQixDQUFDO0FBQUN1RixPQUFBLENBQUE3TixXQUFBLEdBQUFBLFdBQUEifQ==
|