@grafana/scenes 6.7.0--canary.1091.14350229100.0 → 6.8.0
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/CHANGELOG.md +25 -0
- package/dist/esm/components/layout/CSSGrid/SceneCSSGridItem.js +33 -0
- package/dist/esm/dist/esm/behaviors/CursorSync.js +76 -0
- package/dist/esm/dist/esm/behaviors/LiveNowTimer.js +44 -0
- package/dist/esm/dist/esm/behaviors/SceneQueryController.js +14 -0
- package/dist/esm/dist/esm/components/EmbeddedScene.js +59 -0
- package/dist/esm/dist/esm/components/NestedScene.js +95 -0
- package/dist/esm/dist/esm/components/SceneApp/SceneApp.js +27 -0
- package/dist/esm/dist/esm/components/SceneApp/SceneAppPage.js +176 -0
- package/dist/esm/dist/esm/components/SceneApp/SceneAppPageView.js +104 -0
- package/dist/esm/dist/esm/components/SceneApp/utils.js +42 -0
- package/dist/esm/dist/esm/components/SceneByFrameRepeater.js +41 -0
- package/dist/esm/dist/esm/components/SceneByVariableRepeater.js +55 -0
- package/dist/esm/dist/esm/components/SceneCanvasText.js +32 -0
- package/dist/esm/dist/esm/components/SceneControlsSpacer.js +17 -0
- package/dist/esm/dist/esm/components/SceneDebugger/DebugDetails.js +82 -0
- package/dist/esm/dist/esm/components/SceneDebugger/DebugTreeNode.js +72 -0
- package/dist/esm/dist/esm/components/SceneDebugger/SceneDebugger.js +77 -0
- package/dist/esm/dist/esm/components/SceneReactObject.js +34 -0
- package/dist/esm/dist/esm/components/SceneRefreshPicker.js +205 -0
- package/dist/esm/dist/esm/components/SceneTimePicker.js +139 -0
- package/dist/esm/dist/esm/components/SceneTimeRangeCompare.js +240 -0
- package/dist/esm/dist/esm/components/SceneToolbarButton.js +33 -0
- package/dist/esm/dist/esm/components/VizPanel/VizPanel.js +406 -0
- package/dist/esm/dist/esm/components/VizPanel/VizPanelExploreButton.js +44 -0
- package/dist/esm/dist/esm/components/VizPanel/VizPanelMenu.js +59 -0
- package/dist/esm/dist/esm/components/VizPanel/VizPanelRenderer.js +285 -0
- package/dist/esm/dist/esm/components/VizPanel/VizPanelSeriesLimit.js +45 -0
- package/dist/esm/dist/esm/components/VizPanel/colorSeriesConfigFactory.js +72 -0
- package/dist/esm/dist/esm/components/VizPanel/registerRuntimePanelPlugin.js +11 -0
- package/dist/esm/dist/esm/components/VizPanel/seriesVisibilityConfigFactory.js +164 -0
- package/dist/esm/dist/esm/components/layout/CSSGrid/SceneCSSGridLayout.js +124 -0
- package/dist/esm/dist/esm/components/layout/LazyLoader.js +103 -0
- package/dist/esm/dist/esm/components/layout/SceneFlexLayout.js +135 -0
- package/dist/esm/dist/esm/components/layout/grid/SceneGridItem.js +30 -0
- package/dist/esm/dist/esm/components/layout/grid/SceneGridLayout.js +283 -0
- package/dist/esm/dist/esm/components/layout/grid/SceneGridLayoutRenderer.js +178 -0
- package/dist/esm/dist/esm/components/layout/grid/SceneGridRow.js +190 -0
- package/dist/esm/dist/esm/components/layout/grid/constants.js +7 -0
- package/dist/esm/dist/esm/components/layout/grid/utils.js +36 -0
- package/dist/esm/dist/esm/components/layout/split/SplitLayout.js +17 -0
- package/dist/esm/dist/esm/components/layout/split/SplitLayoutRenderer.js +29 -0
- package/dist/esm/dist/esm/components/layout/split/Splitter.js +386 -0
- package/dist/esm/dist/esm/core/SceneComponentWrapper.js +57 -0
- package/dist/esm/dist/esm/core/SceneDataNode.js +43 -0
- package/dist/esm/dist/esm/core/SceneObjectBase.js +286 -0
- package/dist/esm/dist/esm/core/SceneObjectRef.js +32 -0
- package/dist/esm/dist/esm/core/SceneTimeRange.js +231 -0
- package/dist/esm/dist/esm/core/events.js +11 -0
- package/dist/esm/dist/esm/core/sceneGraph/getTimeRange.js +10 -0
- package/dist/esm/dist/esm/core/sceneGraph/index.js +25 -0
- package/dist/esm/dist/esm/core/sceneGraph/sceneGraph.js +178 -0
- package/dist/esm/dist/esm/core/sceneGraph/utils.js +64 -0
- package/dist/esm/dist/esm/core/types.js +15 -0
- package/dist/esm/dist/esm/querying/DataLayersMerger.js +46 -0
- package/dist/esm/dist/esm/querying/ExtraQueryProvider.js +6 -0
- package/dist/esm/dist/esm/querying/RuntimeDataSource.js +6 -0
- package/dist/esm/dist/esm/querying/SceneDataLayerSet.js +100 -0
- package/dist/esm/dist/esm/querying/SceneQueryRunner.js +468 -0
- package/dist/esm/dist/esm/querying/extraQueryProcessingOperator.js +46 -0
- package/dist/esm/dist/esm/querying/getEnrichedDataRequest.js +12 -0
- package/dist/esm/dist/esm/querying/layers/SceneDataLayerBase.js +112 -0
- package/dist/esm/dist/esm/querying/layers/SceneDataLayerControls.js +51 -0
- package/dist/esm/dist/esm/querying/layers/annotations/AnnotationsDataLayer.js +130 -0
- package/dist/esm/dist/esm/querying/layers/annotations/filterAnnotations.js +85 -0
- package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationQuery.js +121 -0
- package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationsSupport.js +211 -0
- package/dist/esm/dist/esm/querying/layers/annotations/utils.js +77 -0
- package/dist/esm/dist/esm/querying/registerQueryWithController.js +41 -0
- package/dist/esm/dist/esm/services/SceneObjectUrlSyncConfig.js +30 -0
- package/dist/esm/dist/esm/services/UniqueUrlKeyMapper.js +45 -0
- package/dist/esm/dist/esm/services/UrlSyncManager.js +167 -0
- package/dist/esm/dist/esm/services/useUrlSync.js +29 -0
- package/dist/esm/dist/esm/services/utils.js +71 -0
- package/dist/esm/dist/esm/utils/ControlsLabel.js +107 -0
- package/dist/esm/dist/esm/utils/LoadingIndicator.js +19 -0
- package/dist/esm/dist/esm/utils/SafeSerializableSceneObject.js +39 -0
- package/dist/esm/dist/esm/utils/compatibility/setWindowGrafanaSceneContext.js +16 -0
- package/dist/esm/dist/esm/utils/date.js +15 -0
- package/dist/esm/dist/esm/utils/evaluateTimeRange.js +16 -0
- package/dist/esm/dist/esm/utils/explore.js +47 -0
- package/dist/esm/dist/esm/utils/getCompareSeriesRefId.js +4 -0
- package/dist/esm/dist/esm/utils/getDataSource.js +18 -0
- package/dist/esm/dist/esm/utils/getMessageFromError.js +24 -0
- package/dist/esm/dist/esm/utils/metricTree.js +53 -0
- package/dist/esm/dist/esm/utils/parseUrlParam.js +41 -0
- package/dist/esm/dist/esm/utils/utils.js +11 -0
- package/dist/esm/dist/esm/utils/wrapInSafeSerializableSceneObject.js +30 -0
- package/dist/esm/dist/esm/utils/writeSceneLog.js +12 -0
- package/dist/esm/dist/esm/variables/VariableDependencyConfig.js +150 -0
- package/dist/esm/dist/esm/variables/VariableValueRecorder.js +71 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFilterBuilder.js +24 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFilterRenderer.js +303 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +162 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +20 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +640 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +65 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +146 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +114 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +68 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/utils.js +146 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariable.js +289 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +76 -0
- package/dist/esm/dist/esm/variables/adhoc/getAdhocOptionSearcher.js +13 -0
- package/dist/esm/dist/esm/variables/adhoc/patchGetAdhocFilters.js +47 -0
- package/dist/esm/dist/esm/variables/components/VariableValueControl.js +23 -0
- package/dist/esm/dist/esm/variables/components/VariableValueInput.js +33 -0
- package/dist/esm/dist/esm/variables/components/VariableValueSelect.js +228 -0
- package/dist/esm/dist/esm/variables/components/VariableValueSelectors.js +72 -0
- package/dist/esm/dist/esm/variables/components/getOptionSearcher.js +15 -0
- package/dist/esm/dist/esm/variables/constants.js +9 -0
- package/dist/esm/dist/esm/variables/getEnrichedFiltersRequest.js +12 -0
- package/dist/esm/dist/esm/variables/groupby/GroupByVariable.js +259 -0
- package/dist/esm/dist/esm/variables/groupby/GroupByVariableUrlSyncHandler.js +63 -0
- package/dist/esm/dist/esm/variables/groupby/findActiveGroupByVariablesByUid.js +13 -0
- package/dist/esm/dist/esm/variables/interpolation/ScopedVarsVariable.js +40 -0
- package/dist/esm/dist/esm/variables/interpolation/defaults.js +21 -0
- package/dist/esm/dist/esm/variables/interpolation/fieldAccessorCache.js +13 -0
- package/dist/esm/dist/esm/variables/interpolation/formatRegistry.js +296 -0
- package/dist/esm/dist/esm/variables/interpolation/sceneInterpolator.js +87 -0
- package/dist/esm/dist/esm/variables/lookupVariable.js +20 -0
- package/dist/esm/dist/esm/variables/macros/AllVariablesMacro.js +57 -0
- package/dist/esm/dist/esm/variables/macros/contextMacros.js +43 -0
- package/dist/esm/dist/esm/variables/macros/dataMacros.js +134 -0
- package/dist/esm/dist/esm/variables/macros/index.js +26 -0
- package/dist/esm/dist/esm/variables/macros/templateProxies.js +51 -0
- package/dist/esm/dist/esm/variables/macros/timeMacros.js +86 -0
- package/dist/esm/dist/esm/variables/macros/types.js +11 -0
- package/dist/esm/dist/esm/variables/macros/urlMacros.js +56 -0
- package/dist/esm/dist/esm/variables/sets/SceneVariableSet.js +254 -0
- package/dist/esm/dist/esm/variables/types.js +11 -0
- package/dist/esm/dist/esm/variables/utils.js +172 -0
- package/dist/esm/dist/esm/variables/variants/ConstantVariable.js +38 -0
- package/dist/esm/dist/esm/variables/variants/CustomVariable.js +60 -0
- package/dist/esm/dist/esm/variables/variants/DataSourceVariable.js +88 -0
- package/dist/esm/dist/esm/variables/variants/IntervalVariable.js +117 -0
- package/dist/esm/dist/esm/variables/variants/MultiValueVariable.js +295 -0
- package/dist/esm/dist/esm/variables/variants/TestVariable.js +117 -0
- package/dist/esm/dist/esm/variables/variants/TextBoxVariable.js +61 -0
- package/dist/esm/dist/esm/variables/variants/query/QueryVariable.js +139 -0
- package/dist/esm/dist/esm/variables/variants/query/createQueryVariableRunner.js +129 -0
- package/dist/esm/dist/esm/variables/variants/query/guards.js +28 -0
- package/dist/esm/dist/esm/variables/variants/query/toMetricFindValues.js +96 -0
- package/dist/esm/dist/esm/variables/variants/query/utils.js +124 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/querying/DataProviderSharer.js +39 -0
- package/dist/esm/src/behaviors/ActWhenVariableChanged.js +27 -0
- package/dist/esm/src/behaviors/CursorSync.js +76 -0
- package/dist/esm/src/behaviors/LiveNowTimer.js +44 -0
- package/dist/esm/src/behaviors/SceneQueryController.js +60 -0
- package/dist/esm/src/behaviors/index.js +5 -0
- package/dist/esm/src/components/EmbeddedScene.js +59 -0
- package/dist/esm/src/components/NestedScene.js +95 -0
- package/dist/esm/src/components/SceneApp/SceneApp.js +37 -0
- package/dist/esm/src/components/SceneApp/SceneAppPage.js +176 -0
- package/dist/esm/src/components/SceneApp/SceneAppPageView.js +104 -0
- package/dist/esm/src/components/SceneApp/utils.js +42 -0
- package/dist/esm/src/components/SceneByFrameRepeater.js +41 -0
- package/dist/esm/src/components/SceneByVariableRepeater.js +55 -0
- package/dist/esm/src/components/SceneCanvasText.js +32 -0
- package/dist/esm/src/components/SceneControlsSpacer.js +17 -0
- package/dist/esm/src/components/SceneDebugger/DebugDetails.js +82 -0
- package/dist/esm/src/components/SceneDebugger/DebugTreeNode.js +72 -0
- package/dist/esm/src/components/SceneDebugger/SceneDebugger.js +77 -0
- package/dist/esm/src/components/SceneReactObject.js +34 -0
- package/dist/esm/src/components/SceneRefreshPicker.js +205 -0
- package/dist/esm/src/components/SceneTimePicker.js +139 -0
- package/dist/esm/src/components/SceneTimeRangeCompare.js +240 -0
- package/dist/esm/src/components/SceneToolbarButton.js +33 -0
- package/dist/esm/src/components/VizPanel/VizPanel.js +406 -0
- package/dist/esm/src/components/VizPanel/VizPanelExploreButton.js +44 -0
- package/dist/esm/src/components/VizPanel/VizPanelMenu.js +59 -0
- package/dist/esm/src/components/VizPanel/VizPanelRenderer.js +285 -0
- package/dist/esm/src/components/VizPanel/VizPanelSeriesLimit.js +45 -0
- package/dist/esm/src/components/VizPanel/colorSeriesConfigFactory.js +72 -0
- package/dist/esm/src/components/VizPanel/registerRuntimePanelPlugin.js +56 -0
- package/dist/esm/src/components/VizPanel/seriesVisibilityConfigFactory.js +164 -0
- package/dist/esm/src/components/layout/CSSGrid/SceneCSSGridLayout.js +124 -0
- package/dist/esm/src/components/layout/LazyLoader.js +103 -0
- package/dist/esm/src/components/layout/SceneFlexLayout.js +135 -0
- package/dist/esm/src/components/layout/grid/SceneGridItem.js +30 -0
- package/dist/esm/src/components/layout/grid/SceneGridLayout.js +283 -0
- package/dist/esm/src/components/layout/grid/SceneGridLayoutRenderer.js +178 -0
- package/dist/esm/src/components/layout/grid/SceneGridRow.js +190 -0
- package/dist/esm/src/components/layout/grid/constants.js +7 -0
- package/dist/esm/src/components/layout/grid/utils.js +36 -0
- package/dist/esm/src/components/layout/split/SplitLayout.js +17 -0
- package/dist/esm/src/components/layout/split/SplitLayoutRenderer.js +29 -0
- package/dist/esm/src/components/layout/split/Splitter.js +386 -0
- package/dist/esm/src/core/PanelBuilders/FieldConfigBuilder.js +100 -0
- package/dist/esm/src/core/PanelBuilders/FieldConfigBuilders.js +75 -0
- package/dist/esm/src/core/PanelBuilders/FieldConfigOverridesBuilder.js +75 -0
- package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilder.js +22 -0
- package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilders.js +85 -0
- package/dist/esm/src/core/PanelBuilders/StandardFieldConfigBuilders.js +52 -0
- package/dist/esm/src/core/PanelBuilders/VizConfigBuilder.js +78 -0
- package/dist/esm/src/core/PanelBuilders/VizConfigBuilders.js +114 -0
- package/dist/esm/src/core/PanelBuilders/VizPanelBuilder.js +162 -0
- package/dist/esm/src/core/PanelBuilders/index.js +116 -0
- package/dist/esm/src/core/SceneComponentWrapper.js +57 -0
- package/dist/esm/src/core/SceneDataNode.js +43 -0
- package/dist/esm/src/core/SceneObjectBase.js +286 -0
- package/dist/esm/src/core/SceneObjectRef.js +32 -0
- package/dist/esm/src/core/SceneTimeRange.js +231 -0
- package/dist/esm/src/core/SceneTimeRangeTransformerBase.js +35 -0
- package/dist/esm/src/core/SceneTimeZoneOverride.js +63 -0
- package/dist/esm/src/core/events.js +11 -0
- package/dist/esm/src/core/sceneGraph/getTimeRange.js +10 -0
- package/dist/esm/src/core/sceneGraph/index.js +25 -0
- package/dist/esm/src/core/sceneGraph/sceneGraph.js +178 -0
- package/dist/esm/src/core/sceneGraph/utils.js +64 -0
- package/dist/esm/src/core/types.js +15 -0
- package/dist/esm/src/index.js +108 -0
- package/dist/esm/src/querying/DataLayersMerger.js +46 -0
- package/dist/esm/src/querying/DataProviderProxy.js +37 -0
- package/dist/esm/src/querying/DataProviderSharer.js +108 -0
- package/dist/esm/src/querying/ExtraQueryProvider.js +6 -0
- package/dist/esm/src/querying/RuntimeDataSource.js +49 -0
- package/dist/esm/src/querying/SceneDataLayerSet.js +100 -0
- package/dist/esm/src/querying/SceneDataTransformer.js +178 -0
- package/dist/esm/src/querying/SceneQueryRunner.js +468 -0
- package/dist/esm/src/querying/extraQueryProcessingOperator.js +46 -0
- package/dist/esm/src/querying/getEnrichedDataRequest.js +12 -0
- package/dist/esm/src/querying/layers/SceneDataLayerBase.js +112 -0
- package/dist/esm/src/querying/layers/SceneDataLayerControls.js +51 -0
- package/dist/esm/src/querying/layers/annotations/AnnotationsDataLayer.js +130 -0
- package/dist/esm/src/querying/layers/annotations/filterAnnotations.js +85 -0
- package/dist/esm/src/querying/layers/annotations/standardAnnotationQuery.js +121 -0
- package/dist/esm/src/querying/layers/annotations/standardAnnotationsSupport.js +211 -0
- package/dist/esm/src/querying/layers/annotations/utils.js +77 -0
- package/dist/esm/src/querying/layers/index.js +2 -0
- package/dist/esm/src/querying/registerQueryWithController.js +41 -0
- package/dist/esm/src/services/SceneObjectUrlSyncConfig.js +30 -0
- package/dist/esm/src/services/UniqueUrlKeyMapper.js +45 -0
- package/dist/esm/src/services/UrlSyncContextProvider.js +17 -0
- package/dist/esm/src/services/UrlSyncManager.js +167 -0
- package/dist/esm/src/services/useUrlSync.js +29 -0
- package/dist/esm/src/services/utils.js +75 -0
- package/dist/esm/src/utils/ControlsLabel.js +107 -0
- package/dist/esm/src/utils/LoadingIndicator.js +19 -0
- package/dist/esm/src/utils/SafeSerializableSceneObject.js +39 -0
- package/dist/esm/src/utils/compatibility/setWindowGrafanaSceneContext.js +16 -0
- package/dist/esm/src/utils/date.js +15 -0
- package/dist/esm/src/utils/evaluateTimeRange.js +16 -0
- package/dist/esm/src/utils/explore.js +47 -0
- package/dist/esm/src/utils/getCompareSeriesRefId.js +4 -0
- package/dist/esm/src/utils/getDataSource.js +18 -0
- package/dist/esm/src/utils/getMessageFromError.js +24 -0
- package/dist/esm/src/utils/metricTree.js +53 -0
- package/dist/esm/src/utils/parseUrlParam.js +41 -0
- package/dist/esm/src/utils/utils.js +11 -0
- package/dist/esm/src/utils/wrapInSafeSerializableSceneObject.js +30 -0
- package/dist/esm/src/utils/writeSceneLog.js +12 -0
- package/dist/esm/src/variables/VariableDependencyConfig.js +150 -0
- package/dist/esm/src/variables/VariableValueRecorder.js +71 -0
- package/dist/esm/src/variables/adhoc/AdHocFilterBuilder.js +24 -0
- package/dist/esm/src/variables/adhoc/AdHocFilterRenderer.js +303 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +162 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +20 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +640 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +65 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +146 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +114 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +68 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/utils.js +146 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersVariable.js +289 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +76 -0
- package/dist/esm/src/variables/adhoc/getAdhocOptionSearcher.js +13 -0
- package/dist/esm/src/variables/adhoc/patchGetAdhocFilters.js +47 -0
- package/dist/esm/src/variables/components/VariableValueControl.js +23 -0
- package/dist/esm/src/variables/components/VariableValueInput.js +33 -0
- package/dist/esm/src/variables/components/VariableValueSelect.js +228 -0
- package/dist/esm/src/variables/components/VariableValueSelectors.js +72 -0
- package/dist/esm/src/variables/components/getOptionSearcher.js +15 -0
- package/dist/esm/src/variables/constants.js +9 -0
- package/dist/esm/src/variables/getEnrichedFiltersRequest.js +12 -0
- package/dist/esm/src/variables/groupby/GroupByVariable.js +259 -0
- package/dist/esm/src/variables/groupby/GroupByVariableUrlSyncHandler.js +63 -0
- package/dist/esm/src/variables/groupby/findActiveGroupByVariablesByUid.js +13 -0
- package/dist/esm/src/variables/interpolation/ScopedVarsVariable.js +40 -0
- package/dist/esm/src/variables/interpolation/defaults.js +21 -0
- package/dist/esm/src/variables/interpolation/fieldAccessorCache.js +13 -0
- package/dist/esm/src/variables/interpolation/formatRegistry.js +296 -0
- package/dist/esm/src/variables/interpolation/sceneInterpolator.js +87 -0
- package/dist/esm/src/variables/lookupVariable.js +20 -0
- package/dist/esm/src/variables/macros/AllVariablesMacro.js +57 -0
- package/dist/esm/src/variables/macros/contextMacros.js +43 -0
- package/dist/esm/src/variables/macros/dataMacros.js +134 -0
- package/dist/esm/src/variables/macros/index.js +35 -0
- package/dist/esm/src/variables/macros/templateProxies.js +51 -0
- package/dist/esm/src/variables/macros/timeMacros.js +86 -0
- package/dist/esm/src/variables/macros/types.js +11 -0
- package/dist/esm/src/variables/macros/urlMacros.js +56 -0
- package/dist/esm/src/variables/sets/SceneVariableSet.js +254 -0
- package/dist/esm/src/variables/types.js +11 -0
- package/dist/esm/src/variables/utils.js +172 -0
- package/dist/esm/src/variables/variants/ConstantVariable.js +38 -0
- package/dist/esm/src/variables/variants/CustomVariable.js +60 -0
- package/dist/esm/src/variables/variants/DataSourceVariable.js +88 -0
- package/dist/esm/src/variables/variants/IntervalVariable.js +117 -0
- package/dist/esm/src/variables/variants/JsonVariable.js +193 -0
- package/dist/esm/src/variables/variants/LocalValueVariable.js +56 -0
- package/dist/esm/src/variables/variants/MultiValueVariable.js +295 -0
- package/dist/esm/src/variables/variants/TestVariable.js +117 -0
- package/dist/esm/src/variables/variants/TextBoxVariable.js +61 -0
- package/dist/esm/src/variables/variants/guards.js +27 -0
- package/dist/esm/src/variables/variants/query/QueryVariable.js +139 -0
- package/dist/esm/src/variables/variants/query/createQueryVariableRunner.js +129 -0
- package/dist/esm/src/variables/variants/query/guards.js +28 -0
- package/dist/esm/src/variables/variants/query/toMetricFindValues.js +96 -0
- package/dist/esm/src/variables/variants/query/utils.js +124 -0
- package/dist/esm/variables/components/VariableValueSelect.js +13 -9
- package/dist/esm/variables/components/VariableValueSelect.js.map +1 -1
- package/dist/esm/variables/variants/ConstantVariable.js +22 -0
- package/dist/esm/variables/variants/ConstantVariable.js.map +1 -1
- package/dist/esm/variables/variants/CustomVariable.js +3 -2
- package/dist/esm/variables/variants/CustomVariable.js.map +1 -1
- package/dist/esm/variables/variants/DataSourceVariable.js +3 -2
- package/dist/esm/variables/variants/DataSourceVariable.js.map +1 -1
- package/dist/esm/variables/variants/JsonVariable.js +96 -0
- package/dist/esm/variables/variants/TestVariable.js +3 -2
- package/dist/esm/variables/variants/TestVariable.js.map +1 -1
- package/dist/esm/variables/variants/json/JsonVariable.js +95 -0
- package/dist/esm/variables/variants/json/JsonVariableOptionProviders.js +70 -0
- package/dist/esm/variables/variants/query/QueryVariable.js +3 -2
- package/dist/esm/variables/variants/query/QueryVariable.js.map +1 -1
- package/dist/index.d.ts +14 -6
- package/dist/index.js +35 -13
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import { rangeUtil, dateTime, FieldType } from '@grafana/data';
|
|
2
|
+
import { config } from '@grafana/runtime';
|
|
3
|
+
import { useStyles2, ButtonGroup, ToolbarButton, Checkbox, ButtonSelect } from '@grafana/ui';
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import { sceneGraph } from '../core/sceneGraph/index.js';
|
|
6
|
+
import { SceneObjectBase } from '../core/SceneObjectBase.js';
|
|
7
|
+
import { SceneObjectUrlSyncConfig } from '../services/SceneObjectUrlSyncConfig.js';
|
|
8
|
+
import { getCompareSeriesRefId } from '../utils/getCompareSeriesRefId.js';
|
|
9
|
+
import { parseUrlParam } from '../utils/parseUrlParam.js';
|
|
10
|
+
import { css } from '@emotion/css';
|
|
11
|
+
import { of } from 'rxjs';
|
|
12
|
+
|
|
13
|
+
var __defProp = Object.defineProperty;
|
|
14
|
+
var __defProps = Object.defineProperties;
|
|
15
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
16
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
17
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
18
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
19
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
20
|
+
var __spreadValues = (a, b) => {
|
|
21
|
+
for (var prop in b || (b = {}))
|
|
22
|
+
if (__hasOwnProp.call(b, prop))
|
|
23
|
+
__defNormalProp(a, prop, b[prop]);
|
|
24
|
+
if (__getOwnPropSymbols)
|
|
25
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
26
|
+
if (__propIsEnum.call(b, prop))
|
|
27
|
+
__defNormalProp(a, prop, b[prop]);
|
|
28
|
+
}
|
|
29
|
+
return a;
|
|
30
|
+
};
|
|
31
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
32
|
+
const PREVIOUS_PERIOD_VALUE = "__previousPeriod";
|
|
33
|
+
const NO_PERIOD_VALUE = "__noPeriod";
|
|
34
|
+
const PREVIOUS_PERIOD_COMPARE_OPTION = {
|
|
35
|
+
label: "Previous period",
|
|
36
|
+
value: PREVIOUS_PERIOD_VALUE
|
|
37
|
+
};
|
|
38
|
+
const NO_COMPARE_OPTION = {
|
|
39
|
+
label: "No comparison",
|
|
40
|
+
value: NO_PERIOD_VALUE
|
|
41
|
+
};
|
|
42
|
+
const DEFAULT_COMPARE_OPTIONS = [
|
|
43
|
+
{ label: "Day before", value: "24h" },
|
|
44
|
+
{ label: "Week before", value: "1w" },
|
|
45
|
+
{ label: "Month before", value: "1M" }
|
|
46
|
+
];
|
|
47
|
+
class SceneTimeRangeCompare extends SceneObjectBase {
|
|
48
|
+
constructor(state) {
|
|
49
|
+
super(__spreadValues({ compareOptions: DEFAULT_COMPARE_OPTIONS }, state));
|
|
50
|
+
this._urlSync = new SceneObjectUrlSyncConfig(this, { keys: ["compareWith"] });
|
|
51
|
+
this._onActivate = () => {
|
|
52
|
+
const sceneTimeRange = sceneGraph.getTimeRange(this);
|
|
53
|
+
this.setState({ compareOptions: this.getCompareOptions(sceneTimeRange.state.value) });
|
|
54
|
+
this._subs.add(
|
|
55
|
+
sceneTimeRange.subscribeToState((timeRange) => {
|
|
56
|
+
const compareOptions = this.getCompareOptions(timeRange.value);
|
|
57
|
+
const stateUpdate = { compareOptions };
|
|
58
|
+
if (Boolean(this.state.compareWith) && !compareOptions.find(({ value }) => value === this.state.compareWith)) {
|
|
59
|
+
stateUpdate.compareWith = PREVIOUS_PERIOD_VALUE;
|
|
60
|
+
}
|
|
61
|
+
this.setState(stateUpdate);
|
|
62
|
+
})
|
|
63
|
+
);
|
|
64
|
+
};
|
|
65
|
+
this.getCompareOptions = (timeRange) => {
|
|
66
|
+
const diffDays = Math.ceil(timeRange.to.diff(timeRange.from));
|
|
67
|
+
const matchIndex = DEFAULT_COMPARE_OPTIONS.findIndex(({ value }) => {
|
|
68
|
+
const intervalInMs = rangeUtil.intervalToMs(value);
|
|
69
|
+
return intervalInMs >= diffDays;
|
|
70
|
+
});
|
|
71
|
+
return [
|
|
72
|
+
NO_COMPARE_OPTION,
|
|
73
|
+
PREVIOUS_PERIOD_COMPARE_OPTION,
|
|
74
|
+
...DEFAULT_COMPARE_OPTIONS.slice(matchIndex).map(({ label, value }) => ({ label, value }))
|
|
75
|
+
];
|
|
76
|
+
};
|
|
77
|
+
this.onCompareWithChanged = (compareWith) => {
|
|
78
|
+
if (compareWith === NO_PERIOD_VALUE) {
|
|
79
|
+
this.onClearCompare();
|
|
80
|
+
} else {
|
|
81
|
+
this.setState({ compareWith });
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
this.onClearCompare = () => {
|
|
85
|
+
this.setState({ compareWith: void 0 });
|
|
86
|
+
};
|
|
87
|
+
this.addActivationHandler(this._onActivate);
|
|
88
|
+
}
|
|
89
|
+
getExtraQueries(request) {
|
|
90
|
+
const extraQueries = [];
|
|
91
|
+
const compareRange = this.getCompareTimeRange(request.range);
|
|
92
|
+
if (!compareRange) {
|
|
93
|
+
return extraQueries;
|
|
94
|
+
}
|
|
95
|
+
const targets = request.targets.filter((query) => query.timeRangeCompare !== false);
|
|
96
|
+
if (targets.length) {
|
|
97
|
+
extraQueries.push({
|
|
98
|
+
req: __spreadProps(__spreadValues({}, request), {
|
|
99
|
+
targets,
|
|
100
|
+
range: compareRange
|
|
101
|
+
}),
|
|
102
|
+
processor: timeShiftAlignmentProcessor
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
return extraQueries;
|
|
106
|
+
}
|
|
107
|
+
shouldRerun(prev, next, queries) {
|
|
108
|
+
return prev.compareWith !== next.compareWith && queries.find((query) => query.timeRangeCompare !== false) !== void 0;
|
|
109
|
+
}
|
|
110
|
+
getCompareTimeRange(timeRange) {
|
|
111
|
+
let compareFrom;
|
|
112
|
+
let compareTo;
|
|
113
|
+
if (this.state.compareWith) {
|
|
114
|
+
if (this.state.compareWith === PREVIOUS_PERIOD_VALUE) {
|
|
115
|
+
const diffMs = timeRange.to.diff(timeRange.from);
|
|
116
|
+
compareFrom = dateTime(timeRange.from).subtract(diffMs);
|
|
117
|
+
compareTo = dateTime(timeRange.to).subtract(diffMs);
|
|
118
|
+
} else {
|
|
119
|
+
compareFrom = dateTime(timeRange.from).subtract(rangeUtil.intervalToMs(this.state.compareWith));
|
|
120
|
+
compareTo = dateTime(timeRange.to).subtract(rangeUtil.intervalToMs(this.state.compareWith));
|
|
121
|
+
}
|
|
122
|
+
return {
|
|
123
|
+
from: compareFrom,
|
|
124
|
+
to: compareTo,
|
|
125
|
+
raw: {
|
|
126
|
+
from: compareFrom,
|
|
127
|
+
to: compareTo
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
return void 0;
|
|
132
|
+
}
|
|
133
|
+
getUrlState() {
|
|
134
|
+
return {
|
|
135
|
+
compareWith: this.state.compareWith
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
updateFromUrl(values) {
|
|
139
|
+
if (!values.compareWith) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
const compareWith = parseUrlParam(values.compareWith);
|
|
143
|
+
if (compareWith) {
|
|
144
|
+
const compareOptions = this.getCompareOptions(sceneGraph.getTimeRange(this).state.value);
|
|
145
|
+
if (compareOptions.find(({ value }) => value === compareWith)) {
|
|
146
|
+
this.setState({
|
|
147
|
+
compareWith
|
|
148
|
+
});
|
|
149
|
+
} else {
|
|
150
|
+
this.setState({
|
|
151
|
+
compareWith: "__previousPeriod"
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
SceneTimeRangeCompare.Component = SceneTimeRangeCompareRenderer;
|
|
158
|
+
const timeShiftAlignmentProcessor = (primary, secondary) => {
|
|
159
|
+
const diff = secondary.timeRange.from.diff(primary.timeRange.from);
|
|
160
|
+
secondary.series.forEach((series) => {
|
|
161
|
+
series.refId = getCompareSeriesRefId(series.refId || "");
|
|
162
|
+
series.meta = __spreadProps(__spreadValues({}, series.meta), {
|
|
163
|
+
timeCompare: {
|
|
164
|
+
diffMs: diff,
|
|
165
|
+
isTimeShiftQuery: true
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
series.fields.forEach((field) => {
|
|
169
|
+
if (field.type === FieldType.time) {
|
|
170
|
+
field.values = field.values.map((v) => {
|
|
171
|
+
return diff < 0 ? v - diff : v + diff;
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
field.config = __spreadProps(__spreadValues({}, field.config), {
|
|
175
|
+
color: {
|
|
176
|
+
mode: "fixed",
|
|
177
|
+
fixedColor: config.theme.palette.gray60
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
return field;
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
return of(secondary);
|
|
184
|
+
};
|
|
185
|
+
function SceneTimeRangeCompareRenderer({ model }) {
|
|
186
|
+
var _a;
|
|
187
|
+
const styles = useStyles2(getStyles);
|
|
188
|
+
const { compareWith, compareOptions } = model.useState();
|
|
189
|
+
const [previousCompare, setPreviousCompare] = React.useState(compareWith);
|
|
190
|
+
const previousValue = (_a = compareOptions.find(({ value: value2 }) => value2 === previousCompare)) != null ? _a : PREVIOUS_PERIOD_COMPARE_OPTION;
|
|
191
|
+
const value = compareOptions.find(({ value: value2 }) => value2 === compareWith);
|
|
192
|
+
const enabled = Boolean(value);
|
|
193
|
+
const onClick = () => {
|
|
194
|
+
if (enabled) {
|
|
195
|
+
setPreviousCompare(compareWith);
|
|
196
|
+
model.onClearCompare();
|
|
197
|
+
} else if (!enabled) {
|
|
198
|
+
model.onCompareWithChanged(previousValue.value);
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
return /* @__PURE__ */ React.createElement(ButtonGroup, null, /* @__PURE__ */ React.createElement(ToolbarButton, {
|
|
202
|
+
variant: "canvas",
|
|
203
|
+
tooltip: "Enable time frame comparison",
|
|
204
|
+
onClick: (e) => {
|
|
205
|
+
e.stopPropagation();
|
|
206
|
+
e.preventDefault();
|
|
207
|
+
onClick();
|
|
208
|
+
}
|
|
209
|
+
}, /* @__PURE__ */ React.createElement(Checkbox, {
|
|
210
|
+
label: " ",
|
|
211
|
+
value: enabled,
|
|
212
|
+
onClick
|
|
213
|
+
}), "Comparison"), enabled ? /* @__PURE__ */ React.createElement(ButtonSelect, {
|
|
214
|
+
variant: "canvas",
|
|
215
|
+
value,
|
|
216
|
+
options: compareOptions,
|
|
217
|
+
onChange: (v) => {
|
|
218
|
+
model.onCompareWithChanged(v.value);
|
|
219
|
+
}
|
|
220
|
+
}) : /* @__PURE__ */ React.createElement(ToolbarButton, {
|
|
221
|
+
className: styles.previewButton,
|
|
222
|
+
disabled: true,
|
|
223
|
+
variant: "canvas",
|
|
224
|
+
isOpen: false
|
|
225
|
+
}, previousValue.label));
|
|
226
|
+
}
|
|
227
|
+
function getStyles(theme) {
|
|
228
|
+
return {
|
|
229
|
+
previewButton: css({
|
|
230
|
+
"&:disabled": {
|
|
231
|
+
border: `1px solid ${theme.colors.secondary.border}`,
|
|
232
|
+
color: theme.colors.text.disabled,
|
|
233
|
+
opacity: 1
|
|
234
|
+
}
|
|
235
|
+
})
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
export { DEFAULT_COMPARE_OPTIONS, NO_COMPARE_OPTION, PREVIOUS_PERIOD_COMPARE_OPTION, SceneTimeRangeCompare };
|
|
240
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVUaW1lUmFuZ2VDb21wYXJlLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb21wb25lbnRzL1NjZW5lVGltZVJhbmdlQ29tcGFyZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByYW5nZVV0aWwsIGRhdGVUaW1lLCBGaWVsZFR5cGUgfSBmcm9tICdAZ3JhZmFuYS9kYXRhJztcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJ0BncmFmYW5hL3J1bnRpbWUnO1xuaW1wb3J0IHsgdXNlU3R5bGVzMiwgQnV0dG9uR3JvdXAsIFRvb2xiYXJCdXR0b24sIENoZWNrYm94LCBCdXR0b25TZWxlY3QgfSBmcm9tICdAZ3JhZmFuYS91aSc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgc2NlbmVHcmFwaCB9IGZyb20gJy4uL2NvcmUvc2NlbmVHcmFwaC9pbmRleC5qcyc7XG5pbXBvcnQgeyBTY2VuZU9iamVjdEJhc2UgfSBmcm9tICcuLi9jb3JlL1NjZW5lT2JqZWN0QmFzZS5qcyc7XG5pbXBvcnQgeyBTY2VuZU9iamVjdFVybFN5bmNDb25maWcgfSBmcm9tICcuLi9zZXJ2aWNlcy9TY2VuZU9iamVjdFVybFN5bmNDb25maWcuanMnO1xuaW1wb3J0IHsgZ2V0Q29tcGFyZVNlcmllc1JlZklkIH0gZnJvbSAnLi4vdXRpbHMvZ2V0Q29tcGFyZVNlcmllc1JlZklkLmpzJztcbmltcG9ydCB7IHBhcnNlVXJsUGFyYW0gfSBmcm9tICcuLi91dGlscy9wYXJzZVVybFBhcmFtLmpzJztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL2Nzcyc7XG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xuXG52YXIgX19kZWZQcm9wID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZGVmUHJvcHMgPSBPYmplY3QuZGVmaW5lUHJvcGVydGllcztcbnZhciBfX2dldE93blByb3BEZXNjcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzO1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wKG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wLmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyhiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bS5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG52YXIgX19zcHJlYWRQcm9wcyA9IChhLCBiKSA9PiBfX2RlZlByb3BzKGEsIF9fZ2V0T3duUHJvcERlc2NzKGIpKTtcbmNvbnN0IFBSRVZJT1VTX1BFUklPRF9WQUxVRSA9IFwiX19wcmV2aW91c1BlcmlvZFwiO1xuY29uc3QgTk9fUEVSSU9EX1ZBTFVFID0gXCJfX25vUGVyaW9kXCI7XG5jb25zdCBQUkVWSU9VU19QRVJJT0RfQ09NUEFSRV9PUFRJT04gPSB7XG4gIGxhYmVsOiBcIlByZXZpb3VzIHBlcmlvZFwiLFxuICB2YWx1ZTogUFJFVklPVVNfUEVSSU9EX1ZBTFVFXG59O1xuY29uc3QgTk9fQ09NUEFSRV9PUFRJT04gPSB7XG4gIGxhYmVsOiBcIk5vIGNvbXBhcmlzb25cIixcbiAgdmFsdWU6IE5PX1BFUklPRF9WQUxVRVxufTtcbmNvbnN0IERFRkFVTFRfQ09NUEFSRV9PUFRJT05TID0gW1xuICB7IGxhYmVsOiBcIkRheSBiZWZvcmVcIiwgdmFsdWU6IFwiMjRoXCIgfSxcbiAgeyBsYWJlbDogXCJXZWVrIGJlZm9yZVwiLCB2YWx1ZTogXCIxd1wiIH0sXG4gIHsgbGFiZWw6IFwiTW9udGggYmVmb3JlXCIsIHZhbHVlOiBcIjFNXCIgfVxuXTtcbmNsYXNzIFNjZW5lVGltZVJhbmdlQ29tcGFyZSBleHRlbmRzIFNjZW5lT2JqZWN0QmFzZSB7XG4gIGNvbnN0cnVjdG9yKHN0YXRlKSB7XG4gICAgc3VwZXIoX19zcHJlYWRWYWx1ZXMoeyBjb21wYXJlT3B0aW9uczogREVGQVVMVF9DT01QQVJFX09QVElPTlMgfSwgc3RhdGUpKTtcbiAgICB0aGlzLl91cmxTeW5jID0gbmV3IFNjZW5lT2JqZWN0VXJsU3luY0NvbmZpZyh0aGlzLCB7IGtleXM6IFtcImNvbXBhcmVXaXRoXCJdIH0pO1xuICAgIHRoaXMuX29uQWN0aXZhdGUgPSAoKSA9PiB7XG4gICAgICBjb25zdCBzY2VuZVRpbWVSYW5nZSA9IHNjZW5lR3JhcGguZ2V0VGltZVJhbmdlKHRoaXMpO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbXBhcmVPcHRpb25zOiB0aGlzLmdldENvbXBhcmVPcHRpb25zKHNjZW5lVGltZVJhbmdlLnN0YXRlLnZhbHVlKSB9KTtcbiAgICAgIHRoaXMuX3N1YnMuYWRkKFxuICAgICAgICBzY2VuZVRpbWVSYW5nZS5zdWJzY3JpYmVUb1N0YXRlKCh0aW1lUmFuZ2UpID0+IHtcbiAgICAgICAgICBjb25zdCBjb21wYXJlT3B0aW9ucyA9IHRoaXMuZ2V0Q29tcGFyZU9wdGlvbnModGltZVJhbmdlLnZhbHVlKTtcbiAgICAgICAgICBjb25zdCBzdGF0ZVVwZGF0ZSA9IHsgY29tcGFyZU9wdGlvbnMgfTtcbiAgICAgICAgICBpZiAoQm9vbGVhbih0aGlzLnN0YXRlLmNvbXBhcmVXaXRoKSAmJiAhY29tcGFyZU9wdGlvbnMuZmluZCgoeyB2YWx1ZSB9KSA9PiB2YWx1ZSA9PT0gdGhpcy5zdGF0ZS5jb21wYXJlV2l0aCkpIHtcbiAgICAgICAgICAgIHN0YXRlVXBkYXRlLmNvbXBhcmVXaXRoID0gUFJFVklPVVNfUEVSSU9EX1ZBTFVFO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHN0YXRlVXBkYXRlKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfTtcbiAgICB0aGlzLmdldENvbXBhcmVPcHRpb25zID0gKHRpbWVSYW5nZSkgPT4ge1xuICAgICAgY29uc3QgZGlmZkRheXMgPSBNYXRoLmNlaWwodGltZVJhbmdlLnRvLmRpZmYodGltZVJhbmdlLmZyb20pKTtcbiAgICAgIGNvbnN0IG1hdGNoSW5kZXggPSBERUZBVUxUX0NPTVBBUkVfT1BUSU9OUy5maW5kSW5kZXgoKHsgdmFsdWUgfSkgPT4ge1xuICAgICAgICBjb25zdCBpbnRlcnZhbEluTXMgPSByYW5nZVV0aWwuaW50ZXJ2YWxUb01zKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIGludGVydmFsSW5NcyA+PSBkaWZmRGF5cztcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgTk9fQ09NUEFSRV9PUFRJT04sXG4gICAgICAgIFBSRVZJT1VTX1BFUklPRF9DT01QQVJFX09QVElPTixcbiAgICAgICAgLi4uREVGQVVMVF9DT01QQVJFX09QVElPTlMuc2xpY2UobWF0Y2hJbmRleCkubWFwKCh7IGxhYmVsLCB2YWx1ZSB9KSA9PiAoeyBsYWJlbCwgdmFsdWUgfSkpXG4gICAgICBdO1xuICAgIH07XG4gICAgdGhpcy5vbkNvbXBhcmVXaXRoQ2hhbmdlZCA9IChjb21wYXJlV2l0aCkgPT4ge1xuICAgICAgaWYgKGNvbXBhcmVXaXRoID09PSBOT19QRVJJT0RfVkFMVUUpIHtcbiAgICAgICAgdGhpcy5vbkNsZWFyQ29tcGFyZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbXBhcmVXaXRoIH0pO1xuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5vbkNsZWFyQ29tcGFyZSA9ICgpID0+IHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBjb21wYXJlV2l0aDogdm9pZCAwIH0pO1xuICAgIH07XG4gICAgdGhpcy5hZGRBY3RpdmF0aW9uSGFuZGxlcih0aGlzLl9vbkFjdGl2YXRlKTtcbiAgfVxuICBnZXRFeHRyYVF1ZXJpZXMocmVxdWVzdCkge1xuICAgIGNvbnN0IGV4dHJhUXVlcmllcyA9IFtdO1xuICAgIGNvbnN0IGNvbXBhcmVSYW5nZSA9IHRoaXMuZ2V0Q29tcGFyZVRpbWVSYW5nZShyZXF1ZXN0LnJhbmdlKTtcbiAgICBpZiAoIWNvbXBhcmVSYW5nZSkge1xuICAgICAgcmV0dXJuIGV4dHJhUXVlcmllcztcbiAgICB9XG4gICAgY29uc3QgdGFyZ2V0cyA9IHJlcXVlc3QudGFyZ2V0cy5maWx0ZXIoKHF1ZXJ5KSA9PiBxdWVyeS50aW1lUmFuZ2VDb21wYXJlICE9PSBmYWxzZSk7XG4gICAgaWYgKHRhcmdldHMubGVuZ3RoKSB7XG4gICAgICBleHRyYVF1ZXJpZXMucHVzaCh7XG4gICAgICAgIHJlcTogX19zcHJlYWRQcm9wcyhfX3NwcmVhZFZhbHVlcyh7fSwgcmVxdWVzdCksIHtcbiAgICAgICAgICB0YXJnZXRzLFxuICAgICAgICAgIHJhbmdlOiBjb21wYXJlUmFuZ2VcbiAgICAgICAgfSksXG4gICAgICAgIHByb2Nlc3NvcjogdGltZVNoaWZ0QWxpZ25tZW50UHJvY2Vzc29yXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGV4dHJhUXVlcmllcztcbiAgfVxuICBzaG91bGRSZXJ1bihwcmV2LCBuZXh0LCBxdWVyaWVzKSB7XG4gICAgcmV0dXJuIHByZXYuY29tcGFyZVdpdGggIT09IG5leHQuY29tcGFyZVdpdGggJiYgcXVlcmllcy5maW5kKChxdWVyeSkgPT4gcXVlcnkudGltZVJhbmdlQ29tcGFyZSAhPT0gZmFsc2UpICE9PSB2b2lkIDA7XG4gIH1cbiAgZ2V0Q29tcGFyZVRpbWVSYW5nZSh0aW1lUmFuZ2UpIHtcbiAgICBsZXQgY29tcGFyZUZyb207XG4gICAgbGV0IGNvbXBhcmVUbztcbiAgICBpZiAodGhpcy5zdGF0ZS5jb21wYXJlV2l0aCkge1xuICAgICAgaWYgKHRoaXMuc3RhdGUuY29tcGFyZVdpdGggPT09IFBSRVZJT1VTX1BFUklPRF9WQUxVRSkge1xuICAgICAgICBjb25zdCBkaWZmTXMgPSB0aW1lUmFuZ2UudG8uZGlmZih0aW1lUmFuZ2UuZnJvbSk7XG4gICAgICAgIGNvbXBhcmVGcm9tID0gZGF0ZVRpbWUodGltZVJhbmdlLmZyb20pLnN1YnRyYWN0KGRpZmZNcyk7XG4gICAgICAgIGNvbXBhcmVUbyA9IGRhdGVUaW1lKHRpbWVSYW5nZS50bykuc3VidHJhY3QoZGlmZk1zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbXBhcmVGcm9tID0gZGF0ZVRpbWUodGltZVJhbmdlLmZyb20pLnN1YnRyYWN0KHJhbmdlVXRpbC5pbnRlcnZhbFRvTXModGhpcy5zdGF0ZS5jb21wYXJlV2l0aCkpO1xuICAgICAgICBjb21wYXJlVG8gPSBkYXRlVGltZSh0aW1lUmFuZ2UudG8pLnN1YnRyYWN0KHJhbmdlVXRpbC5pbnRlcnZhbFRvTXModGhpcy5zdGF0ZS5jb21wYXJlV2l0aCkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZnJvbTogY29tcGFyZUZyb20sXG4gICAgICAgIHRvOiBjb21wYXJlVG8sXG4gICAgICAgIHJhdzoge1xuICAgICAgICAgIGZyb206IGNvbXBhcmVGcm9tLFxuICAgICAgICAgIHRvOiBjb21wYXJlVG9cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuICBnZXRVcmxTdGF0ZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29tcGFyZVdpdGg6IHRoaXMuc3RhdGUuY29tcGFyZVdpdGhcbiAgICB9O1xuICB9XG4gIHVwZGF0ZUZyb21VcmwodmFsdWVzKSB7XG4gICAgaWYgKCF2YWx1ZXMuY29tcGFyZVdpdGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29tcGFyZVdpdGggPSBwYXJzZVVybFBhcmFtKHZhbHVlcy5jb21wYXJlV2l0aCk7XG4gICAgaWYgKGNvbXBhcmVXaXRoKSB7XG4gICAgICBjb25zdCBjb21wYXJlT3B0aW9ucyA9IHRoaXMuZ2V0Q29tcGFyZU9wdGlvbnMoc2NlbmVHcmFwaC5nZXRUaW1lUmFuZ2UodGhpcykuc3RhdGUudmFsdWUpO1xuICAgICAgaWYgKGNvbXBhcmVPcHRpb25zLmZpbmQoKHsgdmFsdWUgfSkgPT4gdmFsdWUgPT09IGNvbXBhcmVXaXRoKSkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBjb21wYXJlV2l0aFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIGNvbXBhcmVXaXRoOiBcIl9fcHJldmlvdXNQZXJpb2RcIlxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblNjZW5lVGltZVJhbmdlQ29tcGFyZS5Db21wb25lbnQgPSBTY2VuZVRpbWVSYW5nZUNvbXBhcmVSZW5kZXJlcjtcbmNvbnN0IHRpbWVTaGlmdEFsaWdubWVudFByb2Nlc3NvciA9IChwcmltYXJ5LCBzZWNvbmRhcnkpID0+IHtcbiAgY29uc3QgZGlmZiA9IHNlY29uZGFyeS50aW1lUmFuZ2UuZnJvbS5kaWZmKHByaW1hcnkudGltZVJhbmdlLmZyb20pO1xuICBzZWNvbmRhcnkuc2VyaWVzLmZvckVhY2goKHNlcmllcykgPT4ge1xuICAgIHNlcmllcy5yZWZJZCA9IGdldENvbXBhcmVTZXJpZXNSZWZJZChzZXJpZXMucmVmSWQgfHwgXCJcIik7XG4gICAgc2VyaWVzLm1ldGEgPSBfX3NwcmVhZFByb3BzKF9fc3ByZWFkVmFsdWVzKHt9LCBzZXJpZXMubWV0YSksIHtcbiAgICAgIHRpbWVDb21wYXJlOiB7XG4gICAgICAgIGRpZmZNczogZGlmZixcbiAgICAgICAgaXNUaW1lU2hpZnRRdWVyeTogdHJ1ZVxuICAgICAgfVxuICAgIH0pO1xuICAgIHNlcmllcy5maWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgIGlmIChmaWVsZC50eXBlID09PSBGaWVsZFR5cGUudGltZSkge1xuICAgICAgICBmaWVsZC52YWx1ZXMgPSBmaWVsZC52YWx1ZXMubWFwKCh2KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGRpZmYgPCAwID8gdiAtIGRpZmYgOiB2ICsgZGlmZjtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBmaWVsZC5jb25maWcgPSBfX3NwcmVhZFByb3BzKF9fc3ByZWFkVmFsdWVzKHt9LCBmaWVsZC5jb25maWcpLCB7XG4gICAgICAgIGNvbG9yOiB7XG4gICAgICAgICAgbW9kZTogXCJmaXhlZFwiLFxuICAgICAgICAgIGZpeGVkQ29sb3I6IGNvbmZpZy50aGVtZS5wYWxldHRlLmdyYXk2MFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBvZihzZWNvbmRhcnkpO1xufTtcbmZ1bmN0aW9uIFNjZW5lVGltZVJhbmdlQ29tcGFyZVJlbmRlcmVyKHsgbW9kZWwgfSkge1xuICB2YXIgX2E7XG4gIGNvbnN0IHN0eWxlcyA9IHVzZVN0eWxlczIoZ2V0U3R5bGVzKTtcbiAgY29uc3QgeyBjb21wYXJlV2l0aCwgY29tcGFyZU9wdGlvbnMgfSA9IG1vZGVsLnVzZVN0YXRlKCk7XG4gIGNvbnN0IFtwcmV2aW91c0NvbXBhcmUsIHNldFByZXZpb3VzQ29tcGFyZV0gPSBSZWFjdC51c2VTdGF0ZShjb21wYXJlV2l0aCk7XG4gIGNvbnN0IHByZXZpb3VzVmFsdWUgPSAoX2EgPSBjb21wYXJlT3B0aW9ucy5maW5kKCh7IHZhbHVlOiB2YWx1ZTIgfSkgPT4gdmFsdWUyID09PSBwcmV2aW91c0NvbXBhcmUpKSAhPSBudWxsID8gX2EgOiBQUkVWSU9VU19QRVJJT0RfQ09NUEFSRV9PUFRJT047XG4gIGNvbnN0IHZhbHVlID0gY29tcGFyZU9wdGlvbnMuZmluZCgoeyB2YWx1ZTogdmFsdWUyIH0pID0+IHZhbHVlMiA9PT0gY29tcGFyZVdpdGgpO1xuICBjb25zdCBlbmFibGVkID0gQm9vbGVhbih2YWx1ZSk7XG4gIGNvbnN0IG9uQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKGVuYWJsZWQpIHtcbiAgICAgIHNldFByZXZpb3VzQ29tcGFyZShjb21wYXJlV2l0aCk7XG4gICAgICBtb2RlbC5vbkNsZWFyQ29tcGFyZSgpO1xuICAgIH0gZWxzZSBpZiAoIWVuYWJsZWQpIHtcbiAgICAgIG1vZGVsLm9uQ29tcGFyZVdpdGhDaGFuZ2VkKHByZXZpb3VzVmFsdWUudmFsdWUpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdC5jcmVhdGVFbGVtZW50KEJ1dHRvbkdyb3VwLCBudWxsLCAvKiBAX19QVVJFX18gKi8gUmVhY3QuY3JlYXRlRWxlbWVudChUb29sYmFyQnV0dG9uLCB7XG4gICAgdmFyaWFudDogXCJjYW52YXNcIixcbiAgICB0b29sdGlwOiBcIkVuYWJsZSB0aW1lIGZyYW1lIGNvbXBhcmlzb25cIixcbiAgICBvbkNsaWNrOiAoZSkgPT4ge1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIG9uQ2xpY2soKTtcbiAgICB9XG4gIH0sIC8qIEBfX1BVUkVfXyAqLyBSZWFjdC5jcmVhdGVFbGVtZW50KENoZWNrYm94LCB7XG4gICAgbGFiZWw6IFwiIFwiLFxuICAgIHZhbHVlOiBlbmFibGVkLFxuICAgIG9uQ2xpY2tcbiAgfSksIFwiQ29tcGFyaXNvblwiKSwgZW5hYmxlZCA/IC8qIEBfX1BVUkVfXyAqLyBSZWFjdC5jcmVhdGVFbGVtZW50KEJ1dHRvblNlbGVjdCwge1xuICAgIHZhcmlhbnQ6IFwiY2FudmFzXCIsXG4gICAgdmFsdWUsXG4gICAgb3B0aW9uczogY29tcGFyZU9wdGlvbnMsXG4gICAgb25DaGFuZ2U6ICh2KSA9PiB7XG4gICAgICBtb2RlbC5vbkNvbXBhcmVXaXRoQ2hhbmdlZCh2LnZhbHVlKTtcbiAgICB9XG4gIH0pIDogLyogQF9fUFVSRV9fICovIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVG9vbGJhckJ1dHRvbiwge1xuICAgIGNsYXNzTmFtZTogc3R5bGVzLnByZXZpZXdCdXR0b24sXG4gICAgZGlzYWJsZWQ6IHRydWUsXG4gICAgdmFyaWFudDogXCJjYW52YXNcIixcbiAgICBpc09wZW46IGZhbHNlXG4gIH0sIHByZXZpb3VzVmFsdWUubGFiZWwpKTtcbn1cbmZ1bmN0aW9uIGdldFN0eWxlcyh0aGVtZSkge1xuICByZXR1cm4ge1xuICAgIHByZXZpZXdCdXR0b246IGNzcyh7XG4gICAgICBcIiY6ZGlzYWJsZWRcIjoge1xuICAgICAgICBib3JkZXI6IGAxcHggc29saWQgJHt0aGVtZS5jb2xvcnMuc2Vjb25kYXJ5LmJvcmRlcn1gLFxuICAgICAgICBjb2xvcjogdGhlbWUuY29sb3JzLnRleHQuZGlzYWJsZWQsXG4gICAgICAgIG9wYWNpdHk6IDFcbiAgICAgIH1cbiAgICB9KVxuICB9O1xufVxuXG5leHBvcnQgeyBERUZBVUxUX0NPTVBBUkVfT1BUSU9OUywgTk9fQ09NUEFSRV9PUFRJT04sIFBSRVZJT1VTX1BFUklPRF9DT01QQVJFX09QVElPTiwgU2NlbmVUaW1lUmFuZ2VDb21wYXJlIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVUyTmxibVZVYVcxbFVtRnVaMlZEYjIxd1lYSmxMbXB6SWl3aWMyOTFjbU5sY3lJNld5SXVMaTh1TGk4dUxpOXpjbU12WTI5dGNHOXVaVzUwY3k5VFkyVnVaVlJwYldWU1lXNW5aVU52YlhCaGNtVXVkSE40SWwwc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCN0lFUmhkR0ZSZFdWeWVWSmxjWFZsYzNRc0lFUmhkR1ZVYVcxbExDQmtZWFJsVkdsdFpTd2dSbWxsYkdSVWVYQmxMQ0JIY21GbVlXNWhWR2hsYldVeUxDQnlZVzVuWlZWMGFXd3NJRlJwYldWU1lXNW5aU0I5SUdaeWIyMGdKMEJuY21GbVlXNWhMMlJoZEdFbk8xeHVhVzF3YjNKMElIc2dZMjl1Wm1sbklIMGdabkp2YlNBblFHZHlZV1poYm1FdmNuVnVkR2x0WlNjN1hHNXBiWEJ2Y25RZ2V5QkNkWFIwYjI1SGNtOTFjQ3dnUW5WMGRHOXVVMlZzWldOMExDQkRhR1ZqYTJKdmVDd2dWRzl2YkdKaGNrSjFkSFJ2Yml3Z2RYTmxVM1I1YkdWek1pQjlJR1p5YjIwZ0owQm5jbUZtWVc1aEwzVnBKenRjYm1sdGNHOXlkQ0JTWldGamRDQm1jbTl0SUNkeVpXRmpkQ2M3WEc1cGJYQnZjblFnZXlCelkyVnVaVWR5WVhCb0lIMGdabkp2YlNBbkxpNHZZMjl5WlM5elkyVnVaVWR5WVhCb0p6dGNibWx0Y0c5eWRDQjdJRk5qWlc1bFQySnFaV04wUW1GelpTQjlJR1p5YjIwZ0p5NHVMMk52Y21VdlUyTmxibVZQWW1wbFkzUkNZWE5sSnp0Y2JtbHRjRzl5ZENCN0lGTmpaVzVsUTI5dGNHOXVaVzUwVUhKdmNITXNJRk5qWlc1bFJHRjBZVkYxWlhKNUxDQlRZMlZ1WlU5aWFtVmpkRk4wWVhSbExDQlRZMlZ1WlU5aWFtVmpkRlZ5YkZaaGJIVmxjeUI5SUdaeWIyMGdKeTR1TDJOdmNtVXZkSGx3WlhNbk8xeHVhVzF3YjNKMElIc2dSR0YwWVZGMVpYSjVSWGgwWlc1a1pXUWdmU0JtY205dElDY3VMaTl4ZFdWeWVXbHVaeTlUWTJWdVpWRjFaWEo1VW5WdWJtVnlKenRjYm1sdGNHOXlkQ0I3SUVWNGRISmhVWFZsY25sRVpYTmpjbWx3ZEc5eUxDQkZlSFJ5WVZGMVpYSjVSR0YwWVZCeWIyTmxjM052Y2l3Z1JYaDBjbUZSZFdWeWVWQnliM1pwWkdWeUlIMGdabkp2YlNBbkxpNHZjWFZsY25scGJtY3ZSWGgwY21GUmRXVnllVkJ5YjNacFpHVnlKenRjYm1sdGNHOXlkQ0I3SUZOalpXNWxUMkpxWldOMFZYSnNVM2x1WTBOdmJtWnBaeUI5SUdaeWIyMGdKeTR1TDNObGNuWnBZMlZ6TDFOalpXNWxUMkpxWldOMFZYSnNVM2x1WTBOdmJtWnBaeWM3WEc1cGJYQnZjblFnZXlCblpYUkRiMjF3WVhKbFUyVnlhV1Z6VW1WbVNXUWdmU0JtY205dElDY3VMaTkxZEdsc2N5OW5aWFJEYjIxd1lYSmxVMlZ5YVdWelVtVm1TV1FuTzF4dWFXMXdiM0owSUhzZ2NHRnljMlZWY214UVlYSmhiU0I5SUdaeWIyMGdKeTR1TDNWMGFXeHpMM0JoY25ObFZYSnNVR0Z5WVcwbk8xeHVhVzF3YjNKMElIc2dZM056SUgwZ1puSnZiU0FuUUdWdGIzUnBiMjR2WTNOekp6dGNibWx0Y0c5eWRDQjdJRzltSUgwZ1puSnZiU0FuY25ocWN5YzdYRzVjYm1sdWRHVnlabUZqWlNCVFkyVnVaVlJwYldWU1lXNW5aVU52YlhCaGNtVlRkR0YwWlNCbGVIUmxibVJ6SUZOalpXNWxUMkpxWldOMFUzUmhkR1VnZTF4dUlDQmpiMjF3WVhKbFYybDBhRDg2SUhOMGNtbHVaenRjYmlBZ1kyOXRjR0Z5WlU5d2RHbHZibk02SUVGeWNtRjVQSHNnYkdGaVpXdzZJSE4wY21sdVp6c2dkbUZzZFdVNklITjBjbWx1WnlCOVBqdGNibjFjYmx4dVkyOXVjM1FnVUZKRlZrbFBWVk5mVUVWU1NVOUVYMVpCVEZWRklEMGdKMTlmY0hKbGRtbHZkWE5RWlhKcGIyUW5PMXh1WTI5dWMzUWdUazlmVUVWU1NVOUVYMVpCVEZWRklEMGdKMTlmYm05UVpYSnBiMlFuTzF4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnVUZKRlZrbFBWVk5mVUVWU1NVOUVYME5QVFZCQlVrVmZUMUJVU1U5T0lEMGdlMXh1SUNCc1lXSmxiRG9nSjFCeVpYWnBiM1Z6SUhCbGNtbHZaQ2NzWEc0Z0lIWmhiSFZsT2lCUVVrVldTVTlWVTE5UVJWSkpUMFJmVmtGTVZVVXNYRzU5TzF4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnVGs5ZlEwOU5VRUZTUlY5UFVGUkpUMDRnUFNCN1hHNGdJR3hoWW1Wc09pQW5UbThnWTI5dGNHRnlhWE52Ymljc1hHNGdJSFpoYkhWbE9pQk9UMTlRUlZKSlQwUmZWa0ZNVlVVc1hHNTlPMXh1WEc1bGVIQnZjblFnWTI5dWMzUWdSRVZHUVZWTVZGOURUMDFRUVZKRlgwOVFWRWxQVGxNZ1BTQmJYRzRnSUhzZ2JHRmlaV3c2SUNkRVlYa2dZbVZtYjNKbEp5d2dkbUZzZFdVNklDY3lOR2duSUgwc1hHNGdJSHNnYkdGaVpXdzZJQ2RYWldWcklHSmxabTl5WlNjc0lIWmhiSFZsT2lBbk1YY25JSDBzWEc0Z0lIc2diR0ZpWld3NklDZE5iMjUwYUNCaVpXWnZjbVVuTENCMllXeDFaVG9nSnpGTkp5QjlMRnh1WFR0Y2JseHVaWGh3YjNKMElHTnNZWE56SUZOalpXNWxWR2x0WlZKaGJtZGxRMjl0Y0dGeVpWeHVJQ0JsZUhSbGJtUnpJRk5qWlc1bFQySnFaV04wUW1GelpUeFRZMlZ1WlZScGJXVlNZVzVuWlVOdmJYQmhjbVZUZEdGMFpUNWNiaUFnYVcxd2JHVnRaVzUwY3lCRmVIUnlZVkYxWlhKNVVISnZkbWxrWlhJOFUyTmxibVZVYVcxbFVtRnVaMlZEYjIxd1lYSmxVM1JoZEdVK1hHNTdYRzRnSUhOMFlYUnBZeUJEYjIxd2IyNWxiblFnUFNCVFkyVnVaVlJwYldWU1lXNW5aVU52YlhCaGNtVlNaVzVrWlhKbGNqdGNiaUFnY0hKdmRHVmpkR1ZrSUY5MWNteFRlVzVqSUQwZ2JtVjNJRk5qWlc1bFQySnFaV04wVlhKc1UzbHVZME52Ym1acFp5aDBhR2x6TENCN0lHdGxlWE02SUZzblkyOXRjR0Z5WlZkcGRHZ25YU0I5S1R0Y2JseHVJQ0J3ZFdKc2FXTWdZMjl1YzNSeWRXTjBiM0lvYzNSaGRHVTZJRkJoY25ScFlXdzhVMk5sYm1WVWFXMWxVbUZ1WjJWRGIyMXdZWEpsVTNSaGRHVStLU0I3WEc0Z0lDQWdjM1Z3WlhJb2V5QmpiMjF3WVhKbFQzQjBhVzl1Y3pvZ1JFVkdRVlZNVkY5RFQwMVFRVkpGWDA5UVZFbFBUbE1zSUM0dUxuTjBZWFJsSUgwcE8xeHVJQ0FnSUhSb2FYTXVZV1JrUVdOMGFYWmhkR2x2YmtoaGJtUnNaWElvZEdocGN5NWZiMjVCWTNScGRtRjBaU2s3WEc0Z0lIMWNibHh1SUNCd2NtbDJZWFJsSUY5dmJrRmpkR2wyWVhSbElEMGdLQ2tnUFQ0Z2UxeHVJQ0FnSUdOdmJuTjBJSE5qWlc1bFZHbHRaVkpoYm1kbElEMGdjMk5sYm1WSGNtRndhQzVuWlhSVWFXMWxVbUZ1WjJVb2RHaHBjeWs3WEc0Z0lDQWdkR2hwY3k1elpYUlRkR0YwWlNoN0lHTnZiWEJoY21WUGNIUnBiMjV6T2lCMGFHbHpMbWRsZEVOdmJYQmhjbVZQY0hScGIyNXpLSE5qWlc1bFZHbHRaVkpoYm1kbExuTjBZWFJsTG5aaGJIVmxLU0I5S1R0Y2JseHVJQ0FnSUhSb2FYTXVYM04xWW5NdVlXUmtLRnh1SUNBZ0lDQWdjMk5sYm1WVWFXMWxVbUZ1WjJVdWMzVmljMk55YVdKbFZHOVRkR0YwWlNnb2RHbHRaVkpoYm1kbEtTQTlQaUI3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR052YlhCaGNtVlBjSFJwYjI1eklEMGdkR2hwY3k1blpYUkRiMjF3WVhKbFQzQjBhVzl1Y3loMGFXMWxVbUZ1WjJVdWRtRnNkV1VwTzF4dUlDQWdJQ0FnSUNCamIyNXpkQ0J6ZEdGMFpWVndaR0YwWlRvZ1VHRnlkR2xoYkR4VFkyVnVaVlJwYldWU1lXNW5aVU52YlhCaGNtVlRkR0YwWlQ0Z1BTQjdJR052YlhCaGNtVlBjSFJwYjI1eklIMDdYRzVjYmlBZ0lDQWdJQ0FnTHk4Z2FXWWdZM1Z5Y21WdWRDQmpiMjF3WVhKbFYybDBhQ0JwY3lCdWIzUWdZWEJ3YkdsallXSnNaU0IwYnlCMGFHVWdibVYzSUhScGJXVWdjbUZ1WjJVc0lITmxkQ0JwZENCMGJ5QndjbVYyYVc5MWN5QndaWEpwYjJRZ1kyOXRjR0Z5YVhOdmJseHVJQ0FnSUNBZ0lDQnBaaUFvUW05dmJHVmhiaWgwYUdsekxuTjBZWFJsTG1OdmJYQmhjbVZYYVhSb0tTQW1KaUFoWTI5dGNHRnlaVTl3ZEdsdmJuTXVabWx1WkNnb2V5QjJZV3gxWlNCOUtTQTlQaUIyWVd4MVpTQTlQVDBnZEdocGN5NXpkR0YwWlM1amIyMXdZWEpsVjJsMGFDa3BJSHRjYmlBZ0lDQWdJQ0FnSUNCemRHRjBaVlZ3WkdGMFpTNWpiMjF3WVhKbFYybDBhQ0E5SUZCU1JWWkpUMVZUWDFCRlVrbFBSRjlXUVV4VlJUdGNiaUFnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUhSb2FYTXVjMlYwVTNSaGRHVW9jM1JoZEdWVmNHUmhkR1VwTzF4dUlDQWdJQ0FnZlNsY2JpQWdJQ0FwTzF4dUlDQjlPMXh1WEc0Z0lIQjFZbXhwWXlCblpYUkRiMjF3WVhKbFQzQjBhVzl1Y3lBOUlDaDBhVzFsVW1GdVoyVTZJRlJwYldWU1lXNW5aU2tnUFQ0Z2UxeHVJQ0FnSUdOdmJuTjBJR1JwWm1aRVlYbHpJRDBnVFdGMGFDNWpaV2xzS0hScGJXVlNZVzVuWlM1MGJ5NWthV1ptS0hScGJXVlNZVzVuWlM1bWNtOXRLU2s3WEc1Y2JpQWdJQ0JqYjI1emRDQnRZWFJqYUVsdVpHVjRJRDBnUkVWR1FWVk1WRjlEVDAxUVFWSkZYMDlRVkVsUFRsTXVabWx1WkVsdVpHVjRLQ2g3SUhaaGJIVmxJSDBwSUQwK0lIdGNiaUFnSUNBZ0lHTnZibk4wSUdsdWRHVnlkbUZzU1c1TmN5QTlJSEpoYm1kbFZYUnBiQzVwYm5SbGNuWmhiRlJ2VFhNb2RtRnNkV1VwTzF4dUlDQWdJQ0FnY21WMGRYSnVJR2x1ZEdWeWRtRnNTVzVOY3lBK1BTQmthV1ptUkdGNWN6dGNiaUFnSUNCOUtUdGNibHh1SUNBZ0lISmxkSFZ5YmlCYlhHNGdJQ0FnSUNCT1QxOURUMDFRUVZKRlgwOVFWRWxQVGl4Y2JpQWdJQ0FnSUZCU1JWWkpUMVZUWDFCRlVrbFBSRjlEVDAxUVFWSkZYMDlRVkVsUFRpeGNiaUFnSUNBZ0lDNHVMa1JGUmtGVlRGUmZRMDlOVUVGU1JWOVBVRlJKVDA1VExuTnNhV05sS0cxaGRHTm9TVzVrWlhncExtMWhjQ2dvZXlCc1lXSmxiQ3dnZG1Gc2RXVWdmU2tnUFQ0Z0tIc2diR0ZpWld3c0lIWmhiSFZsSUgwcEtTeGNiaUFnSUNCZE8xeHVJQ0I5TzF4dVhHNGdJSEIxWW14cFl5QnZia052YlhCaGNtVlhhWFJvUTJoaGJtZGxaQ0E5SUNoamIyMXdZWEpsVjJsMGFEb2djM1J5YVc1bktTQTlQaUI3WEc0Z0lDQWdhV1lnS0dOdmJYQmhjbVZYYVhSb0lEMDlQU0JPVDE5UVJWSkpUMFJmVmtGTVZVVXBJSHRjYmlBZ0lDQWdJSFJvYVhNdWIyNURiR1ZoY2tOdmJYQmhjbVVvS1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdkR2hwY3k1elpYUlRkR0YwWlNoN0lHTnZiWEJoY21WWGFYUm9JSDBwTzF4dUlDQWdJSDFjYmlBZ2ZUdGNibHh1SUNCd2RXSnNhV01nYjI1RGJHVmhja052YlhCaGNtVWdQU0FvS1NBOVBpQjdYRzRnSUNBZ2RHaHBjeTV6WlhSVGRHRjBaU2g3SUdOdmJYQmhjbVZYYVhSb09pQjFibVJsWm1sdVpXUWdmU2s3WEc0Z0lIMDdYRzVjYmlBZ0x5OGdSMlYwSUdFZ2RHbHRaU0J6YUdsbWRHVmtJSEpsY1hWbGMzUWdkRzhnWTI5dGNHRnlaU0IzYVhSb0lIUm9aU0J3Y21sdFlYSjVJSEpsY1hWbGMzUXVYRzRnSUhCMVlteHBZeUJuWlhSRmVIUnlZVkYxWlhKcFpYTW9jbVZ4ZFdWemREb2dSR0YwWVZGMVpYSjVVbVZ4ZFdWemRDazZJRVY0ZEhKaFVYVmxjbmxFWlhOamNtbHdkRzl5VzEwZ2UxeHVJQ0FnSUdOdmJuTjBJR1Y0ZEhKaFVYVmxjbWxsY3pvZ1JYaDBjbUZSZFdWeWVVUmxjMk55YVhCMGIzSmJYU0E5SUZ0ZE8xeHVJQ0FnSUdOdmJuTjBJR052YlhCaGNtVlNZVzVuWlNBOUlIUm9hWE11WjJWMFEyOXRjR0Z5WlZScGJXVlNZVzVuWlNoeVpYRjFaWE4wTG5KaGJtZGxLVHRjYmlBZ0lDQnBaaUFvSVdOdmJYQmhjbVZTWVc1blpTa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHVjRkSEpoVVhWbGNtbGxjenRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCMFlYSm5aWFJ6SUQwZ2NtVnhkV1Z6ZEM1MFlYSm5aWFJ6TG1acGJIUmxjaWdvY1hWbGNuazZJRVJoZEdGUmRXVnllVVY0ZEdWdVpHVmtLU0E5UGlCeGRXVnllUzUwYVcxbFVtRnVaMlZEYjIxd1lYSmxJQ0U5UFNCbVlXeHpaU2s3WEc0Z0lDQWdhV1lnS0hSaGNtZGxkSE11YkdWdVozUm9LU0I3WEc0Z0lDQWdJQ0JsZUhSeVlWRjFaWEpwWlhNdWNIVnphQ2g3WEc0Z0lDQWdJQ0FnSUhKbGNUb2dlMXh1SUNBZ0lDQWdJQ0FnSUM0dUxuSmxjWFZsYzNRc1hHNGdJQ0FnSUNBZ0lDQWdkR0Z5WjJWMGN5eGNiaUFnSUNBZ0lDQWdJQ0J5WVc1blpUb2dZMjl0Y0dGeVpWSmhibWRsTEZ4dUlDQWdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ0lDQndjbTlqWlhOemIzSTZJSFJwYldWVGFHbG1kRUZzYVdkdWJXVnVkRkJ5YjJObGMzTnZjaXhjYmlBZ0lDQWdJSDBwTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z1pYaDBjbUZSZFdWeWFXVnpPMXh1SUNCOVhHNWNiaUFnTHk4Z1ZHaGxJSEYxWlhKNUlISjFibTVsY2lCemFHOTFiR1FnY21WeWRXNGdkR2hsSUdOdmJYQmhjbWx6YjI0Z2NYVmxjbmtnYVdZZ2RHaGxJR052YlhCaGNtVlhhWFJvSUhaaGJIVmxJR2hoY3lCamFHRnVaMlZrSUdGdVpDQjBhR1Z5WlNCaGNtVWdjWFZsY21sbGN5QjBhR0YwSUdoaGRtVnVKM1FnYjNCMFpXUWdiM1YwSUc5bUlGUlhRMXh1SUNCd2RXSnNhV01nYzJodmRXeGtVbVZ5ZFc0b1hHNGdJQ0FnY0hKbGRqb2dVMk5sYm1WVWFXMWxVbUZ1WjJWRGIyMXdZWEpsVTNSaGRHVXNYRzRnSUNBZ2JtVjRkRG9nVTJObGJtVlVhVzFsVW1GdVoyVkRiMjF3WVhKbFUzUmhkR1VzWEc0Z0lDQWdjWFZsY21sbGN6b2dVMk5sYm1WRVlYUmhVWFZsY25sYlhWeHVJQ0FwT2lCaWIyOXNaV0Z1SUh0Y2JpQWdJQ0J5WlhSMWNtNGdLRnh1SUNBZ0lDQWdjSEpsZGk1amIyMXdZWEpsVjJsMGFDQWhQVDBnYm1WNGRDNWpiMjF3WVhKbFYybDBhQ0FtSmlCeGRXVnlhV1Z6TG1acGJtUW9LSEYxWlhKNUtTQTlQaUJ4ZFdWeWVTNTBhVzFsVW1GdVoyVkRiMjF3WVhKbElDRTlQU0JtWVd4elpTa2dJVDA5SUhWdVpHVm1hVzVsWkZ4dUlDQWdJQ2s3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWjJWMFEyOXRjR0Z5WlZScGJXVlNZVzVuWlNoMGFXMWxVbUZ1WjJVNklGUnBiV1ZTWVc1blpTazZJRlJwYldWU1lXNW5aU0I4SUhWdVpHVm1hVzVsWkNCN1hHNGdJQ0FnYkdWMElHTnZiWEJoY21WR2NtOXRPaUJFWVhSbFZHbHRaVHRjYmlBZ0lDQnNaWFFnWTI5dGNHRnlaVlJ2T2lCRVlYUmxWR2x0WlR0Y2JseHVJQ0FnSUdsbUlDaDBhR2x6TG5OMFlYUmxMbU52YlhCaGNtVlhhWFJvS1NCN1hHNGdJQ0FnSUNCcFppQW9kR2hwY3k1emRHRjBaUzVqYjIxd1lYSmxWMmwwYUNBOVBUMGdVRkpGVmtsUFZWTmZVRVZTU1U5RVgxWkJURlZGS1NCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUdScFptWk5jeUE5SUhScGJXVlNZVzVuWlM1MGJ5NWthV1ptS0hScGJXVlNZVzVuWlM1bWNtOXRLVHRjYmlBZ0lDQWdJQ0FnWTI5dGNHRnlaVVp5YjIwZ1BTQmtZWFJsVkdsdFpTaDBhVzFsVW1GdVoyVXVabkp2YlNFcExuTjFZblJ5WVdOMEtHUnBabVpOY3lrN1hHNGdJQ0FnSUNBZ0lHTnZiWEJoY21WVWJ5QTlJR1JoZEdWVWFXMWxLSFJwYldWU1lXNW5aUzUwYnlFcExuTjFZblJ5WVdOMEtHUnBabVpOY3lrN1hHNGdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNCamIyMXdZWEpsUm5KdmJTQTlJR1JoZEdWVWFXMWxLSFJwYldWU1lXNW5aUzVtY205dElTa3VjM1ZpZEhKaFkzUW9jbUZ1WjJWVmRHbHNMbWx1ZEdWeWRtRnNWRzlOY3loMGFHbHpMbk4wWVhSbExtTnZiWEJoY21WWGFYUm9LU2s3WEc0Z0lDQWdJQ0FnSUdOdmJYQmhjbVZVYnlBOUlHUmhkR1ZVYVcxbEtIUnBiV1ZTWVc1blpTNTBieUVwTG5OMVluUnlZV04wS0hKaGJtZGxWWFJwYkM1cGJuUmxjblpoYkZSdlRYTW9kR2hwY3k1emRHRjBaUzVqYjIxd1lYSmxWMmwwYUNrcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2NtVjBkWEp1SUh0Y2JpQWdJQ0FnSUNBZ1puSnZiVG9nWTI5dGNHRnlaVVp5YjIwc1hHNGdJQ0FnSUNBZ0lIUnZPaUJqYjIxd1lYSmxWRzhzWEc0Z0lDQWdJQ0FnSUhKaGR6b2dlMXh1SUNBZ0lDQWdJQ0FnSUdaeWIyMDZJR052YlhCaGNtVkdjbTl0TEZ4dUlDQWdJQ0FnSUNBZ0lIUnZPaUJqYjIxd1lYSmxWRzhzWEc0Z0lDQWdJQ0FnSUgwc1hHNGdJQ0FnSUNCOU8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhKbGRIVnliaUIxYm1SbFptbHVaV1E3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWjJWMFZYSnNVM1JoZEdVb0tUb2dVMk5sYm1WUFltcGxZM1JWY214V1lXeDFaWE1nZTF4dUlDQWdJSEpsZEhWeWJpQjdYRzRnSUNBZ0lDQmpiMjF3WVhKbFYybDBhRG9nZEdocGN5NXpkR0YwWlM1amIyMXdZWEpsVjJsMGFDeGNiaUFnSUNCOU8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklIVndaR0YwWlVaeWIyMVZjbXdvZG1Gc2RXVnpPaUJUWTJWdVpVOWlhbVZqZEZWeWJGWmhiSFZsY3lrZ2UxeHVJQ0FnSUdsbUlDZ2hkbUZzZFdWekxtTnZiWEJoY21WWGFYUm9LU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1kyOXVjM1FnWTI5dGNHRnlaVmRwZEdnZ1BTQndZWEp6WlZWeWJGQmhjbUZ0S0haaGJIVmxjeTVqYjIxd1lYSmxWMmwwYUNrN1hHNWNiaUFnSUNCcFppQW9ZMjl0Y0dGeVpWZHBkR2dwSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR052YlhCaGNtVlBjSFJwYjI1eklEMGdkR2hwY3k1blpYUkRiMjF3WVhKbFQzQjBhVzl1Y3loelkyVnVaVWR5WVhCb0xtZGxkRlJwYldWU1lXNW5aU2gwYUdsektTNXpkR0YwWlM1MllXeDFaU2s3WEc1Y2JpQWdJQ0FnSUdsbUlDaGpiMjF3WVhKbFQzQjBhVzl1Y3k1bWFXNWtLQ2g3SUhaaGJIVmxJSDBwSUQwK0lIWmhiSFZsSUQwOVBTQmpiMjF3WVhKbFYybDBhQ2twSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV6WlhSVGRHRjBaU2g3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXRjR0Z5WlZkcGRHZ3NYRzRnSUNBZ0lDQWdJSDBwTzF4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnZEdocGN5NXpaWFJUZEdGMFpTaDdYRzRnSUNBZ0lDQWdJQ0FnWTI5dGNHRnlaVmRwZEdnNklDZGZYM0J5WlhacGIzVnpVR1Z5YVc5a0p5eGNiaUFnSUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOVhHNTlYRzVjYmk4dklGQnliMk5sYzNOdmNpQm1kVzVqZEdsdmJpQm1iM0lnZFhObElIZHBkR2dnZEdsdFpTQnphR2xtZEdWa0lHTnZiWEJoY21semIyNGdjMlZ5YVdWekxseHVMeThnVkdocGN5QmhiR2xuYm5NZ2RHaGxJSE5sWTI5dVpHRnllU0J6WlhKcFpYTWdkMmwwYUNCMGFHVWdjSEpwYldGeWVTQmhibVFnWVdSa2N5QmpkWE4wYjIxY2JpOHZJRzFsZEdGa1lYUmhJR0Z1WkNCamIyNW1hV2NnZEc4Z2RHaGxJSE5sWTI5dVpHRnllU0J6WlhKcFpYTW5JR1pwWld4a2N5QnpieUIwYUdGMElHbDBJR2x6WEc0dkx5QnlaVzVrWlhKbFpDQmhjSEJ5YjNCeWFXRjBaV3g1TGx4dVkyOXVjM1FnZEdsdFpWTm9hV1owUVd4cFoyNXRaVzUwVUhKdlkyVnpjMjl5T2lCRmVIUnlZVkYxWlhKNVJHRjBZVkJ5YjJObGMzTnZjaUE5SUNod2NtbHRZWEo1TENCelpXTnZibVJoY25rcElEMCtJSHRjYmlBZ1kyOXVjM1FnWkdsbVppQTlJSE5sWTI5dVpHRnllUzUwYVcxbFVtRnVaMlV1Wm5KdmJTNWthV1ptS0hCeWFXMWhjbmt1ZEdsdFpWSmhibWRsTG1aeWIyMHBPMXh1SUNCelpXTnZibVJoY25rdWMyVnlhV1Z6TG1admNrVmhZMmdvS0hObGNtbGxjeWtnUFQ0Z2UxeHVJQ0FnSUhObGNtbGxjeTV5WldaSlpDQTlJR2RsZEVOdmJYQmhjbVZUWlhKcFpYTlNaV1pKWkNoelpYSnBaWE11Y21WbVNXUWdmSHdnSnljcE8xeHVJQ0FnSUhObGNtbGxjeTV0WlhSaElEMGdlMXh1SUNBZ0lDQWdMaTR1YzJWeWFXVnpMbTFsZEdFc1hHNGdJQ0FnSUNBdkx5QkFkSE10YVdkdWIzSmxJRkpsYlc5MlpTQjNhR1Z1SUdoMGRIQnpPaTh2WjJsMGFIVmlMbU52YlM5bmNtRm1ZVzVoTDJkeVlXWmhibUV2Y0hWc2JDODNNVEV5T1NCcGN5QnlaV3hsWVhObFpGeHVJQ0FnSUNBZ2RHbHRaVU52YlhCaGNtVTZJSHRjYmlBZ0lDQWdJQ0FnWkdsbVprMXpPaUJrYVdabUxGeHVJQ0FnSUNBZ0lDQnBjMVJwYldWVGFHbG1kRkYxWlhKNU9pQjBjblZsTEZ4dUlDQWdJQ0FnZlN4Y2JpQWdJQ0I5TzF4dUlDQWdJSE5sY21sbGN5NW1hV1ZzWkhNdVptOXlSV0ZqYUNnb1ptbGxiR1FwSUQwK0lIdGNiaUFnSUNBZ0lDOHZJRUZzYVdkdUlHTnZiWEJoY21VZ2MyVnlhV1Z6SUhScGJXVWdjM1JoYlhCeklIZHBkR2dnY21WbVpYSmxibU5sSUhObGNtbGxjMXh1SUNBZ0lDQWdhV1lnS0dacFpXeGtMblI1Y0dVZ1BUMDlJRVpwWld4a1ZIbHdaUzUwYVcxbEtTQjdYRzRnSUNBZ0lDQWdJR1pwWld4a0xuWmhiSFZsY3lBOUlHWnBaV3hrTG5aaGJIVmxjeTV0WVhBb0tIWXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1pHbG1aaUE4SURBZ1B5QjJJQzBnWkdsbVppQTZJSFlnS3lCa2FXWm1PMXh1SUNBZ0lDQWdJQ0I5S1R0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ1ptbGxiR1F1WTI5dVptbG5JRDBnZTF4dUlDQWdJQ0FnSUNBdUxpNW1hV1ZzWkM1amIyNW1hV2NzWEc0Z0lDQWdJQ0FnSUdOdmJHOXlPaUI3WEc0Z0lDQWdJQ0FnSUNBZ2JXOWtaVG9nSjJacGVHVmtKeXhjYmlBZ0lDQWdJQ0FnSUNCbWFYaGxaRU52Ykc5eU9pQmpiMjVtYVdjdWRHaGxiV1V1Y0dGc1pYUjBaUzVuY21GNU5qQXNYRzRnSUNBZ0lDQWdJSDBzWEc0Z0lDQWdJQ0I5TzF4dUlDQWdJQ0FnY21WMGRYSnVJR1pwWld4a08xeHVJQ0FnSUgwcE8xeHVJQ0I5S1R0Y2JpQWdjbVYwZFhKdUlHOW1LSE5sWTI5dVpHRnllU2s3WEc1OU8xeHVYRzVtZFc1amRHbHZiaUJUWTJWdVpWUnBiV1ZTWVc1blpVTnZiWEJoY21WU1pXNWtaWEpsY2loN0lHMXZaR1ZzSUgwNklGTmpaVzVsUTI5dGNHOXVaVzUwVUhKdmNITThVMk5sYm1WVWFXMWxVbUZ1WjJWRGIyMXdZWEpsUGlrZ2UxeHVJQ0JqYjI1emRDQnpkSGxzWlhNZ1BTQjFjMlZUZEhsc1pYTXlLR2RsZEZOMGVXeGxjeWs3WEc0Z0lHTnZibk4wSUhzZ1kyOXRjR0Z5WlZkcGRHZ3NJR052YlhCaGNtVlBjSFJwYjI1eklIMGdQU0J0YjJSbGJDNTFjMlZUZEdGMFpTZ3BPMXh1WEc0Z0lHTnZibk4wSUZ0d2NtVjJhVzkxYzBOdmJYQmhjbVVzSUhObGRGQnlaWFpwYjNWelEyOXRjR0Z5WlYwZ1BTQlNaV0ZqZEM1MWMyVlRkR0YwWlNoamIyMXdZWEpsVjJsMGFDazdYRzRnSUdOdmJuTjBJSEJ5WlhacGIzVnpWbUZzZFdVZ1BTQmpiMjF3WVhKbFQzQjBhVzl1Y3k1bWFXNWtLQ2g3SUhaaGJIVmxJSDBwSUQwK0lIWmhiSFZsSUQwOVBTQndjbVYyYVc5MWMwTnZiWEJoY21VcElEOC9JRkJTUlZaSlQxVlRYMUJGVWtsUFJGOURUMDFRUVZKRlgwOVFWRWxQVGp0Y2JseHVJQ0JqYjI1emRDQjJZV3gxWlNBOUlHTnZiWEJoY21WUGNIUnBiMjV6TG1acGJtUW9LSHNnZG1Gc2RXVWdmU2tnUFQ0Z2RtRnNkV1VnUFQwOUlHTnZiWEJoY21WWGFYUm9LVHRjYmlBZ1kyOXVjM1FnWlc1aFlteGxaQ0E5SUVKdmIyeGxZVzRvZG1Gc2RXVXBPMXh1WEc0Z0lHTnZibk4wSUc5dVEyeHBZMnNnUFNBb0tTQTlQaUI3WEc0Z0lDQWdhV1lnS0dWdVlXSnNaV1FwSUh0Y2JpQWdJQ0FnSUhObGRGQnlaWFpwYjNWelEyOXRjR0Z5WlNoamIyMXdZWEpsVjJsMGFDazdYRzRnSUNBZ0lDQnRiMlJsYkM1dmJrTnNaV0Z5UTI5dGNHRnlaU2dwTzF4dUlDQWdJSDBnWld4elpTQnBaaUFvSVdWdVlXSnNaV1FwSUh0Y2JpQWdJQ0FnSUcxdlpHVnNMbTl1UTI5dGNHRnlaVmRwZEdoRGFHRnVaMlZrS0hCeVpYWnBiM1Z6Vm1Gc2RXVXVkbUZzZFdVcE8xeHVJQ0FnSUgxY2JpQWdmVHRjYmx4dUlDQnlaWFIxY200Z0tGeHVJQ0FnSUR4Q2RYUjBiMjVIY205MWNENWNiaUFnSUNBZ0lEeFViMjlzWW1GeVFuVjBkRzl1WEc0Z0lDQWdJQ0FnSUhaaGNtbGhiblE5WENKallXNTJZWE5jSWx4dUlDQWdJQ0FnSUNCMGIyOXNkR2x3UFZ3aVJXNWhZbXhsSUhScGJXVWdabkpoYldVZ1kyOXRjR0Z5YVhOdmJsd2lYRzRnSUNBZ0lDQWdJRzl1UTJ4cFkyczlleWhsS1NBOVBpQjdYRzRnSUNBZ0lDQWdJQ0FnWlM1emRHOXdVSEp2Y0dGbllYUnBiMjRvS1R0Y2JpQWdJQ0FnSUNBZ0lDQmxMbkJ5WlhabGJuUkVaV1poZFd4MEtDazdYRzRnSUNBZ0lDQWdJQ0FnYjI1RGJHbGpheWdwTzF4dUlDQWdJQ0FnSUNCOWZWeHVJQ0FnSUNBZ1BseHVJQ0FnSUNBZ0lDQThRMmhsWTJ0aWIzZ2diR0ZpWld3OVhDSWdYQ0lnZG1Gc2RXVTllMlZ1WVdKc1pXUjlJRzl1UTJ4cFkyczllMjl1UTJ4cFkydDlJQzgrWEc0Z0lDQWdJQ0FnSUVOdmJYQmhjbWx6YjI1Y2JpQWdJQ0FnSUR3dlZHOXZiR0poY2tKMWRIUnZiajVjYmx4dUlDQWdJQ0FnZTJWdVlXSnNaV1FnUHlBb1hHNGdJQ0FnSUNBZ0lEeENkWFIwYjI1VFpXeGxZM1JjYmlBZ0lDQWdJQ0FnSUNCMllYSnBZVzUwUFZ3aVkyRnVkbUZ6WENKY2JpQWdJQ0FnSUNBZ0lDQjJZV3gxWlQxN2RtRnNkV1Y5WEc0Z0lDQWdJQ0FnSUNBZ2IzQjBhVzl1Y3oxN1kyOXRjR0Z5WlU5d2RHbHZibk45WEc0Z0lDQWdJQ0FnSUNBZ2IyNURhR0Z1WjJVOWV5aDJLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J0YjJSbGJDNXZia052YlhCaGNtVlhhWFJvUTJoaGJtZGxaQ2gyTG5aaGJIVmxJU2s3WEc0Z0lDQWdJQ0FnSUNBZ2ZYMWNiaUFnSUNBZ0lDQWdMejVjYmlBZ0lDQWdJQ2tnT2lBb1hHNGdJQ0FnSUNBZ0lEeFViMjlzWW1GeVFuVjBkRzl1SUdOc1lYTnpUbUZ0WlQxN2MzUjViR1Z6TG5CeVpYWnBaWGRDZFhSMGIyNTlJR1JwYzJGaWJHVmtJSFpoY21saGJuUTlYQ0pqWVc1MllYTmNJaUJwYzA5d1pXNDllMlpoYkhObGZUNWNiaUFnSUNBZ0lDQWdJQ0I3Y0hKbGRtbHZkWE5XWVd4MVpTNXNZV0psYkgxY2JpQWdJQ0FnSUNBZ1BDOVViMjlzWW1GeVFuVjBkRzl1UGx4dUlDQWdJQ0FnS1gxY2JpQWdJQ0E4TDBKMWRIUnZia2R5YjNWd1BseHVJQ0FwTzF4dWZWeHVYRzVtZFc1amRHbHZiaUJuWlhSVGRIbHNaWE1vZEdobGJXVTZJRWR5WVdaaGJtRlVhR1Z0WlRJcElIdGNiaUFnY21WMGRYSnVJSHRjYmlBZ0lDQndjbVYyYVdWM1FuVjBkRzl1T2lCamMzTW9lMXh1SUNBZ0lDQWdKeVk2WkdsellXSnNaV1FuT2lCN1hHNGdJQ0FnSUNBZ0lHSnZjbVJsY2pvZ1lERndlQ0J6YjJ4cFpDQWtlM1JvWlcxbExtTnZiRzl5Y3k1elpXTnZibVJoY25rdVltOXlaR1Z5ZldBc1hHNGdJQ0FnSUNBZ0lHTnZiRzl5T2lCMGFHVnRaUzVqYjJ4dmNuTXVkR1Y0ZEM1a2FYTmhZbXhsWkN4Y2JpQWdJQ0FnSUNBZ2IzQmhZMmwwZVRvZ01TeGNiaUFnSUNBZ0lIMHNYRzRnSUNBZ2ZTa3NYRzRnSUgwN1hHNTlYRzRpWFN3aWJtRnRaWE1pT2xzaWRtRnNkV1VpWFN3aWJXRndjR2x1WjNNaU9pSTdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3UVVGdlFrRXNUVUZCVFN4eFFrRkJkMElzUjBGQlFTeHJRa0ZCUVN4RFFVRkJPMEZCUXpsQ0xFMUJRVTBzWlVGQmEwSXNSMEZCUVN4WlFVRkJMRU5CUVVFN1FVRkZha0lzVFVGQlRTdzRRa0ZCYVVNc1IwRkJRVHRCUVVGQkxFVkJRelZETEV0QlFVOHNSVUZCUVN4cFFrRkJRVHRCUVVGQkxFVkJRMUFzUzBGQlR5eEZRVUZCTEhGQ1FVRkJPMEZCUTFRc1JVRkJRVHRCUVVWUExFMUJRVTBzYVVKQlFXOUNMRWRCUVVFN1FVRkJRU3hGUVVNdlFpeExRVUZQTEVWQlFVRXNaVUZCUVR0QlFVRkJMRVZCUTFBc1MwRkJUeXhGUVVGQkxHVkJRVUU3UVVGRFZDeEZRVUZCTzBGQlJVOHNUVUZCVFN4MVFrRkJNRUlzUjBGQlFUdEJRVUZCTEVWQlEzSkRMRVZCUVVVc1MwRkJRU3hGUVVGUExGbEJRV01zUlVGQlFTeExRVUZCTEVWQlFVOHNTMEZCVFN4RlFVRkJPMEZCUVVFc1JVRkRjRU1zUlVGQlJTeExRVUZCTEVWQlFVOHNZVUZCWlN4RlFVRkJMRXRCUVVFc1JVRkJUeXhKUVVGTExFVkJRVUU3UVVGQlFTeEZRVU53UXl4RlFVRkZMRXRCUVVFc1JVRkJUeXhqUVVGblFpeEZRVUZCTEV0QlFVRXNSVUZCVHl4SlFVRkxMRVZCUVVFN1FVRkRka01zUlVGQlFUdEJRVVZQTEUxQlFVMHNPRUpCUTBnc1pVRkZWaXhEUVVGQk8wRkJRVUVzUlVGSlV5eFpRVUZaTEV0QlFUUkRMRVZCUVVFN1FVRkROMFFzU1VGQlRTeExRVUZCTEVOQlFVRXNZMEZCUVN4RFFVRkJMRVZCUVVVc1kwRkJaMElzUlVGQlFTeDFRa0ZCUVN4RlFVRkJMRVZCUVRSQ0xFdEJRVThzUTBGQlFTeERRVUZCTEVOQlFVRTdRVUZJTjBRc1NVRkJWU3hKUVVGQkxFTkJRVUVzVVVGQlFTeEhRVUZYTEVsQlFVa3NkMEpCUVhsQ0xFTkJRVUVzU1VGQlFTeEZRVUZOTEVWQlFVVXNTVUZCVFN4RlFVRkJMRU5CUVVNc1lVRkJZU3hEUVVGQkxFVkJRVWNzUTBGQlFTeERRVUZCTzBGQlQycEdMRWxCUVVFc1NVRkJRU3hEUVVGUkxHTkJRV01zVFVGQlRUdEJRVU14UWl4TlFVRk5MRTFCUVVFc1kwRkJRU3hIUVVGcFFpeFZRVUZYTEVOQlFVRXNXVUZCUVN4RFFVRmhMRWxCUVVrc1EwRkJRU3hEUVVGQk8wRkJRMjVFTEUxQlFVc3NTVUZCUVN4RFFVRkJMRkZCUVVFc1EwRkJVeXhGUVVGRkxHTkJRV2RDTEVWQlFVRXNTVUZCUVN4RFFVRkxMR3RDUVVGclFpeGpRVUZsTEVOQlFVRXNTMEZCUVN4RFFVRk5MRXRCUVVzc1EwRkJRU3hGUVVGSExFTkJRVUVzUTBGQlFUdEJRVVZ3Uml4TlFVRkJMRWxCUVVFc1EwRkJTeXhMUVVGTkxFTkJRVUVzUjBGQlFUdEJRVUZCTEZGQlExUXNZMEZCUVN4RFFVRmxMR2RDUVVGcFFpeERRVUZCTEVOQlFVTXNVMEZCWXl4TFFVRkJPMEZCUXpkRExGVkJRVUVzVFVGQlRTeGpRVUZwUWl4SFFVRkJMRWxCUVVFc1EwRkJTeXhwUWtGQmEwSXNRMEZCUVN4VFFVRkJMRU5CUVZVc1MwRkJTeXhEUVVGQkxFTkJRVUU3UVVGRE4wUXNWVUZCVFN4TlFVRkJMRmRCUVVFc1IwRkJiVVFzUlVGQlJTeGpRVUZsTEVWQlFVRXNRMEZCUVR0QlFVY3hSU3hWUVVGQkxFbEJRVWtzVVVGQlVTeEpRVUZMTEVOQlFVRXNTMEZCUVN4RFFVRk5MRmRCUVZjc1EwRkJRU3hKUVVGTExFTkJRVU1zWTBGQlpTeERRVUZCTEVsQlFVRXNRMEZCU3l4RFFVRkRMRVZCUVVVc1QwRkJXU3hMUVVGQkxFdEJRVUVzUzBGQlZTeEpRVUZMTEVOQlFVRXNTMEZCUVN4RFFVRk5MRmRCUVZjc1EwRkJSeXhGUVVGQk8wRkJRelZITEZsQlFVRXNWMEZCUVN4RFFVRlpMRmRCUVdNc1IwRkJRU3h4UWtGQlFTeERRVUZCTzBGQlFVRXNWMEZETlVJN1FVRkZRU3hWUVVGQkxFbEJRVUVzUTBGQlN5eFRRVUZUTEZkQlFWY3NRMEZCUVN4RFFVRkJPMEZCUVVFc1UwRkRNVUlzUTBGQlFUdEJRVUZCTEU5QlEwZ3NRMEZCUVR0QlFVRkJMRXRCUTBZc1EwRkJRVHRCUVVWQkxFbEJRVThzU1VGQlFTeERRVUZCTEdsQ1FVRkJMRWRCUVc5Q0xFTkJRVU1zVTBGQmVVSXNTMEZCUVR0QlFVTnVSQ3hOUVVGTkxFMUJRVUVzVVVGQlFTeEhRVUZYTEV0QlFVc3NTVUZCU3l4RFFVRkJMRk5CUVVFc1EwRkJWU3hIUVVGSExFbEJRVXNzUTBGQlFTeFRRVUZCTEVOQlFWVXNTVUZCU1N4RFFVRkRMRU5CUVVFc1EwRkJRVHRCUVVVMVJDeE5RVUZCTEUxQlFVMHNZVUZCWVN4MVFrRkJkMElzUTBGQlFTeFRRVUZCTEVOQlFWVXNRMEZCUXl4RlFVRkZMRTlCUVZrc1MwRkJRVHRCUVVOc1JTeFJRVUZOTEUxQlFVRXNXVUZCUVN4SFFVRmxMRk5CUVZVc1EwRkJRU3haUVVGQkxFTkJRV0VzUzBGQlN5eERRVUZCTEVOQlFVRTdRVUZEYWtRc1VVRkJRU3hQUVVGUExGbEJRV2RDTEVsQlFVRXNVVUZCUVN4RFFVRkJPMEZCUVVFc1QwRkRlRUlzUTBGQlFTeERRVUZCTzBGQlJVUXNUVUZCVHl4UFFVRkJPMEZCUVVFc1VVRkRUQ3hwUWtGQlFUdEJRVUZCTEZGQlEwRXNPRUpCUVVFN1FVRkJRU3hSUVVOQkxFZEJRVWNzZFVKQlFVRXNRMEZCZDBJc1MwRkJUU3hEUVVGQkxGVkJRVlVzUlVGQlJTeEhRVUZKTEVOQlFVRXNRMEZCUXl4RlFVRkZMRXRCUVVFc1JVRkJUeXhMUVVGTkxFVkJRVUVzVFVGQlR5eEZRVUZGTEV0QlFVRXNSVUZCVHl4UFFVRlJMRU5CUVVFc1EwRkJRVHRCUVVGQkxFOUJRek5HTEVOQlFVRTdRVUZCUVN4TFFVTkdMRU5CUVVFN1FVRkZRU3hKUVVGUExFbEJRVUVzUTBGQlFTeHZRa0ZCUVN4SFFVRjFRaXhEUVVGRExGZEJRWGRDTEV0QlFVRTdRVUZEY2tRc1RVRkJRU3hKUVVGSkxHZENRVUZuUWl4bFFVRnBRaXhGUVVGQk8wRkJRMjVETEZGQlFVRXNTVUZCUVN4RFFVRkxMR05CUVdVc1JVRkJRU3hEUVVGQk8wRkJRVUVzVDBGRFppeE5RVUZCTzBGQlEwd3NVVUZCU3l4SlFVRkJMRU5CUVVFc1VVRkJRU3hEUVVGVExFVkJRVVVzVjBGQlFTeEZRVUZoTEVOQlFVRXNRMEZCUVR0QlFVRkJMRTlCUXk5Q08wRkJRVUVzUzBGRFJpeERRVUZCTzBGQlJVRXNTVUZCUVN4SlFVRkJMRU5CUVU4c2FVSkJRV2xDTEUxQlFVMDdRVUZETlVJc1RVRkJRU3hKUVVGQkxFTkJRVXNzVVVGQlV5eERRVUZCTEVWQlFVVXNWMEZCWVN4RlFVRkJMRXRCUVVFc1EwRkJRU3hGUVVGWExFTkJRVUVzUTBGQlFUdEJRVUZCTEV0QlF6RkRMRU5CUVVFN1FVRXZRMFVzU1VGQlN5eEpRVUZCTEVOQlFVRXNiMEpCUVVFc1EwRkJjVUlzUzBGQlN5eFhRVUZYTEVOQlFVRXNRMEZCUVR0QlFVRkJMRWRCUXpWRE8wRkJRVUVzUlVGcFJFOHNaMEpCUVdkQ0xFOUJRVzFFTEVWQlFVRTdRVUZEZUVVc1NVRkJRU3hOUVVGTkxHVkJRWFZETEVWQlFVTXNRMEZCUVR0QlFVTTVReXhKUVVGQkxFMUJRVTBzV1VGQlpTeEhRVUZCTEVsQlFVRXNRMEZCU3l4dFFrRkJiMElzUTBGQlFTeFBRVUZCTEVOQlFWRXNTMEZCU3l4RFFVRkJMRU5CUVVFN1FVRkRNMFFzU1VGQlFTeEpRVUZKTEVOQlFVTXNXVUZCWXl4RlFVRkJPMEZCUTJwQ0xFMUJRVThzVDBGQlFTeFpRVUZCTEVOQlFVRTdRVUZCUVN4TFFVTlVPMEZCUlVFc1NVRkJUU3hOUVVGQkxFOUJRVUVzUjBGQlZTeFJRVUZSTEU5QlFWRXNRMEZCUVN4TlFVRkJMRU5CUVU4c1EwRkJReXhMUVVFMlFpeExRVUZCTEV0QlFVRXNRMEZCVFN4eFFrRkJjVUlzUzBGQlN5eERRVUZCTEVOQlFVRTdRVUZEY2tjc1NVRkJRU3hKUVVGSkxGRkJRVkVzVFVGQlVTeEZRVUZCTzBGQlEyeENMRTFCUVVFc1dVRkJRU3hEUVVGaExFbEJRVXNzUTBGQlFUdEJRVUZCTEZGQlEyaENMRWRCUVVFc1JVRkJTeXhwUTBGRFFTeFBRVVJCTEVOQlFVRXNSVUZCUVR0QlFVRkJMRlZCUlVnc1QwRkJRVHRCUVVGQkxGVkJRMEVzUzBGQlR5eEZRVUZCTEZsQlFVRTdRVUZCUVN4VFFVTlVMRU5CUVVFN1FVRkJRU3hSUVVOQkxGTkJRVmNzUlVGQlFTd3lRa0ZCUVR0QlFVRkJMRTlCUTFvc1EwRkJRU3hEUVVGQk8wRkJRVUVzUzBGRFNEdEJRVU5CTEVsQlFVOHNUMEZCUVN4WlFVRkJMRU5CUVVFN1FVRkJRU3hIUVVOVU8wRkJRVUVzUlVGSFR5eFhRVUZCTEVOQlEwd3NTVUZEUVN4RlFVRkJMRWxCUVVFc1JVRkRRU3hQUVVOVExFVkJRVUU3UVVGRFZDeEpRVU5GTEU5QlFVRXNTVUZCUVN4RFFVRkxMRmRCUVdkQ0xFdEJRVUVzU1VGQlFTeERRVUZMTEZkQlFXVXNTVUZCUVN4UFFVRkJMRU5CUVZFc1NVRkJTeXhEUVVGQkxFTkJRVU1zUzBGQlZTeExRVUZCTEV0QlFVRXNRMEZCVFN4blFrRkJjVUlzUzBGQlFTeExRVUZMTEVOQlFVMHNTMEZCUVN4TFFVRkJMRU5CUVVFc1EwRkJRVHRCUVVGQkxFZEJSVE5ITzBGQlFVRXNSVUZGVHl4dlFrRkJiMElzVTBGQk5rTXNSVUZCUVR0QlFVTjBSU3hKUVVGSkxFbEJRVUVzVjBGQlFTeERRVUZCTzBGQlEwb3NTVUZCU1N4SlFVRkJMRk5CUVVFc1EwRkJRVHRCUVVWS0xFbEJRVWtzU1VGQlFTeEpRVUZCTEVOQlFVc3NUVUZCVFN4WFFVRmhMRVZCUVVFN1FVRkRNVUlzVFVGQlNTeEpRVUZCTEVsQlFVRXNRMEZCU3l4TFFVRk5MRU5CUVVFc1YwRkJRU3hMUVVGblFpeHhRa0ZCZFVJc1JVRkJRVHRCUVVOd1JDeFJRVUZCTEUxQlFVMHNUVUZCVXl4SFFVRkJMRk5CUVVFc1EwRkJWU3hGUVVGSExFTkJRVUVzU1VGQlFTeERRVUZMTEZWQlFWVXNTVUZCU1N4RFFVRkJMRU5CUVVFN1FVRkRMME1zVVVGQlFTeFhRVUZCTEVkQlFXTXNVVUZCVXl4RFFVRkJMRk5CUVVFc1EwRkJWU3hKUVVGTExFTkJRVUVzUTBGQlJTeFRRVUZUTEUxQlFVMHNRMEZCUVN4RFFVRkJPMEZCUTNaRUxGRkJRVUVzVTBGQlFTeEhRVUZaTEZGQlFWTXNRMEZCUVN4VFFVRkJMRU5CUVZVc1JVRkJSeXhEUVVGQkxFTkJRVVVzVTBGQlV5eE5RVUZOTEVOQlFVRXNRMEZCUVR0QlFVRkJMRTlCUXpsRExFMUJRVUU3UVVGRFRDeFJRVUZqTEZkQlFVRXNSMEZCUVN4UlFVRkJMRU5CUVZNc1UwRkJWU3hEUVVGQkxFbEJRVXNzUTBGQlJTeERRVUZCTEZGQlFVRXNRMEZCVXl4VlFVRlZMRmxCUVdFc1EwRkJRU3hKUVVGQkxFTkJRVXNzUzBGQlRTeERRVUZCTEZkQlFWY3NRMEZCUXl4RFFVRkJMRU5CUVVFN1FVRkRMMFlzVVVGQldTeFRRVUZCTEVkQlFVRXNVVUZCUVN4RFFVRlRMRk5CUVZVc1EwRkJRU3hGUVVGSExFTkJRVVVzUTBGQlFTeFJRVUZCTEVOQlFWTXNWVUZCVlN4WlFVRmhMRU5CUVVFc1NVRkJRU3hEUVVGTExFdEJRVTBzUTBGQlFTeFhRVUZYTEVOQlFVTXNRMEZCUVN4RFFVRkJPMEZCUVVFc1QwRkROMFk3UVVGRFFTeE5RVUZQTEU5QlFVRTdRVUZCUVN4UlFVTk1MRWxCUVUwc1JVRkJRU3hYUVVGQk8wRkJRVUVzVVVGRFRpeEZRVUZKTEVWQlFVRXNVMEZCUVR0QlFVRkJMRkZCUTBvc1IwRkJTeXhGUVVGQk8wRkJRVUVzVlVGRFNDeEpRVUZOTEVWQlFVRXNWMEZCUVR0QlFVRkJMRlZCUTA0c1JVRkJTU3hGUVVGQkxGTkJRVUU3UVVGQlFTeFRRVU5PTzBGQlFVRXNUMEZEUml4RFFVRkJPMEZCUVVFc1MwRkRSanRCUVVWQkxFbEJRVThzVDBGQlFTeExRVUZCTEVOQlFVRXNRMEZCUVR0QlFVRkJMRWRCUTFRN1FVRkJRU3hGUVVWUExGZEJRVzlETEVkQlFVRTdRVUZEZWtNc1NVRkJUeXhQUVVGQk8wRkJRVUVzVFVGRFRDeFhRVUZCTEVWQlFXRXNTMEZCU3l4TFFVRk5MRU5CUVVFc1YwRkJRVHRCUVVGQkxFdEJRekZDTEVOQlFVRTdRVUZCUVN4SFFVTkdPMEZCUVVFc1JVRkZUeXhqUVVGakxFMUJRVGhDTEVWQlFVRTdRVUZEYWtRc1NVRkJTU3hKUVVGQkxFTkJRVU1zVDBGQlR5eFhRVUZoTEVWQlFVRTdRVUZEZGtJc1RVRkJRU3hQUVVGQk8wRkJRVUVzUzBGRFJqdEJRVVZCTEVsQlFVMHNUVUZCUVN4WFFVRkJMRWRCUVdNc1lVRkJZeXhEUVVGQkxFMUJRVUVzUTBGQlR5eFhRVUZYTEVOQlFVRXNRMEZCUVR0QlFVVndSQ3hKUVVGQkxFbEJRVWtzVjBGQllTeEZRVUZCTzBGQlEyWXNUVUZCVFN4TlFVRkJMR05CUVVFc1IwRkJhVUlzUzBGQlN5eHBRa0ZCYTBJc1EwRkJRU3hWUVVGQkxFTkJRVmNzWVVGQllTeEpRVUZKTEVOQlFVRXNRMEZCUlN4TlFVRk5MRXRCUVVzc1EwRkJRU3hEUVVGQk8wRkJSWFpHTEUxQlFVa3NTVUZCUVN4alFVRkJMRU5CUVdVc1MwRkJTeXhEUVVGRExFVkJRVVVzVDBGQldTeExRVUZCTEV0QlFVRXNTMEZCVlN4WFFVRlhMRU5CUVVjc1JVRkJRVHRCUVVNM1JDeFJRVUZCTEVsQlFVRXNRMEZCU3l4UlFVRlRMRU5CUVVFN1FVRkJRU3hWUVVOYUxGZEJRVUU3UVVGQlFTeFRRVU5FTEVOQlFVRXNRMEZCUVR0QlFVRkJMRTlCUTBrc1RVRkJRVHRCUVVOTUxGRkJRVUVzU1VGQlFTeERRVUZMTEZGQlFWTXNRMEZCUVR0QlFVRkJMRlZCUTFvc1YwRkJZU3hGUVVGQkxHdENRVUZCTzBGQlFVRXNVMEZEWkN4RFFVRkJMRU5CUVVFN1FVRkJRU3hQUVVOSU8wRkJRVUVzUzBGRFJqdEJRVUZCTEVkQlEwWTdRVUZEUml4RFFVRkJPMEZCYUVwaExIRkNRVUZCTEVOQlNVb3NVMEZCV1N4SFFVRkJMRFpDUVVGQkxFTkJRVUU3UVVGclNuSkNMRTFCUVUwc01rSkJRVUVzUjBGQmRVUXNRMEZCUXl4UFFVRkJMRVZCUVZNc1UwRkJZeXhMUVVGQk8wRkJRMjVHTEVWQlFVRXNUVUZCVFN4UFFVRlBMRk5CUVZVc1EwRkJRU3hUUVVGQkxFTkJRVlVzUzBGQlN5eEpRVUZMTEVOQlFVRXNUMEZCUVN4RFFVRlJMRlZCUVZVc1NVRkJTU3hEUVVGQkxFTkJRVUU3UVVGRGFrVXNSVUZCVlN4VFFVRkJMRU5CUVVFc1RVRkJRU3hEUVVGUExFOUJRVkVzUTBGQlFTeERRVUZETEUxQlFWY3NTMEZCUVR0QlFVTnVReXhKUVVGQkxFMUJRVUVzUTBGQlR5eExRVUZSTEVkQlFVRXNjVUpCUVVFc1EwRkJjMElzVFVGQlR5eERRVUZCTEV0QlFVRXNTVUZCVXl4RlFVRkZMRU5CUVVFc1EwRkJRVHRCUVVOMlJDeEpRVUZQTEUxQlFVRXNRMEZCUVN4SlFVRkJMRWRCUVU4c1lVRkRWQ3hEUVVGQkxHTkJRVUVzUTBGQlFTeEZRVUZCTEVWQlFVRXNUVUZCUVN4RFFVRlBMRWxCUkVVc1EwRkJRU3hGUVVGQk8wRkJRVUVzVFVGSFdpeFhRVUZoTEVWQlFVRTdRVUZCUVN4UlFVTllMRTFCUVZFc1JVRkJRU3hKUVVGQk8wRkJRVUVzVVVGRFVpeG5Ra0ZCYTBJc1JVRkJRU3hKUVVGQk8wRkJRVUVzVDBGRGNFSTdRVUZCUVN4TFFVTkdMRU5CUVVFc1EwRkJRVHRCUVVOQkxFbEJRVThzVFVGQlFTeERRVUZCTEUxQlFVRXNRMEZCVHl4UFFVRlJMRU5CUVVFc1EwRkJReXhMUVVGVkxFdEJRVUU3UVVGRkwwSXNUVUZCU1N4SlFVRkJMRXRCUVVFc1EwRkJUU3hKUVVGVExFdEJRVUVzVTBGQlFTeERRVUZWTEVsQlFVMHNSVUZCUVR0QlFVTnFReXhSUVVGQkxFdEJRVUVzUTBGQlRTeE5RVUZUTEVkQlFVRXNTMEZCUVN4RFFVRk5MRTFCUVU4c1EwRkJRU3hIUVVGQkxFTkJRVWtzUTBGQlF5eERRVUZOTEV0QlFVRTdRVUZEY2tNc1ZVRkJRU3hQUVVGUExFbEJRVThzUjBGQlFTeERRVUZCTEVkQlFVa3NRMEZCU1N4SFFVRkJMRWxCUVVFc1IwRkJUeXhEUVVGSkxFZEJRVUVzU1VGQlFTeERRVUZCTzBGQlFVRXNVMEZEYkVNc1EwRkJRU3hEUVVGQk8wRkJRVUVzVDBGRFNEdEJRVVZCTEUxQlFVMHNTMEZCUVN4RFFVRkJMRTFCUVVFc1IwRkJVeXhoUVVOV0xFTkJRVUVzWTBGQlFTeERRVUZCTEVWQlFVRXNSVUZCUVN4TFFVRkJMRU5CUVUwc1RVRkVTU3hEUVVGQkxFVkJRVUU3UVVGQlFTeFJRVVZpTEV0QlFVOHNSVUZCUVR0QlFVRkJMRlZCUTB3c1NVRkJUU3hGUVVGQkxFOUJRVUU3UVVGQlFTeFZRVU5PTEZWQlFVRXNSVUZCV1N4TlFVRlBMRU5CUVVFc1MwRkJRU3hEUVVGTkxFOUJRVkVzUTBGQlFTeE5RVUZCTzBGQlFVRXNVMEZEYmtNN1FVRkJRU3hQUVVOR0xFTkJRVUVzUTBGQlFUdEJRVU5CTEUxQlFVOHNUMEZCUVN4TFFVRkJMRU5CUVVFN1FVRkJRU3hMUVVOU0xFTkJRVUVzUTBGQlFUdEJRVUZCTEVkQlEwWXNRMEZCUVN4RFFVRkJPMEZCUTBRc1JVRkJRU3hQUVVGUExFZEJRVWNzVTBGQlV5eERRVUZCTEVOQlFVRTdRVUZEY2tJc1EwRkJRU3hEUVVGQk8wRkJSVUVzVTBGQlV5dzJRa0ZCUVN4RFFVRTRRaXhGUVVGRkxFdEJRVUVzUlVGQmNVUXNSVUZCUVR0QlFUbE9PVVlzUlVGQlFTeEpRVUZCTEVWQlFVRXNRMEZCUVR0QlFTdE9SU3hGUVVGTkxFMUJRVUVzVFVGQlFTeEhRVUZUTEZkQlFWY3NVMEZCVXl4RFFVRkJMRU5CUVVFN1FVRkRia01zUlVGQlFTeE5RVUZOTEVWQlFVVXNWMEZCUVN4RlFVRmhMR05CUVdVc1JVRkJRU3hIUVVGSkxFMUJRVTBzVVVGQlV5eEZRVUZCTEVOQlFVRTdRVUZGZGtRc1JVRkJRU3hOUVVGTkxFTkJRVU1zWlVGQmFVSXNSVUZCUVN4clFrRkJhMElzUTBGQlNTeEhRVUZCTEV0QlFVRXNRMEZCVFN4VFFVRlRMRmRCUVZjc1EwRkJRU3hEUVVGQk8wRkJRM2hGTEVWQlFVMHNUVUZCUVN4aFFVRkJMRWRCUVVFc1EwRkJaMElzUlVGQlpTeEhRVUZCTEdOQlFVRXNRMEZCUVN4SlFVRkJMRU5CUVVzc1EwRkJReXhGUVVGRkxFdEJRVUZCTEVWQlFVRkJMRTFCUVVGQkxFVkJRVmxCTEV0QlFVRkJMRTFCUVVGQkxFdEJRVlVzWlVGQlpTeERRVUZCTEV0QlFUVkVMRWxCUVdsRkxFZEJRVUVzUlVGQlFTeEhRVUZCTERoQ1FVRkJMRU5CUVVFN1FVRkZka1lzUlVGQlRTeE5RVUZCTEV0QlFVRXNSMEZCVVN4bFFVRmxMRWxCUVVzc1EwRkJRU3hEUVVGRExFVkJRVVVzUzBGQlFVRXNSVUZCUVVFc1RVRkJRVUVzUlVGQldVRXNTMEZCUVVFc1RVRkJRVUVzUzBGQlZTeFhRVUZYTEVOQlFVRXNRMEZCUVR0QlFVTjBSU3hGUVVGTkxFMUJRVUVzVDBGQlFTeEhRVUZWTEZGQlFWRXNTMEZCU3l4RFFVRkJMRU5CUVVFN1FVRkZOMElzUlVGQlFTeE5RVUZOTEZWQlFWVXNUVUZCVFR0QlFVTndRaXhKUVVGQkxFbEJRVWtzVDBGQlV5eEZRVUZCTzBGQlExZ3NUVUZCUVN4clFrRkJRU3hEUVVGdFFpeFhRVUZYTEVOQlFVRXNRMEZCUVR0QlFVTTVRaXhOUVVGQkxFdEJRVUVzUTBGQlRTeGpRVUZsTEVWQlFVRXNRMEZCUVR0QlFVRkJMRXRCUTNaQ0xFMUJRVUVzU1VGQlZ5eERRVUZETEU5QlFWTXNSVUZCUVR0QlFVTnVRaXhOUVVGTkxFdEJRVUVzUTBGQlFTeHZRa0ZCUVN4RFFVRnhRaXhqUVVGakxFdEJRVXNzUTBGQlFTeERRVUZCTzBGQlFVRXNTMEZEYUVRN1FVRkJRU3hIUVVOR0xFTkJRVUU3UVVGRlFTeEZRVU5GTEhWQ1FVRkJMRXRCUVVFc1EwRkJRU3hoUVVGQkxFTkJRVU1zYlVOQlEwVXNTMEZCUVN4RFFVRkJMR0ZCUVVFc1EwRkJRU3hoUVVGQkxFVkJRVUU3UVVGQlFTeEpRVU5ETEU5QlFWRXNSVUZCUVN4UlFVRkJPMEZCUVVFc1NVRkRVaXhQUVVGUkxFVkJRVUVzT0VKQlFVRTdRVUZCUVN4SlFVTlNMRTlCUVVFc1JVRkJVeXhEUVVGRExFTkJRVTBzUzBGQlFUdEJRVU5rTEUxQlFVRXNRMEZCUVN4RFFVRkZMR1ZCUVdkQ0xFVkJRVUVzUTBGQlFUdEJRVU5zUWl4TlFVRkJMRU5CUVVFc1EwRkJSU3hqUVVGbExFVkJRVUVzUTBGQlFUdEJRVU5xUWl4TlFVRlJMRTlCUVVFc1JVRkJRU3hEUVVGQk8wRkJRVUVzUzBGRFZqdEJRVUZCTEVkQlFVRXNhMEpCUlVNc1MwRkJRU3hEUVVGQkxHRkJRVUVzUTBGQlFTeFJRVUZCTEVWQlFVRTdRVUZCUVN4SlFVRlRMRXRCUVUwc1JVRkJRU3hIUVVGQk8wRkJRVUVzU1VGQlNTeExRVUZQTEVWQlFVRXNUMEZCUVR0QlFVRkJMRWxCUVZNc1QwRkJRVHRCUVVGQkxFZEJRV3RDTEVOQlFVVXNSVUZCUVN4WlFVVXhSQ3hEUVVWRExFVkJRVUVzVDBGQlFTeHRRa0ZEUlN4TFFVRkJMRU5CUVVFc1lVRkJRU3hEUVVGQkxGbEJRVUVzUlVGQlFUdEJRVUZCTEVsQlEwTXNUMEZCVVN4RlFVRkJMRkZCUVVFN1FVRkJRU3hKUVVOU0xFdEJRVUU3UVVGQlFTeEpRVU5CTEU5QlFWTXNSVUZCUVN4alFVRkJPMEZCUVVFc1NVRkRWQ3hSUVVGQkxFVkJRVlVzUTBGQlF5eERRVUZOTEV0QlFVRTdRVUZEWml4TlFVRk5MRXRCUVVFc1EwRkJRU3h2UWtGQlFTeERRVUZ4UWl4RlFVRkZMRXRCUVUwc1EwRkJRU3hEUVVGQk8wRkJRVUVzUzBGRGNrTTdRVUZCUVN4SFFVTkdMRzlDUVVWRExFdEJRVUVzUTBGQlFTeGhRVUZCTEVOQlFVRXNZVUZCUVN4RlFVRkJPMEZCUVVFc1NVRkJZeXhYUVVGWExFMUJRVThzUTBGQlFTeGhRVUZCTzBGQlFVRXNTVUZCWlN4UlFVRlJMRVZCUVVFc1NVRkJRVHRCUVVGQkxFbEJRVU1zVDBGQlVTeEZRVUZCTEZGQlFVRTdRVUZCUVN4SlFVRlRMRTFCUVZFc1JVRkJRU3hMUVVGQk8wRkJRVUVzUjBGREwwVXNSVUZCUVN4aFFVRkJMRU5CUVdNc1MwRkRha0lzUTBGRlNpeERRVUZCTEVOQlFVRTdRVUZGU2l4RFFVRkJPMEZCUlVFc1UwRkJVeXhWUVVGVkxFdEJRWE5DTEVWQlFVRTdRVUZEZGtNc1JVRkJUeXhQUVVGQk8wRkJRVUVzU1VGRFRDeGxRVUZsTEVkQlFVa3NRMEZCUVR0QlFVRkJMRTFCUTJwQ0xGbEJRV01zUlVGQlFUdEJRVUZCTEZGQlExb3NUVUZCVVN4RlFVRkJMRU5CUVVFc1ZVRkJRU3hGUVVGaExFdEJRVTBzUTBGQlFTeE5RVUZCTEVOQlFVOHNVMEZCVlN4RFFVRkJMRTFCUVVFc1EwRkJRU3hEUVVGQk8wRkJRVUVzVVVGRE5VTXNTMEZCUVN4RlFVRlBMRXRCUVUwc1EwRkJRU3hOUVVGQkxFTkJRVThzU1VGQlN5eERRVUZCTEZGQlFVRTdRVUZCUVN4UlFVTjZRaXhQUVVGVExFVkJRVUVzUTBGQlFUdEJRVUZCTEU5QlExZzdRVUZCUVN4TFFVTkVMRU5CUVVFN1FVRkJRU3hIUVVOSUxFTkJRVUU3UVVGRFJqczdPenNpZlE9PVxuIl0sIm5hbWVzIjpbInZhbHVlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBLE1BQU0scUJBQXdCLEdBQUEsa0JBQUEsQ0FBQTtBQUM5QixNQUFNLGVBQWtCLEdBQUEsWUFBQSxDQUFBO0FBRWpCLE1BQU0sOEJBQWlDLEdBQUE7RUFDNUMsS0FBTyxFQUFBLGlCQUFBO0VBQ1AsS0FBTyxFQUFBLHFCQUFBO0FBQ1QsRUFBQTtBQUVPLE1BQU0saUJBQW9CLEdBQUE7RUFDL0IsS0FBTyxFQUFBLGVBQUE7RUFDUCxLQUFPLEVBQUEsZUFBQTtBQUNULEVBQUE7QUFFTyxNQUFNLHVCQUEwQixHQUFBO0VBQ3JDLEVBQUUsS0FBQSxFQUFPLFlBQWMsRUFBQSxLQUFBLEVBQU8sS0FBTSxFQUFBO0VBQ3BDLEVBQUUsS0FBQSxFQUFPLGFBQWUsRUFBQSxLQUFBLEVBQU8sSUFBSyxFQUFBO0VBQ3BDLEVBQUUsS0FBQSxFQUFPLGNBQWdCLEVBQUEsS0FBQSxFQUFPLElBQUssRUFBQTtBQUN2QyxFQUFBO0FBRU8sTUFBTSw4QkFD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
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ToolbarButton, Input } from '@grafana/ui';
|
|
3
|
+
import { SceneObjectBase } from '../core/SceneObjectBase.js';
|
|
4
|
+
import { ControlsLabel } from '../utils/ControlsLabel.js';
|
|
5
|
+
|
|
6
|
+
class SceneToolbarButton extends SceneObjectBase {
|
|
7
|
+
}
|
|
8
|
+
SceneToolbarButton.Component = ({ model }) => {
|
|
9
|
+
const state = model.useState();
|
|
10
|
+
return /* @__PURE__ */ React.createElement(ToolbarButton, {
|
|
11
|
+
onClick: state.onClick,
|
|
12
|
+
icon: state.icon
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
class SceneToolbarInput extends SceneObjectBase {
|
|
16
|
+
}
|
|
17
|
+
SceneToolbarInput.Component = ({ model }) => {
|
|
18
|
+
const state = model.useState();
|
|
19
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
20
|
+
style: { display: "flex" }
|
|
21
|
+
}, state.label && /* @__PURE__ */ React.createElement(ControlsLabel, {
|
|
22
|
+
label: state.label
|
|
23
|
+
}), /* @__PURE__ */ React.createElement(Input, {
|
|
24
|
+
defaultValue: state.value,
|
|
25
|
+
width: 8,
|
|
26
|
+
onBlur: (evt) => {
|
|
27
|
+
model.state.onChange(parseInt(evt.currentTarget.value, 10));
|
|
28
|
+
}
|
|
29
|
+
}));
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export { SceneToolbarButton, SceneToolbarInput };
|
|
33
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVUb29sYmFyQnV0dG9uLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb21wb25lbnRzL1NjZW5lVG9vbGJhckJ1dHRvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgVG9vbGJhckJ1dHRvbiwgSW5wdXQgfSBmcm9tICdAZ3JhZmFuYS91aSc7XG5pbXBvcnQgeyBTY2VuZU9iamVjdEJhc2UgfSBmcm9tICcuLi9jb3JlL1NjZW5lT2JqZWN0QmFzZS5qcyc7XG5pbXBvcnQgeyBDb250cm9sc0xhYmVsIH0gZnJvbSAnLi4vdXRpbHMvQ29udHJvbHNMYWJlbC5qcyc7XG5cbmNsYXNzIFNjZW5lVG9vbGJhckJ1dHRvbiBleHRlbmRzIFNjZW5lT2JqZWN0QmFzZSB7XG59XG5TY2VuZVRvb2xiYXJCdXR0b24uQ29tcG9uZW50ID0gKHsgbW9kZWwgfSkgPT4ge1xuICBjb25zdCBzdGF0ZSA9IG1vZGVsLnVzZVN0YXRlKCk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QuY3JlYXRlRWxlbWVudChUb29sYmFyQnV0dG9uLCB7XG4gICAgb25DbGljazogc3RhdGUub25DbGljayxcbiAgICBpY29uOiBzdGF0ZS5pY29uXG4gIH0pO1xufTtcbmNsYXNzIFNjZW5lVG9vbGJhcklucHV0IGV4dGVuZHMgU2NlbmVPYmplY3RCYXNlIHtcbn1cblNjZW5lVG9vbGJhcklucHV0LkNvbXBvbmVudCA9ICh7IG1vZGVsIH0pID0+IHtcbiAgY29uc3Qgc3RhdGUgPSBtb2RlbC51c2VTdGF0ZSgpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgIHN0eWxlOiB7IGRpc3BsYXk6IFwiZmxleFwiIH1cbiAgfSwgc3RhdGUubGFiZWwgJiYgLyogQF9fUFVSRV9fICovIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29udHJvbHNMYWJlbCwge1xuICAgIGxhYmVsOiBzdGF0ZS5sYWJlbFxuICB9KSwgLyogQF9fUFVSRV9fICovIFJlYWN0LmNyZWF0ZUVsZW1lbnQoSW5wdXQsIHtcbiAgICBkZWZhdWx0VmFsdWU6IHN0YXRlLnZhbHVlLFxuICAgIHdpZHRoOiA4LFxuICAgIG9uQmx1cjogKGV2dCkgPT4ge1xuICAgICAgbW9kZWwuc3RhdGUub25DaGFuZ2UocGFyc2VJbnQoZXZ0LmN1cnJlbnRUYXJnZXQudmFsdWUsIDEwKSk7XG4gICAgfVxuICB9KSk7XG59O1xuXG5leHBvcnQgeyBTY2VuZVRvb2xiYXJCdXR0b24sIFNjZW5lVG9vbGJhcklucHV0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVUyTmxibVZVYjI5c1ltRnlRblYwZEc5dUxtcHpJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTh1TGk5emNtTXZZMjl0Y0c5dVpXNTBjeTlUWTJWdVpWUnZiMnhpWVhKQ2RYUjBiMjR1ZEhONElsMHNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQlNaV0ZqZENCbWNtOXRJQ2R5WldGamRDYzdYRzVjYm1sdGNHOXlkQ0I3SUVsamIyNU9ZVzFsTENCSmJuQjFkQ3dnVkc5dmJHSmhja0oxZEhSdmJpQjlJR1p5YjIwZ0owQm5jbUZtWVc1aEwzVnBKenRjYmx4dWFXMXdiM0owSUhzZ1UyTmxibVZQWW1wbFkzUkNZWE5sSUgwZ1puSnZiU0FuTGk0dlkyOXlaUzlUWTJWdVpVOWlhbVZqZEVKaGMyVW5PMXh1YVcxd2IzSjBJSHNnVTJObGJtVkRiMjF3YjI1bGJuUlFjbTl3Y3l3Z1UyTmxibVZQWW1wbFkzUlRkR0YwWlNCOUlHWnliMjBnSnk0dUwyTnZjbVV2ZEhsd1pYTW5PMXh1YVcxd2IzSjBJSHNnUTI5dWRISnZiSE5NWVdKbGJDQjlJR1p5YjIwZ0p5NHVMM1YwYVd4ekwwTnZiblJ5YjJ4elRHRmlaV3duTzF4dVhHNWxlSEJ2Y25RZ2FXNTBaWEptWVdObElGUnZiMnhpWVhKQ2RYUjBiMjVUZEdGMFpTQmxlSFJsYm1SeklGTmpaVzVsVDJKcVpXTjBVM1JoZEdVZ2UxeHVJQ0JwWTI5dU9pQkpZMjl1VG1GdFpUdGNiaUFnYjI1RGJHbGphem9nS0NrZ1BUNGdkbTlwWkR0Y2JuMWNibHh1Wlhod2IzSjBJR05zWVhOeklGTmpaVzVsVkc5dmJHSmhja0oxZEhSdmJpQmxlSFJsYm1SeklGTmpaVzVsVDJKcVpXTjBRbUZ6WlR4VWIyOXNZbUZ5UW5WMGRHOXVVM1JoZEdVK0lIdGNiaUFnY0hWaWJHbGpJSE4wWVhScFl5QkRiMjF3YjI1bGJuUWdQU0FvZXlCdGIyUmxiQ0I5T2lCVFkyVnVaVU52YlhCdmJtVnVkRkJ5YjNCelBGTmpaVzVsVkc5dmJHSmhja0oxZEhSdmJqNHBJRDArSUh0Y2JpQWdJQ0JqYjI1emRDQnpkR0YwWlNBOUlHMXZaR1ZzTG5WelpWTjBZWFJsS0NrN1hHNWNiaUFnSUNCeVpYUjFjbTRnUEZSdmIyeGlZWEpDZFhSMGIyNGdiMjVEYkdsamF6MTdjM1JoZEdVdWIyNURiR2xqYTMwZ2FXTnZiajE3YzNSaGRHVXVhV052Ym4wZ0x6NDdYRzRnSUgwN1hHNTlYRzVjYm1WNGNHOXlkQ0JwYm5SbGNtWmhZMlVnVTJObGJtVlViMjlzWW1GeVNXNXdkWFJUZEdGMFpTQmxlSFJsYm1SeklGTmpaVzVsVDJKcVpXTjBVM1JoZEdVZ2UxeHVJQ0IyWVd4MVpUODZJSE4wY21sdVp6dGNiaUFnYkdGaVpXdy9PaUJ6ZEhKcGJtYzdYRzRnSUc5dVEyaGhibWRsT2lBb2RtRnNkV1U2SUc1MWJXSmxjaWtnUFQ0Z2RtOXBaRHRjYm4xY2JseHVaWGh3YjNKMElHTnNZWE56SUZOalpXNWxWRzl2YkdKaGNrbHVjSFYwSUdWNGRHVnVaSE1nVTJObGJtVlBZbXBsWTNSQ1lYTmxQRk5qWlc1bFZHOXZiR0poY2tsdWNIVjBVM1JoZEdVK0lIdGNiaUFnY0hWaWJHbGpJSE4wWVhScFl5QkRiMjF3YjI1bGJuUWdQU0FvZXlCdGIyUmxiQ0I5T2lCVFkyVnVaVU52YlhCdmJtVnVkRkJ5YjNCelBGTmpaVzVsVkc5dmJHSmhja2x1Y0hWMFBpa2dQVDRnZTF4dUlDQWdJR052Ym5OMElITjBZWFJsSUQwZ2JXOWtaV3d1ZFhObFUzUmhkR1VvS1R0Y2JseHVJQ0FnSUhKbGRIVnliaUFvWEc0Z0lDQWdJQ0E4WkdsMklITjBlV3hsUFh0N0lHUnBjM0JzWVhrNklDZG1iR1Y0SnlCOWZUNWNiaUFnSUNBZ0lDQWdlM04wWVhSbExteGhZbVZzSUNZbUlEeERiMjUwY205c2MweGhZbVZzSUd4aFltVnNQWHR6ZEdGMFpTNXNZV0psYkgwZ0x6NTlYRzRnSUNBZ0lDQWdJRHhKYm5CMWRGeHVJQ0FnSUNBZ0lDQWdJR1JsWm1GMWJIUldZV3gxWlQxN2MzUmhkR1V1ZG1Gc2RXVjlYRzRnSUNBZ0lDQWdJQ0FnZDJsa2RHZzllemg5WEc0Z0lDQWdJQ0FnSUNBZ2IyNUNiSFZ5UFhzb1pYWjBLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J0YjJSbGJDNXpkR0YwWlM1dmJrTm9ZVzVuWlNod1lYSnpaVWx1ZENobGRuUXVZM1Z5Y21WdWRGUmhjbWRsZEM1MllXeDFaU3dnTVRBcEtUdGNiaUFnSUNBZ0lDQWdJQ0I5ZlZ4dUlDQWdJQ0FnSUNBdlBseHVJQ0FnSUNBZ1BDOWthWFkrWEc0Z0lDQWdLVHRjYmlBZ2ZUdGNibjFjYmlKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3pzN096dEJRV0ZQTEUxQlFVMHNNa0pCUVRKQ0xHVkJRVzlETEVOQlFVRTdRVUZOTlVVc1EwRkJRVHRCUVU1aExHdENRVUZCTEVOQlEwY3NVMEZCV1N4SFFVRkJMRU5CUVVNc1JVRkJSU3hMUVVGQkxFVkJRWEZFTEV0QlFVRTdRVUZEYUVZc1JVRkJUU3hOUVVGQkxFdEJRVUVzUjBGQlVTeE5RVUZOTEZGQlFWTXNSVUZCUVN4RFFVRkJPMEZCUlRkQ0xFVkJRVUVzZFVKQlFWRXNTMEZCUVN4RFFVRkJMR0ZCUVVFc1EwRkJRU3hoUVVGQkxFVkJRVUU3UVVGQlFTeEpRVUZqTEZOQlFWTXNTMEZCVFN4RFFVRkJMRTlCUVVFN1FVRkJRU3hKUVVGVExFMUJRVTBzUzBGQlRTeERRVUZCTEVsQlFVRTdRVUZCUVN4SFFVRk5MRU5CUVVFc1EwRkJRVHRCUVVOc1JTeERRVUZCTEVOQlFVRTdRVUZUU3l4TlFVRk5MREJDUVVFd1FpeGxRVUYzUXl4RFFVRkJPMEZCYVVJdlJTeERRVUZCTzBGQmFrSmhMR2xDUVVGQkxFTkJRMGNzVTBGQldTeEhRVUZCTEVOQlFVTXNSVUZCUlN4TFFVRkJMRVZCUVc5RUxFdEJRVUU3UVVGREwwVXNSVUZCVFN4TlFVRkJMRXRCUVVFc1IwRkJVU3hOUVVGTkxGRkJRVk1zUlVGQlFTeERRVUZCTzBGQlJUZENMRVZCUVVFc2RVSkJRMGNzUzBGQlFTeERRVUZCTEdGQlFVRXNRMEZCUVN4TFFVRkJMRVZCUVVFN1FVRkJRU3hKUVVGSkxFdEJRVUVzUlVGQlR5eEZRVUZGTEU5QlFVRXNSVUZCVXl4TlFVRlBMRVZCUVVFN1FVRkJRU3hIUVVNelFpeEZRVUZCTEV0QlFVRXNRMEZCVFN4NVFrRkJWU3hMUVVGQkxFTkJRVUVzWVVGQlFTeERRVUZCTEdGQlFVRXNSVUZCUVR0QlFVRkJMRWxCUVdNc1QwRkJUeXhMUVVGTkxFTkJRVUVzUzBGQlFUdEJRVUZCTEVkQlFVOHNiVUpCUTJ4RUxFdEJRVUVzUTBGQlFTeGhRVUZCTEVOQlFVRXNTMEZCUVN4RlFVRkJPMEZCUVVFc1NVRkRReXhqUVVGakxFdEJRVTBzUTBGQlFTeExRVUZCTzBGQlFVRXNTVUZEY0VJc1MwRkJUeXhGUVVGQkxFTkJRVUU3UVVGQlFTeEpRVU5RTEUxQlFVRXNSVUZCVVN4RFFVRkRMRWRCUVZFc1MwRkJRVHRCUVVObUxFMUJRVUVzUzBGQlFTeERRVUZOTEUxQlFVMHNVVUZCVXl4RFFVRkJMRkZCUVVFc1EwRkJVeXhKUVVGSkxHRkJRV01zUTBGQlFTeExRVUZCTEVWQlFVOHNSVUZCUlN4RFFVRkRMRU5CUVVFc1EwRkJRVHRCUVVGQkxFdEJRelZFTzBGQlFVRXNSMEZEUml4RFFVTkdMRU5CUVVFc1EwRkJRVHRCUVVWS0xFTkJRVUU3T3pzN0luMD1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWFPLE1BQU0sMkJBQTJCLGVBQW9DLENBQUE7QUFNNUUsQ0FBQTtBQU5hLGtCQUFBLENBQ0csU0FBWSxHQUFBLENBQUMsRUFBRSxLQUFBLEVBQXFELEtBQUE7QUFDMUUsRUFBQSxNQUFBLEtBQUEsR0FBUSxNQUFNLFFBQVMsRUFBQSxDQUFBO0FBRTdCLEVBQVEsdUJBQUEsS0FBQSxDQUFBLGNBQUEsYUFBQSxFQUFBO0FBQWMsSUFBQSxPQUFBLEVBQVMsS0FBTSxDQUFBLE9BQUE7QUFBUyxJQUFBLElBQUEsRUFBTSxLQUFNLENBQUEsSUFBQTtHQUFNLENBQUEsQ0FBQTtBQUNsRSxDQUFBLENBQUE7QUFTSyxNQUFNLDBCQUEwQixlQUF3QyxDQUFBO0FBaUIvRSxDQUFBO0FBakJhLGlCQUFBLENBQ0csU0FBWSxHQUFBLENBQUMsRUFBRSxLQUFBLEVBQW9ELEtBQUE7QUFDekUsRUFBQSxNQUFBLEtBQUEsR0FBUSxNQUFNLFFBQVMsRUFBQSxDQUFBO0FBRTdCLEVBQ0csdUJBQUEsS0FBQSxDQUFBLGNBQUEsS0FBQSxFQUFBO0lBQUksS0FBTyxFQUFBLEVBQUUsU0FBUyxNQUFPLEVBQUE7QUFBQSxHQUFBLEVBQzNCLEtBQU0sQ0FBQSxLQUFBLG9CQUFVLEtBQUEsQ0FBQSxhQUFBLENBQUEsYUFBQSxFQUFBO0FBQWMsSUFBQSxLQUFBLEVBQU8sS0FBTSxDQUFBLEtBQUE7R0FBTyxDQUFBLGtCQUNsRCxLQUFBLENBQUEsYUFBQSxDQUFBLEtBQUEsRUFBQTtBQUNDLElBQUEsWUFBQSxFQUFjLEtBQU0sQ0FBQSxLQUFBO0lBQ3BCLEtBQU8sRUFBQSxDQUFBO0FBQ1AsSUFBQSxNQUFBLEVBQVEsQ0FBQyxHQUFRLEtBQUE7QUFDZixNQUFBLEtBQUEsQ0FBTSxNQUFNLFFBQVMsQ0FBQSxRQUFBLENBQVMsSUFBSSxhQUFjLENBQUEsS0FBQSxFQUFPLEVBQUUsQ0FBQyxDQUFBLENBQUE7QUFBQSxLQUFBO0FBQzVELEdBQ0YsQ0FDRixDQUFBLENBQUE7QUFFSixDQUFBOzs7OyJ9
|