@sapui5/sap.fe.core 1.111.1 → 1.112.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/package.json +1 -1
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/ActionRuntime-dbg.js +4 -4
- package/src/sap/fe/core/ActionRuntime.js +1 -1
- package/src/sap/fe/core/ActionRuntime.js.map +1 -1
- package/src/sap/fe/core/ActionRuntime.ts +11 -11
- package/src/sap/fe/core/AppComponent-dbg.js +27 -5
- package/src/sap/fe/core/AppComponent.js +1 -1
- package/src/sap/fe/core/AppComponent.js.map +1 -1
- package/src/sap/fe/core/AppComponent.ts +58 -3
- package/src/sap/fe/core/AppStateHandler-dbg.js +5 -2
- package/src/sap/fe/core/AppStateHandler.js +1 -1
- package/src/sap/fe/core/AppStateHandler.js.map +1 -1
- package/src/sap/fe/core/AppStateHandler.ts +10 -1
- package/src/sap/fe/core/BaseController-dbg.js +1 -1
- package/src/sap/fe/core/BaseController.ts +2 -1
- package/src/sap/fe/core/CommonUtils-dbg.js +152 -365
- package/src/sap/fe/core/CommonUtils.js +1 -1
- package/src/sap/fe/core/CommonUtils.js.map +1 -1
- package/src/sap/fe/core/CommonUtils.ts +201 -478
- package/src/sap/fe/core/ExtensionAPI-dbg.js +2 -1
- package/src/sap/fe/core/ExtensionAPI.js +1 -1
- package/src/sap/fe/core/ExtensionAPI.js.map +1 -1
- package/src/sap/fe/core/ExtensionAPI.ts +9 -1
- package/src/sap/fe/core/PageController-dbg.js +26 -31
- package/src/sap/fe/core/PageController.js +1 -1
- package/src/sap/fe/core/PageController.js.map +1 -1
- package/src/sap/fe/core/PageController.ts +17 -3
- package/src/sap/fe/core/ResourceModel-dbg.js +71 -0
- package/src/sap/fe/core/ResourceModel.js +6 -0
- package/src/sap/fe/core/ResourceModel.js.map +1 -0
- package/src/sap/fe/core/ResourceModel.ts +67 -0
- package/src/sap/fe/core/TemplateComponent-dbg.js +1 -1
- package/src/sap/fe/core/TemplateComponent.ts +1 -0
- package/src/sap/fe/core/TemplateModel-dbg.js +1 -1
- package/src/sap/fe/core/TemplateModel.ts +6 -1
- package/src/sap/fe/core/buildingBlocks/AttributeModel-dbg.js +5 -7
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js +1 -1
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js.map +1 -1
- package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +6 -5
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase-dbg.js +163 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js +6 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.ts +169 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport-dbg.js +88 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport.js +6 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport.ts +147 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor-dbg.js +905 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor.js +21 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/{BuildingBlockRuntime.ts → BuildingBlockTemplateProcessor.ts} +290 -362
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock-dbg.js +79 -0
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock.js +15 -0
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock.ts +68 -0
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment-dbg.js +162 -0
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.js +6 -0
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.ts +181 -0
- package/src/sap/fe/core/buildingBlocks/TraceInfo-dbg.js +4 -2
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +1 -1
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js.map +1 -1
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +5 -3
- package/src/sap/fe/core/controllerextensions/EditFlow-dbg.js +890 -220
- package/src/sap/fe/core/controllerextensions/EditFlow.js +1 -1
- package/src/sap/fe/core/controllerextensions/EditFlow.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +974 -239
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +24 -34
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +1 -1
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +71 -61
- package/src/sap/fe/core/controllerextensions/InternalRouting-dbg.js +14 -17
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +1 -1
- package/src/sap/fe/core/controllerextensions/InternalRouting.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +23 -17
- package/src/sap/fe/core/controllerextensions/KPIManagement-dbg.js +1 -1
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +2 -0
- package/src/sap/fe/core/controllerextensions/MassEdit-dbg.js +3 -3
- package/src/sap/fe/core/controllerextensions/MassEdit.js +1 -1
- package/src/sap/fe/core/controllerextensions/MassEdit.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +2 -2
- package/src/sap/fe/core/controllerextensions/MessageHandler-dbg.js +2 -1
- package/src/sap/fe/core/controllerextensions/MessageHandler.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +2 -0
- package/src/sap/fe/core/controllerextensions/PageReady-dbg.js +1 -1
- package/src/sap/fe/core/controllerextensions/PageReady.ts +24 -0
- package/src/sap/fe/core/controllerextensions/Paginator-dbg.js +2 -1
- package/src/sap/fe/core/controllerextensions/Paginator.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/Paginator.ts +7 -0
- package/src/sap/fe/core/controllerextensions/Placeholder-dbg.js +1 -1
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +8 -0
- package/src/sap/fe/core/controllerextensions/Share-dbg.js +8 -1
- package/src/sap/fe/core/controllerextensions/Share.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/Share.ts +11 -0
- package/src/sap/fe/core/controllerextensions/SideEffects-dbg.js +14 -13
- package/src/sap/fe/core/controllerextensions/SideEffects.js +1 -1
- package/src/sap/fe/core/controllerextensions/SideEffects.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +27 -27
- package/src/sap/fe/core/controllerextensions/ViewState-dbg.js +17 -8
- package/src/sap/fe/core/controllerextensions/ViewState.js +1 -1
- package/src/sap/fe/core/controllerextensions/ViewState.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/ViewState.ts +35 -14
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase-dbg.js +6 -5
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +7 -4
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync-dbg.js +285 -82
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +326 -89
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon-dbg.js +23 -2
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +32 -3
- package/src/sap/fe/core/controllerextensions/collaboration/Manage-dbg.js +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +2 -3
- package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +17 -3
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block-dbg.js +65 -34
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js +1 -1
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.tsx +33 -18
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper-dbg.js +45 -31
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +52 -42
- package/src/sap/fe/core/controllerextensions/editFlow/draft-dbg.js +44 -49
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +43 -63
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal-dbg.js +77 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.js +6 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.ts +114 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade-dbg.js +1505 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +6 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +1985 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations-dbg.js +3 -1415
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +2 -1921
- package/src/sap/fe/core/controllerextensions/editFlow/sticky-dbg.js +10 -11
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +9 -13
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling-dbg.js +43 -41
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +1 -1
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +44 -47
- package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher-dbg.js +12 -1
- package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.ts +19 -0
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy-dbg.js +12 -13
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +1 -1
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +32 -13
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +4 -1
- package/src/sap/fe/core/controls/CommandExecution-dbg.js +16 -5
- package/src/sap/fe/core/controls/CommandExecution.js +1 -1
- package/src/sap/fe/core/controls/CommandExecution.js.map +1 -1
- package/src/sap/fe/core/controls/CommandExecution.ts +15 -3
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler-dbg.js +3 -2
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +1 -1
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js.map +1 -1
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +4 -1
- package/src/sap/fe/core/controls/FilterBar-dbg.js +1 -1
- package/src/sap/fe/core/controls/FilterBar.ts +5 -0
- package/src/sap/fe/core/controls/FormElementWrapper-dbg.js +1 -1
- package/src/sap/fe/core/controls/FormElementWrapper.ts +3 -0
- package/src/sap/fe/core/controls/filterbar/FilterContainer-dbg.js +1 -1
- package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +7 -0
- package/src/sap/fe/core/controls/filterbar/VisualFilter-dbg.js +1 -1
- package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +4 -0
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer-dbg.js +1 -1
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +10 -0
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils-dbg.js +4 -3
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +1 -1
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js.map +1 -1
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +3 -2
- package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +0 -1
- package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +2 -0
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers-dbg.js +6 -1
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +1 -1
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js.map +1 -1
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +5 -0
- package/src/sap/fe/core/converters/ConverterContext-dbg.js +1 -1
- package/src/sap/fe/core/converters/ConverterContext.ts +2 -1
- package/src/sap/fe/core/converters/ManifestSettings-dbg.js +1 -8
- package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.js.map +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +15 -6
- package/src/sap/fe/core/converters/ManifestWrapper-dbg.js +17 -1
- package/src/sap/fe/core/converters/ManifestWrapper.js +1 -1
- package/src/sap/fe/core/converters/ManifestWrapper.js.map +1 -1
- package/src/sap/fe/core/converters/ManifestWrapper.ts +16 -0
- package/src/sap/fe/core/converters/MetaModelConverter-dbg.js +61 -49
- package/src/sap/fe/core/converters/MetaModelConverter.js +1 -1
- package/src/sap/fe/core/converters/MetaModelConverter.js.map +1 -1
- package/src/sap/fe/core/converters/MetaModelConverter.ts +65 -51
- package/src/sap/fe/core/converters/TemplateConverter-dbg.js +2 -1
- package/src/sap/fe/core/converters/TemplateConverter.js.map +1 -1
- package/src/sap/fe/core/converters/TemplateConverter.ts +2 -1
- package/src/sap/fe/core/converters/annotations/DataField-dbg.js +65 -16
- package/src/sap/fe/core/converters/annotations/DataField.js +1 -1
- package/src/sap/fe/core/converters/annotations/DataField.js.map +1 -1
- package/src/sap/fe/core/converters/annotations/DataField.ts +62 -18
- package/src/sap/fe/core/converters/common/AnnotationConverter-dbg.js +1010 -957
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +1 -1
- package/src/sap/fe/core/converters/common/AnnotationConverter.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/Action-dbg.js +8 -8
- package/src/sap/fe/core/converters/controls/Common/Action.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/Action.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/Action.ts +28 -26
- package/src/sap/fe/core/converters/controls/Common/Chart-dbg.js +95 -33
- package/src/sap/fe/core/converters/controls/Common/Chart.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/Chart.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +133 -49
- package/src/sap/fe/core/converters/controls/Common/DataVisualization-dbg.js +99 -62
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +140 -75
- package/src/sap/fe/core/converters/controls/Common/Form-dbg.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/Form.ts +3 -3
- package/src/sap/fe/core/converters/controls/Common/KPI-dbg.js +6 -6
- package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/KPI.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +15 -15
- package/src/sap/fe/core/converters/controls/Common/Table-dbg.js +97 -69
- package/src/sap/fe/core/converters/controls/Common/Table.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/Table.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/Table.ts +161 -137
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions-dbg.js +3 -3
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +10 -9
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar-dbg.js +48 -44
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +1 -1
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js.map +1 -1
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +130 -86
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters-dbg.js +34 -26
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +1 -1
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js.map +1 -1
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +62 -45
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar-dbg.js +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet-dbg.js +6 -6
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js.map +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +5 -8
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection-dbg.js +34 -13
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js.map +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +54 -20
- package/src/sap/fe/core/converters/helpers/Aggregation-dbg.js +3 -1
- package/src/sap/fe/core/converters/helpers/Aggregation.js.map +1 -1
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +8 -0
- package/src/sap/fe/core/converters/helpers/ConfigurableObject-dbg.js +7 -6
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +1 -1
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js.map +1 -1
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +19 -10
- package/src/sap/fe/core/converters/helpers/DataFieldHelper-dbg.js +1 -1
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +7 -2
- package/src/sap/fe/core/converters/helpers/ID-dbg.js +1 -1
- package/src/sap/fe/core/converters/helpers/ID.ts +2 -1
- package/src/sap/fe/core/converters/helpers/IssueManager-dbg.js +9 -8
- package/src/sap/fe/core/converters/helpers/IssueManager.js +1 -1
- package/src/sap/fe/core/converters/helpers/IssueManager.js.map +1 -1
- package/src/sap/fe/core/converters/helpers/IssueManager.ts +8 -7
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction-dbg.js +8 -7
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +1 -1
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js.map +1 -1
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +9 -6
- package/src/sap/fe/core/converters/templates/ListReportConverter-dbg.js +25 -33
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +1 -1
- package/src/sap/fe/core/converters/templates/ListReportConverter.js.map +1 -1
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +35 -35
- package/src/sap/fe/core/converters/templates/ObjectPageConverter-dbg.js +11 -4
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +1 -1
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js.map +1 -1
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +7 -1
- package/src/sap/fe/core/formatters/FPMFormatter-dbg.js +1 -1
- package/src/sap/fe/core/formatters/FPMFormatter.ts +1 -1
- package/src/sap/fe/core/formatters/FiscalFormat-dbg.js +2 -2
- package/src/sap/fe/core/formatters/FiscalFormat.ts +6 -1
- package/src/sap/fe/core/formatters/TableFormatter-dbg.js +2 -2
- package/src/sap/fe/core/formatters/TableFormatter.js +1 -1
- package/src/sap/fe/core/formatters/TableFormatter.js.map +1 -1
- package/src/sap/fe/core/formatters/TableFormatter.ts +1 -1
- package/src/sap/fe/core/formatters/ValueFormatter-dbg.js +5 -5
- package/src/sap/fe/core/formatters/ValueFormatter.js +1 -1
- package/src/sap/fe/core/formatters/ValueFormatter.js.map +1 -1
- package/src/sap/fe/core/formatters/ValueFormatter.ts +6 -4
- package/src/sap/fe/core/fpm/Component-dbg.js +1 -1
- package/src/sap/fe/core/fpm/Component.ts +1 -0
- package/src/sap/fe/core/fpm/manifest.json +1 -1
- package/src/sap/fe/core/helpers/AppStartupHelper-dbg.js +2 -2
- package/src/sap/fe/core/helpers/AppStartupHelper.js +1 -1
- package/src/sap/fe/core/helpers/AppStartupHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +1 -1
- package/src/sap/fe/core/helpers/BindingToolkit-dbg.js +6 -6
- package/src/sap/fe/core/helpers/BindingToolkit.js.map +1 -1
- package/src/sap/fe/core/helpers/BindingToolkit.ts +8 -8
- package/src/sap/fe/core/helpers/ClassSupport-dbg.js +1 -1
- package/src/sap/fe/core/helpers/ClassSupport.js.map +1 -1
- package/src/sap/fe/core/helpers/ClassSupport.ts +1 -0
- package/src/sap/fe/core/helpers/DeleteHelper-dbg.js +93 -62
- package/src/sap/fe/core/helpers/DeleteHelper.js +1 -1
- package/src/sap/fe/core/helpers/DeleteHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/DeleteHelper.ts +140 -185
- package/src/sap/fe/core/helpers/MassEditHelper-dbg.js +20 -18
- package/src/sap/fe/core/helpers/MassEditHelper.js +1 -1
- package/src/sap/fe/core/helpers/MassEditHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/MassEditHelper.ts +22 -23
- package/src/sap/fe/core/helpers/MessageStrip-dbg.js +4 -5
- package/src/sap/fe/core/helpers/MessageStrip.js +1 -1
- package/src/sap/fe/core/helpers/MessageStrip.js.map +1 -1
- package/src/sap/fe/core/helpers/MessageStrip.ts +4 -4
- package/src/sap/fe/core/helpers/MetaModelFunction-dbg.js +354 -0
- package/src/sap/fe/core/helpers/MetaModelFunction.js +6 -0
- package/src/sap/fe/core/helpers/MetaModelFunction.js.map +1 -0
- package/src/sap/fe/core/helpers/MetaModelFunction.ts +408 -0
- package/src/sap/fe/core/helpers/ModelHelper-dbg.js +13 -13
- package/src/sap/fe/core/helpers/ModelHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/ModelHelper.ts +13 -13
- package/src/sap/fe/core/helpers/PasteHelper-dbg.js +5 -5
- package/src/sap/fe/core/helpers/PasteHelper.js +1 -1
- package/src/sap/fe/core/helpers/PasteHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/PasteHelper.ts +6 -10
- package/src/sap/fe/core/helpers/ResourceModelHelper-dbg.js +26 -0
- package/src/sap/fe/core/helpers/ResourceModelHelper.js +6 -0
- package/src/sap/fe/core/helpers/ResourceModelHelper.js.map +1 -0
- package/src/sap/fe/core/helpers/ResourceModelHelper.ts +19 -0
- package/src/sap/fe/core/helpers/SemanticDateOperators-dbg.js +93 -18
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
- package/src/sap/fe/core/helpers/SemanticDateOperators.js.map +1 -1
- package/src/sap/fe/core/helpers/SemanticDateOperators.ts +70 -17
- package/src/sap/fe/core/helpers/SemanticKeyHelper-dbg.js +2 -2
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -1
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +1 -1
- package/src/sap/fe/core/helpers/Synchronization-dbg.js +1 -1
- package/src/sap/fe/core/helpers/Synchronization.ts +2 -0
- package/src/sap/fe/core/helpers/TypeGuards-dbg.js +5 -1
- package/src/sap/fe/core/helpers/TypeGuards.js +1 -1
- package/src/sap/fe/core/helpers/TypeGuards.js.map +1 -1
- package/src/sap/fe/core/helpers/TypeGuards.ts +12 -1
- package/src/sap/fe/core/jsx-runtime/ViewLoader-dbg.js +2 -1
- package/src/sap/fe/core/jsx-runtime/ViewLoader.js.map +1 -1
- package/src/sap/fe/core/jsx-runtime/ViewLoader.tsx +6 -2
- package/src/sap/fe/core/jsx-runtime/jsx-control-dbg.js +1 -1
- package/src/sap/fe/core/jsx-runtime/jsx-control.ts +3 -1
- package/src/sap/fe/core/jsx-runtime/useMDXComponents-dbg.js +3 -3
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.js +1 -1
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.js.map +1 -1
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.tsx +1 -1
- package/src/sap/fe/core/library-dbg.js +2 -2
- package/src/sap/fe/core/library-preload.js +127 -125
- package/src/sap/fe/core/library-preload.js.map +1 -1
- package/src/sap/fe/core/library.js +1 -1
- package/src/sap/fe/core/library.ts +7 -0
- package/src/sap/fe/core/manifest.json +1 -1
- package/src/sap/fe/core/messagebundle.properties +33 -0
- package/src/sap/fe/core/messagebundle_ar.properties +12 -10
- package/src/sap/fe/core/messagebundle_bg.properties +11 -9
- package/src/sap/fe/core/messagebundle_ca.properties +11 -9
- package/src/sap/fe/core/messagebundle_cs.properties +11 -9
- package/src/sap/fe/core/messagebundle_cy.properties +11 -9
- package/src/sap/fe/core/messagebundle_da.properties +11 -9
- package/src/sap/fe/core/messagebundle_de.properties +3 -1
- package/src/sap/fe/core/messagebundle_el.properties +11 -9
- package/src/sap/fe/core/messagebundle_en.properties +3 -1
- package/src/sap/fe/core/messagebundle_en_GB.properties +2 -0
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +2 -0
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +20 -0
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +21 -3
- package/src/sap/fe/core/messagebundle_es.properties +11 -9
- package/src/sap/fe/core/messagebundle_es_MX.properties +11 -9
- package/src/sap/fe/core/messagebundle_et.properties +11 -9
- package/src/sap/fe/core/messagebundle_fi.properties +11 -9
- package/src/sap/fe/core/messagebundle_fr.properties +11 -9
- package/src/sap/fe/core/messagebundle_fr_CA.properties +3 -1
- package/src/sap/fe/core/messagebundle_hi.properties +2 -0
- package/src/sap/fe/core/messagebundle_hr.properties +11 -9
- package/src/sap/fe/core/messagebundle_hu.properties +11 -9
- package/src/sap/fe/core/messagebundle_id.properties +3 -1
- package/src/sap/fe/core/messagebundle_it.properties +11 -9
- package/src/sap/fe/core/messagebundle_iw.properties +11 -9
- package/src/sap/fe/core/messagebundle_ja.properties +11 -9
- package/src/sap/fe/core/messagebundle_kk.properties +11 -9
- package/src/sap/fe/core/messagebundle_ko.properties +2 -0
- package/src/sap/fe/core/messagebundle_lt.properties +11 -9
- package/src/sap/fe/core/messagebundle_lv.properties +2 -0
- package/src/sap/fe/core/messagebundle_ms.properties +12 -10
- package/src/sap/fe/core/messagebundle_nl.properties +12 -10
- package/src/sap/fe/core/messagebundle_no.properties +11 -9
- package/src/sap/fe/core/messagebundle_pl.properties +2 -0
- package/src/sap/fe/core/messagebundle_pt.properties +11 -9
- package/src/sap/fe/core/messagebundle_pt_PT.properties +11 -9
- package/src/sap/fe/core/messagebundle_ro.properties +3 -1
- package/src/sap/fe/core/messagebundle_ru.properties +3 -1
- package/src/sap/fe/core/messagebundle_sh.properties +11 -9
- package/src/sap/fe/core/messagebundle_sk.properties +11 -9
- package/src/sap/fe/core/messagebundle_sl.properties +11 -9
- package/src/sap/fe/core/messagebundle_sv.properties +2 -0
- package/src/sap/fe/core/messagebundle_th.properties +11 -9
- package/src/sap/fe/core/messagebundle_tr.properties +11 -9
- package/src/sap/fe/core/messagebundle_uk.properties +11 -9
- package/src/sap/fe/core/messagebundle_vi.properties +12 -10
- package/src/sap/fe/core/messagebundle_zh_CN.properties +2 -0
- package/src/sap/fe/core/messagebundle_zh_TW.properties +2 -0
- package/src/sap/fe/core/operationsHelper-dbg.js +70 -44
- package/src/sap/fe/core/operationsHelper.js +1 -1
- package/src/sap/fe/core/operationsHelper.js.map +1 -1
- package/src/sap/fe/core/operationsHelper.ts +88 -63
- package/src/sap/fe/core/rootView/Fcl-dbg.controller.js +1 -1
- package/src/sap/fe/core/rootView/Fcl.controller.ts +10 -0
- package/src/sap/fe/core/rootView/NavContainer-dbg.controller.js +2 -2
- package/src/sap/fe/core/rootView/NavContainer.controller.js +1 -1
- package/src/sap/fe/core/rootView/NavContainer.controller.js.map +1 -1
- package/src/sap/fe/core/rootView/NavContainer.controller.ts +5 -3
- package/src/sap/fe/core/rootView/RootViewBaseController-dbg.js +4 -3
- package/src/sap/fe/core/rootView/RootViewBaseController.js +1 -1
- package/src/sap/fe/core/rootView/RootViewBaseController.js.map +1 -1
- package/src/sap/fe/core/rootView/RootViewBaseController.ts +15 -5
- package/src/sap/fe/core/services/AsyncComponentServiceFactory-dbg.js +1 -1
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +3 -1
- package/src/sap/fe/core/services/CacheHandlerServiceFactory-dbg.js +1 -1
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +15 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory-dbg.js +1 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +4 -1
- package/src/sap/fe/core/services/NavigationServiceFactory-dbg.js +9 -1
- package/src/sap/fe/core/services/NavigationServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +19 -1
- package/src/sap/fe/core/services/ResourceModelServiceFactory-dbg.js +2 -2
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +1 -1
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +10 -3
- package/src/sap/fe/core/services/RoutingServiceFactory-dbg.js +3 -3
- package/src/sap/fe/core/services/RoutingServiceFactory.js +1 -1
- package/src/sap/fe/core/services/RoutingServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +29 -3
- package/src/sap/fe/core/services/ShellServicesFactory-dbg.js +1 -1
- package/src/sap/fe/core/services/ShellServicesFactory.ts +14 -2
- package/src/sap/fe/core/services/SideEffectsServiceFactory-dbg.js +448 -279
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +1 -1
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +502 -333
- package/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +18 -5
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +1 -1
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +41 -12
- package/src/sap/fe/core/support/Diagnostics-dbg.js +1 -1
- package/src/sap/fe/core/support/Diagnostics.ts +5 -0
- package/src/sap/fe/core/templating/DataModelPathHelper-dbg.js +185 -86
- package/src/sap/fe/core/templating/DataModelPathHelper.js +1 -1
- package/src/sap/fe/core/templating/DataModelPathHelper.js.map +1 -1
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +190 -82
- package/src/sap/fe/core/templating/DisplayModeFormatter-dbg.js +1 -1
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +1 -1
- package/src/sap/fe/core/templating/EntitySetHelper-dbg.js +2 -3
- package/src/sap/fe/core/templating/EntitySetHelper.js +1 -1
- package/src/sap/fe/core/templating/EntitySetHelper.js.map +1 -1
- package/src/sap/fe/core/templating/EntitySetHelper.ts +1 -3
- package/src/sap/fe/core/templating/FilterHelper-dbg.js +3 -3
- package/src/sap/fe/core/templating/FilterHelper.js +1 -1
- package/src/sap/fe/core/templating/FilterHelper.js.map +1 -1
- package/src/sap/fe/core/templating/FilterHelper.ts +5 -3
- package/src/sap/fe/core/templating/PropertyHelper-dbg.js +1 -1
- package/src/sap/fe/core/templating/PropertyHelper.ts +2 -2
- package/src/sap/fe/core/templating/UIFormatters-dbg.js +1 -1
- package/src/sap/fe/core/templating/UIFormatters.ts +4 -0
- package/src/sap/fe/core/type/DateTimeWithTimezone-dbg.js +1 -1
- package/src/sap/fe/core/type/DateTimeWithTimezone.ts +2 -0
- package/src/sap/fe/core/type/FiscalDate-dbg.js +2 -2
- package/src/sap/fe/core/type/FiscalDate.js.map +1 -1
- package/src/sap/fe/core/type/FiscalDate.ts +2 -1
- package/src/sap/fe/core/type/TypeUtil-dbg.js +5 -10
- package/src/sap/fe/core/type/TypeUtil.js +1 -1
- package/src/sap/fe/core/type/TypeUtil.js.map +1 -1
- package/src/sap/fe/core/type/TypeUtil.ts +3 -6
- package/src/sap/fe/core/buildingBlocks/BuildingBlock-dbg.js +0 -410
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +0 -15
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js.map +0 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +0 -536
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment-dbg.js +0 -44
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.js +0 -6
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.js.map +0 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.ts +0 -14
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime-dbg.js +0 -948
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +0 -19
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js.map +0 -1
- package/src/sap/fe/core/controllerextensions/InternalEditFlow-dbg.js +0 -711
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +0 -6
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js.map +0 -1
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +0 -863
- package/src/sap/fe/core/controls/ConditionalWrapper-dbg.js +0 -151
- package/src/sap/fe/core/controls/ConditionalWrapper.js +0 -6
- package/src/sap/fe/core/controls/ConditionalWrapper.js.map +0 -1
- package/src/sap/fe/core/controls/ConditionalWrapper.ts +0 -88
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper-dbg.js +0 -330
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +0 -6
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js.map +0 -1
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +0 -292
- package/src/sap/fe/core/controls/CustomQuickViewPage-dbg.js +0 -126
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +0 -6
- package/src/sap/fe/core/controls/CustomQuickViewPage.js.map +0 -1
- package/src/sap/fe/core/controls/CustomQuickViewPage.ts +0 -105
- package/src/sap/fe/core/controls/FieldWrapper-dbg.js +0 -194
- package/src/sap/fe/core/controls/FieldWrapper.js +0 -6
- package/src/sap/fe/core/controls/FieldWrapper.js.map +0 -1
- package/src/sap/fe/core/controls/FieldWrapper.ts +0 -121
- package/src/sap/fe/core/controls/FileWrapper-dbg.js +0 -280
- package/src/sap/fe/core/controls/FileWrapper.js +0 -6
- package/src/sap/fe/core/controls/FileWrapper.js.map +0 -1
- package/src/sap/fe/core/controls/FileWrapper.ts +0 -202
- package/src/sap/fe/core/helpers/SideEffectsHelper-dbg.js +0 -141
- package/src/sap/fe/core/helpers/SideEffectsHelper.js +0 -6
- package/src/sap/fe/core/helpers/SideEffectsHelper.js.map +0 -1
- package/src/sap/fe/core/helpers/SideEffectsHelper.ts +0 -129
|
@@ -28,7 +28,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ClassSupport", "sap/fe/core/
|
|
|
28
28
|
*/
|
|
29
29
|
function createGuardFromHash(sGuardHash) {
|
|
30
30
|
return {
|
|
31
|
-
_guardHash: sGuardHash.replace(/\?[
|
|
31
|
+
_guardHash: sGuardHash.replace(/\?[^?]*$/, ""),
|
|
32
32
|
// Remove query part
|
|
33
33
|
check: function (sHash) {
|
|
34
34
|
return sHash.indexOf(this._guardHash) === 0;
|
|
@@ -681,17 +681,16 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ClassSupport", "sap/fe/core/
|
|
|
681
681
|
// Replace the current hash
|
|
682
682
|
sHash = sHash.replace(mapping.oldPath, mapping.newPath);
|
|
683
683
|
history.replaceState(Object.assign({}, history.state), "", sHash);
|
|
684
|
-
}
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
}
|
|
684
|
+
}
|
|
685
|
+
const aHashSplit = sHash.split("&/");
|
|
686
|
+
const sAppHash = aHashSplit[1] ? aHashSplit[1] : "";
|
|
687
|
+
if (this.checkHashWithGuard(sAppHash)) {
|
|
688
|
+
this._bDelayedRebuild = true;
|
|
689
|
+
const oNewState = this._extractStateFromHash(sAppHash);
|
|
690
|
+
this._pushNewState(oNewState, false, false, true);
|
|
691
|
+
setTimeout(() => {
|
|
692
|
+
this._bDelayedRebuild = false;
|
|
693
|
+
}, 0);
|
|
695
694
|
}
|
|
696
695
|
}
|
|
697
696
|
}
|
|
@@ -795,4 +794,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ClassSupport", "sap/fe/core/
|
|
|
795
794
|
}(BaseObject)) || _class);
|
|
796
795
|
return RouterProxy;
|
|
797
796
|
}, false);
|
|
798
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJlbnVtU3RhdGUiLCJFUVVBTCIsIkNPTVBBVElCTEUiLCJBTkNFU1RPUiIsIkRJRkZFUkVOVCIsImVudW1VUkxQYXJhbXMiLCJMQVlPVVRQQVJBTSIsIklBUFBTVEFURVBBUkFNIiwiY3JlYXRlR3VhcmRGcm9tSGFzaCIsInNHdWFyZEhhc2giLCJfZ3VhcmRIYXNoIiwicmVwbGFjZSIsImNoZWNrIiwic0hhc2giLCJpbmRleE9mIiwiZmluZEFwcFN0YXRlSW5IYXNoIiwiYUFwcFN0YXRlIiwibWF0Y2giLCJSZWdFeHAiLCJsZW5ndGgiLCJyZW1vdmVBcHBTdGF0ZUluSGFzaCIsInNldEFwcFN0YXRlSW5IYXNoIiwic0FwcFN0YXRlS2V5Iiwic05ld0hhc2giLCJSb3V0ZXJQcm94eSIsImRlZmluZVVJNUNsYXNzIiwiYklzUmVidWlsZEhpc3RvcnlSdW5uaW5nIiwiYklzQ29tcHV0aW5nVGl0bGVIaWVyYWNoeSIsImJJc0d1YXJkQ3Jvc3NBbGxvd2VkIiwic0lBcHBTdGF0ZUtleSIsIl9iQWN0aXZhdGVSb3V0ZU1hdGNoU3luY2hybyIsIl9iQXBwbHlSZXN0b3JlIiwiX2JEZWxheWVkUmVidWlsZCIsIl9wYXRoTWFwcGluZ3MiLCJpbml0Iiwib0FwcENvbXBvbmVudCIsImlzZmNsRW5hYmxlZCIsImdldFNlcnZpY2UiLCJ0aGVuIiwiX29TaGVsbFNlcnZpY2VzIiwiZ2V0U2hlbGxTZXJ2aWNlcyIsImluaXRSYXciLCJnZXRSb3V0ZXIiLCJ3YWl0Rm9yUm91dGVNYXRjaEJlZm9yZU5hdmlnYXRpb24iLCJoaXN0b3J5IiwicmVwbGFjZVN0YXRlIiwiT2JqZWN0IiwiYXNzaWduIiwiZmVMZXZlbCIsInN0YXRlIiwid2luZG93IiwibG9jYXRpb24iLCJmY2xFbmFibGVkIiwiX2ZuQmxvY2tpbmdOYXZGaWx0ZXIiLCJfYmxvY2tpbmdOYXZpZ2F0aW9uRmlsdGVyIiwiYmluZCIsInJlZ2lzdGVyTmF2aWdhdGlvbkZpbHRlciIsImNhdGNoIiwib0Vycm9yIiwiTG9nIiwiZXJyb3IiLCJfZm5IYXNoR3VhcmQiLCJoYXNoR3VhcmQiLCJhZGRFdmVudExpc3RlbmVyIiwiX2JEaXNhYmxlT25IYXNoQ2hhbmdlIiwiX2JJZ25vcmVSZXN0b3JlIiwiX2JGb3JjZUZvY3VzIiwiZGVzdHJveSIsInVucmVnaXN0ZXJOYXZpZ2F0aW9uRmlsdGVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm9Sb3V0ZXIiLCJfb1JvdXRlciIsIl9vTWFuYWdlZEhpc3RvcnkiLCJfb05hdmlnYXRpb25HdWFyZCIsInNDdXJyZW50QXBwSGFzaCIsImdldEhhc2giLCJwdXNoIiwiX2V4dHJhY3RTdGF0ZUZyb21IYXNoIiwiZ2V0SGFzaENoYW5nZXIiLCJpc0ZvY3VzRm9yY2VkIiwic2V0Rm9jdXNGb3JjZWQiLCJiRm9yY2VkIiwicmVtb3ZlSUFwcFN0YXRlS2V5IiwibmF2VG9IYXNoIiwiYlByZXNlcnZlSGlzdG9yeSIsImJEaXNhYmxlUHJlc2VydmF0aW9uQ2FjaGUiLCJiRm9yY2VGb2N1cyIsImJQcmVzZXJ2ZVNoZWxsQmFja05hdmlnYXRpb25IYW5kbGVyIiwic2V0QmFja05hdmlnYXRpb24iLCJfb1JvdXRlTWF0Y2hTeW5jaHJvbml6YXRpb24iLCJ3YWl0Rm9yIiwidW5kZWZpbmVkIiwiX2ludGVybmFsTmF2VG9IYXNoIiwiY2hlY2tIYXNoV2l0aEd1YXJkIiwib1Jlc291cmNlQnVuZGxlIiwiQ29yZSIsImdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZSIsImNvbmZpcm0iLCJnZXRUZXh0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJvTmV3U3RhdGUiLCJhQ3VycmVudEhhc2hLZXlzIiwiX2V4dHJhY3RFbnRpdHlTZXRzRnJvbUhhc2giLCJrZXlzIiwiZXZlcnkiLCJrZXkiLCJpbmRleCIsIm9IaXN0b3J5QWN0aW9uIiwiX3B1c2hOZXdTdGF0ZSIsIl9yZWJ1aWxkQnJvd3Nlckhpc3RvcnkiLCJyZXN0b3JlSGlzdG9yeSIsInNUYXJnZXRIYXNoIiwibmF2QmFjayIsInNDdXJyZW50SGFzaCIsInNQcmV2aW91c0hhc2giLCJpIiwiaGFzaCIsImJhY2siLCJuYXZUbyIsInNSb3V0ZU5hbWUiLCJvUGFyYW1ldGVycyIsImdldFVSTCIsIm5vUHJlc2VydmF0aW9uQ2FjaGUiLCJiSXNTdGlja3lNb2RlIiwiZXhpdEZyb21BcHAiLCJiYWNrVG9QcmV2aW91c0FwcCIsImlzQ3VycmVudFN0YXRlSW1wYWN0ZWRCeSIsInN1YnN0cmluZyIsIm9Mb2NhbEd1YXJkIiwiaXNOYXZpZ2F0aW9uRmluYWxpemVkIiwic2V0TmF2aWdhdGlvbkd1YXJkIiwiZGlzY2FyZE5hdmlnYXRpb25HdWFyZCIsImhhc05hdmlnYXRpb25HdWFyZCIsImlzR3VhcmRDcm9zc0FsbG93ZWRCeVVzZXIiLCJhY3RpdmF0ZVJvdXRlTWF0Y2hTeW5jaHJvbml6YXRpb24iLCJyZXNvbHZlUm91dGVNYXRjaCIsIlN5bmNocm9uaXphdGlvbiIsInNIYXNoTm9QYXJhbXMiLCJzcGxpdCIsImFUb2tlbnMiLCJuYW1lcyIsImZvckVhY2giLCJzVG9rZW4iLCJvU3RhdGUiLCJhTGF5b3V0Iiwic0xheW91dCIsInNjcmVlbk1vZGUiLCJiUmVidWlsZE9ubHkiLCJiRGlzYWJsZUhpc3RvcnlQcmVzZXJ2YXRpb24iLCJsYXN0SW5kZXgiLCJpUG9wQ291bnQiLCJwb3AiLCJwcmVzZXJ2ZWQiLCJvTGFzdFJlbW92ZWRJdGVtIiwib1RvcFN0YXRlIiwiX2NvbXBhcmVDYWNoZVN0YXRlcyIsInNQcmV2aW91c0lBcHBTdGF0ZUtleSIsIm9Db21wYXJpc29uU3RhdGVSZXN1bHQiLCJiSGFzU2FtZUhhc2giLCJ0eXBlIiwic3RlcHMiLCJfZGlzYWJsZUV2ZW50T25IYXNoQ2hhbmdlIiwic3RvcCIsIl9lbmFibGVFdmVudE9uSGFzaENoYW5nZSIsImJJZ25vcmVDdXJyZW50SGFzaCIsImluaXRpYWxpemUiLCJ0aGF0Iiwib1RhcmdldFN0YXRlIiwibmV3TGV2ZWwiLCJyZXBsYWNlQXN5bmMiLCJyZXBsYWNlSGFzaCIsInNldFRpbWVvdXQiLCJiYWNrUmVwbGFjZUFzeW5jIiwiYmFja0FzeW5jIiwic2V0SGFzaCIsImdvIiwiZ2V0TGFzdEhpc3RvcnlFbnRyeSIsInNldFBhdGhNYXBwaW5nIiwibWFwcGluZ3MiLCJmaWx0ZXIiLCJtYXBwaW5nIiwib2xkUGF0aCIsIm5ld1BhdGgiLCJmaW5kIiwibSIsImFIYXNoU3BsaXQiLCJzQXBwSGFzaCIsIm9TdGF0ZTEiLCJvU3RhdGUyIiwiZXF1YWwiLCJjaGVja0lmQmFja0lzT3V0T2ZHdWFyZCIsInNQcmVzZW50SGFzaCIsInNQcmV2SGFzaCIsIm9TcGxpdEhhc2giLCJzcGxpdEhhc2giLCJhcHBTcGVjaWZpY1JvdXRlIiwiVVJJIiwiZGVjb2RlIiwiY2hlY2tJZkJhY2tIYXNTYW1lQ29udGV4dCIsIm9DdXJyZW50U3RhdGUiLCJvUHJldmlvdXNTdGF0ZSIsIkJhc2VPYmplY3QiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlJvdXRlclByb3h5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIFJlc291cmNlQnVuZGxlIGZyb20gXCJzYXAvYmFzZS9pMThuL1Jlc291cmNlQnVuZGxlXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgU3luY2hyb25pemF0aW9uIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1N5bmNocm9uaXphdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBJU2hlbGxTZXJ2aWNlcyB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9TaGVsbFNlcnZpY2VzRmFjdG9yeVwiO1xuaW1wb3J0IEJhc2VPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL09iamVjdFwiO1xuaW1wb3J0IENvcmUgZnJvbSBcInNhcC91aS9jb3JlL0NvcmVcIjtcbmltcG9ydCB0eXBlIFJvdXRlciBmcm9tIFwic2FwL3VpL2NvcmUvcm91dGluZy9Sb3V0ZXJcIjtcbmltcG9ydCBVUkkgZnJvbSBcInNhcC91aS90aGlyZHBhcnR5L1VSSVwiO1xuXG5jb25zdCBlbnVtU3RhdGUgPSB7XG5cdEVRVUFMOiAwLFxuXHRDT01QQVRJQkxFOiAxLFxuXHRBTkNFU1RPUjogMixcblx0RElGRkVSRU5UOiAzXG59O1xuY29uc3QgZW51bVVSTFBhcmFtcyA9IHtcblx0TEFZT1VUUEFSQU06IFwibGF5b3V0XCIsXG5cdElBUFBTVEFURVBBUkFNOiBcInNhcC1pYXBwLXN0YXRlXCJcbn07XG5cbi8qKlxuICogQ3JlYXRlcyBhIEhhc2hHdWFyZCBvYmplY3QuXG4gKlxuICogQHBhcmFtIHNHdWFyZEhhc2ggVGhlIGhhc2ggdXNlZCBmb3IgdGhlIGd1YXJkXG4gKiBAcmV0dXJucyBUaGUgY3JlYXRlZCBoYXNoIGd1YXJkXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUd1YXJkRnJvbUhhc2goc0d1YXJkSGFzaDogc3RyaW5nKSB7XG5cdHJldHVybiB7XG5cdFx0X2d1YXJkSGFzaDogc0d1YXJkSGFzaC5yZXBsYWNlKC9cXD9bXlxcP10qJC8sIFwiXCIpLCAvLyBSZW1vdmUgcXVlcnkgcGFydFxuXHRcdGNoZWNrOiBmdW5jdGlvbiAoc0hhc2g6IGFueSkge1xuXHRcdFx0cmV0dXJuIHNIYXNoLmluZGV4T2YodGhpcy5fZ3VhcmRIYXNoKSA9PT0gMDtcblx0XHR9XG5cdH07XG59XG4vKipcbiAqIFJldHVybnMgdGhlIGlBcHBTdGF0ZSBwYXJ0IGZyb20gYSBoYXNoIChvciBudWxsIGlmIG5vdCBmb3VuZCkuXG4gKlxuICogQHBhcmFtIHNIYXNoIFRoZSBoYXNoXG4gKiBAcmV0dXJucyBUaGUgaUFwcFN0YXRlIHBhcnQgb2YgdGhlIGhhc2hcbiAqL1xuZnVuY3Rpb24gZmluZEFwcFN0YXRlSW5IYXNoKHNIYXNoOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcblx0Y29uc3QgYUFwcFN0YXRlID0gc0hhc2gubWF0Y2gobmV3IFJlZ0V4cChgXFxcXD8uKiR7ZW51bVVSTFBhcmFtcy5JQVBQU1RBVEVQQVJBTX09KFteJl0qKWApKTtcblx0cmV0dXJuIGFBcHBTdGF0ZSAmJiBhQXBwU3RhdGUubGVuZ3RoID4gMSA/IGFBcHBTdGF0ZVsxXSA6IG51bGw7XG59XG4vKipcbiAqIFJldHVybnMgYSBoYXNoIHdpdGhvdXQgaXRzIGlBcHBTdGF0ZSBwYXJ0LlxuICpcbiAqIEBwYXJhbSBzSGFzaCBUaGUgaGFzaFxuICogQHJldHVybnMgVGhlIGhhc2ggd2l0aG91dCB0aGUgaUFwcFN0YXRlXG4gKi9cbmZ1bmN0aW9uIHJlbW92ZUFwcFN0YXRlSW5IYXNoKHNIYXNoOiBzdHJpbmcpIHtcblx0cmV0dXJuIHNIYXNoLnJlcGxhY2UobmV3IFJlZ0V4cChgWyY/XSoke2VudW1VUkxQYXJhbXMuSUFQUFNUQVRFUEFSQU19PVteJl0qYCksIFwiXCIpO1xufVxuLyoqXG4gKiBBZGRzIGFuIGlBcHBTdGF0ZSBpbnNpZGUgYSBoYXNoIChvciByZXBsYWNlcyBhbiBleGlzdGluZyBvbmUpLlxuICpcbiAqIEBwYXJhbSBzSGFzaCBUaGUgaGFzaFxuICogQHBhcmFtIHNBcHBTdGF0ZUtleSBUaGUgaUFwcFN0YXRlIHRvIGFkZFxuICogQHJldHVybnMgVGhlIGhhc2ggd2l0aCB0aGUgYXBwIHN0YXRlXG4gKi9cbmZ1bmN0aW9uIHNldEFwcFN0YXRlSW5IYXNoKHNIYXNoOiBhbnksIHNBcHBTdGF0ZUtleTogYW55KSB7XG5cdGxldCBzTmV3SGFzaDtcblxuXHRpZiAoc0hhc2guaW5kZXhPZihlbnVtVVJMUGFyYW1zLklBUFBTVEFURVBBUkFNKSA+PSAwKSB7XG5cdFx0Ly8gSWYgdGhlcmUncyBhbHJlYWR5IGFuIGlBcHBTdGF0ZSBwYXJhbWV0ZXIgaW4gdGhlIGhhc2gsIHJlcGxhY2UgaXRcblx0XHRzTmV3SGFzaCA9IHNIYXNoLnJlcGxhY2UobmV3IFJlZ0V4cChgJHtlbnVtVVJMUGFyYW1zLklBUFBTVEFURVBBUkFNfT1bXiZdKmApLCBgJHtlbnVtVVJMUGFyYW1zLklBUFBTVEFURVBBUkFNfT0ke3NBcHBTdGF0ZUtleX1gKTtcblx0fSBlbHNlIHtcblx0XHQvLyBBZGQgdGhlIGlBcHBTdGF0ZSBwYXJhbWV0ZXIgaW4gdGhlIGhhc2hcblx0XHRpZiAoc0hhc2guaW5kZXhPZihcIj9cIikgPCAwKSB7XG5cdFx0XHRzTmV3SGFzaCA9IGAke3NIYXNofT9gO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzTmV3SGFzaCA9IGAke3NIYXNofSZgO1xuXHRcdH1cblx0XHRzTmV3SGFzaCArPSBgJHtlbnVtVVJMUGFyYW1zLklBUFBTVEFURVBBUkFNfT0ke3NBcHBTdGF0ZUtleX1gO1xuXHR9XG5cblx0cmV0dXJuIHNOZXdIYXNoO1xufVxuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5Sb3V0ZXJQcm94eVwiKVxuY2xhc3MgUm91dGVyUHJveHkgZXh0ZW5kcyBCYXNlT2JqZWN0IHtcblx0YklzUmVidWlsZEhpc3RvcnlSdW5uaW5nID0gZmFsc2U7XG5cdGJJc0NvbXB1dGluZ1RpdGxlSGllcmFjaHkgPSBmYWxzZTtcblx0YklzR3VhcmRDcm9zc0FsbG93ZWQgPSBmYWxzZTtcblx0c0lBcHBTdGF0ZUtleTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cdF9vU2hlbGxTZXJ2aWNlcyE6IElTaGVsbFNlcnZpY2VzO1xuXHRmY2xFbmFibGVkITogYm9vbGVhbjtcblx0X2ZuQmxvY2tpbmdOYXZGaWx0ZXIhOiBGdW5jdGlvbjtcblx0X2ZuSGFzaEd1YXJkITogRnVuY3Rpb247XG5cdF9iRGlzYWJsZU9uSGFzaENoYW5nZSE6IGJvb2xlYW47XG5cdF9iSWdub3JlUmVzdG9yZSE6IGJvb2xlYW47XG5cdF9iRm9yY2VGb2N1cyE6IGJvb2xlYW47XG5cdF9vUm91dGVyITogUm91dGVyO1xuXHRfb01hbmFnZWRIaXN0b3J5ITogYW55W107XG5cdF9vTmF2aWdhdGlvbkd1YXJkOiBhbnk7XG5cdG9SZXNvdXJjZUJ1bmRsZT86IFJlc291cmNlQnVuZGxlO1xuXHRfb1JvdXRlTWF0Y2hTeW5jaHJvbml6YXRpb24/OiBTeW5jaHJvbml6YXRpb247XG5cdF9iQWN0aXZhdGVSb3V0ZU1hdGNoU3luY2hybzogYm9vbGVhbiA9IGZhbHNlO1xuXHRfYkFwcGx5UmVzdG9yZTogYm9vbGVhbiA9IGZhbHNlO1xuXHRfYkRlbGF5ZWRSZWJ1aWxkOiBib29sZWFuID0gZmFsc2U7XG5cdF9wYXRoTWFwcGluZ3M6IHsgb2xkUGF0aDogc3RyaW5nOyBuZXdQYXRoOiBzdHJpbmcgfVtdID0gW107XG5cblx0aW5pdChvQXBwQ29tcG9uZW50OiBhbnksIGlzZmNsRW5hYmxlZDogYm9vbGVhbikge1xuXHRcdC8vIFNhdmUgdGhlIG5hbWUgb2YgdGhlIGFwcCAoaW5jbHVkaW5nIHN0YXJ0dXAgcGFyYW1ldGVycykgZm9yIHJlYnVpbGRpbmcgZnVsbCBoYXNoZXMgbGF0ZXJcblx0XHRvQXBwQ29tcG9uZW50XG5cdFx0XHQuZ2V0U2VydmljZShcInNoZWxsU2VydmljZXNcIilcblx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0dGhpcy5fb1NoZWxsU2VydmljZXMgPSBvQXBwQ29tcG9uZW50LmdldFNoZWxsU2VydmljZXMoKTtcblxuXHRcdFx0XHR0aGlzLmluaXRSYXcob0FwcENvbXBvbmVudC5nZXRSb3V0ZXIoKSk7XG5cdFx0XHRcdC8vIFdlIHdhbnQgdG8gd2FpdCB1bnRpbCB0aGUgaW5pdGlhbCByb3V0ZU1hdGNoZWQgaXMgZG9uZSBiZWZvcmUgZG9pbmcgYW55IG5hdmlnYXRpb25cblx0XHRcdFx0dGhpcy53YWl0Rm9yUm91dGVNYXRjaEJlZm9yZU5hdmlnYXRpb24oKTtcblxuXHRcdFx0XHQvLyBTZXQgZmVMZXZlbD0wIGZvciB0aGUgZmlyc3QgQXBwbGljYXRpb24gcGFnZSBpbiB0aGUgaGlzdG9yeVxuXHRcdFx0XHRoaXN0b3J5LnJlcGxhY2VTdGF0ZShcblx0XHRcdFx0XHRPYmplY3QuYXNzaWduKFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRmZUxldmVsOiAwXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0aGlzdG9yeS5zdGF0ZVxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XCJcIixcblx0XHRcdFx0XHR3aW5kb3cubG9jYXRpb24gYXMgYW55XG5cdFx0XHRcdCk7XG5cdFx0XHRcdHRoaXMuZmNsRW5hYmxlZCA9IGlzZmNsRW5hYmxlZDtcblxuXHRcdFx0XHR0aGlzLl9mbkJsb2NraW5nTmF2RmlsdGVyID0gdGhpcy5fYmxvY2tpbmdOYXZpZ2F0aW9uRmlsdGVyLmJpbmQodGhpcyk7XG5cdFx0XHRcdHRoaXMuX29TaGVsbFNlcnZpY2VzLnJlZ2lzdGVyTmF2aWdhdGlvbkZpbHRlcih0aGlzLl9mbkJsb2NraW5nTmF2RmlsdGVyKTtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24gKG9FcnJvcjogYW55KSB7XG5cdFx0XHRcdExvZy5lcnJvcihcIkNhbm5vdCByZXRyaWV2ZSB0aGUgc2hlbGwgc2VydmljZXNcIiwgb0Vycm9yKTtcblx0XHRcdH0pO1xuXHRcdHRoaXMuX2ZuSGFzaEd1YXJkID0gdGhpcy5oYXNoR3VhcmQuYmluZCh0aGlzKTtcblx0XHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInBvcHN0YXRlXCIsIHRoaXMuX2ZuSGFzaEd1YXJkIGFzIGFueSk7XG5cdFx0dGhpcy5fYkRpc2FibGVPbkhhc2hDaGFuZ2UgPSBmYWxzZTtcblx0XHR0aGlzLl9iSWdub3JlUmVzdG9yZSA9IGZhbHNlO1xuXHRcdHRoaXMuX2JGb3JjZUZvY3VzID0gdHJ1ZTsgLy8gVHJpZ2dlciB0aGUgZm9jdXMgbWVjaGFuaXNtIGZvciB0aGUgZmlyc3QgdmlldyBkaXNwbGF5ZWQgYnkgdGhlIGFwcFxuXHR9XG5cblx0ZGVzdHJveSgpIHtcblx0XHRpZiAodGhpcy5fb1NoZWxsU2VydmljZXMpIHtcblx0XHRcdHRoaXMuX29TaGVsbFNlcnZpY2VzLnVucmVnaXN0ZXJOYXZpZ2F0aW9uRmlsdGVyKHRoaXMuX2ZuQmxvY2tpbmdOYXZGaWx0ZXIpO1xuXHRcdH1cblx0XHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInBvcHN0YXRlXCIsIHRoaXMuX2ZuSGFzaEd1YXJkIGFzIGFueSk7XG5cdH1cblxuXHQvKipcblx0ICogUmF3IGluaXRpYWxpemF0aW9uIChmb3IgdW5pdCB0ZXN0cykuXG5cdCAqXG5cdCAqIEBwYXJhbSBvUm91dGVyIFRoZSByb3V0ZXIgdXNlZCBieSB0aGlzIHByb3h5XG5cdCAqL1xuXHRpbml0UmF3KG9Sb3V0ZXI6IFJvdXRlcikge1xuXHRcdHRoaXMuX29Sb3V0ZXIgPSBvUm91dGVyO1xuXHRcdHRoaXMuX29NYW5hZ2VkSGlzdG9yeSA9IFtdO1xuXHRcdHRoaXMuX29OYXZpZ2F0aW9uR3VhcmQgPSBudWxsO1xuXG5cdFx0Y29uc3Qgc0N1cnJlbnRBcHBIYXNoID0gdGhpcy5nZXRIYXNoKCk7XG5cdFx0dGhpcy5fb01hbmFnZWRIaXN0b3J5LnB1c2godGhpcy5fZXh0cmFjdFN0YXRlRnJvbUhhc2goc0N1cnJlbnRBcHBIYXNoKSk7XG5cblx0XHQvLyBTZXQgdGhlIGlBcHBTdGF0ZSBpZiB0aGUgaW5pdGlhbCBoYXNoIGNvbnRhaW5zIG9uZVxuXHRcdHRoaXMuc0lBcHBTdGF0ZUtleSA9IGZpbmRBcHBTdGF0ZUluSGFzaChzQ3VycmVudEFwcEhhc2gpO1xuXHR9XG5cblx0Z2V0SGFzaCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fb1JvdXRlci5nZXRIYXNoQ2hhbmdlcigpLmdldEhhc2goKTtcblx0fVxuXG5cdGlzRm9jdXNGb3JjZWQoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2JGb3JjZUZvY3VzO1xuXHR9XG5cblx0c2V0Rm9jdXNGb3JjZWQoYkZvcmNlZDogYm9vbGVhbikge1xuXHRcdHRoaXMuX2JGb3JjZUZvY3VzID0gYkZvcmNlZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXNldHMgdGhlIGludGVybmFsIHZhcmlhYmxlIHNJQXBwU3RhdGVLZXkuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBzYXAuZmUuY29yZS5Sb3V0ZXJQcm94eSNyZW1vdmVJQXBwU3RhdGVLZXlcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqL1xuXHRyZW1vdmVJQXBwU3RhdGVLZXkoKSB7XG5cdFx0dGhpcy5zSUFwcFN0YXRlS2V5ID0gbnVsbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBOYXZpZ2F0ZXMgdG8gYSBzcGVjaWZpYyBoYXNoLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgc2FwLmZlLmNvcmUuUm91dGVyUHJveHkjbmF2VG9IYXNoXG5cdCAqIEBtZW1iZXJvZiBzYXAuZmUuY29yZS5Sb3V0ZXJQcm94eVxuXHQgKiBAc3RhdGljXG5cdCAqIEBwYXJhbSBzSGFzaCBIYXNoIHRvIGJlIG5hdmlnYXRlZCB0b1xuXHQgKiBAcGFyYW0gYlByZXNlcnZlSGlzdG9yeSBJZiBzZXQgdG8gdHJ1ZSwgbm9uLWFuY2VzdG9yIGVudHJpZXMgaW4gaGlzdG9yeSB3aWxsIGJlIHJldGFpbmVkXG5cdCAqIEBwYXJhbSBiRGlzYWJsZVByZXNlcnZhdGlvbkNhY2hlIElmIHNldCB0byB0cnVlLCBjYWNoZSBwcmVzZXJ2YXRpb24gbWVjaGFuaXNtIGlzIGRpc2FibGVkIGZvciB0aGUgY3VycmVudCBuYXZpZ2F0aW9uXG5cdCAqIEBwYXJhbSBiRm9yY2VGb2N1cyBJZiBzZXQgdG8gdHJ1ZSwgdGhlIGxvZ2ljIHRvIHNldCB0aGUgZm9jdXMgb25jZSB0aGUgbmF2aWdhdGlvbiBpcyBmaW5hbGl6ZWQgd2lsbCBiZSB0cmlnZ2VyZWQgKG9uUGFnZVJlYWR5KVxuXHQgKiBAcGFyYW0gYlByZXNlcnZlU2hlbGxCYWNrTmF2aWdhdGlvbkhhbmRsZXIgSWYgbm90IHNldCB0byBmYWxzZSwgdGhlIGJhY2sgbmF2aWdhdGlvbiBpcyBzZXQgdG8gdW5kZWZpbmVkXG5cdCAqIEByZXR1cm5zIFByb21pc2UgKHJlc29sdmVkIHdoZW4gdGhlIG5hdmlnYXRpb24gaXMgZmluYWxpemVkKSB0aGF0IHJldHVybnMgJ3RydWUnIGlmIGEgbmF2aWdhdGlvbiB0b29rIHBsYWNlLCAnZmFsc2UnIGlmIHRoZSBuYXZpZ2F0aW9uIGRpZG4ndCBoYXBwZW5cblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqL1xuXHRuYXZUb0hhc2goXG5cdFx0c0hhc2g6IHN0cmluZyB8IHVuZGVmaW5lZCxcblx0XHRiUHJlc2VydmVIaXN0b3J5PzogYm9vbGVhbixcblx0XHRiRGlzYWJsZVByZXNlcnZhdGlvbkNhY2hlPzogYm9vbGVhbixcblx0XHRiRm9yY2VGb2N1cz86IGJvb2xlYW4sXG5cdFx0YlByZXNlcnZlU2hlbGxCYWNrTmF2aWdhdGlvbkhhbmRsZXI/OiBib29sZWFuXG5cdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRcdGlmIChiUHJlc2VydmVTaGVsbEJhY2tOYXZpZ2F0aW9uSGFuZGxlciAhPT0gZmFsc2UpIHtcblx0XHRcdHRoaXMuX29TaGVsbFNlcnZpY2VzLnNldEJhY2tOYXZpZ2F0aW9uKCk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLl9vUm91dGVNYXRjaFN5bmNocm9uaXphdGlvbikge1xuXHRcdFx0cmV0dXJuIHRoaXMuX29Sb3V0ZU1hdGNoU3luY2hyb25pemF0aW9uLndhaXRGb3IoKS50aGVuKCgpID0+IHtcblx0XHRcdFx0dGhpcy5fb1JvdXRlTWF0Y2hTeW5jaHJvbml6YXRpb24gPSB1bmRlZmluZWQ7XG5cdFx0XHRcdHJldHVybiB0aGlzLl9pbnRlcm5hbE5hdlRvSGFzaChzSGFzaCwgYlByZXNlcnZlSGlzdG9yeSwgYkRpc2FibGVQcmVzZXJ2YXRpb25DYWNoZSwgYkZvcmNlRm9jdXMpO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmICh0aGlzLl9iQWN0aXZhdGVSb3V0ZU1hdGNoU3luY2hybykge1xuXHRcdFx0XHR0aGlzLndhaXRGb3JSb3V0ZU1hdGNoQmVmb3JlTmF2aWdhdGlvbigpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRoaXMuX2ludGVybmFsTmF2VG9IYXNoKHNIYXNoLCBiUHJlc2VydmVIaXN0b3J5LCBiRGlzYWJsZVByZXNlcnZhdGlvbkNhY2hlLCBiRm9yY2VGb2N1cyk7XG5cdFx0fVxuXHR9XG5cblx0X2ludGVybmFsTmF2VG9IYXNoKHNIYXNoOiBhbnksIGJQcmVzZXJ2ZUhpc3Rvcnk6IGFueSwgYkRpc2FibGVQcmVzZXJ2YXRpb25DYWNoZTogYW55LCBiRm9yY2VGb2N1cz86IGJvb2xlYW4pOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0XHQvLyBBZGQgdGhlIGFwcCBzdGF0ZSBpbiB0aGUgaGFzaCBpZiBuZWVkZWRcblx0XHRpZiAodGhpcy5mY2xFbmFibGVkICYmIHRoaXMuc0lBcHBTdGF0ZUtleSAmJiAhZmluZEFwcFN0YXRlSW5IYXNoKHNIYXNoKSkge1xuXHRcdFx0c0hhc2ggPSBzZXRBcHBTdGF0ZUluSGFzaChzSGFzaCwgdGhpcy5zSUFwcFN0YXRlS2V5KTtcblx0XHR9XG5cblx0XHRpZiAoIXRoaXMuY2hlY2tIYXNoV2l0aEd1YXJkKHNIYXNoKSkge1xuXHRcdFx0aWYgKCF0aGlzLm9SZXNvdXJjZUJ1bmRsZSkge1xuXHRcdFx0XHR0aGlzLm9SZXNvdXJjZUJ1bmRsZSA9IENvcmUuZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlKFwic2FwLmZlLmNvcmVcIik7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFdlIGhhdmUgdG8gdXNlIGEgY29uZmlybSBoZXJlIGZvciBVSSBjb25zaXN0ZW5jeSByZWFzb25zLCBhcyB3aXRoIHNvbWUgc2NlbmFyaW9zXG5cdFx0XHQvLyBpbiB0aGUgRWRpdEZsb3cgd2UgcmVseSBvbiBhIFVJNSBtZWNoYW5pc20gdGhhdCBkaXNwbGF5cyBhIGNvbmZpcm0gZGlhbG9nLlxuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWFsZXJ0XG5cdFx0XHRpZiAoIWNvbmZpcm0odGhpcy5vUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfUk9VVEVSX1BST1hZX1NBUEZFX0VYSVRfTk9UU0FWRURfTUVTU0FHRVwiKSkpIHtcblx0XHRcdFx0Ly8gVGhlIHVzZXIgY2xpY2tlZCBvbiBDYW5jZWwgLS0+IGNhbmNlbCBuYXZpZ2F0aW9uXG5cdFx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5iSXNHdWFyZENyb3NzQWxsb3dlZCA9IHRydWU7XG5cdFx0fVxuXG5cdFx0Ly8gSW4gY2FzZSB0aGUgbmF2aWdhdGlvbiB3aWxsIGNhdXNlIGEgbmV3IHZpZXcgdG8gYmUgZGlzcGxheWVkLCB3ZSBmb3JjZSB0aGUgZm9jdXNcblx0XHQvLyBJLmUuIGlmIHRoZSBrZXlzIGZvciB0aGUgaGFzaCB3ZSdyZSBuYXZpZ2F0aW5nIHRvIGlzIGEgc3VwZXJzZXQgb2YgdGhlIGN1cnJlbnQgaGFzaCBrZXlzLlxuXHRcdGNvbnN0IG9OZXdTdGF0ZSA9IHRoaXMuX2V4dHJhY3RTdGF0ZUZyb21IYXNoKHNIYXNoKTtcblx0XHRpZiAoIXRoaXMuX2JGb3JjZUZvY3VzKSB7XG5cdFx0XHQvLyBJZiB0aGUgZm9jdXMgd2FzIGFscmVhZHkgZm9yY2VkLCBrZWVwIGl0XG5cdFx0XHRjb25zdCBhQ3VycmVudEhhc2hLZXlzID0gdGhpcy5fZXh0cmFjdEVudGl0eVNldHNGcm9tSGFzaCh0aGlzLmdldEhhc2goKSk7XG5cdFx0XHR0aGlzLl9iRm9yY2VGb2N1cyA9XG5cdFx0XHRcdGJGb3JjZUZvY3VzIHx8XG5cdFx0XHRcdChhQ3VycmVudEhhc2hLZXlzLmxlbmd0aCA8IG9OZXdTdGF0ZS5rZXlzLmxlbmd0aCAmJlxuXHRcdFx0XHRcdGFDdXJyZW50SGFzaEtleXMuZXZlcnkoZnVuY3Rpb24gKGtleTogYW55LCBpbmRleDogYW55KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4ga2V5ID09PSBvTmV3U3RhdGUua2V5c1tpbmRleF07XG5cdFx0XHRcdFx0fSkpO1xuXHRcdH1cblxuXHRcdGNvbnN0IG9IaXN0b3J5QWN0aW9uID0gdGhpcy5fcHVzaE5ld1N0YXRlKG9OZXdTdGF0ZSwgZmFsc2UsIGJQcmVzZXJ2ZUhpc3RvcnksIGJEaXNhYmxlUHJlc2VydmF0aW9uQ2FjaGUpO1xuXG5cdFx0cmV0dXJuIHRoaXMuX3JlYnVpbGRCcm93c2VySGlzdG9yeShvSGlzdG9yeUFjdGlvbiwgZmFsc2UpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENsZWFycyBicm93c2VyIGhpc3RvcnkgaWYgZW50cmllcyBoYXZlIGJlZW4gYWRkZWQgd2l0aG91dCB1c2luZyB0aGUgUm91dGVyUHJveHkuXG5cdCAqIFVwZGF0ZXMgdGhlIGludGVybmFsIGhpc3RvcnkgYWNjb3JkaW5nbHkuXG5cdCAqXG5cdCAqIEByZXR1cm5zIFByb21pc2UgdGhhdCBpcyByZXNvbHZlZCBvbmNlIHRoZSBoaXN0b3J5IGlzIHJlYnVpbHRcblx0ICovXG5cdHJlc3RvcmVIaXN0b3J5KCkge1xuXHRcdGlmICh0aGlzLl9iQXBwbHlSZXN0b3JlKSB7XG5cdFx0XHR0aGlzLl9iQXBwbHlSZXN0b3JlID0gZmFsc2U7XG5cdFx0XHRsZXQgc1RhcmdldEhhc2ggPSB0aGlzLmdldEhhc2goKTtcblx0XHRcdHNUYXJnZXRIYXNoID0gc1RhcmdldEhhc2gucmVwbGFjZSgvKFxcP3wmKXJlc3RvcmVIaXN0b3J5PXRydWUvLCBcIlwiKTtcblx0XHRcdGNvbnN0IG9OZXdTdGF0ZSA9IHRoaXMuX2V4dHJhY3RTdGF0ZUZyb21IYXNoKHNUYXJnZXRIYXNoKTtcblxuXHRcdFx0Y29uc3Qgb0hpc3RvcnlBY3Rpb24gPSB0aGlzLl9wdXNoTmV3U3RhdGUob05ld1N0YXRlLCB0cnVlLCBmYWxzZSwgdHJ1ZSk7XG5cblx0XHRcdHJldHVybiB0aGlzLl9yZWJ1aWxkQnJvd3Nlckhpc3Rvcnkob0hpc3RvcnlBY3Rpb24sIHRydWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIE5hdmlnYXRlcyBiYWNrIGluIHRoZSBoaXN0b3J5LlxuXHQgKlxuXHQgKiBAcmV0dXJucyBQcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2hlbiB0aGUgbmF2aWdhdGlvbiBpcyBmaW5hbGl6ZWRcblx0ICovXG5cdG5hdkJhY2soKSB7XG5cdFx0Y29uc3Qgc0N1cnJlbnRIYXNoID0gdGhpcy5nZXRIYXNoKCk7XG5cdFx0bGV0IHNQcmV2aW91c0hhc2g7XG5cblx0XHQvLyBMb29rIGZvciB0aGUgY3VycmVudCBoYXNoIGluIHRoZSBtYW5hZ2VkIGhpc3Rvcnlcblx0XHRmb3IgKGxldCBpID0gdGhpcy5fb01hbmFnZWRIaXN0b3J5Lmxlbmd0aCAtIDE7IGkgPiAwOyBpLS0pIHtcblx0XHRcdGlmICh0aGlzLl9vTWFuYWdlZEhpc3RvcnlbaV0uaGFzaCA9PT0gc0N1cnJlbnRIYXNoKSB7XG5cdFx0XHRcdHNQcmV2aW91c0hhc2ggPSB0aGlzLl9vTWFuYWdlZEhpc3RvcnlbaSAtIDFdLmhhc2g7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChzUHJldmlvdXNIYXNoKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5uYXZUb0hhc2goc1ByZXZpb3VzSGFzaCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIFdlIGNvdWxkbid0IGZpbmQgYSBwcmV2aW91cyBoYXNoIGluIGhpc3Rvcnlcblx0XHRcdC8vIFRoaXMgY2FuIGhhcHBlbiB3aGVuIG5hdmlnYXRpbmcgZnJvbSBhIHRyYW5zaWVudCBoYXNoIGluIGEgY3JlYXRlIGFwcCwgYW5kXG5cdFx0XHQvLyBpbiB0aGF0IGNhc2UgaGlzdG9yeS5iYWNrIHdvdWxkIGdvIGJhY2sgdG8gdGhlIEZMUFxuXHRcdFx0d2luZG93Lmhpc3RvcnkuYmFjaygpO1xuXHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBOYXZpZ2F0ZXMgdG8gYSByb3V0ZSB3aXRoIHBhcmFtZXRlcnMuXG5cdCAqXG5cdCAqIEBwYXJhbSBzUm91dGVOYW1lIFRoZSByb3V0ZSBuYW1lIHRvIGJlIG5hdmlnYXRlZCB0b1xuXHQgKiBAcGFyYW0gb1BhcmFtZXRlcnMgUGFyYW1ldGVycyBmb3IgdGhlIG5hdmlnYXRpb25cblx0ICogQHJldHVybnMgUHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdoZW4gdGhlIG5hdmlnYXRpb24gaXMgZmluYWxpemVkXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKi9cblx0bmF2VG8oc1JvdXRlTmFtZTogc3RyaW5nLCBvUGFyYW1ldGVyczogYW55KSB7XG5cdFx0Y29uc3Qgc0hhc2ggPSB0aGlzLl9vUm91dGVyLmdldFVSTChzUm91dGVOYW1lLCBvUGFyYW1ldGVycyk7XG5cdFx0cmV0dXJuIHRoaXMubmF2VG9IYXNoKHNIYXNoLCBmYWxzZSwgb1BhcmFtZXRlcnMubm9QcmVzZXJ2YXRpb25DYWNoZSwgZmFsc2UsICFvUGFyYW1ldGVycy5iSXNTdGlja3lNb2RlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFeGl0cyB0aGUgY3VycmVudCBhcHAgYnkgbmF2aWdhdGluZyBiYWNrXG5cdCAqIHRvIHRoZSBwcmV2aW91cyBhcHAgKGlmIGFueSkgb3IgdGhlIEZMUC5cblx0ICpcblx0ICogQHJldHVybnMgUHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdoZW4gd2UgZXhpdCB0aGUgYXBwXG5cdCAqL1xuXHRleGl0RnJvbUFwcCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fb1NoZWxsU2VydmljZXMuYmFja1RvUHJldmlvdXNBcHAoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3Mgd2hldGhlciBhIGdpdmVuIGhhc2ggY2FuIGhhdmUgYW4gaW1wYWN0IG9uIHRoZSBjdXJyZW50IHN0YXRlXG5cdCAqIGkuZS4gaWYgdGhlIGhhc2ggaXMgZXF1YWwsIGNvbXBhdGlibGUgb3IgYW4gYW5jZXN0b3Igb2YgdGhlIGN1cnJlbnQgc3RhdGUuXG5cdCAqXG5cdCAqIEBwYXJhbSBzSGFzaCBgdHJ1ZWAgaWYgdGhlcmUgaXMgYW4gaW1wYWN0XG5cdCAqIEByZXR1cm5zIElmIHRoZXJlIGlzIGFuIGltcGFjdFxuXHQgKi9cblx0aXNDdXJyZW50U3RhdGVJbXBhY3RlZEJ5KHNIYXNoOiBhbnkpIHtcblx0XHRpZiAoc0hhc2hbMF0gPT09IFwiL1wiKSB7XG5cdFx0XHRzSGFzaCA9IHNIYXNoLnN1YnN0cmluZygxKTtcblx0XHR9XG5cdFx0Y29uc3Qgb0xvY2FsR3VhcmQgPSBjcmVhdGVHdWFyZEZyb21IYXNoKHNIYXNoKTtcblx0XHRyZXR1cm4gb0xvY2FsR3VhcmQuY2hlY2sodGhpcy5nZXRIYXNoKCkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiBhIG5hdmlnYXRpb24gaXMgY3VycmVudGx5IGJlaW5nIHByb2Nlc3NlZC5cblx0ICpcblx0ICogQHJldHVybnMgYGZhbHNlYCBpZiBhIG5hdmlnYXRpb24gaGFzIGJlZW4gdHJpZ2dlcmVkIGluIHRoZSBSb3V0ZXJQcm94eSBhbmQgaXMgbm90IHlldCBmaW5hbGl6ZWRcblx0ICovXG5cdGlzTmF2aWdhdGlvbkZpbmFsaXplZCgpIHtcblx0XHRyZXR1cm4gIXRoaXMuYklzUmVidWlsZEhpc3RvcnlSdW5uaW5nICYmICF0aGlzLl9iRGVsYXllZFJlYnVpbGQ7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgbGFzdCBzdGF0ZSBhcyBhIGd1YXJkLlxuXHQgKiBFYWNoIGZ1dHVyZSBuYXZpZ2F0aW9uIHdpbGwgYmUgY2hlY2tlZCBhZ2FpbnN0IHRoaXMgZ3VhcmQsIGFuZCBhIGNvbmZpcm1hdGlvbiBkaWFsb2cgd2lsbFxuXHQgKiBiZSBkaXNwbGF5ZWQgYmVmb3JlIHRoZSBuYXZpZ2F0aW9uIGNyb3NzZXMgdGhlIGd1YXJkIChpLmUuIGdvZXMgdG8gYW4gYW5jZXN0b3Igb2YgdGhlIGd1YXJkKS5cblx0ICpcblx0ICogQHBhcmFtIHNIYXNoIFRoZSBoYXNoIGZvciB0aGUgZ3VhcmRcblx0ICovXG5cdHNldE5hdmlnYXRpb25HdWFyZChzSGFzaDogc3RyaW5nKSB7XG5cdFx0dGhpcy5fb05hdmlnYXRpb25HdWFyZCA9IGNyZWF0ZUd1YXJkRnJvbUhhc2goc0hhc2gpO1xuXHRcdHRoaXMuYklzR3VhcmRDcm9zc0FsbG93ZWQgPSBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEaXNhYmxlcyB0aGUgbmF2aWdhdGlvbiBndWFyZC5cblx0ICovXG5cdGRpc2NhcmROYXZpZ2F0aW9uR3VhcmQoKSB7XG5cdFx0dGhpcy5fb05hdmlnYXRpb25HdWFyZCA9IG51bGw7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIGZvciB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoZSBuYXZpZ2F0aW9uIGd1YXJkLlxuXHQgKlxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgbmF2aWdhdGluZyBndWFyZCBpcyBhdmFpbGFibGVcblx0ICovXG5cdGhhc05hdmlnYXRpb25HdWFyZCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fb05hdmlnYXRpb25HdWFyZCAhPT0gbnVsbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBUZXN0cyBhIGhhc2ggYWdhaW5zdCB0aGUgbmF2aWdhdGlvbiBndWFyZC5cblx0ICpcblx0ICogQHBhcmFtIHNIYXNoIFRoZSBoYXNoIHRvIGJlIHRlc3RlZFxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgbmF2aWdhdGluZyB0byB0aGUgaGFzaCBkb2Vzbid0IGNyb3NzIHRoZSBndWFyZFxuXHQgKi9cblx0Y2hlY2tIYXNoV2l0aEd1YXJkKHNIYXNoOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gdGhpcy5fb05hdmlnYXRpb25HdWFyZCA9PT0gbnVsbCB8fCB0aGlzLl9vTmF2aWdhdGlvbkd1YXJkLmNoZWNrKHNIYXNoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgdGhlIHVzZXIgYWxsb3dlZCB0aGUgbmF2aWdhdGlvbiBndWFyZCB0byBiZSBjcm9zc2VkLlxuXHQgKlxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgY3Jvc3NpbmcgdGhlIGd1YXJkIGhhcyBiZWVuIGFsbG93ZWQgYnkgdGhlIHVzZXJcblx0ICovXG5cdGlzR3VhcmRDcm9zc0FsbG93ZWRCeVVzZXIoKSB7XG5cdFx0cmV0dXJuIHRoaXMuYklzR3VhcmRDcm9zc0FsbG93ZWQ7XG5cdH1cblxuXHQvKipcblx0ICogQWN0aXZhdGVzIHRoZSBzeW5jaHJvbml6YXRpb24gZm9yIHJvdXRlTWF0Y2hlZEV2ZW50LlxuXHQgKiBUaGUgbmV4dCBOYXZUb0hhc2ggY2FsbCB3aWxsIGNyZWF0ZSBhIFN5bmNocm9uaXphdGlvbiBvYmplY3QgdGhhdCB3aWxsIGJlIHJlc29sdmVkXG5cdCAqIGJ5IHRoZSBjb3JyZXNwb25kaW5nIG9uUm91dGVNYXRjaGVkIGV2ZW50LCBwcmV2ZW50aW5nIGFub3RoZXIgTmF2VG9IYXNoIHRvIGhhcHBlbiBpbiBwYXJhbGxlbC5cblx0ICovXG5cdGFjdGl2YXRlUm91dGVNYXRjaFN5bmNocm9uaXphdGlvbigpIHtcblx0XHR0aGlzLl9iQWN0aXZhdGVSb3V0ZU1hdGNoU3luY2hybyA9IHRydWU7XG5cdH1cblxuXHQvKipcblx0ICogUmVzb2x2ZSB0aGUgcm91dGVNYXRjaCBzeW5jaHJvbml6YXRpb24gb2JqZWN0LCB1bmxvY2tpbmcgcG90ZW50aWFsIHBlbmRpbmcgTmF2VG9IYXNoIGNhbGxzLlxuXHQgKi9cblx0cmVzb2x2ZVJvdXRlTWF0Y2goKSB7XG5cdFx0aWYgKHRoaXMuX29Sb3V0ZU1hdGNoU3luY2hyb25pemF0aW9uKSB7XG5cdFx0XHR0aGlzLl9vUm91dGVNYXRjaFN5bmNocm9uaXphdGlvbi5yZXNvbHZlKCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIE1ha2VzIHN1cmUgbm8gbmF2aWdhdGlvbiBjYW4gaGFwcGVuIGJlZm9yZSBhIHJvdXRlTWF0Y2ggaGFwcGVuZWQuXG5cdCAqL1xuXHR3YWl0Rm9yUm91dGVNYXRjaEJlZm9yZU5hdmlnYXRpb24oKSB7XG5cdFx0dGhpcy5fb1JvdXRlTWF0Y2hTeW5jaHJvbml6YXRpb24gPSBuZXcgU3luY2hyb25pemF0aW9uKCk7XG5cdFx0dGhpcy5fYkFjdGl2YXRlUm91dGVNYXRjaFN5bmNocm8gPSBmYWxzZTtcblx0fVxuXG5cdF9leHRyYWN0RW50aXR5U2V0c0Zyb21IYXNoKHNIYXNoOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmdbXSB7XG5cdFx0aWYgKHNIYXNoID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHNIYXNoID0gXCJcIjtcblx0XHR9XG5cdFx0Y29uc3Qgc0hhc2hOb1BhcmFtcyA9IHNIYXNoLnNwbGl0KFwiP1wiKVswXTsgLy8gcmVtb3ZlIHBhcmFtc1xuXHRcdGNvbnN0IGFUb2tlbnMgPSBzSGFzaE5vUGFyYW1zLnNwbGl0KFwiL1wiKTtcblx0XHRjb25zdCBuYW1lczogc3RyaW5nW10gPSBbXTtcblxuXHRcdGFUb2tlbnMuZm9yRWFjaCgoc1Rva2VuKSA9PiB7XG5cdFx0XHRpZiAoc1Rva2VuLmxlbmd0aCkge1xuXHRcdFx0XHRuYW1lcy5wdXNoKHNUb2tlbi5zcGxpdChcIihcIilbMF0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIG5hbWVzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhIHN0YXRlIGZyb20gYSBoYXNoLlxuXHQgKlxuXHQgKiBAcGFyYW0gc0hhc2ggVGhlIGhhc2ggdG8gYmUgdXNlZCBhcyBlbnRyeVxuXHQgKiBAcmV0dXJucyBUaGUgc3RhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqL1xuXHRfZXh0cmFjdFN0YXRlRnJvbUhhc2goc0hhc2g6IHN0cmluZykge1xuXHRcdGlmIChzSGFzaCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRzSGFzaCA9IFwiXCI7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgb1N0YXRlOiBhbnkgPSB7XG5cdFx0XHRrZXlzOiB0aGlzLl9leHRyYWN0RW50aXR5U2V0c0Zyb21IYXNoKHNIYXNoKVxuXHRcdH07XG5cblx0XHQvLyBSZXRyaWV2ZSBsYXlvdXQgKGlmIGFueSlcblx0XHRjb25zdCBhTGF5b3V0ID0gc0hhc2gubWF0Y2gobmV3IFJlZ0V4cChgXFxcXD8uKiR7ZW51bVVSTFBhcmFtcy5MQVlPVVRQQVJBTX09KFteJl0qKWApKTtcblx0XHRvU3RhdGUuc0xheW91dCA9IGFMYXlvdXQgJiYgYUxheW91dC5sZW5ndGggPiAxID8gYUxheW91dFsxXSA6IG51bGw7XG5cdFx0aWYgKG9TdGF0ZS5zTGF5b3V0ID09PSBcIk1pZENvbHVtbkZ1bGxTY3JlZW5cIikge1xuXHRcdFx0b1N0YXRlLnNjcmVlbk1vZGUgPSAxO1xuXHRcdH0gZWxzZSBpZiAob1N0YXRlLnNMYXlvdXQgPT09IFwiRW5kQ29sdW1uRnVsbFNjcmVlblwiKSB7XG5cdFx0XHRvU3RhdGUuc2NyZWVuTW9kZSA9IDI7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG9TdGF0ZS5zY3JlZW5Nb2RlID0gMDtcblx0XHR9XG5cblx0XHRvU3RhdGUuaGFzaCA9IHNIYXNoO1xuXHRcdHJldHVybiBvU3RhdGU7XG5cdH1cblxuXHQvKipcblx0ICogQWRkcyBhIG5ldyBzdGF0ZSBpbnRvIHRoZSBpbnRlcm5hbCBoaXN0b3J5IHN0cnVjdHVyZS5cblx0ICogTWFrZXMgc3VyZSB0aGlzIG5ldyBzdGF0ZSBpcyBhZGRlZCBhZnRlciBhbiBhbmNlc3Rvci5cblx0ICogQWxzbyBzZXRzIHRoZSBpQXBwU3RhdGUga2V5IGluIHRoZSB3aG9sZSBoaXN0b3J5LlxuXHQgKlxuXHQgKiBAbWVtYmVyb2Ygc2FwLmZlLmNvcmUuUm91dGVyUHJveHlcblx0ICogQHBhcmFtIG9OZXdTdGF0ZSBUaGUgbmV3IHN0YXRlIHRvIGJlIGFkZGVkXG5cdCAqIEBwYXJhbSBiUmVidWlsZE9ubHkgYHRydWVgIGlmIHdlJ3JlIHJlYnVpbGRpbmcgdGhlIGhpc3RvcnkgYWZ0ZXIgYSBzaGVsbCBtZW51IG5hdmlnYXRpb25cblx0ICogQHBhcmFtIGJQcmVzZXJ2ZUhpc3RvcnkgSWYgc2V0IHRvIHRydWUsIG5vbi1hbmNlc3RvciBlbnRyaWVzIGluIGhpc3Rvcnkgd2lsbCBiZSByZXRhaW5lZFxuXHQgKiBAcGFyYW0gYkRpc2FibGVIaXN0b3J5UHJlc2VydmF0aW9uIERpc2FibGUgdGhlIG1lY2hhbmlzbSB0byByZXRhaW5lZCBtYXJrZWQgZW50cmllcyBpbiBjYWNoZVxuXHQgKiBAcmV0dXJucyBUaGUgbmV3IHN0YXRlXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKiBAZmluYWxcblx0ICovXG5cdF9wdXNoTmV3U3RhdGUob05ld1N0YXRlOiBhbnksIGJSZWJ1aWxkT25seTogYm9vbGVhbiwgYlByZXNlcnZlSGlzdG9yeTogYm9vbGVhbiwgYkRpc2FibGVIaXN0b3J5UHJlc2VydmF0aW9uOiBib29sZWFuKSB7XG5cdFx0Y29uc3Qgc0N1cnJlbnRIYXNoID0gdGhpcy5nZXRIYXNoKCk7XG5cdFx0bGV0IGxhc3RJbmRleCA9IHRoaXMuX29NYW5hZ2VkSGlzdG9yeS5sZW5ndGggLSAxO1xuXHRcdGxldCBpUG9wQ291bnQgPSBiUmVidWlsZE9ubHkgPyAxIDogMDtcblxuXHRcdC8vIDEuIERvIHNvbWUgY2xlYW51cCBpbiB0aGUgbWFuYWdlZCBoaXN0b3J5IDogaW4gY2FzZSB0aGUgdXNlciBoYXMgbmF2aWdhdGVkIGJhY2sgaW4gdGhlIGJyb3dzZXIgaGlzdG9yeSwgd2UgbmVlZCB0byByZW1vdmVcblx0XHQvLyB0aGUgc3RhdGVzIGFoZWFkIGluIGhpc3RvcnkgYW5kIG1ha2Ugc3VyZSB0aGUgdG9wIHN0YXRlIGNvcnJlc3BvbmRzIHRvIHRoZSBjdXJyZW50IHBhZ2Vcblx0XHQvLyBXZSBkb24ndCBkbyB0aGF0IHdoZW4gcmVzdG9yaW5nIHRoZSBoaXN0b3J5LCBhcyB0aGUgY3VycmVudCBzdGF0ZSBoYXMgYmVlbiBhZGRlZCBvbiB0b3Agb2YgdGhlIGJyb3dzZXIgaGlzdG9yeVxuXHRcdC8vIGFuZCBpcyBub3QgcmVmbGVjdGVkIGluIHRoZSBtYW5hZ2VkIGhpc3Rvcnlcblx0XHRpZiAoIWJSZWJ1aWxkT25seSkge1xuXHRcdFx0d2hpbGUgKGxhc3RJbmRleCA+PSAwICYmIHRoaXMuX29NYW5hZ2VkSGlzdG9yeVtsYXN0SW5kZXhdLmhhc2ggIT09IHNDdXJyZW50SGFzaCkge1xuXHRcdFx0XHR0aGlzLl9vTWFuYWdlZEhpc3RvcnkucG9wKCk7XG5cdFx0XHRcdGxhc3RJbmRleC0tO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAodGhpcy5fb01hbmFnZWRIaXN0b3J5Lmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0XHQvLyBXZSBjb3VsZG4ndCBmaW5kIHRoZSBjdXJyZW50IGxvY2F0aW9uIGluIHRoZSBoaXN0b3J5LiBUaGlzIGNhbiBoYXBwZW4gaWYgYSBicm93c2VyIHJlbG9hZFxuXHRcdFx0XHQvLyBoYXBwZW5lZCwgY2F1c2luZyBhIHJlaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZWQgaGlzdG9yeS5cblx0XHRcdFx0Ly8gSW4gdGhhdCBjYXNlLCB3ZSB1c2UgdGhlIGN1cnJlbnQgbG9jYXRpb24gYXMgdGhlIG5ldyBzdGFydGluZyBwb2ludCBpbiB0aGUgbWFuYWdlZCBoaXN0b3J5XG5cdFx0XHRcdHRoaXMuX29NYW5hZ2VkSGlzdG9yeS5wdXNoKHRoaXMuX2V4dHJhY3RTdGF0ZUZyb21IYXNoKHNDdXJyZW50SGFzaCkpO1xuXHRcdFx0XHRoaXN0b3J5LnJlcGxhY2VTdGF0ZShPYmplY3QuYXNzaWduKHsgZmVMZXZlbDogMCB9LCBoaXN0b3J5LnN0YXRlKSwgXCJcIik7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gMi4gTWFyayB0aGUgdG9wIHN0YXRlIGFzIHByZXNlcnZlZCBpZiByZXF1aXJlZFxuXHRcdGlmIChiUHJlc2VydmVIaXN0b3J5ICYmICFiRGlzYWJsZUhpc3RvcnlQcmVzZXJ2YXRpb24pIHtcblx0XHRcdHRoaXMuX29NYW5hZ2VkSGlzdG9yeVt0aGlzLl9vTWFuYWdlZEhpc3RvcnkubGVuZ3RoIC0gMV0ucHJlc2VydmVkID0gdHJ1ZTtcblx0XHR9XG5cblx0XHQvLyAzLiBUaGVuIHBvcCBhbGwgc3RhdGVzIHVudGlsIHdlIGZpbmQgYW4gYW5jZXN0b3Igb2YgdGhlIG5ldyBzdGF0ZSwgb3Igd2UgZmluZCBhIHN0YXRlIHRoYXQgbmVlZCB0byBiZSBwcmVzZXJ2ZWRcblx0XHRsZXQgb0xhc3RSZW1vdmVkSXRlbTtcblx0XHR3aGlsZSAodGhpcy5fb01hbmFnZWRIaXN0b3J5Lmxlbmd0aCA+IDApIHtcblx0XHRcdGNvbnN0IG9Ub3BTdGF0ZSA9IHRoaXMuX29NYW5hZ2VkSGlzdG9yeVt0aGlzLl9vTWFuYWdlZEhpc3RvcnkubGVuZ3RoIC0gMV07XG5cdFx0XHRpZiAoXG5cdFx0XHRcdChiRGlzYWJsZUhpc3RvcnlQcmVzZXJ2YXRpb24gfHwgIW9Ub3BTdGF0ZS5wcmVzZXJ2ZWQpICYmXG5cdFx0XHRcdHRoaXMuX2NvbXBhcmVDYWNoZVN0YXRlcyhvVG9wU3RhdGUsIG9OZXdTdGF0ZSkgIT09IGVudW1TdGF0ZS5BTkNFU1RPUlxuXHRcdFx0KSB7XG5cdFx0XHRcdC8vIFRoZSB0b3Agc3RhdGUgaXMgbm90IGFuIGFuY2VzdG9yIG9mIG9OZXdTdGF0ZSBhbmQgaXMgbm90IHByZXNlcnZlZCAtLT4gd2UgY2FuIHBvcCBpdFxuXHRcdFx0XHRvTGFzdFJlbW92ZWRJdGVtID0gdGhpcy5fb01hbmFnZWRIaXN0b3J5LnBvcCgpO1xuXHRcdFx0XHRpUG9wQ291bnQrKztcblx0XHRcdH0gZWxzZSBpZiAob1RvcFN0YXRlLnByZXNlcnZlZCAmJiByZW1vdmVBcHBTdGF0ZUluSGFzaChvVG9wU3RhdGUuaGFzaCkgPT09IHJlbW92ZUFwcFN0YXRlSW5IYXNoKG9OZXdTdGF0ZS5oYXNoKSkge1xuXHRcdFx0XHQvLyBXZSB0cnkgdG8gYWRkIGEgc3RhdGUgdGhhdCBpcyBhbHJlYWR5IGluIGNhY2hlIChkdWUgdG8gcHJlc2VydmVkIGZsYWcpIGJ1dCB3aXRoIGEgZGlmZmVyZW50IGlhcHAtc3RhdGVcblx0XHRcdFx0Ly8gLS0+IHdlIHNob3VsZCBkZWxldGUgdGhlIHByZXZpb3VzIGVudHJ5IChpdCB3aWxsIGJlIGxhdGVyIHJlcGxhY2VkIGJ5IHRoZSBuZXcgb25lKSBhbmQgc3RvcCBwb3BwaW5nXG5cdFx0XHRcdG9MYXN0UmVtb3ZlZEl0ZW0gPSB0aGlzLl9vTWFuYWdlZEhpc3RvcnkucG9wKCk7XG5cdFx0XHRcdGlQb3BDb3VudCsrO1xuXHRcdFx0XHRvTmV3U3RhdGUucHJlc2VydmVkID0gdHJ1ZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRicmVhazsgLy8gQW5jZXN0b3Igb3IgcHJlc2VydmVkIHN0YXRlIGZvdW5kIC0tPiB3ZSBzdG9wIHBvcHBpbmcgb3V0IHN0YXRlc1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIDQuIGlBcHBTdGF0ZSBtYW5hZ2VtZW50XG5cdFx0dGhpcy5zSUFwcFN0YXRlS2V5ID0gZmluZEFwcFN0YXRlSW5IYXNoKG9OZXdTdGF0ZS5oYXNoKTtcblx0XHRpZiAoIXRoaXMuZmNsRW5hYmxlZCAmJiBvTGFzdFJlbW92ZWRJdGVtKSB7XG5cdFx0XHRjb25zdCBzUHJldmlvdXNJQXBwU3RhdGVLZXkgPSBmaW5kQXBwU3RhdGVJbkhhc2gob0xhc3RSZW1vdmVkSXRlbS5oYXNoKTtcblx0XHRcdGNvbnN0IG9Db21wYXJpc29uU3RhdGVSZXN1bHQgPSB0aGlzLl9jb21wYXJlQ2FjaGVTdGF0ZXMob0xhc3RSZW1vdmVkSXRlbSwgb05ld1N0YXRlKTtcblx0XHRcdC8vIGlmIGN1cnJlbnQgc3RhdGUgZG9lc24ndCBjb250YWluIGEgaS1hcHBzdGF0ZSBhbmQgdGhpcyBzdGF0ZSBzaG91bGQgcmVwbGFjZSBhIHN0YXRlIGNvbnRhaW5pbmcgYSBpQXBwU3RhdGVcblx0XHRcdC8vIHRoZW4gdGhlIHByZXZpb3VzIGlBcHBTdGF0ZSBpcyBwcmVzZXJ2ZWRcblx0XHRcdGlmIChcblx0XHRcdFx0IXRoaXMuc0lBcHBTdGF0ZUtleSAmJlxuXHRcdFx0XHRzUHJldmlvdXNJQXBwU3RhdGVLZXkgJiZcblx0XHRcdFx0KG9Db21wYXJpc29uU3RhdGVSZXN1bHQgPT09IGVudW1TdGF0ZS5FUVVBTCB8fCBvQ29tcGFyaXNvblN0YXRlUmVzdWx0ID09PSBlbnVtU3RhdGUuQ09NUEFUSUJMRSlcblx0XHRcdCkge1xuXHRcdFx0XHRvTmV3U3RhdGUuaGFzaCA9IHNldEFwcFN0YXRlSW5IYXNoKG9OZXdTdGF0ZS5oYXNoLCBzUHJldmlvdXNJQXBwU3RhdGVLZXkpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIDUuIE5vdyB3ZSBjYW4gcHVzaCB0aGUgc3RhdGUgYXQgdGhlIHRvcCBvZiB0aGUgaW50ZXJuYWwgaGlzdG9yeVxuXHRcdGNvbnN0IGJIYXNTYW1lSGFzaCA9IG9MYXN0UmVtb3ZlZEl0ZW0gJiYgb05ld1N0YXRlLmhhc2ggPT09IG9MYXN0UmVtb3ZlZEl0ZW0uaGFzaDtcblx0XHRpZiAodGhpcy5fb01hbmFnZWRIaXN0b3J5Lmxlbmd0aCA9PT0gMCB8fCB0aGlzLl9vTWFuYWdlZEhpc3RvcnlbdGhpcy5fb01hbmFnZWRIaXN0b3J5Lmxlbmd0aCAtIDFdLmhhc2ggIT09IG9OZXdTdGF0ZS5oYXNoKSB7XG5cdFx0XHR0aGlzLl9vTWFuYWdlZEhpc3RvcnkucHVzaChvTmV3U3RhdGUpO1xuXHRcdH1cblxuXHRcdC8vIDYuIERldGVybWluZSB3aGljaCBhY3Rpb25zIHRvIGRvIG9uIHRoZSBoaXN0b3J5XG5cdFx0aWYgKGlQb3BDb3VudCA9PT0gMCkge1xuXHRcdFx0Ly8gTm8gc3RhdGUgd2FzIHBvcHBlZCAtLT4gYXBwZW5kXG5cdFx0XHRyZXR1cm4geyB0eXBlOiBcImFwcGVuZFwiIH07XG5cdFx0fSBlbHNlIGlmIChpUG9wQ291bnQgPT09IDEpIHtcblx0XHRcdC8vIE9ubHkgMSBzdGF0ZSB3YXMgcG9wcGVkIC0tPiByZXBsYWNlIGN1cnJlbnQgaGFzaCB1bmxlc3MgaGFzaCBpcyB0aGUgc2FtZSAodGhlbiBub3RoaW5nIHRvIGRvKVxuXHRcdFx0cmV0dXJuIGJIYXNTYW1lSGFzaCA/IHsgdHlwZTogXCJub25lXCIgfSA6IHsgdHlwZTogXCJyZXBsYWNlXCIgfTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gTW9yZSB0aGFuIDEgc3RhdGUgd2FzIHBvcHBlZCAtLT4gZ28gYmFrYyBpbiBoaXN0b3J5IGFuZCByZXBsYWNlIGhhc2ggaWYgbmVjZXNzYXJ5XG5cdFx0XHRyZXR1cm4gYkhhc1NhbWVIYXNoID8geyB0eXBlOiBcImJhY2tcIiwgc3RlcHM6IGlQb3BDb3VudCAtIDEgfSA6IHsgdHlwZTogXCJiYWNrLXJlcGxhY2VcIiwgc3RlcHM6IGlQb3BDb3VudCAtIDEgfTtcblx0XHR9XG5cdH1cblxuXHRfYmxvY2tpbmdOYXZpZ2F0aW9uRmlsdGVyKCkge1xuXHRcdHJldHVybiB0aGlzLl9iRGlzYWJsZU9uSGFzaENoYW5nZSA/IFwiQ3VzdG9tXCIgOiBcIkNvbnRpbnVlXCI7XG5cdH1cblxuXHQvKipcblx0ICogRGlzYWJsZSB0aGUgcm91dGluZyBieSBjYWxsaW5nIHRoZSByb3V0ZXIgc3RvcCBtZXRob2QuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbWVtYmVyb2Ygc2FwLmZlLmNvcmUuUm91dGVyUHJveHlcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEBmaW5hbFxuXHQgKi9cblx0X2Rpc2FibGVFdmVudE9uSGFzaENoYW5nZSgpIHtcblx0XHR0aGlzLl9iRGlzYWJsZU9uSGFzaENoYW5nZSA9IHRydWU7XG5cdFx0dGhpcy5fb1JvdXRlci5zdG9wKCk7XG5cdH1cblxuXHQvKipcblx0ICogRW5hYmxlIHRoZSByb3V0aW5nIGJ5IGNhbGxpbmcgdGhlIHJvdXRlciBpbml0aWFsaXplIG1ldGhvZC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIHNhcC5mZS5jb3JlLlJvdXRlclByb3h5I19lbmFibGVFdmVudE9uSGFzaENoYW5nZVxuXHQgKiBAbWVtYmVyb2Ygc2FwLmZlLmNvcmUuUm91dGVyUHJveHlcblx0ICogQHBhcmFtIFtiSWdub3JlQ3VycmVudEhhc2hdIElnbm9yZSB0aGUgbGFzdCBoYXNoIGV2ZW50IHRyaWdnZXJlZCBiZWZvcmUgdGhlIHJvdXRlciBoYXMgaW5pdGlhbGl6ZWRcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEBmaW5hbFxuXHQgKi9cblx0X2VuYWJsZUV2ZW50T25IYXNoQ2hhbmdlKGJJZ25vcmVDdXJyZW50SGFzaDogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuXHRcdHRoaXMuX2JEaXNhYmxlT25IYXNoQ2hhbmdlID0gZmFsc2U7XG5cdFx0dGhpcy5fb1JvdXRlci5pbml0aWFsaXplKGJJZ25vcmVDdXJyZW50SGFzaCk7XG5cdH1cblxuXHQvKipcblx0ICogU3luY2hyb25pemVzIHRoZSBicm93c2VyIGhpc3Rvcnkgd2l0aCB0aGUgaW50ZXJuYWwgaGlzdG9yeSBvZiB0aGUgcm91dGVyUHJveHksIGFuZCB0cmlnZ2VycyBhIG5hdmlnYXRpb24gaWYgbmVlZGVkLlxuXHQgKlxuXHQgKiBAbWVtYmVyb2Ygc2FwLmZlLmNvcmUuUm91dGVyUHJveHlcblx0ICogQHBhcmFtIG9IaXN0b3J5QWN0aW9uIFNwZWNpZmllcyB0aGUgbmF2aWdhdGlvbiBhY3Rpb24gdG8gYmUgcGVyZm9ybWVkXG5cdCAqIEBwYXJhbSBiUmVidWlsZE9ubHkgYHRydWVgIGlmIGludGVybmFsIGhpc3RvcnkgaXMgY3VycmVudGx5IGJlaW5nIHJlYnVpbHRcblx0ICogQHJldHVybnMgUHJvbWlzZSAocmVzb2x2ZWQgd2hlbiB0aGUgbmF2aWdhdGlvbiBpcyBmaW5hbGl6ZWQpIHRoYXQgcmV0dXJucyAndHJ1ZScgaWYgYSBuYXZpZ2F0aW9uIHRvb2sgcGxhY2UsICdmYWxzZScgaWYgdGhlIG5hdmlnYXRpb24gZGlkbid0IGhhcHBlblxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQGZpbmFsXG5cdCAqL1xuXHRfcmVidWlsZEJyb3dzZXJIaXN0b3J5KG9IaXN0b3J5QWN0aW9uOiBhbnksIGJSZWJ1aWxkT25seTogYm9vbGVhbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhpcy1hbGlhc1xuXHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuXHRcdFx0dGhpcy5iSXNSZWJ1aWxkSGlzdG9yeVJ1bm5pbmcgPSB0cnVlO1xuXHRcdFx0Y29uc3Qgb1RhcmdldFN0YXRlID0gdGhpcy5fb01hbmFnZWRIaXN0b3J5W3RoaXMuX29NYW5hZ2VkSGlzdG9yeS5sZW5ndGggLSAxXSxcblx0XHRcdFx0bmV3TGV2ZWwgPSB0aGlzLl9vTWFuYWdlZEhpc3RvcnkubGVuZ3RoIC0gMTtcblxuXHRcdFx0ZnVuY3Rpb24gcmVwbGFjZUFzeW5jKCkge1xuXHRcdFx0XHRpZiAoIWJSZWJ1aWxkT25seSkge1xuXHRcdFx0XHRcdHRoYXQuX2VuYWJsZUV2ZW50T25IYXNoQ2hhbmdlKHRydWUpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0KHRoYXQuX29Sb3V0ZXIuZ2V0SGFzaENoYW5nZXIoKS5yZXBsYWNlSGFzaCBhcyBhbnkpKG9UYXJnZXRTdGF0ZS5oYXNoKTtcblx0XHRcdFx0aGlzdG9yeS5yZXBsYWNlU3RhdGUoT2JqZWN0LmFzc2lnbih7IGZlTGV2ZWw6IG5ld0xldmVsIH0sIGhpc3Rvcnkuc3RhdGUpLCBcIlwiKTtcblxuXHRcdFx0XHRpZiAoYlJlYnVpbGRPbmx5KSB7XG5cdFx0XHRcdFx0c2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHQvLyBUaW1lb3V0IHRvIGxldCAnaGFzaGNoYW5nZScgZXZlbnQgYmUgcHJvY2Vzc2VkIGJlZm9yZSBieSB0aGUgSGFzaENoYW5nZXIsIHNvIHRoYXRcblx0XHRcdFx0XHRcdC8vIG9uUm91dGVNYXRjaGVkIG5vdGlmaWNhdGlvbiBpc24ndCByYWlzZWRcblx0XHRcdFx0XHRcdHRoYXQuX2VuYWJsZUV2ZW50T25IYXNoQ2hhbmdlKHRydWUpO1xuXHRcdFx0XHRcdH0sIDApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dGhhdC5iSXNSZWJ1aWxkSGlzdG9yeVJ1bm5pbmcgPSBmYWxzZTtcblx0XHRcdFx0cmVzb2x2ZSh0cnVlKTsgLy8gYSBuYXZpZ2F0aW9uIG9jY3VycmVkXG5cdFx0XHR9XG5cblx0XHRcdC8vIEFzeW5jIGNhbGxiYWNrcyB3aGVuIG5hdmlnYXRpbmcgYmFjaywgaW4gb3JkZXIgdG8gbGV0IGFsbCBub3RpZmljYXRpb25zIGFuZCBldmVudHMgZ2V0IHByb2Nlc3NlZFxuXHRcdFx0ZnVuY3Rpb24gYmFja1JlcGxhY2VBc3luYygpIHtcblx0XHRcdFx0d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwb3BzdGF0ZVwiLCBiYWNrUmVwbGFjZUFzeW5jKTtcblx0XHRcdFx0c2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0Ly8gVGltZW91dCB0byBsZXQgJ2hhc2hjaGFuZ2UnIGV2ZW50IGJlIHByb2Nlc3NlZCBiZWZvcmUgYnkgdGhlIEhhc2hDaGFuZ2VyXG5cdFx0XHRcdFx0cmVwbGFjZUFzeW5jKCk7XG5cdFx0XHRcdH0sIDApO1xuXHRcdFx0fVxuXG5cdFx0XHRmdW5jdGlvbiBiYWNrQXN5bmMoKSB7XG5cdFx0XHRcdHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicG9wc3RhdGVcIiwgYmFja0FzeW5jKTtcblx0XHRcdFx0dGhhdC5iSXNSZWJ1aWxkSGlzdG9yeVJ1bm5pbmcgPSBmYWxzZTtcblx0XHRcdFx0cmVzb2x2ZSh0cnVlKTsgLy8gYSBuYXZpZ2F0aW9uIG9jY3VycmVkXG5cdFx0XHR9XG5cblx0XHRcdHRoYXQuX2JJZ25vcmVSZXN0b3JlID0gdHJ1ZTtcblxuXHRcdFx0c3dpdGNoIChvSGlzdG9yeUFjdGlvbi50eXBlKSB7XG5cdFx0XHRcdGNhc2UgXCJyZXBsYWNlXCI6XG5cdFx0XHRcdFx0KHRoYXQuX29Sb3V0ZXIuZ2V0SGFzaENoYW5nZXIoKS5yZXBsYWNlSGFzaCBhcyBhbnkpKG9UYXJnZXRTdGF0ZS5oYXNoKTtcblx0XHRcdFx0XHRoaXN0b3J5LnJlcGxhY2VTdGF0ZShPYmplY3QuYXNzaWduKHsgZmVMZXZlbDogbmV3TGV2ZWwgfSwgaGlzdG9yeS5zdGF0ZSksIFwiXCIpO1xuXHRcdFx0XHRcdHRoYXQuYklzUmVidWlsZEhpc3RvcnlSdW5uaW5nID0gZmFsc2U7XG5cdFx0XHRcdFx0cmVzb2x2ZSh0cnVlKTsgLy8gYSBuYXZpZ2F0aW9uIG9jY3VycmVkXG5cdFx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdFx0Y2FzZSBcImFwcGVuZFwiOlxuXHRcdFx0XHRcdHRoYXQuX29Sb3V0ZXIuZ2V0SGFzaENoYW5nZXIoKS5zZXRIYXNoKG9UYXJnZXRTdGF0ZS5oYXNoKTtcblx0XHRcdFx0XHRoaXN0b3J5LnJlcGxhY2VTdGF0ZShPYmplY3QuYXNzaWduKHsgZmVMZXZlbDogbmV3TGV2ZWwgfSwgaGlzdG9yeS5zdGF0ZSksIFwiXCIpO1xuXHRcdFx0XHRcdHRoYXQuYklzUmVidWlsZEhpc3RvcnlSdW5uaW5nID0gZmFsc2U7XG5cdFx0XHRcdFx0cmVzb2x2ZSh0cnVlKTsgLy8gYSBuYXZpZ2F0aW9uIG9jY3VycmVkXG5cdFx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdFx0Y2FzZSBcImJhY2tcIjpcblx0XHRcdFx0XHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInBvcHN0YXRlXCIsIGJhY2tBc3luYyk7XG5cdFx0XHRcdFx0aGlzdG9yeS5nbygtb0hpc3RvcnlBY3Rpb24uc3RlcHMpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdGNhc2UgXCJiYWNrLXJlcGxhY2VcIjpcblx0XHRcdFx0XHR0aGlzLl9kaXNhYmxlRXZlbnRPbkhhc2hDaGFuZ2UoKTtcblx0XHRcdFx0XHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInBvcHN0YXRlXCIsIGJhY2tSZXBsYWNlQXN5bmMpO1xuXHRcdFx0XHRcdGhpc3RvcnkuZ28oLW9IaXN0b3J5QWN0aW9uLnN0ZXBzKTtcblx0XHRcdFx0XHRicmVhaztcblxuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdC8vIE5vIG5hdmlnYXRpb25cblx0XHRcdFx0XHR0aGlzLmJJc1JlYnVpbGRIaXN0b3J5UnVubmluZyA9IGZhbHNlO1xuXHRcdFx0XHRcdHJlc29sdmUoZmFsc2UpOyAvLyBubyBuYXZpZ2F0aW9uIC0tPiByZXNvbHZlIHRvIGZhbHNlXG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRnZXRMYXN0SGlzdG9yeUVudHJ5KCkge1xuXHRcdHJldHVybiB0aGlzLl9vTWFuYWdlZEhpc3RvcnlbdGhpcy5fb01hbmFnZWRIaXN0b3J5Lmxlbmd0aCAtIDFdO1xuXHR9XG5cblx0c2V0UGF0aE1hcHBpbmcobWFwcGluZ3M6IHsgb2xkUGF0aDogc3RyaW5nOyBuZXdQYXRoOiBzdHJpbmcgfVtdKSB7XG5cdFx0dGhpcy5fcGF0aE1hcHBpbmdzID0gbWFwcGluZ3MuZmlsdGVyKChtYXBwaW5nKSA9PiB7XG5cdFx0XHRyZXR1cm4gbWFwcGluZy5vbGRQYXRoICE9PSBtYXBwaW5nLm5ld1BhdGg7XG5cdFx0fSk7XG5cdH1cblxuXHRoYXNoR3VhcmQoKSB7XG5cdFx0bGV0IHNIYXNoID0gd2luZG93LmxvY2F0aW9uLmhhc2g7XG5cblx0XHRpZiAoc0hhc2guaW5kZXhPZihcInJlc3RvcmVIaXN0b3J5PXRydWVcIikgIT09IC0xKSB7XG5cdFx0XHR0aGlzLl9iQXBwbHlSZXN0b3JlID0gdHJ1ZTtcblx0XHR9IGVsc2UgaWYgKCF0aGlzLmJJc1JlYnVpbGRIaXN0b3J5UnVubmluZykge1xuXHRcdFx0Ly8gQ2hlY2sgaWYgdGhlIGhhc2ggbmVlZHMgdG8gYmUgY2hhbmdlZCAodGhpcyBoYXBwZW5zIGluIEZDTCB3aGVuIHN3aXRjaGluZyBiL3cgZWRpdCBhbmQgcmVhZC1vbmx5IHdpdGggMyBjb2x1bW5zIG9wZW4pXG5cdFx0XHRjb25zdCBtYXBwaW5nID0gdGhpcy5fcGF0aE1hcHBpbmdzLmZpbmQoKG0pID0+IHtcblx0XHRcdFx0cmV0dXJuIHNIYXNoLmluZGV4T2YobS5vbGRQYXRoKSA+PSAwO1xuXHRcdFx0fSk7XG5cdFx0XHRpZiAobWFwcGluZykge1xuXHRcdFx0XHQvLyBSZXBsYWNlIHRoZSBjdXJyZW50IGhhc2hcblx0XHRcdFx0c0hhc2ggPSBzSGFzaC5yZXBsYWNlKG1hcHBpbmcub2xkUGF0aCwgbWFwcGluZy5uZXdQYXRoKTtcblx0XHRcdFx0aGlzdG9yeS5yZXBsYWNlU3RhdGUoT2JqZWN0LmFzc2lnbih7fSwgaGlzdG9yeS5zdGF0ZSksIFwiXCIsIHNIYXNoKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnN0IGFIYXNoU3BsaXQgPSBzSGFzaC5zcGxpdChcIiYvXCIpO1xuXHRcdFx0XHRjb25zdCBzQXBwSGFzaCA9IGFIYXNoU3BsaXRbMV0gPyBhSGFzaFNwbGl0WzFdIDogXCJcIjtcblx0XHRcdFx0aWYgKHRoaXMuY2hlY2tIYXNoV2l0aEd1YXJkKHNBcHBIYXNoKSkge1xuXHRcdFx0XHRcdHRoaXMuX2JEZWxheWVkUmVidWlsZCA9IHRydWU7XG5cdFx0XHRcdFx0Y29uc3Qgb05ld1N0YXRlID0gdGhpcy5fZXh0cmFjdFN0YXRlRnJvbUhhc2goc0FwcEhhc2gpO1xuXHRcdFx0XHRcdHRoaXMuX3B1c2hOZXdTdGF0ZShvTmV3U3RhdGUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSk7XG5cblx0XHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMuX2JEZWxheWVkUmVidWlsZCA9IGZhbHNlO1xuXHRcdFx0XHRcdH0sIDApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIENvbXBhcmVzIDIgc3RhdGVzLlxuXHQgKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gb1N0YXRlMVxuXHQgKiBAcGFyYW0ge29iamVjdH0gb1N0YXRlMlxuXHQgKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29uOlxuXHQgKiAgICAgICAgLSBlbnVtU3RhdGUuRVFVQUwgaWYgb1N0YXRlMSBhbmQgb1N0YXRlMiBhcmUgZXF1YWxcblx0ICogICAgICAgIC0gZW51bVN0YXRlLkNPTVBBVElCTEUgaWYgb1N0YXRlMSBhbmQgb1N0YXRlMiBhcmUgY29tcGF0aWJsZVxuXHQgKiAgICAgICAgLSBlbnVtU3RhdGUuQU5DRVNUT1IgaWYgb1N0YXRlMSBpcyBhbiBhbmNlc3RvciBvZiBvU3RhdGUyXG5cdCAqICAgICAgICAtIGVudW1TdGF0ZS5ESUZGRVJFTlQgaWYgdGhlIDIgc3RhdGVzIGFyZSBkaWZmZXJlbnRcblx0ICovXG5cblx0X2NvbXBhcmVDYWNoZVN0YXRlcyhvU3RhdGUxOiBhbnksIG9TdGF0ZTI6IGFueSkge1xuXHRcdC8vIEZpcnN0IGNvbXBhcmUgb2JqZWN0IGtleXNcblx0XHRpZiAob1N0YXRlMS5rZXlzLmxlbmd0aCA+IG9TdGF0ZTIua2V5cy5sZW5ndGgpIHtcblx0XHRcdHJldHVybiBlbnVtU3RhdGUuRElGRkVSRU5UO1xuXHRcdH1cblx0XHRsZXQgZXF1YWwgPSB0cnVlO1xuXHRcdGxldCBpbmRleDtcblx0XHRmb3IgKGluZGV4ID0gMDsgZXF1YWwgJiYgaW5kZXggPCBvU3RhdGUxLmtleXMubGVuZ3RoOyBpbmRleCsrKSB7XG5cdFx0XHRpZiAob1N0YXRlMS5rZXlzW2luZGV4XSAhPT0gb1N0YXRlMi5rZXlzW2luZGV4XSkge1xuXHRcdFx0XHRlcXVhbCA9IGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoIWVxdWFsKSB7XG5cdFx0XHQvLyBTb21lIG9iamVjdHMga2V5cyBhcmUgZGlmZmVyZW50XG5cdFx0XHRyZXR1cm4gZW51bVN0YXRlLkRJRkZFUkVOVDtcblx0XHR9XG5cblx0XHQvLyBBbGwga2V5cyBmcm9tIG9TdGF0ZTEgYXJlIGluIG9TdGF0ZTIgLS0+IGNoZWNrIGlmIGFuY2VzdG9yXG5cdFx0aWYgKG9TdGF0ZTEua2V5cy5sZW5ndGggPCBvU3RhdGUyLmtleXMubGVuZ3RoIHx8IG9TdGF0ZTEuc2NyZWVuTW9kZSA8IG9TdGF0ZTIuc2NyZWVuTW9kZSkge1xuXHRcdFx0cmV0dXJuIGVudW1TdGF0ZS5BTkNFU1RPUjtcblx0XHR9XG5cdFx0aWYgKG9TdGF0ZTEuc2NyZWVuTW9kZSA+IG9TdGF0ZTIuc2NyZWVuTW9kZSkge1xuXHRcdFx0cmV0dXJuIGVudW1TdGF0ZS5ESUZGRVJFTlQ7IC8vIE5vdCBzdXJlIHRoaXMgY2FzZSBjYW4gaGFwcGVuLi4uXG5cdFx0fVxuXG5cdFx0Ly8gQXQgdGhpcyBzdGFnZSwgdGhlIDIgc3RhdGVzIGhhdmUgdGhlIHNhbWUgb2JqZWN0IGtleXMgKGluIHRoZSBzYW1lIG9yZGVyKSBhbmQgc2FtZSBzY3JlZW5tb2RlXG5cdFx0Ly8gVGhleSBjYW4gYmUgZWl0aGVyIGNvbXBhdGlibGUgb3IgZXF1YWxcblx0XHRyZXR1cm4gb1N0YXRlMS5zTGF5b3V0ID09PSBvU3RhdGUyLnNMYXlvdXQgPyBlbnVtU3RhdGUuRVFVQUwgOiBlbnVtU3RhdGUuQ09NUEFUSUJMRTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgYmFjayBleGl0cyB0aGUgcHJlc2VudCBndWFyZCBzZXQuXG5cdCAqXG5cdCAqIEBwYXJhbSBzUHJlc2VudEhhc2ggVGhlIGN1cnJlbnQgaGFzaC4gT25seSB1c2VkIGZvciB1bml0IHRlc3RzLlxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgYmFjayBleGl0cyB0aGVyZSBpcyBhIGd1YXJkIGV4aXQgb24gYmFja1xuXHQgKi9cblx0Y2hlY2tJZkJhY2tJc091dE9mR3VhcmQoc1ByZXNlbnRIYXNoPzogc3RyaW5nKSB7XG5cdFx0bGV0IHNQcmV2SGFzaDtcblx0XHRsZXQgc0N1cnJlbnRIYXNoOiBzdHJpbmc7XG5cdFx0aWYgKHNQcmVzZW50SGFzaCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHQvLyBXZSB1c2Ugd2luZG93LmxvY2F0aW9uLmhhc2ggaW5zdGVhZCBvZiBIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpLmdldEhhc2goKSBiZWNhdXNlIHRoZSBsYXR0ZXJcblx0XHRcdC8vIHJlcGxhY2VzIGNoYXJhY3RlcnMgaW4gdGhlIFVSTCAoZS5nLiAlMjQgcmVwbGFjZWQgYnkgJCkgYW5kIGl0IGNhdXNlcyBpc3N1ZXMgd2hlbiBjb21wYXJpbmdcblx0XHRcdC8vIHdpdGggdGhlIFVSTHMgaW4gdGhlIG1hbmFnZWQgaGlzdG9yeVxuXHRcdFx0Y29uc3Qgb1NwbGl0SGFzaCA9IHRoaXMuX29TaGVsbFNlcnZpY2VzLnNwbGl0SGFzaCh3aW5kb3cubG9jYXRpb24uaGFzaCkgYXMgYW55O1xuXHRcdFx0aWYgKG9TcGxpdEhhc2ggJiYgb1NwbGl0SGFzaC5hcHBTcGVjaWZpY1JvdXRlKSB7XG5cdFx0XHRcdHNDdXJyZW50SGFzaCA9IG9TcGxpdEhhc2guYXBwU3BlY2lmaWNSb3V0ZTtcblx0XHRcdFx0aWYgKHNDdXJyZW50SGFzaC5pbmRleE9mKFwiJi9cIikgPT09IDApIHtcblx0XHRcdFx0XHRzQ3VycmVudEhhc2ggPSBzQ3VycmVudEhhc2guc3Vic3RyaW5nKDIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzQ3VycmVudEhhc2ggPSB3aW5kb3cubG9jYXRpb24uaGFzaC5zdWJzdHJpbmcoMSk7IC8vIFRvIHJlbW92ZSB0aGUgJyMnXG5cdFx0XHRcdGlmIChzQ3VycmVudEhhc2hbMF0gPT09IFwiL1wiKSB7XG5cdFx0XHRcdFx0c0N1cnJlbnRIYXNoID0gc0N1cnJlbnRIYXNoLnN1YnN0cmluZygxKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRzQ3VycmVudEhhc2ggPSBzUHJlc2VudEhhc2g7XG5cdFx0fVxuXHRcdHNQcmVzZW50SGFzaCA9IFVSSS5kZWNvZGUoc0N1cnJlbnRIYXNoKTtcblx0XHRpZiAodGhpcy5fb05hdmlnYXRpb25HdWFyZCkge1xuXHRcdFx0Zm9yIChsZXQgaSA9IHRoaXMuX29NYW5hZ2VkSGlzdG9yeS5sZW5ndGggLSAxOyBpID4gMDsgaS0tKSB7XG5cdFx0XHRcdGlmICh0aGlzLl9vTWFuYWdlZEhpc3RvcnlbaV0uaGFzaCA9PT0gc1ByZXNlbnRIYXNoKSB7XG5cdFx0XHRcdFx0c1ByZXZIYXNoID0gdGhpcy5fb01hbmFnZWRIaXN0b3J5W2kgLSAxXS5oYXNoO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiAhc1ByZXZIYXNoIHx8ICF0aGlzLmNoZWNrSGFzaFdpdGhHdWFyZChzUHJldkhhc2gpO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIGlmIHRoZSBsYXN0IDIgZW50cmllcyBpbiB0aGUgaGlzdG9yeSBzaGFyZSB0aGUgc2FtZSBjb250ZXh0LlxuXHQgKlxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhleSBzaGFyZSB0aGUgc2FtZSBjb250ZXh0LlxuXHQgKi9cblx0Y2hlY2tJZkJhY2tIYXNTYW1lQ29udGV4dCgpIHtcblx0XHRpZiAodGhpcy5fb01hbmFnZWRIaXN0b3J5Lmxlbmd0aCA8IDIpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRjb25zdCBvQ3VycmVudFN0YXRlID0gdGhpcy5fb01hbmFnZWRIaXN0b3J5W3RoaXMuX29NYW5hZ2VkSGlzdG9yeS5sZW5ndGggLSAxXTtcblx0XHRjb25zdCBvUHJldmlvdXNTdGF0ZSA9IHRoaXMuX29NYW5hZ2VkSGlzdG9yeVt0aGlzLl9vTWFuYWdlZEhpc3RvcnkubGVuZ3RoIC0gMl07XG5cblx0XHRyZXR1cm4gb0N1cnJlbnRTdGF0ZS5oYXNoLnNwbGl0KFwiP1wiKVswXSA9PT0gb1ByZXZpb3VzU3RhdGUuaGFzaC5zcGxpdChcIj9cIilbMF07XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUm91dGVyUHJveHk7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7O0VBVUEsTUFBTUEsU0FBUyxHQUFHO0lBQ2pCQyxLQUFLLEVBQUUsQ0FBQztJQUNSQyxVQUFVLEVBQUUsQ0FBQztJQUNiQyxRQUFRLEVBQUUsQ0FBQztJQUNYQyxTQUFTLEVBQUU7RUFDWixDQUFDO0VBQ0QsTUFBTUMsYUFBYSxHQUFHO0lBQ3JCQyxXQUFXLEVBQUUsUUFBUTtJQUNyQkMsY0FBYyxFQUFFO0VBQ2pCLENBQUM7O0VBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0EsU0FBU0MsbUJBQW1CLENBQUNDLFVBQWtCLEVBQUU7SUFDaEQsT0FBTztNQUNOQyxVQUFVLEVBQUVELFVBQVUsQ0FBQ0UsT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7TUFBRTtNQUNqREMsS0FBSyxFQUFFLFVBQVVDLEtBQVUsRUFBRTtRQUM1QixPQUFPQSxLQUFLLENBQUNDLE9BQU8sQ0FBQyxJQUFJLENBQUNKLFVB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
|
|
797
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJlbnVtU3RhdGUiLCJFUVVBTCIsIkNPTVBBVElCTEUiLCJBTkNFU1RPUiIsIkRJRkZFUkVOVCIsImVudW1VUkxQYXJhbXMiLCJMQVlPVVRQQVJBTSIsIklBUFBTVEFURVBBUkFNIiwiY3JlYXRlR3VhcmRGcm9tSGFzaCIsInNHdWFyZEhhc2giLCJfZ3VhcmRIYXNoIiwicmVwbGFjZSIsImNoZWNrIiwic0hhc2giLCJpbmRleE9mIiwiZmluZEFwcFN0YXRlSW5IYXNoIiwiYUFwcFN0YXRlIiwibWF0Y2giLCJSZWdFeHAiLCJsZW5ndGgiLCJyZW1vdmVBcHBTdGF0ZUluSGFzaCIsInNldEFwcFN0YXRlSW5IYXNoIiwic0FwcFN0YXRlS2V5Iiwic05ld0hhc2giLCJSb3V0ZXJQcm94eSIsImRlZmluZVVJNUNsYXNzIiwiYklzUmVidWlsZEhpc3RvcnlSdW5uaW5nIiwiYklzQ29tcHV0aW5nVGl0bGVIaWVyYWNoeSIsImJJc0d1YXJkQ3Jvc3NBbGxvd2VkIiwic0lBcHBTdGF0ZUtleSIsIl9iQWN0aXZhdGVSb3V0ZU1hdGNoU3luY2hybyIsIl9iQXBwbHlSZXN0b3JlIiwiX2JEZWxheWVkUmVidWlsZCIsIl9wYXRoTWFwcGluZ3MiLCJpbml0Iiwib0FwcENvbXBvbmVudCIsImlzZmNsRW5hYmxlZCIsImdldFNlcnZpY2UiLCJ0aGVuIiwiX29TaGVsbFNlcnZpY2VzIiwiZ2V0U2hlbGxTZXJ2aWNlcyIsImluaXRSYXciLCJnZXRSb3V0ZXIiLCJ3YWl0Rm9yUm91dGVNYXRjaEJlZm9yZU5hdmlnYXRpb24iLCJoaXN0b3J5IiwicmVwbGFjZVN0YXRlIiwiT2JqZWN0IiwiYXNzaWduIiwiZmVMZXZlbCIsInN0YXRlIiwid2luZG93IiwibG9jYXRpb24iLCJmY2xFbmFibGVkIiwiX2ZuQmxvY2tpbmdOYXZGaWx0ZXIiLCJfYmxvY2tpbmdOYXZpZ2F0aW9uRmlsdGVyIiwiYmluZCIsInJlZ2lzdGVyTmF2aWdhdGlvbkZpbHRlciIsImNhdGNoIiwib0Vycm9yIiwiTG9nIiwiZXJyb3IiLCJfZm5IYXNoR3VhcmQiLCJoYXNoR3VhcmQiLCJhZGRFdmVudExpc3RlbmVyIiwiX2JEaXNhYmxlT25IYXNoQ2hhbmdlIiwiX2JJZ25vcmVSZXN0b3JlIiwiX2JGb3JjZUZvY3VzIiwiZGVzdHJveSIsInVucmVnaXN0ZXJOYXZpZ2F0aW9uRmlsdGVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm9Sb3V0ZXIiLCJfb1JvdXRlciIsIl9vTWFuYWdlZEhpc3RvcnkiLCJfb05hdmlnYXRpb25HdWFyZCIsInNDdXJyZW50QXBwSGFzaCIsImdldEhhc2giLCJwdXNoIiwiX2V4dHJhY3RTdGF0ZUZyb21IYXNoIiwiZ2V0SGFzaENoYW5nZXIiLCJpc0ZvY3VzRm9yY2VkIiwic2V0Rm9jdXNGb3JjZWQiLCJiRm9yY2VkIiwicmVtb3ZlSUFwcFN0YXRlS2V5IiwibmF2VG9IYXNoIiwiYlByZXNlcnZlSGlzdG9yeSIsImJEaXNhYmxlUHJlc2VydmF0aW9uQ2FjaGUiLCJiRm9yY2VGb2N1cyIsImJQcmVzZXJ2ZVNoZWxsQmFja05hdmlnYXRpb25IYW5kbGVyIiwic2V0QmFja05hdmlnYXRpb24iLCJfb1JvdXRlTWF0Y2hTeW5jaHJvbml6YXRpb24iLCJ3YWl0Rm9yIiwidW5kZWZpbmVkIiwiX2ludGVybmFsTmF2VG9IYXNoIiwiY2hlY2tIYXNoV2l0aEd1YXJkIiwib1Jlc291cmNlQnVuZGxlIiwiQ29yZSIsImdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZSIsImNvbmZpcm0iLCJnZXRUZXh0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJvTmV3U3RhdGUiLCJhQ3VycmVudEhhc2hLZXlzIiwiX2V4dHJhY3RFbnRpdHlTZXRzRnJvbUhhc2giLCJrZXlzIiwiZXZlcnkiLCJrZXkiLCJpbmRleCIsIm9IaXN0b3J5QWN0aW9uIiwiX3B1c2hOZXdTdGF0ZSIsIl9yZWJ1aWxkQnJvd3Nlckhpc3RvcnkiLCJyZXN0b3JlSGlzdG9yeSIsInNUYXJnZXRIYXNoIiwibmF2QmFjayIsInNDdXJyZW50SGFzaCIsInNQcmV2aW91c0hhc2giLCJpIiwiaGFzaCIsImJhY2siLCJuYXZUbyIsInNSb3V0ZU5hbWUiLCJvUGFyYW1ldGVycyIsImdldFVSTCIsIm5vUHJlc2VydmF0aW9uQ2FjaGUiLCJiSXNTdGlja3lNb2RlIiwiZXhpdEZyb21BcHAiLCJiYWNrVG9QcmV2aW91c0FwcCIsImlzQ3VycmVudFN0YXRlSW1wYWN0ZWRCeSIsInN1YnN0cmluZyIsIm9Mb2NhbEd1YXJkIiwiaXNOYXZpZ2F0aW9uRmluYWxpemVkIiwic2V0TmF2aWdhdGlvbkd1YXJkIiwiZGlzY2FyZE5hdmlnYXRpb25HdWFyZCIsImhhc05hdmlnYXRpb25HdWFyZCIsImlzR3VhcmRDcm9zc0FsbG93ZWRCeVVzZXIiLCJhY3RpdmF0ZVJvdXRlTWF0Y2hTeW5jaHJvbml6YXRpb24iLCJyZXNvbHZlUm91dGVNYXRjaCIsIlN5bmNocm9uaXphdGlvbiIsInNIYXNoTm9QYXJhbXMiLCJzcGxpdCIsImFUb2tlbnMiLCJuYW1lcyIsImZvckVhY2giLCJzVG9rZW4iLCJvU3RhdGUiLCJhTGF5b3V0Iiwic0xheW91dCIsInNjcmVlbk1vZGUiLCJiUmVidWlsZE9ubHkiLCJiRGlzYWJsZUhpc3RvcnlQcmVzZXJ2YXRpb24iLCJsYXN0SW5kZXgiLCJpUG9wQ291bnQiLCJwb3AiLCJwcmVzZXJ2ZWQiLCJvTGFzdFJlbW92ZWRJdGVtIiwib1RvcFN0YXRlIiwiX2NvbXBhcmVDYWNoZVN0YXRlcyIsInNQcmV2aW91c0lBcHBTdGF0ZUtleSIsIm9Db21wYXJpc29uU3RhdGVSZXN1bHQiLCJiSGFzU2FtZUhhc2giLCJ0eXBlIiwic3RlcHMiLCJfZGlzYWJsZUV2ZW50T25IYXNoQ2hhbmdlIiwic3RvcCIsIl9lbmFibGVFdmVudE9uSGFzaENoYW5nZSIsImJJZ25vcmVDdXJyZW50SGFzaCIsImluaXRpYWxpemUiLCJ0aGF0Iiwib1RhcmdldFN0YXRlIiwibmV3TGV2ZWwiLCJyZXBsYWNlQXN5bmMiLCJyZXBsYWNlSGFzaCIsInNldFRpbWVvdXQiLCJiYWNrUmVwbGFjZUFzeW5jIiwiYmFja0FzeW5jIiwic2V0SGFzaCIsImdvIiwiZ2V0TGFzdEhpc3RvcnlFbnRyeSIsInNldFBhdGhNYXBwaW5nIiwibWFwcGluZ3MiLCJmaWx0ZXIiLCJtYXBwaW5nIiwib2xkUGF0aCIsIm5ld1BhdGgiLCJmaW5kIiwibSIsImFIYXNoU3BsaXQiLCJzQXBwSGFzaCIsIm9TdGF0ZTEiLCJvU3RhdGUyIiwiZXF1YWwiLCJjaGVja0lmQmFja0lzT3V0T2ZHdWFyZCIsInNQcmVzZW50SGFzaCIsInNQcmV2SGFzaCIsIm9TcGxpdEhhc2giLCJzcGxpdEhhc2giLCJhcHBTcGVjaWZpY1JvdXRlIiwiVVJJIiwiZGVjb2RlIiwiY2hlY2tJZkJhY2tIYXNTYW1lQ29udGV4dCIsIm9DdXJyZW50U3RhdGUiLCJvUHJldmlvdXNTdGF0ZSIsIkJhc2VPYmplY3QiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlJvdXRlclByb3h5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIFJlc291cmNlQnVuZGxlIGZyb20gXCJzYXAvYmFzZS9pMThuL1Jlc291cmNlQnVuZGxlXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgU3luY2hyb25pemF0aW9uIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1N5bmNocm9uaXphdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBJU2hlbGxTZXJ2aWNlcyB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9TaGVsbFNlcnZpY2VzRmFjdG9yeVwiO1xuaW1wb3J0IEJhc2VPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL09iamVjdFwiO1xuaW1wb3J0IENvcmUgZnJvbSBcInNhcC91aS9jb3JlL0NvcmVcIjtcbmltcG9ydCB0eXBlIFJvdXRlciBmcm9tIFwic2FwL3VpL2NvcmUvcm91dGluZy9Sb3V0ZXJcIjtcbmltcG9ydCBVUkkgZnJvbSBcInNhcC91aS90aGlyZHBhcnR5L1VSSVwiO1xuXG5jb25zdCBlbnVtU3RhdGUgPSB7XG5cdEVRVUFMOiAwLFxuXHRDT01QQVRJQkxFOiAxLFxuXHRBTkNFU1RPUjogMixcblx0RElGRkVSRU5UOiAzXG59O1xuY29uc3QgZW51bVVSTFBhcmFtcyA9IHtcblx0TEFZT1VUUEFSQU06IFwibGF5b3V0XCIsXG5cdElBUFBTVEFURVBBUkFNOiBcInNhcC1pYXBwLXN0YXRlXCJcbn07XG5cbi8qKlxuICogQ3JlYXRlcyBhIEhhc2hHdWFyZCBvYmplY3QuXG4gKlxuICogQHBhcmFtIHNHdWFyZEhhc2ggVGhlIGhhc2ggdXNlZCBmb3IgdGhlIGd1YXJkXG4gKiBAcmV0dXJucyBUaGUgY3JlYXRlZCBoYXNoIGd1YXJkXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUd1YXJkRnJvbUhhc2goc0d1YXJkSGFzaDogc3RyaW5nKSB7XG5cdHJldHVybiB7XG5cdFx0X2d1YXJkSGFzaDogc0d1YXJkSGFzaC5yZXBsYWNlKC9cXD9bXj9dKiQvLCBcIlwiKSwgLy8gUmVtb3ZlIHF1ZXJ5IHBhcnRcblx0XHRjaGVjazogZnVuY3Rpb24gKHNIYXNoOiBhbnkpIHtcblx0XHRcdHJldHVybiBzSGFzaC5pbmRleE9mKHRoaXMuX2d1YXJkSGFzaCkgPT09IDA7XG5cdFx0fVxuXHR9O1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBpQXBwU3RhdGUgcGFydCBmcm9tIGEgaGFzaCAob3IgbnVsbCBpZiBub3QgZm91bmQpLlxuICpcbiAqIEBwYXJhbSBzSGFzaCBUaGUgaGFzaFxuICogQHJldHVybnMgVGhlIGlBcHBTdGF0ZSBwYXJ0IG9mIHRoZSBoYXNoXG4gKi9cbmZ1bmN0aW9uIGZpbmRBcHBTdGF0ZUluSGFzaChzSGFzaDogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG5cdGNvbnN0IGFBcHBTdGF0ZSA9IHNIYXNoLm1hdGNoKG5ldyBSZWdFeHAoYFxcXFw/Lioke2VudW1VUkxQYXJhbXMuSUFQUFNUQVRFUEFSQU19PShbXiZdKilgKSk7XG5cdHJldHVybiBhQXBwU3RhdGUgJiYgYUFwcFN0YXRlLmxlbmd0aCA+IDEgPyBhQXBwU3RhdGVbMV0gOiBudWxsO1xufVxuLyoqXG4gKiBSZXR1cm5zIGEgaGFzaCB3aXRob3V0IGl0cyBpQXBwU3RhdGUgcGFydC5cbiAqXG4gKiBAcGFyYW0gc0hhc2ggVGhlIGhhc2hcbiAqIEByZXR1cm5zIFRoZSBoYXNoIHdpdGhvdXQgdGhlIGlBcHBTdGF0ZVxuICovXG5mdW5jdGlvbiByZW1vdmVBcHBTdGF0ZUluSGFzaChzSGFzaDogc3RyaW5nKSB7XG5cdHJldHVybiBzSGFzaC5yZXBsYWNlKG5ldyBSZWdFeHAoYFsmP10qJHtlbnVtVVJMUGFyYW1zLklBUFBTVEFURVBBUkFNfT1bXiZdKmApLCBcIlwiKTtcbn1cbi8qKlxuICogQWRkcyBhbiBpQXBwU3RhdGUgaW5zaWRlIGEgaGFzaCAob3IgcmVwbGFjZXMgYW4gZXhpc3Rpbmcgb25lKS5cbiAqXG4gKiBAcGFyYW0gc0hhc2ggVGhlIGhhc2hcbiAqIEBwYXJhbSBzQXBwU3RhdGVLZXkgVGhlIGlBcHBTdGF0ZSB0byBhZGRcbiAqIEByZXR1cm5zIFRoZSBoYXNoIHdpdGggdGhlIGFwcCBzdGF0ZVxuICovXG5mdW5jdGlvbiBzZXRBcHBTdGF0ZUluSGFzaChzSGFzaDogYW55LCBzQXBwU3RhdGVLZXk6IGFueSkge1xuXHRsZXQgc05ld0hhc2g7XG5cblx0aWYgKHNIYXNoLmluZGV4T2YoZW51bVVSTFBhcmFtcy5JQVBQU1RBVEVQQVJBTSkgPj0gMCkge1xuXHRcdC8vIElmIHRoZXJlJ3MgYWxyZWFkeSBhbiBpQXBwU3RhdGUgcGFyYW1ldGVyIGluIHRoZSBoYXNoLCByZXBsYWNlIGl0XG5cdFx0c05ld0hhc2ggPSBzSGFzaC5yZXBsYWNlKG5ldyBSZWdFeHAoYCR7ZW51bVVSTFBhcmFtcy5JQVBQU1RBVEVQQVJBTX09W14mXSpgKSwgYCR7ZW51bVVSTFBhcmFtcy5JQVBQU1RBVEVQQVJBTX09JHtzQXBwU3RhdGVLZXl9YCk7XG5cdH0gZWxzZSB7XG5cdFx0Ly8gQWRkIHRoZSBpQXBwU3RhdGUgcGFyYW1ldGVyIGluIHRoZSBoYXNoXG5cdFx0aWYgKHNIYXNoLmluZGV4T2YoXCI/XCIpIDwgMCkge1xuXHRcdFx0c05ld0hhc2ggPSBgJHtzSGFzaH0/YDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c05ld0hhc2ggPSBgJHtzSGFzaH0mYDtcblx0XHR9XG5cdFx0c05ld0hhc2ggKz0gYCR7ZW51bVVSTFBhcmFtcy5JQVBQU1RBVEVQQVJBTX09JHtzQXBwU3RhdGVLZXl9YDtcblx0fVxuXG5cdHJldHVybiBzTmV3SGFzaDtcbn1cblxuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuUm91dGVyUHJveHlcIilcbmNsYXNzIFJvdXRlclByb3h5IGV4dGVuZHMgQmFzZU9iamVjdCB7XG5cdGJJc1JlYnVpbGRIaXN0b3J5UnVubmluZyA9IGZhbHNlO1xuXG5cdGJJc0NvbXB1dGluZ1RpdGxlSGllcmFjaHkgPSBmYWxzZTtcblxuXHRiSXNHdWFyZENyb3NzQWxsb3dlZCA9IGZhbHNlO1xuXG5cdHNJQXBwU3RhdGVLZXk6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG5cdF9vU2hlbGxTZXJ2aWNlcyE6IElTaGVsbFNlcnZpY2VzO1xuXG5cdGZjbEVuYWJsZWQhOiBib29sZWFuO1xuXG5cdF9mbkJsb2NraW5nTmF2RmlsdGVyITogRnVuY3Rpb247XG5cblx0X2ZuSGFzaEd1YXJkITogRnVuY3Rpb247XG5cblx0X2JEaXNhYmxlT25IYXNoQ2hhbmdlITogYm9vbGVhbjtcblxuXHRfYklnbm9yZVJlc3RvcmUhOiBib29sZWFuO1xuXG5cdF9iRm9yY2VGb2N1cyE6IGJvb2xlYW47XG5cblx0X29Sb3V0ZXIhOiBSb3V0ZXI7XG5cblx0X29NYW5hZ2VkSGlzdG9yeSE6IGFueVtdO1xuXG5cdF9vTmF2aWdhdGlvbkd1YXJkOiBhbnk7XG5cblx0b1Jlc291cmNlQnVuZGxlPzogUmVzb3VyY2VCdW5kbGU7XG5cblx0X29Sb3V0ZU1hdGNoU3luY2hyb25pemF0aW9uPzogU3luY2hyb25pemF0aW9uO1xuXG5cdF9iQWN0aXZhdGVSb3V0ZU1hdGNoU3luY2hybzogYm9vbGVhbiA9IGZhbHNlO1xuXG5cdF9iQXBwbHlSZXN0b3JlOiBib29sZWFuID0gZmFsc2U7XG5cblx0X2JEZWxheWVkUmVidWlsZDogYm9vbGVhbiA9IGZhbHNlO1xuXG5cdF9wYXRoTWFwcGluZ3M6IHsgb2xkUGF0aDogc3RyaW5nOyBuZXdQYXRoOiBzdHJpbmcgfVtdID0gW107XG5cblx0aW5pdChvQXBwQ29tcG9uZW50OiBhbnksIGlzZmNsRW5hYmxlZDogYm9vbGVhbikge1xuXHRcdC8vIFNhdmUgdGhlIG5hbWUgb2YgdGhlIGFwcCAoaW5jbHVkaW5nIHN0YXJ0dXAgcGFyYW1ldGVycykgZm9yIHJlYnVpbGRpbmcgZnVsbCBoYXNoZXMgbGF0ZXJcblx0XHRvQXBwQ29tcG9uZW50XG5cdFx0XHQuZ2V0U2VydmljZShcInNoZWxsU2VydmljZXNcIilcblx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0dGhpcy5fb1NoZWxsU2VydmljZXMgPSBvQXBwQ29tcG9uZW50LmdldFNoZWxsU2VydmljZXMoKTtcblxuXHRcdFx0XHR0aGlzLmluaXRSYXcob0FwcENvbXBvbmVudC5nZXRSb3V0ZXIoKSk7XG5cdFx0XHRcdC8vIFdlIHdhbnQgdG8gd2FpdCB1bnRpbCB0aGUgaW5pdGlhbCByb3V0ZU1hdGNoZWQgaXMgZG9uZSBiZWZvcmUgZG9pbmcgYW55IG5hdmlnYXRpb25cblx0XHRcdFx0dGhpcy53YWl0Rm9yUm91dGVNYXRjaEJlZm9yZU5hdmlnYXRpb24oKTtcblxuXHRcdFx0XHQvLyBTZXQgZmVMZXZlbD0wIGZvciB0aGUgZmlyc3QgQXBwbGljYXRpb24gcGFnZSBpbiB0aGUgaGlzdG9yeVxuXHRcdFx0XHRoaXN0b3J5LnJlcGxhY2VTdGF0ZShcblx0XHRcdFx0XHRPYmplY3QuYXNzaWduKFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRmZUxldmVsOiAwXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0aGlzdG9yeS5zdGF0ZVxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XCJcIixcblx0XHRcdFx0XHR3aW5kb3cubG9jYXRpb24gYXMgYW55XG5cdFx0XHRcdCk7XG5cdFx0XHRcdHRoaXMuZmNsRW5hYmxlZCA9IGlzZmNsRW5hYmxlZDtcblxuXHRcdFx0XHR0aGlzLl9mbkJsb2NraW5nTmF2RmlsdGVyID0gdGhpcy5fYmxvY2tpbmdOYXZpZ2F0aW9uRmlsdGVyLmJpbmQodGhpcyk7XG5cdFx0XHRcdHRoaXMuX29TaGVsbFNlcnZpY2VzLnJlZ2lzdGVyTmF2aWdhdGlvbkZpbHRlcih0aGlzLl9mbkJsb2NraW5nTmF2RmlsdGVyKTtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24gKG9FcnJvcjogYW55KSB7XG5cdFx0XHRcdExvZy5lcnJvcihcIkNhbm5vdCByZXRyaWV2ZSB0aGUgc2hlbGwgc2VydmljZXNcIiwgb0Vycm9yKTtcblx0XHRcdH0pO1xuXHRcdHRoaXMuX2ZuSGFzaEd1YXJkID0gdGhpcy5oYXNoR3VhcmQuYmluZCh0aGlzKTtcblx0XHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInBvcHN0YXRlXCIsIHRoaXMuX2ZuSGFzaEd1YXJkIGFzIGFueSk7XG5cdFx0dGhpcy5fYkRpc2FibGVPbkhhc2hDaGFuZ2UgPSBmYWxzZTtcblx0XHR0aGlzLl9iSWdub3JlUmVzdG9yZSA9IGZhbHNlO1xuXHRcdHRoaXMuX2JGb3JjZUZvY3VzID0gdHJ1ZTsgLy8gVHJpZ2dlciB0aGUgZm9jdXMgbWVjaGFuaXNtIGZvciB0aGUgZmlyc3QgdmlldyBkaXNwbGF5ZWQgYnkgdGhlIGFwcFxuXHR9XG5cblx0ZGVzdHJveSgpIHtcblx0XHRpZiAodGhpcy5fb1NoZWxsU2VydmljZXMpIHtcblx0XHRcdHRoaXMuX29TaGVsbFNlcnZpY2VzLnVucmVnaXN0ZXJOYXZpZ2F0aW9uRmlsdGVyKHRoaXMuX2ZuQmxvY2tpbmdOYXZGaWx0ZXIpO1xuXHRcdH1cblx0XHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInBvcHN0YXRlXCIsIHRoaXMuX2ZuSGFzaEd1YXJkIGFzIGFueSk7XG5cdH1cblxuXHQvKipcblx0ICogUmF3IGluaXRpYWxpemF0aW9uIChmb3IgdW5pdCB0ZXN0cykuXG5cdCAqXG5cdCAqIEBwYXJhbSBvUm91dGVyIFRoZSByb3V0ZXIgdXNlZCBieSB0aGlzIHByb3h5XG5cdCAqL1xuXHRpbml0UmF3KG9Sb3V0ZXI6IFJvdXRlcikge1xuXHRcdHRoaXMuX29Sb3V0ZXIgPSBvUm91dGVyO1xuXHRcdHRoaXMuX29NYW5hZ2VkSGlzdG9yeSA9IFtdO1xuXHRcdHRoaXMuX29OYXZpZ2F0aW9uR3VhcmQgPSBudWxsO1xuXG5cdFx0Y29uc3Qgc0N1cnJlbnRBcHBIYXNoID0gdGhpcy5nZXRIYXNoKCk7XG5cdFx0dGhpcy5fb01hbmFnZWRIaXN0b3J5LnB1c2godGhpcy5fZXh0cmFjdFN0YXRlRnJvbUhhc2goc0N1cnJlbnRBcHBIYXNoKSk7XG5cblx0XHQvLyBTZXQgdGhlIGlBcHBTdGF0ZSBpZiB0aGUgaW5pdGlhbCBoYXNoIGNvbnRhaW5zIG9uZVxuXHRcdHRoaXMuc0lBcHBTdGF0ZUtleSA9IGZpbmRBcHBTdGF0ZUluSGFzaChzQ3VycmVudEFwcEhhc2gpO1xuXHR9XG5cblx0Z2V0SGFzaCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fb1JvdXRlci5nZXRIYXNoQ2hhbmdlcigpLmdldEhhc2goKTtcblx0fVxuXG5cdGlzRm9jdXNGb3JjZWQoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2JGb3JjZUZvY3VzO1xuXHR9XG5cblx0c2V0Rm9jdXNGb3JjZWQoYkZvcmNlZDogYm9vbGVhbikge1xuXHRcdHRoaXMuX2JGb3JjZUZvY3VzID0gYkZvcmNlZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXNldHMgdGhlIGludGVybmFsIHZhcmlhYmxlIHNJQXBwU3RhdGVLZXkuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBzYXAuZmUuY29yZS5Sb3V0ZXJQcm94eSNyZW1vdmVJQXBwU3RhdGVLZXlcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqL1xuXHRyZW1vdmVJQXBwU3RhdGVLZXkoKSB7XG5cdFx0dGhpcy5zSUFwcFN0YXRlS2V5ID0gbnVsbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBOYXZpZ2F0ZXMgdG8gYSBzcGVjaWZpYyBoYXNoLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgc2FwLmZlLmNvcmUuUm91dGVyUHJveHkjbmF2VG9IYXNoXG5cdCAqIEBtZW1iZXJvZiBzYXAuZmUuY29yZS5Sb3V0ZXJQcm94eVxuXHQgKiBAc3RhdGljXG5cdCAqIEBwYXJhbSBzSGFzaCBIYXNoIHRvIGJlIG5hdmlnYXRlZCB0b1xuXHQgKiBAcGFyYW0gYlByZXNlcnZlSGlzdG9yeSBJZiBzZXQgdG8gdHJ1ZSwgbm9uLWFuY2VzdG9yIGVudHJpZXMgaW4gaGlzdG9yeSB3aWxsIGJlIHJldGFpbmVkXG5cdCAqIEBwYXJhbSBiRGlzYWJsZVByZXNlcnZhdGlvbkNhY2hlIElmIHNldCB0byB0cnVlLCBjYWNoZSBwcmVzZXJ2YXRpb24gbWVjaGFuaXNtIGlzIGRpc2FibGVkIGZvciB0aGUgY3VycmVudCBuYXZpZ2F0aW9uXG5cdCAqIEBwYXJhbSBiRm9yY2VGb2N1cyBJZiBzZXQgdG8gdHJ1ZSwgdGhlIGxvZ2ljIHRvIHNldCB0aGUgZm9jdXMgb25jZSB0aGUgbmF2aWdhdGlvbiBpcyBmaW5hbGl6ZWQgd2lsbCBiZSB0cmlnZ2VyZWQgKG9uUGFnZVJlYWR5KVxuXHQgKiBAcGFyYW0gYlByZXNlcnZlU2hlbGxCYWNrTmF2aWdhdGlvbkhhbmRsZXIgSWYgbm90IHNldCB0byBmYWxzZSwgdGhlIGJhY2sgbmF2aWdhdGlvbiBpcyBzZXQgdG8gdW5kZWZpbmVkXG5cdCAqIEByZXR1cm5zIFByb21pc2UgKHJlc29sdmVkIHdoZW4gdGhlIG5hdmlnYXRpb24gaXMgZmluYWxpemVkKSB0aGF0IHJldHVybnMgJ3RydWUnIGlmIGEgbmF2aWdhdGlvbiB0b29rIHBsYWNlLCAnZmFsc2UnIGlmIHRoZSBuYXZpZ2F0aW9uIGRpZG4ndCBoYXBwZW5cblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqL1xuXHRuYXZUb0hhc2goXG5cdFx0c0hhc2g6IHN0cmluZyB8IHVuZGVmaW5lZCxcblx0XHRiUHJlc2VydmVIaXN0b3J5PzogYm9vbGVhbixcblx0XHRiRGlzYWJsZVByZXNlcnZhdGlvbkNhY2hlPzogYm9vbGVhbixcblx0XHRiRm9yY2VGb2N1cz86IGJvb2xlYW4sXG5cdFx0YlByZXNlcnZlU2hlbGxCYWNrTmF2aWdhdGlvbkhhbmRsZXI/OiBib29sZWFuXG5cdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRcdGlmIChiUHJlc2VydmVTaGVsbEJhY2tOYXZpZ2F0aW9uSGFuZGxlciAhPT0gZmFsc2UpIHtcblx0XHRcdHRoaXMuX29TaGVsbFNlcnZpY2VzLnNldEJhY2tOYXZpZ2F0aW9uKCk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLl9vUm91dGVNYXRjaFN5bmNocm9uaXphdGlvbikge1xuXHRcdFx0cmV0dXJuIHRoaXMuX29Sb3V0ZU1hdGNoU3luY2hyb25pemF0aW9uLndhaXRGb3IoKS50aGVuKCgpID0+IHtcblx0XHRcdFx0dGhpcy5fb1JvdXRlTWF0Y2hTeW5jaHJvbml6YXRpb24gPSB1bmRlZmluZWQ7XG5cdFx0XHRcdHJldHVybiB0aGlzLl9pbnRlcm5hbE5hdlRvSGFzaChzSGFzaCwgYlByZXNlcnZlSGlzdG9yeSwgYkRpc2FibGVQcmVzZXJ2YXRpb25DYWNoZSwgYkZvcmNlRm9jdXMpO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmICh0aGlzLl9iQWN0aXZhdGVSb3V0ZU1hdGNoU3luY2hybykge1xuXHRcdFx0XHR0aGlzLndhaXRGb3JSb3V0ZU1hdGNoQmVmb3JlTmF2aWdhdGlvbigpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRoaXMuX2ludGVybmFsTmF2VG9IYXNoKHNIYXNoLCBiUHJlc2VydmVIaXN0b3J5LCBiRGlzYWJsZVByZXNlcnZhdGlvbkNhY2hlLCBiRm9yY2VGb2N1cyk7XG5cdFx0fVxuXHR9XG5cblx0X2ludGVybmFsTmF2VG9IYXNoKHNIYXNoOiBhbnksIGJQcmVzZXJ2ZUhpc3Rvcnk6IGFueSwgYkRpc2FibGVQcmVzZXJ2YXRpb25DYWNoZTogYW55LCBiRm9yY2VGb2N1cz86IGJvb2xlYW4pOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0XHQvLyBBZGQgdGhlIGFwcCBzdGF0ZSBpbiB0aGUgaGFzaCBpZiBuZWVkZWRcblx0XHRpZiAodGhpcy5mY2xFbmFibGVkICYmIHRoaXMuc0lBcHBTdGF0ZUtleSAmJiAhZmluZEFwcFN0YXRlSW5IYXNoKHNIYXNoKSkge1xuXHRcdFx0c0hhc2ggPSBzZXRBcHBTdGF0ZUluSGFzaChzSGFzaCwgdGhpcy5zSUFwcFN0YXRlS2V5KTtcblx0XHR9XG5cblx0XHRpZiAoIXRoaXMuY2hlY2tIYXNoV2l0aEd1YXJkKHNIYXNoKSkge1xuXHRcdFx0aWYgKCF0aGlzLm9SZXNvdXJjZUJ1bmRsZSkge1xuXHRcdFx0XHR0aGlzLm9SZXNvdXJjZUJ1bmRsZSA9IENvcmUuZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlKFwic2FwLmZlLmNvcmVcIik7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFdlIGhhdmUgdG8gdXNlIGEgY29uZmlybSBoZXJlIGZvciBVSSBjb25zaXN0ZW5jeSByZWFzb25zLCBhcyB3aXRoIHNvbWUgc2NlbmFyaW9zXG5cdFx0XHQvLyBpbiB0aGUgRWRpdEZsb3cgd2UgcmVseSBvbiBhIFVJNSBtZWNoYW5pc20gdGhhdCBkaXNwbGF5cyBhIGNvbmZpcm0gZGlhbG9nLlxuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWFsZXJ0XG5cdFx0XHRpZiAoIWNvbmZpcm0odGhpcy5vUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfUk9VVEVSX1BST1hZX1NBUEZFX0VYSVRfTk9UU0FWRURfTUVTU0FHRVwiKSkpIHtcblx0XHRcdFx0Ly8gVGhlIHVzZXIgY2xpY2tlZCBvbiBDYW5jZWwgLS0+IGNhbmNlbCBuYXZpZ2F0aW9uXG5cdFx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5iSXNHdWFyZENyb3NzQWxsb3dlZCA9IHRydWU7XG5cdFx0fVxuXG5cdFx0Ly8gSW4gY2FzZSB0aGUgbmF2aWdhdGlvbiB3aWxsIGNhdXNlIGEgbmV3IHZpZXcgdG8gYmUgZGlzcGxheWVkLCB3ZSBmb3JjZSB0aGUgZm9jdXNcblx0XHQvLyBJLmUuIGlmIHRoZSBrZXlzIGZvciB0aGUgaGFzaCB3ZSdyZSBuYXZpZ2F0aW5nIHRvIGlzIGEgc3VwZXJzZXQgb2YgdGhlIGN1cnJlbnQgaGFzaCBrZXlzLlxuXHRcdGNvbnN0IG9OZXdTdGF0ZSA9IHRoaXMuX2V4dHJhY3RTdGF0ZUZyb21IYXNoKHNIYXNoKTtcblx0XHRpZiAoIXRoaXMuX2JGb3JjZUZvY3VzKSB7XG5cdFx0XHQvLyBJZiB0aGUgZm9jdXMgd2FzIGFscmVhZHkgZm9yY2VkLCBrZWVwIGl0XG5cdFx0XHRjb25zdCBhQ3VycmVudEhhc2hLZXlzID0gdGhpcy5fZXh0cmFjdEVudGl0eVNldHNGcm9tSGFzaCh0aGlzLmdldEhhc2goKSk7XG5cdFx0XHR0aGlzLl9iRm9yY2VGb2N1cyA9XG5cdFx0XHRcdGJGb3JjZUZvY3VzIHx8XG5cdFx0XHRcdChhQ3VycmVudEhhc2hLZXlzLmxlbmd0aCA8IG9OZXdTdGF0ZS5rZXlzLmxlbmd0aCAmJlxuXHRcdFx0XHRcdGFDdXJyZW50SGFzaEtleXMuZXZlcnkoZnVuY3Rpb24gKGtleTogYW55LCBpbmRleDogYW55KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4ga2V5ID09PSBvTmV3U3RhdGUua2V5c1tpbmRleF07XG5cdFx0XHRcdFx0fSkpO1xuXHRcdH1cblxuXHRcdGNvbnN0IG9IaXN0b3J5QWN0aW9uID0gdGhpcy5fcHVzaE5ld1N0YXRlKG9OZXdTdGF0ZSwgZmFsc2UsIGJQcmVzZXJ2ZUhpc3RvcnksIGJEaXNhYmxlUHJlc2VydmF0aW9uQ2FjaGUpO1xuXG5cdFx0cmV0dXJuIHRoaXMuX3JlYnVpbGRCcm93c2VySGlzdG9yeShvSGlzdG9yeUFjdGlvbiwgZmFsc2UpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENsZWFycyBicm93c2VyIGhpc3RvcnkgaWYgZW50cmllcyBoYXZlIGJlZW4gYWRkZWQgd2l0aG91dCB1c2luZyB0aGUgUm91dGVyUHJveHkuXG5cdCAqIFVwZGF0ZXMgdGhlIGludGVybmFsIGhpc3RvcnkgYWNjb3JkaW5nbHkuXG5cdCAqXG5cdCAqIEByZXR1cm5zIFByb21pc2UgdGhhdCBpcyByZXNvbHZlZCBvbmNlIHRoZSBoaXN0b3J5IGlzIHJlYnVpbHRcblx0ICovXG5cdHJlc3RvcmVIaXN0b3J5KCkge1xuXHRcdGlmICh0aGlzLl9iQXBwbHlSZXN0b3JlKSB7XG5cdFx0XHR0aGlzLl9iQXBwbHlSZXN0b3JlID0gZmFsc2U7XG5cdFx0XHRsZXQgc1RhcmdldEhhc2ggPSB0aGlzLmdldEhhc2goKTtcblx0XHRcdHNUYXJnZXRIYXNoID0gc1RhcmdldEhhc2gucmVwbGFjZSgvKFxcP3wmKXJlc3RvcmVIaXN0b3J5PXRydWUvLCBcIlwiKTtcblx0XHRcdGNvbnN0IG9OZXdTdGF0ZSA9IHRoaXMuX2V4dHJhY3RTdGF0ZUZyb21IYXNoKHNUYXJnZXRIYXNoKTtcblxuXHRcdFx0Y29uc3Qgb0hpc3RvcnlBY3Rpb24gPSB0aGlzLl9wdXNoTmV3U3RhdGUob05ld1N0YXRlLCB0cnVlLCBmYWxzZSwgdHJ1ZSk7XG5cblx0XHRcdHJldHVybiB0aGlzLl9yZWJ1aWxkQnJvd3Nlckhpc3Rvcnkob0hpc3RvcnlBY3Rpb24sIHRydWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIE5hdmlnYXRlcyBiYWNrIGluIHRoZSBoaXN0b3J5LlxuXHQgKlxuXHQgKiBAcmV0dXJucyBQcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2hlbiB0aGUgbmF2aWdhdGlvbiBpcyBmaW5hbGl6ZWRcblx0ICovXG5cdG5hdkJhY2soKSB7XG5cdFx0Y29uc3Qgc0N1cnJlbnRIYXNoID0gdGhpcy5nZXRIYXNoKCk7XG5cdFx0bGV0IHNQcmV2aW91c0hhc2g7XG5cblx0XHQvLyBMb29rIGZvciB0aGUgY3VycmVudCBoYXNoIGluIHRoZSBtYW5hZ2VkIGhpc3Rvcnlcblx0XHRmb3IgKGxldCBpID0gdGhpcy5fb01hbmFnZWRIaXN0b3J5Lmxlbmd0aCAtIDE7IGkgPiAwOyBpLS0pIHtcblx0XHRcdGlmICh0aGlzLl9vTWFuYWdlZEhpc3RvcnlbaV0uaGFzaCA9PT0gc0N1cnJlbnRIYXNoKSB7XG5cdFx0XHRcdHNQcmV2aW91c0hhc2ggPSB0aGlzLl9vTWFuYWdlZEhpc3RvcnlbaSAtIDFdLmhhc2g7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChzUHJldmlvdXNIYXNoKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5uYXZUb0hhc2goc1ByZXZpb3VzSGFzaCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIFdlIGNvdWxkbid0IGZpbmQgYSBwcmV2aW91cyBoYXNoIGluIGhpc3Rvcnlcblx0XHRcdC8vIFRoaXMgY2FuIGhhcHBlbiB3aGVuIG5hdmlnYXRpbmcgZnJvbSBhIHRyYW5zaWVudCBoYXNoIGluIGEgY3JlYXRlIGFwcCwgYW5kXG5cdFx0XHQvLyBpbiB0aGF0IGNhc2UgaGlzdG9yeS5iYWNrIHdvdWxkIGdvIGJhY2sgdG8gdGhlIEZMUFxuXHRcdFx0d2luZG93Lmhpc3RvcnkuYmFjaygpO1xuXHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBOYXZpZ2F0ZXMgdG8gYSByb3V0ZSB3aXRoIHBhcmFtZXRlcnMuXG5cdCAqXG5cdCAqIEBwYXJhbSBzUm91dGVOYW1lIFRoZSByb3V0ZSBuYW1lIHRvIGJlIG5hdmlnYXRlZCB0b1xuXHQgKiBAcGFyYW0gb1BhcmFtZXRlcnMgUGFyYW1ldGVycyBmb3IgdGhlIG5hdmlnYXRpb25cblx0ICogQHJldHVybnMgUHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdoZW4gdGhlIG5hdmlnYXRpb24gaXMgZmluYWxpemVkXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKi9cblx0bmF2VG8oc1JvdXRlTmFtZTogc3RyaW5nLCBvUGFyYW1ldGVyczogYW55KSB7XG5cdFx0Y29uc3Qgc0hhc2ggPSB0aGlzLl9vUm91dGVyLmdldFVSTChzUm91dGVOYW1lLCBvUGFyYW1ldGVycyk7XG5cdFx0cmV0dXJuIHRoaXMubmF2VG9IYXNoKHNIYXNoLCBmYWxzZSwgb1BhcmFtZXRlcnMubm9QcmVzZXJ2YXRpb25DYWNoZSwgZmFsc2UsICFvUGFyYW1ldGVycy5iSXNTdGlja3lNb2RlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFeGl0cyB0aGUgY3VycmVudCBhcHAgYnkgbmF2aWdhdGluZyBiYWNrXG5cdCAqIHRvIHRoZSBwcmV2aW91cyBhcHAgKGlmIGFueSkgb3IgdGhlIEZMUC5cblx0ICpcblx0ICogQHJldHVybnMgUHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdoZW4gd2UgZXhpdCB0aGUgYXBwXG5cdCAqL1xuXHRleGl0RnJvbUFwcCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fb1NoZWxsU2VydmljZXMuYmFja1RvUHJldmlvdXNBcHAoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3Mgd2hldGhlciBhIGdpdmVuIGhhc2ggY2FuIGhhdmUgYW4gaW1wYWN0IG9uIHRoZSBjdXJyZW50IHN0YXRlXG5cdCAqIGkuZS4gaWYgdGhlIGhhc2ggaXMgZXF1YWwsIGNvbXBhdGlibGUgb3IgYW4gYW5jZXN0b3Igb2YgdGhlIGN1cnJlbnQgc3RhdGUuXG5cdCAqXG5cdCAqIEBwYXJhbSBzSGFzaCBgdHJ1ZWAgaWYgdGhlcmUgaXMgYW4gaW1wYWN0XG5cdCAqIEByZXR1cm5zIElmIHRoZXJlIGlzIGFuIGltcGFjdFxuXHQgKi9cblx0aXNDdXJyZW50U3RhdGVJbXBhY3RlZEJ5KHNIYXNoOiBhbnkpIHtcblx0XHRpZiAoc0hhc2hbMF0gPT09IFwiL1wiKSB7XG5cdFx0XHRzSGFzaCA9IHNIYXNoLnN1YnN0cmluZygxKTtcblx0XHR9XG5cdFx0Y29uc3Qgb0xvY2FsR3VhcmQgPSBjcmVhdGVHdWFyZEZyb21IYXNoKHNIYXNoKTtcblx0XHRyZXR1cm4gb0xvY2FsR3VhcmQuY2hlY2sodGhpcy5nZXRIYXNoKCkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiBhIG5hdmlnYXRpb24gaXMgY3VycmVudGx5IGJlaW5nIHByb2Nlc3NlZC5cblx0ICpcblx0ICogQHJldHVybnMgYGZhbHNlYCBpZiBhIG5hdmlnYXRpb24gaGFzIGJlZW4gdHJpZ2dlcmVkIGluIHRoZSBSb3V0ZXJQcm94eSBhbmQgaXMgbm90IHlldCBmaW5hbGl6ZWRcblx0ICovXG5cdGlzTmF2aWdhdGlvbkZpbmFsaXplZCgpIHtcblx0XHRyZXR1cm4gIXRoaXMuYklzUmVidWlsZEhpc3RvcnlSdW5uaW5nICYmICF0aGlzLl9iRGVsYXllZFJlYnVpbGQ7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgbGFzdCBzdGF0ZSBhcyBhIGd1YXJkLlxuXHQgKiBFYWNoIGZ1dHVyZSBuYXZpZ2F0aW9uIHdpbGwgYmUgY2hlY2tlZCBhZ2FpbnN0IHRoaXMgZ3VhcmQsIGFuZCBhIGNvbmZpcm1hdGlvbiBkaWFsb2cgd2lsbFxuXHQgKiBiZSBkaXNwbGF5ZWQgYmVmb3JlIHRoZSBuYXZpZ2F0aW9uIGNyb3NzZXMgdGhlIGd1YXJkIChpLmUuIGdvZXMgdG8gYW4gYW5jZXN0b3Igb2YgdGhlIGd1YXJkKS5cblx0ICpcblx0ICogQHBhcmFtIHNIYXNoIFRoZSBoYXNoIGZvciB0aGUgZ3VhcmRcblx0ICovXG5cdHNldE5hdmlnYXRpb25HdWFyZChzSGFzaDogc3RyaW5nKSB7XG5cdFx0dGhpcy5fb05hdmlnYXRpb25HdWFyZCA9IGNyZWF0ZUd1YXJkRnJvbUhhc2goc0hhc2gpO1xuXHRcdHRoaXMuYklzR3VhcmRDcm9zc0FsbG93ZWQgPSBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEaXNhYmxlcyB0aGUgbmF2aWdhdGlvbiBndWFyZC5cblx0ICovXG5cdGRpc2NhcmROYXZpZ2F0aW9uR3VhcmQoKSB7XG5cdFx0dGhpcy5fb05hdmlnYXRpb25HdWFyZCA9IG51bGw7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIGZvciB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoZSBuYXZpZ2F0aW9uIGd1YXJkLlxuXHQgKlxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgbmF2aWdhdGluZyBndWFyZCBpcyBhdmFpbGFibGVcblx0ICovXG5cdGhhc05hdmlnYXRpb25HdWFyZCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fb05hdmlnYXRpb25HdWFyZCAhPT0gbnVsbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBUZXN0cyBhIGhhc2ggYWdhaW5zdCB0aGUgbmF2aWdhdGlvbiBndWFyZC5cblx0ICpcblx0ICogQHBhcmFtIHNIYXNoIFRoZSBoYXNoIHRvIGJlIHRlc3RlZFxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgbmF2aWdhdGluZyB0byB0aGUgaGFzaCBkb2Vzbid0IGNyb3NzIHRoZSBndWFyZFxuXHQgKi9cblx0Y2hlY2tIYXNoV2l0aEd1YXJkKHNIYXNoOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gdGhpcy5fb05hdmlnYXRpb25HdWFyZCA9PT0gbnVsbCB8fCB0aGlzLl9vTmF2aWdhdGlvbkd1YXJkLmNoZWNrKHNIYXNoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgdGhlIHVzZXIgYWxsb3dlZCB0aGUgbmF2aWdhdGlvbiBndWFyZCB0byBiZSBjcm9zc2VkLlxuXHQgKlxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgY3Jvc3NpbmcgdGhlIGd1YXJkIGhhcyBiZWVuIGFsbG93ZWQgYnkgdGhlIHVzZXJcblx0ICovXG5cdGlzR3VhcmRDcm9zc0FsbG93ZWRCeVVzZXIoKSB7XG5cdFx0cmV0dXJuIHRoaXMuYklzR3VhcmRDcm9zc0FsbG93ZWQ7XG5cdH1cblxuXHQvKipcblx0ICogQWN0aXZhdGVzIHRoZSBzeW5jaHJvbml6YXRpb24gZm9yIHJvdXRlTWF0Y2hlZEV2ZW50LlxuXHQgKiBUaGUgbmV4dCBOYXZUb0hhc2ggY2FsbCB3aWxsIGNyZWF0ZSBhIFN5bmNocm9uaXphdGlvbiBvYmplY3QgdGhhdCB3aWxsIGJlIHJlc29sdmVkXG5cdCAqIGJ5IHRoZSBjb3JyZXNwb25kaW5nIG9uUm91dGVNYXRjaGVkIGV2ZW50LCBwcmV2ZW50aW5nIGFub3RoZXIgTmF2VG9IYXNoIHRvIGhhcHBlbiBpbiBwYXJhbGxlbC5cblx0ICovXG5cdGFjdGl2YXRlUm91dGVNYXRjaFN5bmNocm9uaXphdGlvbigpIHtcblx0XHR0aGlzLl9iQWN0aXZhdGVSb3V0ZU1hdGNoU3luY2hybyA9IHRydWU7XG5cdH1cblxuXHQvKipcblx0ICogUmVzb2x2ZSB0aGUgcm91dGVNYXRjaCBzeW5jaHJvbml6YXRpb24gb2JqZWN0LCB1bmxvY2tpbmcgcG90ZW50aWFsIHBlbmRpbmcgTmF2VG9IYXNoIGNhbGxzLlxuXHQgKi9cblx0cmVzb2x2ZVJvdXRlTWF0Y2goKSB7XG5cdFx0aWYgKHRoaXMuX29Sb3V0ZU1hdGNoU3luY2hyb25pemF0aW9uKSB7XG5cdFx0XHR0aGlzLl9vUm91dGVNYXRjaFN5bmNocm9uaXphdGlvbi5yZXNvbHZlKCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIE1ha2VzIHN1cmUgbm8gbmF2aWdhdGlvbiBjYW4gaGFwcGVuIGJlZm9yZSBhIHJvdXRlTWF0Y2ggaGFwcGVuZWQuXG5cdCAqL1xuXHR3YWl0Rm9yUm91dGVNYXRjaEJlZm9yZU5hdmlnYXRpb24oKSB7XG5cdFx0dGhpcy5fb1JvdXRlTWF0Y2hTeW5jaHJvbml6YXRpb24gPSBuZXcgU3luY2hyb25pemF0aW9uKCk7XG5cdFx0dGhpcy5fYkFjdGl2YXRlUm91dGVNYXRjaFN5bmNocm8gPSBmYWxzZTtcblx0fVxuXG5cdF9leHRyYWN0RW50aXR5U2V0c0Zyb21IYXNoKHNIYXNoOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmdbXSB7XG5cdFx0aWYgKHNIYXNoID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHNIYXNoID0gXCJcIjtcblx0XHR9XG5cdFx0Y29uc3Qgc0hhc2hOb1BhcmFtcyA9IHNIYXNoLnNwbGl0KFwiP1wiKVswXTsgLy8gcmVtb3ZlIHBhcmFtc1xuXHRcdGNvbnN0IGFUb2tlbnMgPSBzSGFzaE5vUGFyYW1zLnNwbGl0KFwiL1wiKTtcblx0XHRjb25zdCBuYW1lczogc3RyaW5nW10gPSBbXTtcblxuXHRcdGFUb2tlbnMuZm9yRWFjaCgoc1Rva2VuKSA9PiB7XG5cdFx0XHRpZiAoc1Rva2VuLmxlbmd0aCkge1xuXHRcdFx0XHRuYW1lcy5wdXNoKHNUb2tlbi5zcGxpdChcIihcIilbMF0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIG5hbWVzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhIHN0YXRlIGZyb20gYSBoYXNoLlxuXHQgKlxuXHQgKiBAcGFyYW0gc0hhc2ggVGhlIGhhc2ggdG8gYmUgdXNlZCBhcyBlbnRyeVxuXHQgKiBAcmV0dXJucyBUaGUgc3RhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqL1xuXHRfZXh0cmFjdFN0YXRlRnJvbUhhc2goc0hhc2g6IHN0cmluZykge1xuXHRcdGlmIChzSGFzaCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRzSGFzaCA9IFwiXCI7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgb1N0YXRlOiBhbnkgPSB7XG5cdFx0XHRrZXlzOiB0aGlzLl9leHRyYWN0RW50aXR5U2V0c0Zyb21IYXNoKHNIYXNoKVxuXHRcdH07XG5cblx0XHQvLyBSZXRyaWV2ZSBsYXlvdXQgKGlmIGFueSlcblx0XHRjb25zdCBhTGF5b3V0ID0gc0hhc2gubWF0Y2gobmV3IFJlZ0V4cChgXFxcXD8uKiR7ZW51bVVSTFBhcmFtcy5MQVlPVVRQQVJBTX09KFteJl0qKWApKTtcblx0XHRvU3RhdGUuc0xheW91dCA9IGFMYXlvdXQgJiYgYUxheW91dC5sZW5ndGggPiAxID8gYUxheW91dFsxXSA6IG51bGw7XG5cdFx0aWYgKG9TdGF0ZS5zTGF5b3V0ID09PSBcIk1pZENvbHVtbkZ1bGxTY3JlZW5cIikge1xuXHRcdFx0b1N0YXRlLnNjcmVlbk1vZGUgPSAxO1xuXHRcdH0gZWxzZSBpZiAob1N0YXRlLnNMYXlvdXQgPT09IFwiRW5kQ29sdW1uRnVsbFNjcmVlblwiKSB7XG5cdFx0XHRvU3RhdGUuc2NyZWVuTW9kZSA9IDI7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG9TdGF0ZS5zY3JlZW5Nb2RlID0gMDtcblx0XHR9XG5cblx0XHRvU3RhdGUuaGFzaCA9IHNIYXNoO1xuXHRcdHJldHVybiBvU3RhdGU7XG5cdH1cblxuXHQvKipcblx0ICogQWRkcyBhIG5ldyBzdGF0ZSBpbnRvIHRoZSBpbnRlcm5hbCBoaXN0b3J5IHN0cnVjdHVyZS5cblx0ICogTWFrZXMgc3VyZSB0aGlzIG5ldyBzdGF0ZSBpcyBhZGRlZCBhZnRlciBhbiBhbmNlc3Rvci5cblx0ICogQWxzbyBzZXRzIHRoZSBpQXBwU3RhdGUga2V5IGluIHRoZSB3aG9sZSBoaXN0b3J5LlxuXHQgKlxuXHQgKiBAbWVtYmVyb2Ygc2FwLmZlLmNvcmUuUm91dGVyUHJveHlcblx0ICogQHBhcmFtIG9OZXdTdGF0ZSBUaGUgbmV3IHN0YXRlIHRvIGJlIGFkZGVkXG5cdCAqIEBwYXJhbSBiUmVidWlsZE9ubHkgYHRydWVgIGlmIHdlJ3JlIHJlYnVpbGRpbmcgdGhlIGhpc3RvcnkgYWZ0ZXIgYSBzaGVsbCBtZW51IG5hdmlnYXRpb25cblx0ICogQHBhcmFtIGJQcmVzZXJ2ZUhpc3RvcnkgSWYgc2V0IHRvIHRydWUsIG5vbi1hbmNlc3RvciBlbnRyaWVzIGluIGhpc3Rvcnkgd2lsbCBiZSByZXRhaW5lZFxuXHQgKiBAcGFyYW0gYkRpc2FibGVIaXN0b3J5UHJlc2VydmF0aW9uIERpc2FibGUgdGhlIG1lY2hhbmlzbSB0byByZXRhaW5lZCBtYXJrZWQgZW50cmllcyBpbiBjYWNoZVxuXHQgKiBAcmV0dXJucyBUaGUgbmV3IHN0YXRlXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKiBAZmluYWxcblx0ICovXG5cdF9wdXNoTmV3U3RhdGUob05ld1N0YXRlOiBhbnksIGJSZWJ1aWxkT25seTogYm9vbGVhbiwgYlByZXNlcnZlSGlzdG9yeTogYm9vbGVhbiwgYkRpc2FibGVIaXN0b3J5UHJlc2VydmF0aW9uOiBib29sZWFuKSB7XG5cdFx0Y29uc3Qgc0N1cnJlbnRIYXNoID0gdGhpcy5nZXRIYXNoKCk7XG5cdFx0bGV0IGxhc3RJbmRleCA9IHRoaXMuX29NYW5hZ2VkSGlzdG9yeS5sZW5ndGggLSAxO1xuXHRcdGxldCBpUG9wQ291bnQgPSBiUmVidWlsZE9ubHkgPyAxIDogMDtcblxuXHRcdC8vIDEuIERvIHNvbWUgY2xlYW51cCBpbiB0aGUgbWFuYWdlZCBoaXN0b3J5IDogaW4gY2FzZSB0aGUgdXNlciBoYXMgbmF2aWdhdGVkIGJhY2sgaW4gdGhlIGJyb3dzZXIgaGlzdG9yeSwgd2UgbmVlZCB0byByZW1vdmVcblx0XHQvLyB0aGUgc3RhdGVzIGFoZWFkIGluIGhpc3RvcnkgYW5kIG1ha2Ugc3VyZSB0aGUgdG9wIHN0YXRlIGNvcnJlc3BvbmRzIHRvIHRoZSBjdXJyZW50IHBhZ2Vcblx0XHQvLyBXZSBkb24ndCBkbyB0aGF0IHdoZW4gcmVzdG9yaW5nIHRoZSBoaXN0b3J5LCBhcyB0aGUgY3VycmVudCBzdGF0ZSBoYXMgYmVlbiBhZGRlZCBvbiB0b3Agb2YgdGhlIGJyb3dzZXIgaGlzdG9yeVxuXHRcdC8vIGFuZCBpcyBub3QgcmVmbGVjdGVkIGluIHRoZSBtYW5hZ2VkIGhpc3Rvcnlcblx0XHRpZiAoIWJSZWJ1aWxkT25seSkge1xuXHRcdFx0d2hpbGUgKGxhc3RJbmRleCA+PSAwICYmIHRoaXMuX29NYW5hZ2VkSGlzdG9yeVtsYXN0SW5kZXhdLmhhc2ggIT09IHNDdXJyZW50SGFzaCkge1xuXHRcdFx0XHR0aGlzLl9vTWFuYWdlZEhpc3RvcnkucG9wKCk7XG5cdFx0XHRcdGxhc3RJbmRleC0tO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAodGhpcy5fb01hbmFnZWRIaXN0b3J5Lmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0XHQvLyBXZSBjb3VsZG4ndCBmaW5kIHRoZSBjdXJyZW50IGxvY2F0aW9uIGluIHRoZSBoaXN0b3J5LiBUaGlzIGNhbiBoYXBwZW4gaWYgYSBicm93c2VyIHJlbG9hZFxuXHRcdFx0XHQvLyBoYXBwZW5lZCwgY2F1c2luZyBhIHJlaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZWQgaGlzdG9yeS5cblx0XHRcdFx0Ly8gSW4gdGhhdCBjYXNlLCB3ZSB1c2UgdGhlIGN1cnJlbnQgbG9jYXRpb24gYXMgdGhlIG5ldyBzdGFydGluZyBwb2ludCBpbiB0aGUgbWFuYWdlZCBoaXN0b3J5XG5cdFx0XHRcdHRoaXMuX29NYW5hZ2VkSGlzdG9yeS5wdXNoKHRoaXMuX2V4dHJhY3RTdGF0ZUZyb21IYXNoKHNDdXJyZW50SGFzaCkpO1xuXHRcdFx0XHRoaXN0b3J5LnJlcGxhY2VTdGF0ZShPYmplY3QuYXNzaWduKHsgZmVMZXZlbDogMCB9LCBoaXN0b3J5LnN0YXRlKSwgXCJcIik7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gMi4gTWFyayB0aGUgdG9wIHN0YXRlIGFzIHByZXNlcnZlZCBpZiByZXF1aXJlZFxuXHRcdGlmIChiUHJlc2VydmVIaXN0b3J5ICYmICFiRGlzYWJsZUhpc3RvcnlQcmVzZXJ2YXRpb24pIHtcblx0XHRcdHRoaXMuX29NYW5hZ2VkSGlzdG9yeVt0aGlzLl9vTWFuYWdlZEhpc3RvcnkubGVuZ3RoIC0gMV0ucHJlc2VydmVkID0gdHJ1ZTtcblx0XHR9XG5cblx0XHQvLyAzLiBUaGVuIHBvcCBhbGwgc3RhdGVzIHVudGlsIHdlIGZpbmQgYW4gYW5jZXN0b3Igb2YgdGhlIG5ldyBzdGF0ZSwgb3Igd2UgZmluZCBhIHN0YXRlIHRoYXQgbmVlZCB0byBiZSBwcmVzZXJ2ZWRcblx0XHRsZXQgb0xhc3RSZW1vdmVkSXRlbTtcblx0XHR3aGlsZSAodGhpcy5fb01hbmFnZWRIaXN0b3J5Lmxlbmd0aCA+IDApIHtcblx0XHRcdGNvbnN0IG9Ub3BTdGF0ZSA9IHRoaXMuX29NYW5hZ2VkSGlzdG9yeVt0aGlzLl9vTWFuYWdlZEhpc3RvcnkubGVuZ3RoIC0gMV07XG5cdFx0XHRpZiAoXG5cdFx0XHRcdChiRGlzYWJsZUhpc3RvcnlQcmVzZXJ2YXRpb24gfHwgIW9Ub3BTdGF0ZS5wcmVzZXJ2ZWQpICYmXG5cdFx0XHRcdHRoaXMuX2NvbXBhcmVDYWNoZVN0YXRlcyhvVG9wU3RhdGUsIG9OZXdTdGF0ZSkgIT09IGVudW1TdGF0ZS5BTkNFU1RPUlxuXHRcdFx0KSB7XG5cdFx0XHRcdC8vIFRoZSB0b3Agc3RhdGUgaXMgbm90IGFuIGFuY2VzdG9yIG9mIG9OZXdTdGF0ZSBhbmQgaXMgbm90IHByZXNlcnZlZCAtLT4gd2UgY2FuIHBvcCBpdFxuXHRcdFx0XHRvTGFzdFJlbW92ZWRJdGVtID0gdGhpcy5fb01hbmFnZWRIaXN0b3J5LnBvcCgpO1xuXHRcdFx0XHRpUG9wQ291bnQrKztcblx0XHRcdH0gZWxzZSBpZiAob1RvcFN0YXRlLnByZXNlcnZlZCAmJiByZW1vdmVBcHBTdGF0ZUluSGFzaChvVG9wU3RhdGUuaGFzaCkgPT09IHJlbW92ZUFwcFN0YXRlSW5IYXNoKG9OZXdTdGF0ZS5oYXNoKSkge1xuXHRcdFx0XHQvLyBXZSB0cnkgdG8gYWRkIGEgc3RhdGUgdGhhdCBpcyBhbHJlYWR5IGluIGNhY2hlIChkdWUgdG8gcHJlc2VydmVkIGZsYWcpIGJ1dCB3aXRoIGEgZGlmZmVyZW50IGlhcHAtc3RhdGVcblx0XHRcdFx0Ly8gLS0+IHdlIHNob3VsZCBkZWxldGUgdGhlIHByZXZpb3VzIGVudHJ5IChpdCB3aWxsIGJlIGxhdGVyIHJlcGxhY2VkIGJ5IHRoZSBuZXcgb25lKSBhbmQgc3RvcCBwb3BwaW5nXG5cdFx0XHRcdG9MYXN0UmVtb3ZlZEl0ZW0gPSB0aGlzLl9vTWFuYWdlZEhpc3RvcnkucG9wKCk7XG5cdFx0XHRcdGlQb3BDb3VudCsrO1xuXHRcdFx0XHRvTmV3U3RhdGUucHJlc2VydmVkID0gdHJ1ZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRicmVhazsgLy8gQW5jZXN0b3Igb3IgcHJlc2VydmVkIHN0YXRlIGZvdW5kIC0tPiB3ZSBzdG9wIHBvcHBpbmcgb3V0IHN0YXRlc1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIDQuIGlBcHBTdGF0ZSBtYW5hZ2VtZW50XG5cdFx0dGhpcy5zSUFwcFN0YXRlS2V5ID0gZmluZEFwcFN0YXRlSW5IYXNoKG9OZXdTdGF0ZS5oYXNoKTtcblx0XHRpZiAoIXRoaXMuZmNsRW5hYmxlZCAmJiBvTGFzdFJlbW92ZWRJdGVtKSB7XG5cdFx0XHRjb25zdCBzUHJldmlvdXNJQXBwU3RhdGVLZXkgPSBmaW5kQXBwU3RhdGVJbkhhc2gob0xhc3RSZW1vdmVkSXRlbS5oYXNoKTtcblx0XHRcdGNvbnN0IG9Db21wYXJpc29uU3RhdGVSZXN1bHQgPSB0aGlzLl9jb21wYXJlQ2FjaGVTdGF0ZXMob0xhc3RSZW1vdmVkSXRlbSwgb05ld1N0YXRlKTtcblx0XHRcdC8vIGlmIGN1cnJlbnQgc3RhdGUgZG9lc24ndCBjb250YWluIGEgaS1hcHBzdGF0ZSBhbmQgdGhpcyBzdGF0ZSBzaG91bGQgcmVwbGFjZSBhIHN0YXRlIGNvbnRhaW5pbmcgYSBpQXBwU3RhdGVcblx0XHRcdC8vIHRoZW4gdGhlIHByZXZpb3VzIGlBcHBTdGF0ZSBpcyBwcmVzZXJ2ZWRcblx0XHRcdGlmIChcblx0XHRcdFx0IXRoaXMuc0lBcHBTdGF0ZUtleSAmJlxuXHRcdFx0XHRzUHJldmlvdXNJQXBwU3RhdGVLZXkgJiZcblx0XHRcdFx0KG9Db21wYXJpc29uU3RhdGVSZXN1bHQgPT09IGVudW1TdGF0ZS5FUVVBTCB8fCBvQ29tcGFyaXNvblN0YXRlUmVzdWx0ID09PSBlbnVtU3RhdGUuQ09NUEFUSUJMRSlcblx0XHRcdCkge1xuXHRcdFx0XHRvTmV3U3RhdGUuaGFzaCA9IHNldEFwcFN0YXRlSW5IYXNoKG9OZXdTdGF0ZS5oYXNoLCBzUHJldmlvdXNJQXBwU3RhdGVLZXkpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIDUuIE5vdyB3ZSBjYW4gcHVzaCB0aGUgc3RhdGUgYXQgdGhlIHRvcCBvZiB0aGUgaW50ZXJuYWwgaGlzdG9yeVxuXHRcdGNvbnN0IGJIYXNTYW1lSGFzaCA9IG9MYXN0UmVtb3ZlZEl0ZW0gJiYgb05ld1N0YXRlLmhhc2ggPT09IG9MYXN0UmVtb3ZlZEl0ZW0uaGFzaDtcblx0XHRpZiAodGhpcy5fb01hbmFnZWRIaXN0b3J5Lmxlbmd0aCA9PT0gMCB8fCB0aGlzLl9vTWFuYWdlZEhpc3RvcnlbdGhpcy5fb01hbmFnZWRIaXN0b3J5Lmxlbmd0aCAtIDFdLmhhc2ggIT09IG9OZXdTdGF0ZS5oYXNoKSB7XG5cdFx0XHR0aGlzLl9vTWFuYWdlZEhpc3RvcnkucHVzaChvTmV3U3RhdGUpO1xuXHRcdH1cblxuXHRcdC8vIDYuIERldGVybWluZSB3aGljaCBhY3Rpb25zIHRvIGRvIG9uIHRoZSBoaXN0b3J5XG5cdFx0aWYgKGlQb3BDb3VudCA9PT0gMCkge1xuXHRcdFx0Ly8gTm8gc3RhdGUgd2FzIHBvcHBlZCAtLT4gYXBwZW5kXG5cdFx0XHRyZXR1cm4geyB0eXBlOiBcImFwcGVuZFwiIH07XG5cdFx0fSBlbHNlIGlmIChpUG9wQ291bnQgPT09IDEpIHtcblx0XHRcdC8vIE9ubHkgMSBzdGF0ZSB3YXMgcG9wcGVkIC0tPiByZXBsYWNlIGN1cnJlbnQgaGFzaCB1bmxlc3MgaGFzaCBpcyB0aGUgc2FtZSAodGhlbiBub3RoaW5nIHRvIGRvKVxuXHRcdFx0cmV0dXJuIGJIYXNTYW1lSGFzaCA/IHsgdHlwZTogXCJub25lXCIgfSA6IHsgdHlwZTogXCJyZXBsYWNlXCIgfTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gTW9yZSB0aGFuIDEgc3RhdGUgd2FzIHBvcHBlZCAtLT4gZ28gYmFrYyBpbiBoaXN0b3J5IGFuZCByZXBsYWNlIGhhc2ggaWYgbmVjZXNzYXJ5XG5cdFx0XHRyZXR1cm4gYkhhc1NhbWVIYXNoID8geyB0eXBlOiBcImJhY2tcIiwgc3RlcHM6IGlQb3BDb3VudCAtIDEgfSA6IHsgdHlwZTogXCJiYWNrLXJlcGxhY2VcIiwgc3RlcHM6IGlQb3BDb3VudCAtIDEgfTtcblx0XHR9XG5cdH1cblxuXHRfYmxvY2tpbmdOYXZpZ2F0aW9uRmlsdGVyKCkge1xuXHRcdHJldHVybiB0aGlzLl9iRGlzYWJsZU9uSGFzaENoYW5nZSA/IFwiQ3VzdG9tXCIgOiBcIkNvbnRpbnVlXCI7XG5cdH1cblxuXHQvKipcblx0ICogRGlzYWJsZSB0aGUgcm91dGluZyBieSBjYWxsaW5nIHRoZSByb3V0ZXIgc3RvcCBtZXRob2QuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbWVtYmVyb2Ygc2FwLmZlLmNvcmUuUm91dGVyUHJveHlcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEBmaW5hbFxuXHQgKi9cblx0X2Rpc2FibGVFdmVudE9uSGFzaENoYW5nZSgpIHtcblx0XHR0aGlzLl9iRGlzYWJsZU9uSGFzaENoYW5nZSA9IHRydWU7XG5cdFx0dGhpcy5fb1JvdXRlci5zdG9wKCk7XG5cdH1cblxuXHQvKipcblx0ICogRW5hYmxlIHRoZSByb3V0aW5nIGJ5IGNhbGxpbmcgdGhlIHJvdXRlciBpbml0aWFsaXplIG1ldGhvZC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIHNhcC5mZS5jb3JlLlJvdXRlclByb3h5I19lbmFibGVFdmVudE9uSGFzaENoYW5nZVxuXHQgKiBAbWVtYmVyb2Ygc2FwLmZlLmNvcmUuUm91dGVyUHJveHlcblx0ICogQHBhcmFtIFtiSWdub3JlQ3VycmVudEhhc2hdIElnbm9yZSB0aGUgbGFzdCBoYXNoIGV2ZW50IHRyaWdnZXJlZCBiZWZvcmUgdGhlIHJvdXRlciBoYXMgaW5pdGlhbGl6ZWRcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEBmaW5hbFxuXHQgKi9cblx0X2VuYWJsZUV2ZW50T25IYXNoQ2hhbmdlKGJJZ25vcmVDdXJyZW50SGFzaDogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuXHRcdHRoaXMuX2JEaXNhYmxlT25IYXNoQ2hhbmdlID0gZmFsc2U7XG5cdFx0dGhpcy5fb1JvdXRlci5pbml0aWFsaXplKGJJZ25vcmVDdXJyZW50SGFzaCk7XG5cdH1cblxuXHQvKipcblx0ICogU3luY2hyb25pemVzIHRoZSBicm93c2VyIGhpc3Rvcnkgd2l0aCB0aGUgaW50ZXJuYWwgaGlzdG9yeSBvZiB0aGUgcm91dGVyUHJveHksIGFuZCB0cmlnZ2VycyBhIG5hdmlnYXRpb24gaWYgbmVlZGVkLlxuXHQgKlxuXHQgKiBAbWVtYmVyb2Ygc2FwLmZlLmNvcmUuUm91dGVyUHJveHlcblx0ICogQHBhcmFtIG9IaXN0b3J5QWN0aW9uIFNwZWNpZmllcyB0aGUgbmF2aWdhdGlvbiBhY3Rpb24gdG8gYmUgcGVyZm9ybWVkXG5cdCAqIEBwYXJhbSBiUmVidWlsZE9ubHkgYHRydWVgIGlmIGludGVybmFsIGhpc3RvcnkgaXMgY3VycmVudGx5IGJlaW5nIHJlYnVpbHRcblx0ICogQHJldHVybnMgUHJvbWlzZSAocmVzb2x2ZWQgd2hlbiB0aGUgbmF2aWdhdGlvbiBpcyBmaW5hbGl6ZWQpIHRoYXQgcmV0dXJucyAndHJ1ZScgaWYgYSBuYXZpZ2F0aW9uIHRvb2sgcGxhY2UsICdmYWxzZScgaWYgdGhlIG5hdmlnYXRpb24gZGlkbid0IGhhcHBlblxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQGZpbmFsXG5cdCAqL1xuXHRfcmVidWlsZEJyb3dzZXJIaXN0b3J5KG9IaXN0b3J5QWN0aW9uOiBhbnksIGJSZWJ1aWxkT25seTogYm9vbGVhbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhpcy1hbGlhc1xuXHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuXHRcdFx0dGhpcy5iSXNSZWJ1aWxkSGlzdG9yeVJ1bm5pbmcgPSB0cnVlO1xuXHRcdFx0Y29uc3Qgb1RhcmdldFN0YXRlID0gdGhpcy5fb01hbmFnZWRIaXN0b3J5W3RoaXMuX29NYW5hZ2VkSGlzdG9yeS5sZW5ndGggLSAxXSxcblx0XHRcdFx0bmV3TGV2ZWwgPSB0aGlzLl9vTWFuYWdlZEhpc3RvcnkubGVuZ3RoIC0gMTtcblxuXHRcdFx0ZnVuY3Rpb24gcmVwbGFjZUFzeW5jKCkge1xuXHRcdFx0XHRpZiAoIWJSZWJ1aWxkT25seSkge1xuXHRcdFx0XHRcdHRoYXQuX2VuYWJsZUV2ZW50T25IYXNoQ2hhbmdlKHRydWUpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0KHRoYXQuX29Sb3V0ZXIuZ2V0SGFzaENoYW5nZXIoKS5yZXBsYWNlSGFzaCBhcyBhbnkpKG9UYXJnZXRTdGF0ZS5oYXNoKTtcblx0XHRcdFx0aGlzdG9yeS5yZXBsYWNlU3RhdGUoT2JqZWN0LmFzc2lnbih7IGZlTGV2ZWw6IG5ld0xldmVsIH0sIGhpc3Rvcnkuc3RhdGUpLCBcIlwiKTtcblxuXHRcdFx0XHRpZiAoYlJlYnVpbGRPbmx5KSB7XG5cdFx0XHRcdFx0c2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHQvLyBUaW1lb3V0IHRvIGxldCAnaGFzaGNoYW5nZScgZXZlbnQgYmUgcHJvY2Vzc2VkIGJlZm9yZSBieSB0aGUgSGFzaENoYW5nZXIsIHNvIHRoYXRcblx0XHRcdFx0XHRcdC8vIG9uUm91dGVNYXRjaGVkIG5vdGlmaWNhdGlvbiBpc24ndCByYWlzZWRcblx0XHRcdFx0XHRcdHRoYXQuX2VuYWJsZUV2ZW50T25IYXNoQ2hhbmdlKHRydWUpO1xuXHRcdFx0XHRcdH0sIDApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dGhhdC5iSXNSZWJ1aWxkSGlzdG9yeVJ1bm5pbmcgPSBmYWxzZTtcblx0XHRcdFx0cmVzb2x2ZSh0cnVlKTsgLy8gYSBuYXZpZ2F0aW9uIG9jY3VycmVkXG5cdFx0XHR9XG5cblx0XHRcdC8vIEFzeW5jIGNhbGxiYWNrcyB3aGVuIG5hdmlnYXRpbmcgYmFjaywgaW4gb3JkZXIgdG8gbGV0IGFsbCBub3RpZmljYXRpb25zIGFuZCBldmVudHMgZ2V0IHByb2Nlc3NlZFxuXHRcdFx0ZnVuY3Rpb24gYmFja1JlcGxhY2VBc3luYygpIHtcblx0XHRcdFx0d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwb3BzdGF0ZVwiLCBiYWNrUmVwbGFjZUFzeW5jKTtcblx0XHRcdFx0c2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0Ly8gVGltZW91dCB0byBsZXQgJ2hhc2hjaGFuZ2UnIGV2ZW50IGJlIHByb2Nlc3NlZCBiZWZvcmUgYnkgdGhlIEhhc2hDaGFuZ2VyXG5cdFx0XHRcdFx0cmVwbGFjZUFzeW5jKCk7XG5cdFx0XHRcdH0sIDApO1xuXHRcdFx0fVxuXG5cdFx0XHRmdW5jdGlvbiBiYWNrQXN5bmMoKSB7XG5cdFx0XHRcdHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicG9wc3RhdGVcIiwgYmFja0FzeW5jKTtcblx0XHRcdFx0dGhhdC5iSXNSZWJ1aWxkSGlzdG9yeVJ1bm5pbmcgPSBmYWxzZTtcblx0XHRcdFx0cmVzb2x2ZSh0cnVlKTsgLy8gYSBuYXZpZ2F0aW9uIG9jY3VycmVkXG5cdFx0XHR9XG5cblx0XHRcdHRoYXQuX2JJZ25vcmVSZXN0b3JlID0gdHJ1ZTtcblxuXHRcdFx0c3dpdGNoIChvSGlzdG9yeUFjdGlvbi50eXBlKSB7XG5cdFx0XHRcdGNhc2UgXCJyZXBsYWNlXCI6XG5cdFx0XHRcdFx0KHRoYXQuX29Sb3V0ZXIuZ2V0SGFzaENoYW5nZXIoKS5yZXBsYWNlSGFzaCBhcyBhbnkpKG9UYXJnZXRTdGF0ZS5oYXNoKTtcblx0XHRcdFx0XHRoaXN0b3J5LnJlcGxhY2VTdGF0ZShPYmplY3QuYXNzaWduKHsgZmVMZXZlbDogbmV3TGV2ZWwgfSwgaGlzdG9yeS5zdGF0ZSksIFwiXCIpO1xuXHRcdFx0XHRcdHRoYXQuYklzUmVidWlsZEhpc3RvcnlSdW5uaW5nID0gZmFsc2U7XG5cdFx0XHRcdFx0cmVzb2x2ZSh0cnVlKTsgLy8gYSBuYXZpZ2F0aW9uIG9jY3VycmVkXG5cdFx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdFx0Y2FzZSBcImFwcGVuZFwiOlxuXHRcdFx0XHRcdHRoYXQuX29Sb3V0ZXIuZ2V0SGFzaENoYW5nZXIoKS5zZXRIYXNoKG9UYXJnZXRTdGF0ZS5oYXNoKTtcblx0XHRcdFx0XHRoaXN0b3J5LnJlcGxhY2VTdGF0ZShPYmplY3QuYXNzaWduKHsgZmVMZXZlbDogbmV3TGV2ZWwgfSwgaGlzdG9yeS5zdGF0ZSksIFwiXCIpO1xuXHRcdFx0XHRcdHRoYXQuYklzUmVidWlsZEhpc3RvcnlSdW5uaW5nID0gZmFsc2U7XG5cdFx0XHRcdFx0cmVzb2x2ZSh0cnVlKTsgLy8gYSBuYXZpZ2F0aW9uIG9jY3VycmVkXG5cdFx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdFx0Y2FzZSBcImJhY2tcIjpcblx0XHRcdFx0XHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInBvcHN0YXRlXCIsIGJhY2tBc3luYyk7XG5cdFx0XHRcdFx0aGlzdG9yeS5nbygtb0hpc3RvcnlBY3Rpb24uc3RlcHMpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdGNhc2UgXCJiYWNrLXJlcGxhY2VcIjpcblx0XHRcdFx0XHR0aGlzLl9kaXNhYmxlRXZlbnRPbkhhc2hDaGFuZ2UoKTtcblx0XHRcdFx0XHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInBvcHN0YXRlXCIsIGJhY2tSZXBsYWNlQXN5bmMpO1xuXHRcdFx0XHRcdGhpc3RvcnkuZ28oLW9IaXN0b3J5QWN0aW9uLnN0ZXBzKTtcblx0XHRcdFx0XHRicmVhaztcblxuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdC8vIE5vIG5hdmlnYXRpb25cblx0XHRcdFx0XHR0aGlzLmJJc1JlYnVpbGRIaXN0b3J5UnVubmluZyA9IGZhbHNlO1xuXHRcdFx0XHRcdHJlc29sdmUoZmFsc2UpOyAvLyBubyBuYXZpZ2F0aW9uIC0tPiByZXNvbHZlIHRvIGZhbHNlXG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRnZXRMYXN0SGlzdG9yeUVudHJ5KCkge1xuXHRcdHJldHVybiB0aGlzLl9vTWFuYWdlZEhpc3RvcnlbdGhpcy5fb01hbmFnZWRIaXN0b3J5Lmxlbmd0aCAtIDFdO1xuXHR9XG5cblx0c2V0UGF0aE1hcHBpbmcobWFwcGluZ3M6IHsgb2xkUGF0aDogc3RyaW5nOyBuZXdQYXRoOiBzdHJpbmcgfVtdKSB7XG5cdFx0dGhpcy5fcGF0aE1hcHBpbmdzID0gbWFwcGluZ3MuZmlsdGVyKChtYXBwaW5nKSA9PiB7XG5cdFx0XHRyZXR1cm4gbWFwcGluZy5vbGRQYXRoICE9PSBtYXBwaW5nLm5ld1BhdGg7XG5cdFx0fSk7XG5cdH1cblxuXHRoYXNoR3VhcmQoKSB7XG5cdFx0bGV0IHNIYXNoID0gd2luZG93LmxvY2F0aW9uLmhhc2g7XG5cblx0XHRpZiAoc0hhc2guaW5kZXhPZihcInJlc3RvcmVIaXN0b3J5PXRydWVcIikgIT09IC0xKSB7XG5cdFx0XHR0aGlzLl9iQXBwbHlSZXN0b3JlID0gdHJ1ZTtcblx0XHR9IGVsc2UgaWYgKCF0aGlzLmJJc1JlYnVpbGRIaXN0b3J5UnVubmluZykge1xuXHRcdFx0Ly8gQ2hlY2sgaWYgdGhlIGhhc2ggbmVlZHMgdG8gYmUgY2hhbmdlZCAodGhpcyBoYXBwZW5zIGluIEZDTCB3aGVuIHN3aXRjaGluZyBiL3cgZWRpdCBhbmQgcmVhZC1vbmx5IHdpdGggMyBjb2x1bW5zIG9wZW4pXG5cdFx0XHRjb25zdCBtYXBwaW5nID0gdGhpcy5fcGF0aE1hcHBpbmdzLmZpbmQoKG0pID0+IHtcblx0XHRcdFx0cmV0dXJuIHNIYXNoLmluZGV4T2YobS5vbGRQYXRoKSA+PSAwO1xuXHRcdFx0fSk7XG5cdFx0XHRpZiAobWFwcGluZykge1xuXHRcdFx0XHQvLyBSZXBsYWNlIHRoZSBjdXJyZW50IGhhc2hcblx0XHRcdFx0c0hhc2ggPSBzSGFzaC5yZXBsYWNlKG1hcHBpbmcub2xkUGF0aCwgbWFwcGluZy5uZXdQYXRoKTtcblx0XHRcdFx0aGlzdG9yeS5yZXBsYWNlU3RhdGUoT2JqZWN0LmFzc2lnbih7fSwgaGlzdG9yeS5zdGF0ZSksIFwiXCIsIHNIYXNoKTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgYUhhc2hTcGxpdCA9IHNIYXNoLnNwbGl0KFwiJi9cIik7XG5cdFx0XHRjb25zdCBzQXBwSGFzaCA9IGFIYXNoU3BsaXRbMV0gPyBhSGFzaFNwbGl0WzFdIDogXCJcIjtcblx0XHRcdGlmICh0aGlzLmNoZWNrSGFzaFdpdGhHdWFyZChzQXBwSGFzaCkpIHtcblx0XHRcdFx0dGhpcy5fYkRlbGF5ZWRSZWJ1aWxkID0gdHJ1ZTtcblx0XHRcdFx0Y29uc3Qgb05ld1N0YXRlID0gdGhpcy5fZXh0cmFjdFN0YXRlRnJvbUhhc2goc0FwcEhhc2gpO1xuXHRcdFx0XHR0aGlzLl9wdXNoTmV3U3RhdGUob05ld1N0YXRlLCBmYWxzZSwgZmFsc2UsIHRydWUpO1xuXG5cdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuX2JEZWxheWVkUmVidWlsZCA9IGZhbHNlO1xuXHRcdFx0XHR9LCAwKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQ29tcGFyZXMgMiBzdGF0ZXMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBvU3RhdGUxXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBvU3RhdGUyXG5cdCAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb246XG5cdCAqICAgICAgICAtIGVudW1TdGF0ZS5FUVVBTCBpZiBvU3RhdGUxIGFuZCBvU3RhdGUyIGFyZSBlcXVhbFxuXHQgKiAgICAgICAgLSBlbnVtU3RhdGUuQ09NUEFUSUJMRSBpZiBvU3RhdGUxIGFuZCBvU3RhdGUyIGFyZSBjb21wYXRpYmxlXG5cdCAqICAgICAgICAtIGVudW1TdGF0ZS5BTkNFU1RPUiBpZiBvU3RhdGUxIGlzIGFuIGFuY2VzdG9yIG9mIG9TdGF0ZTJcblx0ICogICAgICAgIC0gZW51bVN0YXRlLkRJRkZFUkVOVCBpZiB0aGUgMiBzdGF0ZXMgYXJlIGRpZmZlcmVudFxuXHQgKi9cblxuXHRfY29tcGFyZUNhY2hlU3RhdGVzKG9TdGF0ZTE6IGFueSwgb1N0YXRlMjogYW55KSB7XG5cdFx0Ly8gRmlyc3QgY29tcGFyZSBvYmplY3Qga2V5c1xuXHRcdGlmIChvU3RhdGUxLmtleXMubGVuZ3RoID4gb1N0YXRlMi5rZXlzLmxlbmd0aCkge1xuXHRcdFx0cmV0dXJuIGVudW1TdGF0ZS5ESUZGRVJFTlQ7XG5cdFx0fVxuXHRcdGxldCBlcXVhbCA9IHRydWU7XG5cdFx0bGV0IGluZGV4O1xuXHRcdGZvciAoaW5kZXggPSAwOyBlcXVhbCAmJiBpbmRleCA8IG9TdGF0ZTEua2V5cy5sZW5ndGg7IGluZGV4KyspIHtcblx0XHRcdGlmIChvU3RhdGUxLmtleXNbaW5kZXhdICE9PSBvU3RhdGUyLmtleXNbaW5kZXhdKSB7XG5cdFx0XHRcdGVxdWFsID0gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmICghZXF1YWwpIHtcblx0XHRcdC8vIFNvbWUgb2JqZWN0cyBrZXlzIGFyZSBkaWZmZXJlbnRcblx0XHRcdHJldHVybiBlbnVtU3RhdGUuRElGRkVSRU5UO1xuXHRcdH1cblxuXHRcdC8vIEFsbCBrZXlzIGZyb20gb1N0YXRlMSBhcmUgaW4gb1N0YXRlMiAtLT4gY2hlY2sgaWYgYW5jZXN0b3Jcblx0XHRpZiAob1N0YXRlMS5rZXlzLmxlbmd0aCA8IG9TdGF0ZTIua2V5cy5sZW5ndGggfHwgb1N0YXRlMS5zY3JlZW5Nb2RlIDwgb1N0YXRlMi5zY3JlZW5Nb2RlKSB7XG5cdFx0XHRyZXR1cm4gZW51bVN0YXRlLkFOQ0VTVE9SO1xuXHRcdH1cblx0XHRpZiAob1N0YXRlMS5zY3JlZW5Nb2RlID4gb1N0YXRlMi5zY3JlZW5Nb2RlKSB7XG5cdFx0XHRyZXR1cm4gZW51bVN0YXRlLkRJRkZFUkVOVDsgLy8gTm90IHN1cmUgdGhpcyBjYXNlIGNhbiBoYXBwZW4uLi5cblx0XHR9XG5cblx0XHQvLyBBdCB0aGlzIHN0YWdlLCB0aGUgMiBzdGF0ZXMgaGF2ZSB0aGUgc2FtZSBvYmplY3Qga2V5cyAoaW4gdGhlIHNhbWUgb3JkZXIpIGFuZCBzYW1lIHNjcmVlbm1vZGVcblx0XHQvLyBUaGV5IGNhbiBiZSBlaXRoZXIgY29tcGF0aWJsZSBvciBlcXVhbFxuXHRcdHJldHVybiBvU3RhdGUxLnNMYXlvdXQgPT09IG9TdGF0ZTIuc0xheW91dCA/IGVudW1TdGF0ZS5FUVVBTCA6IGVudW1TdGF0ZS5DT01QQVRJQkxFO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiBiYWNrIGV4aXRzIHRoZSBwcmVzZW50IGd1YXJkIHNldC5cblx0ICpcblx0ICogQHBhcmFtIHNQcmVzZW50SGFzaCBUaGUgY3VycmVudCBoYXNoLiBPbmx5IHVzZWQgZm9yIHVuaXQgdGVzdHMuXG5cdCAqIEByZXR1cm5zIGB0cnVlYCBpZiBiYWNrIGV4aXRzIHRoZXJlIGlzIGEgZ3VhcmQgZXhpdCBvbiBiYWNrXG5cdCAqL1xuXHRjaGVja0lmQmFja0lzT3V0T2ZHdWFyZChzUHJlc2VudEhhc2g/OiBzdHJpbmcpIHtcblx0XHRsZXQgc1ByZXZIYXNoO1xuXHRcdGxldCBzQ3VycmVudEhhc2g6IHN0cmluZztcblx0XHRpZiAoc1ByZXNlbnRIYXNoID09PSB1bmRlZmluZWQpIHtcblx0XHRcdC8vIFdlIHVzZSB3aW5kb3cubG9jYXRpb24uaGFzaCBpbnN0ZWFkIG9mIEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkuZ2V0SGFzaCgpIGJlY2F1c2UgdGhlIGxhdHRlclxuXHRcdFx0Ly8gcmVwbGFjZXMgY2hhcmFjdGVycyBpbiB0aGUgVVJMIChlLmcuICUyNCByZXBsYWNlZCBieSAkKSBhbmQgaXQgY2F1c2VzIGlzc3VlcyB3aGVuIGNvbXBhcmluZ1xuXHRcdFx0Ly8gd2l0aCB0aGUgVVJMcyBpbiB0aGUgbWFuYWdlZCBoaXN0b3J5XG5cdFx0XHRjb25zdCBvU3BsaXRIYXNoID0gdGhpcy5fb1NoZWxsU2VydmljZXMuc3BsaXRIYXNoKHdpbmRvdy5sb2NhdGlvbi5oYXNoKSBhcyBhbnk7XG5cdFx0XHRpZiAob1NwbGl0SGFzaCAmJiBvU3BsaXRIYXNoLmFwcFNwZWNpZmljUm91dGUpIHtcblx0XHRcdFx0c0N1cnJlbnRIYXNoID0gb1NwbGl0SGFzaC5hcHBTcGVjaWZpY1JvdXRlO1xuXHRcdFx0XHRpZiAoc0N1cnJlbnRIYXNoLmluZGV4T2YoXCImL1wiKSA9PT0gMCkge1xuXHRcdFx0XHRcdHNDdXJyZW50SGFzaCA9IHNDdXJyZW50SGFzaC5zdWJzdHJpbmcoMik7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHNDdXJyZW50SGFzaCA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoLnN1YnN0cmluZygxKTsgLy8gVG8gcmVtb3ZlIHRoZSAnIydcblx0XHRcdFx0aWYgKHNDdXJyZW50SGFzaFswXSA9PT0gXCIvXCIpIHtcblx0XHRcdFx0XHRzQ3VycmVudEhhc2ggPSBzQ3VycmVudEhhc2guc3Vic3RyaW5nKDEpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHNDdXJyZW50SGFzaCA9IHNQcmVzZW50SGFzaDtcblx0XHR9XG5cdFx0c1ByZXNlbnRIYXNoID0gVVJJLmRlY29kZShzQ3VycmVudEhhc2gpO1xuXHRcdGlmICh0aGlzLl9vTmF2aWdhdGlvbkd1YXJkKSB7XG5cdFx0XHRmb3IgKGxldCBpID0gdGhpcy5fb01hbmFnZWRIaXN0b3J5Lmxlbmd0aCAtIDE7IGkgPiAwOyBpLS0pIHtcblx0XHRcdFx0aWYgKHRoaXMuX29NYW5hZ2VkSGlzdG9yeVtpXS5oYXNoID09PSBzUHJlc2VudEhhc2gpIHtcblx0XHRcdFx0XHRzUHJldkhhc2ggPSB0aGlzLl9vTWFuYWdlZEhpc3RvcnlbaSAtIDFdLmhhc2g7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuICFzUHJldkhhc2ggfHwgIXRoaXMuY2hlY2tIYXNoV2l0aEd1YXJkKHNQcmV2SGFzaCk7XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgdGhlIGxhc3QgMiBlbnRyaWVzIGluIHRoZSBoaXN0b3J5IHNoYXJlIHRoZSBzYW1lIGNvbnRleHQuXG5cdCAqXG5cdCAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGV5IHNoYXJlIHRoZSBzYW1lIGNvbnRleHQuXG5cdCAqL1xuXHRjaGVja0lmQmFja0hhc1NhbWVDb250ZXh0KCkge1xuXHRcdGlmICh0aGlzLl9vTWFuYWdlZEhpc3RvcnkubGVuZ3RoIDwgMikge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdGNvbnN0IG9DdXJyZW50U3RhdGUgPSB0aGlzLl9vTWFuYWdlZEhpc3RvcnlbdGhpcy5fb01hbmFnZWRIaXN0b3J5Lmxlbmd0aCAtIDFdO1xuXHRcdGNvbnN0IG9QcmV2aW91c1N0YXRlID0gdGhpcy5fb01hbmFnZWRIaXN0b3J5W3RoaXMuX29NYW5hZ2VkSGlzdG9yeS5sZW5ndGggLSAyXTtcblxuXHRcdHJldHVybiBvQ3VycmVudFN0YXRlLmhhc2guc3BsaXQoXCI/XCIpWzBdID09PSBvUHJldmlvdXNTdGF0ZS5oYXNoLnNwbGl0KFwiP1wiKVswXTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBSb3V0ZXJQcm94eTtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7RUFVQSxNQUFNQSxTQUFTLEdBQUc7SUFDakJDLEtBQUssRUFBRSxDQUFDO0lBQ1JDLFVBQVUsRUFBRSxDQUFDO0lBQ2JDLFFBQVEsRUFBRSxDQUFDO0lBQ1hDLFNBQVMsRUFBRTtFQUNaLENBQUM7RUFDRCxNQUFNQyxhQUFhLEdBQUc7SUFDckJDLFdBQVcsRUFBRSxRQUFRO0lBQ3JCQyxjQUFjLEVBQUU7RUFDakIsQ0FBQzs7RUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQSxTQUFTQyxtQkFBbUIsQ0FBQ0MsVUFBa0IsRUFBRTtJQUNoRCxPQUFPO01BQ05DLFVBQVUsRUFBRUQsVUFBVSxDQUFDRSxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztNQUFFO01BQ2hEQyxLQUFLLEVBQUUsVUFBVUMsS0FBVSxFQUFFO1FBQzVCLE9BQU9BLEtBQUssQ0FBQ0MsT0FBTyxDQUFDLElBQUksQ0FBQ0os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
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2023 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/base/Log","sap/fe/core/helpers/ClassSupport","sap/fe/core/helpers/Synchronization","sap/ui/base/Object","sap/ui/core/Core","sap/ui/thirdparty/URI"],function(t,e,s,i,n,a){"use strict";var o,r;var h=e.defineUI5Class;function u(t,e){t.prototype=Object.create(e.prototype);t.prototype.constructor=t;c(t,e)}function c(t,e){c=Object.setPrototypeOf?Object.setPrototypeOf.bind():function t(e,s){e.__proto__=s;return e};return c(t,e)}const l={EQUAL:0,COMPATIBLE:1,ANCESTOR:2,DIFFERENT:3};const f={LAYOUTPARAM:"layout",IAPPSTATEPARAM:"sap-iapp-state"};function d(t){return{_guardHash:t.replace(/\?[^\?]*$/,""),check:function(t){return t.indexOf(this._guardHash)===0}}}function g(t){const e=t.match(new RegExp(`\\?.*${f.IAPPSTATEPARAM}=([^&]*)`));return e&&e.length>1?e[1]:null}function p(t){return t.replace(new RegExp(`[&?]*${f.IAPPSTATEPARAM}=[^&]*`),"")}function y(t,e){let s;if(t.indexOf(f.IAPPSTATEPARAM)>=0){s=t.replace(new RegExp(`${f.IAPPSTATEPARAM}=[^&]*`),`${f.IAPPSTATEPARAM}=${e}`)}else{if(t.indexOf("?")<0){s=`${t}?`}else{s=`${t}&`}s+=`${f.IAPPSTATEPARAM}=${e}`}return s}let _=(o=h("sap.fe.core.RouterProxy"),o(r=function(e){u(i,e);function i(){var t;for(var s=arguments.length,i=new Array(s),n=0;n<s;n++){i[n]=arguments[n]}t=e.call(this,...i)||this;t.bIsRebuildHistoryRunning=false;t.bIsComputingTitleHierachy=false;t.bIsGuardCrossAllowed=false;t.sIAppStateKey=null;t._bActivateRouteMatchSynchro=false;t._bApplyRestore=false;t._bDelayedRebuild=false;t._pathMappings=[];return t}var o=i.prototype;o.init=function e(s,i){s.getService("shellServices").then(()=>{this._oShellServices=s.getShellServices();this.initRaw(s.getRouter());this.waitForRouteMatchBeforeNavigation();history.replaceState(Object.assign({feLevel:0},history.state),"",window.location);this.fclEnabled=i;this._fnBlockingNavFilter=this._blockingNavigationFilter.bind(this);this._oShellServices.registerNavigationFilter(this._fnBlockingNavFilter)}).catch(function(e){t.error("Cannot retrieve the shell services",e)});this._fnHashGuard=this.hashGuard.bind(this);window.addEventListener("popstate",this._fnHashGuard);this._bDisableOnHashChange=false;this._bIgnoreRestore=false;this._bForceFocus=true};o.destroy=function t(){if(this._oShellServices){this._oShellServices.unregisterNavigationFilter(this._fnBlockingNavFilter)}window.removeEventListener("popstate",this._fnHashGuard)};o.initRaw=function t(e){this._oRouter=e;this._oManagedHistory=[];this._oNavigationGuard=null;const s=this.getHash();this._oManagedHistory.push(this._extractStateFromHash(s));this.sIAppStateKey=g(s)};o.getHash=function t(){return this._oRouter.getHashChanger().getHash()};o.isFocusForced=function t(){return this._bForceFocus};o.setFocusForced=function t(e){this._bForceFocus=e};o.removeIAppStateKey=function t(){this.sIAppStateKey=null};o.navToHash=function t(e,s,i,n,a){if(a!==false){this._oShellServices.setBackNavigation()}if(this._oRouteMatchSynchronization){return this._oRouteMatchSynchronization.waitFor().then(()=>{this._oRouteMatchSynchronization=undefined;return this._internalNavToHash(e,s,i,n)})}else{if(this._bActivateRouteMatchSynchro){this.waitForRouteMatchBeforeNavigation()}return this._internalNavToHash(e,s,i,n)}};o._internalNavToHash=function t(e,s,i,a){if(this.fclEnabled&&this.sIAppStateKey&&!g(e)){e=y(e,this.sIAppStateKey)}if(!this.checkHashWithGuard(e)){if(!this.oResourceBundle){this.oResourceBundle=n.getLibraryResourceBundle("sap.fe.core")}if(!confirm(this.oResourceBundle.getText("C_ROUTER_PROXY_SAPFE_EXIT_NOTSAVED_MESSAGE"))){return Promise.resolve(false)}this.bIsGuardCrossAllowed=true}const o=this._extractStateFromHash(e);if(!this._bForceFocus){const t=this._extractEntitySetsFromHash(this.getHash());this._bForceFocus=a||t.length<o.keys.length&&t.every(function(t,e){return t===o.keys[e]})}const r=this._pushNewState(o,false,s,i);return this._rebuildBrowserHistory(r,false)};o.restoreHistory=function t(){if(this._bApplyRestore){this._bApplyRestore=false;let t=this.getHash();t=t.replace(/(\?|&)restoreHistory=true/,"");const e=this._extractStateFromHash(t);const s=this._pushNewState(e,true,false,true);return this._rebuildBrowserHistory(s,true)}else{return Promise.resolve()}};o.navBack=function t(){const e=this.getHash();let s;for(let t=this._oManagedHistory.length-1;t>0;t--){if(this._oManagedHistory[t].hash===e){s=this._oManagedHistory[t-1].hash;break}}if(s){return this.navToHash(s)}else{window.history.back();return Promise.resolve()}};o.navTo=function t(e,s){const i=this._oRouter.getURL(e,s);return this.navToHash(i,false,s.noPreservationCache,false,!s.bIsStickyMode)};o.exitFromApp=function t(){return this._oShellServices.backToPreviousApp()};o.isCurrentStateImpactedBy=function t(e){if(e[0]==="/"){e=e.substring(1)}const s=d(e);return s.check(this.getHash())};o.isNavigationFinalized=function t(){return!this.bIsRebuildHistoryRunning&&!this._bDelayedRebuild};o.setNavigationGuard=function t(e){this._oNavigationGuard=d(e);this.bIsGuardCrossAllowed=false};o.discardNavigationGuard=function t(){this._oNavigationGuard=null};o.hasNavigationGuard=function t(){return this._oNavigationGuard!==null};o.checkHashWithGuard=function t(e){return this._oNavigationGuard===null||this._oNavigationGuard.check(e)};o.isGuardCrossAllowedByUser=function t(){return this.bIsGuardCrossAllowed};o.activateRouteMatchSynchronization=function t(){this._bActivateRouteMatchSynchro=true};o.resolveRouteMatch=function t(){if(this._oRouteMatchSynchronization){this._oRouteMatchSynchronization.resolve()}};o.waitForRouteMatchBeforeNavigation=function t(){this._oRouteMatchSynchronization=new s;this._bActivateRouteMatchSynchro=false};o._extractEntitySetsFromHash=function t(e){if(e===undefined){e=""}const s=e.split("?")[0];const i=s.split("/");const n=[];i.forEach(t=>{if(t.length){n.push(t.split("(")[0])}});return n};o._extractStateFromHash=function t(e){if(e===undefined){e=""}const s={keys:this._extractEntitySetsFromHash(e)};const i=e.match(new RegExp(`\\?.*${f.LAYOUTPARAM}=([^&]*)`));s.sLayout=i&&i.length>1?i[1]:null;if(s.sLayout==="MidColumnFullScreen"){s.screenMode=1}else if(s.sLayout==="EndColumnFullScreen"){s.screenMode=2}else{s.screenMode=0}s.hash=e;return s};o._pushNewState=function t(e,s,i,n){const a=this.getHash();let o=this._oManagedHistory.length-1;let r=s?1:0;if(!s){while(o>=0&&this._oManagedHistory[o].hash!==a){this._oManagedHistory.pop();o--}if(this._oManagedHistory.length===0){this._oManagedHistory.push(this._extractStateFromHash(a));history.replaceState(Object.assign({feLevel:0},history.state),"")}}if(i&&!n){this._oManagedHistory[this._oManagedHistory.length-1].preserved=true}let h;while(this._oManagedHistory.length>0){const t=this._oManagedHistory[this._oManagedHistory.length-1];if((n||!t.preserved)&&this._compareCacheStates(t,e)!==l.ANCESTOR){h=this._oManagedHistory.pop();r++}else if(t.preserved&&p(t.hash)===p(e.hash)){h=this._oManagedHistory.pop();r++;e.preserved=true;break}else{break}}this.sIAppStateKey=g(e.hash);if(!this.fclEnabled&&h){const t=g(h.hash);const s=this._compareCacheStates(h,e);if(!this.sIAppStateKey&&t&&(s===l.EQUAL||s===l.COMPATIBLE)){e.hash=y(e.hash,t)}}const u=h&&e.hash===h.hash;if(this._oManagedHistory.length===0||this._oManagedHistory[this._oManagedHistory.length-1].hash!==e.hash){this._oManagedHistory.push(e)}if(r===0){return{type:"append"}}else if(r===1){return u?{type:"none"}:{type:"replace"}}else{return u?{type:"back",steps:r-1}:{type:"back-replace",steps:r-1}}};o._blockingNavigationFilter=function t(){return this._bDisableOnHashChange?"Custom":"Continue"};o._disableEventOnHashChange=function t(){this._bDisableOnHashChange=true;this._oRouter.stop()};o._enableEventOnHashChange=function t(e){this._bDisableOnHashChange=false;this._oRouter.initialize(e)};o._rebuildBrowserHistory=function t(e,s){const i=this;return new Promise(t=>{this.bIsRebuildHistoryRunning=true;const n=this._oManagedHistory[this._oManagedHistory.length-1],a=this._oManagedHistory.length-1;function o(){if(!s){i._enableEventOnHashChange(true)}i._oRouter.getHashChanger().replaceHash(n.hash);history.replaceState(Object.assign({feLevel:a},history.state),"");if(s){setTimeout(function(){i._enableEventOnHashChange(true)},0)}i.bIsRebuildHistoryRunning=false;t(true)}function r(){window.removeEventListener("popstate",r);setTimeout(function(){o()},0)}function h(){window.removeEventListener("popstate",h);i.bIsRebuildHistoryRunning=false;t(true)}i._bIgnoreRestore=true;switch(e.type){case"replace":i._oRouter.getHashChanger().replaceHash(n.hash);history.replaceState(Object.assign({feLevel:a},history.state),"");i.bIsRebuildHistoryRunning=false;t(true);break;case"append":i._oRouter.getHashChanger().setHash(n.hash);history.replaceState(Object.assign({feLevel:a},history.state),"");i.bIsRebuildHistoryRunning=false;t(true);break;case"back":window.addEventListener("popstate",h);history.go(-e.steps);break;case"back-replace":this._disableEventOnHashChange();window.addEventListener("popstate",r);history.go(-e.steps);break;default:this.bIsRebuildHistoryRunning=false;t(false)}})};o.getLastHistoryEntry=function t(){return this._oManagedHistory[this._oManagedHistory.length-1]};o.setPathMapping=function t(e){this._pathMappings=e.filter(t=>t.oldPath!==t.newPath)};o.hashGuard=function t(){let e=window.location.hash;if(e.indexOf("restoreHistory=true")!==-1){this._bApplyRestore=true}else if(!this.bIsRebuildHistoryRunning){const t=this._pathMappings.find(t=>e.indexOf(t.oldPath)>=0);if(t){e=e.replace(t.oldPath,t.newPath);history.replaceState(Object.assign({},history.state),"",e)}else{const t=e.split("&/");const s=t[1]?t[1]:"";if(this.checkHashWithGuard(s)){this._bDelayedRebuild=true;const t=this._extractStateFromHash(s);this._pushNewState(t,false,false,true);setTimeout(()=>{this._bDelayedRebuild=false},0)}}}};o._compareCacheStates=function t(e,s){if(e.keys.length>s.keys.length){return l.DIFFERENT}let i=true;let n;for(n=0;i&&n<e.keys.length;n++){if(e.keys[n]!==s.keys[n]){i=false}}if(!i){return l.DIFFERENT}if(e.keys.length<s.keys.length||e.screenMode<s.screenMode){return l.ANCESTOR}if(e.screenMode>s.screenMode){return l.DIFFERENT}return e.sLayout===s.sLayout?l.EQUAL:l.COMPATIBLE};o.checkIfBackIsOutOfGuard=function t(e){let s;let i;if(e===undefined){const t=this._oShellServices.splitHash(window.location.hash);if(t&&t.appSpecificRoute){i=t.appSpecificRoute;if(i.indexOf("&/")===0){i=i.substring(2)}}else{i=window.location.hash.substring(1);if(i[0]==="/"){i=i.substring(1)}}}else{i=e}e=a.decode(i);if(this._oNavigationGuard){for(let t=this._oManagedHistory.length-1;t>0;t--){if(this._oManagedHistory[t].hash===e){s=this._oManagedHistory[t-1].hash;break}}return!s||!this.checkHashWithGuard(s)}return false};o.checkIfBackHasSameContext=function t(){if(this._oManagedHistory.length<2){return false}const e=this._oManagedHistory[this._oManagedHistory.length-1];const s=this._oManagedHistory[this._oManagedHistory.length-2];return e.hash.split("?")[0]===s.hash.split("?")[0]};return i}(i))||r);return _},false);
|
|
5
|
+
sap.ui.define(["sap/base/Log","sap/fe/core/helpers/ClassSupport","sap/fe/core/helpers/Synchronization","sap/ui/base/Object","sap/ui/core/Core","sap/ui/thirdparty/URI"],function(t,e,s,i,n,a){"use strict";var o,r;var h=e.defineUI5Class;function u(t,e){t.prototype=Object.create(e.prototype);t.prototype.constructor=t;c(t,e)}function c(t,e){c=Object.setPrototypeOf?Object.setPrototypeOf.bind():function t(e,s){e.__proto__=s;return e};return c(t,e)}const l={EQUAL:0,COMPATIBLE:1,ANCESTOR:2,DIFFERENT:3};const f={LAYOUTPARAM:"layout",IAPPSTATEPARAM:"sap-iapp-state"};function d(t){return{_guardHash:t.replace(/\?[^?]*$/,""),check:function(t){return t.indexOf(this._guardHash)===0}}}function g(t){const e=t.match(new RegExp(`\\?.*${f.IAPPSTATEPARAM}=([^&]*)`));return e&&e.length>1?e[1]:null}function p(t){return t.replace(new RegExp(`[&?]*${f.IAPPSTATEPARAM}=[^&]*`),"")}function y(t,e){let s;if(t.indexOf(f.IAPPSTATEPARAM)>=0){s=t.replace(new RegExp(`${f.IAPPSTATEPARAM}=[^&]*`),`${f.IAPPSTATEPARAM}=${e}`)}else{if(t.indexOf("?")<0){s=`${t}?`}else{s=`${t}&`}s+=`${f.IAPPSTATEPARAM}=${e}`}return s}let _=(o=h("sap.fe.core.RouterProxy"),o(r=function(e){u(i,e);function i(){var t;for(var s=arguments.length,i=new Array(s),n=0;n<s;n++){i[n]=arguments[n]}t=e.call(this,...i)||this;t.bIsRebuildHistoryRunning=false;t.bIsComputingTitleHierachy=false;t.bIsGuardCrossAllowed=false;t.sIAppStateKey=null;t._bActivateRouteMatchSynchro=false;t._bApplyRestore=false;t._bDelayedRebuild=false;t._pathMappings=[];return t}var o=i.prototype;o.init=function e(s,i){s.getService("shellServices").then(()=>{this._oShellServices=s.getShellServices();this.initRaw(s.getRouter());this.waitForRouteMatchBeforeNavigation();history.replaceState(Object.assign({feLevel:0},history.state),"",window.location);this.fclEnabled=i;this._fnBlockingNavFilter=this._blockingNavigationFilter.bind(this);this._oShellServices.registerNavigationFilter(this._fnBlockingNavFilter)}).catch(function(e){t.error("Cannot retrieve the shell services",e)});this._fnHashGuard=this.hashGuard.bind(this);window.addEventListener("popstate",this._fnHashGuard);this._bDisableOnHashChange=false;this._bIgnoreRestore=false;this._bForceFocus=true};o.destroy=function t(){if(this._oShellServices){this._oShellServices.unregisterNavigationFilter(this._fnBlockingNavFilter)}window.removeEventListener("popstate",this._fnHashGuard)};o.initRaw=function t(e){this._oRouter=e;this._oManagedHistory=[];this._oNavigationGuard=null;const s=this.getHash();this._oManagedHistory.push(this._extractStateFromHash(s));this.sIAppStateKey=g(s)};o.getHash=function t(){return this._oRouter.getHashChanger().getHash()};o.isFocusForced=function t(){return this._bForceFocus};o.setFocusForced=function t(e){this._bForceFocus=e};o.removeIAppStateKey=function t(){this.sIAppStateKey=null};o.navToHash=function t(e,s,i,n,a){if(a!==false){this._oShellServices.setBackNavigation()}if(this._oRouteMatchSynchronization){return this._oRouteMatchSynchronization.waitFor().then(()=>{this._oRouteMatchSynchronization=undefined;return this._internalNavToHash(e,s,i,n)})}else{if(this._bActivateRouteMatchSynchro){this.waitForRouteMatchBeforeNavigation()}return this._internalNavToHash(e,s,i,n)}};o._internalNavToHash=function t(e,s,i,a){if(this.fclEnabled&&this.sIAppStateKey&&!g(e)){e=y(e,this.sIAppStateKey)}if(!this.checkHashWithGuard(e)){if(!this.oResourceBundle){this.oResourceBundle=n.getLibraryResourceBundle("sap.fe.core")}if(!confirm(this.oResourceBundle.getText("C_ROUTER_PROXY_SAPFE_EXIT_NOTSAVED_MESSAGE"))){return Promise.resolve(false)}this.bIsGuardCrossAllowed=true}const o=this._extractStateFromHash(e);if(!this._bForceFocus){const t=this._extractEntitySetsFromHash(this.getHash());this._bForceFocus=a||t.length<o.keys.length&&t.every(function(t,e){return t===o.keys[e]})}const r=this._pushNewState(o,false,s,i);return this._rebuildBrowserHistory(r,false)};o.restoreHistory=function t(){if(this._bApplyRestore){this._bApplyRestore=false;let t=this.getHash();t=t.replace(/(\?|&)restoreHistory=true/,"");const e=this._extractStateFromHash(t);const s=this._pushNewState(e,true,false,true);return this._rebuildBrowserHistory(s,true)}else{return Promise.resolve()}};o.navBack=function t(){const e=this.getHash();let s;for(let t=this._oManagedHistory.length-1;t>0;t--){if(this._oManagedHistory[t].hash===e){s=this._oManagedHistory[t-1].hash;break}}if(s){return this.navToHash(s)}else{window.history.back();return Promise.resolve()}};o.navTo=function t(e,s){const i=this._oRouter.getURL(e,s);return this.navToHash(i,false,s.noPreservationCache,false,!s.bIsStickyMode)};o.exitFromApp=function t(){return this._oShellServices.backToPreviousApp()};o.isCurrentStateImpactedBy=function t(e){if(e[0]==="/"){e=e.substring(1)}const s=d(e);return s.check(this.getHash())};o.isNavigationFinalized=function t(){return!this.bIsRebuildHistoryRunning&&!this._bDelayedRebuild};o.setNavigationGuard=function t(e){this._oNavigationGuard=d(e);this.bIsGuardCrossAllowed=false};o.discardNavigationGuard=function t(){this._oNavigationGuard=null};o.hasNavigationGuard=function t(){return this._oNavigationGuard!==null};o.checkHashWithGuard=function t(e){return this._oNavigationGuard===null||this._oNavigationGuard.check(e)};o.isGuardCrossAllowedByUser=function t(){return this.bIsGuardCrossAllowed};o.activateRouteMatchSynchronization=function t(){this._bActivateRouteMatchSynchro=true};o.resolveRouteMatch=function t(){if(this._oRouteMatchSynchronization){this._oRouteMatchSynchronization.resolve()}};o.waitForRouteMatchBeforeNavigation=function t(){this._oRouteMatchSynchronization=new s;this._bActivateRouteMatchSynchro=false};o._extractEntitySetsFromHash=function t(e){if(e===undefined){e=""}const s=e.split("?")[0];const i=s.split("/");const n=[];i.forEach(t=>{if(t.length){n.push(t.split("(")[0])}});return n};o._extractStateFromHash=function t(e){if(e===undefined){e=""}const s={keys:this._extractEntitySetsFromHash(e)};const i=e.match(new RegExp(`\\?.*${f.LAYOUTPARAM}=([^&]*)`));s.sLayout=i&&i.length>1?i[1]:null;if(s.sLayout==="MidColumnFullScreen"){s.screenMode=1}else if(s.sLayout==="EndColumnFullScreen"){s.screenMode=2}else{s.screenMode=0}s.hash=e;return s};o._pushNewState=function t(e,s,i,n){const a=this.getHash();let o=this._oManagedHistory.length-1;let r=s?1:0;if(!s){while(o>=0&&this._oManagedHistory[o].hash!==a){this._oManagedHistory.pop();o--}if(this._oManagedHistory.length===0){this._oManagedHistory.push(this._extractStateFromHash(a));history.replaceState(Object.assign({feLevel:0},history.state),"")}}if(i&&!n){this._oManagedHistory[this._oManagedHistory.length-1].preserved=true}let h;while(this._oManagedHistory.length>0){const t=this._oManagedHistory[this._oManagedHistory.length-1];if((n||!t.preserved)&&this._compareCacheStates(t,e)!==l.ANCESTOR){h=this._oManagedHistory.pop();r++}else if(t.preserved&&p(t.hash)===p(e.hash)){h=this._oManagedHistory.pop();r++;e.preserved=true;break}else{break}}this.sIAppStateKey=g(e.hash);if(!this.fclEnabled&&h){const t=g(h.hash);const s=this._compareCacheStates(h,e);if(!this.sIAppStateKey&&t&&(s===l.EQUAL||s===l.COMPATIBLE)){e.hash=y(e.hash,t)}}const u=h&&e.hash===h.hash;if(this._oManagedHistory.length===0||this._oManagedHistory[this._oManagedHistory.length-1].hash!==e.hash){this._oManagedHistory.push(e)}if(r===0){return{type:"append"}}else if(r===1){return u?{type:"none"}:{type:"replace"}}else{return u?{type:"back",steps:r-1}:{type:"back-replace",steps:r-1}}};o._blockingNavigationFilter=function t(){return this._bDisableOnHashChange?"Custom":"Continue"};o._disableEventOnHashChange=function t(){this._bDisableOnHashChange=true;this._oRouter.stop()};o._enableEventOnHashChange=function t(e){this._bDisableOnHashChange=false;this._oRouter.initialize(e)};o._rebuildBrowserHistory=function t(e,s){const i=this;return new Promise(t=>{this.bIsRebuildHistoryRunning=true;const n=this._oManagedHistory[this._oManagedHistory.length-1],a=this._oManagedHistory.length-1;function o(){if(!s){i._enableEventOnHashChange(true)}i._oRouter.getHashChanger().replaceHash(n.hash);history.replaceState(Object.assign({feLevel:a},history.state),"");if(s){setTimeout(function(){i._enableEventOnHashChange(true)},0)}i.bIsRebuildHistoryRunning=false;t(true)}function r(){window.removeEventListener("popstate",r);setTimeout(function(){o()},0)}function h(){window.removeEventListener("popstate",h);i.bIsRebuildHistoryRunning=false;t(true)}i._bIgnoreRestore=true;switch(e.type){case"replace":i._oRouter.getHashChanger().replaceHash(n.hash);history.replaceState(Object.assign({feLevel:a},history.state),"");i.bIsRebuildHistoryRunning=false;t(true);break;case"append":i._oRouter.getHashChanger().setHash(n.hash);history.replaceState(Object.assign({feLevel:a},history.state),"");i.bIsRebuildHistoryRunning=false;t(true);break;case"back":window.addEventListener("popstate",h);history.go(-e.steps);break;case"back-replace":this._disableEventOnHashChange();window.addEventListener("popstate",r);history.go(-e.steps);break;default:this.bIsRebuildHistoryRunning=false;t(false)}})};o.getLastHistoryEntry=function t(){return this._oManagedHistory[this._oManagedHistory.length-1]};o.setPathMapping=function t(e){this._pathMappings=e.filter(t=>t.oldPath!==t.newPath)};o.hashGuard=function t(){let e=window.location.hash;if(e.indexOf("restoreHistory=true")!==-1){this._bApplyRestore=true}else if(!this.bIsRebuildHistoryRunning){const t=this._pathMappings.find(t=>e.indexOf(t.oldPath)>=0);if(t){e=e.replace(t.oldPath,t.newPath);history.replaceState(Object.assign({},history.state),"",e)}const s=e.split("&/");const i=s[1]?s[1]:"";if(this.checkHashWithGuard(i)){this._bDelayedRebuild=true;const t=this._extractStateFromHash(i);this._pushNewState(t,false,false,true);setTimeout(()=>{this._bDelayedRebuild=false},0)}}};o._compareCacheStates=function t(e,s){if(e.keys.length>s.keys.length){return l.DIFFERENT}let i=true;let n;for(n=0;i&&n<e.keys.length;n++){if(e.keys[n]!==s.keys[n]){i=false}}if(!i){return l.DIFFERENT}if(e.keys.length<s.keys.length||e.screenMode<s.screenMode){return l.ANCESTOR}if(e.screenMode>s.screenMode){return l.DIFFERENT}return e.sLayout===s.sLayout?l.EQUAL:l.COMPATIBLE};o.checkIfBackIsOutOfGuard=function t(e){let s;let i;if(e===undefined){const t=this._oShellServices.splitHash(window.location.hash);if(t&&t.appSpecificRoute){i=t.appSpecificRoute;if(i.indexOf("&/")===0){i=i.substring(2)}}else{i=window.location.hash.substring(1);if(i[0]==="/"){i=i.substring(1)}}}else{i=e}e=a.decode(i);if(this._oNavigationGuard){for(let t=this._oManagedHistory.length-1;t>0;t--){if(this._oManagedHistory[t].hash===e){s=this._oManagedHistory[t-1].hash;break}}return!s||!this.checkHashWithGuard(s)}return false};o.checkIfBackHasSameContext=function t(){if(this._oManagedHistory.length<2){return false}const e=this._oManagedHistory[this._oManagedHistory.length-1];const s=this._oManagedHistory[this._oManagedHistory.length-2];return e.hash.split("?")[0]===s.hash.split("?")[0]};return i}(i))||r);return _},false);
|
|
6
6
|
//# sourceMappingURL=RouterProxy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouterProxy.js","names":["sap","ui","define","Log","ClassSupport","Synchronization","BaseObject","Core","URI","_dec","_class","defineUI5Class","_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","_setPrototypeOf","o","p","setPrototypeOf","bind","__proto__","enumState","EQUAL","COMPATIBLE","ANCESTOR","DIFFERENT","enumURLParams","LAYOUTPARAM","IAPPSTATEPARAM","createGuardFromHash","sGuardHash","_guardHash","replace","check","sHash","indexOf","this","findAppStateInHash","aAppState","match","RegExp","length","removeAppStateInHash","setAppStateInHash","sAppStateKey","sNewHash","RouterProxy","_BaseObject","_this","_len","arguments","args","Array","_key","call","bIsRebuildHistoryRunning","bIsComputingTitleHierachy","bIsGuardCrossAllowed","sIAppStateKey","_bActivateRouteMatchSynchro","_bApplyRestore","_bDelayedRebuild","_pathMappings","_proto","init","oAppComponent","isfclEnabled","getService","then","_oShellServices","getShellServices","initRaw","getRouter","waitForRouteMatchBeforeNavigation","history","replaceState","assign","feLevel","state","window","location","fclEnabled","_fnBlockingNavFilter","_blockingNavigationFilter","registerNavigationFilter","catch","oError","error","_fnHashGuard","hashGuard","addEventListener","_bDisableOnHashChange","_bIgnoreRestore","_bForceFocus","destroy","unregisterNavigationFilter","removeEventListener","oRouter","_oRouter","_oManagedHistory","_oNavigationGuard","sCurrentAppHash","getHash","push","_extractStateFromHash","getHashChanger","isFocusForced","setFocusForced","bForced","removeIAppStateKey","navToHash","bPreserveHistory","bDisablePreservationCache","bForceFocus","bPreserveShellBackNavigationHandler","setBackNavigation","_oRouteMatchSynchronization","waitFor","undefined","_internalNavToHash","checkHashWithGuard","oResourceBundle","getLibraryResourceBundle","confirm","getText","Promise","resolve","oNewState","aCurrentHashKeys","_extractEntitySetsFromHash","keys","every","key","index","oHistoryAction","_pushNewState","_rebuildBrowserHistory","restoreHistory","sTargetHash","navBack","sCurrentHash","sPreviousHash","i","hash","back","navTo","sRouteName","oParameters","getURL","noPreservationCache","bIsStickyMode","exitFromApp","backToPreviousApp","isCurrentStateImpactedBy","substring","oLocalGuard","isNavigationFinalized","setNavigationGuard","discardNavigationGuard","hasNavigationGuard","isGuardCrossAllowedByUser","activateRouteMatchSynchronization","resolveRouteMatch","sHashNoParams","split","aTokens","names","forEach","sToken","oState","aLayout","sLayout","screenMode","bRebuildOnly","bDisableHistoryPreservation","lastIndex","iPopCount","pop","preserved","oLastRemovedItem","oTopState","_compareCacheStates","sPreviousIAppStateKey","oComparisonStateResult","bHasSameHash","type","steps","_disableEventOnHashChange","stop","_enableEventOnHashChange","bIgnoreCurrentHash","initialize","that","oTargetState","newLevel","replaceAsync","replaceHash","setTimeout","backReplaceAsync","backAsync","setHash","go","getLastHistoryEntry","setPathMapping","mappings","filter","mapping","oldPath","newPath","find","m","aHashSplit","sAppHash","oState1","oState2","equal","checkIfBackIsOutOfGuard","sPresentHash","sPrevHash","oSplitHash","splitHash","appSpecificRoute","decode","checkIfBackHasSameContext","oCurrentState","oPreviousState"],"sources":["RouterProxy-dbg.js"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RouterProxy.js","names":["sap","ui","define","Log","ClassSupport","Synchronization","BaseObject","Core","URI","_dec","_class","defineUI5Class","_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","_setPrototypeOf","o","p","setPrototypeOf","bind","__proto__","enumState","EQUAL","COMPATIBLE","ANCESTOR","DIFFERENT","enumURLParams","LAYOUTPARAM","IAPPSTATEPARAM","createGuardFromHash","sGuardHash","_guardHash","replace","check","sHash","indexOf","this","findAppStateInHash","aAppState","match","RegExp","length","removeAppStateInHash","setAppStateInHash","sAppStateKey","sNewHash","RouterProxy","_BaseObject","_this","_len","arguments","args","Array","_key","call","bIsRebuildHistoryRunning","bIsComputingTitleHierachy","bIsGuardCrossAllowed","sIAppStateKey","_bActivateRouteMatchSynchro","_bApplyRestore","_bDelayedRebuild","_pathMappings","_proto","init","oAppComponent","isfclEnabled","getService","then","_oShellServices","getShellServices","initRaw","getRouter","waitForRouteMatchBeforeNavigation","history","replaceState","assign","feLevel","state","window","location","fclEnabled","_fnBlockingNavFilter","_blockingNavigationFilter","registerNavigationFilter","catch","oError","error","_fnHashGuard","hashGuard","addEventListener","_bDisableOnHashChange","_bIgnoreRestore","_bForceFocus","destroy","unregisterNavigationFilter","removeEventListener","oRouter","_oRouter","_oManagedHistory","_oNavigationGuard","sCurrentAppHash","getHash","push","_extractStateFromHash","getHashChanger","isFocusForced","setFocusForced","bForced","removeIAppStateKey","navToHash","bPreserveHistory","bDisablePreservationCache","bForceFocus","bPreserveShellBackNavigationHandler","setBackNavigation","_oRouteMatchSynchronization","waitFor","undefined","_internalNavToHash","checkHashWithGuard","oResourceBundle","getLibraryResourceBundle","confirm","getText","Promise","resolve","oNewState","aCurrentHashKeys","_extractEntitySetsFromHash","keys","every","key","index","oHistoryAction","_pushNewState","_rebuildBrowserHistory","restoreHistory","sTargetHash","navBack","sCurrentHash","sPreviousHash","i","hash","back","navTo","sRouteName","oParameters","getURL","noPreservationCache","bIsStickyMode","exitFromApp","backToPreviousApp","isCurrentStateImpactedBy","substring","oLocalGuard","isNavigationFinalized","setNavigationGuard","discardNavigationGuard","hasNavigationGuard","isGuardCrossAllowedByUser","activateRouteMatchSynchronization","resolveRouteMatch","sHashNoParams","split","aTokens","names","forEach","sToken","oState","aLayout","sLayout","screenMode","bRebuildOnly","bDisableHistoryPreservation","lastIndex","iPopCount","pop","preserved","oLastRemovedItem","oTopState","_compareCacheStates","sPreviousIAppStateKey","oComparisonStateResult","bHasSameHash","type","steps","_disableEventOnHashChange","stop","_enableEventOnHashChange","bIgnoreCurrentHash","initialize","that","oTargetState","newLevel","replaceAsync","replaceHash","setTimeout","backReplaceAsync","backAsync","setHash","go","getLastHistoryEntry","setPathMapping","mappings","filter","mapping","oldPath","newPath","find","m","aHashSplit","sAppHash","oState1","oState2","equal","checkIfBackIsOutOfGuard","sPresentHash","sPrevHash","oSplitHash","splitHash","appSpecificRoute","decode","checkIfBackHasSameContext","oCurrentState","oPreviousState"],"sources":["RouterProxy-dbg.js"],"mappings":"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"}
|
|
@@ -27,7 +27,7 @@ const enumURLParams = {
|
|
|
27
27
|
*/
|
|
28
28
|
function createGuardFromHash(sGuardHash: string) {
|
|
29
29
|
return {
|
|
30
|
-
_guardHash: sGuardHash.replace(/\?[
|
|
30
|
+
_guardHash: sGuardHash.replace(/\?[^?]*$/, ""), // Remove query part
|
|
31
31
|
check: function (sHash: any) {
|
|
32
32
|
return sHash.indexOf(this._guardHash) === 0;
|
|
33
33
|
}
|
|
@@ -81,24 +81,43 @@ function setAppStateInHash(sHash: any, sAppStateKey: any) {
|
|
|
81
81
|
@defineUI5Class("sap.fe.core.RouterProxy")
|
|
82
82
|
class RouterProxy extends BaseObject {
|
|
83
83
|
bIsRebuildHistoryRunning = false;
|
|
84
|
+
|
|
84
85
|
bIsComputingTitleHierachy = false;
|
|
86
|
+
|
|
85
87
|
bIsGuardCrossAllowed = false;
|
|
88
|
+
|
|
86
89
|
sIAppStateKey: string | null = null;
|
|
90
|
+
|
|
87
91
|
_oShellServices!: IShellServices;
|
|
92
|
+
|
|
88
93
|
fclEnabled!: boolean;
|
|
94
|
+
|
|
89
95
|
_fnBlockingNavFilter!: Function;
|
|
96
|
+
|
|
90
97
|
_fnHashGuard!: Function;
|
|
98
|
+
|
|
91
99
|
_bDisableOnHashChange!: boolean;
|
|
100
|
+
|
|
92
101
|
_bIgnoreRestore!: boolean;
|
|
102
|
+
|
|
93
103
|
_bForceFocus!: boolean;
|
|
104
|
+
|
|
94
105
|
_oRouter!: Router;
|
|
106
|
+
|
|
95
107
|
_oManagedHistory!: any[];
|
|
108
|
+
|
|
96
109
|
_oNavigationGuard: any;
|
|
110
|
+
|
|
97
111
|
oResourceBundle?: ResourceBundle;
|
|
112
|
+
|
|
98
113
|
_oRouteMatchSynchronization?: Synchronization;
|
|
114
|
+
|
|
99
115
|
_bActivateRouteMatchSynchro: boolean = false;
|
|
116
|
+
|
|
100
117
|
_bApplyRestore: boolean = false;
|
|
118
|
+
|
|
101
119
|
_bDelayedRebuild: boolean = false;
|
|
120
|
+
|
|
102
121
|
_pathMappings: { oldPath: string; newPath: string }[] = [];
|
|
103
122
|
|
|
104
123
|
init(oAppComponent: any, isfclEnabled: boolean) {
|
|
@@ -726,18 +745,18 @@ class RouterProxy extends BaseObject {
|
|
|
726
745
|
// Replace the current hash
|
|
727
746
|
sHash = sHash.replace(mapping.oldPath, mapping.newPath);
|
|
728
747
|
history.replaceState(Object.assign({}, history.state), "", sHash);
|
|
729
|
-
}
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
}
|
|
748
|
+
}
|
|
749
|
+
|
|
750
|
+
const aHashSplit = sHash.split("&/");
|
|
751
|
+
const sAppHash = aHashSplit[1] ? aHashSplit[1] : "";
|
|
752
|
+
if (this.checkHashWithGuard(sAppHash)) {
|
|
753
|
+
this._bDelayedRebuild = true;
|
|
754
|
+
const oNewState = this._extractStateFromHash(sAppHash);
|
|
755
|
+
this._pushNewState(oNewState, false, false, true);
|
|
756
|
+
|
|
757
|
+
setTimeout(() => {
|
|
758
|
+
this._bDelayedRebuild = false;
|
|
759
|
+
}, 0);
|
|
741
760
|
}
|
|
742
761
|
}
|
|
743
762
|
}
|