@sapui5/sap.fe.core 1.100.0 → 1.102.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 +4 -4
- package/src/sap/fe/core/.library +2 -3
- package/src/sap/fe/core/AppComponent.js +23 -30
- package/src/sap/fe/core/AppComponent.ts +35 -40
- package/src/sap/fe/core/AppStateHandler.js +8 -8
- package/src/sap/fe/core/AppStateHandler.ts +11 -11
- package/src/sap/fe/core/BaseController.js +9 -9
- package/src/sap/fe/core/BaseController.ts +3 -4
- package/src/sap/fe/core/CommonUtils.js +122 -101
- package/src/sap/fe/core/CommonUtils.ts +239 -193
- package/src/sap/fe/core/ExtensionAPI.js +12 -13
- package/src/sap/fe/core/ExtensionAPI.ts +21 -31
- package/src/sap/fe/core/PageController.js +19 -13
- package/src/sap/fe/core/PageController.ts +40 -34
- package/src/sap/fe/core/TemplateComponent.js +198 -123
- package/src/sap/fe/core/TemplateComponent.ts +109 -121
- package/src/sap/fe/core/TemplateModel.js +7 -9
- package/src/sap/fe/core/TemplateModel.ts +3 -3
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js +60 -0
- package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +37 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +165 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +178 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +935 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +837 -0
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +436 -0
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +431 -0
- package/src/sap/fe/core/{BusyLocker.js → controllerextensions/BusyLocker.js} +1 -1
- package/src/sap/fe/core/{BusyLocker.ts → controllerextensions/BusyLocker.ts} +7 -7
- package/src/sap/fe/core/controllerextensions/EditFlow.js +660 -288
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +513 -331
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +11 -11
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +6 -7
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +43 -25
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +132 -103
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +16 -16
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +64 -55
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +166 -99
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +187 -149
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +14 -14
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +12 -11
- package/src/sap/fe/core/controllerextensions/MassEdit.js +13 -12
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +22 -22
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +14 -26
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +20 -30
- package/src/sap/fe/core/controllerextensions/PageReady.js +25 -23
- package/src/sap/fe/core/controllerextensions/PageReady.ts +49 -47
- package/src/sap/fe/core/controllerextensions/Paginator.js +24 -15
- package/src/sap/fe/core/controllerextensions/Paginator.ts +35 -20
- package/src/sap/fe/core/controllerextensions/Placeholder.js +10 -10
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +12 -14
- package/src/sap/fe/core/controllerextensions/Routing.js +11 -11
- package/src/sap/fe/core/controllerextensions/Routing.ts +12 -13
- package/src/sap/fe/core/controllerextensions/Share.js +34 -16
- package/src/sap/fe/core/controllerextensions/Share.ts +50 -32
- package/src/sap/fe/core/controllerextensions/SideEffects.js +15 -15
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +64 -65
- package/src/sap/fe/core/controllerextensions/ViewState.js +27 -31
- package/src/sap/fe/core/controllerextensions/ViewState.ts +103 -102
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +105 -0
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +98 -0
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +360 -0
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/ActivitySync.ts +90 -132
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +146 -0
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/CollaborationCommon.ts +18 -8
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +264 -0
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/Manage.ts +35 -33
- package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +100 -0
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/UserDetails.fragment.xml +5 -7
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1584 -0
- package/src/sap/fe/core/{TransactionHelper.ts → controllerextensions/editFlow/TransactionHelper.ts} +190 -159
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +780 -0
- package/src/sap/fe/core/{actions → controllerextensions/editFlow}/draft.ts +329 -76
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +1149 -0
- package/src/sap/fe/core/{actions → controllerextensions/editFlow}/operations.ts +169 -97
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +190 -0
- package/src/sap/fe/core/{actions → controllerextensions/editFlow}/sticky.ts +76 -12
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +592 -0
- package/src/sap/fe/core/{actions → controllerextensions/messageHandler}/messageHandling.ts +83 -60
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +940 -0
- package/src/sap/fe/core/{RouterProxy.ts → controllerextensions/routing/RouterProxy.ts} +52 -36
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +21 -18
- package/src/sap/fe/core/controls/Any.js +28 -0
- package/src/sap/fe/core/controls/Any.ts +30 -0
- package/src/sap/fe/core/controls/CommandExecution.js +50 -16
- package/src/sap/fe/core/controls/CommandExecution.ts +31 -22
- package/src/sap/fe/core/controls/ConditionalWrapper.js +136 -65
- package/src/sap/fe/core/controls/ConditionalWrapper.ts +49 -58
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +371 -0
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +282 -0
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +74 -36
- package/src/sap/fe/core/controls/CustomQuickViewPage.ts +23 -32
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossDraft.fragment.xml +52 -5
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +127 -67
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +127 -67
- package/src/sap/fe/core/controls/FieldWrapper.js +171 -87
- package/src/sap/fe/core/controls/FieldWrapper.ts +69 -80
- package/src/sap/fe/core/controls/FileWrapper.js +360 -0
- package/src/sap/fe/core/controls/FileWrapper.ts +202 -0
- package/src/sap/fe/core/controls/FilterBar.js +154 -119
- package/src/sap/fe/core/controls/FilterBar.ts +128 -123
- package/src/sap/fe/core/controls/FormElementWrapper.js +102 -37
- package/src/sap/fe/core/controls/FormElementWrapper.ts +43 -35
- package/src/sap/fe/core/controls/MassEditSelect.js +33 -0
- package/src/sap/fe/core/controls/MassEditSelect.ts +45 -0
- package/src/sap/fe/core/controls/filterbar/FilterContainer.js +111 -89
- package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +86 -82
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +242 -193
- package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +211 -204
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +152 -116
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +105 -105
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +2 -2
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +23 -28
- package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +41 -81
- package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +107 -0
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +550 -35
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +604 -35
- package/src/sap/fe/core/converters/ManifestSettings.js +3 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +9 -2
- package/src/sap/fe/core/converters/MetaModelConverter.js +11 -40
- package/src/sap/fe/core/converters/MetaModelConverter.ts +56 -84
- package/src/sap/fe/core/converters/annotations/DataField.js +20 -5
- package/src/sap/fe/core/converters/annotations/DataField.ts +27 -6
- package/src/sap/fe/core/converters/controls/Common/Action.js +14 -21
- package/src/sap/fe/core/converters/controls/Common/Action.ts +23 -28
- package/src/sap/fe/core/converters/controls/Common/Chart.js +17 -10
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +20 -14
- package/src/sap/fe/core/converters/controls/Common/Form.js +16 -18
- package/src/sap/fe/core/converters/controls/Common/Form.ts +20 -20
- package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +2 -3
- package/src/sap/fe/core/converters/controls/Common/Table.js +389 -173
- package/src/sap/fe/core/converters/controls/Common/Table.ts +440 -244
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +26 -16
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +27 -19
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +78 -47
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +146 -107
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +6 -6
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +20 -18
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +30 -25
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +39 -34
- package/src/sap/fe/core/converters/helpers/Aggregation.js +10 -2
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +18 -13
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +3 -2
- package/src/sap/fe/core/converters/helpers/BindingHelper.ts +6 -5
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +1 -1
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +0 -4
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +27 -24
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +49 -40
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +33 -22
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +77 -62
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +28 -28
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +38 -45
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +3 -3
- package/src/sap/fe/core/designtime/AppComponent.designtime.ts +8 -6
- package/src/sap/fe/core/formatters/KPIFormatter.js +3 -12
- package/src/sap/fe/core/formatters/KPIFormatter.ts +3 -2
- package/src/sap/fe/core/formatters/TableFormatter.js +74 -13
- package/src/sap/fe/core/formatters/TableFormatter.ts +71 -16
- package/src/sap/fe/core/formatters/ValueFormatter.js +4 -4
- package/src/sap/fe/core/formatters/ValueFormatter.ts +4 -7
- package/src/sap/fe/core/fpm/Component.js +46 -17
- package/src/sap/fe/core/fpm/Component.ts +11 -16
- package/src/sap/fe/core/helpers/AppStartupHelper.js +4 -4
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +3 -3
- package/src/sap/fe/core/helpers/BindingExpression.js +10 -7
- package/src/sap/fe/core/helpers/BindingExpression.ts +37 -35
- package/src/sap/fe/core/helpers/ClassSupport.js +273 -256
- package/src/sap/fe/core/helpers/ClassSupport.ts +315 -237
- package/src/sap/fe/core/helpers/FPMHelper.js +3 -2
- package/src/sap/fe/core/helpers/FPMHelper.ts +9 -8
- package/src/sap/fe/core/helpers/MassEditHelper.js +522 -147
- package/src/sap/fe/core/helpers/MassEditHelper.ts +563 -236
- package/src/sap/fe/core/helpers/ModelHelper.js +29 -1
- package/src/sap/fe/core/helpers/ModelHelper.ts +39 -26
- package/src/sap/fe/core/helpers/PasteHelper.js +4 -4
- package/src/sap/fe/core/helpers/PasteHelper.ts +4 -3
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +3 -3
- package/src/sap/fe/core/helpers/SemanticDateOperators.ts +3 -1
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -1
- package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +1 -1
- package/src/sap/fe/core/helpers/StableIdHelper.js +5 -7
- package/src/sap/fe/core/helpers/StableIdHelper.ts +8 -8
- package/src/sap/fe/core/{Synchronization.js → helpers/Synchronization.js} +1 -1
- package/src/sap/fe/core/{Synchronization.ts → helpers/Synchronization.ts} +1 -1
- package/src/sap/fe/core/jsx-runtime/jsx.js +35 -5
- package/src/sap/fe/core/jsx-runtime/jsx.ts +22 -8
- package/src/sap/fe/core/library.js +13 -5
- package/src/sap/fe/core/library.ts +26 -17
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -1
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +0 -3
- package/src/sap/fe/core/messagebundle.properties +135 -180
- package/src/sap/fe/core/messagebundle_ar.properties +31 -64
- package/src/sap/fe/core/messagebundle_bg.properties +31 -64
- package/src/sap/fe/core/messagebundle_ca.properties +31 -64
- package/src/sap/fe/core/messagebundle_cs.properties +31 -64
- package/src/sap/fe/core/messagebundle_cy.properties +32 -65
- package/src/sap/fe/core/messagebundle_da.properties +31 -64
- package/src/sap/fe/core/messagebundle_de.properties +29 -62
- package/src/sap/fe/core/messagebundle_el.properties +32 -65
- package/src/sap/fe/core/messagebundle_en.properties +32 -65
- package/src/sap/fe/core/messagebundle_en_GB.properties +29 -62
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +41 -74
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +32 -65
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +20 -6
- package/src/sap/fe/core/messagebundle_es.properties +31 -64
- package/src/sap/fe/core/messagebundle_es_MX.properties +31 -64
- package/src/sap/fe/core/messagebundle_et.properties +31 -64
- package/src/sap/fe/core/messagebundle_fi.properties +29 -62
- package/src/sap/fe/core/messagebundle_fr.properties +36 -69
- package/src/sap/fe/core/messagebundle_fr_CA.properties +33 -66
- package/src/sap/fe/core/messagebundle_hi.properties +29 -62
- package/src/sap/fe/core/messagebundle_hr.properties +32 -65
- package/src/sap/fe/core/messagebundle_hu.properties +30 -63
- package/src/sap/fe/core/messagebundle_id.properties +32 -65
- package/src/sap/fe/core/messagebundle_it.properties +31 -64
- package/src/sap/fe/core/messagebundle_iw.properties +31 -64
- package/src/sap/fe/core/messagebundle_ja.properties +29 -62
- package/src/sap/fe/core/messagebundle_kk.properties +31 -64
- package/src/sap/fe/core/messagebundle_ko.properties +31 -64
- package/src/sap/fe/core/messagebundle_lt.properties +31 -64
- package/src/sap/fe/core/messagebundle_lv.properties +32 -65
- package/src/sap/fe/core/messagebundle_ms.properties +31 -64
- package/src/sap/fe/core/messagebundle_nl.properties +31 -64
- package/src/sap/fe/core/messagebundle_no.properties +31 -64
- package/src/sap/fe/core/messagebundle_pl.properties +34 -67
- package/src/sap/fe/core/messagebundle_pt.properties +32 -65
- package/src/sap/fe/core/messagebundle_pt_PT.properties +31 -64
- package/src/sap/fe/core/messagebundle_ro.properties +33 -66
- package/src/sap/fe/core/messagebundle_ru.properties +33 -66
- package/src/sap/fe/core/messagebundle_sh.properties +31 -64
- package/src/sap/fe/core/messagebundle_sk.properties +31 -64
- package/src/sap/fe/core/messagebundle_sl.properties +29 -62
- package/src/sap/fe/core/messagebundle_sv.properties +30 -63
- package/src/sap/fe/core/messagebundle_th.properties +31 -64
- package/src/sap/fe/core/messagebundle_tr.properties +31 -64
- package/src/sap/fe/core/messagebundle_uk.properties +32 -65
- package/src/sap/fe/core/messagebundle_vi.properties +31 -64
- package/src/sap/fe/core/messagebundle_zh_CN.properties +32 -65
- package/src/sap/fe/core/messagebundle_zh_TW.properties +34 -67
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +4 -4
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +1 -1
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +5 -5
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +1 -2
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +11 -8
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +15 -13
- package/src/sap/fe/core/services/NavigationServiceFactory.js +5 -5
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +9 -5
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +4 -4
- package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +1 -1
- package/src/sap/fe/core/services/RoutingServiceFactory.js +105 -66
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +59 -49
- package/src/sap/fe/core/services/ShellServicesFactory.js +104 -29
- package/src/sap/fe/core/services/ShellServicesFactory.ts +64 -30
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +4 -4
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +1 -1
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +11 -10
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +38 -51
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +43 -5
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +6 -3
- package/src/sap/fe/core/support/CommonHelper.js +1 -1
- package/src/sap/fe/core/support/CommonHelper.ts +0 -3
- package/src/sap/fe/core/templating/DataModelPathHelper.js +2 -9
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +32 -38
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +23 -3
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +27 -6
- package/src/sap/fe/core/templating/EntitySetHelper.js +1 -9
- package/src/sap/fe/core/templating/EntitySetHelper.ts +11 -13
- package/src/sap/fe/core/templating/FilterHelper.js +4 -4
- package/src/sap/fe/core/templating/FilterHelper.ts +6 -5
- package/src/sap/fe/core/templating/PropertyHelper.js +70 -33
- package/src/sap/fe/core/templating/PropertyHelper.ts +49 -27
- package/src/sap/fe/core/templating/UIFormatters.js +133 -22
- package/src/sap/fe/core/templating/UIFormatters.ts +144 -50
- package/src/sap/fe/core/type/DateTimeWithTimezone.js +47 -0
- package/src/sap/fe/core/type/DateTimeWithTimezone.ts +23 -0
- package/src/sap/fe/core/type/Email.js +26 -8
- package/src/sap/fe/core/type/Email.ts +8 -7
- package/src/sap/fe/core/AnnotationHelper.js +0 -312
- package/src/sap/fe/core/AnnotationHelper.ts +0 -315
- package/src/sap/fe/core/RouterProxy.js +0 -926
- package/src/sap/fe/core/TransactionHelper.js +0 -1562
- package/src/sap/fe/core/actions/collaboration/ActivitySync.js +0 -392
- package/src/sap/fe/core/actions/collaboration/CollaborationCommon.js +0 -136
- package/src/sap/fe/core/actions/collaboration/Manage.js +0 -262
- package/src/sap/fe/core/actions/collaboration/ManageDialog.fragment.xml +0 -103
- package/src/sap/fe/core/actions/draft.js +0 -523
- package/src/sap/fe/core/actions/messageHandling.js +0 -567
- package/src/sap/fe/core/actions/nonDraft.js +0 -20
- package/src/sap/fe/core/actions/nonDraft.ts +0 -12
- package/src/sap/fe/core/actions/operations.js +0 -1096
- package/src/sap/fe/core/actions/sticky.js +0 -130
- package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +0 -78
- package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.ts +0 -65
- package/src/sap/fe/core/formatters/CriticalityFormatter.js +0 -77
- package/src/sap/fe/core/formatters/CriticalityFormatter.ts +0 -58
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import ControllerExtension from "sap/ui/core/mvc/ControllerExtension";
|
|
2
|
-
import
|
|
3
|
-
import { UI5Class, Override, Public } from "../helpers/ClassSupport";
|
|
2
|
+
import { defineUI5Class, methodOverride, publicExtension } from "../helpers/ClassSupport";
|
|
4
3
|
import JSONModel from "sap/ui/model/json/JSONModel";
|
|
5
4
|
import ODataModel from "sap/ui/model/odata/v4/ODataModel";
|
|
6
5
|
import Context from "sap/ui/model/odata/v4/Context";
|
|
@@ -17,7 +16,8 @@ import FilterOperator from "sap/ui/model/FilterOperator";
|
|
|
17
16
|
import Sorter from "sap/ui/model/Sorter";
|
|
18
17
|
import GenericTag from "sap/m/GenericTag";
|
|
19
18
|
import Popover from "sap/m/Popover";
|
|
20
|
-
import
|
|
19
|
+
import { CoreEx } from "types/extension_types";
|
|
20
|
+
import Core from "sap/ui/core/Core";
|
|
21
21
|
|
|
22
22
|
const MessageTypeFromCriticality: Record<string, MessageType> = {
|
|
23
23
|
"1": MessageType.Error,
|
|
@@ -217,7 +217,7 @@ function getFilterStringFromDefinition(filterDefinition: FilterDefinition): stri
|
|
|
217
217
|
.getConfiguration()
|
|
218
218
|
.getLanguage()
|
|
219
219
|
);
|
|
220
|
-
const resBundle =
|
|
220
|
+
const resBundle = (Core as CoreEx).getLibraryResourceBundle("sap.fe.core");
|
|
221
221
|
const dateFormat = DateFormat.getDateInstance({ style: "medium" }, currentLocale);
|
|
222
222
|
|
|
223
223
|
function formatRange(range: RangeDefinition): string {
|
|
@@ -269,7 +269,7 @@ function getFilterStringFromDefinition(filterDefinition: FilterDefinition): stri
|
|
|
269
269
|
}
|
|
270
270
|
|
|
271
271
|
function formatChartTitle(kpiDef: KPIDefinition): string {
|
|
272
|
-
const resBundle =
|
|
272
|
+
const resBundle = (Core as CoreEx).getLibraryResourceBundle("sap.fe.core");
|
|
273
273
|
|
|
274
274
|
function formatList(items: { name: string; label: string }[]) {
|
|
275
275
|
if (items.length === 0) {
|
|
@@ -568,7 +568,7 @@ function getNavigationParameters(
|
|
|
568
568
|
* @private
|
|
569
569
|
* @since 1.93.0
|
|
570
570
|
*/
|
|
571
|
-
@
|
|
571
|
+
@defineUI5Class("sap.fe.core.controllerextensions.KPIManagement")
|
|
572
572
|
class KPIManagementControllerExtension extends ControllerExtension {
|
|
573
573
|
protected aKPIDefinitions?: KPIDefinition[];
|
|
574
574
|
protected oCard: any;
|
|
@@ -624,7 +624,7 @@ class KPIManagementControllerExtension extends ControllerExtension {
|
|
|
624
624
|
|
|
625
625
|
// Add side indicators in the card header if a target is defined for the KPI
|
|
626
626
|
if (kpiDefinition.datapoint.targetPath || kpiDefinition.datapoint.targetValue !== undefined) {
|
|
627
|
-
const resBundle =
|
|
627
|
+
const resBundle = (Core as CoreEx).getLibraryResourceBundle("sap.fe.core");
|
|
628
628
|
oCardManifest["sap.card"].header.sideIndicators = [
|
|
629
629
|
{
|
|
630
630
|
title: resBundle.getText("C_KPICARD_INDICATOR_TARGET"),
|
|
@@ -689,7 +689,7 @@ class KPIManagementControllerExtension extends ControllerExtension {
|
|
|
689
689
|
}
|
|
690
690
|
}
|
|
691
691
|
|
|
692
|
-
@
|
|
692
|
+
@methodOverride()
|
|
693
693
|
public onInit(): void {
|
|
694
694
|
this.aKPIDefinitions = this.getKPIData();
|
|
695
695
|
|
|
@@ -718,7 +718,7 @@ class KPIManagementControllerExtension extends ControllerExtension {
|
|
|
718
718
|
}
|
|
719
719
|
}
|
|
720
720
|
|
|
721
|
-
@
|
|
721
|
+
@methodOverride()
|
|
722
722
|
public onExit(): void {
|
|
723
723
|
const oKPIModel = this.getView().getModel("kpiModel") as JSONModel;
|
|
724
724
|
|
|
@@ -1108,7 +1108,8 @@ class KPIManagementControllerExtension extends ControllerExtension {
|
|
|
1108
1108
|
protected getPopover(oKPITag: GenericTag): Promise<Popover> {
|
|
1109
1109
|
if (!this.oPopover) {
|
|
1110
1110
|
return new Promise((resolve, reject) => {
|
|
1111
|
-
(
|
|
1111
|
+
(Core as CoreEx)
|
|
1112
|
+
.loadLibrary("sap/ui/integration", { async: true })
|
|
1112
1113
|
.then(() => {
|
|
1113
1114
|
sap.ui.require(["sap/ui/integration/widgets/Card", "sap/ui/integration/Host"], (Card: any, Host: any) => {
|
|
1114
1115
|
const oHost = new Host();
|
|
@@ -1155,7 +1156,7 @@ class KPIManagementControllerExtension extends ControllerExtension {
|
|
|
1155
1156
|
}
|
|
1156
1157
|
}
|
|
1157
1158
|
|
|
1158
|
-
@
|
|
1159
|
+
@publicExtension()
|
|
1159
1160
|
public onKPIPressed(oKPITag: any, kpiID: string): void {
|
|
1160
1161
|
const oKPIModel = oKPITag.getModel("kpiModel") as JSONModel;
|
|
1161
1162
|
|
|
@@ -2,18 +2,18 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/
|
|
5
|
+
sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/MassEditHelper", "sap/fe/core/helpers/ModelHelper", "sap/m/MessageBox", "sap/ui/core/mvc/ControllerExtension", "sap/ui/core/mvc/OverrideExecution"], function (Log, ClassSupport, MassEditHelper, ModelHelper, MessageBox, ControllerExtension, OverrideExecution) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
var _dec, _dec2, _class, _class2;
|
|
8
|
+
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _class, _class2;
|
|
9
9
|
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
var
|
|
13
|
-
var
|
|
14
|
-
var
|
|
10
|
+
var publicExtension = ClassSupport.publicExtension;
|
|
11
|
+
var privateExtension = ClassSupport.privateExtension;
|
|
12
|
+
var finalExtension = ClassSupport.finalExtension;
|
|
13
|
+
var extensible = ClassSupport.extensible;
|
|
14
|
+
var defineUI5Class = ClassSupport.defineUI5Class;
|
|
15
15
|
|
|
16
|
-
function
|
|
16
|
+
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
|
|
17
17
|
|
|
18
18
|
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
19
19
|
|
|
@@ -26,8 +26,8 @@ sap.ui.define(["sap/ui/core/mvc/ControllerExtension", "sap/ui/core/mvc/OverrideE
|
|
|
26
26
|
* @hideconstructor
|
|
27
27
|
* @private
|
|
28
28
|
*/
|
|
29
|
-
var MassEdit = (_dec =
|
|
30
|
-
|
|
29
|
+
var MassEdit = (_dec = defineUI5Class("sap.fe.core.controllerextensions.MassEdit"), _dec2 = publicExtension(), _dec3 = finalExtension(), _dec4 = publicExtension(), _dec5 = finalExtension(), _dec6 = privateExtension(), _dec7 = extensible(OverrideExecution.After), _dec(_class = (_class2 = /*#__PURE__*/function (_ControllerExtension) {
|
|
30
|
+
_inheritsLoose(MassEdit, _ControllerExtension);
|
|
31
31
|
|
|
32
32
|
function MassEdit() {
|
|
33
33
|
return _ControllerExtension.apply(this, arguments) || this;
|
|
@@ -114,6 +114,7 @@ sap.ui.define(["sap/ui/core/mvc/ControllerExtension", "sap/ui/core/mvc/OverrideE
|
|
|
114
114
|
return aContexts && aContexts.length > 0 ? MassEditHelper.createDialog(oTable, aContexts, oController) : Promise.resolve();
|
|
115
115
|
}).then(function (oDialog) {
|
|
116
116
|
if (oDialog) {
|
|
117
|
+
oTable.addDependent(oDialog);
|
|
117
118
|
oDialog.open();
|
|
118
119
|
}
|
|
119
120
|
}).catch(function (oError) {
|
|
@@ -138,7 +139,7 @@ sap.ui.define(["sap/ui/core/mvc/ControllerExtension", "sap/ui/core/mvc/OverrideE
|
|
|
138
139
|
};
|
|
139
140
|
|
|
140
141
|
return MassEdit;
|
|
141
|
-
}(ControllerExtension), (_applyDecoratedDescriptor(_class2.prototype, "getMessageDetailForNonEditable", [
|
|
142
|
+
}(ControllerExtension), (_applyDecoratedDescriptor(_class2.prototype, "getMessageDetailForNonEditable", [_dec2, _dec3], Object.getOwnPropertyDescriptor(_class2.prototype, "getMessageDetailForNonEditable"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "openMassEditDialog", [_dec4, _dec5], Object.getOwnPropertyDescriptor(_class2.prototype, "openMassEditDialog"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "fetchContextsForEdit", [_dec6, _dec7], Object.getOwnPropertyDescriptor(_class2.prototype, "fetchContextsForEdit"), _class2.prototype)), _class2)) || _class);
|
|
142
143
|
return MassEdit;
|
|
143
144
|
}, false);
|
|
144
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1hc3NFZGl0LnRzIl0sIm5hbWVzIjpbIk1hc3NFZGl0IiwiVUk1Q2xhc3MiLCJDb250cm9sbGVyRXh0ZW5zaW9uTWV0YWRhdGEiLCJFeHRlbnNpYmxlIiwiT3ZlcnJpZGVFeGVjdXRpb24iLCJBZnRlciIsImdldE1lc3NhZ2VEZXRhaWxGb3JOb25FZGl0YWJsZSIsIm9SZXNvdXJjZUJ1bmRsZSIsInNIZWFkZXIiLCJnZXRUZXh0Iiwic1JlYXNvbkdyb3VwIiwic1JlYXNvbkRyYWZ0Iiwic1JlYXNvbk5vbkVkaXRhYmxlIiwiX29wZW5Db25maXJtRGlhbG9nIiwib1RhYmxlIiwiYUNvbnRleHRzIiwiaVNlbGVjdGVkQ29udGV4dHMiLCJpVXBkYXRhYmxlQ29udGV4dHMiLCJsZW5ndGgiLCJQcm9taXNlIiwicmVzb2x2ZSIsImdldFZpZXciLCJnZXRNb2RlbCIsImdldFJlc291cmNlQnVuZGxlIiwidGhlbiIsInNFZGl0QnV0dG9uIiwic0NhbmNlbEJ1dHRvbiIsImlOb25FZGl0YWJsZSIsInNNZXNzYWdlIiwic1BhdGgiLCJkYXRhIiwib01ldGFNb2RlbCIsImdldE1ldGFNb2RlbCIsImJJc0RyYWZ0IiwiTW9kZWxIZWxwZXIiLCJpc0RyYWZ0U3VwcG9ydGVkIiwiYkRpc3BsYXlNb2RlIiwic01lc3NhZ2VEZXRhaWwiLCJNZXNzYWdlQm94Iiwid2FybmluZyIsImRldGFpbHMiLCJhY3Rpb25zIiwiZW1waGFzaXplZEFjdGlvbiIsImNvbnRlbnRXaWR0aCIsIm9uQ2xvc2UiLCJzU2VsZWN0aW9uIiwiYUNvbnRleHRzRm9yRWRpdCIsIkxvZyIsImluZm8iLCJ0b1N0cmluZyIsImNhdGNoIiwiZXJyb3IiLCJfY29uZmlybUNvbnRleHRzIiwib0ludGVybmFsTW9kZWxDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJnZXRQcm9wZXJ0eSIsIm9wZW5NYXNzRWRpdERpYWxvZyIsIm9Db250cm9sbGVyIiwiZ2V0Q29udHJvbGxlciIsInBDb250ZXh0c0ZvckVkaXQiLCJmZXRjaENvbnRleHRzRm9yRWRpdCIsImJpbmQiLCJNYXNzRWRpdEhlbHBlciIsImNyZWF0ZURpYWxvZyIsIm9EaWFsb2ciLCJvcGVuIiwib0Vycm9yIiwiYVNlbGVjdGVkQ29udGV4dHMiLCJDb250cm9sbGVyRXh0ZW5zaW9uIiwiUHVibGljIiwiRmluYWwiLCJQcml2YXRlIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtNQUVNQSxRLFdBRExDLFFBQVEsQ0FBQywyQ0FBRCxFQUE4Q0MsMkJBQTlDLEMsVUE0SFBDLFVBQVUsQ0FBQ0MsaUJBQWlCLENBQUNDLEtBQW5CLEM7Ozs7Ozs7OztXQXhIWEMsOEIsR0FGQSx3Q0FFK0JDLGVBRi9CLEVBRWdFO0FBQy9ELFVBQU1DLE9BQU8sR0FBR0QsZUFBZSxDQUFDRSxPQUFoQixDQUF3QiwyQ0FBeEIsQ0FBaEI7QUFBQSxVQUNDQyxZQUFZLEdBQUdILGVBQWUsQ0FBQ0UsT0FBaEIsQ0FBd0IsMkNBQXhCLENBRGhCO0FBQUEsVUFFQ0UsWUFBWSxHQUFHSixlQUFlLENBQUNFLE9BQWhCLENBQXdCLGlEQUF4QixDQUZoQjtBQUFBLFVBR0NHLGtCQUFrQixHQUFHTCxlQUFlLENBQUNFLE9BQWhCLENBQXdCLHdEQUF4QixDQUh0QjtBQUtBLGFBQ0MsZ0JBQ0FELE9BREEsR0FFQSxpQkFGQSxHQUdBLEtBSEEsR0FJQUUsWUFKQSxHQUtBLFFBTEEsR0FNQSxNQU5BLEdBT0EsTUFQQSxHQVFBQyxZQVJBLEdBU0EsT0FUQSxHQVVBLE1BVkEsR0FXQUMsa0JBWEEsR0FZQSxPQVpBLEdBYUEsT0FkRDtBQWdCQSxLOztXQUVEQyxrQixHQUFBLDRCQUFtQkMsTUFBbkIsRUFBa0NDLFNBQWxDLEVBQXdEQyxpQkFBeEQsRUFBbUY7QUFBQTs7QUFDbEYsVUFBTUMsa0JBQWtCLEdBQUcsQ0FBQ0YsU0FBUyxJQUFJLEVBQWQsRUFBa0JHLE1BQTdDO0FBRUEsYUFBTyxJQUFJ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QUFBLFVBQ0NhLGlCQUFpQixHQUFHZCxxQkFBcUIsQ0FBQ0UsV0FBdEIsQ0FBa0MsbUJBQWxDLEtBQTBELEVBRC9FO0FBR0EsYUFBT3BDLE9BQU8sQ0FBQ0MsT0FBUixDQUFnQitDLGlCQUFoQixDQUFQO0FBQ0EsSzs7O0lBbElxQkMsbUIsb0ZBQ3JCQyxNLEVBQ0FDLEssaUxBMkZBRCxNLEVBQ0FDLEssdUtBNEJBQyxPO1NBV2F2RSxRIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29udHJvbGxlckV4dGVuc2lvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL0NvbnRyb2xsZXJFeHRlbnNpb25cIjtcbmltcG9ydCBPdmVycmlkZUV4ZWN1dGlvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL092ZXJyaWRlRXhlY3V0aW9uXCI7XG5pbXBvcnQgTWFzc0VkaXRIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTWFzc0VkaXRIZWxwZXJcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IFRhYmxlIGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5pbXBvcnQgeyBFeHRlbnNpYmxlLCBGaW5hbCwgUHJpdmF0ZSwgUHVibGljLCBVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IENvbnRyb2xsZXJFeHRlbnNpb25NZXRhZGF0YSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvQ29udHJvbGxlckV4dGVuc2lvbk1ldGFkYXRhXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIsIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IE1lc3NhZ2VCb3ggZnJvbSBcInNhcC9tL01lc3NhZ2VCb3hcIjtcbmltcG9ydCBSZXNvdXJjZUJ1bmRsZSBmcm9tIFwic2FwL2Jhc2UvaTE4bi9SZXNvdXJjZUJ1bmRsZVwiO1xuaW1wb3J0IENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgUmVzb3VyY2VNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL3Jlc291cmNlL1Jlc291cmNlTW9kZWxcIjtcbmltcG9ydCBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcblxuLyoqXG4gKiBAY2xhc3MgQ29udHJvbGxlciBleHRlbnNpb24gcHJvdmlkaW5nIGhvb2tzIGZvciB0aGUgbWFzcyBlZGl0IGluIGEgdGFibGVcbiAqXG4gKiBAbmFtZSBzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5NYXNzRWRpdFxuICogQGhpZGVjb25zdHJ1Y3RvclxuICogQHByaXZhdGVcbiAqL1xuQFVJNUNsYXNzKFwic2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuTWFzc0VkaXRcIiwgQ29udHJvbGxlckV4dGVuc2lvbk1ldGFkYXRhKVxuY2xhc3MgTWFzc0VkaXQgZXh0ZW5kcyBDb250cm9sbGVyRXh0ZW5zaW9uIHtcblx0QFB1YmxpY1xuXHRARmluYWxcblx0Z2V0TWVzc2FnZURldGFpbEZvck5vbkVkaXRhYmxlKG9SZXNvdXJjZUJ1bmRsZTogUmVzb3VyY2VCdW5kbGUpIHtcblx0XHRjb25zdCBzSGVhZGVyID0gb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX01BU1NfRURJVF9DT05GSVJNX01FU1NBR0VfREVUQUlMX0hFQURFUlwiKSxcblx0XHRcdHNSZWFzb25Hcm91cCA9IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19NQVNTX0VESVRfQ09ORklSTV9NRVNTQUdFX0RFVEFJTF9SRUFTT05cIiksXG5cdFx0XHRzUmVhc29uRHJhZnQgPSBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfTUFTU19FRElUX0NPTkZJUk1fTUVTU0FHRV9ERVRBSUxfUkVBU09OX0RSQUZUXCIpLFxuXHRcdFx0c1JlYXNvbk5vbkVkaXRhYmxlID0gb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX01BU1NfRURJVF9DT05GSVJNX01FU1NBR0VfREVUQUlMX1JFQVNPTl9OT05fRURJVEFCTEVcIik7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0XCI8cD48c3Ryb25nPlwiICtcblx0XHRcdHNIZWFkZXIgK1xuXHRcdFx0XCI8L3N0cm9uZz48L3A+XFxuXCIgK1xuXHRcdFx0XCI8cD5cIiArXG5cdFx0XHRzUmVhc29uR3JvdXAgK1xuXHRcdFx0XCI8L3A+XFxuXCIgK1xuXHRcdFx0XCI8dWw+XCIgK1xuXHRcdFx0XCI8bGk+XCIgK1xuXHRcdFx0c1JlYXNvbkRyYWZ0ICtcblx0XHRcdFwiPC9saT5cIiArXG5cdFx0XHRcIjxsaT5cIiArXG5cdFx0XHRzUmVhc29uTm9uRWRpdGFibGUgK1xuXHRcdFx0XCI8L2xpPlwiICtcblx0XHRcdFwiPC91bD5cIlxuXHRcdCk7XG5cdH1cblxuXHRfb3BlbkNvbmZpcm1EaWFsb2cob1RhYmxlOiBUYWJsZSwgYUNvbnRleHRzOiBDb250ZXh0W10sIGlTZWxlY3RlZENvbnRleHRzOiBudW1iZXIpIHtcblx0XHRjb25zdCBpVXBkYXRhYmxlQ29udGV4dHMgPSAoYUNvbnRleHRzIHx8IFtdKS5sZW5ndGg7XG5cblx0XHRyZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG5cdFx0XHQoKHRoaXMuZ2V0VmlldygpLmdldE1vZGVsKFwic2FwLmZlLmkxOG5cIikgYXMgUmVzb3VyY2VNb2RlbCkuZ2V0UmVzb3VyY2VCdW5kbGUoKSBhcyBQcm9taXNlPFJlc291cmNlQnVuZGxlPilcblx0XHRcdFx0LnRoZW4ob1Jlc291cmNlQnVuZGxlID0+IHtcblx0XHRcdFx0XHRjb25zdCBzRWRpdEJ1dHRvbiA9IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19NQVNTX0VESVRfQ09ORklSTV9CVVRUT05fVEVYVFwiKSxcblx0XHRcdFx0XHRcdHNDYW5jZWxCdXR0b24gPSBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfTUFTU19FRElUX0NBTkNFTF9CVVRUT05fVEVYVFwiKSxcblx0XHRcdFx0XHRcdGlOb25FZGl0YWJsZSA9IGlTZWxlY3RlZENvbnRleHRzIC0gaVVwZGF0YWJsZUNvbnRleHRzLFxuXHRcdFx0XHRcdFx0c01lc3NhZ2UgPSBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfTUFTU19FRElUX0NPTkZJUk1fTUVTU0FHRVwiLCBbXG5cdFx0XHRcdFx0XHRcdGlOb25FZGl0YWJsZSxcblx0XHRcdFx0XHRcdFx0aVNlbGVjdGVkQ29udGV4dHMsXG5cdFx0XHRcdFx0XHRcdGlVcGRhdGFibGVDb250ZXh0c1xuXHRcdFx0XHRcdFx0XSksXG5cdFx0XHRcdFx0XHRzUGF0aCA9IG9UYWJsZS5kYXRhKFwidGFyZ2V0Q29sbGVjdGlvblBhdGhcIiksXG5cdFx0XHRcdFx0XHRvTWV0YU1vZGVsID0gb1RhYmxlLmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCksXG5cdFx0XHRcdFx0XHRiSXNEcmFmdCA9IE1vZGVsSGVscGVyLmlzRHJhZnRTdXBwb3J0ZWQob01ldGFNb2RlbCwgc1BhdGgpLFxuXHRcdFx0XHRcdFx0YkRpc3BsYXlNb2RlID0gb1RhYmxlLmRhdGEoXCJkaXNwbGF5TW9kZVByb3BlcnR5QmluZGluZ1wiKSA9PT0gXCJ0cnVlXCIsXG5cdFx0XHRcdFx0XHRzTWVzc2FnZURldGFpbCA9IGJJc0RyYWZ0ICYmIGJEaXNwbGF5TW9kZSAmJiB0aGlzLmdldE1lc3NhZ2VEZXRhaWxGb3JOb25FZGl0YWJsZShvUmVzb3VyY2VCdW5kbGUpO1xuXG5cdFx0XHRcdFx0TWVzc2FnZUJveC53YXJuaW5nKHNNZXNzYWdlLCB7XG5cdFx0XHRcdFx0XHRkZXRhaWxzOiBzTWVzc2FnZURldGFpbCxcblx0XHRcdFx0XHRcdGFjdGlvbnM6IFtzRWRpdEJ1dHRvbiwgc0NhbmNlbEJ1dHRvbl0sXG5cdFx0XHRcdFx0XHRlbXBoYXNpemVkQWN0aW9uOiBzRWRpdEJ1dHRvbixcblx0XHRcdFx0XHRcdGNvbnRlbnRXaWR0aDogXCIxMDBweFwiLFxuXHRcdFx0XHRcdFx0b25DbG9zZTogZnVuY3Rpb24oc1NlbGVjdGlvbjogc3RyaW5nKSB7XG5cdFx0XHRcdFx0XHRcdGxldCBhQ29udGV4dHNGb3JFZGl0OiBhbnlbXSA9IFtdO1xuXHRcdFx0XHRcdFx0XHRpZiAoc1NlbGVjdGlvbiA9PT0gc0VkaXRCdXR0b24pIHtcblx0XHRcdFx0XHRcdFx0XHRMb2cuaW5mbyhcIk1hc3MgRWRpdDogQ29uZmlybWVkIHRvIGVkaXQgXCIsIGlVcGRhdGFibGVDb250ZXh0cy50b1N0cmluZygpLCBcIiBzZWxlY3Rpb25zLlwiKTtcblx0XHRcdFx0XHRcdFx0XHRhQ29udGV4dHNGb3JFZGl0ID0gYUNvbnRleHRzO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKHNTZWxlY3Rpb24gPT09IHNDYW5jZWxCdXR0b24pIHtcblx0XHRcdFx0XHRcdFx0XHRMb2cuaW5mbyhcIk1hc3MgRWRpdDogQ2FuY2VsbGVkLlwiKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKGFDb250ZXh0c0ZvckVkaXQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gYXMgYW55KTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7XG5cdFx0XHRcdFx0TG9nLmVycm9yKGVycm9yKTtcblx0XHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cblxuXHRfY29uZmlybUNvbnRleHRzKG9UYWJsZTogVGFibGUsIGFDb250ZXh0czogQ29udGV4dFtdKSB7XG5cdFx0Y29uc3Qgb0ludGVybmFsTW9kZWxDb250ZXh0ID0gb1RhYmxlLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdFx0XHRpU2VsZWN0ZWRDb250ZXh0cyA9ICtvSW50ZXJuYWxNb2RlbENvbnRleHQuZ2V0UHJvcGVydHkoXCJudW1iZXJPZlNlbGVjdGVkQ29udGV4dHNcIikgfHwgMDtcblxuXHRcdGFDb250ZXh0cyA9IGFDb250ZXh0cyB8fCBbXTtcblxuXHRcdGlmIChhQ29udGV4dHMubGVuZ3RoICYmIGFDb250ZXh0cy5sZW5ndGggIT09IGlTZWxlY3RlZENvbnRleHRzKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5fb3BlbkNvbmZpcm1EaWFsb2cob1RhYmxlLCBhQ29udGV4dHMsIGlTZWxlY3RlZENvbnRleHRzKTtcblx0XHR9XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShhQ29udGV4dHMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoZSBmb2xsb3dpbmcgb3BlcmF0aW9ucyBhcmUgcGVyZm9ybWVkIGJ5IG1ldGhvZCBvcGVuTWFzc0VkaXREaWFsb2c6XG5cdCAqID0+IE9wZW5zIHRoZSBtYXNzIGVkaXQgZGlhbG9nLlxuXHQgKiA9PiBJbXBsZW1lbnRzIHRoZSBzYXZlIGFuZCBjYW5jZWwgZnVuY3Rpb25hbGl0eS5cblx0ICogPT4gU2V0cyB0aGUgcnVudGltZSBtb2RlbCB0byB0aGUgZGlhbG9nLlxuXHQgKiA9PiBTZXRzIHRoZSBzdGF0aWMgbW9kZWwncyBjb250ZXh0IHRvIHRoZSBkaWFsb2cuXG5cdCAqXG5cdCAqIEBwYXJhbSB7c2FwLnVpLm1kYy5UYWJsZX0gb1RhYmxlIEluc3RhbmNlIG9mIHRoZSB0YWJsZVxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZX0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgb24gb3BlbiBvZiB0aGUgbWFzcyBlZGl0IGRpYWxvZy5cblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBQdWJsaWNcblx0QEZpbmFsXG5cdG9wZW5NYXNzRWRpdERpYWxvZyhvVGFibGU6IFRhYmxlKSB7XG5cdFx0Y29uc3Qgb0NvbnRyb2xsZXIgPSB0aGlzLmdldFZpZXcoKS5nZXRDb250cm9sbGVyKCkgYXMgUGFnZUNvbnRyb2xsZXIsXG5cdFx0XHRwQ29udGV4dHNGb3JFZGl0ID0gdGhpcy5mZXRjaENvbnRleHRzRm9yRWRpdChvVGFibGUpO1xuXG5cdFx0cmV0dXJuIHBDb250ZXh0c0ZvckVkaXRcblx0XHRcdC50aGVuKHRoaXMuX2NvbmZpcm1Db250ZXh0cy5iaW5kKHRoaXMsIG9UYWJsZSkpXG5cdFx0XHQudGhlbihmdW5jdGlvbihhQ29udGV4dHM6IGFueSkge1xuXHRcdFx0XHRyZXR1cm4gYUNvbnRleHRzICYmIGFDb250ZXh0cy5sZW5ndGggPiAwID8gTWFzc0VkaXRIZWxwZXIuY3JlYXRlRGlhbG9nKG9UYWJsZSwgYUNvbnRleHRzLCBvQ29udHJvbGxlcikgOiBQcm9taXNlLnJlc29sdmUoKTtcblx0XHRcdH0pXG5cdFx0XHQudGhlbihmdW5jdGlvbihvRGlhbG9nPzogYW55KSB7XG5cdFx0XHRcdGlmIChvRGlhbG9nKSB7XG5cdFx0XHRcdFx0b0RpYWxvZy5vcGVuKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24ob0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0TG9nLmVycm9yKFwiTWFzcyBFZGl0OiBTb21ldGhpbmcgd2VudCB3cm9uZyBpbiBtYXNzIGVkaXQgZGlhbG9nIGNyZWF0aW9uLlwiLCBvRXJyb3IpO1xuXHRcdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyBhIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgY29udGV4dHMgZm9yIG1hc3MgZWRpdC5cblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBwYXJhbSB7c2FwLnVpLm1kYy5UYWJsZX0gb1RhYmxlIFRhYmxlIGZvciBtYXNzIGVkaXQuXG5cdCAqIEBhbGlhcyBzYXAuZmUuY29yZS5jb250cmxsZXJleHRlbnNpb25zLk1hc3NFZGl0I2ZldGNoQ29udGV4dHNGb3JFZGl0XG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfSBBIHByb21pc2UgdG8gYmUgcmVzb2x2ZWQgd2l0aCBhbiBhcnJheSBvZiBjb250ZXh0KHMpIHdoaWNoIHNob3VsZCBiZSBjb25zaWRlcmVkIGZvciBtYXNzIGVkaXQuXG5cdCAqIEBwcml2YXRlXG5cdCAqKi9cblx0QFByaXZhdGVcblx0QEV4dGVuc2libGUoT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXIpXG5cdGZldGNoQ29udGV4dHNGb3JFZGl0KG9UYWJsZTogVGFibGUpIHtcblx0XHQvL1RvIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGFwcGxpY2F0aW9uXG5cdFx0Y29uc3Qgb0ludGVybmFsTW9kZWxDb250ZXh0ID0gb1RhYmxlLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdFx0XHRhU2VsZWN0ZWRDb250ZXh0cyA9IG9JbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQcm9wZXJ0eShcInVwZGF0YWJsZUNvbnRleHRzXCIpIHx8IFtdO1xuXG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShhU2VsZWN0ZWRDb250ZXh0cyk7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTWFzc0VkaXQ7XG4iXX0=
|
|
145
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1hc3NFZGl0LnRzIl0sIm5hbWVzIjpbIk1hc3NFZGl0IiwiZGVmaW5lVUk1Q2xhc3MiLCJwdWJsaWNFeHRlbnNpb24iLCJmaW5hbEV4dGVuc2lvbiIsInByaXZhdGVFeHRlbnNpb24iLCJleHRlbnNpYmxlIiwiT3ZlcnJpZGVFeGVjdXRpb24iLCJBZnRlciIsImdldE1lc3NhZ2VEZXRhaWxGb3JOb25FZGl0YWJsZSIsIm9SZXNvdXJjZUJ1bmRsZSIsInNIZWFkZXIiLCJnZXRUZXh0Iiwic1JlYXNvbkdyb3VwIiwic1JlYXNvbkRyYWZ0Iiwic1JlYXNvbk5vbkVkaXRhYmxlIiwiX29wZW5Db25maXJtRGlhbG9nIiwib1RhYmxlIiwiYUNvbnRleHRzIiwiaVNlbGVjdGVkQ29udGV4dHMiLCJpVXBkYXRhYmxlQ29udGV4dHMiLCJsZW5ndGgiLCJQcm9taXNlIiwicmVzb2x2ZSIsImdldFZpZXciLCJnZXRNb2RlbCIsImdldFJlc291cmNlQnVuZGxlIiwidGhlbiIsInNFZGl0QnV0dG9uIiwic0NhbmNlbEJ1dHRvbiIsImlOb25FZGl0YWJsZSIsInNNZXNzYWdlIiwic1BhdGgiLCJkYXRhIiwib01ldGFNb2RlbCIsImdldE1ldGFNb2RlbCIsImJJc0RyYWZ0IiwiTW9kZWxIZWxwZXIiLCJpc0RyYWZ0U3VwcG9ydGVkIiwiYkRpc3BsYXlNb2RlIiwic01lc3NhZ2VEZXRhaWwiLCJNZXNzYWdlQm94Iiwid2FybmluZyIsImRldGFpbHMiLCJhY3Rpb25zIiwiZW1waGFzaXplZEFjdGlvbiIsImNvbnRlbnRXaWR0aCIsIm9uQ2xvc2UiLCJzU2VsZWN0aW9uIiwiYUNvbnRleHRzRm9yRWRpdCIsIkxvZyIsImluZm8iLCJ0b1N0cmluZyIsImNhdGNoIiwiZXJyb3IiLCJfY29uZmlybUNvbnRleHRzIiwib0ludGVybmFsTW9kZWxDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJnZXRQcm9wZXJ0eSIsIm9wZW5NYXNzRWRpdERpYWxvZyIsIm9Db250cm9sbGVyIiwiZ2V0Q29udHJvbGxlciIsInBDb250ZXh0c0ZvckVkaXQiLCJmZXRjaENvbnRleHRzRm9yRWRpdCIsImJpbmQiLCJNYXNzRWRpdEhlbHBlciIsImNyZWF0ZURpYWxvZyIsIm9EaWFsb2ciLCJhZGREZXBlbmRlbnQiLCJvcGVuIiwib0Vycm9yIiwiYVNlbGVjdGVkQ29udGV4dHMiLCJDb250cm9sbGVyRXh0ZW5zaW9uIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtNQUVNQSxRLFdBRExDLGNBQWMsQ0FBQywyQ0FBRCxDLFVBRWJDLGVBQWUsRSxVQUNmQyxjQUFjLEUsVUEyRmRELGVBQWUsRSxVQUNmQyxjQUFjLEUsVUE2QmRDLGdCQUFnQixFLFVBQ2hCQyxVQUFVLENBQUNDLGlCQUFpQixDQUFDQyxLQUFuQixDOzs7Ozs7Ozs7V0F6SFhDLDhCLEdBRkEsd0NBRStCQyxlQUYvQixFQUVnRTtBQUMvRCxVQUFNQyxPQUFPLEdBQUdELGVBQWUsQ0FBQ0UsT0FBaEIsQ0FBd0IsMkNBQXhCLENBQWhCO0FBQUEsVUFDQ0MsWUFBWSxHQUFHSCxlQUFlLENBQUNFLE9BQWhCLENBQXdCLDJDQUF4QixDQURoQjtBQUFBLFVBRUNFLFlBQVksR0FBR0osZUFBZSxDQUFDRSxPQUFoQixDQUF3QixpREFBeEIsQ0FGaEI7QUFBQSxVQUdDRyxrQkFBa0IsR0FBR0wsZUFBZSxDQUFDRSxPQUFoQixDQUF3Qix3REFBeEIsQ0FIdEI7QUFLQSxhQUNDLGdCQUNBRCxPQURBLEdBRUEsaUJBRkEsR0FHQSxLQUhBLEdBSUFFLFlBSkEsR0FLQSxRQUxBLEdBTUEsTUFOQSxHQU9BLE1BUEEsR0FRQUMsWUFSQSxHQVNBLE9BVEEsR0FVQSxNQVZBLEdBV0FDLGtCQVhBLEdBWUEsT0FaQSxHQWFBLE9BZEQ7QUFnQkEsSzs7V0FFREMsa0IsR0FBQSw0QkFBbUJDLE1BQW5CLEVBQWtDQyxTQUFsQyxFQUF3REMsaUJBQXhELEVBQW1GO0FBQUE7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Q0E7QUFDQTtBQUNBOzs7V0FHQ1Asb0IsR0FGQSw4QkFFcUI5QyxNQUZyQixFQUVvQztBQUNuQztBQUNBLFVBQU11QyxxQkFBcUIsR0FBR3ZDLE1BQU0sQ0FBQ3dDLGlCQUFQLENBQXlCLFVBQXpCLENBQTlCO0FBQUEsVUFDQ2MsaUJBQWlCLEdBQUdmLHFCQUFxQixDQUFDRSxXQUF0QixDQUFrQyxtQkFBbEMsS0FBMEQsRUFEL0U7QUFHQSxhQUFPcEMsT0FBTyxDQUFDQyxPQUFSLENBQWdCZ0QsaUJBQWhCLENBQVA7QUFDQSxLOzs7SUFuSXFCQyxtQjtTQXNJUnZFLFEiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZXNvdXJjZUJ1bmRsZSBmcm9tIFwic2FwL2Jhc2UvaTE4bi9SZXNvdXJjZUJ1bmRsZVwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgZXh0ZW5zaWJsZSwgZmluYWxFeHRlbnNpb24sIHByaXZhdGVFeHRlbnNpb24sIHB1YmxpY0V4dGVuc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IE1hc3NFZGl0SGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01hc3NFZGl0SGVscGVyXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIsIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IE1lc3NhZ2VCb3ggZnJvbSBcInNhcC9tL01lc3NhZ2VCb3hcIjtcbmltcG9ydCBDb250cm9sbGVyRXh0ZW5zaW9uIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvQ29udHJvbGxlckV4dGVuc2lvblwiO1xuaW1wb3J0IE92ZXJyaWRlRXhlY3V0aW9uIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvT3ZlcnJpZGVFeGVjdXRpb25cIjtcbmltcG9ydCBUYWJsZSBmcm9tIFwic2FwL3VpL21kYy9UYWJsZVwiO1xuaW1wb3J0IENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgUmVzb3VyY2VNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL3Jlc291cmNlL1Jlc291cmNlTW9kZWxcIjtcblxuLyoqXG4gKiBAY2xhc3MgQ29udHJvbGxlciBleHRlbnNpb24gcHJvdmlkaW5nIGhvb2tzIGZvciB0aGUgbWFzcyBlZGl0IGluIGEgdGFibGVcbiAqXG4gKiBAbmFtZSBzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5NYXNzRWRpdFxuICogQGhpZGVjb25zdHJ1Y3RvclxuICogQHByaXZhdGVcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuTWFzc0VkaXRcIilcbmNsYXNzIE1hc3NFZGl0IGV4dGVuZHMgQ29udHJvbGxlckV4dGVuc2lvbiB7XG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRnZXRNZXNzYWdlRGV0YWlsRm9yTm9uRWRpdGFibGUob1Jlc291cmNlQnVuZGxlOiBSZXNvdXJjZUJ1bmRsZSkge1xuXHRcdGNvbnN0IHNIZWFkZXIgPSBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfTUFTU19FRElUX0NPTkZJUk1fTUVTU0FHRV9ERVRBSUxfSEVBREVSXCIpLFxuXHRcdFx0c1JlYXNvbkdyb3VwID0gb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX01BU1NfRURJVF9DT05GSVJNX01FU1NBR0VfREVUQUlMX1JFQVNPTlwiKSxcblx0XHRcdHNSZWFzb25EcmFmdCA9IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19NQVNTX0VESVRfQ09ORklSTV9NRVNTQUdFX0RFVEFJTF9SRUFTT05fRFJBRlRcIiksXG5cdFx0XHRzUmVhc29uTm9uRWRpdGFibGUgPSBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfTUFTU19FRElUX0NPTkZJUk1fTUVTU0FHRV9ERVRBSUxfUkVBU09OX05PTl9FRElUQUJMRVwiKTtcblxuXHRcdHJldHVybiAoXG5cdFx0XHRcIjxwPjxzdHJvbmc+XCIgK1xuXHRcdFx0c0hlYWRlciArXG5cdFx0XHRcIjwvc3Ryb25nPjwvcD5cXG5cIiArXG5cdFx0XHRcIjxwPlwiICtcblx0XHRcdHNSZWFzb25Hcm91cCArXG5cdFx0XHRcIjwvcD5cXG5cIiArXG5cdFx0XHRcIjx1bD5cIiArXG5cdFx0XHRcIjxsaT5cIiArXG5cdFx0XHRzUmVhc29uRHJhZnQgK1xuXHRcdFx0XCI8L2xpPlwiICtcblx0XHRcdFwiPGxpPlwiICtcblx0XHRcdHNSZWFzb25Ob25FZGl0YWJsZSArXG5cdFx0XHRcIjwvbGk+XCIgK1xuXHRcdFx0XCI8L3VsPlwiXG5cdFx0KTtcblx0fVxuXG5cdF9vcGVuQ29uZmlybURpYWxvZyhvVGFibGU6IFRhYmxlLCBhQ29udGV4dHM6IENvbnRleHRbXSwgaVNlbGVjdGVkQ29udGV4dHM6IG51bWJlcikge1xuXHRcdGNvbnN0IGlVcGRhdGFibGVDb250ZXh0cyA9IChhQ29udGV4dHMgfHwgW10pLmxlbmd0aDtcblxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuXHRcdFx0KCh0aGlzLmdldFZpZXcoKS5nZXRNb2RlbChcInNhcC5mZS5pMThuXCIpIGFzIFJlc291cmNlTW9kZWwpLmdldFJlc291cmNlQnVuZGxlKCkgYXMgUHJvbWlzZTxSZXNvdXJjZUJ1bmRsZT4pXG5cdFx0XHRcdC50aGVuKChvUmVzb3VyY2VCdW5kbGUpID0+IHtcblx0XHRcdFx0XHRjb25zdCBzRWRpdEJ1dHRvbiA9IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19NQVNTX0VESVRfQ09ORklSTV9CVVRUT05fVEVYVFwiKSxcblx0XHRcdFx0XHRcdHNDYW5jZWxCdXR0b24gPSBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfTUFTU19FRElUX0NBTkNFTF9CVVRUT05fVEVYVFwiKSxcblx0XHRcdFx0XHRcdGlOb25FZGl0YWJsZSA9IGlTZWxlY3RlZENvbnRleHRzIC0gaVVwZGF0YWJsZUNvbnRleHRzLFxuXHRcdFx0XHRcdFx0c01lc3NhZ2UgPSBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfTUFTU19FRElUX0NPTkZJUk1fTUVTU0FHRVwiLCBbXG5cdFx0XHRcdFx0XHRcdGlOb25FZGl0YWJsZSxcblx0XHRcdFx0XHRcdFx0aVNlbGVjdGVkQ29udGV4dHMsXG5cdFx0XHRcdFx0XHRcdGlVcGRhdGFibGVDb250ZXh0c1xuXHRcdFx0XHRcdFx0XSksXG5cdFx0XHRcdFx0XHRzUGF0aCA9IG9UYWJsZS5kYXRhKFwidGFyZ2V0Q29sbGVjdGlvblBhdGhcIiksXG5cdFx0XHRcdFx0XHRvTWV0YU1vZGVsID0gb1RhYmxlLmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCksXG5cdFx0XHRcdFx0XHRiSXNEcmFmdCA9IE1vZGVsSGVscGVyLmlzRHJhZnRTdXBwb3J0ZWQob01ldGFNb2RlbCwgc1BhdGgpLFxuXHRcdFx0XHRcdFx0YkRpc3BsYXlNb2RlID0gb1RhYmxlLmRhdGEoXCJkaXNwbGF5TW9kZVByb3BlcnR5QmluZGluZ1wiKSA9PT0gXCJ0cnVlXCIsXG5cdFx0XHRcdFx0XHRzTWVzc2FnZURldGFpbCA9IGJJc0RyYWZ0ICYmIGJEaXNwbGF5TW9kZSAmJiB0aGlzLmdldE1lc3NhZ2VEZXRhaWxGb3JOb25FZGl0YWJsZShvUmVzb3VyY2VCdW5kbGUpO1xuXG5cdFx0XHRcdFx0TWVzc2FnZUJveC53YXJuaW5nKHNNZXNzYWdlLCB7XG5cdFx0XHRcdFx0XHRkZXRhaWxzOiBzTWVzc2FnZURldGFpbCxcblx0XHRcdFx0XHRcdGFjdGlvbnM6IFtzRWRpdEJ1dHRvbiwgc0NhbmNlbEJ1dHRvbl0sXG5cdFx0XHRcdFx0XHRlbXBoYXNpemVkQWN0aW9uOiBzRWRpdEJ1dHRvbixcblx0XHRcdFx0XHRcdGNvbnRlbnRXaWR0aDogXCIxMDBweFwiLFxuXHRcdFx0XHRcdFx0b25DbG9zZTogZnVuY3Rpb24gKHNTZWxlY3Rpb246IHN0cmluZykge1xuXHRcdFx0XHRcdFx0XHRsZXQgYUNvbnRleHRzRm9yRWRpdDogYW55W10gPSBbXTtcblx0XHRcdFx0XHRcdFx0aWYgKHNTZWxlY3Rpb24gPT09IHNFZGl0QnV0dG9uKSB7XG5cdFx0XHRcdFx0XHRcdFx0TG9nLmluZm8oXCJNYXNzIEVkaXQ6IENvbmZpcm1lZCB0byBlZGl0IFwiLCBpVXBkYXRhYmxlQ29udGV4dHMudG9TdHJpbmcoKSwgXCIgc2VsZWN0aW9ucy5cIik7XG5cdFx0XHRcdFx0XHRcdFx0YUNvbnRleHRzRm9yRWRpdCA9IGFDb250ZXh0cztcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChzU2VsZWN0aW9uID09PSBzQ2FuY2VsQnV0dG9uKSB7XG5cdFx0XHRcdFx0XHRcdFx0TG9nLmluZm8oXCJNYXNzIEVkaXQ6IENhbmNlbGxlZC5cIik7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShhQ29udGV4dHNGb3JFZGl0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9IGFzIGFueSk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcblx0XHRcdFx0XHRMb2cuZXJyb3IoZXJyb3IpO1xuXHRcdFx0XHR9KTtcblx0XHR9KTtcblx0fVxuXG5cdF9jb25maXJtQ29udGV4dHMob1RhYmxlOiBUYWJsZSwgYUNvbnRleHRzOiBDb250ZXh0W10pIHtcblx0XHRjb25zdCBvSW50ZXJuYWxNb2RlbENvbnRleHQgPSBvVGFibGUuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dCxcblx0XHRcdGlTZWxlY3RlZENvbnRleHRzID0gK29JbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQcm9wZXJ0eShcIm51bWJlck9mU2VsZWN0ZWRDb250ZXh0c1wiKSB8fCAwO1xuXG5cdFx0YUNvbnRleHRzID0gYUNvbnRleHRzIHx8IFtdO1xuXG5cdFx0aWYgKGFDb250ZXh0cy5sZW5ndGggJiYgYUNvbnRleHRzLmxlbmd0aCAhPT0gaVNlbGVjdGVkQ29udGV4dHMpIHtcblx0XHRcdHJldHVybiB0aGlzLl9vcGVuQ29uZmlybURpYWxvZyhvVGFibGUsIGFDb250ZXh0cywgaVNlbGVjdGVkQ29udGV4dHMpO1xuXHRcdH1cblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGFDb250ZXh0cyk7XG5cdH1cblxuXHQvKipcblx0ICogVGhlIGZvbGxvd2luZyBvcGVyYXRpb25zIGFyZSBwZXJmb3JtZWQgYnkgbWV0aG9kIG9wZW5NYXNzRWRpdERpYWxvZzpcblx0ICogPT4gT3BlbnMgdGhlIG1hc3MgZWRpdCBkaWFsb2cuXG5cdCAqID0+IEltcGxlbWVudHMgdGhlIHNhdmUgYW5kIGNhbmNlbCBmdW5jdGlvbmFsaXR5LlxuXHQgKiA9PiBTZXRzIHRoZSBydW50aW1lIG1vZGVsIHRvIHRoZSBkaWFsb2cuXG5cdCAqID0+IFNldHMgdGhlIHN0YXRpYyBtb2RlbCdzIGNvbnRleHQgdG8gdGhlIGRpYWxvZy5cblx0ICpcblx0ICogQHBhcmFtIHtzYXAudWkubWRjLlRhYmxlfSBvVGFibGUgSW5zdGFuY2Ugb2YgdGhlIHRhYmxlXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyBvbiBvcGVuIG9mIHRoZSBtYXNzIGVkaXQgZGlhbG9nLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdG9wZW5NYXNzRWRpdERpYWxvZyhvVGFibGU6IFRhYmxlKSB7XG5cdFx0Y29uc3Qgb0NvbnRyb2xsZXIgPSB0aGlzLmdldFZpZXcoKS5nZXRDb250cm9sbGVyKCkgYXMgUGFnZUNvbnRyb2xsZXIsXG5cdFx0XHRwQ29udGV4dHNGb3JFZGl0ID0gdGhpcy5mZXRjaENvbnRleHRzRm9yRWRpdChvVGFibGUpO1xuXG5cdFx0cmV0dXJuIHBDb250ZXh0c0ZvckVkaXRcblx0XHRcdC50aGVuKHRoaXMuX2NvbmZpcm1Db250ZXh0cy5iaW5kKHRoaXMsIG9UYWJsZSkpXG5cdFx0XHQudGhlbihmdW5jdGlvbiAoYUNvbnRleHRzOiBhbnkpIHtcblx0XHRcdFx0cmV0dXJuIGFDb250ZXh0cyAmJiBhQ29udGV4dHMubGVuZ3RoID4gMCA/IE1hc3NFZGl0SGVscGVyLmNyZWF0ZURpYWxvZyhvVGFibGUsIGFDb250ZXh0cywgb0NvbnRyb2xsZXIpIDogUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oZnVuY3Rpb24gKG9EaWFsb2c/OiBhbnkpIHtcblx0XHRcdFx0aWYgKG9EaWFsb2cpIHtcblx0XHRcdFx0XHRvVGFibGUuYWRkRGVwZW5kZW50KG9EaWFsb2cpO1xuXHRcdFx0XHRcdG9EaWFsb2cub3BlbigpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChvRXJyb3I6IGFueSkge1xuXHRcdFx0XHRMb2cuZXJyb3IoXCJNYXNzIEVkaXQ6IFNvbWV0aGluZyB3ZW50IHdyb25nIGluIG1hc3MgZWRpdCBkaWFsb2cgY3JlYXRpb24uXCIsIG9FcnJvcik7XG5cdFx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBjb250ZXh0cyBmb3IgbWFzcyBlZGl0LlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQHBhcmFtIHtzYXAudWkubWRjLlRhYmxlfSBvVGFibGUgVGFibGUgZm9yIG1hc3MgZWRpdC5cblx0ICogQGFsaWFzIHNhcC5mZS5jb3JlLmNvbnRybGxlcmV4dGVuc2lvbnMuTWFzc0VkaXQjZmV0Y2hDb250ZXh0c0ZvckVkaXRcblx0ICogQHJldHVybnMge1Byb21pc2V9IEEgcHJvbWlzZSB0byBiZSByZXNvbHZlZCB3aXRoIGFuIGFycmF5IG9mIGNvbnRleHQocykgd2hpY2ggc2hvdWxkIGJlIGNvbnNpZGVyZWQgZm9yIG1hc3MgZWRpdC5cblx0ICogQHByaXZhdGVcblx0ICoqL1xuXHRAcHJpdmF0ZUV4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKE92ZXJyaWRlRXhlY3V0aW9uLkFmdGVyKVxuXHRmZXRjaENvbnRleHRzRm9yRWRpdChvVGFibGU6IFRhYmxlKSB7XG5cdFx0Ly9UbyBiZSBvdmVycmlkZGVuIGJ5IHRoZSBhcHBsaWNhdGlvblxuXHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsQ29udGV4dCA9IG9UYWJsZS5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0LFxuXHRcdFx0YVNlbGVjdGVkQ29udGV4dHMgPSBvSW50ZXJuYWxNb2RlbENvbnRleHQuZ2V0UHJvcGVydHkoXCJ1cGRhdGFibGVDb250ZXh0c1wiKSB8fCBbXTtcblxuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoYVNlbGVjdGVkQ29udGV4dHMpO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE1hc3NFZGl0O1xuIl19
|
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import
|
|
2
|
-
import OverrideExecution from "sap/ui/core/mvc/OverrideExecution";
|
|
3
|
-
import MassEditHelper from "sap/fe/core/helpers/MassEditHelper";
|
|
1
|
+
import ResourceBundle from "sap/base/i18n/ResourceBundle";
|
|
4
2
|
import Log from "sap/base/Log";
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import ControllerExtensionMetadata from "sap/fe/core/controllerextensions/ControllerExtensionMetadata";
|
|
3
|
+
import { defineUI5Class, extensible, finalExtension, privateExtension, publicExtension } from "sap/fe/core/helpers/ClassSupport";
|
|
4
|
+
import MassEditHelper from "sap/fe/core/helpers/MassEditHelper";
|
|
8
5
|
import ModelHelper, { InternalModelContext } from "sap/fe/core/helpers/ModelHelper";
|
|
6
|
+
import PageController from "sap/fe/core/PageController";
|
|
9
7
|
import MessageBox from "sap/m/MessageBox";
|
|
10
|
-
import
|
|
8
|
+
import ControllerExtension from "sap/ui/core/mvc/ControllerExtension";
|
|
9
|
+
import OverrideExecution from "sap/ui/core/mvc/OverrideExecution";
|
|
10
|
+
import Table from "sap/ui/mdc/Table";
|
|
11
11
|
import Context from "sap/ui/model/Context";
|
|
12
12
|
import ResourceModel from "sap/ui/model/resource/ResourceModel";
|
|
13
|
-
import PageController from "sap/fe/core/PageController";
|
|
14
13
|
|
|
15
14
|
/**
|
|
16
15
|
* @class Controller extension providing hooks for the mass edit in a table
|
|
@@ -19,10 +18,10 @@ import PageController from "sap/fe/core/PageController";
|
|
|
19
18
|
* @hideconstructor
|
|
20
19
|
* @private
|
|
21
20
|
*/
|
|
22
|
-
@
|
|
21
|
+
@defineUI5Class("sap.fe.core.controllerextensions.MassEdit")
|
|
23
22
|
class MassEdit extends ControllerExtension {
|
|
24
|
-
@
|
|
25
|
-
@
|
|
23
|
+
@publicExtension()
|
|
24
|
+
@finalExtension()
|
|
26
25
|
getMessageDetailForNonEditable(oResourceBundle: ResourceBundle) {
|
|
27
26
|
const sHeader = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_MESSAGE_DETAIL_HEADER"),
|
|
28
27
|
sReasonGroup = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_MESSAGE_DETAIL_REASON"),
|
|
@@ -50,9 +49,9 @@ class MassEdit extends ControllerExtension {
|
|
|
50
49
|
_openConfirmDialog(oTable: Table, aContexts: Context[], iSelectedContexts: number) {
|
|
51
50
|
const iUpdatableContexts = (aContexts || []).length;
|
|
52
51
|
|
|
53
|
-
return new Promise(resolve => {
|
|
52
|
+
return new Promise((resolve) => {
|
|
54
53
|
((this.getView().getModel("sap.fe.i18n") as ResourceModel).getResourceBundle() as Promise<ResourceBundle>)
|
|
55
|
-
.then(oResourceBundle => {
|
|
54
|
+
.then((oResourceBundle) => {
|
|
56
55
|
const sEditButton = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_BUTTON_TEXT"),
|
|
57
56
|
sCancelButton = oResourceBundle.getText("C_MASS_EDIT_CANCEL_BUTTON_TEXT"),
|
|
58
57
|
iNonEditable = iSelectedContexts - iUpdatableContexts,
|
|
@@ -72,7 +71,7 @@ class MassEdit extends ControllerExtension {
|
|
|
72
71
|
actions: [sEditButton, sCancelButton],
|
|
73
72
|
emphasizedAction: sEditButton,
|
|
74
73
|
contentWidth: "100px",
|
|
75
|
-
onClose: function(sSelection: string) {
|
|
74
|
+
onClose: function (sSelection: string) {
|
|
76
75
|
let aContextsForEdit: any[] = [];
|
|
77
76
|
if (sSelection === sEditButton) {
|
|
78
77
|
Log.info("Mass Edit: Confirmed to edit ", iUpdatableContexts.toString(), " selections.");
|
|
@@ -84,7 +83,7 @@ class MassEdit extends ControllerExtension {
|
|
|
84
83
|
}
|
|
85
84
|
} as any);
|
|
86
85
|
})
|
|
87
|
-
.catch(function(error) {
|
|
86
|
+
.catch(function (error) {
|
|
88
87
|
Log.error(error);
|
|
89
88
|
});
|
|
90
89
|
});
|
|
@@ -113,23 +112,24 @@ class MassEdit extends ControllerExtension {
|
|
|
113
112
|
* @returns {Promise} A promise that resolves on open of the mass edit dialog.
|
|
114
113
|
* @private
|
|
115
114
|
*/
|
|
116
|
-
@
|
|
117
|
-
@
|
|
115
|
+
@publicExtension()
|
|
116
|
+
@finalExtension()
|
|
118
117
|
openMassEditDialog(oTable: Table) {
|
|
119
118
|
const oController = this.getView().getController() as PageController,
|
|
120
119
|
pContextsForEdit = this.fetchContextsForEdit(oTable);
|
|
121
120
|
|
|
122
121
|
return pContextsForEdit
|
|
123
122
|
.then(this._confirmContexts.bind(this, oTable))
|
|
124
|
-
.then(function(aContexts: any) {
|
|
123
|
+
.then(function (aContexts: any) {
|
|
125
124
|
return aContexts && aContexts.length > 0 ? MassEditHelper.createDialog(oTable, aContexts, oController) : Promise.resolve();
|
|
126
125
|
})
|
|
127
|
-
.then(function(oDialog?: any) {
|
|
126
|
+
.then(function (oDialog?: any) {
|
|
128
127
|
if (oDialog) {
|
|
128
|
+
oTable.addDependent(oDialog);
|
|
129
129
|
oDialog.open();
|
|
130
130
|
}
|
|
131
131
|
})
|
|
132
|
-
.catch(function(oError: any) {
|
|
132
|
+
.catch(function (oError: any) {
|
|
133
133
|
Log.error("Mass Edit: Something went wrong in mass edit dialog creation.", oError);
|
|
134
134
|
});
|
|
135
135
|
}
|
|
@@ -142,8 +142,8 @@ class MassEdit extends ControllerExtension {
|
|
|
142
142
|
* @returns {Promise} A promise to be resolved with an array of context(s) which should be considered for mass edit.
|
|
143
143
|
* @private
|
|
144
144
|
**/
|
|
145
|
-
@
|
|
146
|
-
@
|
|
145
|
+
@privateExtension()
|
|
146
|
+
@extensible(OverrideExecution.After)
|
|
147
147
|
fetchContextsForEdit(oTable: Table) {
|
|
148
148
|
//To be overridden by the application
|
|
149
149
|
const oInternalModelContext = oTable.getBindingContext("internal") as InternalModelContext,
|
|
@@ -2,18 +2,18 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/
|
|
5
|
+
sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/controllerextensions/messageHandler/messageHandling", "sap/fe/core/helpers/ClassSupport", "sap/ui/core/Core", "sap/ui/core/mvc/ControllerExtension", "sap/ui/core/mvc/OverrideExecution"], function (CommonUtils, messageHandling, ClassSupport, Core, ControllerExtension, OverrideExecution) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
var _dec, _dec2, _class, _class2;
|
|
8
|
+
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _class, _class2;
|
|
9
9
|
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
var
|
|
13
|
-
var
|
|
14
|
-
var
|
|
10
|
+
var publicExtension = ClassSupport.publicExtension;
|
|
11
|
+
var privateExtension = ClassSupport.privateExtension;
|
|
12
|
+
var finalExtension = ClassSupport.finalExtension;
|
|
13
|
+
var extensible = ClassSupport.extensible;
|
|
14
|
+
var defineUI5Class = ClassSupport.defineUI5Class;
|
|
15
15
|
|
|
16
|
-
function
|
|
16
|
+
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
|
|
17
17
|
|
|
18
18
|
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
19
19
|
|
|
@@ -27,8 +27,8 @@ sap.ui.define(["sap/ui/core/mvc/ControllerExtension", "sap/ui/core/mvc/OverrideE
|
|
|
27
27
|
* @experimental As of version 1.90.0
|
|
28
28
|
* @since 1.90.0
|
|
29
29
|
*/
|
|
30
|
-
var MessageHandler = (_dec =
|
|
31
|
-
|
|
30
|
+
var MessageHandler = (_dec = defineUI5Class("sap.fe.core.controllerextensions.MessageHandler"), _dec2 = privateExtension(), _dec3 = extensible(OverrideExecution.Instead), _dec4 = publicExtension(), _dec5 = finalExtension(), _dec6 = publicExtension(), _dec7 = publicExtension(), _dec8 = finalExtension(), _dec(_class = (_class2 = /*#__PURE__*/function (_ControllerExtension) {
|
|
31
|
+
_inheritsLoose(MessageHandler, _ControllerExtension);
|
|
32
32
|
|
|
33
33
|
function MessageHandler() {
|
|
34
34
|
return _ControllerExtension.apply(this, arguments) || this;
|
|
@@ -36,18 +36,6 @@ sap.ui.define(["sap/ui/core/mvc/ControllerExtension", "sap/ui/core/mvc/OverrideE
|
|
|
36
36
|
|
|
37
37
|
var _proto = MessageHandler.prototype;
|
|
38
38
|
|
|
39
|
-
/**
|
|
40
|
-
* @private
|
|
41
|
-
* @name sap.fe.core.controllerextensions.MessageHandler.getMetadata
|
|
42
|
-
* @function
|
|
43
|
-
*/
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* @private
|
|
47
|
-
* @name sap.fe.core.controllerextensions.MessageHandler.extend
|
|
48
|
-
* @function
|
|
49
|
-
*/
|
|
50
|
-
|
|
51
39
|
/**
|
|
52
40
|
* Determines whether or not bound messages are shown in the message dialog.
|
|
53
41
|
*
|
|
@@ -102,7 +90,7 @@ sap.ui.define(["sap/ui/core/mvc/ControllerExtension", "sap/ui/core/mvc/OverrideE
|
|
|
102
90
|
// we have to set a timeout to be able to access the most recent messages
|
|
103
91
|
setTimeout(function () {
|
|
104
92
|
// TODO: great API - will be changed later
|
|
105
|
-
messageHandling.showUnboundMessages(customMessages, oBindingContext, bEtagMessage, bShowBoundMessages).then(resolve).catch(reject);
|
|
93
|
+
messageHandling.showUnboundMessages(customMessages, oBindingContext, bEtagMessage, bShowBoundMessages, mParameters === null || mParameters === void 0 ? void 0 : mParameters.errorTargetsInAPM).then(resolve).catch(reject);
|
|
106
94
|
}, 0);
|
|
107
95
|
});
|
|
108
96
|
}
|
|
@@ -213,7 +201,7 @@ sap.ui.define(["sap/ui/core/mvc/ControllerExtension", "sap/ui/core/mvc/OverrideE
|
|
|
213
201
|
// TODO: Return value needs to provided but since this function is private for now hence we can skip this.
|
|
214
202
|
|
|
215
203
|
this.removeTransitionMessages();
|
|
216
|
-
var oResourceBundle =
|
|
204
|
+
var oResourceBundle = Core.getLibraryResourceBundle("sap.fe.core");
|
|
217
205
|
|
|
218
206
|
if (this.base._routing) {
|
|
219
207
|
return new Promise(function (resolve, reject) {
|
|
@@ -231,7 +219,7 @@ sap.ui.define(["sap/ui/core/mvc/ControllerExtension", "sap/ui/core/mvc/OverrideE
|
|
|
231
219
|
};
|
|
232
220
|
|
|
233
221
|
return MessageHandler;
|
|
234
|
-
}(ControllerExtension), (_applyDecoratedDescriptor(_class2.prototype, "getShowBoundMessagesInMessageDialog", [
|
|
222
|
+
}(ControllerExtension), (_applyDecoratedDescriptor(_class2.prototype, "getShowBoundMessagesInMessageDialog", [_dec2, _dec3], Object.getOwnPropertyDescriptor(_class2.prototype, "getShowBoundMessagesInMessageDialog"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "showMessageDialog", [_dec4, _dec5], Object.getOwnPropertyDescriptor(_class2.prototype, "showMessageDialog"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "removeTransitionMessages", [_dec6], Object.getOwnPropertyDescriptor(_class2.prototype, "removeTransitionMessages"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "showMessages", [_dec7, _dec8], Object.getOwnPropertyDescriptor(_class2.prototype, "showMessages"), _class2.prototype)), _class2)) || _class);
|
|
235
223
|
return MessageHandler;
|
|
236
224
|
}, false);
|
|
237
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1lc3NhZ2VIYW5kbGVyLnRzIl0sIm5hbWVzIjpbIk1lc3NhZ2VIYW5kbGVyIiwiVUk1Q2xhc3MiLCJDb250cm9sbGVyRXh0ZW5zaW9uTWV0YWRhdGEiLCJFeHRlbnNpYmxlIiwiT3ZlcnJpZGVFeGVjdXRpb24iLCJJbnN0ZWFkIiwiZ2V0U2hvd0JvdW5kTWVzc2FnZXNJbk1lc3NhZ2VEaWFsb2ciLCJzaG93TWVzc2FnZURpYWxvZyIsIm1QYXJhbWV0ZXJzIiwiY3VzdG9tTWVzc2FnZXMiLCJ1bmRlZmluZWQiLCJvT1BJbnRlcm5hbEJpbmRpbmdDb250ZXh0IiwiYmFzZSIsImdldFZpZXciLCJnZXRCaW5kaW5nQ29udGV4dCIsImlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nT3BlbiIsInNldFByb3BlcnR5IiwiYlNob3dCb3VuZE1lc3NhZ2VzIiwib0JpbmRpbmdDb250ZXh0IiwiY29udGV4dCIsImJFdGFnTWVzc2FnZSIsImJIYXNFdGFnTWVzc2FnZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0Iiwic2V0VGltZW91dCIsIm1lc3NhZ2VIYW5kbGluZyIsInNob3dVbmJvdW5kTWVzc2FnZXMiLCJ0aGVuIiwiY2F0Y2giLCJyZW1vdmVUcmFuc2l0aW9uTWVzc2FnZXMiLCJrZWVwQm91bmRNZXNzYWdlIiwicmVtb3ZlQm91bmRUcmFuc2l0aW9uTWVzc2FnZXMiLCJyZW1vdmVVbmJvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzIiwiX2NoZWNrTmF2aWdhdGlvblRvTWVzc2FnZVBhZ2UiLCJhVW5ib3VuZE1lc3NhZ2VzIiwiZ2V0TWVzc2FnZXMiLCJiU2hvd0JvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzIiwiYUJvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzIiwiYUN1c3RvbU1lc3NhZ2VzIiwiYklzU3RpY2t5RWRpdE1vZGUiLCJDb21tb25VdGlscyIsImlzU3RpY2t5RWRpdE1vZGUiLCJtTWVzc2FnZVBhZ2VQYXJhbWV0ZXJzIiwiaXNEYXRhUmVjZWl2ZWRFcnJvciIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJuYXZpZ2F0ZUJhY2tUb09yaWdpbiIsImxlbmd0aCIsImlzSW5pdGlhbExvYWQ1MDNFcnJvciIsIm9NZXNzYWdlIiwib1RlY2huaWNhbERldGFpbHMiLCJnZXRUZWNobmljYWxEZXRhaWxzIiwic1JldHJ5QWZ0ZXJNZXNzYWdlIiwiaHR0cFN0YXR1cyIsInJldHJ5QWZ0ZXIiLCJpU2Vjb25kc0JlZm9yZVJldHJ5IiwiX2dldFNlY29uZHNCZWZvcmVSZXRyeUFmdGVyIiwiZ2V0UmV0cnlBZnRlck1lc3NhZ2UiLCJnZXRNZXNzYWdlIiwiZFJldHJ5QWZ0ZXIiLCJkQ3VycmVudERhdGVUaW1lIiwiRGF0ZSIsImlDdXJyZW50RGF0ZVRpbWVJbk1pbGxpU2Vjb25kcyIsImdldFRpbWUiLCJpUmV0cnlBZnRlckRhdGVUaW1lSW5NaWxsaVNlY29uZHMiLCJzaG93TWVzc2FnZXMiLCJvQXBwQ29tcG9uZW50IiwiZ2V0QXBwQ29tcG9uZW50IiwiX2lzRmNsRW5hYmxlZCIsIm1lc3NhZ2VQYWdlTmF2aWdhdGlvbkNhbGxiYWNrIiwiaGFuZGxlU2hlbGxCYWNrIiwic2hlbGxCYWNrIiwib1Jlc291cmNlQnVuZGxlIiwic2FwIiwidWkiLCJnZXRDb3JlIiwiZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlIiwiX3JvdXRpbmciLCJuYXZpZ2F0ZVRvTWVzc2FnZVBhZ2UiLCJnZXRUZXh0IiwiQ29udHJvbGxlckV4dGVuc2lvbiIsIlByaXZhdGUiLCJQdWJsaWMiLCJGaW5hbCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtNQUVNQSxjLFdBRExDLFFBQVEsQ0FBQyxpREFBRCxFQUFvREMsMkJBQXBELEMsVUEwQlBDLFVBQVUsQ0FBQ0MsaUJBQWlCLENBQUNDLE9BQW5CLEM7Ozs7Ozs7OztBQXhCWDtBQUNEO0FBQ0E7QUFDQTtBQUNBOztBQUNDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7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LDZCQUFaLEVBQTVEO0FBRUEzQixRQUFBQSxzQkFBc0IsQ0FBQzRCLGVBQXZCLEdBQXlDLEVBQUUvRCxXQUFXLElBQUlBLFdBQVcsQ0FBQ2dFLFNBQTdCLENBQXpDLENBTDJCLENBTTNCO0FBQ0E7O0FBQ0EsYUFBSzFDLHdCQUFMO0FBQ0EsWUFBTTJDLGVBQWUsR0FBR0MsR0FBRyxDQUFDQyxFQUFKLENBQU9DLE9BQVAsR0FBaUJDLHdCQUFqQixDQUEwQyxhQUExQyxDQUF4Qjs7QUFDQSxZQUFJLEtBQUtqRSxJQUFMLENBQVVrRSxRQUFkLEVBQXdCO0FBQ3ZCLGlCQUFPLElBQUl4RCxPQUFKLENBQVksVUFBQ0MsT0FBRCxFQUFlQyxNQUFmLEVBQStCO0FBQ2pEO0FBQ0FDLFlBQUFBLFVBQVUsQ0FBQyxZQUFNO0FBQ2hCO0FBQ0EsY0FBQSxLQUFJLENBQUNiLElBQUwsQ0FBVWtFLFFBQVYsQ0FDRUMscUJBREYsQ0FFRXZFLFdBQVcsSUFBSUEsV0FBVyxDQUFDb0MsbUJBQTNCLEdBQ0c2QixlQUFlLENBQUNPLE9BQWhCLENBQXdCLG9DQUF4QixDQURILEdBRUdQLGVBQWUsQ0FBQ08sT0FBaEIsQ0FBd0Isb0NBQXhCLENBSkwsRUFLRXJDLHNCQUxGLEVBT0VmLElBUEYsQ0FPT0wsT0FQUCxFQVFFTSxLQVJGLENBUVFMLE1BUlI7QUFTQSxhQVhTLEVBV1AsQ0FYTyxDQUFWO0FBWUEsV0FkTSxDQUFQO0FBZUE7QUFDRCxPQTNCRCxNQTJCTztBQUNOO0FBQ0EsZUFBTyxLQUFLakIsaUJBQUwsQ0FBdUJDLFdBQXZCLENBQVA7QUFDQTtBQUNELEs7OztJQTNNMkJ5RSxtQix5RkF3QjNCQyxPLDRMQXNCQUMsTSxFQUNBQyxLLDBLQXFDQUQsTSxxS0FnRkFBLE0sRUFDQUMsSztTQXdDYXBGLGMiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb250cm9sbGVyRXh0ZW5zaW9uIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvQ29udHJvbGxlckV4dGVuc2lvblwiO1xuaW1wb3J0IE92ZXJyaWRlRXhlY3V0aW9uIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvT3ZlcnJpZGVFeGVjdXRpb25cIjtcbmltcG9ydCBtZXNzYWdlSGFuZGxpbmcgZnJvbSBcInNhcC9mZS9jb3JlL2FjdGlvbnMvbWVzc2FnZUhhbmRsaW5nXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgQ29udHJvbGxlckV4dGVuc2lvbk1ldGFkYXRhIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9Db250cm9sbGVyRXh0ZW5zaW9uTWV0YWRhdGFcIjtcbmltcG9ydCB7IEV4dGVuc2libGUsIEZpbmFsLCBQcml2YXRlLCBQdWJsaWMsIFVJNUNsYXNzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgUmVzb3VyY2VCdW5kbGUgZnJvbSBcInNhcC9iYXNlL2kxOG4vUmVzb3VyY2VCdW5kbGVcIjtcbmltcG9ydCBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB7IEludGVybmFsTW9kZWxDb250ZXh0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcblxuLyoqXG4gKiBBIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIG9mZmVyaW5nIG1lc3NhZ2UgaGFuZGxpbmcuXG4gKlxuICogQGhpZGVjb25zdHJ1Y3RvclxuICogQHB1YmxpY1xuICogQGV4cGVyaW1lbnRhbCBBcyBvZiB2ZXJzaW9uIDEuOTAuMFxuICogQHNpbmNlIDEuOTAuMFxuICovXG5AVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5NZXNzYWdlSGFuZGxlclwiLCBDb250cm9sbGVyRXh0ZW5zaW9uTWV0YWRhdGEpXG5jbGFzcyBNZXNzYWdlSGFuZGxlciBleHRlbmRzIENvbnRyb2xsZXJFeHRlbnNpb24ge1xuXHQvKipcblx0ICogQHByaXZhdGVcblx0ICogQG5hbWUgc2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuTWVzc2FnZUhhbmRsZXIuZ2V0TWV0YWRhdGFcblx0ICogQGZ1bmN0aW9uXG5cdCAqL1xuXHQvKipcblx0ICogQHByaXZhdGVcblx0ICogQG5hbWUgc2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuTWVzc2FnZUhhbmRsZXIuZXh0ZW5kXG5cdCAqIEBmdW5jdGlvblxuXHQgKi9cblx0cHJpdmF0ZSBiYXNlITogUGFnZUNvbnRyb2xsZXI7XG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IGJvdW5kIG1lc3NhZ2VzIGFyZSBzaG93biBpbiB0aGUgbWVzc2FnZSBkaWFsb2cuXG5cdCAqXG5cdCAqIFRoaXMgZnVuY3Rpb24gaXMgbWVhbnQgdG8gYmUgaW5kaXZpZHVhbGx5IG92ZXJyaWRkZW4gYnkgY29uc3VtaW5nIGNvbnRyb2xsZXJzLCBidXQgbm90IHRvIGJlIGNhbGxlZCBkaXJlY3RseS5cblx0ICogVGhlIG92ZXJyaWRlIGV4ZWN1dGlvbiBpczoge0BsaW5rIHNhcC51aS5jb3JlLm12Yy5PdmVycmlkZUV4ZWN1dGlvbi5JbnN0ZWFkfS5cblx0ICpcblx0ICogSWYgdGhlIGJvdW5kIG1lc3NhZ2VzIGFyZSBzaG93biB0byB0aGUgdXNlciB3aXRoIGEgZGlmZmVyZW50IGNvbnRyb2wgbGlrZSB0aGUgKFRPRE86TGluaykgTWVzc2FnZUJ1dHRvblxuXHQgKiB0aGlzIG1ldGhvZCBoYXMgdG8gYmUgb3ZlcnJpZGRlbi5cblx0ICpcblx0ICogQHJldHVybnMge2Jvb2xlYW59IERldGVybWluZXMgd2hldGhlciBvciBub3QgYm91bmQgbWVzc2FnZXMgYXJlIHNob3duIGluIHRoZSBtZXNzYWdlIGRpYWxvZy5cblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBQcml2YXRlXG5cdEBFeHRlbnNpYmxlKE92ZXJyaWRlRXhlY3V0aW9uLkluc3RlYWQpXG5cdGdldFNob3dCb3VuZE1lc3NhZ2VzSW5NZXNzYWdlRGlhbG9nKCkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNob3dzIGEgbWVzc2FnZSBkaWFsb2cgd2l0aCB0cmFuc2l0aW9uIG1lc3NhZ2VzIGlmIHRoZXJlIGFyZSBhbnkuXG5cdCAqIFRoZSBtZXNzYWdlIGRpYWxvZyBpcyBzaG93biBhcyBhIG1vZGFsIGRpYWxvZy4gT25jZSB0aGUgdXNlciBjb25maXJtcyB0aGUgZGlhbG9nLCBhbGwgdHJhbnNpdGlvbiBtZXNzYWdlc1xuXHQgKiBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBtZXNzYWdlIG1vZGVsLiBJZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIG1lc3NhZ2UsIGEgbGlzdCBvZiBtZXNzYWdlcyBpcyBzaG93bi4gVGhlIHVzZXJcblx0ICogY2FuIGZpbHRlciBvbiBtZXNzYWdlIHR5cGVzIGFuZCBjYW4gZGlzcGxheSBkZXRhaWxzIGFzIHdlbGwgYXMgdGhlIGxvbmcgdGV4dC4gSWYgdGhlcmUgaXMgb25lIG1lc3NhZ2UsXG5cdCAqIHRoZSBkaWFsb2cgaW1tZWRpYXRlbHkgc2hvd3MgdGhlIGRldGFpbHMgb2YgdGhlIG1lc3NhZ2UuIElmIHRoZXJlIGlzIGp1c3Qgb25lIHN1Y2Nlc3MgbWVzc2FnZSwgYSBtZXNzYWdlXG5cdCAqIHRvYXN0IGlzIHNob3duIGluc3RlYWQuXG5cdCAqXG5cdCAqIEBwYXJhbSBtUGFyYW1ldGVycyBQUklWQVRFXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfSBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCBvbmNlIHRoZSB1c2VyIGNsb3NlcyB0aGUgZGlhbG9nLiBJZiB0aGVyZSBhcmUgbm8gbWVzc2FnZXNcblx0ICogdG8gYmUgc2hvd24sIHRoZSBwcm9taXNlIGlzIHJlc29sdmVkIGltbWVkaWF0ZWx5XG5cdCAqIEBhbGlhcyBzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5NZXNzYWdlSGFuZGxlciNzaG93TWVzc2FnZURpYWxvZ1xuXHQgKiBAcHVibGljXG5cdCAqIEBleHBlcmltZW50YWwgQXMgb2YgdmVyc2lvbiAxLjkwLjBcblx0ICogQHNpbmNlIDEuOTAuMFxuXHQgKi9cblx0QFB1YmxpY1xuXHRARmluYWxcblx0c2hvd01lc3NhZ2VEaWFsb2cobVBhcmFtZXRlcnM/OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBjdXN0b21NZXNzYWdlcyA9IG1QYXJhbWV0ZXJzICYmIG1QYXJhbWV0ZXJzLmN1c3RvbU1lc3NhZ2VzID8gbVBhcmFtZXRlcnMuY3VzdG9tTWVzc2FnZXMgOiB1bmRlZmluZWQsXG5cdFx0XHRvT1BJbnRlcm5hbEJpbmRpbmdDb250ZXh0ID0gdGhpcy5iYXNlLmdldFZpZXcoKS5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXHRcdC8vIHNldCBpc0FjdGlvblBhcmFtZXRlckRpYWxvZyBvcGVuIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgaW4gdGhlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIHRvIGRlY2lkZSB3aGV0aGVyIG1lc3NhZ2UgZGlhbG9nIHNob3VsZCBvcGVuIG9yIG5vdFxuXHRcdGlmIChtUGFyYW1ldGVycyAmJiBtUGFyYW1ldGVycy5pc0FjdGlvblBhcmFtZXRlckRpYWxvZ09wZW4gJiYgb09QSW50ZXJuYWxCaW5kaW5nQ29udGV4dCkge1xuXHRcdFx0b09QSW50ZXJuYWxCaW5kaW5nQ29udGV4dC5zZXRQcm9wZXJ0eShcImlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nT3BlblwiLCB0cnVlKTtcblx0XHR9XG5cdFx0Y29uc3QgYlNob3dCb3VuZE1lc3NhZ2VzID0gdGhpcy5nZXRTaG93Qm91bmRNZXNzYWdlc0luTWVzc2FnZURpYWxvZygpO1xuXHRcdGNvbnN0IG9CaW5kaW5nQ29udGV4dCA9IG1QYXJhbWV0ZXJzICYmIG1QYXJhbWV0ZXJzLmNvbnRleHQgPyBtUGFyYW1ldGVycy5jb250ZXh0IDogdGhpcy5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoKTtcblx0XHRjb25zdCBiRXRhZ01lc3NhZ2UgPSBtUGFyYW1ldGVycyAmJiBtUGFyYW1ldGVycy5iSGFzRXRhZ01lc3NhZ2U7XG5cdFx0Ly8gcmVzZXQgIGlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nT3BlblxuXHRcdC8vIGNhbm5vdCBkbyB0aGlzIG9wZXJhdGlvbnMuanMgc2luY2UgaXQgaXMgbm90IGF3YXJlIG9mIHRoZSB2aWV3XG5cdFx0aWYgKG9PUEludGVybmFsQmluZGluZ0NvbnRleHQpIHtcblx0XHRcdG9PUEludGVybmFsQmluZGluZ0NvbnRleHQuc2V0UHJvcGVydHkoXCJpc0FjdGlvblBhcmFtZXRlckRpYWxvZ09wZW5cIiwgZmFsc2UpO1xuXHRcdH1cblx0XHRyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZTogKHZhbHVlOiBhbnkpID0+IHZvaWQsIHJlamVjdDogKHJlYXNvbj86IGFueSkgPT4gdm9pZCkge1xuXHRcdFx0Ly8gd2UgaGF2ZSB0byBzZXQgYSB0aW1lb3V0IHRvIGJlIGFibGUgdG8gYWNjZXNzIHRoZSBtb3N0IHJlY2VudCBtZXNzYWdlc1xuXHRcdFx0c2V0VGltZW91dChmdW5jdGlvbigpIHtcblx0XHRcdFx0Ly8gVE9ETzogZ3JlYXQgQVBJIC0gd2lsbCBiZSBjaGFuZ2VkIGxhdGVyXG5cdFx0XHRcdG1lc3NhZ2VIYW5kbGluZ1xuXHRcdFx0XHRcdC5zaG93VW5ib3VuZE1lc3NhZ2VzKGN1c3RvbU1lc3NhZ2VzLCBvQmluZGluZ0NvbnRleHQsIGJFdGFnTWVzc2FnZSwgYlNob3dCb3VuZE1lc3NhZ2VzKVxuXHRcdFx0XHRcdC50aGVuKHJlc29sdmUpXG5cdFx0XHRcdFx0LmNhdGNoKHJlamVjdCk7XG5cdFx0XHR9LCAwKTtcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBZb3UgY2FuIHJlbW92ZSB0aGUgZXhpc3RpbmcgdHJhbnNpdGlvbiBtZXNzYWdlIGZyb20gdGhlIG1lc3NhZ2UgbW9kZWwgd2l0aCB0aGlzIG1ldGhvZC5cblx0ICogV2l0aCBldmVyeSB1c2VyIGludGVyYWN0aW9uIHRoYXQgY2F1c2VzIHNlcnZlciBjb21tdW5pY2F0aW9uIChsaWtlIGNsaWNraW5nIG9uIGFuIGFjdGlvbiwgY2hhbmdpbmcgZGF0YSksXG5cdCAqIHRoaXMgbWV0aG9kIHJlbW92ZXMgdGhlIGV4aXN0aW5nIHRyYW5zaXRpb24gbWVzc2FnZXMgZnJvbSB0aGUgbWVzc2FnZSBtb2RlbC5cblx0ICogQHBhcmFtIHtib29sZWFufSBba2VlcEJvdW5kTWVzc2FnZV0gQ2hlY2tzIGlmIHRoZSBib3VuZCB0cmFuc2l0aW9uIG1lc3NhZ2VzIGFyZSBub3QgdG8gYmUgcmVtb3ZlZFxuXHQgKlxuXHQgKiBAYWxpYXMgc2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuTWVzc2FnZUhhbmRsZXIjcmVtb3Zlc1RyYW5zaXRpb25NZXNzYWdlc1xuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0QFB1YmxpY1xuXHRyZW1vdmVUcmFuc2l0aW9uTWVzc2FnZXMoa2VlcEJvdW5kTWVzc2FnZT86IGJvb2xlYW4pIHtcblx0XHRpZiAoIWtlZXBCb3VuZE1lc3NhZ2UpIHtcblx0XHRcdG1lc3NhZ2VIYW5kbGluZy5yZW1vdmVCb3VuZFRyYW5zaXRpb25NZXNzYWdlcygpO1xuXHRcdH1cblx0XHRtZXNzYWdlSGFuZGxpbmcucmVtb3ZlVW5ib3VuZFRyYW5zaXRpb25NZXNzYWdlcygpO1xuXHR9XG5cblx0X2NoZWNrTmF2aWdhdGlvblRvTWVzc2FnZVBhZ2UobVBhcmFtZXRlcnM6IGFueSkge1xuXHRcdGNvbnN0IGFVbmJvdW5kTWVzc2FnZXMgPSBtZXNzYWdlSGFuZGxpbmcuZ2V0TWVzc2FnZXMoKTtcblx0XHRjb25zdCBiU2hvd0JvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzID0gdGhpcy5nZXRTaG93Qm91bmRNZXNzYWdlc0luTWVzc2FnZURpYWxvZygpO1xuXHRcdGNvbnN0IGFCb3VuZFRyYW5zaXRpb25NZXNzYWdlcyA9IGJTaG93Qm91bmRUcmFuc2l0aW9uTWVzc2FnZXMgPyBtZXNzYWdlSGFuZGxpbmcuZ2V0TWVzc2FnZXModHJ1ZSwgdHJ1ZSkgOiBbXTtcblx0XHRjb25zdCBhQ3VzdG9tTWVzc2FnZXMgPSBtUGFyYW1ldGVycyAmJiBtUGFyYW1ldGVycy5jdXN0b21NZXNzYWdlcyA/IG1QYXJhbWV0ZXJzLmN1c3RvbU1lc3NhZ2VzIDogW107XG5cdFx0Y29uc3QgYklzU3RpY2t5RWRpdE1vZGUgPSBDb21tb25VdGlscy5pc1N0aWNreUVkaXRNb2RlKHRoaXMuYmFzZS5nZXRWaWV3KCkpO1xuXHRcdGxldCBtTWVzc2FnZVBhZ2VQYXJhbWV0ZXJzO1xuXG5cdFx0Ly8gVE9ETzogU3RpY2sgbW9kZSBjaGVjayBpcyBva2F5IGFzIGxvbmcgYXMgdGhlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGlzIHVzZWQgd2l0aCBzYXAuZmUuY29yZSBhbmQgc2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50LlxuXHRcdC8vIEl0IG1pZ2h0IGJlIGJldHRlciB0byBwcm92aWRlIGFuIGV4dGVuc2lvbiB0byB0aGUgY29uc3VtZXIgb2YgdGhlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIHRvIHByb3ZpZGUgdGhpcyB2YWx1ZS5cblxuXHRcdC8vIFRoZSBtZXNzYWdlIHBhZ2UgY2FuIG9ubHkgc2hvdyAxIG1lc3NhZ2UgdG9kYXksIHNvIHdlIG5hdmlnYXRlIHRvIGl0IHdoZW4gOlxuXHRcdC8vIDEuIFRoZXJlIGFyZSBubyBib3VuZCB0cmFuc2l0aW9uIG1lc3NhZ2VzIHRvIHNob3csXG5cdFx0Ly8gMi4gVGhlcmUgYXJlIG5vIGN1c3RvbSBtZXNzYWdlcyB0byBzaG93LCAmXG5cdFx0Ly8gMy4gVGhlcmUgaXMgZXhhY3RseSAxIHVuYm91bmQgbWVzc2FnZSBpbiB0aGUgbWVzc2FnZSBtb2RlbCB3aXRoIHN0YXR1c0NvZGU9NTAzIGFuZCByZXRyeS1BZnRlciBhdmFpbGFibGVcblx0XHQvLyA0LiByZXRyeUFmdGVyIGlzIGdyZWF0ZXIgdGhhbiAxMjAgc2Vjb25kc1xuXHRcdC8vXG5cdFx0Ly8gSW4gQWRkaXRpb24sIG5hdmlnYXRpbmcgYXdheSBmcm9tIGEgc3RpY2t5IHNlc3Npb24gd2lsbCBkZXN0cm95IHRoZSBzZXNzaW9uIHNvIHdlIGRvIG5vdCBuYXZpZ2F0ZSB0byBtZXNzYWdlIHBhZ2UgZm9yIG5vdy5cblx0XHQvLyBUT0RPOiBjaGVjayBpZiBuYXZpZ2F0aW9uIHNob3VsZCBiZSBkb25lIGluIHN0aWNreSBlZGl0IG1vZGUuXG5cdFx0aWYgKG1QYXJhbWV0ZXJzICYmIG1QYXJhbWV0ZXJzLmlzRGF0YVJlY2VpdmVkRXJyb3IpIHtcblx0XHRcdG1NZXNzYWdlUGFnZVBhcmFtZXRlcnMgPSB7XG5cdFx0XHRcdHRpdGxlOiBtUGFyYW1ldGVycy50aXRsZSxcblx0XHRcdFx0ZGVzY3JpcHRpb246IG1QYXJhbWV0ZXJzLmRlc2NyaXB0aW9uLFxuXHRcdFx0XHRuYXZpZ2F0ZUJhY2tUb09yaWdpbjogdHJ1ZVxuXHRcdFx0fTtcblx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0IWJJc1N0aWNreUVkaXRNb2RlICYmXG5cdFx0XHQhYUJvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzLmxlbmd0aCAmJlxuXHRcdFx0IWFDdXN0b21NZXNzYWdlcy5sZW5ndGggJiZcblx0XHRcdChhVW5ib3VuZE1lc3NhZ2VzLmxlbmd0aCA9PT0gMSB8fCAobVBhcmFtZXRlcnMgJiYgbVBhcmFtZXRlcnMuaXNJbml0aWFsTG9hZDUwM0Vycm9yKSlcblx0XHQpIHtcblx0XHRcdGNvbnN0IG9NZXNzYWdlID0gYVVuYm91bmRNZXNzYWdlc1swXSxcblx0XHRcdFx0b1RlY2huaWNhbERldGFpbHMgPSBvTWVzc2FnZS5nZXRUZWNobmljYWxEZXRhaWxzKCk7XG5cdFx0XHRsZXQgc1JldHJ5QWZ0ZXJNZXNzYWdlO1xuXHRcdFx0aWYgKG9UZWNobmljYWxEZXRhaWxzICYmIG9UZWNobmljYWxEZXRhaWxzLmh0dHBTdGF0dXMgPT09IDUwMykge1xuXHRcdFx0XHRpZiAob1RlY2huaWNhbERldGFpbHMucmV0cnlBZnRlcikge1xuXHRcdFx0XHRcdGNvbnN0IGlTZWNvbmRzQmVmb3JlUmV0cnkgPSB0aGlzLl9nZXRTZWNvbmRzQmVmb3JlUmV0cnlBZnRlcihvVGVjaG5pY2FsRGV0YWlscy5yZXRyeUFmdGVyKTtcblx0XHRcdFx0XHRpZiAoaVNlY29uZHNCZWZvcmVSZXRyeSA+IDEyMCkge1xuXHRcdFx0XHRcdFx0Ly8gVE9ETzogRm9yIG5vdyBsZXQncyBrZWVwIGdldFJldHJ5QWZ0ZXJNZXNzYWdlIGluIG1lc3NhZ2VIYW5kbGluZyBiZWNhdXNlIGl0IGlzIG5lZWRlZCBhbHNvIGJ5IHRoZSBkaWFsb2cuXG5cdFx0XHRcdFx0XHQvLyBXZSBjYW4gcGxhbiB0byBtb3ZlIHRoaXMgYW5kIHRoZSBkaWFsb2cgbG9naWMgYm90aCB0byBtZXNzYWdlSGFuZGxlciBjb250cm9sbGVyIGV4dGVuc2lvbiBpZiByZXF1aXJlZC5cblx0XHRcdFx0XHRcdHNSZXRyeUFmdGVyTWVzc2FnZSA9IG1lc3NhZ2VIYW5kbGluZy5nZXRSZXRyeUFmdGVyTWVzc2FnZShvTWVzc2FnZSk7XG5cdFx0XHRcdFx0XHRtTWVzc2FnZVBhZ2VQYXJhbWV0ZXJzID0ge1xuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogc1JldHJ5QWZ0ZXJNZXNzYWdlID8gc1JldHJ5QWZ0ZXJNZXNzYWdlICsgXCIgXCIgKyBvTWVzc2FnZS5nZXRNZXNzYWdlKCkgOiBvTWVzc2FnZS5nZXRNZXNzYWdlKCksXG5cdFx0XHRcdFx0XHRcdG5hdmlnYXRlQmFja1RvT3JpZ2luOiB0cnVlXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzUmV0cnlBZnRlck1lc3NhZ2UgPSBtZXNzYWdlSGFuZGxpbmcuZ2V0UmV0cnlBZnRlck1lc3NhZ2Uob01lc3NhZ2UpO1xuXHRcdFx0XHRcdG1NZXNzYWdlUGFnZVBhcmFtZXRlcnMgPSB7XG5cdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogc1JldHJ5QWZ0ZXJNZXNzYWdlID8gc1JldHJ5QWZ0ZXJNZXNzYWdlICsgXCIgXCIgKyBvTWVzc2FnZS5nZXRNZXNzYWdlKCkgOiBvTWVzc2FnZS5nZXRNZXNzYWdlKCksXG5cdFx0XHRcdFx0XHRuYXZpZ2F0ZUJhY2tUb09yaWdpbjogdHJ1ZVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIG1NZXNzYWdlUGFnZVBhcmFtZXRlcnM7XG5cdH1cblxuXHRfZ2V0U2Vjb25kc0JlZm9yZVJldHJ5QWZ0ZXIoZFJldHJ5QWZ0ZXI6IGFueSkge1xuXHRcdGNvbnN0IGRDdXJyZW50RGF0ZVRpbWUgPSBuZXcgRGF0ZSgpLFxuXHRcdFx0aUN1cnJlbnREYXRlVGltZUluTWlsbGlTZWNvbmRzID0gZEN1cnJlbnREYXRlVGltZS5nZXRUaW1lKCksXG5cdFx0XHRpUmV0cnlBZnRlckRhdGVUaW1lSW5NaWxsaVNlY29uZHMgPSBkUmV0cnlBZnRlci5nZXRUaW1lKCksXG5cdFx0XHRpU2Vjb25kc0JlZm9yZVJldHJ5ID0gKGlSZXRyeUFmdGVyRGF0ZVRpbWVJbk1pbGxpU2Vjb25kcyAtIGlDdXJyZW50RGF0ZVRpbWVJbk1pbGxpU2Vjb25kcykgLyAxMDAwO1xuXHRcdHJldHVybiBpU2Vjb25kc0JlZm9yZVJldHJ5O1xuXHR9XG5cdC8qKlxuXHQgKiBTaG93cyBhIG1lc3NhZ2UgcGFnZSBvciBhIG1lc3NhZ2UgZGlhbG9nIGJhc2VkIG9uIHRoZSBtZXNzYWdlcyBpbiB0aGUgbWVzc2FnZSBkaWFsb2cuXG5cdCAqIEBwYXJhbSBbbVBhcmFtZXRlcnNdXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfSBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCBvbmNlIHRoZSB1c2VyIGNsb3NlcyB0aGUgbWVzc2FnZSBkaWFsb2cgb3Igd2hlbiBuYXZpZ2F0aW9uIHRvIHRoZSBtZXNzYWdlIHBhZ2UgaXMgY29tcGxldGUuIElmIHRoZXJlIGFyZSBubyBtZXNzYWdlc1xuXHQgKiB0byBiZSBzaG93biwgdGhlIHByb21pc2UgaXMgcmVzb2x2ZWQgaW1tZWRpYXRlbHlcblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBQdWJsaWNcblx0QEZpbmFsXG5cdHNob3dNZXNzYWdlcyhtUGFyYW1ldGVycz86IGFueSkge1xuXHRcdGNvbnN0IG9BcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodGhpcy5nZXRWaWV3KCkpO1xuXHRcdGxldCBtTWVzc2FnZVBhZ2VQYXJhbWV0ZXJzOiBhbnk7XG5cdFx0aWYgKCFvQXBwQ29tcG9uZW50Ll9pc0ZjbEVuYWJsZWQoKSkge1xuXHRcdFx0bU1lc3NhZ2VQYWdlUGFyYW1ldGVycyA9IHRoaXMuX2NoZWNrTmF2aWdhdGlvblRvTWVzc2FnZVBhZ2UobVBhcmFtZXRlcnMpO1xuXHRcdH1cblx0XHRpZiAobU1lc3NhZ2VQYWdlUGFyYW1ldGVycykge1xuXHRcdFx0Ly8gbmF2aWdhdGUgdG8gbWVzc2FnZSBwYWdlLlxuXHRcdFx0Ly8gaGFuZGxlciBiZWZvcmUgcGFnZSBuYXZpZ2F0aW9uIGlzIHRyaWdnZXJlZCwgZm9yIGV4YW1wbGUgdG8gY2xvc2UgdGhlIGFjdGlvbiBwYXJhbWV0ZXIgZGlhbG9nXG5cdFx0XHRtUGFyYW1ldGVycyAmJiBtUGFyYW1ldGVycy5tZXNzYWdlUGFnZU5hdmlnYXRpb25DYWxsYmFjayAmJiBtUGFyYW1ldGVycy5tZXNzYWdlUGFnZU5hdmlnYXRpb25DYWxsYmFjaygpO1xuXG5cdFx0XHRtTWVzc2FnZVBhZ2VQYXJhbWV0ZXJzLmhhbmRsZVNoZWxsQmFjayA9ICEobVBhcmFtZXRlcnMgJiYgbVBhcmFtZXRlcnMuc2hlbGxCYWNrKTtcblx0XHRcdC8vIFRPRE86IFVzZSBJbGx1c3RyYXRlZCBtZXNzYWdlIGluc3RlYWQgb2Ygbm9ybWFsIG1lc3NhZ2UgcGFnZVxuXHRcdFx0Ly8gVE9ETzogUmV0dXJuIHZhbHVlIG5lZWRzIHRvIHByb3ZpZGVkIGJ1dCBzaW5jZSB0aGlzIGZ1bmN0aW9uIGlzIHByaXZhdGUgZm9yIG5vdyBoZW5jZSB3ZSBjYW4gc2tpcCB0aGlzLlxuXHRcdFx0dGhpcy5yZW1vdmVUcmFuc2l0aW9uTWVzc2FnZXMoKTtcblx0XHRcdGNvbnN0IG9SZXNvdXJjZUJ1bmRsZSA9IHNhcC51aS5nZXRDb3JlKCkuZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlKFwic2FwLmZlLmNvcmVcIikgYXMgUmVzb3VyY2VCdW5kbGU7XG5cdFx0XHRpZiAodGhpcy5iYXNlLl9yb3V0aW5nKSB7XG5cdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogYW55LCByZWplY3Q6IGFueSkgPT4ge1xuXHRcdFx0XHRcdC8vIHdlIGhhdmUgdG8gc2V0IGEgdGltZW91dCB0byBiZSBhYmxlIHRvIGFjY2VzcyB0aGUgbW9zdCByZWNlbnQgbWVzc2FnZXNcblx0XHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHRcdC8vIFRPRE86IGdyZWF0IEFQSSAtIHdpbGwgYmUgY2hhbmdlZCBsYXRlclxuXHRcdFx0XHRcdFx0dGhpcy5iYXNlLl9yb3V0aW5nXG5cdFx0XHRcdFx0XHRcdC5uYXZpZ2F0ZVRvTWVzc2FnZVBhZ2UoXG5cdFx0XHRcdFx0XHRcdFx0bVBhcmFtZXRlcnMgJiYgbVBhcmFtZXRlcnMuaXNEYXRhUmVjZWl2ZWRFcnJvclxuXHRcdFx0XHRcdFx0XHRcdFx0PyBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfQ09NTU9OX1NBUEZFX0RBVEFfUkVDRUlWRURfRVJST1JcIilcblx0XHRcdFx0XHRcdFx0XHRcdDogb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX01FU1NBR0VfSEFORExJTkdfU0FQRkVfNTAzX1RJVExFXCIpLFxuXHRcdFx0XHRcdFx0XHRcdG1NZXNzYWdlUGFnZVBhcmFtZXRlcnNcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHQudGhlbihyZXNvbHZlKVxuXHRcdFx0XHRcdFx0XHQuY2F0Y2gocmVqZWN0KTtcblx0XHRcdFx0XHR9LCAwKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIG5hdmlnYXRlIHRvIG1lc3NhZ2UgZGlhbG9nXG5cdFx0XHRyZXR1cm4gdGhpcy5zaG93TWVzc2FnZURpYWxvZyhtUGFyYW1ldGVycyk7XG5cdFx0fVxuXHR9XG59XG5leHBvcnQgZGVmYXVsdCBNZXNzYWdlSGFuZGxlcjtcbiJdfQ==
|
|
225
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1lc3NhZ2VIYW5kbGVyLnRzIl0sIm5hbWVzIjpbIk1lc3NhZ2VIYW5kbGVyIiwiZGVmaW5lVUk1Q2xhc3MiLCJwcml2YXRlRXh0ZW5zaW9uIiwiZXh0ZW5zaWJsZSIsIk92ZXJyaWRlRXhlY3V0aW9uIiwiSW5zdGVhZCIsInB1YmxpY0V4dGVuc2lvbiIsImZpbmFsRXh0ZW5zaW9uIiwiZ2V0U2hvd0JvdW5kTWVzc2FnZXNJbk1lc3NhZ2VEaWFsb2ciLCJzaG93TWVzc2FnZURpYWxvZyIsIm1QYXJhbWV0ZXJzIiwiY3VzdG9tTWVzc2FnZXMiLCJ1bmRlZmluZWQiLCJvT1BJbnRlcm5hbEJpbmRpbmdDb250ZXh0IiwiYmFzZSIsImdldFZpZXciLCJnZXRCaW5kaW5nQ29udGV4dCIsImlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nT3BlbiIsInNldFByb3BlcnR5IiwiYlNob3dCb3VuZE1lc3NhZ2VzIiwib0JpbmRpbmdDb250ZXh0IiwiY29udGV4dCIsImJFdGFnTWVzc2FnZSIsImJIYXNFdGFnTWVzc2FnZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0Iiwic2V0VGltZW91dCIsIm1lc3NhZ2VIYW5kbGluZyIsInNob3dVbmJvdW5kTWVzc2FnZXMiLCJlcnJvclRhcmdldHNJbkFQTSIsInRoZW4iLCJjYXRjaCIsInJlbW92ZVRyYW5zaXRpb25NZXNzYWdlcyIsImtlZXBCb3VuZE1lc3NhZ2UiLCJyZW1vdmVCb3VuZFRyYW5zaXRpb25NZXNzYWdlcyIsInJlbW92ZVVuYm91bmRUcmFuc2l0aW9uTWVzc2FnZXMiLCJfY2hlY2tOYXZpZ2F0aW9uVG9NZXNzYWdlUGFnZSIsImFVbmJvdW5kTWVzc2FnZXMiLCJnZXRNZXNzYWdlcyIsImJTaG93Qm91bmRUcmFuc2l0aW9uTWVzc2FnZXMiLCJhQm91bmRUcmFuc2l0aW9uTWVzc2FnZXMiLCJhQ3VzdG9tTWVzc2FnZXMiLCJiSXNTdGlja3lFZGl0TW9kZSIsIkNvbW1vblV0aWxzIiwiaXNTdGlja3lFZGl0TW9kZSIsIm1NZXNzYWdlUGFnZVBhcmFtZXRlcnMiLCJpc0RhdGFSZWNlaXZlZEVycm9yIiwidGl0bGUiLCJkZXNjcmlwdGlvbiIsIm5hdmlnYXRlQmFja1RvT3JpZ2luIiwibGVuZ3RoIiwiaXNJbml0aWFsTG9hZDUwM0Vycm9yIiwib01lc3NhZ2UiLCJvVGVjaG5pY2FsRGV0YWlscyIsImdldFRlY2huaWNhbERldGFpbHMiLCJzUmV0cnlBZnRlck1lc3NhZ2UiLCJodHRwU3RhdHVzIiwicmV0cnlBZnRlciIsImlTZWNvbmRzQmVmb3JlUmV0cnkiLCJfZ2V0U2Vjb25kc0JlZm9yZVJldHJ5QWZ0ZXIiLCJnZXRSZXRyeUFmdGVyTWVzc2FnZSIsImdldE1lc3NhZ2UiLCJkUmV0cnlBZnRlciIsImRDdXJyZW50RGF0ZVRpbWUiLCJEYXRlIiwiaUN1cnJlbnREYXRlVGltZUluTWlsbGlTZWNvbmRzIiwiZ2V0VGltZSIsImlSZXRyeUFmdGVyRGF0ZVRpbWVJbk1pbGxpU2Vjb25kcyIsInNob3dNZXNzYWdlcyIsIm9BcHBDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJfaXNGY2xFbmFibGVkIiwibWVzc2FnZVBhZ2VOYXZpZ2F0aW9uQ2FsbGJhY2siLCJoYW5kbGVTaGVsbEJhY2siLCJzaGVsbEJhY2siLCJvUmVzb3VyY2VCdW5kbGUiLCJDb3JlIiwiZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlIiwiX3JvdXRpbmciLCJuYXZpZ2F0ZVRvTWVzc2FnZVBhZ2UiLCJnZXRUZXh0IiwiQ29udHJvbGxlckV4dGVuc2lvbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtNQUVNQSxjLFdBRExDLGNBQWMsQ0FBQyxpREFBRCxDLFVBZWJDLGdCQUFnQixFLFVBQ2hCQyxVQUFVLENBQUNDLGlCQUFpQixDQUFDQyxPQUFuQixDLFVBcUJWQyxlQUFlLEUsVUFDZkMsY0FBYyxFLFVBcUNkRCxlQUFlLEUsVUFnRmZBLGVBQWUsRSxVQUNmQyxjQUFjLEU7Ozs7Ozs7OztBQXpKZjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7V0FHQ0MsbUMsR0FGQSwrQ0FFc0M7QUFDckMsYUFBTyxJQUFQO0FBQ0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O1dBR0NDLGlCLEdBRkEsMkJBRWtCQyxXQUZsQixFQUVvRDtBQUNuRCxVQUFNQyxjQUFjLEdBQUdELFdBQVcsSUFBSUEsV0FBVyxDQUFDQyxjQUEzQixHQUE0Q0QsV0FBVyxDQUFDQyxjQUF4RCxHQUF5RUMsU0FBaEc7QUFBQSxVQUNDQyx5QkFBeUIsR0FBRyxLQUFLQyxJQUFMLENBQVVDLE9BQVYsR0FBb0JDLGlCQUFwQixDQUFzQyxVQUF0QyxDQUQ3QixDQURtRCxDQUduRDs7QUFDQSxVQUFJTixXQUFXLElBQUlBLFdBQVcsQ0FBQ08sMkJBQTNCLElBQTBESix5QkFBOUQsRUFBeUY7QUFDeEZBLFFBQUFBLHlCQUF5QixDQUFDSyxXQUExQixDQUFzQyw2QkFBdEMsRUFBcUUsSUFBckU7QUFDQTs7QUFDRCxVQUFNQyxrQkFBa0IsR0FBRyxLQUFLWCxtQ0FBTCxFQUEzQjtBQUNBLFVBQU1ZLGVBQWUsR0FBR1YsV0FBVyxJQUFJQSxXQUFXLENBQUNXLE9BQTNCLEdBQXFDWCxXQUFXLENBQUNXLE9BQWpELEdBQTJELEtBQUtOLE9BQUwsR0FBZUMsaUJBQWYsRUFBbkY7QUFDQSxVQUFNTSxZQUFZLEdBQUdaLFdBQVcsSUFBSUEsV0FBVyxDQUFDYSxlQUFoRCxDQVRtRCxDQVVuRDtBQUNBOztBQUNBLFVBQUlWLHlCQUFKLEVBQStCO0FBQzlCQSxRQUFBQSx5QkFBeUIsQ0FBQ0ssV0FBMUIsQ0FBc0MsNkJBQXRDLEVBQXFFLEtBQXJFO0FBQ0E7O0FBQ0QsYUFBTyxJQUFJTSxPQUFKLENBQVksVUFBVUMsT0FBVixFQUF5Q0MsTUFBekMsRUFBeUU7QUFDM0Y7QUFDQUMsUUFBQUEsVUFBVSxDQUFDLFlBQVk7QUFDdEI7QUFDQUMsVUFBQUEsZUFBZSxDQUNiQyxtQkFERixDQUNzQmxCLGNBRHRCLEVBQ3NDUyxlQUR0QyxFQUN1REUsWUFEdkQsRUFDcUVILGtCQURyRSxFQUN5RlQsV0FEekYsYUFDeUZBLFdBRHpGLHVCQUN5RkEsV0FBVyxDQUFFb0IsaUJBRHRHLEVBRUVDLElBRkYsQ0FFT04sT0FGUCxFQUdFTyxLQUhGLENBR1FOLE1BSFI7QUFJQSxTQU5TLEVBTVAsQ0FOTyxDQUFWO0FBT0EsT0FUTSxDQUFQO0FBVUE7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztXQUVDTyx3QixHQURBLGtDQUN5QkMsZ0JBRHpCLEVBQ3FEO0FBQ3BELFVBQUksQ0FBQ0EsZ0JBQUwsRUFBdUI7QUFDdEJOLFFBQUFBLGVBQWUsQ0FBQ08sNkJBQWhCO0FBQ0E7O0FBQ0RQLE1BQUFBLGVBQWUsQ0FBQ1EsK0JBQWhCO0FBQ0EsSzs7V0FFREMsNkIsR0FBQSx1Q0FBOEIzQixXQUE5QixFQUFnRDtBQUMvQyxVQUFNNEIsZ0JBQWdCLEdBQUdWLGVBQWUsQ0FBQ1csV0FBaEIsRUFBekI7QUFDQSxVQUFNQyw0QkFBNEIsR0FBRyxLQUFLaEMsbUNBQUwsRUFBckM7QUFDQSxVQUFNaUMsd0JBQXdCLEdBQUdELDRCQUE0QixHQUFHWixlQUFlLENBQUNXLFdBQWhCLENBQTRCLElBQTVCLEVBQWtDLElBQWxDLENBQUgsR0FBNkMsRUFBMUc7QUFDQSxVQUFNRyxlQUFlLEdBQUdoQyxXQUFXLElBQUlBLFdBQVcsQ0FBQ0MsY0FBM0IsR0FBNENELFdBQVcsQ0FBQ0MsY0FBeEQsR0FBeUUsRUFBakc7QUFDQSxVQUFNZ0MsaUJBQWlCLEdBQUdDLFdBQVcsQ0FBQ0MsZ0JBQVosQ0FBNkIsS0FBSy9CLElBQUwsQ0FBVUMsT0FBVixFQUE3QixDQUExQjtBQUNBLFVBQUkrQixzQkFBSixDQU4rQyxDQVEvQztBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxVQUFJcEMsV0FBVyxJQUFJQSxXQUFXLENBQUNxQyxtQkFBL0IsRUFBb0Q7QUFDbkRELFFBQUFBLHNCQUFzQixHQUFHO0FBQ3hCRSxVQUFBQSxLQUFLLEVBQUV0QyxXQUFXLENBQUNzQyxLQURLO0FBRXhCQyxVQUFBQSxXQUFXLEVBQUV2QyxXQUFXLENBQUN1QyxXQUZEO0FBR3hCQyxVQUFBQSxvQkFBb0IsRUFBRTtBQUhFLFNBQXpCO0FBS0EsT0FORCxNQU1PLElBQ04sQ0FBQ1AsaUJBQUQsSUFDQSxDQUFDRix3QkFBd0IsQ0FBQ1UsTUFEMUIsSUFFQSxDQUFDVCxlQUFlLENBQUNTLE1BRmpCLEtBR0NiLGdCQUFnQixDQUFDYSxNQUFqQixLQUE0QixDQUE1QixJQUFrQ3pDLFdBQVcsSUFBSUEsV0FBVyxDQUFDMEMscUJBSDlELENBRE0sRUFLTDtBQUNELFlBQU1DLFFBQVEsR0FBR2YsZ0JBQWdCLENBQUMsQ0FBRCxDQUFqQztBQUFBLFlBQ0NnQixpQkFBaUIsR0FBR0QsUUFBUSxDQUFDRSxtQkFBVCxFQURyQjtBQUVBLFlBQUlDLGtCQUFKOztBQUNBLFlBQUlGLGlCQUFpQixJQUFJQSxpQkFBaUIsQ0FBQ0csVUFBbEIsS0FBaUMsR0FBMUQsRUFBK0Q7QUFDOUQsY0FBSUgsaUJBQWlCLENBQUNJLFVBQXRCLEVBQWtDO0FBQ2pDLGdCQUFNQyxtQkFBbUIsR0FBRyxLQUFLQywyQkFBTCxDQUFpQ04saUJBQWlCLENBQUNJLFVBQW5ELENBQTVCOztBQUNBLGdCQUFJQyxtQkFBbUIsR0FBRyxHQUExQixFQUErQjtBQUM5QjtBQUNBO0FBQ0FILGNBQUFBLGtCQUFrQixHQUFHNUIsZUFBZSxDQUFDaUMsb0JBQWhCLENBQXFDUixRQUFyQyxDQUFyQjtBQUNBUCxjQUFBQSxzQkFBc0IsR0FBRztBQUN4QkcsZ0JBQUFBLFdBQVcsRUFBRU8sa0JBQWtCLEdBQUdBLGtCQUFrQixHQUFHLEdBQXJCLEdBQTJCSCxRQUFRLENBQUNTLFVBQVQsRUFBOUIsR0FBc0RULFFBQVEsQ0FBQ1MsVUFBVCxFQUQ3RDtBQUV4QlosZ0JBQUFBLG9CQUFvQixFQUFFO0FBRkUsZUFBekI7QUFJQTtBQUNELFdBWEQsTUFXTztBQUNOTSxZQUFBQSxrQkFBa0IsR0FBRzVCLGVBQWUsQ0FBQ2lDLG9CQUFoQixDQUFxQ1IsUUFBckMsQ0FBckI7QUFDQVAsWUFBQUEsc0JBQXNCLEdBQUc7QUFDeEJHLGNBQUFBLFdBQVcsRUFBRU8sa0JBQWtCLEdBQUdBLGtCQUFrQixHQUFHLEdBQXJCLEdBQTJCSCxRQUFRLENBQUNTLFVBQVQsRUFBOUIsR0FBc0RULFFBQVEsQ0FBQ1MsVUFBVCxFQUQ3RDtBQUV4QlosY0FBQUEsb0JBQW9CLEVBQUU7QUFGRSxhQUF6QjtBQUlBO0FBQ0Q7QUFDRDs7QUFDRCxhQUFPSixzQkFBUDtBQUNBLEs7O1dBRURjLDJCLEdBQUEscUNBQTRCRyxXQUE1QixFQUE4QztBQUM3QyxVQUFNQyxnQkFBZ0IsR0FBRyxJQUFJQyxJQUFKLEVBQXpCO0FBQUEsVUFDQ0MsOEJBQThCLEdBQUdGLGdCQUFnQixDQUFDRyxPQUFqQixFQURsQztBQUFBLFVBRUNDLGlDQUFpQyxHQUFHTCxXQUFXLENBQUNJLE9BQVosRUFGckM7QUFBQSxVQUdDUixtQkFBbUIsR0FBRyxDQUFDUyxpQ0FBaUMsR0FBR0YsOEJBQXJDLElBQXVFLElBSDlGO0FBSUEsYUFBT1AsbUJBQVA7QUFDQTtBQUNEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7V0FHQ1UsWSxHQUZBLHNCQUVhM0QsV0FGYixFQUVnQztBQUFBOztBQUMvQixVQUFNNEQsYUFBYSxHQUFHMUIsV0FBVyxDQUFDMkIsZUFBWixDQUE0QixLQUFLeEQsT0FBTCxFQUE1QixDQUF0QjtBQUNBLFVBQUkrQixzQkFBSjs7QUFDQSxVQUFJLENBQUN3QixhQUFhLENBQUNFLGFBQWQsRUFBTCxFQUFvQztBQUNuQzFCLFFBQUFBLHNCQUFzQixHQUFHLEtBQUtULDZCQUFMLENBQW1DM0IsV0FBbkMsQ0FBekI7QUFDQTs7QUFDRCxVQUFJb0Msc0JBQUosRUFBNEI7QUFDM0I7QUFDQTtBQUNBcEMsUUFBQUEsV0FBVyxJQUFJQSxXQUFXLENBQUMrRCw2QkFBM0IsSUFBNEQvRCxXQUFXLENBQUMrRCw2QkFBWixFQUE1RDtBQUVBM0IsUUFBQUEsc0JBQXNCLENBQUM0QixlQUF2QixHQUF5QyxFQUFFaEUsV0FBVyxJQUFJQSxXQUFXLENBQUNpRSxTQUE3QixDQUF6QyxDQUwyQixDQU0zQjtBQUNBOztBQUNBLGFBQUsxQyx3QkFBTDtBQUNBLFlBQU0yQyxlQUFlLEdBQUlDLElBQUQsQ0FBaUJDLHdCQUFqQixDQUEwQyxhQUExQyxDQUF4Qjs7QUFDQSxZQUFJLEtBQUtoRSxJQUFMLENBQVVpRSxRQUFkLEVBQXdCO0FBQ3ZCLGlCQUFPLElBQUl2RCxPQUFKLENBQVksVUFBQ0MsT0FBRCxFQUFlQyxNQUFmLEVBQStCO0FBQ2pEO0FBQ0FDLFlBQUFBLFVBQVUsQ0FBQyxZQUFNO0FBQ2hCO0FBQ0EsY0FBQSxLQUFJLENBQUNiLElBQUwsQ0FBVWlFLFFBQVYsQ0FDRUMscUJBREYsQ0FFRXRFLFdBQVcsSUFBSUEsV0FBVyxDQUFDcUMsbUJBQTNCLEdBQ0c2QixlQUFlLENBQUNLLE9BQWhCLENBQXdCLG9DQUF4QixDQURILEdBRUdMLGVBQWUsQ0FBQ0ssT0FBaEIsQ0FBd0Isb0NBQXhCLENBSkwsRUFLRW5DLHNCQUxGLEVBT0VmLElBUEYsQ0FPT04sT0FQUCxFQVFFTyxLQVJGLENBUVFOLE1BUlI7QUFTQSxhQVhTLEVBV1AsQ0FYTyxDQUFWO0FBWUEsV0FkTSxDQUFQO0FBZUE7QUFDRCxPQTNCRCxNQTJCTztBQUNOO0FBQ0EsZUFBTyxLQUFLakIsaUJBQUwsQ0FBdUJDLFdBQXZCLENBQVA7QUFDQTtBQUNELEs7OztJQWpNMkJ3RSxtQjtTQW1NZGxGLGMiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCBtZXNzYWdlSGFuZGxpbmcgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL21lc3NhZ2VIYW5kbGVyL21lc3NhZ2VIYW5kbGluZ1wiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIGV4dGVuc2libGUsIGZpbmFsRXh0ZW5zaW9uLCBwcml2YXRlRXh0ZW5zaW9uLCBwdWJsaWNFeHRlbnNpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IEludGVybmFsTW9kZWxDb250ZXh0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCBDb3JlIGZyb20gXCJzYXAvdWkvY29yZS9Db3JlXCI7XG5pbXBvcnQgQ29udHJvbGxlckV4dGVuc2lvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL0NvbnRyb2xsZXJFeHRlbnNpb25cIjtcbmltcG9ydCBPdmVycmlkZUV4ZWN1dGlvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL092ZXJyaWRlRXhlY3V0aW9uXCI7XG5pbXBvcnQgeyBDb3JlRXggfSBmcm9tIFwidHlwZXMvZXh0ZW5zaW9uX3R5cGVzXCI7XG5cbi8qKlxuICogQSBjb250cm9sbGVyIGV4dGVuc2lvbiBvZmZlcmluZyBtZXNzYWdlIGhhbmRsaW5nLlxuICpcbiAqIEBoaWRlY29uc3RydWN0b3JcbiAqIEBwdWJsaWNcbiAqIEBleHBlcmltZW50YWwgQXMgb2YgdmVyc2lvbiAxLjkwLjBcbiAqIEBzaW5jZSAxLjkwLjBcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuTWVzc2FnZUhhbmRsZXJcIilcbmNsYXNzIE1lc3NhZ2VIYW5kbGVyIGV4dGVuZHMgQ29udHJvbGxlckV4dGVuc2lvbiB7XG5cdHByb3RlY3RlZCBiYXNlITogUGFnZUNvbnRyb2xsZXI7XG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IGJvdW5kIG1lc3NhZ2VzIGFyZSBzaG93biBpbiB0aGUgbWVzc2FnZSBkaWFsb2cuXG5cdCAqXG5cdCAqIFRoaXMgZnVuY3Rpb24gaXMgbWVhbnQgdG8gYmUgaW5kaXZpZHVhbGx5IG92ZXJyaWRkZW4gYnkgY29uc3VtaW5nIGNvbnRyb2xsZXJzLCBidXQgbm90IHRvIGJlIGNhbGxlZCBkaXJlY3RseS5cblx0ICogVGhlIG92ZXJyaWRlIGV4ZWN1dGlvbiBpczoge0BsaW5rIHNhcC51aS5jb3JlLm12Yy5PdmVycmlkZUV4ZWN1dGlvbi5JbnN0ZWFkfS5cblx0ICpcblx0ICogSWYgdGhlIGJvdW5kIG1lc3NhZ2VzIGFyZSBzaG93biB0byB0aGUgdXNlciB3aXRoIGEgZGlmZmVyZW50IGNvbnRyb2wgbGlrZSB0aGUgKFRPRE86TGluaykgTWVzc2FnZUJ1dHRvblxuXHQgKiB0aGlzIG1ldGhvZCBoYXMgdG8gYmUgb3ZlcnJpZGRlbi5cblx0ICpcblx0ICogQHJldHVybnMge2Jvb2xlYW59IERldGVybWluZXMgd2hldGhlciBvciBub3QgYm91bmQgbWVzc2FnZXMgYXJlIHNob3duIGluIHRoZSBtZXNzYWdlIGRpYWxvZy5cblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBwcml2YXRlRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoT3ZlcnJpZGVFeGVjdXRpb24uSW5zdGVhZClcblx0Z2V0U2hvd0JvdW5kTWVzc2FnZXNJbk1lc3NhZ2VEaWFsb2coKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHQvKipcblx0ICogU2hvd3MgYSBtZXNzYWdlIGRpYWxvZyB3aXRoIHRyYW5zaXRpb24gbWVzc2FnZXMgaWYgdGhlcmUgYXJlIGFueS5cblx0ICogVGhlIG1lc3NhZ2UgZGlhbG9nIGlzIHNob3duIGFzIGEgbW9kYWwgZGlhbG9nLiBPbmNlIHRoZSB1c2VyIGNvbmZpcm1zIHRoZSBkaWFsb2csIGFsbCB0cmFuc2l0aW9uIG1lc3NhZ2VzXG5cdCAqIGFyZSByZW1vdmVkIGZyb20gdGhlIG1lc3NhZ2UgbW9kZWwuIElmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgbWVzc2FnZSwgYSBsaXN0IG9mIG1lc3NhZ2VzIGlzIHNob3duLiBUaGUgdXNlclxuXHQgKiBjYW4gZmlsdGVyIG9uIG1lc3NhZ2UgdHlwZXMgYW5kIGNhbiBkaXNwbGF5IGRldGFpbHMgYXMgd2VsbCBhcyB0aGUgbG9uZyB0ZXh0LiBJZiB0aGVyZSBpcyBvbmUgbWVzc2FnZSxcblx0ICogdGhlIGRpYWxvZyBpbW1lZGlhdGVseSBzaG93cyB0aGUgZGV0YWlscyBvZiB0aGUgbWVzc2FnZS4gSWYgdGhlcmUgaXMganVzdCBvbmUgc3VjY2VzcyBtZXNzYWdlLCBhIG1lc3NhZ2Vcblx0ICogdG9hc3QgaXMgc2hvd24gaW5zdGVhZC5cblx0ICpcblx0ICogQHBhcmFtIG1QYXJhbWV0ZXJzIFBSSVZBVEVcblx0ICogQHJldHVybnMge1Byb21pc2V9IEEgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIG9uY2UgdGhlIHVzZXIgY2xvc2VzIHRoZSBkaWFsb2cuIElmIHRoZXJlIGFyZSBubyBtZXNzYWdlc1xuXHQgKiB0byBiZSBzaG93biwgdGhlIHByb21pc2UgaXMgcmVzb2x2ZWQgaW1tZWRpYXRlbHlcblx0ICogQGFsaWFzIHNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLk1lc3NhZ2VIYW5kbGVyI3Nob3dNZXNzYWdlRGlhbG9nXG5cdCAqIEBwdWJsaWNcblx0ICogQGV4cGVyaW1lbnRhbCBBcyBvZiB2ZXJzaW9uIDEuOTAuMFxuXHQgKiBAc2luY2UgMS45MC4wXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0c2hvd01lc3NhZ2VEaWFsb2cobVBhcmFtZXRlcnM/OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBjdXN0b21NZXNzYWdlcyA9IG1QYXJhbWV0ZXJzICYmIG1QYXJhbWV0ZXJzLmN1c3RvbU1lc3NhZ2VzID8gbVBhcmFtZXRlcnMuY3VzdG9tTWVzc2FnZXMgOiB1bmRlZmluZWQsXG5cdFx0XHRvT1BJbnRlcm5hbEJpbmRpbmdDb250ZXh0ID0gdGhpcy5iYXNlLmdldFZpZXcoKS5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXHRcdC8vIHNldCBpc0FjdGlvblBhcmFtZXRlckRpYWxvZyBvcGVuIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgaW4gdGhlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIHRvIGRlY2lkZSB3aGV0aGVyIG1lc3NhZ2UgZGlhbG9nIHNob3VsZCBvcGVuIG9yIG5vdFxuXHRcdGlmIChtUGFyYW1ldGVycyAmJiBtUGFyYW1ldGVycy5pc0FjdGlvblBhcmFtZXRlckRpYWxvZ09wZW4gJiYgb09QSW50ZXJuYWxCaW5kaW5nQ29udGV4dCkge1xuXHRcdFx0b09QSW50ZXJuYWxCaW5kaW5nQ29udGV4dC5zZXRQcm9wZXJ0eShcImlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nT3BlblwiLCB0cnVlKTtcblx0XHR9XG5cdFx0Y29uc3QgYlNob3dCb3VuZE1lc3NhZ2VzID0gdGhpcy5nZXRTaG93Qm91bmRNZXNzYWdlc0luTWVzc2FnZURpYWxvZygpO1xuXHRcdGNvbnN0IG9CaW5kaW5nQ29udGV4dCA9IG1QYXJhbWV0ZXJzICYmIG1QYXJhbWV0ZXJzLmNvbnRleHQgPyBtUGFyYW1ldGVycy5jb250ZXh0IDogdGhpcy5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoKTtcblx0XHRjb25zdCBiRXRhZ01lc3NhZ2UgPSBtUGFyYW1ldGVycyAmJiBtUGFyYW1ldGVycy5iSGFzRXRhZ01lc3NhZ2U7XG5cdFx0Ly8gcmVzZXQgIGlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nT3BlblxuXHRcdC8vIGNhbm5vdCBkbyB0aGlzIG9wZXJhdGlvbnMuanMgc2luY2UgaXQgaXMgbm90IGF3YXJlIG9mIHRoZSB2aWV3XG5cdFx0aWYgKG9PUEludGVybmFsQmluZGluZ0NvbnRleHQpIHtcblx0XHRcdG9PUEludGVybmFsQmluZGluZ0NvbnRleHQuc2V0UHJvcGVydHkoXCJpc0FjdGlvblBhcmFtZXRlckRpYWxvZ09wZW5cIiwgZmFsc2UpO1xuXHRcdH1cblx0XHRyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmU6ICh2YWx1ZTogYW55KSA9PiB2b2lkLCByZWplY3Q6IChyZWFzb24/OiBhbnkpID0+IHZvaWQpIHtcblx0XHRcdC8vIHdlIGhhdmUgdG8gc2V0IGEgdGltZW91dCB0byBiZSBhYmxlIHRvIGFjY2VzcyB0aGUgbW9zdCByZWNlbnQgbWVzc2FnZXNcblx0XHRcdHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHQvLyBUT0RPOiBncmVhdCBBUEkgLSB3aWxsIGJlIGNoYW5nZWQgbGF0ZXJcblx0XHRcdFx0bWVzc2FnZUhhbmRsaW5nXG5cdFx0XHRcdFx0LnNob3dVbmJvdW5kTWVzc2FnZXMoY3VzdG9tTWVzc2FnZXMsIG9CaW5kaW5nQ29udGV4dCwgYkV0YWdNZXNzYWdlLCBiU2hvd0JvdW5kTWVzc2FnZXMsIG1QYXJhbWV0ZXJzPy5lcnJvclRhcmdldHNJbkFQTSlcblx0XHRcdFx0XHQudGhlbihyZXNvbHZlKVxuXHRcdFx0XHRcdC5jYXRjaChyZWplY3QpO1xuXHRcdFx0fSwgMCk7XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogWW91IGNhbiByZW1vdmUgdGhlIGV4aXN0aW5nIHRyYW5zaXRpb24gbWVzc2FnZSBmcm9tIHRoZSBtZXNzYWdlIG1vZGVsIHdpdGggdGhpcyBtZXRob2QuXG5cdCAqIFdpdGggZXZlcnkgdXNlciBpbnRlcmFjdGlvbiB0aGF0IGNhdXNlcyBzZXJ2ZXIgY29tbXVuaWNhdGlvbiAobGlrZSBjbGlja2luZyBvbiBhbiBhY3Rpb24sIGNoYW5naW5nIGRhdGEpLFxuXHQgKiB0aGlzIG1ldGhvZCByZW1vdmVzIHRoZSBleGlzdGluZyB0cmFuc2l0aW9uIG1lc3NhZ2VzIGZyb20gdGhlIG1lc3NhZ2UgbW9kZWwuXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gW2tlZXBCb3VuZE1lc3NhZ2VdIENoZWNrcyBpZiB0aGUgYm91bmQgdHJhbnNpdGlvbiBtZXNzYWdlcyBhcmUgbm90IHRvIGJlIHJlbW92ZWRcblx0ICpcblx0ICogQGFsaWFzIHNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLk1lc3NhZ2VIYW5kbGVyI3JlbW92ZXNUcmFuc2l0aW9uTWVzc2FnZXNcblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRyZW1vdmVUcmFuc2l0aW9uTWVzc2FnZXMoa2VlcEJvdW5kTWVzc2FnZT86IGJvb2xlYW4pIHtcblx0XHRpZiAoIWtlZXBCb3VuZE1lc3NhZ2UpIHtcblx0XHRcdG1lc3NhZ2VIYW5kbGluZy5yZW1vdmVCb3VuZFRyYW5zaXRpb25NZXNzYWdlcygpO1xuXHRcdH1cblx0XHRtZXNzYWdlSGFuZGxpbmcucmVtb3ZlVW5ib3VuZFRyYW5zaXRpb25NZXNzYWdlcygpO1xuXHR9XG5cblx0X2NoZWNrTmF2aWdhdGlvblRvTWVzc2FnZVBhZ2UobVBhcmFtZXRlcnM6IGFueSkge1xuXHRcdGNvbnN0IGFVbmJvdW5kTWVzc2FnZXMgPSBtZXNzYWdlSGFuZGxpbmcuZ2V0TWVzc2FnZXMoKTtcblx0XHRjb25zdCBiU2hvd0JvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzID0gdGhpcy5nZXRTaG93Qm91bmRNZXNzYWdlc0luTWVzc2FnZURpYWxvZygpO1xuXHRcdGNvbnN0IGFCb3VuZFRyYW5zaXRpb25NZXNzYWdlcyA9IGJTaG93Qm91bmRUcmFuc2l0aW9uTWVzc2FnZXMgPyBtZXNzYWdlSGFuZGxpbmcuZ2V0TWVzc2FnZXModHJ1ZSwgdHJ1ZSkgOiBbXTtcblx0XHRjb25zdCBhQ3VzdG9tTWVzc2FnZXMgPSBtUGFyYW1ldGVycyAmJiBtUGFyYW1ldGVycy5jdXN0b21NZXNzYWdlcyA/IG1QYXJhbWV0ZXJzLmN1c3RvbU1lc3NhZ2VzIDogW107XG5cdFx0Y29uc3QgYklzU3RpY2t5RWRpdE1vZGUgPSBDb21tb25VdGlscy5pc1N0aWNreUVkaXRNb2RlKHRoaXMuYmFzZS5nZXRWaWV3KCkpO1xuXHRcdGxldCBtTWVzc2FnZVBhZ2VQYXJhbWV0ZXJzO1xuXG5cdFx0Ly8gVE9ETzogU3RpY2sgbW9kZSBjaGVjayBpcyBva2F5IGFzIGxvbmcgYXMgdGhlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGlzIHVzZWQgd2l0aCBzYXAuZmUuY29yZSBhbmQgc2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50LlxuXHRcdC8vIEl0IG1pZ2h0IGJlIGJldHRlciB0byBwcm92aWRlIGFuIGV4dGVuc2lvbiB0byB0aGUgY29uc3VtZXIgb2YgdGhlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIHRvIHByb3ZpZGUgdGhpcyB2YWx1ZS5cblxuXHRcdC8vIFRoZSBtZXNzYWdlIHBhZ2UgY2FuIG9ubHkgc2hvdyAxIG1lc3NhZ2UgdG9kYXksIHNvIHdlIG5hdmlnYXRlIHRvIGl0IHdoZW4gOlxuXHRcdC8vIDEuIFRoZXJlIGFyZSBubyBib3VuZCB0cmFuc2l0aW9uIG1lc3NhZ2VzIHRvIHNob3csXG5cdFx0Ly8gMi4gVGhlcmUgYXJlIG5vIGN1c3RvbSBtZXNzYWdlcyB0byBzaG93LCAmXG5cdFx0Ly8gMy4gVGhlcmUgaXMgZXhhY3RseSAxIHVuYm91bmQgbWVzc2FnZSBpbiB0aGUgbWVzc2FnZSBtb2RlbCB3aXRoIHN0YXR1c0NvZGU9NTAzIGFuZCByZXRyeS1BZnRlciBhdmFpbGFibGVcblx0XHQvLyA0LiByZXRyeUFmdGVyIGlzIGdyZWF0ZXIgdGhhbiAxMjAgc2Vjb25kc1xuXHRcdC8vXG5cdFx0Ly8gSW4gQWRkaXRpb24sIG5hdmlnYXRpbmcgYXdheSBmcm9tIGEgc3RpY2t5IHNlc3Npb24gd2lsbCBkZXN0cm95IHRoZSBzZXNzaW9uIHNvIHdlIGRvIG5vdCBuYXZpZ2F0ZSB0byBtZXNzYWdlIHBhZ2UgZm9yIG5vdy5cblx0XHQvLyBUT0RPOiBjaGVjayBpZiBuYXZpZ2F0aW9uIHNob3VsZCBiZSBkb25lIGluIHN0aWNreSBlZGl0IG1vZGUuXG5cdFx0aWYgKG1QYXJhbWV0ZXJzICYmIG1QYXJhbWV0ZXJzLmlzRGF0YVJlY2VpdmVkRXJyb3IpIHtcblx0XHRcdG1NZXNzYWdlUGFnZVBhcmFtZXRlcnMgPSB7XG5cdFx0XHRcdHRpdGxlOiBtUGFyYW1ldGVycy50aXRsZSxcblx0XHRcdFx0ZGVzY3JpcHRpb246IG1QYXJhbWV0ZXJzLmRlc2NyaXB0aW9uLFxuXHRcdFx0XHRuYXZpZ2F0ZUJhY2tUb09yaWdpbjogdHJ1ZVxuXHRcdFx0fTtcblx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0IWJJc1N0aWNreUVkaXRNb2RlICYmXG5cdFx0XHQhYUJvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzLmxlbmd0aCAmJlxuXHRcdFx0IWFDdXN0b21NZXNzYWdlcy5sZW5ndGggJiZcblx0XHRcdChhVW5ib3VuZE1lc3NhZ2VzLmxlbmd0aCA9PT0gMSB8fCAobVBhcmFtZXRlcnMgJiYgbVBhcmFtZXRlcnMuaXNJbml0aWFsTG9hZDUwM0Vycm9yKSlcblx0XHQpIHtcblx0XHRcdGNvbnN0IG9NZXNzYWdlID0gYVVuYm91bmRNZXNzYWdlc1swXSxcblx0XHRcdFx0b1RlY2huaWNhbERldGFpbHMgPSBvTWVzc2FnZS5nZXRUZWNobmljYWxEZXRhaWxzKCk7XG5cdFx0XHRsZXQgc1JldHJ5QWZ0ZXJNZXNzYWdlO1xuXHRcdFx0aWYgKG9UZWNobmljYWxEZXRhaWxzICYmIG9UZWNobmljYWxEZXRhaWxzLmh0dHBTdGF0dXMgPT09IDUwMykge1xuXHRcdFx0XHRpZiAob1RlY2huaWNhbERldGFpbHMucmV0cnlBZnRlcikge1xuXHRcdFx0XHRcdGNvbnN0IGlTZWNvbmRzQmVmb3JlUmV0cnkgPSB0aGlzLl9nZXRTZWNvbmRzQmVmb3JlUmV0cnlBZnRlcihvVGVjaG5pY2FsRGV0YWlscy5yZXRyeUFmdGVyKTtcblx0XHRcdFx0XHRpZiAoaVNlY29uZHNCZWZvcmVSZXRyeSA+IDEyMCkge1xuXHRcdFx0XHRcdFx0Ly8gVE9ETzogRm9yIG5vdyBsZXQncyBrZWVwIGdldFJldHJ5QWZ0ZXJNZXNzYWdlIGluIG1lc3NhZ2VIYW5kbGluZyBiZWNhdXNlIGl0IGlzIG5lZWRlZCBhbHNvIGJ5IHRoZSBkaWFsb2cuXG5cdFx0XHRcdFx0XHQvLyBXZSBjYW4gcGxhbiB0byBtb3ZlIHRoaXMgYW5kIHRoZSBkaWFsb2cgbG9naWMgYm90aCB0byBtZXNzYWdlSGFuZGxlciBjb250cm9sbGVyIGV4dGVuc2lvbiBpZiByZXF1aXJlZC5cblx0XHRcdFx0XHRcdHNSZXRyeUFmdGVyTWVzc2FnZSA9IG1lc3NhZ2VIYW5kbGluZy5nZXRSZXRyeUFmdGVyTWVzc2FnZShvTWVzc2FnZSk7XG5cdFx0XHRcdFx0XHRtTWVzc2FnZVBhZ2VQYXJhbWV0ZXJzID0ge1xuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogc1JldHJ5QWZ0ZXJNZXNzYWdlID8gc1JldHJ5QWZ0ZXJNZXNzYWdlICsgXCIgXCIgKyBvTWVzc2FnZS5nZXRNZXNzYWdlKCkgOiBvTWVzc2FnZS5nZXRNZXNzYWdlKCksXG5cdFx0XHRcdFx0XHRcdG5hdmlnYXRlQmFja1RvT3JpZ2luOiB0cnVlXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzUmV0cnlBZnRlck1lc3NhZ2UgPSBtZXNzYWdlSGFuZGxpbmcuZ2V0UmV0cnlBZnRlck1lc3NhZ2Uob01lc3NhZ2UpO1xuXHRcdFx0XHRcdG1NZXNzYWdlUGFnZVBhcmFtZXRlcnMgPSB7XG5cdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogc1JldHJ5QWZ0ZXJNZXNzYWdlID8gc1JldHJ5QWZ0ZXJNZXNzYWdlICsgXCIgXCIgKyBvTWVzc2FnZS5nZXRNZXNzYWdlKCkgOiBvTWVzc2FnZS5nZXRNZXNzYWdlKCksXG5cdFx0XHRcdFx0XHRuYXZpZ2F0ZUJhY2tUb09yaWdpbjogdHJ1ZVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIG1NZXNzYWdlUGFnZVBhcmFtZXRlcnM7XG5cdH1cblxuXHRfZ2V0U2Vjb25kc0JlZm9yZVJldHJ5QWZ0ZXIoZFJldHJ5QWZ0ZXI6IGFueSkge1xuXHRcdGNvbnN0IGRDdXJyZW50RGF0ZVRpbWUgPSBuZXcgRGF0ZSgpLFxuXHRcdFx0aUN1cnJlbnREYXRlVGltZUluTWlsbGlTZWNvbmRzID0gZEN1cnJlbnREYXRlVGltZS5nZXRUaW1lKCksXG5cdFx0XHRpUmV0cnlBZnRlckRhdGVUaW1lSW5NaWxsaVNlY29uZHMgPSBkUmV0cnlBZnRlci5nZXRUaW1lKCksXG5cdFx0XHRpU2Vjb25kc0JlZm9yZVJldHJ5ID0gKGlSZXRyeUFmdGVyRGF0ZVRpbWVJbk1pbGxpU2Vjb25kcyAtIGlDdXJyZW50RGF0ZVRpbWVJbk1pbGxpU2Vjb25kcykgLyAxMDAwO1xuXHRcdHJldHVybiBpU2Vjb25kc0JlZm9yZVJldHJ5O1xuXHR9XG5cdC8qKlxuXHQgKiBTaG93cyBhIG1lc3NhZ2UgcGFnZSBvciBhIG1lc3NhZ2UgZGlhbG9nIGJhc2VkIG9uIHRoZSBtZXNzYWdlcyBpbiB0aGUgbWVzc2FnZSBkaWFsb2cuXG5cdCAqIEBwYXJhbSBbbVBhcmFtZXRlcnNdXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfSBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCBvbmNlIHRoZSB1c2VyIGNsb3NlcyB0aGUgbWVzc2FnZSBkaWFsb2cgb3Igd2hlbiBuYXZpZ2F0aW9uIHRvIHRoZSBtZXNzYWdlIHBhZ2UgaXMgY29tcGxldGUuIElmIHRoZXJlIGFyZSBubyBtZXNzYWdlc1xuXHQgKiB0byBiZSBzaG93biwgdGhlIHByb21pc2UgaXMgcmVzb2x2ZWQgaW1tZWRpYXRlbHlcblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRzaG93TWVzc2FnZXMobVBhcmFtZXRlcnM/OiBhbnkpIHtcblx0XHRjb25zdCBvQXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHRoaXMuZ2V0VmlldygpKTtcblx0XHRsZXQgbU1lc3NhZ2VQYWdlUGFyYW1ldGVyczogYW55O1xuXHRcdGlmICghb0FwcENvbXBvbmVudC5faXNGY2xFbmFibGVkKCkpIHtcblx0XHRcdG1NZXNzYWdlUGFnZVBhcmFtZXRlcnMgPSB0aGlzLl9jaGVja05hdmlnYXRpb25Ub01lc3NhZ2VQYWdlKG1QYXJhbWV0ZXJzKTtcblx0XHR9XG5cdFx0aWYgKG1NZXNzYWdlUGFnZVBhcmFtZXRlcnMpIHtcblx0XHRcdC8vIG5hdmlnYXRlIHRvIG1lc3NhZ2UgcGFnZS5cblx0XHRcdC8vIGhhbmRsZXIgYmVmb3JlIHBhZ2UgbmF2aWdhdGlvbiBpcyB0cmlnZ2VyZWQsIGZvciBleGFtcGxlIHRvIGNsb3NlIHRoZSBhY3Rpb24gcGFyYW1ldGVyIGRpYWxvZ1xuXHRcdFx0bVBhcmFtZXRlcnMgJiYgbVBhcmFtZXRlcnMubWVzc2FnZVBhZ2VOYXZpZ2F0aW9uQ2FsbGJhY2sgJiYgbVBhcmFtZXRlcnMubWVzc2FnZVBhZ2VOYXZpZ2F0aW9uQ2FsbGJhY2soKTtcblxuXHRcdFx0bU1lc3NhZ2VQYWdlUGFyYW1ldGVycy5oYW5kbGVTaGVsbEJhY2sgPSAhKG1QYXJhbWV0ZXJzICYmIG1QYXJhbWV0ZXJzLnNoZWxsQmFjayk7XG5cdFx0XHQvLyBUT0RPOiBVc2UgSWxsdXN0cmF0ZWQgbWVzc2FnZSBpbnN0ZWFkIG9mIG5vcm1hbCBtZXNzYWdlIHBhZ2Vcblx0XHRcdC8vIFRPRE86IFJldHVybiB2YWx1ZSBuZWVkcyB0byBwcm92aWRlZCBidXQgc2luY2UgdGhpcyBmdW5jdGlvbiBpcyBwcml2YXRlIGZvciBub3cgaGVuY2Ugd2UgY2FuIHNraXAgdGhpcy5cblx0XHRcdHRoaXMucmVtb3ZlVHJhbnNpdGlvbk1lc3NhZ2VzKCk7XG5cdFx0XHRjb25zdCBvUmVzb3VyY2VCdW5kbGUgPSAoQ29yZSBhcyBDb3JlRXgpLmdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZShcInNhcC5mZS5jb3JlXCIpO1xuXHRcdFx0aWYgKHRoaXMuYmFzZS5fcm91dGluZykge1xuXHRcdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IGFueSwgcmVqZWN0OiBhbnkpID0+IHtcblx0XHRcdFx0XHQvLyB3ZSBoYXZlIHRvIHNldCBhIHRpbWVvdXQgdG8gYmUgYWJsZSB0byBhY2Nlc3MgdGhlIG1vc3QgcmVjZW50IG1lc3NhZ2VzXG5cdFx0XHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0XHQvLyBUT0RPOiBncmVhdCBBUEkgLSB3aWxsIGJlIGNoYW5nZWQgbGF0ZXJcblx0XHRcdFx0XHRcdHRoaXMuYmFzZS5fcm91dGluZ1xuXHRcdFx0XHRcdFx0XHQubmF2aWdhdGVUb01lc3NhZ2VQYWdlKFxuXHRcdFx0XHRcdFx0XHRcdG1QYXJhbWV0ZXJzICYmIG1QYXJhbWV0ZXJzLmlzRGF0YVJlY2VpdmVkRXJyb3Jcblx0XHRcdFx0XHRcdFx0XHRcdD8gb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX0NPTU1PTl9TQVBGRV9EQVRBX1JFQ0VJVkVEX0VSUk9SXCIpXG5cdFx0XHRcdFx0XHRcdFx0XHQ6IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19NRVNTQUdFX0hBTkRMSU5HX1NBUEZFXzUwM19USVRMRVwiKSxcblx0XHRcdFx0XHRcdFx0XHRtTWVzc2FnZVBhZ2VQYXJhbWV0ZXJzXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0LnRoZW4ocmVzb2x2ZSlcblx0XHRcdFx0XHRcdFx0LmNhdGNoKHJlamVjdCk7XG5cdFx0XHRcdFx0fSwgMCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBuYXZpZ2F0ZSB0byBtZXNzYWdlIGRpYWxvZ1xuXHRcdFx0cmV0dXJuIHRoaXMuc2hvd01lc3NhZ2VEaWFsb2cobVBhcmFtZXRlcnMpO1xuXHRcdH1cblx0fVxufVxuZXhwb3J0IGRlZmF1bHQgTWVzc2FnZUhhbmRsZXI7XG4iXX0=
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import ControllerExtension from "sap/ui/core/mvc/ControllerExtension";
|
|
2
|
-
import OverrideExecution from "sap/ui/core/mvc/OverrideExecution";
|
|
3
|
-
import messageHandling from "sap/fe/core/actions/messageHandling";
|
|
4
1
|
import CommonUtils from "sap/fe/core/CommonUtils";
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import ResourceBundle from "sap/base/i18n/ResourceBundle";
|
|
8
|
-
import PageController from "sap/fe/core/PageController";
|
|
2
|
+
import messageHandling from "sap/fe/core/controllerextensions/messageHandler/messageHandling";
|
|
3
|
+
import { defineUI5Class, extensible, finalExtension, privateExtension, publicExtension } from "sap/fe/core/helpers/ClassSupport";
|
|
9
4
|
import { InternalModelContext } from "sap/fe/core/helpers/ModelHelper";
|
|
5
|
+
import PageController from "sap/fe/core/PageController";
|
|
6
|
+
import Core from "sap/ui/core/Core";
|
|
7
|
+
import ControllerExtension from "sap/ui/core/mvc/ControllerExtension";
|
|
8
|
+
import OverrideExecution from "sap/ui/core/mvc/OverrideExecution";
|
|
9
|
+
import { CoreEx } from "types/extension_types";
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* A controller extension offering message handling.
|
|
@@ -16,19 +16,9 @@ import { InternalModelContext } from "sap/fe/core/helpers/ModelHelper";
|
|
|
16
16
|
* @experimental As of version 1.90.0
|
|
17
17
|
* @since 1.90.0
|
|
18
18
|
*/
|
|
19
|
-
@
|
|
19
|
+
@defineUI5Class("sap.fe.core.controllerextensions.MessageHandler")
|
|
20
20
|
class MessageHandler extends ControllerExtension {
|
|
21
|
-
|
|
22
|
-
* @private
|
|
23
|
-
* @name sap.fe.core.controllerextensions.MessageHandler.getMetadata
|
|
24
|
-
* @function
|
|
25
|
-
*/
|
|
26
|
-
/**
|
|
27
|
-
* @private
|
|
28
|
-
* @name sap.fe.core.controllerextensions.MessageHandler.extend
|
|
29
|
-
* @function
|
|
30
|
-
*/
|
|
31
|
-
private base!: PageController;
|
|
21
|
+
protected base!: PageController;
|
|
32
22
|
/**
|
|
33
23
|
* Determines whether or not bound messages are shown in the message dialog.
|
|
34
24
|
*
|
|
@@ -41,8 +31,8 @@ class MessageHandler extends ControllerExtension {
|
|
|
41
31
|
* @returns {boolean} Determines whether or not bound messages are shown in the message dialog.
|
|
42
32
|
* @private
|
|
43
33
|
*/
|
|
44
|
-
@
|
|
45
|
-
@
|
|
34
|
+
@privateExtension()
|
|
35
|
+
@extensible(OverrideExecution.Instead)
|
|
46
36
|
getShowBoundMessagesInMessageDialog() {
|
|
47
37
|
return true;
|
|
48
38
|
}
|
|
@@ -63,8 +53,8 @@ class MessageHandler extends ControllerExtension {
|
|
|
63
53
|
* @experimental As of version 1.90.0
|
|
64
54
|
* @since 1.90.0
|
|
65
55
|
*/
|
|
66
|
-
@
|
|
67
|
-
@
|
|
56
|
+
@publicExtension()
|
|
57
|
+
@finalExtension()
|
|
68
58
|
showMessageDialog(mParameters?: any): Promise<void> {
|
|
69
59
|
const customMessages = mParameters && mParameters.customMessages ? mParameters.customMessages : undefined,
|
|
70
60
|
oOPInternalBindingContext = this.base.getView().getBindingContext("internal") as InternalModelContext;
|
|
@@ -80,12 +70,12 @@ class MessageHandler extends ControllerExtension {
|
|
|
80
70
|
if (oOPInternalBindingContext) {
|
|
81
71
|
oOPInternalBindingContext.setProperty("isActionParameterDialogOpen", false);
|
|
82
72
|
}
|
|
83
|
-
return new Promise(function(resolve: (value: any) => void, reject: (reason?: any) => void) {
|
|
73
|
+
return new Promise(function (resolve: (value: any) => void, reject: (reason?: any) => void) {
|
|
84
74
|
// we have to set a timeout to be able to access the most recent messages
|
|
85
|
-
setTimeout(function() {
|
|
75
|
+
setTimeout(function () {
|
|
86
76
|
// TODO: great API - will be changed later
|
|
87
77
|
messageHandling
|
|
88
|
-
.showUnboundMessages(customMessages, oBindingContext, bEtagMessage, bShowBoundMessages)
|
|
78
|
+
.showUnboundMessages(customMessages, oBindingContext, bEtagMessage, bShowBoundMessages, mParameters?.errorTargetsInAPM)
|
|
89
79
|
.then(resolve)
|
|
90
80
|
.catch(reject);
|
|
91
81
|
}, 0);
|
|
@@ -101,7 +91,7 @@ class MessageHandler extends ControllerExtension {
|
|
|
101
91
|
* @alias sap.fe.core.controllerextensions.MessageHandler#removesTransitionMessages
|
|
102
92
|
* @private
|
|
103
93
|
*/
|
|
104
|
-
@
|
|
94
|
+
@publicExtension()
|
|
105
95
|
removeTransitionMessages(keepBoundMessage?: boolean) {
|
|
106
96
|
if (!keepBoundMessage) {
|
|
107
97
|
messageHandling.removeBoundTransitionMessages();
|
|
@@ -181,8 +171,8 @@ class MessageHandler extends ControllerExtension {
|
|
|
181
171
|
* to be shown, the promise is resolved immediately
|
|
182
172
|
* @private
|
|
183
173
|
*/
|
|
184
|
-
@
|
|
185
|
-
@
|
|
174
|
+
@publicExtension()
|
|
175
|
+
@finalExtension()
|
|
186
176
|
showMessages(mParameters?: any) {
|
|
187
177
|
const oAppComponent = CommonUtils.getAppComponent(this.getView());
|
|
188
178
|
let mMessagePageParameters: any;
|
|
@@ -198,7 +188,7 @@ class MessageHandler extends ControllerExtension {
|
|
|
198
188
|
// TODO: Use Illustrated message instead of normal message page
|
|
199
189
|
// TODO: Return value needs to provided but since this function is private for now hence we can skip this.
|
|
200
190
|
this.removeTransitionMessages();
|
|
201
|
-
const oResourceBundle =
|
|
191
|
+
const oResourceBundle = (Core as CoreEx).getLibraryResourceBundle("sap.fe.core");
|
|
202
192
|
if (this.base._routing) {
|
|
203
193
|
return new Promise((resolve: any, reject: any) => {
|
|
204
194
|
// we have to set a timeout to be able to access the most recent messages
|