@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,3 +1,4 @@
|
|
|
1
|
+
import { Property } from "@sap-ux/annotation-converter";
|
|
1
2
|
import {
|
|
2
3
|
CommunicationAnnotationTypes,
|
|
3
4
|
Contact,
|
|
@@ -10,11 +11,15 @@ import {
|
|
|
10
11
|
UIAnnotationTypes
|
|
11
12
|
} from "@sap-ux/vocabularies-types";
|
|
12
13
|
import * as Edm from "@sap-ux/vocabularies-types/dist/Edm";
|
|
14
|
+
import { TableType } from "sap/fe/core/converters/controls/Common/Table";
|
|
13
15
|
import { getDisplayMode, PropertyOrPath } from "sap/fe/core/templating/DisplayModeFormatter";
|
|
14
|
-
import {
|
|
15
|
-
|
|
16
|
+
import {
|
|
17
|
+
getAssociatedCurrencyProperty,
|
|
18
|
+
getAssociatedTimezoneProperty,
|
|
19
|
+
getAssociatedUnitProperty,
|
|
20
|
+
isProperty
|
|
21
|
+
} from "sap/fe/core/templating/PropertyHelper";
|
|
16
22
|
import ConverterContext from "../ConverterContext";
|
|
17
|
-
import { TableType } from "sap/fe/core/converters/controls/Common/Table";
|
|
18
23
|
|
|
19
24
|
export type ComplexPropertyInfo = {
|
|
20
25
|
properties: Record<string, Property>;
|
|
@@ -25,6 +30,8 @@ export type ComplexPropertyInfo = {
|
|
|
25
30
|
visualSettingsToBeExcluded?: string;
|
|
26
31
|
exportUnitName?: string;
|
|
27
32
|
exportUnitString?: string;
|
|
33
|
+
exportTimezoneName?: string;
|
|
34
|
+
exportTimezoneString?: string;
|
|
28
35
|
};
|
|
29
36
|
|
|
30
37
|
/**
|
|
@@ -93,6 +100,7 @@ function _getNavigationPathPrefix(path: string): string {
|
|
|
93
100
|
* Collect additional properties for the ALP table use-case.
|
|
94
101
|
*
|
|
95
102
|
* For e.g. If UI.Hidden points to a property, include this property in the additionalProperties of ComplexPropertyInfo object.
|
|
103
|
+
*
|
|
96
104
|
* @param target Property or DataField being processed
|
|
97
105
|
* @param navigationPathPrefix Navigation path prefix, applicable in case of navigation properties.
|
|
98
106
|
* @param tableType Table type.
|
|
@@ -170,6 +178,7 @@ export function collectRelatedProperties(
|
|
|
170
178
|
let valueIndex: number;
|
|
171
179
|
let targetValue: string;
|
|
172
180
|
let currencyOrUoMIndex: number;
|
|
181
|
+
let timezoneOrUoMIndex: number;
|
|
173
182
|
|
|
174
183
|
if (relatedProperties.exportSettingsTemplate) {
|
|
175
184
|
// FieldGroup use-case. Need to add each Field in new line.
|
|
@@ -187,7 +196,6 @@ export function collectRelatedProperties(
|
|
|
187
196
|
case "Value":
|
|
188
197
|
valueIndex = _pushUnique(path, property);
|
|
189
198
|
_appendTemplate(`{${valueIndex}}`);
|
|
190
|
-
relatedProperties.visualSettingsToBeExcluded = textAnnotationPropertyPath;
|
|
191
199
|
break;
|
|
192
200
|
|
|
193
201
|
case "Description":
|
|
@@ -211,9 +219,12 @@ export function collectRelatedProperties(
|
|
|
211
219
|
break;
|
|
212
220
|
}
|
|
213
221
|
} else {
|
|
214
|
-
// Check for field containing Currency Or Unit Properties
|
|
222
|
+
// Check for field containing Currency Or Unit Properties or Timezone
|
|
215
223
|
const currencyOrUoMProperty = getAssociatedCurrencyProperty(property) || getAssociatedUnitProperty(property);
|
|
216
224
|
const currencyOrUnitAnnotation = property?.annotations?.Measures?.ISOCurrency || property?.annotations?.Measures?.Unit;
|
|
225
|
+
const timezoneProperty = getAssociatedTimezoneProperty(property);
|
|
226
|
+
const timezoneAnnotation = property?.annotations?.Common?.Timezone;
|
|
227
|
+
|
|
217
228
|
if (currencyOrUoMProperty && currencyOrUnitAnnotation?.$target) {
|
|
218
229
|
valueIndex = _pushUnique(path, property);
|
|
219
230
|
currencyOrUoMIndex = _pushUnique(currencyOrUoMProperty.name, currencyOrUnitAnnotation.$target);
|
|
@@ -222,6 +233,14 @@ export function collectRelatedProperties(
|
|
|
222
233
|
} else {
|
|
223
234
|
relatedProperties.exportUnitName = currencyOrUoMProperty.name;
|
|
224
235
|
}
|
|
236
|
+
} else if (timezoneProperty && timezoneAnnotation?.$target) {
|
|
237
|
+
valueIndex = _pushUnique(path, property);
|
|
238
|
+
timezoneOrUoMIndex = _pushUnique(timezoneProperty.name, timezoneAnnotation.$target);
|
|
239
|
+
if (addUnitInTemplate) {
|
|
240
|
+
_appendTemplate(`{${valueIndex}} {${timezoneOrUoMIndex}}`);
|
|
241
|
+
} else {
|
|
242
|
+
relatedProperties.exportTimezoneName = timezoneProperty.name;
|
|
243
|
+
}
|
|
225
244
|
} else if (property.Target?.$target?.Visualization) {
|
|
226
245
|
const dataPointProperty: Edm.PrimitiveType = property.Target.$target.Value.$target;
|
|
227
246
|
valueIndex = _pushUnique(path, dataPointProperty);
|
|
@@ -250,6 +269,8 @@ export function collectRelatedProperties(
|
|
|
250
269
|
_appendTemplate(`{${valueIndex}}`);
|
|
251
270
|
if (currencyOrUnitAnnotation) {
|
|
252
271
|
relatedProperties.exportUnitString = `${currencyOrUnitAnnotation}`; // Hard-coded currency/unit
|
|
272
|
+
} else if (timezoneAnnotation) {
|
|
273
|
+
relatedProperties.exportTimezoneString = `${timezoneAnnotation}`; // Hard-coded timezone
|
|
253
274
|
}
|
|
254
275
|
}
|
|
255
276
|
}
|
|
@@ -340,7 +361,7 @@ export function collectRelatedPropertiesRecursively(
|
|
|
340
361
|
return relatedProperties;
|
|
341
362
|
}
|
|
342
363
|
|
|
343
|
-
export const getDataFieldDataType = function(oDataField: DataFieldAbstractTypes | Property): string | undefined {
|
|
364
|
+
export const getDataFieldDataType = function (oDataField: DataFieldAbstractTypes | Property): string | undefined {
|
|
344
365
|
let sDataType: string | undefined = (oDataField as DataFieldAbstractTypes).$Type;
|
|
345
366
|
switch (sDataType) {
|
|
346
367
|
case UIAnnotationTypes.DataFieldForAction:
|
|
@@ -2,26 +2,26 @@
|
|
|
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/fe/core/converters/
|
|
5
|
+
sap.ui.define(["sap/fe/core/converters/helpers/BindingHelper", "sap/fe/core/converters/helpers/ConfigurableObject", "sap/fe/core/converters/helpers/ID", "sap/fe/core/converters/ManifestSettings", "sap/fe/core/formatters/FPMFormatter", "sap/fe/core/helpers/BindingExpression", "sap/fe/core/helpers/StableIdHelper"], function (BindingHelper, ConfigurableObject, ID, ManifestSettings, fpmFormatter, BindingExpression, StableIdHelper) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _exports = {};
|
|
9
|
-
var
|
|
10
|
-
var greaterOrEqual = BindingExpression.greaterOrEqual;
|
|
11
|
-
var and = BindingExpression.and;
|
|
12
|
-
var ifElse = BindingExpression.ifElse;
|
|
13
|
-
var equal = BindingExpression.equal;
|
|
9
|
+
var replaceSpecialChars = StableIdHelper.replaceSpecialChars;
|
|
14
10
|
var resolveBindingString = BindingExpression.resolveBindingString;
|
|
11
|
+
var or = BindingExpression.or;
|
|
15
12
|
var isConstant = BindingExpression.isConstant;
|
|
13
|
+
var ifElse = BindingExpression.ifElse;
|
|
14
|
+
var greaterOrEqual = BindingExpression.greaterOrEqual;
|
|
16
15
|
var formatResult = BindingExpression.formatResult;
|
|
17
|
-
var
|
|
16
|
+
var equal = BindingExpression.equal;
|
|
18
17
|
var compileBinding = BindingExpression.compileBinding;
|
|
19
18
|
var bindingExpression = BindingExpression.bindingExpression;
|
|
20
19
|
var annotationExpression = BindingExpression.annotationExpression;
|
|
21
|
-
var
|
|
20
|
+
var and = BindingExpression.and;
|
|
21
|
+
var ActionType = ManifestSettings.ActionType;
|
|
22
22
|
var CustomActionID = ID.CustomActionID;
|
|
23
23
|
var Placement = ConfigurableObject.Placement;
|
|
24
|
-
var
|
|
24
|
+
var bindingContextPathVisitor = BindingHelper.bindingContextPathVisitor;
|
|
25
25
|
|
|
26
26
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
27
27
|
|
|
@@ -88,7 +88,7 @@ sap.ui.define(["sap/fe/core/converters/ManifestSettings", "sap/fe/core/converter
|
|
|
88
88
|
if (!action) {
|
|
89
89
|
action = actions[menuKey];
|
|
90
90
|
} else {
|
|
91
|
-
var _actions$action$key;
|
|
91
|
+
var _actions$action$key, _actions$action$key2;
|
|
92
92
|
|
|
93
93
|
//check if "enabled" is overwritten via a manifest entry
|
|
94
94
|
var enabled = (_actions$action$key = actions[action.key]) === null || _actions$action$key === void 0 ? void 0 : _actions$action$key.enabled;
|
|
@@ -96,6 +96,8 @@ sap.ui.define(["sap/fe/core/converters/ManifestSettings", "sap/fe/core/converter
|
|
|
96
96
|
if (enabled) {
|
|
97
97
|
action.enabled = enabled;
|
|
98
98
|
}
|
|
99
|
+
|
|
100
|
+
action.command = (_actions$action$key2 = actions[action.key]) === null || _actions$action$key2 === void 0 ? void 0 : _actions$action$key2.command;
|
|
99
101
|
}
|
|
100
102
|
|
|
101
103
|
if (((_action = action) !== null && _action !== void 0 && _action.visible || ((_action2 = action) === null || _action2 === void 0 ? void 0 : _action2.type) === ActionType.DataFieldForAction || ((_action3 = action) === null || _action3 === void 0 ? void 0 : _action3.type) === ActionType.DataFieldForIntentBasedNavigation) && !aHiddenHeaderActions.find(function (hiddenAction) {
|
|
@@ -232,6 +234,7 @@ sap.ui.define(["sap/fe/core/converters/ManifestSettings", "sap/fe/core/converter
|
|
|
232
234
|
placement: manifestAction.position === undefined ? Placement.After : manifestAction.position.placement
|
|
233
235
|
},
|
|
234
236
|
isNavigable: isActionNavigable(manifestAction, navigationSettings, considerNavigationSettings),
|
|
237
|
+
command: manifestAction.command,
|
|
235
238
|
requiresSelection: manifestAction.requiresSelection === undefined ? false : manifestAction.requiresSelection,
|
|
236
239
|
enableAutoScroll: enableAutoScroll(manifestAction),
|
|
237
240
|
menu: (_manifestAction$menu2 = manifestAction.menu) !== null && _manifestAction$menu2 !== void 0 ? _manifestAction$menu2 : [],
|
|
@@ -289,16 +292,6 @@ sap.ui.define(["sap/fe/core/converters/ManifestSettings", "sap/fe/core/converter
|
|
|
289
292
|
if ((actionTarget === null || actionTarget === void 0 ? void 0 : actionTarget.isBound) !== true) {
|
|
290
293
|
return true;
|
|
291
294
|
}
|
|
292
|
-
/*
|
|
293
|
-
FIXME Disable failing music tests
|
|
294
|
-
Currently on CAP the following binding (which is the good one) generates error:
|
|
295
|
-
if (actionTarget?.annotations.Core?.OperationAvailable === null) {
|
|
296
|
-
const unboundActionName = actionTarget.fullyQualifiedName.split("(")[0];
|
|
297
|
-
return "{= !${#" + unboundActionName + "} ? false : true } }";
|
|
298
|
-
}
|
|
299
|
-
CAP tries to read the action as property and doesn't find it
|
|
300
|
-
*/
|
|
301
|
-
|
|
302
295
|
|
|
303
296
|
if (actionTarget !== null && actionTarget !== void 0 && (_actionTarget$paramet = actionTarget.parameters) !== null && _actionTarget$paramet !== void 0 && _actionTarget$paramet.length) {
|
|
304
297
|
var _actionTarget$annotat, _actionTarget$annotat2;
|
|
@@ -363,4 +356,4 @@ sap.ui.define(["sap/fe/core/converters/ManifestSettings", "sap/fe/core/converter
|
|
|
363
356
|
_exports.enableAutoScroll = enableAutoScroll;
|
|
364
357
|
return _exports;
|
|
365
358
|
}, false);
|
|
366
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFjdGlvbi50cyJdLCJuYW1lcyI6WyJCdXR0b25UeXBlIiwicHJlcGFyZU1lbnVBY3Rpb24iLCJhY3Rpb25zIiwiYUFubm90YXRpb25BY3Rpb25zIiwiYUhpZGRlbkhlYWRlckFjdGlvbnMiLCJhbGxBY3Rpb25zIiwibWVudUl0ZW1LZXlzIiwiYWN0aW9uS2V5IiwibWFuaWZlc3RBY3Rpb24iLCJ0eXBlIiwiQWN0aW9uVHlwZSIsIk1lbnUiLCJtZW51SXRlbXMiLCJtZW51VmlzaWJsZSIsIl9tZW51SXRlbUtleXMiLCJtZW51IiwibWFwIiwibWVudUtleSIsImFjdGlvbiIsImZpbmQiLCJrZXkiLCJlbmFibGVkIiwidmlzaWJsZSIsIkRhdGFGaWVsZEZvckFjdGlvbiIsIkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbiIsImhpZGRlbkFjdGlvbiIsImNvbXBpbGVCaW5kaW5nIiwib3IiLCJyZXNvbHZlQmluZGluZ1N0cmluZyIsInB1c2giLCJsZW5ndGgiLCJmb3JFYWNoIiwicmVtb3ZlRHVwbGljYXRlQWN0aW9ucyIsIm9NZW51SXRlbUtleXMiLCJyZWR1Y2UiLCJpdGVtIiwiZmlsdGVyIiwiX2dldE1hbmlmZXN0RW5hYmxlZCIsImlzQW5ub3RhdGlvbkFjdGlvbiIsImNvbnZlcnRlckNvbnRleHQiLCJ1bmRlZmluZWQiLCJnZXRNYW5pZmVzdEFjdGlvbkVuYWJsZW1lbnQiLCJnZXRBY3Rpb25zRnJvbU1hbmlmZXN0IiwibWFuaWZlc3RBY3Rpb25zIiwibmF2aWdhdGlvblNldHRpbmdzIiwiY29uc2lkZXJOYXZpZ2F0aW9uU2V0dGluZ3MiLCJmYWNldE5hbWUiLCJsYXN0RG90SW5kZXgiLCJwcmVzcyIsImxhc3RJbmRleE9mIiwic29tZSIsImlkIiwiQ3VzdG9tQWN0aW9uSUQiLCJoYW5kbGVyTW9kdWxlIiwic3Vic3RyaW5nIiwicmVwbGFjZSIsImhhbmRsZXJNZXRob2QiLCJ0ZXh0Iiwibm9XcmFwIiwiX19ub1dyYXAiLCJyZXBsYWNlU3BlY2lhbENoYXJzIiwiZW5hYmxlT25TZWxlY3QiLCJkZWZhdWx0VmFsdWVzRXh0ZW5zaW9uRnVuY3Rpb24iLCJkZWZhdWx0VmFsdWVzRnVuY3Rpb24iLCJwb3NpdGlvbiIsImFuY2hvciIsInBsYWNlbWVudCIsIlBsYWNlbWVudCIsIkFmdGVyIiwiaXNOYXZpZ2FibGUiLCJpc0FjdGlvbk5hdmlnYWJsZSIsInJlcXVpcmVzU2VsZWN0aW9uIiwiZW5hYmxlQXV0b1Njcm9sbCIsImlubGluZSIsIkRlZmF1bHQiLCJyZXNvbHZlZEJpbmRpbmciLCJyZXN1bHQiLCJpc0NvbnN0YW50IiwidmFsdWUiLCJfdHlwZSIsIm1ldGhvZFBhdGgiLCJmb3JtYXRSZXN1bHQiLCJiaW5kaW5nRXhwcmVzc2lvbiIsImZwbUZvcm1hdHRlciIsImN1c3RvbUlzRW5hYmxlZENoZWNrIiwiZ2V0RW50aXR5VHlwZSIsImlmRWxzZSIsImFuZCIsImdyZWF0ZXJPckVxdWFsIiwiZ2V0RW5hYmxlZEZvckFubm90YXRpb25BY3Rpb24iLCJhY3Rpb25UYXJnZXQiLCJpc0JvdW5kIiwicGFyYW1ldGVycyIsImJpbmRpbmdQYXJhbWV0ZXJGdWxsTmFtZSIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsIm9wZXJhdGlvbkF2YWlsYWJsZUV4cHJlc3Npb24iLCJhbm5vdGF0aW9uRXhwcmVzc2lvbiIsImFubm90YXRpb25zIiwiQ29yZSIsIk9wZXJhdGlvbkF2YWlsYWJsZSIsInBhdGgiLCJiaW5kaW5nQ29udGV4dFBhdGhWaXNpdG9yIiwiZXF1YWwiLCJnZXRTZW1hbnRpY09iamVjdE1hcHBpbmciLCJhTWFwcGluZ3MiLCJhU2VtYW50aWNPYmplY3RNYXBwaW5ncyIsIm9NYXBwaW5nIiwib1NPTWFwcGluZyIsIkxvY2FsUHJvcGVydHkiLCJTZW1hbnRpY09iamVjdFByb3BlcnR5IiwiYklzTmF2aWdhdGlvbkNvbmZpZ3VyZWQiLCJkZXRhaWxPckRpc3BsYXkiLCJkZXRhaWwiLCJkaXNwbGF5Iiwicm91dGUiLCJhZnRlckV4ZWN1dGlvbiIsIm5hdmln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QUFBQSx1QkFBdUIsR0FBR0MsZUFBZSxTQUFmLElBQUFBLGVBQWUsV0FBZixJQUFBQSxlQUFlLENBQUVHLEtBQWpCLEdBQXlCLElBQXpCLEdBQWdDLEtBQTFEO0FBQ0EsS0FMUyxDQU1WOzs7QUFDQSxRQUNFaEcsTUFBTSxJQUNOQSxNQUFNLENBQUNpRyxjQURQLEtBRUMsMEJBQUFqRyxNQUFNLENBQUNpRyxjQUFQLGdGQUF1QkMsa0JBQXZCLE1BQThDLEtBQTlDLElBQXVELDJCQUFBbEcsTUFBTSxDQUFDaUcsY0FBUCxrRkFBdUIzQyxnQkFBdkIsTUFBNEMsSUFGcEcsQ0FBRCxJQUdBLENBQUNzQyx1QkFKRixFQUtFO0FBQ0QsYUFBTyxLQUFQO0FBQ0E7O0FBQ0QsV0FBTyxJQUFQO0FBQ0E7Ozs7QUFFTSxXQUFTdEMsZ0JBQVQsQ0FBMEJ0RCxNQUExQixFQUEyRDtBQUFBOztBQUNqRSxXQUFPLENBQUFBLE1BQU0sU0FBTixJQUFBQSxNQUFNLFdBQU4sc0NBQUFBLE1BQU0sQ0FBRWlHLGNBQVIsa0ZBQXdCM0MsZ0JBQXhCLE1BQTZDLElBQXBEO0FBQ0EiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGlvbiB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHsgQWN0aW9uVHlwZSwgTWFuaWZlc3RBY3Rpb24sIE5hdmlnYXRpb25TZXR0aW5nc0NvbmZpZ3VyYXRpb24sIE1hbmlmZXN0VGFibGVDb2x1bW4gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBDb25maWd1cmFibGVPYmplY3QsIEN1c3RvbUVsZW1lbnQsIFBsYWNlbWVudCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvQ29uZmlndXJhYmxlT2JqZWN0XCI7XG5pbXBvcnQgeyBDdXN0b21BY3Rpb25JRCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvSURcIjtcbmltcG9ydCB7IHJlcGxhY2VTcGVjaWFsQ2hhcnMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHtcblx0YW5ub3RhdGlvbkV4cHJlc3Npb24sXG5cdGJpbmRpbmdFeHByZXNzaW9uLFxuXHRCaW5kaW5nRXhwcmVzc2lvbixcblx0Y29tcGlsZUJpbmRpbmcsXG5cdG9yLFxuXHRmb3JtYXRSZXN1bHQsXG5cdGlzQ29uc3RhbnQsXG5cdHJlc29sdmVCaW5kaW5nU3RyaW5nLFxuXHRlcXVhbCxcblx0QmluZGluZ0V4cHJlc3Npb25FeHByZXNzaW9uLFxuXHRpZkVsc2UsXG5cdGFuZCxcblx0Z3JlYXRlck9yRXF1YWxcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ0V4cHJlc3Npb25cIjtcbmltcG9ydCBmcG1Gb3JtYXR0ZXIgZnJvbSBcInNhcC9mZS9jb3JlL2Zvcm1hdHRlcnMvRlBNRm9ybWF0dGVyXCI7XG5pbXBvcnQgQ29udmVydGVyQ29udGV4dCBmcm9tIFwiLi4vLi4vQ29udmVydGVyQ29udGV4dFwiO1xuaW1wb3J0IHsgYmluZGluZ0NvbnRleHRQYXRoVmlzaXRvciB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvQmluZGluZ0hlbHBlclwiO1xuXG5leHBvcnQgZW51bSBCdXR0b25UeXBlIHtcblx0QWNjZXB0ID0gXCJBY2NlcHRcIixcblx0QXR0ZW50aW9uID0gXCJBdHRlbnRpb25cIixcblx0QmFjayA9IFwiQmFja1wiLFxuXHRDcml0aWNhbCA9IFwiQ3JpdGljYWxcIixcblx0RGVmYXVsdCA9IFwiRGVmYXVsdFwiLFxuXHRFbXBoYXNpemVkID0gXCJFbXBoYXNpemVkXCIsXG5cdEdob3N0ID0gXCJHaG9zdFwiLFxuXHROZWdhdGl2ZSA9IFwiTmVnYXRpdmVcIixcblx0TmV1dHJhbCA9IFwiTmV1dHJhbFwiLFxuXHRSZWplY3QgPSBcIlJlamVjdFwiLFxuXHRTdWNjZXNzID0gXCJTdWNjZXNzXCIsXG5cdFRyYW5zcGFyZW50ID0gXCJUcmFuc3BhcmVudFwiLFxuXHRVbnN0eWxlZCA9IFwiVW5zdHlsZWRcIixcblx0VXAgPSBcIlVwXCJcbn1cblxuZXhwb3J0IHR5cGUgQmFzZUFjdGlvbiA9IENvbmZpZ3VyYWJsZU9iamVjdCAmIHtcblx0aWQ/OiBzdHJpbmc7XG5cdHRleHQ/OiBzdHJpbmc7XG5cdHR5cGU/OiBBY3Rpb25UeXBlO1xuXHRwcmVzcz86IHN0cmluZztcblx0ZW5hYmxlZD86IEJpbmRpbmdFeHByZXNzaW9uPGJvb2xlYW4+O1xuXHR2aXNpYmxlPzogQmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj47XG5cdGVuYWJsZU9uU2VsZWN0Pzogc3RyaW5nO1xuXHRkZWZhdWx0VmFsdWVzRXh0ZW5zaW9uRnVuY3Rpb24/OiBzdHJpbmc7XG5cdGlzTmF2aWdhYmxlPzogYm9vbGVhbjtcblx0ZW5hYmxlQXV0b1Njcm9sbD86IGJvb2xlYW47XG5cdHJlcXVpcmVzRGlhbG9nPzogc3RyaW5nO1xuXHRiaW5kaW5nPzogc3RyaW5nO1xuXHRidXR0b25UeXBlPzogQnV0dG9uVHlwZS5HaG9zdCB8IEJ1dHRvblR5cGUuVHJhbnNwYXJlbnQgfCBzdHJpbmc7XG5cdHBhcmVudEVudGl0eURlbGV0ZUVuYWJsZWQ/OiBCaW5kaW5nRXhwcmVzc2lvbjxib29sZWFuPjtcblx0bWVudT86IChzdHJpbmcgfCBDdXN0b21BY3Rpb24gfCBCYXNlQWN0aW9uKVtdO1xuXHRmYWNldE5hbWU/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBBbm5vdGF0aW9uQWN0aW9uID0gQmFzZUFjdGlvbiAmIHtcblx0dHlwZTogQWN0aW9uVHlwZS5EYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb24gfCBBY3Rpb25UeXBlLkRhdGFGaWVsZEZvckFjdGlvbjtcblx0YW5ub3RhdGlvblBhdGg6IHN0cmluZztcblx0aWQ/OiBzdHJpbmc7XG5cdGN1c3RvbURhdGE/OiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIERlZmluaXRpb24gZm9yIGN1c3RvbSBhY3Rpb25zXG4gKlxuICogQHR5cGVkZWYgQ3VzdG9tQWN0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIEN1c3RvbUFjdGlvbiA9IEN1c3RvbUVsZW1lbnQ8XG5cdEJhc2VBY3Rpb24gJiB7XG5cdFx0dHlwZT86IEFjdGlvblR5cGUuRGVmYXVsdCB8IEFjdGlvblR5cGUuTWVudTtcblx0XHRoYW5kbGVyTWV0aG9kPzogc3RyaW5nO1xuXHRcdGhhbmRsZXJNb2R1bGU/OiBzdHJpbmc7XG5cdFx0bWVudT86IChzdHJpbmcgfCBDdXN0b21BY3Rpb24gfCBCYXNlQWN0aW9uKVtdO1xuXHRcdG5vV3JhcD86IGJvb2xlYW47IC8vIEluZGljYXRlcyB0aGF0IHdlIHdhbnQgdG8gYXZvaWQgdGhlIHdyYXBwaW5nIGZyb20gdGhlIEZQTUhlbHBlclxuXHRcdHJlcXVpcmVzU2VsZWN0aW9uPzogYm9vbGVhbjtcblx0fVxuPjtcblxuLy8gUmV1c2Ugb2YgQ29uZmlndXJhYmxlT2JqZWN0IGFuZCBDdXN0b21FbGVtZW50IGlzIGRvbmUgZm9yIG9yZGVyaW5nXG5leHBvcnQgdHlwZSBDb252ZXJ0ZXJBY3Rpb24gPSBBbm5vdGF0aW9uQWN0aW9uIHwgQ3VzdG9tQWN0aW9uO1xuXG4vKipcbiAqIENyZWF0ZXMgdGhlIG1lbnUgYWN0aW9uIGZyb20gbWFuaWZlc3QgYWN0aW9ucy5cbiAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgQ3VzdG9tQWN0aW9uPn0gYWN0aW9ucyBUaGUgbWFuaWZlc3QgZGVmaW5pdGlvblxuICogQHBhcmFtIHtCYXNlQWN0aW9uW119IGFBbm5vdGF0aW9uQWN0aW9ucyBUaGUgYW5ub3RhdGlvbiBhY3Rpb25zIGRlZmluaXRpb25cbiAqIEBwYXJhbSBhSGlkZGVuSGVhZGVyQWN0aW9uc1xuICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIEN1c3RvbUFjdGlvbj59IFRoZSBhY3Rpb25zIGZyb20gdGhlIG1hbmlmZXN0IGFuZCB0aGUgbWVudSBvcHRpb24gdGhhdCB3ZXJlIGFkZGVkXG4gKi9cbmZ1bmN0aW9uIHByZXBhcmVNZW51QWN0aW9uKFxuXHRhY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21BY3Rpb24+LFxuXHRhQW5ub3RhdGlvbkFjdGlvbnM6IEJhc2VBY3Rpb25bXSxcblx0YUhpZGRlbkhlYWRlckFjdGlvbnM6IEJhc2VBY3Rpb25bXVxuKTogUmVjb3JkPHN0cmluZywgQ3VzdG9tQWN0aW9uPiB7XG5cdGNvbnN0IGFsbEFjdGlvbnM6IFJlY29yZDxzdHJpbmcsIEN1c3RvbUFjdGlvbj4gPSB7fTtcblx0bGV0IG1lbnVJdGVtS2V5czogc3RyaW5nW10gfCB1bmRlZmluZWQgPSBbXTtcblxuXHRmb3IgKGNvbnN0IGFjdGlvbktleSBpbiBhY3Rpb25zKSB7XG5cdFx0Y29uc3QgbWFuaWZlc3RBY3Rpb246IEN1c3RvbUFjdGlvbiA9IGFjdGlvbnNbYWN0aW9uS2V5XTtcblx0XHRpZiAobWFuaWZlc3RBY3Rpb24udHlwZSA9PT0gQWN0aW9uVHlwZS5NZW51KSB7XG5cdFx0XHRjb25zdCBtZW51SXRlbXM6IChDdXN0b21BY3Rpb24gfCBCYXNlQWN0aW9uKVtdID0gW107XG5cdFx0XHRsZXQgbWVudVZpc2libGU6IGFueSA9IGZhbHNlO1xuXHRcdFx0bGV0IF9tZW51SXRlbUtleXMgPVxuXHRcdFx0XHRtYW5pZmVzdEFjdGlvbi5tZW51Py5tYXAoKG1lbnVLZXk6IHN0cmluZyB8IEN1c3RvbUFjdGlvbikgPT4ge1xuXHRcdFx0XHRcdGxldCBhY3Rpb246IEJhc2VBY3Rpb24gfCBDdXN0b21BY3Rpb24gfCB1bmRlZmluZWQgPSBhQW5ub3RhdGlvbkFjdGlvbnMuZmluZChcblx0XHRcdFx0XHRcdChhY3Rpb246IEJhc2VBY3Rpb24pID0+IGFjdGlvbi5rZXkgPT09IG1lbnVLZXlcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGlmICghYWN0aW9uKSB7XG5cdFx0XHRcdFx0XHRhY3Rpb24gPSBhY3Rpb25zW21lbnVLZXkgYXMgc3RyaW5nXTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Ly9jaGVjayBpZiBcImVuYWJsZWRcIiBpcyBvdmVyd3JpdHRlbiB2aWEgYSBtYW5pZmVzdCBlbnRyeVxuXHRcdFx0XHRcdFx0Y29uc3QgZW5hYmxlZDogQmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj4gfCB1bmRlZmluZWQgPSBhY3Rpb25zW2FjdGlvbi5rZXldPy5lbmFibGVkO1xuXHRcdFx0XHRcdFx0aWYgKGVuYWJsZWQpIHtcblx0XHRcdFx0XHRcdFx0YWN0aW9uLmVuYWJsZWQgPSBlbmFibGVkO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdChhY3Rpb24/LnZpc2libGUgfHxcblx0XHRcdFx0XHRcdFx0YWN0aW9uPy50eXBlID09PSBBY3Rpb25UeXBlLkRhdGFGaWVsZEZvckFjdGlvbiB8fFxuXHRcdFx0XHRcdFx0XHRhY3Rpb24/LnR5cGUgPT09IEFjdGlvblR5cGUuRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uKSAmJlxuXHRcdFx0XHRcdFx0IWFIaWRkZW5IZWFkZXJBY3Rpb25zLmZpbmQoaGlkZGVuQWN0aW9uID0+IGhpZGRlbkFjdGlvbi5rZXkgPT09IG1lbnVLZXkpXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRtZW51VmlzaWJsZSA9IGNvbXBpbGVCaW5kaW5nKFxuXHRcdFx0XHRcdFx0XHRvcihyZXNvbHZlQmluZGluZ1N0cmluZygoYWN0aW9uIGFzIGFueSkudmlzaWJsZSwgXCJib29sZWFuXCIpLCByZXNvbHZlQmluZGluZ1N0cmluZyhtZW51VmlzaWJsZSwgXCJib29sZWFuXCIpKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdG1lbnVJdGVtcy5wdXNoKGFjdGlvbik7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0cmV0dXJuIG1lbnVLZXkgYXMgc3RyaW5nO1xuXHRcdFx0XHR9KSA/PyBbXTtcblxuXHRcdFx0Ly8gU2hvdyBtZW51IGJ1dHRvbiBpZiBpdCBoYXMgb25lIG9yIG1vcmUgdGhlbiAxIGl0ZW1zIHZpc2libGVcblx0XHRcdGlmIChtZW51SXRlbXMubGVuZ3RoKSB7XG5cdFx0XHRcdG1hbmlmZXN0QWN0aW9uLnZpc2libGUgPSBtZW51VmlzaWJsZTtcblx0XHRcdFx0bWFuaWZlc3RBY3Rpb24ubWVudSA9IG1lbnVJdGVtcztcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdF9tZW51SXRlbUtleXMgPSBbYWN0aW9uS2V5XTtcblx0XHRcdH1cblxuXHRcdFx0bWVudUl0ZW1LZXlzID0gWy4uLm1lbnVJdGVtS2V5cywgLi4uX21lbnVJdGVtS2V5c107XG5cdFx0fVxuXHRcdGlmIChhSGlkZGVuSGVhZGVyQWN0aW9ucy5maW5kKGhpZGRlbkFjdGlvbiA9PiBoaWRkZW5BY3Rpb24ua2V5ID09PSBhY3Rpb25LZXkpKSB7XG5cdFx0XHRtYW5pZmVzdEFjdGlvbi52aXNpYmxlID0gZmFsc2U7XG5cdFx0fVxuXHRcdGFsbEFjdGlvbnNbYWN0aW9uS2V5XSA9IG1hbmlmZXN0QWN0aW9uO1xuXHR9XG5cblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC1leHByZXNzaW9uc1xuXHRtZW51SXRlbUtleXM/LmZvckVhY2goKGFjdGlvbktleTogc3RyaW5nKSA9PiBkZWxldGUgYWxsQWN0aW9uc1thY3Rpb25LZXldKTtcblx0cmV0dXJuIGFsbEFjdGlvbnM7XG59XG5cbmV4cG9ydCBjb25zdCByZW1vdmVEdXBsaWNhdGVBY3Rpb25zID0gKGFjdGlvbnM6IEJhc2VBY3Rpb25bXSk6IEJhc2VBY3Rpb25bXSA9PiB7XG5cdGxldCBvTWVudUl0ZW1LZXlzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG5cdGFjdGlvbnMuZm9yRWFjaChhY3Rpb24gPT4ge1xuXHRcdGlmIChhY3Rpb24/Lm1lbnU/Lmxlbmd0aCkge1xuXHRcdFx0b01lbnVJdGVtS2V5cyA9IGFjdGlvbi5tZW51LnJlZHVjZSgoaXRlbSwgeyBrZXkgfTogYW55KSA9PiB7XG5cdFx0XHRcdGlmIChrZXkgJiYgIWl0ZW1ba2V5XSkge1xuXHRcdFx0XHRcdGl0ZW1ba2V5XSA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGl0ZW07XG5cdFx0XHR9LCBvTWVudUl0ZW1LZXlzKTtcblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gYWN0aW9ucy5maWx0ZXIoYWN0aW9uID0+ICFvTWVudUl0ZW1LZXlzW2FjdGlvbi5rZXldKTtcbn07XG5cbi8qKlxuICogUmV0cmlldmVzIGFuIGFjdGlvbiBkZWZhdWx0IHZhbHVlIGJhc2VkIG9uIGl0cyBraW5kLlxuICpcbiAqIERlZmF1bHQgcHJvcGVydHkgdmFsdWUgZm9yIGN1c3RvbSBhY3Rpb25zIGlmIG5vdCBvdmVyd3JpdHRlbiBpbiBtYW5pZmVzdC5cbiAqIEBwYXJhbSB7TWFuaWZlc3RBY3Rpb259IG1hbmlmZXN0QWN0aW9uIFRoZSBhY3Rpb24gY29uZmlndXJlZCBpbiB0aGUgbWFuaWZlc3RcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNBbm5vdGF0aW9uQWN0aW9uIFdoZXRoZXIgdGhlIGFjdGlvbiwgZGVmaW5lZCBpbiBtYW5pZmVzdCwgY29ycmVzcG9uZHMgdG8gYW4gZXhpc3RpbmcgYW5ub3RhdGlvbiBhY3Rpb24uXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dFxuICogQHJldHVybnMge0JpbmRpbmdFeHByZXNzaW9uPHN0cmluZz4gfCBzdHJpbmcgfCBib29sZWFufSBEZXRlcm1pbmVkIHByb3BlcnR5IHZhbHVlIGZvciB0aGUgY29sdW1uXG4gKi9cbmNvbnN0IF9nZXRNYW5pZmVzdEVuYWJsZWQgPSBmdW5jdGlvbihcblx0bWFuaWZlc3RBY3Rpb246IE1hbmlmZXN0QWN0aW9uLFxuXHRpc0Fubm90YXRpb25BY3Rpb246IGJvb2xlYW4sXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHRcbik6IEJpbmRpbmdFeHByZXNzaW9uPHN0cmluZz4gfCBzdHJpbmcgfCBib29sZWFuIHtcblx0aWYgKGlzQW5ub3RhdGlvbkFjdGlvbiAmJiBtYW5pZmVzdEFjdGlvbi5lbmFibGVkID09PSB1bmRlZmluZWQpIHtcblx0XHQvLyBJZiBhbm5vdGF0aW9uIGFjdGlvbiBoYXMgbm8gcHJvcGVydHkgZGVmaW5lZCBpbiBtYW5pZmVzdCxcblx0XHQvLyBkbyBub3Qgb3ZlcndyaXRlIGl0IHdpdGggbWFuaWZlc3QgYWN0aW9uJ3MgZGVmYXVsdCB2YWx1ZS5cblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdC8vIFJldHVybiB3aGF0IGlzIGRlZmluZWQgaW4gbWFuaWZlc3QuXG5cdHJldHVybiBnZXRNYW5pZmVzdEFjdGlvbkVuYWJsZW1lbnQobWFuaWZlc3RBY3Rpb24sIGNvbnZlcnRlckNvbnRleHQpO1xufTtcblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBhY3Rpb24gY29uZmlndXJhdGlvbiBiYXNlZCBvbiB0aGUgbWFuaWZlc3Qgc2V0dGluZ3MuXG4gKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIE1hbmlmZXN0QWN0aW9uPiB8IHVuZGVmaW5lZH0gbWFuaWZlc3RBY3Rpb25zIFRoZSBtYW5pZmVzdCBhY3Rpb25zXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHRcbiAqIEBwYXJhbSB7QmFzZUFjdGlvbltdfSBhQW5ub3RhdGlvbkFjdGlvbnMgVGhlIGFubm90YXRpb24gYWN0aW9ucyBkZWZpbml0aW9uXG4gKiBAcGFyYW0ge05hdmlnYXRpb25TZXR0aW5nc0NvbmZpZ3VyYXRpb259IG5hdmlnYXRpb25TZXR0aW5ncyBUaGUgbmF2aWdhdGlvbiBzZXR0aW5nc1xuICogQHBhcmFtIHtib29sZWFufSBjb25zaWRlck5hdmlnYXRpb25TZXR0aW5ncyBUaGUgbmF2aWdhdGlvbiBzZXR0aW5ncyB0byBiZSBjb25zaWRlcmVkXG4gKiBAcGFyYW0ge0Jhc2VBY3Rpb25bXX0gYUhpZGRlbkhlYWRlckFjdGlvbnMgVGhlIGhpZGRlbiBoZWFkZXIgYWN0aW9uc1xuICogQHBhcmFtIHtzdHJpbmd9IGZhY2V0TmFtZSBUaGUgZmFjZXQgd2hlcmUgYW4gYWN0aW9uIGlzIGRpc3BsYXllZCBpZiBpdCBpcyBpbmxpbmVcbiAqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCBDdXN0b21BY3Rpb24+fSBUaGUgYWN0aW9ucyBmcm9tIHRoZSBtYW5pZmVzdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWN0aW9uc0Zyb21NYW5pZmVzdChcblx0bWFuaWZlc3RBY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBNYW5pZmVzdEFjdGlvbj4gfCB1bmRlZmluZWQsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdGFBbm5vdGF0aW9uQWN0aW9ucz86IEJhc2VBY3Rpb25bXSxcblx0bmF2aWdhdGlvblNldHRpbmdzPzogTmF2aWdhdGlvblNldHRpbmdzQ29uZmlndXJhdGlvbixcblx0Y29uc2lkZXJOYXZpZ2F0aW9uU2V0dGluZ3M/OiBib29sZWFuLFxuXHRhSGlkZGVuSGVhZGVyQWN0aW9ucz86IEJhc2VBY3Rpb25bXSxcblx0ZmFjZXROYW1lPzogc3RyaW5nXG4pOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21BY3Rpb24+IHtcblx0Y29uc3QgYWN0aW9uczogUmVjb3JkPHN0cmluZywgQ3VzdG9tQWN0aW9uPiA9IHt9O1xuXHRmb3IgKGNvbnN0IGFjdGlvbktleSBpbiBtYW5pZmVzdEFjdGlvbnMpIHtcblx0XHRjb25zdCBtYW5pZmVzdEFjdGlvbjogTWFuaWZlc3RBY3Rpb24gPSBtYW5pZmVzdEFjdGlvbnNbYWN0aW9uS2V5XTtcblx0XHRjb25zdCBsYXN0RG90SW5kZXggPSBtYW5pZmVzdEFjdGlvbi5wcmVzcz8ubGFzdEluZGV4T2YoXCIuXCIpIHx8IC0xO1xuXG5cdFx0Ly8gVG8gaWRlbnRpZnkgdGhlIGFubm90YXRpb24gYWN0aW9uIHByb3BlcnR5IG92ZXJ3cml0ZSB2aWEgbWFuaWZlc3QgdXNlLWNhc2UuXG5cdFx0Y29uc3QgaXNBbm5vdGF0aW9uQWN0aW9uID0gYUFubm90YXRpb25BY3Rpb25zPy5zb21lKGFjdGlvbiA9PiBhY3Rpb24ua2V5ID09PSBhY3Rpb25LZXkpIHx8IGZhbHNlO1xuXHRcdGlmIChtYW5pZmVzdEFjdGlvbi5mYWNldE5hbWUpIHtcblx0XHRcdGZhY2V0TmFtZSA9IG1hbmlmZXN0QWN0aW9uLmZhY2V0TmFtZTtcblx0XHR9XG5cblx0XHRhY3Rpb25zW2FjdGlvbktleV0gPSB7XG5cdFx0XHRpZDogYUFubm90YXRpb25BY3Rpb25zPy5zb21lKGFjdGlvbiA9PiBhY3Rpb24ua2V5ID09PSBhY3Rpb25LZXkpID8gYWN0aW9uS2V5IDogQ3VzdG9tQWN0aW9uSUQoYWN0aW9uS2V5KSxcblx0XHRcdHZpc2libGU6IG1hbmlmZXN0QWN0aW9uLnZpc2libGUgPT09IHVuZGVmaW5lZCA/IFwidHJ1ZVwiIDogbWFuaWZlc3RBY3Rpb24udmlzaWJsZSxcblx0XHRcdGVuYWJsZWQ6IF9nZXRNYW5pZmVzdEVuYWJsZWQobWFuaWZlc3RBY3Rpb24sIGlzQW5ub3RhdGlvbkFjdGlvbiwgY29udmVydGVyQ29udGV4dCksXG5cdFx0XHRoYW5kbGVyTW9kdWxlOiBtYW5pZmVzdEFjdGlvbi5wcmVzcyAmJiBtYW5pZmVzdEFjdGlvbi5wcmVzcy5zdWJzdHJpbmcoMCwgbGFzdERvdEluZGV4KS5yZXBsYWNlKC9cXC4vZ2ksIFwiL1wiKSxcblx0XHRcdGhhbmRsZXJNZXRob2Q6IG1hbmlmZXN0QWN0aW9uLnByZXNzICYmIG1hbmlmZXN0QWN0aW9uLnByZXNzLnN1YnN0cmluZyhsYXN0RG90SW5kZXggKyAxKSxcblx0XHRcdHByZXNzOiBtYW5pZmVzdEFjdGlvbi5wcmVzcyxcblx0XHRcdHRleHQ6IG1hbmlmZXN0QWN0aW9uLnRleHQsXG5cdFx0XHRub1dyYXA6IG1hbmlmZXN0QWN0aW9uLl9fbm9XcmFwLFxuXHRcdFx0a2V5OiByZXBsYWNlU3BlY2lhbENoYXJzKGFjdGlvbktleSksXG5cdFx0XHRlbmFibGVPblNlbGVjdDogbWFuaWZlc3RBY3Rpb24uZW5hYmxlT25TZWxlY3QsXG5cdFx0XHRkZWZhdWx0VmFsdWVzRXh0ZW5zaW9uRnVuY3Rpb246IG1hbmlmZXN0QWN0aW9uLmRlZmF1bHRWYWx1ZXNGdW5jdGlvbixcblx0XHRcdHBvc2l0aW9uOiB7XG5cdFx0XHRcdGFuY2hvcjogbWFuaWZlc3RBY3Rpb24ucG9zaXRpb24/LmFuY2hvcixcblx0XHRcdFx0cGxhY2VtZW50OiBtYW5pZmVzdEFjdGlvbi5wb3NpdGlvbiA9PT0gdW5kZWZpbmVkID8gUGxhY2VtZW50LkFmdGVyIDogbWFuaWZlc3RBY3Rpb24ucG9zaXRpb24ucGxhY2VtZW50XG5cdFx0XHR9LFxuXHRcdFx0aXNOYXZpZ2FibGU6IGlzQWN0aW9uTmF2aWdhYmxlKG1hbmlmZXN0QWN0aW9uLCBuYXZpZ2F0aW9uU2V0dGluZ3MsIGNvbnNpZGVyTmF2aWdhdGlvblNldHRpbmdzKSxcblx0XHRcdHJlcXVpcmVzU2VsZWN0aW9uOiBtYW5pZmVzdEFjdGlvbi5yZXF1aXJlc1NlbGVjdGlvbiA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiBtYW5pZmVzdEFjdGlvbi5yZXF1aXJlc1NlbGVjdGlvbixcblx0XHRcdGVuYWJsZUF1dG9TY3JvbGw6IGVuYWJsZUF1dG9TY3JvbGwobWFuaWZlc3RBY3Rpb24pLFxuXHRcdFx0bWVudTogbWFuaWZlc3RBY3Rpb24ubWVudSA/PyBbXSxcblx0XHRcdGZhY2V0TmFtZTogbWFuaWZlc3RBY3Rpb24uaW5saW5lID8gZmFjZXROYW1lIDogdW5kZWZpbmVkXG5cdFx0fTtcblx0XHQvLyBEbyBub3Qgb3ZlcnJpZGUgdGhlICd0eXBlJyBnaXZlbiBpbiBhbiBhbm5vdGF0aW9uIGFjdGlvblxuXHRcdGlmICghaXNBbm5vdGF0aW9uQWN0aW9uKSB7XG5cdFx0XHRhY3Rpb25zW2FjdGlvbktleV0udHlwZSA9IG1hbmlmZXN0QWN0aW9uLm1lbnUgPyBBY3Rpb25UeXBlLk1lbnUgOiBBY3Rpb25UeXBlLkRlZmF1bHQ7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBwcmVwYXJlTWVudUFjdGlvbihhY3Rpb25zLCBhQW5ub3RhdGlvbkFjdGlvbnMgPz8gW10sIGFIaWRkZW5IZWFkZXJBY3Rpb25zID8/IFtdKTtcbn1cblxuZnVuY3Rpb24gZ2V0TWFuaWZlc3RBY3Rpb25FbmFibGVtZW50KG1hbmlmZXN0QWN0aW9uOiBNYW5pZmVzdEFjdGlvbiwgY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCkge1xuXHRjb25zdCByZXNvbHZlZEJpbmRpbmcgPSByZXNvbHZlQmluZGluZ1N0cmluZyhtYW5pZmVzdEFjdGlvbi5lbmFibGVkIGFzIHN0cmluZywgXCJib29sZWFuXCIpO1xuXHRsZXQgcmVzdWx0OiBhbnk7XG5cdGlmIChpc0NvbnN0YW50KHJlc29sdmVkQmluZGluZykgJiYgcmVzb2x2ZWRCaW5kaW5nLnZhbHVlID09PSB1bmRlZmluZWQpIHtcblx0XHQvLyBObyBlbmFibGVkIHByb3BlcnR5IGNvbmZpZ3VyZWQgaW4gbWFuaWZlc3QgZm9yIHRoZSBjdXN0b20gYWN0aW9uIC0tPiBlbmFibGUgY3VzdG9tIGFjdGlvblxuXHRcdHJlc3VsdCA9IHRydWU7XG5cdH0gZWxzZSBpZiAoaXNDb25zdGFudChyZXNvbHZlZEJpbmRpbmcpICYmIHR5cGVvZiByZXNvbHZlZEJpbmRpbmcudmFsdWUgPT09IFwiYm9vbGVhblwiKSB7XG5cdFx0Ly8gdHJ1ZSAvIGZhbHNlXG5cdFx0cmVzdWx0ID0gcmVzb2x2ZWRCaW5kaW5nLnZhbHVlO1xuXHR9IGVsc2UgaWYgKHJlc29sdmVkQmluZGluZy5fdHlwZSAhPT0gXCJFbWJlZGRlZEJpbmRpbmdcIiAmJiByZXNvbHZlZEJpbmRpbmcuX3R5cGUgIT09IFwiRW1iZWRkZWRFeHByZXNzaW9uQmluZGluZ1wiKSB7XG5cdFx0Ly8gVGhlbiBpdCdzIGEgbW9kdWxlLW1ldGhvZCByZWZlcmVuY2UgXCJzYXAueHh4Lnl5eS5kb1NvbWV0aGluZ1wiXG5cdFx0Y29uc3QgbWV0aG9kUGF0aCA9IHJlc29sdmVkQmluZGluZy52YWx1ZSBhcyBzdHJpbmc7XG5cdFx0cmVzdWx0ID0gZm9ybWF0UmVzdWx0KFxuXHRcdFx0W2JpbmRpbmdFeHByZXNzaW9uKFwiL1wiLCBcIiR2aWV3XCIpLCBtZXRob2RQYXRoLCBiaW5kaW5nRXhwcmVzc2lvbihcInNlbGVjdGVkQ29udGV4dHNcIiwgXCJpbnRlcm5hbFwiKV0sXG5cdFx0XHRmcG1Gb3JtYXR0ZXIuY3VzdG9tSXNFbmFibGVkQ2hlY2sgYXMgYW55LFxuXHRcdFx0Y29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKClcblx0XHQpO1xuXHR9IGVsc2Uge1xuXHRcdC8vIHRoZW4gaXQncyBhIGJpbmRpbmdcblx0XHRyZXN1bHQgPSByZXNvbHZlZEJpbmRpbmc7XG5cdH1cblxuXHQvLyBDb25zaWRlciByZXF1aXJlc1NlbGVjdGlvbiBwcm9wZXJ0eSB0byBpbmNsdWRlIHNlbGVjdGVkQ29udGV4dHMgaW4gdGhlIGJpbmRpbmcgZXhwcmVzc2lvblxuXHRyZXR1cm4gY29tcGlsZUJpbmRpbmcoXG5cdFx0aWZFbHNlKFxuXHRcdFx0bWFuaWZlc3RBY3Rpb24ucmVxdWlyZXNTZWxlY3Rpb24gPT09IHRydWUsXG5cdFx0XHRhbmQoZ3JlYXRlck9yRXF1YWwoYmluZGluZ0V4cHJlc3Npb24oXCJudW1iZXJPZlNlbGVjdGVkQ29udGV4dHNcIiwgXCJpbnRlcm5hbFwiKSwgMSksIHJlc3VsdCksXG5cdFx0XHRyZXN1bHRcblx0XHQpXG5cdCk7XG59XG5cbi8qKlxuICogTWV0aG9kIHRvIGRldGVybWluZSB0aGUgdmFsdWUgb2YgdGhlICdlbmFibGVkJyBwcm9wZXJ0eSBvZiBhbiBhbm5vdGF0aW9uLWJhc2VkIGFjdGlvbi5cbiAqXG4gKiBAcGFyYW0ge0NvbnZlcnRlckNvbnRleHR9IGNvbnZlcnRlckNvbnRleHQgVGhlIGluc3RhbmNlIG9mIHRoZSBjb252ZXJ0ZXIgY29udGV4dFxuICogQHBhcmFtIHtBY3Rpb259IGFjdGlvblRhcmdldCBUaGUgaW5zdGFuY2Ugb2YgdGhlIGFjdGlvblxuICogQHJldHVybnMge0JpbmRpbmdFeHByZXNzaW9uPGJvb2xlYW4+fSBUaGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgJ2VuYWJsZWQnIHByb3BlcnR5IG9mIHRoZSBhY3Rpb24gYnV0dG9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW5hYmxlZEZvckFubm90YXRpb25BY3Rpb24oXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdGFjdGlvblRhcmdldDogQWN0aW9uIHwgdW5kZWZpbmVkXG4pOiBCaW5kaW5nRXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGlmIChhY3Rpb25UYXJnZXQ/LmlzQm91bmQgIT09IHRydWUpIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXHQvKlxuXHQgICBGSVhNRSBEaXNhYmxlIGZhaWxpbmcgbXVzaWMgdGVzdHNcblx0XHRDdXJyZW50bHkgb24gQ0FQIHRoZSBmb2xsb3dpbmcgYmluZGluZyAod2hpY2ggaXMgdGhlIGdvb2Qgb25lKSBnZW5lcmF0ZXMgZXJyb3I6XG5cdGlmIChhY3Rpb25UYXJnZXQ/LmFubm90YXRpb25zLkNvcmU/Lk9wZXJhdGlvbkF2YWlsYWJsZSA9PT0gbnVsbCkge1xuXHRcdGNvbnN0IHVuYm91bmRBY3Rpb25OYW1lID0gYWN0aW9uVGFyZ2V0LmZ1bGx5UXVhbGlmaWVkTmFtZS5zcGxpdChcIihcIilbMF07XG5cdFx0cmV0dXJuIFwiez0gISR7I1wiICsgdW5ib3VuZEFjdGlvbk5hbWUgKyBcIn0gPyBmYWxzZSA6IHRydWUgfSB9XCI7XG5cdH1cblx0XHRDQVAgdHJpZXMgdG8gcmVhZCB0aGUgYWN0aW9uIGFzIHByb3BlcnR5IGFuZCBkb2Vzbid0IGZpbmQgaXRcblx0Ki9cblx0aWYgKGFjdGlvblRhcmdldD8ucGFyYW1ldGVycz8ubGVuZ3RoKSB7XG5cdFx0Y29uc3QgYmluZGluZ1BhcmFtZXRlckZ1bGxOYW1lID0gYWN0aW9uVGFyZ2V0Py5wYXJhbWV0ZXJzWzBdLmZ1bGx5UXVhbGlmaWVkTmFtZSxcblx0XHRcdG9wZXJhdGlvbkF2YWlsYWJsZUV4cHJlc3Npb24gPSBhbm5vdGF0aW9uRXhwcmVzc2lvbihcblx0XHRcdFx0YWN0aW9uVGFyZ2V0Py5hbm5vdGF0aW9ucy5Db3JlPy5PcGVyYXRpb25BdmFpbGFibGUsXG5cdFx0XHRcdFtdLFxuXHRcdFx0XHR1bmRlZmluZWQsXG5cdFx0XHRcdChwYXRoOiBzdHJpbmcpID0+IGJpbmRpbmdDb250ZXh0UGF0aFZpc2l0b3IocGF0aCwgY29udmVydGVyQ29udGV4dCwgYmluZGluZ1BhcmFtZXRlckZ1bGxOYW1lKVxuXHRcdFx0KSBhcyBCaW5kaW5nRXhwcmVzc2lvbkV4cHJlc3Npb248Ym9vbGVhbj47XG5cdFx0aWYgKGFjdGlvblRhcmdldD8uYW5ub3RhdGlvbnMuQ29yZT8uT3BlcmF0aW9uQXZhaWxhYmxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHJldHVybiBjb21waWxlQmluZGluZyhlcXVhbChvcGVyYXRpb25BdmFpbGFibGVFeHByZXNzaW9uLCB0cnVlKSk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VtYW50aWNPYmplY3RNYXBwaW5nKGFNYXBwaW5nczogYW55W10pOiBhbnlbXSB7XG5cdGNvbnN0IGFTZW1hbnRpY09iamVjdE1hcHBpbmdzOiBhbnlbXSA9IFtdO1xuXHRhTWFwcGluZ3MuZm9yRWFjaChvTWFwcGluZyA9PiB7XG5cdFx0Y29uc3Qgb1NPTWFwcGluZyA9IHtcblx0XHRcdFwiTG9jYWxQcm9wZXJ0eVwiOiB7XG5cdFx0XHRcdFwiJFByb3BlcnR5UGF0aFwiOiBvTWFwcGluZy5Mb2NhbFByb3BlcnR5LnZhbHVlXG5cdFx0XHR9LFxuXHRcdFx0XCJTZW1hbnRpY09iamVjdFByb3BlcnR5XCI6IG9NYXBwaW5nLlNlbWFudGljT2JqZWN0UHJvcGVydHlcblx0XHR9O1xuXHRcdGFTZW1hbnRpY09iamVjdE1hcHBpbmdzLnB1c2gob1NPTWFwcGluZyk7XG5cdH0pO1xuXHRyZXR1cm4gYVNlbWFudGljT2JqZWN0TWFwcGluZ3M7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0FjdGlvbk5hdmlnYWJsZShcblx0YWN0aW9uOiBNYW5pZmVzdEFjdGlvbiB8IE1hbmlmZXN0VGFibGVDb2x1bW4sXG5cdG5hdmlnYXRpb25TZXR0aW5ncz86IE5hdmlnYXRpb25TZXR0aW5nc0NvbmZpZ3VyYXRpb24sXG5cdGNvbnNpZGVyTmF2aWdhdGlvblNldHRpbmdzPzogYm9vbGVhblxuKTogYm9vbGVhbiB7XG5cdGxldCBiSXNOYXZpZ2F0aW9uQ29uZmlndXJlZDogYm9vbGVhbiA9IHRydWU7XG5cdGlmIChjb25zaWRlck5hdmlnYXRpb25TZXR0aW5ncykge1xuXHRcdGNvbnN0IGRldGFpbE9yRGlzcGxheSA9IG5hdmlnYXRpb25TZXR0aW5ncyAmJiAobmF2aWdhdGlvblNldHRpbmdzLmRldGFpbCB8fCBuYXZpZ2F0aW9uU2V0dGluZ3MuZGlzcGxheSk7XG5cdFx0YklzTmF2aWdhdGlvbkNvbmZpZ3VyZWQgPSBkZXRhaWxPckRpc3BsYXk/LnJvdXRlID8gdHJ1ZSA6IGZhbHNlO1xuXHR9XG5cdC8vIHdoZW4gZW5hYmxlQXV0b1Njcm9sbCBpcyB0cnVlIHRoZSBuYXZpZ2F0ZVRvSW5zdGFuY2UgZmVhdHVyZSBpcyBkaXNhYmxlZFxuXHRpZiAoXG5cdFx0KGFjdGlvbiAmJlxuXHRcdFx0YWN0aW9uLmFmdGVyRXhlY3V0aW9uICYmXG5cdFx0XHQoYWN0aW9uLmFmdGVyRXhlY3V0aW9uPy5uYXZpZ2F0ZVRvSW5zdGFuY2UgPT09IGZhbHNlIHx8IGFjdGlvbi5hZnRlckV4ZWN1dGlvbj8uZW5hYmxlQXV0b1Njcm9sbCA9PT0gdHJ1ZSkpIHx8XG5cdFx0IWJJc05hdmlnYXRpb25Db25maWd1cmVkXG5cdCkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHRyZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuYWJsZUF1dG9TY3JvbGwoYWN0aW9uOiBNYW5pZmVzdEFjdGlvbik6IGJvb2xlYW4ge1xuXHRyZXR1cm4gYWN0aW9uPy5hZnRlckV4ZWN1dGlvbj8uZW5hYmxlQXV0b1Njcm9sbCA9PT0gdHJ1ZTtcbn1cbiJdfQ==
|
|
359
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFjdGlvbi50cyJdLCJuYW1lcyI6WyJCdXR0b25UeXBlIiwicHJlcGFyZU1lbnVBY3Rpb24iLCJhY3Rpb25zIiwiYUFubm90YXRpb25BY3Rpb25zIiwiYUhpZGRlbkhlYWRlckFjdGlvbnMiLCJhbGxBY3Rpb25zIiwibWVudUl0ZW1LZXlzIiwiYWN0aW9uS2V5IiwibWFuaWZlc3RBY3Rpb24iLCJ0eXBlIiwiQWN0aW9uVHlwZSIsIk1lbnUiLCJtZW51SXRlbXMiLCJtZW51VmlzaWJsZSIsIl9tZW51SXRlbUtleXMiLCJtZW51IiwibWFwIiwibWVudUtleSIsImFjdGlvbiIsImZpbmQiLCJrZXkiLCJlbmFibGVkIiwiY29tbWFuZCIsInZpc2libGUiLCJEYXRhRmllbGRGb3JBY3Rpb24iLCJEYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJoaWRkZW5BY3Rpb24iLCJjb21waWxlQmluZGluZyIsIm9yIiwicmVzb2x2ZUJpbmRpbmdTdHJpbmciLCJwdXNoIiwibGVuZ3RoIiwiZm9yRWFjaCIsInJlbW92ZUR1cGxpY2F0ZUFjdGlvbnMiLCJvTWVudUl0ZW1LZXlzIiwicmVkdWNlIiwiaXRlbSIsImZpbHRlciIsIl9nZXRNYW5pZmVzdEVuYWJsZWQiLCJpc0Fubm90YXRpb25BY3Rpb24iLCJjb252ZXJ0ZXJDb250ZXh0IiwidW5kZWZpbmVkIiwiZ2V0TWFuaWZlc3RBY3Rpb25FbmFibGVtZW50IiwiZ2V0QWN0aW9uc0Zyb21NYW5pZmVzdCIsIm1hbmlmZXN0QWN0aW9ucyIsIm5hdmlnYXRpb25TZXR0aW5ncyIsImNvbnNpZGVyTmF2aWdhdGlvblNldHRpbmdzIiwiZmFjZXROYW1lIiwibGFzdERvdEluZGV4IiwicHJlc3MiLCJsYXN0SW5kZXhPZiIsInNvbWUiLCJpZCIsIkN1c3RvbUFjdGlvbklEIiwiaGFuZGxlck1vZHVsZSIsInN1YnN0cmluZyIsInJlcGxhY2UiLCJoYW5kbGVyTWV0aG9kIiwidGV4dCIsIm5vV3JhcCIsIl9fbm9XcmFwIiwicmVwbGFjZVNwZWNpYWxDaGFycyIsImVuYWJsZU9uU2VsZWN0IiwiZGVmYXVsdFZhbHVlc0V4dGVuc2lvbkZ1bmN0aW9uIiwiZGVmYXVsdFZhbHVlc0Z1bmN0aW9uIiwicG9zaXRpb24iLCJhbmNob3IiLCJwbGFjZW1lbnQiLCJQbGFjZW1lbnQiLCJBZnRlciIsImlzTmF2aWdhYmxlIiwiaXNBY3Rpb25OYXZpZ2FibGUiLCJyZXF1aXJlc1NlbGVjdGlvbiIsImVuYWJsZUF1dG9TY3JvbGwiLCJpbmxpbmUiLCJEZWZhdWx0IiwicmVzb2x2ZWRCaW5kaW5nIiwicmVzdWx0IiwiaXNDb25zdGFudCIsInZhbHVlIiwiX3R5cGUiLCJtZXRob2RQYXRoIiwiZm9ybWF0UmVzdWx0IiwiYmluZGluZ0V4cHJlc3Npb24iLCJmcG1Gb3JtYXR0ZXIiLCJjdXN0b21Jc0VuYWJsZWRDaGVjayIsImdldEVudGl0eVR5cGUiLCJpZkVsc2UiLCJhbmQiLCJncmVhdGVyT3JFcXVhbCIsImdldEVuYWJsZWRGb3JBbm5vdGF0aW9uQWN0aW9uIiwiYWN0aW9uVGFyZ2V0IiwiaXNCb3VuZCIsInBhcmFtZXRlcnMiLCJiaW5kaW5nUGFyYW1ldGVyRnVsbE5hbWUiLCJmdWxseVF1YWxpZmllZE5hbWUiLCJvcGVyYXRpb25BdmFpbGFibGVFeHByZXNzaW9uIiwiYW5ub3RhdGlvbkV4cHJlc3Npb24iLCJhbm5vdGF0aW9ucyIsIkNvcmUiLCJPcGVyYXRpb25BdmFpbGFibGUiLCJwYXRoIiwiYmluZGluZ0NvbnRleHRQYXRoVmlzaXRvciIsImVxdWFsIiwiZ2V0U2VtYW50aWNPYmplY3RNYXBwaW5nIiwiYU1hcHBpbmdzIiwiYVNlbWFudGljT2JqZWN0TWFwcGluZ3MiLCJvTWFwcGluZyIsIm9TT01hcHBpbmciLCJMb2NhbFByb3BlcnR5IiwiU2VtYW50aWNPYmplY3RQcm9wZXJ0eSIsImJJc05hdmlnYXRpb25Db25maWd1cmVkIiwiZGV0YWlsT3JEaXNwbGF5IiwiZGV0YWlsIiwiZGlzcGxheSIsInJvdXRlIiwiYWZ0ZXJFeGVjdXRp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RSwwQkFBSixFQUFnQztBQUMvQixVQUFNa0UsZUFBZSxHQUFHbkUsa0JBQWtCLEtBQUtBLGtCQUFrQixDQUFDb0UsTUFBbkIsSUFBNkJwRSxrQkFBa0IsQ0FBQ3FFLE9BQXJELENBQTFDO0FBQ0FILE1BQUFBLHVCQUF1QixHQUFHQyxlQUFlLFNBQWYsSUFBQUEsZUFBZSxXQUFmLElBQUFBLGVBQWUsQ0FBRUcsS0FBakIsR0FBeUIsSUFBekIsR0FBZ0MsS0FBMUQ7QUFDQSxLQUxTLENBTVY7OztBQUNBLFFBQ0VqRyxNQUFNLElBQ05BLE1BQU0sQ0FBQ2tHLGNBRFAsS0FFQywwQkFBQWxHLE1BQU0sQ0FBQ2tHLGNBQVAsZ0ZBQXVCQyxrQkFBdkIsTUFBOEMsS0FBOUMsSUFBdUQsMkJBQUFuRyxNQUFNLENBQUNrRyxjQUFQLGtGQUF1QjNDLGdCQUF2QixNQUE0QyxJQUZwRyxDQUFELElBR0EsQ0FBQ3NDLHVCQUpGLEVBS0U7QUFDRCxhQUFPLEtBQVA7QUFDQTs7QUFDRCxXQUFPLElBQVA7QUFDQTs7OztBQUVNLFdBQVN0QyxnQkFBVCxDQUEwQnZELE1BQTFCLEVBQTJEO0FBQUE7O0FBQ2pFLFdBQU8sQ0FBQUEsTUFBTSxTQUFOLElBQUFBLE1BQU0sV0FBTixzQ0FBQUEsTUFBTSxDQUFFa0csY0FBUixrRkFBd0IzQyxnQkFBeEIsTUFBNkMsSUFBcEQ7QUFDQSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgeyBiaW5kaW5nQ29udGV4dFBhdGhWaXNpdG9yIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9CaW5kaW5nSGVscGVyXCI7XG5pbXBvcnQgeyBDb25maWd1cmFibGVPYmplY3QsIEN1c3RvbUVsZW1lbnQsIFBsYWNlbWVudCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvQ29uZmlndXJhYmxlT2JqZWN0XCI7XG5pbXBvcnQgeyBDdXN0b21BY3Rpb25JRCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvSURcIjtcbmltcG9ydCB7IEFjdGlvblR5cGUsIE1hbmlmZXN0QWN0aW9uLCBNYW5pZmVzdFRhYmxlQ29sdW1uLCBOYXZpZ2F0aW9uU2V0dGluZ3NDb25maWd1cmF0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IGZwbUZvcm1hdHRlciBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9GUE1Gb3JtYXR0ZXJcIjtcbmltcG9ydCB7XG5cdGFuZCxcblx0YW5ub3RhdGlvbkV4cHJlc3Npb24sXG5cdGJpbmRpbmdFeHByZXNzaW9uLFxuXHRCaW5kaW5nRXhwcmVzc2lvbixcblx0QmluZGluZ0V4cHJlc3Npb25FeHByZXNzaW9uLFxuXHRjb21waWxlQmluZGluZyxcblx0ZXF1YWwsXG5cdGZvcm1hdFJlc3VsdCxcblx0Z3JlYXRlck9yRXF1YWwsXG5cdGlmRWxzZSxcblx0aXNDb25zdGFudCxcblx0b3IsXG5cdHJlc29sdmVCaW5kaW5nU3RyaW5nXG59IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdFeHByZXNzaW9uXCI7XG5pbXBvcnQgeyByZXBsYWNlU3BlY2lhbENoYXJzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCIuLi8uLi9Db252ZXJ0ZXJDb250ZXh0XCI7XG5cbmV4cG9ydCBlbnVtIEJ1dHRvblR5cGUge1xuXHRBY2NlcHQgPSBcIkFjY2VwdFwiLFxuXHRBdHRlbnRpb24gPSBcIkF0dGVudGlvblwiLFxuXHRCYWNrID0gXCJCYWNrXCIsXG5cdENyaXRpY2FsID0gXCJDcml0aWNhbFwiLFxuXHREZWZhdWx0ID0gXCJEZWZhdWx0XCIsXG5cdEVtcGhhc2l6ZWQgPSBcIkVtcGhhc2l6ZWRcIixcblx0R2hvc3QgPSBcIkdob3N0XCIsXG5cdE5lZ2F0aXZlID0gXCJOZWdhdGl2ZVwiLFxuXHROZXV0cmFsID0gXCJOZXV0cmFsXCIsXG5cdFJlamVjdCA9IFwiUmVqZWN0XCIsXG5cdFN1Y2Nlc3MgPSBcIlN1Y2Nlc3NcIixcblx0VHJhbnNwYXJlbnQgPSBcIlRyYW5zcGFyZW50XCIsXG5cdFVuc3R5bGVkID0gXCJVbnN0eWxlZFwiLFxuXHRVcCA9IFwiVXBcIlxufVxuXG5leHBvcnQgdHlwZSBCYXNlQWN0aW9uID0gQ29uZmlndXJhYmxlT2JqZWN0ICYge1xuXHRpZD86IHN0cmluZztcblx0dGV4dD86IHN0cmluZztcblx0dHlwZT86IEFjdGlvblR5cGU7XG5cdHByZXNzPzogc3RyaW5nO1xuXHRlbmFibGVkPzogQmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj47XG5cdHZpc2libGU/OiBCaW5kaW5nRXhwcmVzc2lvbjxib29sZWFuPjtcblx0ZW5hYmxlT25TZWxlY3Q/OiBzdHJpbmc7XG5cdGFubm90YXRpb25QYXRoPzogc3RyaW5nO1xuXHRkZWZhdWx0VmFsdWVzRXh0ZW5zaW9uRnVuY3Rpb24/OiBzdHJpbmc7XG5cdGlzTmF2aWdhYmxlPzogYm9vbGVhbjtcblx0ZW5hYmxlQXV0b1Njcm9sbD86IGJvb2xlYW47XG5cdHJlcXVpcmVzRGlhbG9nPzogc3RyaW5nO1xuXHRiaW5kaW5nPzogc3RyaW5nO1xuXHRidXR0b25UeXBlPzogQnV0dG9uVHlwZS5HaG9zdCB8IEJ1dHRvblR5cGUuVHJhbnNwYXJlbnQgfCBzdHJpbmc7XG5cdHBhcmVudEVudGl0eURlbGV0ZUVuYWJsZWQ/OiBCaW5kaW5nRXhwcmVzc2lvbjxib29sZWFuPjtcblx0bWVudT86IChzdHJpbmcgfCBDdXN0b21BY3Rpb24gfCBCYXNlQWN0aW9uKVtdO1xuXHRmYWNldE5hbWU/OiBzdHJpbmc7XG5cdGNvbW1hbmQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBBbm5vdGF0aW9uQWN0aW9uID0gQmFzZUFjdGlvbiAmIHtcblx0dHlwZTogQWN0aW9uVHlwZS5EYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb24gfCBBY3Rpb25UeXBlLkRhdGFGaWVsZEZvckFjdGlvbjtcblx0YW5ub3RhdGlvblBhdGg6IHN0cmluZztcblx0aWQ/OiBzdHJpbmc7XG5cdGN1c3RvbURhdGE/OiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIERlZmluaXRpb24gZm9yIGN1c3RvbSBhY3Rpb25zXG4gKlxuICogQHR5cGVkZWYgQ3VzdG9tQWN0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIEN1c3RvbUFjdGlvbiA9IEN1c3RvbUVsZW1lbnQ8XG5cdEJhc2VBY3Rpb24gJiB7XG5cdFx0dHlwZT86IEFjdGlvblR5cGUuRGVmYXVsdCB8IEFjdGlvblR5cGUuTWVudTtcblx0XHRoYW5kbGVyTWV0aG9kPzogc3RyaW5nO1xuXHRcdGhhbmRsZXJNb2R1bGU/OiBzdHJpbmc7XG5cdFx0bWVudT86IChzdHJpbmcgfCBDdXN0b21BY3Rpb24gfCBCYXNlQWN0aW9uKVtdO1xuXHRcdG5vV3JhcD86IGJvb2xlYW47IC8vIEluZGljYXRlcyB0aGF0IHdlIHdhbnQgdG8gYXZvaWQgdGhlIHdyYXBwaW5nIGZyb20gdGhlIEZQTUhlbHBlclxuXHRcdHJlcXVpcmVzU2VsZWN0aW9uPzogYm9vbGVhbjtcblx0fVxuPjtcblxuLy8gUmV1c2Ugb2YgQ29uZmlndXJhYmxlT2JqZWN0IGFuZCBDdXN0b21FbGVtZW50IGlzIGRvbmUgZm9yIG9yZGVyaW5nXG5leHBvcnQgdHlwZSBDb252ZXJ0ZXJBY3Rpb24gPSBBbm5vdGF0aW9uQWN0aW9uIHwgQ3VzdG9tQWN0aW9uO1xuXG4vKipcbiAqIENyZWF0ZXMgdGhlIG1lbnUgYWN0aW9uIGZyb20gbWFuaWZlc3QgYWN0aW9ucy5cbiAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgQ3VzdG9tQWN0aW9uPn0gYWN0aW9ucyBUaGUgbWFuaWZlc3QgZGVmaW5pdGlvblxuICogQHBhcmFtIHtCYXNlQWN0aW9uW119IGFBbm5vdGF0aW9uQWN0aW9ucyBUaGUgYW5ub3RhdGlvbiBhY3Rpb25zIGRlZmluaXRpb25cbiAqIEBwYXJhbSBhSGlkZGVuSGVhZGVyQWN0aW9uc1xuICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIEN1c3RvbUFjdGlvbj59IFRoZSBhY3Rpb25zIGZyb20gdGhlIG1hbmlmZXN0IGFuZCB0aGUgbWVudSBvcHRpb24gdGhhdCB3ZXJlIGFkZGVkXG4gKi9cbmZ1bmN0aW9uIHByZXBhcmVNZW51QWN0aW9uKFxuXHRhY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21BY3Rpb24+LFxuXHRhQW5ub3RhdGlvbkFjdGlvbnM6IEJhc2VBY3Rpb25bXSxcblx0YUhpZGRlbkhlYWRlckFjdGlvbnM6IEJhc2VBY3Rpb25bXVxuKTogUmVjb3JkPHN0cmluZywgQ3VzdG9tQWN0aW9uPiB7XG5cdGNvbnN0IGFsbEFjdGlvbnM6IFJlY29yZDxzdHJpbmcsIEN1c3RvbUFjdGlvbj4gPSB7fTtcblx0bGV0IG1lbnVJdGVtS2V5czogc3RyaW5nW10gfCB1bmRlZmluZWQgPSBbXTtcblxuXHRmb3IgKGNvbnN0IGFjdGlvbktleSBpbiBhY3Rpb25zKSB7XG5cdFx0Y29uc3QgbWFuaWZlc3RBY3Rpb246IEN1c3RvbUFjdGlvbiA9IGFjdGlvbnNbYWN0aW9uS2V5XTtcblx0XHRpZiAobWFuaWZlc3RBY3Rpb24udHlwZSA9PT0gQWN0aW9uVHlwZS5NZW51KSB7XG5cdFx0XHRjb25zdCBtZW51SXRlbXM6IChDdXN0b21BY3Rpb24gfCBCYXNlQWN0aW9uKVtdID0gW107XG5cdFx0XHRsZXQgbWVudVZpc2libGU6IGFueSA9IGZhbHNlO1xuXHRcdFx0bGV0IF9tZW51SXRlbUtleXMgPVxuXHRcdFx0XHRtYW5pZmVzdEFjdGlvbi5tZW51Py5tYXAoKG1lbnVLZXk6IHN0cmluZyB8IEN1c3RvbUFjdGlvbikgPT4ge1xuXHRcdFx0XHRcdGxldCBhY3Rpb246IEJhc2VBY3Rpb24gfCBDdXN0b21BY3Rpb24gfCB1bmRlZmluZWQgPSBhQW5ub3RhdGlvbkFjdGlvbnMuZmluZChcblx0XHRcdFx0XHRcdChhY3Rpb246IEJhc2VBY3Rpb24pID0+IGFjdGlvbi5rZXkgPT09IG1lbnVLZXlcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGlmICghYWN0aW9uKSB7XG5cdFx0XHRcdFx0XHRhY3Rpb24gPSBhY3Rpb25zW21lbnVLZXkgYXMgc3RyaW5nXTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Ly9jaGVjayBpZiBcImVuYWJsZWRcIiBpcyBvdmVyd3JpdHRlbiB2aWEgYSBtYW5pZmVzdCBlbnRyeVxuXHRcdFx0XHRcdFx0Y29uc3QgZW5hYmxlZDogQmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj4gfCB1bmRlZmluZWQgPSBhY3Rpb25zW2FjdGlvbi5rZXldPy5lbmFibGVkO1xuXHRcdFx0XHRcdFx0aWYgKGVuYWJsZWQpIHtcblx0XHRcdFx0XHRcdFx0YWN0aW9uLmVuYWJsZWQgPSBlbmFibGVkO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YWN0aW9uLmNvbW1hbmQgPSBhY3Rpb25zW2FjdGlvbi5rZXldPy5jb21tYW5kO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdChhY3Rpb24/LnZpc2libGUgfHxcblx0XHRcdFx0XHRcdFx0YWN0aW9uPy50eXBlID09PSBBY3Rpb25UeXBlLkRhdGFGaWVsZEZvckFjdGlvbiB8fFxuXHRcdFx0XHRcdFx0XHRhY3Rpb24/LnR5cGUgPT09IEFjdGlvblR5cGUuRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uKSAmJlxuXHRcdFx0XHRcdFx0IWFIaWRkZW5IZWFkZXJBY3Rpb25zLmZpbmQoKGhpZGRlbkFjdGlvbikgPT4gaGlkZGVuQWN0aW9uLmtleSA9PT0gbWVudUtleSlcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdG1lbnVWaXNpYmxlID0gY29tcGlsZUJpbmRpbmcoXG5cdFx0XHRcdFx0XHRcdG9yKHJlc29sdmVCaW5kaW5nU3RyaW5nKChhY3Rpb24gYXMgYW55KS52aXNpYmxlLCBcImJvb2xlYW5cIiksIHJlc29sdmVCaW5kaW5nU3RyaW5nKG1lbnVWaXNpYmxlLCBcImJvb2xlYW5cIikpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0bWVudUl0ZW1zLnB1c2goYWN0aW9uKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRyZXR1cm4gbWVudUtleSBhcyBzdHJpbmc7XG5cdFx0XHRcdH0pID8/IFtdO1xuXG5cdFx0XHQvLyBTaG93IG1lbnUgYnV0dG9uIGlmIGl0IGhhcyBvbmUgb3IgbW9yZSB0aGVuIDEgaXRlbXMgdmlzaWJsZVxuXHRcdFx0aWYgKG1lbnVJdGVtcy5sZW5ndGgpIHtcblx0XHRcdFx0bWFuaWZlc3RBY3Rpb24udmlzaWJsZSA9IG1lbnVWaXNpYmxlO1xuXHRcdFx0XHRtYW5pZmVzdEFjdGlvbi5tZW51ID0gbWVudUl0ZW1zO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0X21lbnVJdGVtS2V5cyA9IFthY3Rpb25LZXldO1xuXHRcdFx0fVxuXG5cdFx0XHRtZW51SXRlbUtleXMgPSBbLi4ubWVudUl0ZW1LZXlzLCAuLi5fbWVudUl0ZW1LZXlzXTtcblx0XHR9XG5cdFx0aWYgKGFIaWRkZW5IZWFkZXJBY3Rpb25zLmZpbmQoKGhpZGRlbkFjdGlvbikgPT4gaGlkZGVuQWN0aW9uLmtleSA9PT0gYWN0aW9uS2V5KSkge1xuXHRcdFx0bWFuaWZlc3RBY3Rpb24udmlzaWJsZSA9IGZhbHNlO1xuXHRcdH1cblx0XHRhbGxBY3Rpb25zW2FjdGlvbktleV0gPSBtYW5pZmVzdEFjdGlvbjtcblx0fVxuXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtZXhwcmVzc2lvbnNcblx0bWVudUl0ZW1LZXlzPy5mb3JFYWNoKChhY3Rpb25LZXk6IHN0cmluZykgPT4gZGVsZXRlIGFsbEFjdGlvbnNbYWN0aW9uS2V5XSk7XG5cdHJldHVybiBhbGxBY3Rpb25zO1xufVxuXG5leHBvcnQgY29uc3QgcmVtb3ZlRHVwbGljYXRlQWN0aW9ucyA9IChhY3Rpb25zOiBCYXNlQWN0aW9uW10pOiBCYXNlQWN0aW9uW10gPT4ge1xuXHRsZXQgb01lbnVJdGVtS2V5czogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuXHRhY3Rpb25zLmZvckVhY2goKGFjdGlvbikgPT4ge1xuXHRcdGlmIChhY3Rpb24/Lm1lbnU/Lmxlbmd0aCkge1xuXHRcdFx0b01lbnVJdGVtS2V5cyA9IGFjdGlvbi5tZW51LnJlZHVjZSgoaXRlbSwgeyBrZXkgfTogYW55KSA9PiB7XG5cdFx0XHRcdGlmIChrZXkgJiYgIWl0ZW1ba2V5XSkge1xuXHRcdFx0XHRcdGl0ZW1ba2V5XSA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGl0ZW07XG5cdFx0XHR9LCBvTWVudUl0ZW1LZXlzKTtcblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gIW9NZW51SXRlbUtleXNbYWN0aW9uLmtleV0pO1xufTtcblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gYWN0aW9uIGRlZmF1bHQgdmFsdWUgYmFzZWQgb24gaXRzIGtpbmQuXG4gKlxuICogRGVmYXVsdCBwcm9wZXJ0eSB2YWx1ZSBmb3IgY3VzdG9tIGFjdGlvbnMgaWYgbm90IG92ZXJ3cml0dGVuIGluIG1hbmlmZXN0LlxuICogQHBhcmFtIHtNYW5pZmVzdEFjdGlvbn0gbWFuaWZlc3RBY3Rpb24gVGhlIGFjdGlvbiBjb25maWd1cmVkIGluIHRoZSBtYW5pZmVzdFxuICogQHBhcmFtIHtib29sZWFufSBpc0Fubm90YXRpb25BY3Rpb24gV2hldGhlciB0aGUgYWN0aW9uLCBkZWZpbmVkIGluIG1hbmlmZXN0LCBjb3JyZXNwb25kcyB0byBhbiBleGlzdGluZyBhbm5vdGF0aW9uIGFjdGlvbi5cbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcmV0dXJucyB7QmluZGluZ0V4cHJlc3Npb248c3RyaW5nPiB8IHN0cmluZyB8IGJvb2xlYW59IERldGVybWluZWQgcHJvcGVydHkgdmFsdWUgZm9yIHRoZSBjb2x1bW5cbiAqL1xuY29uc3QgX2dldE1hbmlmZXN0RW5hYmxlZCA9IGZ1bmN0aW9uIChcblx0bWFuaWZlc3RBY3Rpb246IE1hbmlmZXN0QWN0aW9uLFxuXHRpc0Fubm90YXRpb25BY3Rpb246IGJvb2xlYW4sXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHRcbik6IEJpbmRpbmdFeHByZXNzaW9uPHN0cmluZz4gfCBzdHJpbmcgfCBib29sZWFuIHtcblx0aWYgKGlzQW5ub3RhdGlvbkFjdGlvbiAmJiBtYW5pZmVzdEFjdGlvbi5lbmFibGVkID09PSB1bmRlZmluZWQpIHtcblx0XHQvLyBJZiBhbm5vdGF0aW9uIGFjdGlvbiBoYXMgbm8gcHJvcGVydHkgZGVmaW5lZCBpbiBtYW5pZmVzdCxcblx0XHQvLyBkbyBub3Qgb3ZlcndyaXRlIGl0IHdpdGggbWFuaWZlc3QgYWN0aW9uJ3MgZGVmYXVsdCB2YWx1ZS5cblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdC8vIFJldHVybiB3aGF0IGlzIGRlZmluZWQgaW4gbWFuaWZlc3QuXG5cdHJldHVybiBnZXRNYW5pZmVzdEFjdGlvbkVuYWJsZW1lbnQobWFuaWZlc3RBY3Rpb24sIGNvbnZlcnRlckNvbnRleHQpO1xufTtcblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBhY3Rpb24gY29uZmlndXJhdGlvbiBiYXNlZCBvbiB0aGUgbWFuaWZlc3Qgc2V0dGluZ3MuXG4gKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIE1hbmlmZXN0QWN0aW9uPiB8IHVuZGVmaW5lZH0gbWFuaWZlc3RBY3Rpb25zIFRoZSBtYW5pZmVzdCBhY3Rpb25zXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHRcbiAqIEBwYXJhbSB7QmFzZUFjdGlvbltdfSBhQW5ub3RhdGlvbkFjdGlvbnMgVGhlIGFubm90YXRpb24gYWN0aW9ucyBkZWZpbml0aW9uXG4gKiBAcGFyYW0ge05hdmlnYXRpb25TZXR0aW5nc0NvbmZpZ3VyYXRpb259IG5hdmlnYXRpb25TZXR0aW5ncyBUaGUgbmF2aWdhdGlvbiBzZXR0aW5nc1xuICogQHBhcmFtIHtib29sZWFufSBjb25zaWRlck5hdmlnYXRpb25TZXR0aW5ncyBUaGUgbmF2aWdhdGlvbiBzZXR0aW5ncyB0byBiZSBjb25zaWRlcmVkXG4gKiBAcGFyYW0ge0Jhc2VBY3Rpb25bXX0gYUhpZGRlbkhlYWRlckFjdGlvbnMgVGhlIGhpZGRlbiBoZWFkZXIgYWN0aW9uc1xuICogQHBhcmFtIHtzdHJpbmd9IGZhY2V0TmFtZSBUaGUgZmFjZXQgd2hlcmUgYW4gYWN0aW9uIGlzIGRpc3BsYXllZCBpZiBpdCBpcyBpbmxpbmVcbiAqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCBDdXN0b21BY3Rpb24+fSBUaGUgYWN0aW9ucyBmcm9tIHRoZSBtYW5pZmVzdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWN0aW9uc0Zyb21NYW5pZmVzdChcblx0bWFuaWZlc3RBY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBNYW5pZmVzdEFjdGlvbj4gfCB1bmRlZmluZWQsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdGFBbm5vdGF0aW9uQWN0aW9ucz86IEJhc2VBY3Rpb25bXSxcblx0bmF2aWdhdGlvblNldHRpbmdzPzogTmF2aWdhdGlvblNldHRpbmdzQ29uZmlndXJhdGlvbixcblx0Y29uc2lkZXJOYXZpZ2F0aW9uU2V0dGluZ3M/OiBib29sZWFuLFxuXHRhSGlkZGVuSGVhZGVyQWN0aW9ucz86IEJhc2VBY3Rpb25bXSxcblx0ZmFjZXROYW1lPzogc3RyaW5nXG4pOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21BY3Rpb24+IHtcblx0Y29uc3QgYWN0aW9uczogUmVjb3JkPHN0cmluZywgQ3VzdG9tQWN0aW9uPiA9IHt9O1xuXHRmb3IgKGNvbnN0IGFjdGlvbktleSBpbiBtYW5pZmVzdEFjdGlvbnMpIHtcblx0XHRjb25zdCBtYW5pZmVzdEFjdGlvbjogTWFuaWZlc3RBY3Rpb24gPSBtYW5pZmVzdEFjdGlvbnNbYWN0aW9uS2V5XTtcblx0XHRjb25zdCBsYXN0RG90SW5kZXggPSBtYW5pZmVzdEFjdGlvbi5wcmVzcz8ubGFzdEluZGV4T2YoXCIuXCIpIHx8IC0xO1xuXG5cdFx0Ly8gVG8gaWRlbnRpZnkgdGhlIGFubm90YXRpb24gYWN0aW9uIHByb3BlcnR5IG92ZXJ3cml0ZSB2aWEgbWFuaWZlc3QgdXNlLWNhc2UuXG5cdFx0Y29uc3QgaXNBbm5vdGF0aW9uQWN0aW9uID0gYUFubm90YXRpb25BY3Rpb25zPy5zb21lKChhY3Rpb24pID0+IGFjdGlvbi5rZXkgPT09IGFjdGlvbktleSkgfHwgZmFsc2U7XG5cdFx0aWYgKG1hbmlmZXN0QWN0aW9uLmZhY2V0TmFtZSkge1xuXHRcdFx0ZmFjZXROYW1lID0gbWFuaWZlc3RBY3Rpb24uZmFjZXROYW1lO1xuXHRcdH1cblxuXHRcdGFjdGlvbnNbYWN0aW9uS2V5XSA9IHtcblx0XHRcdGlkOiBhQW5ub3RhdGlvbkFjdGlvbnM/LnNvbWUoKGFjdGlvbikgPT4gYWN0aW9uLmtleSA9PT0gYWN0aW9uS2V5KSA/IGFjdGlvbktleSA6IEN1c3RvbUFjdGlvbklEKGFjdGlvbktleSksXG5cdFx0XHR2aXNpYmxlOiBtYW5pZmVzdEFjdGlvbi52aXNpYmxlID09PSB1bmRlZmluZWQgPyBcInRydWVcIiA6IG1hbmlmZXN0QWN0aW9uLnZpc2libGUsXG5cdFx0XHRlbmFibGVkOiBfZ2V0TWFuaWZlc3RFbmFibGVkKG1hbmlmZXN0QWN0aW9uLCBpc0Fubm90YXRpb25BY3Rpb24sIGNvbnZlcnRlckNvbnRleHQpLFxuXHRcdFx0aGFuZGxlck1vZHVsZTogbWFuaWZlc3RBY3Rpb24ucHJlc3MgJiYgbWFuaWZlc3RBY3Rpb24ucHJlc3Muc3Vic3RyaW5nKDAsIGxhc3REb3RJbmRleCkucmVwbGFjZSgvXFwuL2dpLCBcIi9cIiksXG5cdFx0XHRoYW5kbGVyTWV0aG9kOiBtYW5pZmVzdEFjdGlvbi5wcmVzcyAmJiBtYW5pZmVzdEFjdGlvbi5wcmVzcy5zdWJzdHJpbmcobGFzdERvdEluZGV4ICsgMSksXG5cdFx0XHRwcmVzczogbWFuaWZlc3RBY3Rpb24ucHJlc3MsXG5cdFx0XHR0ZXh0OiBtYW5pZmVzdEFjdGlvbi50ZXh0LFxuXHRcdFx0bm9XcmFwOiBtYW5pZmVzdEFjdGlvbi5fX25vV3JhcCxcblx0XHRcdGtleTogcmVwbGFjZVNwZWNpYWxDaGFycyhhY3Rpb25LZXkpLFxuXHRcdFx0ZW5hYmxlT25TZWxlY3Q6IG1hbmlmZXN0QWN0aW9uLmVuYWJsZU9uU2VsZWN0LFxuXHRcdFx0ZGVmYXVsdFZhbHVlc0V4dGVuc2lvbkZ1bmN0aW9uOiBtYW5pZmVzdEFjdGlvbi5kZWZhdWx0VmFsdWVzRnVuY3Rpb24sXG5cdFx0XHRwb3NpdGlvbjoge1xuXHRcdFx0XHRhbmNob3I6IG1hbmlmZXN0QWN0aW9uLnBvc2l0aW9uPy5hbmNob3IsXG5cdFx0XHRcdHBsYWNlbWVudDogbWFuaWZlc3RBY3Rpb24ucG9zaXRpb24gPT09IHVuZGVmaW5lZCA/IFBsYWNlbWVudC5BZnRlciA6IG1hbmlmZXN0QWN0aW9uLnBvc2l0aW9uLnBsYWNlbWVudFxuXHRcdFx0fSxcblx0XHRcdGlzTmF2aWdhYmxlOiBpc0FjdGlvbk5hdmlnYWJsZShtYW5pZmVzdEFjdGlvbiwgbmF2aWdhdGlvblNldHRpbmdzLCBjb25zaWRlck5hdmlnYXRpb25TZXR0aW5ncyksXG5cdFx0XHRjb21tYW5kOiBtYW5pZmVzdEFjdGlvbi5jb21tYW5kLFxuXHRcdFx0cmVxdWlyZXNTZWxlY3Rpb246IG1hbmlmZXN0QWN0aW9uLnJlcXVpcmVzU2VsZWN0aW9uID09PSB1bmRlZmluZWQgPyBmYWxzZSA6IG1hbmlmZXN0QWN0aW9uLnJlcXVpcmVzU2VsZWN0aW9uLFxuXHRcdFx0ZW5hYmxlQXV0b1Njcm9sbDogZW5hYmxlQXV0b1Njcm9sbChtYW5pZmVzdEFjdGlvbiksXG5cdFx0XHRtZW51OiBtYW5pZmVzdEFjdGlvbi5tZW51ID8/IFtdLFxuXHRcdFx0ZmFjZXROYW1lOiBtYW5pZmVzdEFjdGlvbi5pbmxpbmUgPyBmYWNldE5hbWUgOiB1bmRlZmluZWRcblx0XHR9O1xuXHRcdC8vIERvIG5vdCBvdmVycmlkZSB0aGUgJ3R5cGUnIGdpdmVuIGluIGFuIGFubm90YXRpb24gYWN0aW9uXG5cdFx0aWYgKCFpc0Fubm90YXRpb25BY3Rpb24pIHtcblx0XHRcdGFjdGlvbnNbYWN0aW9uS2V5XS50eXBlID0gbWFuaWZlc3RBY3Rpb24ubWVudSA/IEFjdGlvblR5cGUuTWVudSA6IEFjdGlvblR5cGUuRGVmYXVsdDtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHByZXBhcmVNZW51QWN0aW9uKGFjdGlvbnMsIGFBbm5vdGF0aW9uQWN0aW9ucyA/PyBbXSwgYUhpZGRlbkhlYWRlckFjdGlvbnMgPz8gW10pO1xufVxuXG5mdW5jdGlvbiBnZXRNYW5pZmVzdEFjdGlvbkVuYWJsZW1lbnQobWFuaWZlc3RBY3Rpb246IE1hbmlmZXN0QWN0aW9uLCBjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0KSB7XG5cdGNvbnN0IHJlc29sdmVkQmluZGluZyA9IHJlc29sdmVCaW5kaW5nU3RyaW5nKG1hbmlmZXN0QWN0aW9uLmVuYWJsZWQgYXMgc3RyaW5nLCBcImJvb2xlYW5cIik7XG5cdGxldCByZXN1bHQ6IGFueTtcblx0aWYgKGlzQ29uc3RhbnQocmVzb2x2ZWRCaW5kaW5nKSAmJiByZXNvbHZlZEJpbmRpbmcudmFsdWUgPT09IHVuZGVmaW5lZCkge1xuXHRcdC8vIE5vIGVuYWJsZWQgcHJvcGVydHkgY29uZmlndXJlZCBpbiBtYW5pZmVzdCBmb3IgdGhlIGN1c3RvbSBhY3Rpb24gLS0+IGVuYWJsZSBjdXN0b20gYWN0aW9uXG5cdFx0cmVzdWx0ID0gdHJ1ZTtcblx0fSBlbHNlIGlmIChpc0NvbnN0YW50KHJlc29sdmVkQmluZGluZykgJiYgdHlwZW9mIHJlc29sdmVkQmluZGluZy52YWx1ZSA9PT0gXCJib29sZWFuXCIpIHtcblx0XHQvLyB0cnVlIC8gZmFsc2Vcblx0XHRyZXN1bHQgPSByZXNvbHZlZEJpbmRpbmcudmFsdWU7XG5cdH0gZWxzZSBpZiAocmVzb2x2ZWRCaW5kaW5nLl90eXBlICE9PSBcIkVtYmVkZGVkQmluZGluZ1wiICYmIHJlc29sdmVkQmluZGluZy5fdHlwZSAhPT0gXCJFbWJlZGRlZEV4cHJlc3Npb25CaW5kaW5nXCIpIHtcblx0XHQvLyBUaGVuIGl0J3MgYSBtb2R1bGUtbWV0aG9kIHJlZmVyZW5jZSBcInNhcC54eHgueXl5LmRvU29tZXRoaW5nXCJcblx0XHRjb25zdCBtZXRob2RQYXRoID0gcmVzb2x2ZWRCaW5kaW5nLnZhbHVlIGFzIHN0cmluZztcblx0XHRyZXN1bHQgPSBmb3JtYXRSZXN1bHQoXG5cdFx0XHRbYmluZGluZ0V4cHJlc3Npb24oXCIvXCIsIFwiJHZpZXdcIiksIG1ldGhvZFBhdGgsIGJpbmRpbmdFeHByZXNzaW9uKFwic2VsZWN0ZWRDb250ZXh0c1wiLCBcImludGVybmFsXCIpXSxcblx0XHRcdGZwbUZvcm1hdHRlci5jdXN0b21Jc0VuYWJsZWRDaGVjayBhcyBhbnksXG5cdFx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKVxuXHRcdCk7XG5cdH0gZWxzZSB7XG5cdFx0Ly8gdGhlbiBpdCdzIGEgYmluZGluZ1xuXHRcdHJlc3VsdCA9IHJlc29sdmVkQmluZGluZztcblx0fVxuXG5cdC8vIENvbnNpZGVyIHJlcXVpcmVzU2VsZWN0aW9uIHByb3BlcnR5IHRvIGluY2x1ZGUgc2VsZWN0ZWRDb250ZXh0cyBpbiB0aGUgYmluZGluZyBleHByZXNzaW9uXG5cdHJldHVybiBjb21waWxlQmluZGluZyhcblx0XHRpZkVsc2UoXG5cdFx0XHRtYW5pZmVzdEFjdGlvbi5yZXF1aXJlc1NlbGVjdGlvbiA9PT0gdHJ1ZSxcblx0XHRcdGFuZChncmVhdGVyT3JFcXVhbChiaW5kaW5nRXhwcmVzc2lvbihcIm51bWJlck9mU2VsZWN0ZWRDb250ZXh0c1wiLCBcImludGVybmFsXCIpLCAxKSwgcmVzdWx0KSxcblx0XHRcdHJlc3VsdFxuXHRcdClcblx0KTtcbn1cblxuLyoqXG4gKiBNZXRob2QgdG8gZGV0ZXJtaW5lIHRoZSB2YWx1ZSBvZiB0aGUgJ2VuYWJsZWQnIHByb3BlcnR5IG9mIGFuIGFubm90YXRpb24tYmFzZWQgYWN0aW9uLlxuICpcbiAqIEBwYXJhbSB7Q29udmVydGVyQ29udGV4dH0gY29udmVydGVyQ29udGV4dCBUaGUgaW5zdGFuY2Ugb2YgdGhlIGNvbnZlcnRlciBjb250ZXh0XG4gKiBAcGFyYW0ge0FjdGlvbn0gYWN0aW9uVGFyZ2V0IFRoZSBpbnN0YW5jZSBvZiB0aGUgYWN0aW9uXG4gKiBAcmV0dXJucyB7QmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj59IFRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSAnZW5hYmxlZCcgcHJvcGVydHkgb2YgdGhlIGFjdGlvbiBidXR0b24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbmFibGVkRm9yQW5ub3RhdGlvbkFjdGlvbihcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0YWN0aW9uVGFyZ2V0OiBBY3Rpb24gfCB1bmRlZmluZWRcbik6IEJpbmRpbmdFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0aWYgKGFjdGlvblRhcmdldD8uaXNCb3VuZCAhPT0gdHJ1ZSkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cdGlmIChhY3Rpb25UYXJnZXQ/LnBhcmFtZXRlcnM/Lmxlbmd0aCkge1xuXHRcdGNvbnN0IGJpbmRpbmdQYXJhbWV0ZXJGdWxsTmFtZSA9IGFjdGlvblRhcmdldD8ucGFyYW1ldGVyc1swXS5mdWxseVF1YWxpZmllZE5hbWUsXG5cdFx0XHRvcGVyYXRpb25BdmFpbGFibGVFeHByZXNzaW9uID0gYW5ub3RhdGlvbkV4cHJlc3Npb24oXG5cdFx0XHRcdGFjdGlvblRhcmdldD8uYW5ub3RhdGlvbnMuQ29yZT8uT3BlcmF0aW9uQXZhaWxhYmxlLFxuXHRcdFx0XHRbXSxcblx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHQocGF0aDogc3RyaW5nKSA9PiBiaW5kaW5nQ29udGV4dFBhdGhWaXNpdG9yKHBhdGgsIGNvbnZlcnRlckNvbnRleHQsIGJpbmRpbmdQYXJhbWV0ZXJGdWxsTmFtZSlcblx0XHRcdCkgYXMgQmluZGluZ0V4cHJlc3Npb25FeHByZXNzaW9uPGJvb2xlYW4+O1xuXHRcdGlmIChhY3Rpb25UYXJnZXQ/LmFubm90YXRpb25zLkNvcmU/Lk9wZXJhdGlvbkF2YWlsYWJsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRyZXR1cm4gY29tcGlsZUJpbmRpbmcoZXF1YWwob3BlcmF0aW9uQXZhaWxhYmxlRXhwcmVzc2lvbiwgdHJ1ZSkpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlbWFudGljT2JqZWN0TWFwcGluZyhhTWFwcGluZ3M6IGFueVtdKTogYW55W10ge1xuXHRjb25zdCBhU2VtYW50aWNPYmplY3RNYXBwaW5nczogYW55W10gPSBbXTtcblx0YU1hcHBpbmdzLmZvckVhY2goKG9NYXBwaW5nKSA9PiB7XG5cdFx0Y29uc3Qgb1NPTWFwcGluZyA9IHtcblx0XHRcdFwiTG9jYWxQcm9wZXJ0eVwiOiB7XG5cdFx0XHRcdFwiJFByb3BlcnR5UGF0aFwiOiBvTWFwcGluZy5Mb2NhbFByb3BlcnR5LnZhbHVlXG5cdFx0XHR9LFxuXHRcdFx0XCJTZW1hbnRpY09iamVjdFByb3BlcnR5XCI6IG9NYXBwaW5nLlNlbWFudGljT2JqZWN0UHJvcGVydHlcblx0XHR9O1xuXHRcdGFTZW1hbnRpY09iamVjdE1hcHBpbmdzLnB1c2gob1NPTWFwcGluZyk7XG5cdH0pO1xuXHRyZXR1cm4gYVNlbWFudGljT2JqZWN0TWFwcGluZ3M7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0FjdGlvbk5hdmlnYWJsZShcblx0YWN0aW9uOiBNYW5pZmVzdEFjdGlvbiB8IE1hbmlmZXN0VGFibGVDb2x1bW4sXG5cdG5hdmlnYXRpb25TZXR0aW5ncz86IE5hdmlnYXRpb25TZXR0aW5nc0NvbmZpZ3VyYXRpb24sXG5cdGNvbnNpZGVyTmF2aWdhdGlvblNldHRpbmdzPzogYm9vbGVhblxuKTogYm9vbGVhbiB7XG5cdGxldCBiSXNOYXZpZ2F0aW9uQ29uZmlndXJlZDogYm9vbGVhbiA9IHRydWU7XG5cdGlmIChjb25zaWRlck5hdmlnYXRpb25TZXR0aW5ncykge1xuXHRcdGNvbnN0IGRldGFpbE9yRGlzcGxheSA9IG5hdmlnYXRpb25TZXR0aW5ncyAmJiAobmF2aWdhdGlvblNldHRpbmdzLmRldGFpbCB8fCBuYXZpZ2F0aW9uU2V0dGluZ3MuZGlzcGxheSk7XG5cdFx0YklzTmF2aWdhdGlvbkNvbmZpZ3VyZWQgPSBkZXRhaWxPckRpc3BsYXk/LnJvdXRlID8gdHJ1ZSA6IGZhbHNlO1xuXHR9XG5cdC8vIHdoZW4gZW5hYmxlQXV0b1Njcm9sbCBpcyB0cnVlIHRoZSBuYXZpZ2F0ZVRvSW5zdGFuY2UgZmVhdHVyZSBpcyBkaXNhYmxlZFxuXHRpZiAoXG5cdFx0KGFjdGlvbiAmJlxuXHRcdFx0YWN0aW9uLmFmdGVyRXhlY3V0aW9uICYmXG5cdFx0XHQoYWN0aW9uLmFmdGVyRXhlY3V0aW9uPy5uYXZpZ2F0ZVRvSW5zdGFuY2UgPT09IGZhbHNlIHx8IGFjdGlvbi5hZnRlckV4ZWN1dGlvbj8uZW5hYmxlQXV0b1Njcm9sbCA9PT0gdHJ1ZSkpIHx8XG5cdFx0IWJJc05hdmlnYXRpb25Db25maWd1cmVkXG5cdCkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHRyZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuYWJsZUF1dG9TY3JvbGwoYWN0aW9uOiBNYW5pZmVzdEFjdGlvbik6IGJvb2xlYW4ge1xuXHRyZXR1cm4gYWN0aW9uPy5hZnRlckV4ZWN1dGlvbj8uZW5hYmxlQXV0b1Njcm9sbCA9PT0gdHJ1ZTtcbn1cbiJdfQ==
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
import { Action } from "@sap-ux/vocabularies-types";
|
|
2
|
-
import {
|
|
2
|
+
import { bindingContextPathVisitor } from "sap/fe/core/converters/helpers/BindingHelper";
|
|
3
3
|
import { ConfigurableObject, CustomElement, Placement } from "sap/fe/core/converters/helpers/ConfigurableObject";
|
|
4
4
|
import { CustomActionID } from "sap/fe/core/converters/helpers/ID";
|
|
5
|
-
import {
|
|
5
|
+
import { ActionType, ManifestAction, ManifestTableColumn, NavigationSettingsConfiguration } from "sap/fe/core/converters/ManifestSettings";
|
|
6
|
+
import fpmFormatter from "sap/fe/core/formatters/FPMFormatter";
|
|
6
7
|
import {
|
|
8
|
+
and,
|
|
7
9
|
annotationExpression,
|
|
8
10
|
bindingExpression,
|
|
9
11
|
BindingExpression,
|
|
12
|
+
BindingExpressionExpression,
|
|
10
13
|
compileBinding,
|
|
11
|
-
or,
|
|
12
|
-
formatResult,
|
|
13
|
-
isConstant,
|
|
14
|
-
resolveBindingString,
|
|
15
14
|
equal,
|
|
16
|
-
|
|
15
|
+
formatResult,
|
|
16
|
+
greaterOrEqual,
|
|
17
17
|
ifElse,
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
isConstant,
|
|
19
|
+
or,
|
|
20
|
+
resolveBindingString
|
|
20
21
|
} from "sap/fe/core/helpers/BindingExpression";
|
|
21
|
-
import
|
|
22
|
+
import { replaceSpecialChars } from "sap/fe/core/helpers/StableIdHelper";
|
|
22
23
|
import ConverterContext from "../../ConverterContext";
|
|
23
|
-
import { bindingContextPathVisitor } from "sap/fe/core/converters/helpers/BindingHelper";
|
|
24
24
|
|
|
25
25
|
export enum ButtonType {
|
|
26
26
|
Accept = "Accept",
|
|
@@ -47,6 +47,7 @@ export type BaseAction = ConfigurableObject & {
|
|
|
47
47
|
enabled?: BindingExpression<boolean>;
|
|
48
48
|
visible?: BindingExpression<boolean>;
|
|
49
49
|
enableOnSelect?: string;
|
|
50
|
+
annotationPath?: string;
|
|
50
51
|
defaultValuesExtensionFunction?: string;
|
|
51
52
|
isNavigable?: boolean;
|
|
52
53
|
enableAutoScroll?: boolean;
|
|
@@ -56,6 +57,7 @@ export type BaseAction = ConfigurableObject & {
|
|
|
56
57
|
parentEntityDeleteEnabled?: BindingExpression<boolean>;
|
|
57
58
|
menu?: (string | CustomAction | BaseAction)[];
|
|
58
59
|
facetName?: string;
|
|
60
|
+
command?: string | undefined;
|
|
59
61
|
};
|
|
60
62
|
|
|
61
63
|
export type AnnotationAction = BaseAction & {
|
|
@@ -117,13 +119,14 @@ function prepareMenuAction(
|
|
|
117
119
|
if (enabled) {
|
|
118
120
|
action.enabled = enabled;
|
|
119
121
|
}
|
|
122
|
+
action.command = actions[action.key]?.command;
|
|
120
123
|
}
|
|
121
124
|
|
|
122
125
|
if (
|
|
123
126
|
(action?.visible ||
|
|
124
127
|
action?.type === ActionType.DataFieldForAction ||
|
|
125
128
|
action?.type === ActionType.DataFieldForIntentBasedNavigation) &&
|
|
126
|
-
!aHiddenHeaderActions.find(hiddenAction => hiddenAction.key === menuKey)
|
|
129
|
+
!aHiddenHeaderActions.find((hiddenAction) => hiddenAction.key === menuKey)
|
|
127
130
|
) {
|
|
128
131
|
menuVisible = compileBinding(
|
|
129
132
|
or(resolveBindingString((action as any).visible, "boolean"), resolveBindingString(menuVisible, "boolean"))
|
|
@@ -144,7 +147,7 @@ function prepareMenuAction(
|
|
|
144
147
|
|
|
145
148
|
menuItemKeys = [...menuItemKeys, ..._menuItemKeys];
|
|
146
149
|
}
|
|
147
|
-
if (aHiddenHeaderActions.find(hiddenAction => hiddenAction.key === actionKey)) {
|
|
150
|
+
if (aHiddenHeaderActions.find((hiddenAction) => hiddenAction.key === actionKey)) {
|
|
148
151
|
manifestAction.visible = false;
|
|
149
152
|
}
|
|
150
153
|
allActions[actionKey] = manifestAction;
|
|
@@ -157,7 +160,7 @@ function prepareMenuAction(
|
|
|
157
160
|
|
|
158
161
|
export const removeDuplicateActions = (actions: BaseAction[]): BaseAction[] => {
|
|
159
162
|
let oMenuItemKeys: { [key: string]: any } = {};
|
|
160
|
-
actions.forEach(action => {
|
|
163
|
+
actions.forEach((action) => {
|
|
161
164
|
if (action?.menu?.length) {
|
|
162
165
|
oMenuItemKeys = action.menu.reduce((item, { key }: any) => {
|
|
163
166
|
if (key && !item[key]) {
|
|
@@ -167,7 +170,7 @@ export const removeDuplicateActions = (actions: BaseAction[]): BaseAction[] => {
|
|
|
167
170
|
}, oMenuItemKeys);
|
|
168
171
|
}
|
|
169
172
|
});
|
|
170
|
-
return actions.filter(action => !oMenuItemKeys[action.key]);
|
|
173
|
+
return actions.filter((action) => !oMenuItemKeys[action.key]);
|
|
171
174
|
};
|
|
172
175
|
|
|
173
176
|
/**
|
|
@@ -179,7 +182,7 @@ export const removeDuplicateActions = (actions: BaseAction[]): BaseAction[] => {
|
|
|
179
182
|
* @param converterContext
|
|
180
183
|
* @returns {BindingExpression<string> | string | boolean} Determined property value for the column
|
|
181
184
|
*/
|
|
182
|
-
const _getManifestEnabled = function(
|
|
185
|
+
const _getManifestEnabled = function (
|
|
183
186
|
manifestAction: ManifestAction,
|
|
184
187
|
isAnnotationAction: boolean,
|
|
185
188
|
converterContext: ConverterContext
|
|
@@ -219,13 +222,13 @@ export function getActionsFromManifest(
|
|
|
219
222
|
const lastDotIndex = manifestAction.press?.lastIndexOf(".") || -1;
|
|
220
223
|
|
|
221
224
|
// To identify the annotation action property overwrite via manifest use-case.
|
|
222
|
-
const isAnnotationAction = aAnnotationActions?.some(action => action.key === actionKey) || false;
|
|
225
|
+
const isAnnotationAction = aAnnotationActions?.some((action) => action.key === actionKey) || false;
|
|
223
226
|
if (manifestAction.facetName) {
|
|
224
227
|
facetName = manifestAction.facetName;
|
|
225
228
|
}
|
|
226
229
|
|
|
227
230
|
actions[actionKey] = {
|
|
228
|
-
id: aAnnotationActions?.some(action => action.key === actionKey) ? actionKey : CustomActionID(actionKey),
|
|
231
|
+
id: aAnnotationActions?.some((action) => action.key === actionKey) ? actionKey : CustomActionID(actionKey),
|
|
229
232
|
visible: manifestAction.visible === undefined ? "true" : manifestAction.visible,
|
|
230
233
|
enabled: _getManifestEnabled(manifestAction, isAnnotationAction, converterContext),
|
|
231
234
|
handlerModule: manifestAction.press && manifestAction.press.substring(0, lastDotIndex).replace(/\./gi, "/"),
|
|
@@ -241,6 +244,7 @@ export function getActionsFromManifest(
|
|
|
241
244
|
placement: manifestAction.position === undefined ? Placement.After : manifestAction.position.placement
|
|
242
245
|
},
|
|
243
246
|
isNavigable: isActionNavigable(manifestAction, navigationSettings, considerNavigationSettings),
|
|
247
|
+
command: manifestAction.command,
|
|
244
248
|
requiresSelection: manifestAction.requiresSelection === undefined ? false : manifestAction.requiresSelection,
|
|
245
249
|
enableAutoScroll: enableAutoScroll(manifestAction),
|
|
246
250
|
menu: manifestAction.menu ?? [],
|
|
@@ -300,15 +304,6 @@ export function getEnabledForAnnotationAction(
|
|
|
300
304
|
if (actionTarget?.isBound !== true) {
|
|
301
305
|
return true;
|
|
302
306
|
}
|
|
303
|
-
/*
|
|
304
|
-
FIXME Disable failing music tests
|
|
305
|
-
Currently on CAP the following binding (which is the good one) generates error:
|
|
306
|
-
if (actionTarget?.annotations.Core?.OperationAvailable === null) {
|
|
307
|
-
const unboundActionName = actionTarget.fullyQualifiedName.split("(")[0];
|
|
308
|
-
return "{= !${#" + unboundActionName + "} ? false : true } }";
|
|
309
|
-
}
|
|
310
|
-
CAP tries to read the action as property and doesn't find it
|
|
311
|
-
*/
|
|
312
307
|
if (actionTarget?.parameters?.length) {
|
|
313
308
|
const bindingParameterFullName = actionTarget?.parameters[0].fullyQualifiedName,
|
|
314
309
|
operationAvailableExpression = annotationExpression(
|
|
@@ -326,7 +321,7 @@ export function getEnabledForAnnotationAction(
|
|
|
326
321
|
|
|
327
322
|
export function getSemanticObjectMapping(aMappings: any[]): any[] {
|
|
328
323
|
const aSemanticObjectMappings: any[] = [];
|
|
329
|
-
aMappings.forEach(oMapping => {
|
|
324
|
+
aMappings.forEach((oMapping) => {
|
|
330
325
|
const oSOMapping = {
|
|
331
326
|
"LocalProperty": {
|
|
332
327
|
"$PropertyPath": oMapping.LocalProperty.value
|