@sapui5/sap.fe.core 1.110.0 → 1.111.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/README.md +0 -4
- package/package.json +2 -23
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/ActionRuntime-dbg.js +182 -0
- package/src/sap/fe/core/ActionRuntime.js +3 -181
- package/src/sap/fe/core/ActionRuntime.js.map +1 -0
- package/src/sap/fe/core/ActionRuntime.ts +3 -5
- package/src/sap/fe/core/AppComponent-dbg.js +435 -0
- package/src/sap/fe/core/AppComponent.js +3 -439
- package/src/sap/fe/core/AppComponent.js.map +1 -0
- package/src/sap/fe/core/AppComponent.ts +0 -3
- package/src/sap/fe/core/AppStateHandler-dbg.js +200 -0
- package/src/sap/fe/core/AppStateHandler.js +3 -227
- package/src/sap/fe/core/AppStateHandler.js.map +1 -0
- package/src/sap/fe/core/BaseController-dbg.js +76 -0
- package/src/sap/fe/core/BaseController.js +3 -73
- package/src/sap/fe/core/BaseController.js.map +1 -0
- package/src/sap/fe/core/CommonUtils-dbg.js +2135 -0
- package/src/sap/fe/core/CommonUtils.js +3 -2296
- package/src/sap/fe/core/CommonUtils.js.map +1 -0
- package/src/sap/fe/core/CommonUtils.ts +34 -28
- package/src/sap/fe/core/ExtensionAPI-dbg.js +273 -0
- package/src/sap/fe/core/ExtensionAPI.js +3 -280
- package/src/sap/fe/core/ExtensionAPI.js.map +1 -0
- package/src/sap/fe/core/PageController-dbg.js +203 -0
- package/src/sap/fe/core/PageController.js +3 -200
- package/src/sap/fe/core/PageController.js.map +1 -0
- package/src/sap/fe/core/TemplateComponent-dbg.js +218 -0
- package/src/sap/fe/core/TemplateComponent.js +3 -216
- package/src/sap/fe/core/TemplateComponent.js.map +1 -0
- package/src/sap/fe/core/TemplateModel-dbg.js +75 -0
- package/src/sap/fe/core/TemplateModel.js +3 -72
- package/src/sap/fe/core/TemplateModel.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/AttributeModel-dbg.js +57 -0
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js +3 -54
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlock-dbg.js +410 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +11 -355
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +118 -52
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter-dbg.js +14 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter.js +3 -11
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment-dbg.js +44 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.js +3 -40
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.ts +3 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime-dbg.js +932 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +16 -1292
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +40 -42
- package/src/sap/fe/core/buildingBlocks/TraceInfo-dbg.js +434 -0
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +3 -481
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +5 -5
- package/src/sap/fe/core/controllerextensions/BusyLocker-dbg.js +92 -0
- package/src/sap/fe/core/controllerextensions/BusyLocker.js +3 -89
- package/src/sap/fe/core/controllerextensions/BusyLocker.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/EditFlow-dbg.js +1659 -0
- package/src/sap/fe/core/controllerextensions/EditFlow.js +3 -1868
- package/src/sap/fe/core/controllerextensions/EditFlow.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +180 -125
- package/src/sap/fe/core/controllerextensions/Feedback-dbg.js +70 -0
- package/src/sap/fe/core/controllerextensions/Feedback.js +3 -67
- package/src/sap/fe/core/controllerextensions/Feedback.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation-dbg.js +83 -0
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +3 -84
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +6 -8
- package/src/sap/fe/core/controllerextensions/InternalEditFlow-dbg.js +711 -0
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +3 -707
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +79 -48
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +791 -0
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +3 -696
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +107 -7
- package/src/sap/fe/core/controllerextensions/InternalRouting-dbg.js +984 -0
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +3 -996
- package/src/sap/fe/core/controllerextensions/InternalRouting.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +43 -23
- package/src/sap/fe/core/controllerextensions/KPIManagement-dbg.js +1013 -0
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +3 -1011
- package/src/sap/fe/core/controllerextensions/KPIManagement.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +12 -10
- package/src/sap/fe/core/controllerextensions/MassEdit-dbg.js +135 -0
- package/src/sap/fe/core/controllerextensions/MassEdit.js +3 -133
- package/src/sap/fe/core/controllerextensions/MassEdit.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +1 -1
- package/src/sap/fe/core/controllerextensions/MessageHandler-dbg.js +221 -0
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +3 -224
- package/src/sap/fe/core/controllerextensions/MessageHandler.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/PageReady-dbg.js +254 -0
- package/src/sap/fe/core/controllerextensions/PageReady.js +3 -279
- package/src/sap/fe/core/controllerextensions/PageReady.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/PageReady.ts +2 -2
- package/src/sap/fe/core/controllerextensions/Paginator-dbg.js +169 -0
- package/src/sap/fe/core/controllerextensions/Paginator.js +3 -174
- package/src/sap/fe/core/controllerextensions/Paginator.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/Paginator.ts +4 -5
- package/src/sap/fe/core/controllerextensions/Placeholder-dbg.js +132 -0
- package/src/sap/fe/core/controllerextensions/Placeholder.js +3 -130
- package/src/sap/fe/core/controllerextensions/Placeholder.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/Routing-dbg.js +138 -0
- package/src/sap/fe/core/controllerextensions/Routing.js +3 -135
- package/src/sap/fe/core/controllerextensions/Routing.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/RoutingListener-dbg.js +10 -0
- package/src/sap/fe/core/controllerextensions/RoutingListener.js +3 -7
- package/src/sap/fe/core/controllerextensions/RoutingListener.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/Share-dbg.js +317 -0
- package/src/sap/fe/core/controllerextensions/Share.js +3 -356
- package/src/sap/fe/core/controllerextensions/Share.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/Share.ts +6 -1
- package/src/sap/fe/core/controllerextensions/SideEffects-dbg.js +553 -0
- package/src/sap/fe/core/controllerextensions/SideEffects.js +3 -651
- package/src/sap/fe/core/controllerextensions/SideEffects.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +411 -553
- package/src/sap/fe/core/controllerextensions/ViewState-dbg.js +903 -0
- package/src/sap/fe/core/controllerextensions/ViewState.js +3 -967
- package/src/sap/fe/core/controllerextensions/ViewState.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/ViewState.ts +90 -41
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase-dbg.js +99 -0
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +3 -96
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync-dbg.js +314 -0
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +3 -336
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon-dbg.js +152 -0
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +3 -161
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/collaboration/Manage-dbg.js +243 -0
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +3 -302
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block-dbg.js +252 -0
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js +6 -0
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.tsx +188 -0
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper-dbg.js +1196 -0
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +3 -1479
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +239 -289
- package/src/sap/fe/core/controllerextensions/editFlow/draft-dbg.js +689 -0
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +3 -785
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +134 -142
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup-dbg.js +236 -0
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +3 -287
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations-dbg.js +1422 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +3 -1598
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +40 -24
- package/src/sap/fe/core/controllerextensions/editFlow/sticky-dbg.js +185 -0
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +3 -214
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +4 -5
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling-dbg.js +1219 -0
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +3 -1213
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher-dbg.js +304 -0
- package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.js +3 -339
- package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/routing/NavigationReason-dbg.js +15 -0
- package/src/sap/fe/core/controllerextensions/routing/NavigationReason.js +6 -0
- package/src/sap/fe/core/controllerextensions/routing/NavigationReason.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/routing/NavigationReason.ts +6 -0
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy-dbg.js +798 -0
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +3 -799
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js.map +1 -0
- package/src/sap/fe/core/controls/Any-dbg.js +32 -0
- package/src/sap/fe/core/controls/Any.js +3 -29
- package/src/sap/fe/core/controls/Any.js.map +1 -0
- package/src/sap/fe/core/controls/AnyElement-dbg.js +29 -0
- package/src/sap/fe/core/controls/AnyElement.js +3 -26
- package/src/sap/fe/core/controls/AnyElement.js.map +1 -0
- package/src/sap/fe/core/controls/CommandExecution-dbg.js +72 -0
- package/src/sap/fe/core/controls/CommandExecution.js +3 -69
- package/src/sap/fe/core/controls/CommandExecution.js.map +1 -0
- package/src/sap/fe/core/controls/ConditionalWrapper-dbg.js +151 -0
- package/src/sap/fe/core/controls/ConditionalWrapper.js +3 -148
- package/src/sap/fe/core/controls/ConditionalWrapper.js.map +1 -0
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper-dbg.js +330 -0
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +3 -328
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js.map +1 -0
- package/src/sap/fe/core/controls/CustomQuickViewPage-dbg.js +126 -0
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +3 -124
- package/src/sap/fe/core/controls/CustomQuickViewPage.js.map +1 -0
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler-dbg.js +170 -0
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +3 -171
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js.map +1 -0
- package/src/sap/fe/core/controls/FieldWrapper-dbg.js +194 -0
- package/src/sap/fe/core/controls/FieldWrapper.js +3 -191
- package/src/sap/fe/core/controls/FieldWrapper.js.map +1 -0
- package/src/sap/fe/core/controls/FileWrapper-dbg.js +280 -0
- package/src/sap/fe/core/controls/FileWrapper.js +3 -277
- package/src/sap/fe/core/controls/FileWrapper.js.map +1 -0
- package/src/sap/fe/core/controls/FilterBar-dbg.js +167 -0
- package/src/sap/fe/core/controls/FilterBar.js +3 -166
- package/src/sap/fe/core/controls/FilterBar.js.map +1 -0
- package/src/sap/fe/core/controls/FormElementWrapper-dbg.js +92 -0
- package/src/sap/fe/core/controls/FormElementWrapper.js +3 -89
- package/src/sap/fe/core/controls/FormElementWrapper.js.map +1 -0
- package/src/sap/fe/core/controls/MassEditSelect-dbg.js +33 -0
- package/src/sap/fe/core/controls/MassEditSelect.js +3 -30
- package/src/sap/fe/core/controls/MassEditSelect.js.map +1 -0
- package/src/sap/fe/core/controls/MultiValueParameterDelegate-dbg.js +37 -0
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +3 -34
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.js.map +1 -0
- package/src/sap/fe/core/controls/filterbar/FilterContainer-dbg.js +119 -0
- package/src/sap/fe/core/controls/filterbar/FilterContainer.js +3 -121
- package/src/sap/fe/core/controls/filterbar/FilterContainer.js.map +1 -0
- package/src/sap/fe/core/controls/filterbar/VisualFilter-dbg.js +267 -0
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +3 -264
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js.map +1 -0
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer-dbg.js +150 -0
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +3 -150
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js.map +1 -0
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils-dbg.js +310 -0
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +3 -307
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js.map +1 -0
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +1 -1
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers-dbg.js +491 -0
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +3 -504
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js.map +1 -0
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +2 -2
- package/src/sap/fe/core/converters/ConverterContext-dbg.js +403 -0
- package/src/sap/fe/core/converters/ConverterContext.js +3 -406
- package/src/sap/fe/core/converters/ConverterContext.js.map +1 -0
- package/src/sap/fe/core/converters/ManifestSettings-dbg.js +88 -0
- package/src/sap/fe/core/converters/ManifestSettings.js +3 -84
- package/src/sap/fe/core/converters/ManifestSettings.js.map +1 -0
- package/src/sap/fe/core/converters/ManifestSettings.ts +3 -1
- package/src/sap/fe/core/converters/ManifestWrapper-dbg.js +402 -0
- package/src/sap/fe/core/converters/ManifestWrapper.js +3 -406
- package/src/sap/fe/core/converters/ManifestWrapper.js.map +1 -0
- package/src/sap/fe/core/converters/MetaModelConverter-dbg.js +1161 -0
- package/src/sap/fe/core/converters/MetaModelConverter.js +3 -1225
- package/src/sap/fe/core/converters/MetaModelConverter.js.map +1 -0
- package/src/sap/fe/core/converters/MetaModelConverter.ts +193 -199
- package/src/sap/fe/core/converters/TemplateConverter-dbg.js +89 -0
- package/src/sap/fe/core/converters/TemplateConverter.js +3 -86
- package/src/sap/fe/core/converters/TemplateConverter.js.map +1 -0
- package/src/sap/fe/core/converters/annotations/DataField-dbg.js +396 -0
- package/src/sap/fe/core/converters/annotations/DataField.js +3 -394
- package/src/sap/fe/core/converters/annotations/DataField.js.map +1 -0
- package/src/sap/fe/core/converters/annotations/DataField.ts +5 -5
- package/src/sap/fe/core/converters/common/AnnotationConverter-dbg.js +1948 -0
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +3 -1868
- package/src/sap/fe/core/converters/common/AnnotationConverter.js.map +1 -0
- package/src/sap/fe/core/converters/controls/Common/Action-dbg.js +424 -0
- package/src/sap/fe/core/converters/controls/Common/Action.js +3 -446
- package/src/sap/fe/core/converters/controls/Common/Action.js.map +1 -0
- package/src/sap/fe/core/converters/controls/Common/Action.ts +31 -14
- package/src/sap/fe/core/converters/controls/Common/Chart-dbg.js +276 -0
- package/src/sap/fe/core/converters/controls/Common/Chart.js +3 -260
- package/src/sap/fe/core/converters/controls/Common/Chart.js.map +1 -0
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +52 -7
- package/src/sap/fe/core/converters/controls/Common/Criticality-dbg.js +42 -0
- package/src/sap/fe/core/converters/controls/Common/Criticality.js +3 -39
- package/src/sap/fe/core/converters/controls/Common/Criticality.js.map +1 -0
- package/src/sap/fe/core/converters/controls/Common/DataVisualization-dbg.js +247 -0
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +3 -242
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js.map +1 -0
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +1 -1
- package/src/sap/fe/core/converters/controls/Common/Form-dbg.js +229 -0
- package/src/sap/fe/core/converters/controls/Common/Form.js +3 -234
- package/src/sap/fe/core/converters/controls/Common/Form.js.map +1 -0
- package/src/sap/fe/core/converters/controls/Common/KPI-dbg.js +374 -0
- package/src/sap/fe/core/converters/controls/Common/KPI.js +3 -371
- package/src/sap/fe/core/converters/controls/Common/KPI.js.map +1 -0
- package/src/sap/fe/core/converters/controls/Common/Table-dbg.js +2596 -0
- package/src/sap/fe/core/converters/controls/Common/Table.js +3 -2527
- package/src/sap/fe/core/converters/controls/Common/Table.js.map +1 -0
- package/src/sap/fe/core/converters/controls/Common/Table.ts +214 -77
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions-dbg.js +522 -0
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +3 -527
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js.map +1 -0
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +51 -50
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar-dbg.js +786 -0
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +3 -845
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js.map +1 -0
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +0 -64
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters-dbg.js +291 -0
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +3 -316
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js.map +1 -0
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +30 -12
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar-dbg.js +56 -0
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +3 -53
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js.map +1 -0
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet-dbg.js +438 -0
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +3 -431
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js.map +1 -0
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection-dbg.js +597 -0
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +3 -630
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js.map +1 -0
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +1 -1
- package/src/sap/fe/core/converters/helpers/Aggregation-dbg.js +204 -0
- package/src/sap/fe/core/converters/helpers/Aggregation.js +3 -204
- package/src/sap/fe/core/converters/helpers/Aggregation.js.map +1 -0
- package/src/sap/fe/core/converters/helpers/BindingHelper-dbg.js +100 -0
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +3 -99
- package/src/sap/fe/core/converters/helpers/BindingHelper.js.map +1 -0
- package/src/sap/fe/core/converters/helpers/ConfigurableObject-dbg.js +199 -0
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +3 -199
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js.map +1 -0
- package/src/sap/fe/core/converters/helpers/DataFieldHelper-dbg.js +143 -0
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +3 -140
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.js.map +1 -0
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +2 -1
- package/src/sap/fe/core/converters/helpers/ID-dbg.js +92 -0
- package/src/sap/fe/core/converters/helpers/ID.js +3 -89
- package/src/sap/fe/core/converters/helpers/ID.js.map +1 -0
- package/src/sap/fe/core/converters/helpers/IssueManager-dbg.js +62 -0
- package/src/sap/fe/core/converters/helpers/IssueManager.js +3 -59
- package/src/sap/fe/core/converters/helpers/IssueManager.js.map +1 -0
- package/src/sap/fe/core/converters/helpers/Key-dbg.js +62 -0
- package/src/sap/fe/core/converters/helpers/Key.js +3 -59
- package/src/sap/fe/core/converters/helpers/Key.js.map +1 -0
- package/src/sap/fe/core/converters/helpers/Key.ts +1 -1
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper-dbg.js +80 -0
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +3 -77
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js.map +1 -0
- package/src/sap/fe/core/converters/objectPage/FormMenuActions-dbg.js +142 -0
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +3 -139
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.js.map +1 -0
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction-dbg.js +406 -0
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +3 -422
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js.map +1 -0
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +132 -111
- package/src/sap/fe/core/converters/templates/ListReportConverter-dbg.js +557 -0
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +3 -589
- package/src/sap/fe/core/converters/templates/ListReportConverter.js.map +1 -0
- package/src/sap/fe/core/converters/templates/ObjectPageConverter-dbg.js +474 -0
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +3 -477
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js.map +1 -0
- package/src/sap/fe/core/designtime/AppComponent-dbg.designtime.js +103 -0
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +3 -100
- package/src/sap/fe/core/designtime/AppComponent.designtime.js.map +1 -0
- package/src/sap/fe/core/designtime/library-preload.designtime.js +7 -0
- package/src/sap/fe/core/designtime/library-preload.designtime.js.map +1 -0
- package/src/sap/fe/core/formatters/CollaborationFormatter-dbg.js +95 -0
- package/src/sap/fe/core/formatters/CollaborationFormatter.js +3 -92
- package/src/sap/fe/core/formatters/CollaborationFormatter.js.map +1 -0
- package/src/sap/fe/core/formatters/FPMFormatter-dbg.js +46 -0
- package/src/sap/fe/core/formatters/FPMFormatter.js +3 -44
- package/src/sap/fe/core/formatters/FPMFormatter.js.map +1 -0
- package/src/sap/fe/core/formatters/FPMFormatter.ts +3 -2
- package/src/sap/fe/core/formatters/FiscalFormat-dbg.js +343 -0
- package/src/sap/fe/core/formatters/FiscalFormat.js +6 -0
- package/src/sap/fe/core/formatters/FiscalFormat.js.map +1 -0
- package/src/sap/fe/core/formatters/FiscalFormat.ts +319 -0
- package/src/sap/fe/core/formatters/KPIFormatter-dbg.js +86 -0
- package/src/sap/fe/core/formatters/KPIFormatter.js +3 -83
- package/src/sap/fe/core/formatters/KPIFormatter.js.map +1 -0
- package/src/sap/fe/core/formatters/StandardFormatter-dbg.js +80 -0
- package/src/sap/fe/core/formatters/StandardFormatter.js +3 -78
- package/src/sap/fe/core/formatters/StandardFormatter.js.map +1 -0
- package/src/sap/fe/core/formatters/TableFormatter-dbg.js +276 -0
- package/src/sap/fe/core/formatters/TableFormatter.js +3 -275
- package/src/sap/fe/core/formatters/TableFormatter.js.map +1 -0
- package/src/sap/fe/core/formatters/TableFormatter.ts +1 -1
- package/src/sap/fe/core/formatters/TableFormatterTypes-dbg.js +20 -0
- package/src/sap/fe/core/formatters/TableFormatterTypes.js +3 -17
- package/src/sap/fe/core/formatters/TableFormatterTypes.js.map +1 -0
- package/src/sap/fe/core/formatters/ValueFormatter-dbg.js +172 -0
- package/src/sap/fe/core/formatters/ValueFormatter.js +3 -161
- package/src/sap/fe/core/formatters/ValueFormatter.js.map +1 -0
- package/src/sap/fe/core/formatters/ValueFormatter.ts +25 -8
- package/src/sap/fe/core/fpm/Component-dbg.js +94 -0
- package/src/sap/fe/core/fpm/Component.js +3 -91
- package/src/sap/fe/core/fpm/Component.js.map +1 -0
- package/src/sap/fe/core/fpm/manifest.json +1 -1
- package/src/sap/fe/core/helpers/AnnotationEnum-dbg.js +30 -0
- package/src/sap/fe/core/helpers/AnnotationEnum.js +3 -36
- package/src/sap/fe/core/helpers/AnnotationEnum.js.map +1 -0
- package/src/sap/fe/core/helpers/AppStartupHelper-dbg.js +334 -0
- package/src/sap/fe/core/helpers/AppStartupHelper.js +3 -335
- package/src/sap/fe/core/helpers/AppStartupHelper.js.map +1 -0
- package/src/sap/fe/core/helpers/BindingToolkit-dbg.js +1739 -0
- package/src/sap/fe/core/helpers/BindingToolkit.js +3 -1611
- package/src/sap/fe/core/helpers/BindingToolkit.js.map +1 -0
- package/src/sap/fe/core/helpers/BindingToolkit.ts +277 -97
- package/src/sap/fe/core/helpers/ClassSupport-dbg.js +421 -0
- package/src/sap/fe/core/helpers/ClassSupport.js +3 -420
- package/src/sap/fe/core/helpers/ClassSupport.js.map +1 -0
- package/src/sap/fe/core/helpers/ClassSupport.ts +13 -15
- package/src/sap/fe/core/helpers/DeleteHelper-dbg.js +526 -0
- package/src/sap/fe/core/helpers/DeleteHelper.js +3 -618
- package/src/sap/fe/core/helpers/DeleteHelper.js.map +1 -0
- package/src/sap/fe/core/helpers/DeleteHelper.ts +116 -134
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper-dbg.js +55 -0
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +3 -52
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js.map +1 -0
- package/src/sap/fe/core/helpers/EditState-dbg.js +80 -0
- package/src/sap/fe/core/helpers/EditState.js +3 -77
- package/src/sap/fe/core/helpers/EditState.js.map +1 -0
- package/src/sap/fe/core/helpers/ExcelFormatHelper-dbg.js +55 -0
- package/src/sap/fe/core/helpers/ExcelFormatHelper.js +3 -52
- package/src/sap/fe/core/helpers/ExcelFormatHelper.js.map +1 -0
- package/src/sap/fe/core/helpers/FPMHelper-dbg.js +55 -0
- package/src/sap/fe/core/helpers/FPMHelper.js +3 -52
- package/src/sap/fe/core/helpers/FPMHelper.js.map +1 -0
- package/src/sap/fe/core/helpers/KeepAliveHelper-dbg.js +180 -0
- package/src/sap/fe/core/helpers/KeepAliveHelper.js +3 -177
- package/src/sap/fe/core/helpers/KeepAliveHelper.js.map +1 -0
- package/src/sap/fe/core/helpers/KeepAliveRefreshTypes-dbg.js +28 -0
- package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +3 -25
- package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js.map +1 -0
- package/src/sap/fe/core/helpers/LoaderUtils-dbg.js +29 -0
- package/src/sap/fe/core/helpers/LoaderUtils.js +3 -30
- package/src/sap/fe/core/helpers/LoaderUtils.js.map +1 -0
- package/src/sap/fe/core/helpers/MassEditHelper-dbg.js +1229 -0
- package/src/sap/fe/core/helpers/MassEditHelper.js +3 -1309
- package/src/sap/fe/core/helpers/MassEditHelper.js.map +1 -0
- package/src/sap/fe/core/helpers/MassEditHelper.ts +6 -6
- package/src/sap/fe/core/helpers/MessageStrip-dbg.js +65 -0
- package/src/sap/fe/core/helpers/MessageStrip.js +3 -62
- package/src/sap/fe/core/helpers/MessageStrip.js.map +1 -0
- package/src/sap/fe/core/helpers/ModelHelper-dbg.js +489 -0
- package/src/sap/fe/core/helpers/ModelHelper.js +3 -503
- package/src/sap/fe/core/helpers/ModelHelper.js.map +1 -0
- package/src/sap/fe/core/helpers/ModelHelper.ts +13 -36
- package/src/sap/fe/core/helpers/PasteHelper-dbg.js +174 -0
- package/src/sap/fe/core/helpers/PasteHelper.js +3 -185
- package/src/sap/fe/core/helpers/PasteHelper.js.map +1 -0
- package/src/sap/fe/core/helpers/SemanticDateOperators-dbg.js +371 -0
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +3 -368
- package/src/sap/fe/core/helpers/SemanticDateOperators.js.map +1 -0
- package/src/sap/fe/core/helpers/SemanticKeyHelper-dbg.js +70 -0
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +3 -67
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js.map +1 -0
- package/src/sap/fe/core/helpers/SideEffectsHelper-dbg.js +141 -0
- package/src/sap/fe/core/helpers/SideEffectsHelper.js +3 -137
- package/src/sap/fe/core/helpers/SideEffectsHelper.js.map +1 -0
- package/src/sap/fe/core/helpers/SideEffectsHelper.ts +3 -2
- package/src/sap/fe/core/helpers/StableIdHelper-dbg.js +204 -0
- package/src/sap/fe/core/helpers/StableIdHelper.js +3 -208
- package/src/sap/fe/core/helpers/StableIdHelper.js.map +1 -0
- package/src/sap/fe/core/helpers/Synchronization-dbg.js +35 -0
- package/src/sap/fe/core/helpers/Synchronization.js +3 -33
- package/src/sap/fe/core/helpers/Synchronization.js.map +1 -0
- package/src/sap/fe/core/helpers/ToES6Promise-dbg.js +29 -0
- package/src/sap/fe/core/helpers/ToES6Promise.js +3 -26
- package/src/sap/fe/core/helpers/ToES6Promise.js.map +1 -0
- package/src/sap/fe/core/helpers/TypeGuards-dbg.js +20 -0
- package/src/sap/fe/core/helpers/TypeGuards.js +3 -19
- package/src/sap/fe/core/helpers/TypeGuards.js.map +1 -0
- package/src/sap/fe/core/helpers/TypeGuards.ts +5 -1
- package/src/sap/fe/core/jsx-runtime/Fragment-dbg.js +14 -0
- package/src/sap/fe/core/jsx-runtime/Fragment.js +3 -11
- package/src/sap/fe/core/jsx-runtime/Fragment.js.map +1 -0
- package/src/sap/fe/core/jsx-runtime/ViewLoader-dbg.js +76 -0
- package/src/sap/fe/core/jsx-runtime/ViewLoader.js +3 -86
- package/src/sap/fe/core/jsx-runtime/ViewLoader.js.map +1 -0
- package/src/sap/fe/core/jsx-runtime/jsx-control-dbg.js +124 -0
- package/src/sap/fe/core/jsx-runtime/jsx-control.js +3 -98
- package/src/sap/fe/core/jsx-runtime/jsx-control.js.map +1 -0
- package/src/sap/fe/core/jsx-runtime/jsx-control.ts +43 -17
- package/src/sap/fe/core/jsx-runtime/jsx-dbg.js +41 -0
- package/src/sap/fe/core/jsx-runtime/jsx-xml-dbg.js +94 -0
- package/src/sap/fe/core/jsx-runtime/jsx-xml.js +3 -90
- package/src/sap/fe/core/jsx-runtime/jsx-xml.js.map +1 -0
- package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +1 -1
- package/src/sap/fe/core/jsx-runtime/jsx.js +3 -28
- package/src/sap/fe/core/jsx-runtime/jsx.js.map +1 -0
- package/src/sap/fe/core/jsx-runtime/jsx.ts +19 -1
- package/src/sap/fe/core/jsx-runtime/jsxs-dbg.js +10 -0
- package/src/sap/fe/core/jsx-runtime/jsxs.js +3 -7
- package/src/sap/fe/core/jsx-runtime/jsxs.js.map +1 -0
- package/src/sap/fe/core/jsx-runtime/useMDXComponents-dbg.js +154 -0
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.js +3 -153
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.js.map +1 -0
- package/src/sap/fe/core/library-dbg.js +437 -0
- package/src/sap/fe/core/library-preload.js +900 -0
- package/src/sap/fe/core/library-preload.js.map +1 -0
- package/src/sap/fe/core/library-preload.support.js +177 -0
- package/src/sap/fe/core/library-preload.support.js.map +1 -0
- package/src/sap/fe/core/library.js +3 -461
- package/src/sap/fe/core/library.js.map +1 -0
- package/src/sap/fe/core/library.support.js +1 -1
- package/src/sap/fe/core/library.ts +12 -25
- package/src/sap/fe/core/manifest.json +100 -0
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration-dbg.js +99 -0
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +3 -96
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js.map +1 -0
- package/src/sap/fe/core/messagebundle.properties +6 -0
- package/src/sap/fe/core/messagebundle_ar.properties +22 -0
- package/src/sap/fe/core/messagebundle_bg.properties +22 -0
- package/src/sap/fe/core/messagebundle_ca.properties +22 -0
- package/src/sap/fe/core/messagebundle_cs.properties +22 -0
- package/src/sap/fe/core/messagebundle_cy.properties +22 -0
- package/src/sap/fe/core/messagebundle_da.properties +22 -0
- package/src/sap/fe/core/messagebundle_de.properties +22 -0
- package/src/sap/fe/core/messagebundle_el.properties +22 -0
- package/src/sap/fe/core/messagebundle_en.properties +22 -0
- package/src/sap/fe/core/messagebundle_en_GB.properties +22 -0
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +22 -0
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +4 -0
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +4 -0
- package/src/sap/fe/core/messagebundle_es.properties +22 -0
- package/src/sap/fe/core/messagebundle_es_MX.properties +22 -0
- package/src/sap/fe/core/messagebundle_et.properties +22 -0
- package/src/sap/fe/core/messagebundle_fi.properties +22 -0
- package/src/sap/fe/core/messagebundle_fr.properties +22 -0
- package/src/sap/fe/core/messagebundle_fr_CA.properties +22 -0
- package/src/sap/fe/core/messagebundle_hi.properties +22 -0
- package/src/sap/fe/core/messagebundle_hr.properties +23 -1
- package/src/sap/fe/core/messagebundle_hu.properties +22 -0
- package/src/sap/fe/core/messagebundle_id.properties +22 -0
- package/src/sap/fe/core/messagebundle_it.properties +22 -0
- package/src/sap/fe/core/messagebundle_iw.properties +22 -0
- package/src/sap/fe/core/messagebundle_ja.properties +22 -0
- package/src/sap/fe/core/messagebundle_kk.properties +22 -0
- package/src/sap/fe/core/messagebundle_ko.properties +22 -0
- package/src/sap/fe/core/messagebundle_lt.properties +22 -0
- package/src/sap/fe/core/messagebundle_lv.properties +22 -0
- package/src/sap/fe/core/messagebundle_ms.properties +22 -0
- package/src/sap/fe/core/messagebundle_nl.properties +22 -0
- package/src/sap/fe/core/messagebundle_no.properties +22 -0
- package/src/sap/fe/core/messagebundle_pl.properties +22 -0
- package/src/sap/fe/core/messagebundle_pt.properties +22 -0
- package/src/sap/fe/core/messagebundle_pt_PT.properties +22 -0
- package/src/sap/fe/core/messagebundle_ro.properties +22 -0
- package/src/sap/fe/core/messagebundle_ru.properties +22 -0
- package/src/sap/fe/core/messagebundle_sh.properties +22 -0
- package/src/sap/fe/core/messagebundle_sk.properties +22 -0
- package/src/sap/fe/core/messagebundle_sl.properties +22 -0
- package/src/sap/fe/core/messagebundle_sv.properties +22 -0
- package/src/sap/fe/core/messagebundle_th.properties +22 -0
- package/src/sap/fe/core/messagebundle_tr.properties +22 -0
- package/src/sap/fe/core/messagebundle_uk.properties +22 -0
- package/src/sap/fe/core/messagebundle_vi.properties +22 -0
- package/src/sap/fe/core/messagebundle_zh_CN.properties +22 -0
- package/src/sap/fe/core/messagebundle_zh_TW.properties +22 -0
- package/src/sap/fe/core/operationsHelper-dbg.js +155 -0
- package/src/sap/fe/core/operationsHelper.js +3 -205
- package/src/sap/fe/core/operationsHelper.js.map +1 -0
- package/src/sap/fe/core/operationsHelper.ts +14 -68
- package/src/sap/fe/core/rootView/Fcl-dbg.controller.js +837 -0
- package/src/sap/fe/core/rootView/Fcl.controller.js +3 -855
- package/src/sap/fe/core/rootView/Fcl.controller.js.map +1 -0
- package/src/sap/fe/core/rootView/NavContainer-dbg.controller.js +190 -0
- package/src/sap/fe/core/rootView/NavContainer.controller.js +3 -190
- package/src/sap/fe/core/rootView/NavContainer.controller.js.map +1 -0
- package/src/sap/fe/core/rootView/RootViewBaseController-dbg.js +506 -0
- package/src/sap/fe/core/rootView/RootViewBaseController.js +3 -538
- package/src/sap/fe/core/rootView/RootViewBaseController.js.map +1 -0
- package/src/sap/fe/core/rootView/RootViewBaseController.ts +3 -4
- package/src/sap/fe/core/services/AsyncComponentServiceFactory-dbg.js +60 -0
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +3 -60
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js.map +1 -0
- package/src/sap/fe/core/services/CacheHandlerServiceFactory-dbg.js +196 -0
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +3 -219
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js.map +1 -0
- package/src/sap/fe/core/services/EnvironmentServiceFactory-dbg.js +80 -0
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +3 -82
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js.map +1 -0
- package/src/sap/fe/core/services/NavigationServiceFactory-dbg.js +320 -0
- package/src/sap/fe/core/services/NavigationServiceFactory.js +3 -320
- package/src/sap/fe/core/services/NavigationServiceFactory.js.map +1 -0
- package/src/sap/fe/core/services/ResourceModelServiceFactory-dbg.js +91 -0
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +3 -89
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js.map +1 -0
- package/src/sap/fe/core/services/RoutingServiceFactory-dbg.js +817 -0
- package/src/sap/fe/core/services/RoutingServiceFactory.js +3 -847
- package/src/sap/fe/core/services/RoutingServiceFactory.js.map +1 -0
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +6 -3
- package/src/sap/fe/core/services/ShellServicesFactory-dbg.js +732 -0
- package/src/sap/fe/core/services/ShellServicesFactory.js +3 -752
- package/src/sap/fe/core/services/ShellServicesFactory.js.map +1 -0
- package/src/sap/fe/core/services/SideEffectsServiceFactory-dbg.js +569 -0
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +3 -599
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js.map +1 -0
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +3 -3
- package/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +355 -0
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +3 -387
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js.map +1 -0
- package/src/sap/fe/core/services/view/TemplatingErrorPage-dbg.controller.js +37 -0
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +3 -34
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js.map +1 -0
- package/src/sap/fe/core/support/AnnotationIssue.support.js +4 -4
- package/src/sap/fe/core/support/CollectionFacetMissingID.support.js +3 -3
- package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +3 -3
- package/src/sap/fe/core/support/CommonHelper-dbg.js +63 -0
- package/src/sap/fe/core/support/CommonHelper.js +3 -60
- package/src/sap/fe/core/support/CommonHelper.js.map +1 -0
- package/src/sap/fe/core/support/Diagnostics-dbg.js +44 -0
- package/src/sap/fe/core/support/Diagnostics.js +3 -49
- package/src/sap/fe/core/support/Diagnostics.js.map +1 -0
- package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +3 -3
- package/src/sap/fe/core/templating/CommonFormatters-dbg.js +70 -0
- package/src/sap/fe/core/templating/CommonFormatters.js +3 -66
- package/src/sap/fe/core/templating/CommonFormatters.js.map +1 -0
- package/src/sap/fe/core/templating/CommonFormatters.ts +9 -3
- package/src/sap/fe/core/templating/CriticalityFormatters-dbg.js +136 -0
- package/src/sap/fe/core/templating/CriticalityFormatters.js +3 -133
- package/src/sap/fe/core/templating/CriticalityFormatters.js.map +1 -0
- package/src/sap/fe/core/templating/DataFieldFormatters-dbg.js +58 -0
- package/src/sap/fe/core/templating/DataFieldFormatters.js +3 -55
- package/src/sap/fe/core/templating/DataFieldFormatters.js.map +1 -0
- package/src/sap/fe/core/templating/DataModelPathHelper-dbg.js +363 -0
- package/src/sap/fe/core/templating/DataModelPathHelper.js +3 -372
- package/src/sap/fe/core/templating/DataModelPathHelper.js.map +1 -0
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +17 -8
- package/src/sap/fe/core/templating/DisplayModeFormatter-dbg.js +56 -0
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +3 -124
- package/src/sap/fe/core/templating/DisplayModeFormatter.js.map +1 -0
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +0 -47
- package/src/sap/fe/core/templating/EntitySetHelper-dbg.js +68 -0
- package/src/sap/fe/core/templating/EntitySetHelper.js +3 -81
- package/src/sap/fe/core/templating/EntitySetHelper.js.map +1 -0
- package/src/sap/fe/core/templating/FieldControlHelper-dbg.js +77 -0
- package/src/sap/fe/core/templating/FieldControlHelper.js +3 -74
- package/src/sap/fe/core/templating/FieldControlHelper.js.map +1 -0
- package/src/sap/fe/core/templating/FilterHelper-dbg.js +346 -0
- package/src/sap/fe/core/templating/FilterHelper.js +3 -339
- package/src/sap/fe/core/templating/FilterHelper.js.map +1 -0
- package/src/sap/fe/core/templating/FilterHelper.ts +2 -21
- package/src/sap/fe/core/templating/FilterTemplating-dbg.js +62 -0
- package/src/sap/fe/core/templating/FilterTemplating.js +3 -59
- package/src/sap/fe/core/templating/FilterTemplating.js.map +1 -0
- package/src/sap/fe/core/templating/PropertyFormatters-dbg.js +93 -0
- package/src/sap/fe/core/templating/PropertyFormatters.js +3 -90
- package/src/sap/fe/core/templating/PropertyFormatters.js.map +1 -0
- package/src/sap/fe/core/templating/PropertyHelper-dbg.js +340 -0
- package/src/sap/fe/core/templating/PropertyHelper.js +3 -337
- package/src/sap/fe/core/templating/PropertyHelper.js.map +1 -0
- package/src/sap/fe/core/templating/SemanticObjectHelper-dbg.js +91 -0
- package/src/sap/fe/core/templating/SemanticObjectHelper.js +3 -43
- package/src/sap/fe/core/templating/SemanticObjectHelper.js.map +1 -0
- package/src/sap/fe/core/templating/SemanticObjectHelper.ts +45 -1
- package/src/sap/fe/core/templating/UIFormatters-dbg.js +498 -0
- package/src/sap/fe/core/templating/UIFormatters.js +3 -544
- package/src/sap/fe/core/templating/UIFormatters.js.map +1 -0
- package/src/sap/fe/core/templating/UIFormatters.ts +60 -110
- package/src/sap/fe/core/type/DateTimeWithTimezone-dbg.js +35 -0
- package/src/sap/fe/core/type/DateTimeWithTimezone.js +3 -33
- package/src/sap/fe/core/type/DateTimeWithTimezone.js.map +1 -0
- package/src/sap/fe/core/type/EDM-dbg.js +84 -0
- package/src/sap/fe/core/type/EDM.js +6 -0
- package/src/sap/fe/core/type/EDM.js.map +1 -0
- package/src/sap/fe/core/type/EDM.ts +70 -0
- package/src/sap/fe/core/type/Email-dbg.js +29 -0
- package/src/sap/fe/core/type/Email.js +3 -26
- package/src/sap/fe/core/type/Email.js.map +1 -0
- package/src/sap/fe/core/type/FiscalDate-dbg.js +174 -0
- package/src/sap/fe/core/type/FiscalDate.js +6 -0
- package/src/sap/fe/core/type/FiscalDate.js.map +1 -0
- package/src/sap/fe/core/type/FiscalDate.ts +179 -0
- package/src/sap/fe/core/type/TypeUtil-dbg.js +58 -0
- package/src/sap/fe/core/type/TypeUtil.js +3 -55
- package/src/sap/fe/core/type/TypeUtil.js.map +1 -0
- package/src/sap/fe/core/type/TypeUtil.ts +1 -0
- package/src/.eslintrc +0 -7
|
@@ -0,0 +1,597 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
|
+
* (c) Copyright 2009-2023 SAP SE. All rights reserved
|
|
4
|
+
*/
|
|
5
|
+
sap.ui.define(["sap/base/Log", "sap/fe/core/converters/controls/Common/Action", "sap/fe/core/converters/controls/ObjectPage/HeaderFacet", "sap/fe/core/converters/helpers/IssueManager", "sap/fe/core/converters/helpers/Key", "sap/fe/core/helpers/BindingToolkit", "../../helpers/ConfigurableObject", "../../helpers/ID", "../../ManifestSettings", "../../objectPage/FormMenuActions", "../Common/DataVisualization", "../Common/Form"], function (Log, Action, HeaderFacet, IssueManager, Key, BindingToolkit, ConfigurableObject, ID, ManifestSettings, FormMenuActions, DataVisualization, Form) {
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
var _exports = {};
|
|
9
|
+
var isReferenceFacet = Form.isReferenceFacet;
|
|
10
|
+
var createFormDefinition = Form.createFormDefinition;
|
|
11
|
+
var getDataVisualizationConfiguration = DataVisualization.getDataVisualizationConfiguration;
|
|
12
|
+
var getVisibilityEnablementFormMenuActions = FormMenuActions.getVisibilityEnablementFormMenuActions;
|
|
13
|
+
var getFormHiddenActions = FormMenuActions.getFormHiddenActions;
|
|
14
|
+
var getFormActions = FormMenuActions.getFormActions;
|
|
15
|
+
var ActionType = ManifestSettings.ActionType;
|
|
16
|
+
var getSubSectionID = ID.getSubSectionID;
|
|
17
|
+
var getSideContentID = ID.getSideContentID;
|
|
18
|
+
var getFormID = ID.getFormID;
|
|
19
|
+
var getCustomSubSectionID = ID.getCustomSubSectionID;
|
|
20
|
+
var Placement = ConfigurableObject.Placement;
|
|
21
|
+
var OverrideType = ConfigurableObject.OverrideType;
|
|
22
|
+
var insertCustomElements = ConfigurableObject.insertCustomElements;
|
|
23
|
+
var resolveBindingString = BindingToolkit.resolveBindingString;
|
|
24
|
+
var ref = BindingToolkit.ref;
|
|
25
|
+
var pathInModel = BindingToolkit.pathInModel;
|
|
26
|
+
var or = BindingToolkit.or;
|
|
27
|
+
var notEqual = BindingToolkit.notEqual;
|
|
28
|
+
var not = BindingToolkit.not;
|
|
29
|
+
var ifElse = BindingToolkit.ifElse;
|
|
30
|
+
var getExpressionFromAnnotation = BindingToolkit.getExpressionFromAnnotation;
|
|
31
|
+
var fn = BindingToolkit.fn;
|
|
32
|
+
var equal = BindingToolkit.equal;
|
|
33
|
+
var compileExpression = BindingToolkit.compileExpression;
|
|
34
|
+
var KeyHelper = Key.KeyHelper;
|
|
35
|
+
var IssueType = IssueManager.IssueType;
|
|
36
|
+
var IssueSeverity = IssueManager.IssueSeverity;
|
|
37
|
+
var IssueCategory = IssueManager.IssueCategory;
|
|
38
|
+
var getStashedSettingsForHeaderFacet = HeaderFacet.getStashedSettingsForHeaderFacet;
|
|
39
|
+
var getHeaderFacetsFromManifest = HeaderFacet.getHeaderFacetsFromManifest;
|
|
40
|
+
var getDesignTimeMetadataSettingsForHeaderFacet = HeaderFacet.getDesignTimeMetadataSettingsForHeaderFacet;
|
|
41
|
+
var removeDuplicateActions = Action.removeDuplicateActions;
|
|
42
|
+
var isActionNavigable = Action.isActionNavigable;
|
|
43
|
+
var getSemanticObjectMapping = Action.getSemanticObjectMapping;
|
|
44
|
+
var getEnabledForAnnotationAction = Action.getEnabledForAnnotationAction;
|
|
45
|
+
var getActionsFromManifest = Action.getActionsFromManifest;
|
|
46
|
+
var ButtonType = Action.ButtonType;
|
|
47
|
+
let SubSectionType;
|
|
48
|
+
(function (SubSectionType) {
|
|
49
|
+
SubSectionType["Unknown"] = "Unknown";
|
|
50
|
+
SubSectionType["Form"] = "Form";
|
|
51
|
+
SubSectionType["DataVisualization"] = "DataVisualization";
|
|
52
|
+
SubSectionType["XMLFragment"] = "XMLFragment";
|
|
53
|
+
SubSectionType["Placeholder"] = "Placeholder";
|
|
54
|
+
SubSectionType["Mixed"] = "Mixed";
|
|
55
|
+
})(SubSectionType || (SubSectionType = {}));
|
|
56
|
+
_exports.SubSectionType = SubSectionType;
|
|
57
|
+
const visualizationTerms = ["com.sap.vocabularies.UI.v1.LineItem", "com.sap.vocabularies.UI.v1.Chart", "com.sap.vocabularies.UI.v1.PresentationVariant", "com.sap.vocabularies.UI.v1.SelectionPresentationVariant"];
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Create subsections based on facet definition.
|
|
61
|
+
*
|
|
62
|
+
* @param facetCollection Collection of facets
|
|
63
|
+
* @param converterContext The converter context
|
|
64
|
+
* @param isHeaderSection True if header section is generated in this iteration
|
|
65
|
+
* @returns The current subsections
|
|
66
|
+
*/
|
|
67
|
+
function createSubSections(facetCollection, converterContext, isHeaderSection) {
|
|
68
|
+
// First we determine which sub section we need to create
|
|
69
|
+
const facetsToCreate = facetCollection.reduce((facetsToCreate, facetDefinition) => {
|
|
70
|
+
switch (facetDefinition.$Type) {
|
|
71
|
+
case "com.sap.vocabularies.UI.v1.ReferenceFacet":
|
|
72
|
+
facetsToCreate.push(facetDefinition);
|
|
73
|
+
break;
|
|
74
|
+
case "com.sap.vocabularies.UI.v1.CollectionFacet":
|
|
75
|
+
// TODO If the Collection Facet has a child of type Collection Facet we bring them up one level (Form + Table use case) ?
|
|
76
|
+
// first case facet Collection is combination of collection and reference facet or not all facets are reference facets.
|
|
77
|
+
if (facetDefinition.Facets.find(facetType => facetType.$Type === "com.sap.vocabularies.UI.v1.CollectionFacet")) {
|
|
78
|
+
facetsToCreate.splice(facetsToCreate.length, 0, ...facetDefinition.Facets);
|
|
79
|
+
} else {
|
|
80
|
+
facetsToCreate.push(facetDefinition);
|
|
81
|
+
}
|
|
82
|
+
break;
|
|
83
|
+
case "com.sap.vocabularies.UI.v1.ReferenceURLFacet":
|
|
84
|
+
// Not supported
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
return facetsToCreate;
|
|
88
|
+
}, []);
|
|
89
|
+
|
|
90
|
+
// Then we create the actual subsections
|
|
91
|
+
return facetsToCreate.map(facet => {
|
|
92
|
+
var _Facets;
|
|
93
|
+
return createSubSection(facet, facetsToCreate, converterContext, 0, !(facet !== null && facet !== void 0 && (_Facets = facet.Facets) !== null && _Facets !== void 0 && _Facets.length), isHeaderSection);
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Creates subsections based on the definition of the custom header facet.
|
|
99
|
+
*
|
|
100
|
+
* @param converterContext The converter context
|
|
101
|
+
* @returns The current subsections
|
|
102
|
+
*/
|
|
103
|
+
_exports.createSubSections = createSubSections;
|
|
104
|
+
function createCustomHeaderFacetSubSections(converterContext) {
|
|
105
|
+
const customHeaderFacets = getHeaderFacetsFromManifest(converterContext.getManifestWrapper().getHeaderFacets());
|
|
106
|
+
const aCustomHeaderFacets = [];
|
|
107
|
+
Object.keys(customHeaderFacets).forEach(function (key) {
|
|
108
|
+
aCustomHeaderFacets.push(customHeaderFacets[key]);
|
|
109
|
+
return aCustomHeaderFacets;
|
|
110
|
+
});
|
|
111
|
+
const facetsToCreate = aCustomHeaderFacets.reduce((facetsToCreate, customHeaderFacet) => {
|
|
112
|
+
if (customHeaderFacet.templateEdit) {
|
|
113
|
+
facetsToCreate.push(customHeaderFacet);
|
|
114
|
+
}
|
|
115
|
+
return facetsToCreate;
|
|
116
|
+
}, []);
|
|
117
|
+
return facetsToCreate.map(customHeaderFacet => createCustomHeaderFacetSubSection(customHeaderFacet));
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Creates a subsection based on a custom header facet.
|
|
122
|
+
*
|
|
123
|
+
* @param customHeaderFacet A custom header facet
|
|
124
|
+
* @returns A definition for a subsection
|
|
125
|
+
*/
|
|
126
|
+
_exports.createCustomHeaderFacetSubSections = createCustomHeaderFacetSubSections;
|
|
127
|
+
function createCustomHeaderFacetSubSection(customHeaderFacet) {
|
|
128
|
+
const subSectionID = getCustomSubSectionID(customHeaderFacet.key);
|
|
129
|
+
const subSection = {
|
|
130
|
+
id: subSectionID,
|
|
131
|
+
key: customHeaderFacet.key,
|
|
132
|
+
title: customHeaderFacet.title,
|
|
133
|
+
type: SubSectionType.XMLFragment,
|
|
134
|
+
template: customHeaderFacet.templateEdit || "",
|
|
135
|
+
visible: customHeaderFacet.visible,
|
|
136
|
+
level: 1,
|
|
137
|
+
sideContent: undefined,
|
|
138
|
+
stashed: customHeaderFacet.stashed,
|
|
139
|
+
flexSettings: customHeaderFacet.flexSettings,
|
|
140
|
+
actions: {}
|
|
141
|
+
};
|
|
142
|
+
return subSection;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// function isTargetForCompliant(annotationPath: AnnotationPath) {
|
|
146
|
+
// return /.*com\.sap\.vocabularies\.UI\.v1\.(FieldGroup|Identification|DataPoint|StatusInfo).*/.test(annotationPath.value);
|
|
147
|
+
// }
|
|
148
|
+
const getSubSectionKey = (facetDefinition, fallback) => {
|
|
149
|
+
var _facetDefinition$ID, _facetDefinition$Labe;
|
|
150
|
+
return ((_facetDefinition$ID = facetDefinition.ID) === null || _facetDefinition$ID === void 0 ? void 0 : _facetDefinition$ID.toString()) || ((_facetDefinition$Labe = facetDefinition.Label) === null || _facetDefinition$Labe === void 0 ? void 0 : _facetDefinition$Labe.toString()) || fallback;
|
|
151
|
+
};
|
|
152
|
+
/**
|
|
153
|
+
* Adds Form menu action to all form actions, removes duplicate actions and hidden actions.
|
|
154
|
+
*
|
|
155
|
+
* @param actions The actions involved
|
|
156
|
+
* @param facetDefinition The definition for the facet
|
|
157
|
+
* @param converterContext The converter context
|
|
158
|
+
* @returns The form menu actions
|
|
159
|
+
*/
|
|
160
|
+
function addFormMenuActions(actions, facetDefinition, converterContext) {
|
|
161
|
+
const hiddenActions = getFormHiddenActions(facetDefinition, converterContext) || [],
|
|
162
|
+
formActions = getFormActions(facetDefinition, converterContext),
|
|
163
|
+
manifestActions = getActionsFromManifest(formActions, converterContext, actions, undefined, undefined, hiddenActions),
|
|
164
|
+
actionOverwriteConfig = {
|
|
165
|
+
enabled: OverrideType.overwrite,
|
|
166
|
+
visible: OverrideType.overwrite,
|
|
167
|
+
command: OverrideType.overwrite
|
|
168
|
+
},
|
|
169
|
+
formAllActions = insertCustomElements(actions, manifestActions.actions, actionOverwriteConfig);
|
|
170
|
+
return {
|
|
171
|
+
actions: formAllActions ? getVisibilityEnablementFormMenuActions(removeDuplicateActions(formAllActions)) : actions,
|
|
172
|
+
commandActions: manifestActions.commandActions
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Retrieves the action form a facet.
|
|
178
|
+
*
|
|
179
|
+
* @param facetDefinition
|
|
180
|
+
* @param converterContext
|
|
181
|
+
* @returns The current facet actions
|
|
182
|
+
*/
|
|
183
|
+
function getFacetActions(facetDefinition, converterContext) {
|
|
184
|
+
let actions = [];
|
|
185
|
+
switch (facetDefinition.$Type) {
|
|
186
|
+
case "com.sap.vocabularies.UI.v1.CollectionFacet":
|
|
187
|
+
actions = facetDefinition.Facets.filter(subFacetDefinition => isReferenceFacet(subFacetDefinition)).reduce((actionReducer, referenceFacet) => createFormActionReducer(actionReducer, referenceFacet, converterContext), []);
|
|
188
|
+
break;
|
|
189
|
+
case "com.sap.vocabularies.UI.v1.ReferenceFacet":
|
|
190
|
+
actions = createFormActionReducer([], facetDefinition, converterContext);
|
|
191
|
+
break;
|
|
192
|
+
default:
|
|
193
|
+
break;
|
|
194
|
+
}
|
|
195
|
+
return addFormMenuActions(actions, facetDefinition, converterContext);
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Returns the button type based on @UI.Emphasized annotation.
|
|
199
|
+
*
|
|
200
|
+
* @param emphasized Emphasized annotation value.
|
|
201
|
+
* @returns The button type or path based expression.
|
|
202
|
+
*/
|
|
203
|
+
function getButtonType(emphasized) {
|
|
204
|
+
// Emphasized is a boolean so if it's equal to true we show the button as Ghost, otherwise as Transparent
|
|
205
|
+
const buttonTypeCondition = equal(getExpressionFromAnnotation(emphasized), true);
|
|
206
|
+
return compileExpression(ifElse(buttonTypeCondition, ButtonType.Ghost, ButtonType.Transparent));
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Create a subsection based on FacetTypes.
|
|
211
|
+
*
|
|
212
|
+
* @param facetDefinition
|
|
213
|
+
* @param facetsToCreate
|
|
214
|
+
* @param converterContext
|
|
215
|
+
* @param level
|
|
216
|
+
* @param hasSingleContent
|
|
217
|
+
* @param isHeaderSection
|
|
218
|
+
* @returns A subsection definition
|
|
219
|
+
*/
|
|
220
|
+
function createSubSection(facetDefinition, facetsToCreate, converterContext, level, hasSingleContent, isHeaderSection) {
|
|
221
|
+
var _facetDefinition$anno, _facetDefinition$anno2, _presentation$visuali, _presentation$visuali2, _presentation$visuali3;
|
|
222
|
+
const subSectionID = getSubSectionID(facetDefinition);
|
|
223
|
+
const oHiddenAnnotation = (_facetDefinition$anno = facetDefinition.annotations) === null || _facetDefinition$anno === void 0 ? void 0 : (_facetDefinition$anno2 = _facetDefinition$anno.UI) === null || _facetDefinition$anno2 === void 0 ? void 0 : _facetDefinition$anno2.Hidden;
|
|
224
|
+
const isVisible = compileExpression(not(equal(true, getExpressionFromAnnotation(oHiddenAnnotation))));
|
|
225
|
+
const isDynamicExpression = isVisible && typeof isVisible === "string" && isVisible.indexOf("{=") === 0 && (oHiddenAnnotation === null || oHiddenAnnotation === void 0 ? void 0 : oHiddenAnnotation.type) !== "Path";
|
|
226
|
+
const isVisibleDynamicExpression = isVisible && isDynamicExpression ? isVisible.substring(isVisible.indexOf("{=") + 2, isVisible.lastIndexOf("}")) : false;
|
|
227
|
+
const title = compileExpression(getExpressionFromAnnotation(facetDefinition.Label));
|
|
228
|
+
const subSection = {
|
|
229
|
+
id: subSectionID,
|
|
230
|
+
key: getSubSectionKey(facetDefinition, subSectionID),
|
|
231
|
+
title: title,
|
|
232
|
+
type: SubSectionType.Unknown,
|
|
233
|
+
annotationPath: converterContext.getEntitySetBasedAnnotationPath(facetDefinition.fullyQualifiedName),
|
|
234
|
+
visible: isVisible,
|
|
235
|
+
isVisibilityDynamic: isDynamicExpression,
|
|
236
|
+
level: level,
|
|
237
|
+
sideContent: undefined
|
|
238
|
+
};
|
|
239
|
+
if (isHeaderSection) {
|
|
240
|
+
subSection.stashed = getStashedSettingsForHeaderFacet(facetDefinition, facetDefinition, converterContext);
|
|
241
|
+
subSection.flexSettings = {
|
|
242
|
+
designtime: getDesignTimeMetadataSettingsForHeaderFacet(facetDefinition, facetDefinition, converterContext)
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
let unsupportedText = "";
|
|
246
|
+
level++;
|
|
247
|
+
switch (facetDefinition.$Type) {
|
|
248
|
+
case "com.sap.vocabularies.UI.v1.CollectionFacet":
|
|
249
|
+
const facets = facetDefinition.Facets;
|
|
250
|
+
|
|
251
|
+
// Filter for all facets of this subsection that are referring to an annotation describing a visualization (e.g. table or chart)
|
|
252
|
+
const visualizationFacets = facets.map((facet, index) => ({
|
|
253
|
+
index,
|
|
254
|
+
facet
|
|
255
|
+
})) // Remember the index assigned to each facet
|
|
256
|
+
.filter(_ref => {
|
|
257
|
+
var _Target, _Target$$target;
|
|
258
|
+
let {
|
|
259
|
+
facet
|
|
260
|
+
} = _ref;
|
|
261
|
+
return visualizationTerms.includes((_Target = facet.Target) === null || _Target === void 0 ? void 0 : (_Target$$target = _Target.$target) === null || _Target$$target === void 0 ? void 0 : _Target$$target.term);
|
|
262
|
+
});
|
|
263
|
+
|
|
264
|
+
// Filter out all visualization facets; "visualizationFacets" and "nonVisualizationFacets" are disjoint
|
|
265
|
+
const nonVisualizationFacets = facets.filter(facet => !visualizationFacets.find(visualization => visualization.facet === facet));
|
|
266
|
+
if (visualizationFacets.length > 0) {
|
|
267
|
+
// CollectionFacets with visualizations must be handled separately as they cannot be included in forms
|
|
268
|
+
const visualizationContent = [];
|
|
269
|
+
const formContent = [];
|
|
270
|
+
const mixedContent = [];
|
|
271
|
+
|
|
272
|
+
// Create each visualization facet as if it was its own subsection (via recursion), and keep their relative ordering
|
|
273
|
+
for (const {
|
|
274
|
+
facet
|
|
275
|
+
} of visualizationFacets) {
|
|
276
|
+
visualizationContent.push(createSubSection(facet, [], converterContext, level, facets.length === 1, isHeaderSection));
|
|
277
|
+
}
|
|
278
|
+
if (nonVisualizationFacets.length > 0) {
|
|
279
|
+
// This subsection includes visualizations and other content, so it is a "Mixed" subsection
|
|
280
|
+
Log.warning(`Warning: CollectionFacet '${facetDefinition.ID}' includes a combination of either a chart or a table and other content. This can lead to rendering issues. Consider moving the chart or table into a separate CollectionFacet.`);
|
|
281
|
+
facetDefinition.Facets = nonVisualizationFacets;
|
|
282
|
+
// Create a joined form of all facets that are not referring to visualizations
|
|
283
|
+
formContent.push(createSubSection(facetDefinition, [], converterContext, level, hasSingleContent, isHeaderSection));
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
// Merge the visualization content with the form content
|
|
287
|
+
if (visualizationFacets.find(_ref2 => {
|
|
288
|
+
let {
|
|
289
|
+
index
|
|
290
|
+
} = _ref2;
|
|
291
|
+
return index === 0;
|
|
292
|
+
})) {
|
|
293
|
+
// If the first facet is a visualization, display the visualizations first
|
|
294
|
+
mixedContent.push(...visualizationContent);
|
|
295
|
+
mixedContent.push(...formContent);
|
|
296
|
+
} else {
|
|
297
|
+
// Otherwise, display the form first
|
|
298
|
+
mixedContent.push(...formContent);
|
|
299
|
+
mixedContent.push(...visualizationContent);
|
|
300
|
+
}
|
|
301
|
+
const mixedSubSection = {
|
|
302
|
+
...subSection,
|
|
303
|
+
type: SubSectionType.Mixed,
|
|
304
|
+
level: level,
|
|
305
|
+
content: mixedContent
|
|
306
|
+
};
|
|
307
|
+
return mixedSubSection;
|
|
308
|
+
} else {
|
|
309
|
+
// This CollectionFacet only includes content that can be rendered in a merged form
|
|
310
|
+
const facetActions = getFacetActions(facetDefinition, converterContext),
|
|
311
|
+
formCollectionSubSection = {
|
|
312
|
+
...subSection,
|
|
313
|
+
type: SubSectionType.Form,
|
|
314
|
+
formDefinition: createFormDefinition(facetDefinition, isVisible, converterContext, facetActions.actions),
|
|
315
|
+
level: level,
|
|
316
|
+
actions: facetActions.actions.filter(action => action.facetName === undefined),
|
|
317
|
+
commandActions: facetActions.commandActions
|
|
318
|
+
};
|
|
319
|
+
return formCollectionSubSection;
|
|
320
|
+
}
|
|
321
|
+
case "com.sap.vocabularies.UI.v1.ReferenceFacet":
|
|
322
|
+
if (!facetDefinition.Target.$target) {
|
|
323
|
+
unsupportedText = `Unable to find annotationPath ${facetDefinition.Target.value}`;
|
|
324
|
+
} else {
|
|
325
|
+
switch (facetDefinition.Target.$target.term) {
|
|
326
|
+
case "com.sap.vocabularies.UI.v1.LineItem":
|
|
327
|
+
case "com.sap.vocabularies.UI.v1.Chart":
|
|
328
|
+
case "com.sap.vocabularies.UI.v1.PresentationVariant":
|
|
329
|
+
case "com.sap.vocabularies.UI.v1.SelectionPresentationVariant":
|
|
330
|
+
const presentation = getDataVisualizationConfiguration(facetDefinition.Target.value, getCondensedTableLayoutCompliance(facetDefinition, facetsToCreate, converterContext), converterContext, undefined, isHeaderSection);
|
|
331
|
+
const subSectionTitle = subSection.title ? subSection.title : "";
|
|
332
|
+
const controlTitle = ((_presentation$visuali = presentation.visualizations[0]) === null || _presentation$visuali === void 0 ? void 0 : (_presentation$visuali2 = _presentation$visuali.annotation) === null || _presentation$visuali2 === void 0 ? void 0 : _presentation$visuali2.title) || ((_presentation$visuali3 = presentation.visualizations[0]) === null || _presentation$visuali3 === void 0 ? void 0 : _presentation$visuali3.title);
|
|
333
|
+
const showTitle = getTitleVisibility(controlTitle, subSectionTitle, hasSingleContent);
|
|
334
|
+
const titleVisibleExpression = isVisible && title !== "undefined" && (title ? isVisible : false);
|
|
335
|
+
const dataVisualizationSubSection = {
|
|
336
|
+
...subSection,
|
|
337
|
+
type: SubSectionType.DataVisualization,
|
|
338
|
+
level: level,
|
|
339
|
+
presentation: presentation,
|
|
340
|
+
showTitle: showTitle,
|
|
341
|
+
titleVisible: isDynamicExpression ? `{= (${isVisibleDynamicExpression}) && ('${title}' !=='undefined') && (${showTitle} ? true : false) }` : titleVisibleExpression
|
|
342
|
+
};
|
|
343
|
+
return dataVisualizationSubSection;
|
|
344
|
+
case "com.sap.vocabularies.UI.v1.FieldGroup":
|
|
345
|
+
case "com.sap.vocabularies.UI.v1.Identification":
|
|
346
|
+
case "com.sap.vocabularies.UI.v1.DataPoint":
|
|
347
|
+
case "com.sap.vocabularies.UI.v1.StatusInfo":
|
|
348
|
+
case "com.sap.vocabularies.Communication.v1.Contact":
|
|
349
|
+
// All those element belong to a from facet
|
|
350
|
+
const facetActions = getFacetActions(facetDefinition, converterContext),
|
|
351
|
+
formElementSubSection = {
|
|
352
|
+
...subSection,
|
|
353
|
+
type: SubSectionType.Form,
|
|
354
|
+
level: level,
|
|
355
|
+
formDefinition: createFormDefinition(facetDefinition, isVisible, converterContext, facetActions.actions),
|
|
356
|
+
actions: facetActions.actions.filter(action => action.facetName === undefined),
|
|
357
|
+
commandActions: facetActions.commandActions
|
|
358
|
+
};
|
|
359
|
+
return formElementSubSection;
|
|
360
|
+
default:
|
|
361
|
+
unsupportedText = `For ${facetDefinition.Target.$target.term} Fragment`;
|
|
362
|
+
break;
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
break;
|
|
366
|
+
case "com.sap.vocabularies.UI.v1.ReferenceURLFacet":
|
|
367
|
+
unsupportedText = "For Reference URL Facet";
|
|
368
|
+
break;
|
|
369
|
+
default:
|
|
370
|
+
break;
|
|
371
|
+
}
|
|
372
|
+
// If we reach here we ended up with an unsupported SubSection type
|
|
373
|
+
const unsupportedSubSection = {
|
|
374
|
+
...subSection,
|
|
375
|
+
text: unsupportedText
|
|
376
|
+
};
|
|
377
|
+
return unsupportedSubSection;
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* Checks whether to hide or show subsection title
|
|
381
|
+
*
|
|
382
|
+
* @param controlTitle
|
|
383
|
+
* @param sectionTitle
|
|
384
|
+
* @param hasSingleContent
|
|
385
|
+
* @returns Boolean value or expression for showTitle
|
|
386
|
+
*/
|
|
387
|
+
_exports.createSubSection = createSubSection;
|
|
388
|
+
function getTitleVisibility(controlTitle, subSectionTitle, hasSingleContent) {
|
|
389
|
+
// visible shall be true if there are multiple content or if the control and subsection title are different
|
|
390
|
+
return compileExpression(or(not(hasSingleContent), notEqual(resolveBindingString(controlTitle), resolveBindingString(subSectionTitle))));
|
|
391
|
+
}
|
|
392
|
+
_exports.getTitleVisibility = getTitleVisibility;
|
|
393
|
+
function createFormActionReducer(actions, facetDefinition, converterContext) {
|
|
394
|
+
const referenceTarget = facetDefinition.Target.$target;
|
|
395
|
+
const targetValue = facetDefinition.Target.value;
|
|
396
|
+
let manifestActions = {};
|
|
397
|
+
let dataFieldCollection = [];
|
|
398
|
+
let [navigationPropertyPath] = targetValue.split("@");
|
|
399
|
+
if (navigationPropertyPath.length > 0) {
|
|
400
|
+
if (navigationPropertyPath.lastIndexOf("/") === navigationPropertyPath.length - 1) {
|
|
401
|
+
navigationPropertyPath = navigationPropertyPath.substr(0, navigationPropertyPath.length - 1);
|
|
402
|
+
}
|
|
403
|
+
} else {
|
|
404
|
+
navigationPropertyPath = undefined;
|
|
405
|
+
}
|
|
406
|
+
if (referenceTarget) {
|
|
407
|
+
switch (referenceTarget.term) {
|
|
408
|
+
case "com.sap.vocabularies.UI.v1.FieldGroup":
|
|
409
|
+
dataFieldCollection = referenceTarget.Data;
|
|
410
|
+
manifestActions = getActionsFromManifest(converterContext.getManifestControlConfiguration(referenceTarget).actions, converterContext, undefined, undefined, undefined, undefined, facetDefinition.fullyQualifiedName).actions;
|
|
411
|
+
break;
|
|
412
|
+
case "com.sap.vocabularies.UI.v1.Identification":
|
|
413
|
+
case "com.sap.vocabularies.UI.v1.StatusInfo":
|
|
414
|
+
if (referenceTarget.qualifier) {
|
|
415
|
+
dataFieldCollection = referenceTarget;
|
|
416
|
+
}
|
|
417
|
+
break;
|
|
418
|
+
default:
|
|
419
|
+
break;
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
actions = dataFieldCollection.reduce((actionReducer, dataField) => {
|
|
423
|
+
var _dataField$RequiresCo, _dataField$Inline, _dataField$Determinin, _dataField$Label, _dataField$Navigation, _dataField$annotation, _dataField$annotation2, _dataField$annotation3, _dataField$annotation4, _dataField$annotation5, _dataField$Label2, _dataField$annotation6, _dataField$annotation7, _dataField$annotation8, _dataField$annotation9, _dataField$annotation10;
|
|
424
|
+
switch (dataField.$Type) {
|
|
425
|
+
case "com.sap.vocabularies.UI.v1.DataFieldForIntentBasedNavigation":
|
|
426
|
+
if (((_dataField$RequiresCo = dataField.RequiresContext) === null || _dataField$RequiresCo === void 0 ? void 0 : _dataField$RequiresCo.valueOf()) === true) {
|
|
427
|
+
converterContext.getDiagnostics().addIssue(IssueCategory.Annotation, IssueSeverity.Low, IssueType.MALFORMED_DATAFIELD_FOR_IBN.REQUIRESCONTEXT);
|
|
428
|
+
}
|
|
429
|
+
if (((_dataField$Inline = dataField.Inline) === null || _dataField$Inline === void 0 ? void 0 : _dataField$Inline.valueOf()) === true) {
|
|
430
|
+
converterContext.getDiagnostics().addIssue(IssueCategory.Annotation, IssueSeverity.Low, IssueType.MALFORMED_DATAFIELD_FOR_IBN.INLINE);
|
|
431
|
+
}
|
|
432
|
+
if (((_dataField$Determinin = dataField.Determining) === null || _dataField$Determinin === void 0 ? void 0 : _dataField$Determinin.valueOf()) === true) {
|
|
433
|
+
converterContext.getDiagnostics().addIssue(IssueCategory.Annotation, IssueSeverity.Low, IssueType.MALFORMED_DATAFIELD_FOR_IBN.DETERMINING);
|
|
434
|
+
}
|
|
435
|
+
const mNavigationParameters = {};
|
|
436
|
+
if (dataField.Mapping) {
|
|
437
|
+
mNavigationParameters.semanticObjectMapping = getSemanticObjectMapping(dataField.Mapping);
|
|
438
|
+
}
|
|
439
|
+
actionReducer.push({
|
|
440
|
+
type: ActionType.DataFieldForIntentBasedNavigation,
|
|
441
|
+
id: getFormID(facetDefinition, dataField),
|
|
442
|
+
key: KeyHelper.generateKeyFromDataField(dataField),
|
|
443
|
+
text: (_dataField$Label = dataField.Label) === null || _dataField$Label === void 0 ? void 0 : _dataField$Label.toString(),
|
|
444
|
+
annotationPath: "",
|
|
445
|
+
enabled: dataField.NavigationAvailable !== undefined ? compileExpression(equal(getExpressionFromAnnotation((_dataField$Navigation = dataField.NavigationAvailable) === null || _dataField$Navigation === void 0 ? void 0 : _dataField$Navigation.valueOf()), true)) : "true",
|
|
446
|
+
visible: compileExpression(not(equal(getExpressionFromAnnotation((_dataField$annotation = dataField.annotations) === null || _dataField$annotation === void 0 ? void 0 : (_dataField$annotation2 = _dataField$annotation.UI) === null || _dataField$annotation2 === void 0 ? void 0 : (_dataField$annotation3 = _dataField$annotation2.Hidden) === null || _dataField$annotation3 === void 0 ? void 0 : _dataField$annotation3.valueOf()), true))),
|
|
447
|
+
buttonType: getButtonType((_dataField$annotation4 = dataField.annotations) === null || _dataField$annotation4 === void 0 ? void 0 : (_dataField$annotation5 = _dataField$annotation4.UI) === null || _dataField$annotation5 === void 0 ? void 0 : _dataField$annotation5.Emphasized),
|
|
448
|
+
press: compileExpression(fn("._intentBasedNavigation.navigate", [getExpressionFromAnnotation(dataField.SemanticObject), getExpressionFromAnnotation(dataField.Action), mNavigationParameters])),
|
|
449
|
+
customData: compileExpression({
|
|
450
|
+
semanticObject: getExpressionFromAnnotation(dataField.SemanticObject),
|
|
451
|
+
action: getExpressionFromAnnotation(dataField.Action)
|
|
452
|
+
})
|
|
453
|
+
});
|
|
454
|
+
break;
|
|
455
|
+
case "com.sap.vocabularies.UI.v1.DataFieldForAction":
|
|
456
|
+
const formManifestActionsConfiguration = converterContext.getManifestControlConfiguration(referenceTarget).actions;
|
|
457
|
+
const key = KeyHelper.generateKeyFromDataField(dataField);
|
|
458
|
+
actionReducer.push({
|
|
459
|
+
type: ActionType.DataFieldForAction,
|
|
460
|
+
id: getFormID(facetDefinition, dataField),
|
|
461
|
+
key: key,
|
|
462
|
+
text: (_dataField$Label2 = dataField.Label) === null || _dataField$Label2 === void 0 ? void 0 : _dataField$Label2.toString(),
|
|
463
|
+
annotationPath: "",
|
|
464
|
+
enabled: getEnabledForAnnotationAction(converterContext, dataField.ActionTarget),
|
|
465
|
+
binding: navigationPropertyPath ? `{ 'path' : '${navigationPropertyPath}'}` : undefined,
|
|
466
|
+
visible: compileExpression(not(equal(getExpressionFromAnnotation((_dataField$annotation6 = dataField.annotations) === null || _dataField$annotation6 === void 0 ? void 0 : (_dataField$annotation7 = _dataField$annotation6.UI) === null || _dataField$annotation7 === void 0 ? void 0 : (_dataField$annotation8 = _dataField$annotation7.Hidden) === null || _dataField$annotation8 === void 0 ? void 0 : _dataField$annotation8.valueOf()), true))),
|
|
467
|
+
requiresDialog: isDialog(dataField.ActionTarget),
|
|
468
|
+
buttonType: getButtonType((_dataField$annotation9 = dataField.annotations) === null || _dataField$annotation9 === void 0 ? void 0 : (_dataField$annotation10 = _dataField$annotation9.UI) === null || _dataField$annotation10 === void 0 ? void 0 : _dataField$annotation10.Emphasized),
|
|
469
|
+
press: compileExpression(fn("invokeAction", [dataField.Action, {
|
|
470
|
+
contexts: fn("getBindingContext", [], pathInModel("", "$source")),
|
|
471
|
+
invocationGrouping: dataField.InvocationGrouping === "UI.OperationGroupingType/ChangeSet" ? "ChangeSet" : "Isolated",
|
|
472
|
+
label: getExpressionFromAnnotation(dataField.Label),
|
|
473
|
+
model: fn("getModel", [], pathInModel("/", "$source")),
|
|
474
|
+
isNavigable: isActionNavigable(formManifestActionsConfiguration && formManifestActionsConfiguration[key])
|
|
475
|
+
}], ref(".editFlow"))),
|
|
476
|
+
facetName: dataField.Inline ? facetDefinition.fullyQualifiedName : undefined
|
|
477
|
+
});
|
|
478
|
+
break;
|
|
479
|
+
default:
|
|
480
|
+
break;
|
|
481
|
+
}
|
|
482
|
+
return actionReducer;
|
|
483
|
+
}, actions);
|
|
484
|
+
// Overwriting of actions happens in addFormMenuActions
|
|
485
|
+
return insertCustomElements(actions, manifestActions);
|
|
486
|
+
}
|
|
487
|
+
function isDialog(actionDefinition) {
|
|
488
|
+
if (actionDefinition) {
|
|
489
|
+
var _actionDefinition$ann, _actionDefinition$ann2;
|
|
490
|
+
const bCritical = (_actionDefinition$ann = actionDefinition.annotations) === null || _actionDefinition$ann === void 0 ? void 0 : (_actionDefinition$ann2 = _actionDefinition$ann.Common) === null || _actionDefinition$ann2 === void 0 ? void 0 : _actionDefinition$ann2.IsActionCritical;
|
|
491
|
+
if (actionDefinition.parameters.length > 1 || bCritical) {
|
|
492
|
+
return "Dialog";
|
|
493
|
+
} else {
|
|
494
|
+
return "None";
|
|
495
|
+
}
|
|
496
|
+
} else {
|
|
497
|
+
return "None";
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
_exports.isDialog = isDialog;
|
|
501
|
+
function createCustomSubSections(manifestSubSections, converterContext) {
|
|
502
|
+
const subSections = {};
|
|
503
|
+
Object.keys(manifestSubSections).forEach(subSectionKey => subSections[subSectionKey] = createCustomSubSection(manifestSubSections[subSectionKey], subSectionKey, converterContext));
|
|
504
|
+
return subSections;
|
|
505
|
+
}
|
|
506
|
+
_exports.createCustomSubSections = createCustomSubSections;
|
|
507
|
+
function createCustomSubSection(manifestSubSection, subSectionKey, converterContext) {
|
|
508
|
+
const sideContent = manifestSubSection.sideContent ? {
|
|
509
|
+
template: manifestSubSection.sideContent.template,
|
|
510
|
+
id: getSideContentID(subSectionKey),
|
|
511
|
+
visible: false,
|
|
512
|
+
equalSplit: manifestSubSection.sideContent.equalSplit
|
|
513
|
+
} : undefined;
|
|
514
|
+
let position = manifestSubSection.position;
|
|
515
|
+
if (!position) {
|
|
516
|
+
position = {
|
|
517
|
+
placement: Placement.After
|
|
518
|
+
};
|
|
519
|
+
}
|
|
520
|
+
const isVisible = manifestSubSection.visible !== undefined ? manifestSubSection.visible : true;
|
|
521
|
+
const isDynamicExpression = isVisible && typeof isVisible === "string" && isVisible.indexOf("{=") === 0;
|
|
522
|
+
const manifestActions = getActionsFromManifest(manifestSubSection.actions, converterContext);
|
|
523
|
+
const subSectionDefinition = {
|
|
524
|
+
type: SubSectionType.Unknown,
|
|
525
|
+
id: manifestSubSection.id || getCustomSubSectionID(subSectionKey),
|
|
526
|
+
actions: manifestActions.actions,
|
|
527
|
+
key: subSectionKey,
|
|
528
|
+
title: manifestSubSection.title,
|
|
529
|
+
level: 1,
|
|
530
|
+
position: position,
|
|
531
|
+
visible: manifestSubSection.visible !== undefined ? manifestSubSection.visible : true,
|
|
532
|
+
sideContent: sideContent,
|
|
533
|
+
isVisibilityDynamic: isDynamicExpression
|
|
534
|
+
};
|
|
535
|
+
if (manifestSubSection.template || manifestSubSection.name) {
|
|
536
|
+
subSectionDefinition.type = SubSectionType.XMLFragment;
|
|
537
|
+
subSectionDefinition.template = manifestSubSection.template || manifestSubSection.name || "";
|
|
538
|
+
} else {
|
|
539
|
+
subSectionDefinition.type = SubSectionType.Placeholder;
|
|
540
|
+
}
|
|
541
|
+
return subSectionDefinition;
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
/**
|
|
545
|
+
* Evaluate if the condensed mode can be appli3ed on the table.
|
|
546
|
+
*
|
|
547
|
+
* @param currentFacet
|
|
548
|
+
* @param facetsToCreateInSection
|
|
549
|
+
* @param converterContext
|
|
550
|
+
* @returns `true` for compliant, false otherwise
|
|
551
|
+
*/
|
|
552
|
+
_exports.createCustomSubSection = createCustomSubSection;
|
|
553
|
+
function getCondensedTableLayoutCompliance(currentFacet, facetsToCreateInSection, converterContext) {
|
|
554
|
+
const manifestWrapper = converterContext.getManifestWrapper();
|
|
555
|
+
if (manifestWrapper.useIconTabBar()) {
|
|
556
|
+
// If the OP use the tab based we check if the facets that will be created for this section are all non visible
|
|
557
|
+
return hasNoOtherVisibleTableInTargets(currentFacet, facetsToCreateInSection);
|
|
558
|
+
} else {
|
|
559
|
+
var _entityType$annotatio, _entityType$annotatio2, _entityType$annotatio3, _entityType$annotatio4, _entityType$annotatio5, _entityType$annotatio6;
|
|
560
|
+
const entityType = converterContext.getEntityType();
|
|
561
|
+
if ((_entityType$annotatio = entityType.annotations) !== null && _entityType$annotatio !== void 0 && (_entityType$annotatio2 = _entityType$annotatio.UI) !== null && _entityType$annotatio2 !== void 0 && (_entityType$annotatio3 = _entityType$annotatio2.Facets) !== null && _entityType$annotatio3 !== void 0 && _entityType$annotatio3.length && ((_entityType$annotatio4 = entityType.annotations) === null || _entityType$annotatio4 === void 0 ? void 0 : (_entityType$annotatio5 = _entityType$annotatio4.UI) === null || _entityType$annotatio5 === void 0 ? void 0 : (_entityType$annotatio6 = _entityType$annotatio5.Facets) === null || _entityType$annotatio6 === void 0 ? void 0 : _entityType$annotatio6.length) > 1) {
|
|
562
|
+
return hasNoOtherVisibleTableInTargets(currentFacet, facetsToCreateInSection);
|
|
563
|
+
} else {
|
|
564
|
+
return true;
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
function hasNoOtherVisibleTableInTargets(currentFacet, facetsToCreateInSection) {
|
|
569
|
+
return facetsToCreateInSection.every(function (subFacet) {
|
|
570
|
+
if (subFacet !== currentFacet) {
|
|
571
|
+
if (subFacet.$Type === "com.sap.vocabularies.UI.v1.ReferenceFacet") {
|
|
572
|
+
var _refFacet$Target, _refFacet$Target$$tar, _refFacet$Target2, _refFacet$Target2$$ta, _refFacet$Target$$tar2;
|
|
573
|
+
const refFacet = subFacet;
|
|
574
|
+
if (((_refFacet$Target = refFacet.Target) === null || _refFacet$Target === void 0 ? void 0 : (_refFacet$Target$$tar = _refFacet$Target.$target) === null || _refFacet$Target$$tar === void 0 ? void 0 : _refFacet$Target$$tar.term) === "com.sap.vocabularies.UI.v1.LineItem" || ((_refFacet$Target2 = refFacet.Target) === null || _refFacet$Target2 === void 0 ? void 0 : (_refFacet$Target2$$ta = _refFacet$Target2.$target) === null || _refFacet$Target2$$ta === void 0 ? void 0 : _refFacet$Target2$$ta.term) === "com.sap.vocabularies.UI.v1.PresentationVariant" || ((_refFacet$Target$$tar2 = refFacet.Target.$target) === null || _refFacet$Target$$tar2 === void 0 ? void 0 : _refFacet$Target$$tar2.term) === "com.sap.vocabularies.UI.v1.SelectionPresentationVariant") {
|
|
575
|
+
var _refFacet$annotations, _refFacet$annotations2, _refFacet$annotations3, _refFacet$annotations4;
|
|
576
|
+
return ((_refFacet$annotations = refFacet.annotations) === null || _refFacet$annotations === void 0 ? void 0 : (_refFacet$annotations2 = _refFacet$annotations.UI) === null || _refFacet$annotations2 === void 0 ? void 0 : _refFacet$annotations2.Hidden) !== undefined ? (_refFacet$annotations3 = refFacet.annotations) === null || _refFacet$annotations3 === void 0 ? void 0 : (_refFacet$annotations4 = _refFacet$annotations3.UI) === null || _refFacet$annotations4 === void 0 ? void 0 : _refFacet$annotations4.Hidden : false;
|
|
577
|
+
}
|
|
578
|
+
return true;
|
|
579
|
+
} else {
|
|
580
|
+
const subCollectionFacet = subFacet;
|
|
581
|
+
return subCollectionFacet.Facets.every(function (facet) {
|
|
582
|
+
var _subRefFacet$Target, _subRefFacet$Target$$, _subRefFacet$Target2, _subRefFacet$Target2$, _subRefFacet$Target3, _subRefFacet$Target3$;
|
|
583
|
+
const subRefFacet = facet;
|
|
584
|
+
if (((_subRefFacet$Target = subRefFacet.Target) === null || _subRefFacet$Target === void 0 ? void 0 : (_subRefFacet$Target$$ = _subRefFacet$Target.$target) === null || _subRefFacet$Target$$ === void 0 ? void 0 : _subRefFacet$Target$$.term) === "com.sap.vocabularies.UI.v1.LineItem" || ((_subRefFacet$Target2 = subRefFacet.Target) === null || _subRefFacet$Target2 === void 0 ? void 0 : (_subRefFacet$Target2$ = _subRefFacet$Target2.$target) === null || _subRefFacet$Target2$ === void 0 ? void 0 : _subRefFacet$Target2$.term) === "com.sap.vocabularies.UI.v1.PresentationVariant" || ((_subRefFacet$Target3 = subRefFacet.Target) === null || _subRefFacet$Target3 === void 0 ? void 0 : (_subRefFacet$Target3$ = _subRefFacet$Target3.$target) === null || _subRefFacet$Target3$ === void 0 ? void 0 : _subRefFacet$Target3$.term) === "com.sap.vocabularies.UI.v1.SelectionPresentationVariant") {
|
|
585
|
+
var _subRefFacet$annotati, _subRefFacet$annotati2, _subRefFacet$annotati3, _subRefFacet$annotati4;
|
|
586
|
+
return ((_subRefFacet$annotati = subRefFacet.annotations) === null || _subRefFacet$annotati === void 0 ? void 0 : (_subRefFacet$annotati2 = _subRefFacet$annotati.UI) === null || _subRefFacet$annotati2 === void 0 ? void 0 : _subRefFacet$annotati2.Hidden) !== undefined ? (_subRefFacet$annotati3 = subRefFacet.annotations) === null || _subRefFacet$annotati3 === void 0 ? void 0 : (_subRefFacet$annotati4 = _subRefFacet$annotati3.UI) === null || _subRefFacet$annotati4 === void 0 ? void 0 : _subRefFacet$annotati4.Hidden : false;
|
|
587
|
+
}
|
|
588
|
+
return true;
|
|
589
|
+
});
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
return true;
|
|
593
|
+
});
|
|
594
|
+
}
|
|
595
|
+
return _exports;
|
|
596
|
+
}, false);
|
|
597
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTdWJTZWN0aW9uVHlwZSIsInZpc3VhbGl6YXRpb25UZXJtcyIsImNyZWF0ZVN1YlNlY3Rpb25zIiwiZmFjZXRDb2xsZWN0aW9uIiwiY29udmVydGVyQ29udGV4dCIsImlzSGVhZGVyU2VjdGlvbiIsImZhY2V0c1RvQ3JlYXRlIiwicmVkdWNlIiwiZmFjZXREZWZpbml0aW9uIiwiJFR5cGUiLCJwdXNoIiwiRmFjZXRzIiwiZmluZCIsImZhY2V0VHlwZSIsInNwbGljZSIsImxlbmd0aCIsIm1hcCIsImZhY2V0IiwiY3JlYXRlU3ViU2VjdGlvbiIsImNyZWF0ZUN1c3RvbUhlYWRlckZhY2V0U3ViU2VjdGlvbnMiLCJjdXN0b21IZWFkZXJGYWNldHMiLCJnZXRIZWFkZXJGYWNldHNGcm9tTWFuaWZlc3QiLCJnZXRNYW5pZmVzdFdyYXBwZXIiLCJnZXRIZWFkZXJGYWNldHMiLCJhQ3VzdG9tSGVhZGVyRmFjZXRzIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJrZXkiLCJjdXN0b21IZWFkZXJGYWNldCIsInRlbXBsYXRlRWRpdCIsImNyZWF0ZUN1c3RvbUhlYWRlckZhY2V0U3ViU2VjdGlvbiIsInN1YlNlY3Rpb25JRCIsImdldEN1c3RvbVN1YlNlY3Rpb25JRCIsInN1YlNlY3Rpb24iLCJpZCIsInRpdGxlIiwidHlwZSIsIlhNTEZyYWdtZW50IiwidGVtcGxhdGUiLCJ2aXNpYmxlIiwibGV2ZWwiLCJzaWRlQ29udGVudCIsInVuZGVmaW5lZCIsInN0YXNoZWQiLCJmbGV4U2V0dGluZ3MiLCJhY3Rpb25zIiwiZ2V0U3ViU2VjdGlvbktleSIsImZhbGxiYWNrIiwiSUQiLCJ0b1N0cmluZyIsIkxhYmVsIiwiYWRkRm9ybU1lbnVBY3Rpb25zIiwiaGlkZGVuQWN0aW9ucyIsImdldEZvcm1IaWRkZW5BY3Rpb25zIiwiZm9ybUFjdGlvbnMiLCJnZXRGb3JtQWN0aW9ucyIsIm1hbmlmZXN0QWN0aW9ucyIsImdldEFjdGlvbnNGcm9tTWFuaWZlc3QiLCJhY3Rpb25PdmVyd3JpdGVDb25maWciLCJlbmFibGVkIiwiT3ZlcnJpZGVUeXBlIiwib3ZlcndyaXRlIiwiY29tbWFuZCIsImZvcm1BbGxBY3Rpb25zIiwiaW5zZXJ0Q3VzdG9tRWxlbWVudHMiLCJnZXRWaXNpYmlsaXR5RW5hYmxlbWVudEZvcm1NZW51QWN0aW9ucyIsInJlbW92ZUR1cGxpY2F0ZUFjdGlvbnMiLCJjb21tYW5kQWN0aW9ucyIsImdldEZhY2V0QWN0aW9ucyIsImZpbHRlciIsInN1YkZhY2V0RGVmaW5pdGlvbiIsImlzUmVmZXJlbmNlRmFjZXQiLCJhY3Rpb25SZWR1Y2VyIiwicmVmZXJlbmNlRmFjZXQiLCJjcmVhdGVGb3JtQWN0aW9uUmVkdWNlciIsImdldEJ1dHRvblR5cGUiLCJlbXBoYXNpemVkIiwiYnV0dG9uVHlwZUNvbmRpdGlvbiIsImVxdWFsIiwiZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uIiwiY29tcGlsZUV4cHJlc3Npb24iLCJpZkVsc2UiLCJCdXR0b25UeXBlIiwiR2hvc3QiLCJUcmFuc3BhcmVudCIsImhhc1NpbmdsZUNvbnRlbnQiLCJnZXRTdWJTZWN0aW9uSUQiLCJvSGlkZGVuQW5ub3RhdGlvbiIsImFubm90YXRpb25zIiwiVUkiLCJIaWRkZW4iLCJpc1Zpc2libGUiLCJub3QiLCJpc0R5bmFtaWNFeHByZXNzaW9uIiwiaW5kZXhPZiIsImlzVmlzaWJsZUR5bmFtaWNFeHByZXNzaW9uIiwic3Vic3RyaW5nIiwibGFzdEluZGV4T2YiLCJVbmtub3duIiwiYW5ub3RhdGlvblBhdGgiLCJnZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwiaXNWaXNpYmlsaXR5RHluYW1pYyIsImdldFN0YXNoZWRTZXR0aW5nc0ZvckhlYWRlckZhY2V0IiwiZGVzaWdudGltZSIsImdldERlc2lnblRpbWVNZXRhZGF0YVNldHRpbmdzRm9ySGVhZGVyRmFjZXQiLCJ1bnN1cHBvcnRlZFRleHQiLCJmYWNldHMiLCJ2aXN1YWxpemF0aW9uRmFjZXRzIiwiaW5kZXgiLCJpbmNsdWRlcyIsIlRhcmdldCIsIiR0YXJnZXQiLCJ0ZXJtIiwibm9uVmlzdWFsaXphdGlvbkZhY2V0cyIsInZpc3VhbGl6YXRpb24iLCJ2aXN1YWxpemF0aW9uQ29udGVudCIsImZvcm1Db250ZW50IiwibWl4ZWRDb250ZW50IiwiTG9nIiwid2FybmluZyIsIm1peGVkU3ViU2VjdGlvbiIsIk1peGVkIiwiY29udGVudCIsImZhY2V0QWN0aW9ucyIsImZvcm1Db2xsZWN0aW9uU3ViU2VjdGlvbiIsIkZvcm0iLCJmb3JtRGVmaW5pdGlvbiIsImNyZWF0ZUZvcm1EZWZpbml0aW9uIiwiYWN0aW9uIiwiZmFjZXROYW1lIiwidmFsdWUiLCJwcmVzZW50YXRpb24iLCJnZXREYXRhVmlzdWFsaXphdGlvbkNvbmZpZ3VyYXRpb24iLCJnZXRDb25kZW5zZWRUYWJsZUxheW91dENvbXBsaWFuY2UiLCJzdWJTZWN0aW9uVGl0bGUiLCJjb250cm9sVGl0bGUiLCJ2aXN1YWxpemF0aW9ucyIsImFubm90YXRpb24iLCJzaG93VGl0bGUiLCJnZXRUaXRsZVZpc2liaWxpdHkiLCJ0aXRsZVZpc2libGVFeHByZXNzaW9uIiwiZGF0YVZpc3VhbGl6YXRpb25TdWJTZWN0aW9uIiwiRGF0YVZpc3VhbGl6YXRpb24iLCJ0aXRsZVZpc2libGUiLCJmb3JtRWxlbWVudFN1YlNlY3Rpb24iLCJ1bnN1cHBvcnRlZFN1YlNlY3Rpb24iLCJ0ZXh0Iiwib3IiLCJub3RFcXVhbCIsInJlc29sdmVCaW5kaW5nU3RyaW5nIiwicmVmZXJlbmNlVGFyZ2V0IiwidGFyZ2V0VmFsdWUiLCJkYXRhRmllbGRDb2xsZWN0aW9uIiwibmF2aWdhdGlvblByb3BlcnR5UGF0aCIsInNwbGl0Iiwic3Vic3RyIiwiRGF0YSIsImdldE1hbmlmZXN0Q29udHJvbENvbmZpZ3VyYXRpb24iLCJxdWFsaWZpZXIiLCJkYXRhRmllbGQiLCJSZXF1aXJlc0NvbnRleHQiLCJ2YWx1ZU9mIiwiZ2V0RGlhZ25vc3RpY3MiLCJhZGRJc3N1ZSIsIklzc3VlQ2F0ZWdvcnkiLCJBbm5vdGF0aW9uIiwiSXNzdWVTZXZlcml0eSIsIkxvdyIsIklzc3VlVHlwZSIsIk1BTEZPUk1FRF9EQVRBRklFTERfRk9SX0lCTiIsIlJFUVVJUkVTQ09OVEVYVCIsIklubGluZSIsIklOTElORSIsIkRldGVybWluaW5nIiwiREVURVJNSU5JTkciLCJtTmF2aWdhdGlvblBhcmFtZXRlcnMiLCJNYXBwaW5nIiwic2VtYW50aWNPYmplY3RNYXBwaW5nIiwiZ2V0U2VtYW50aWNPYmplY3RNYXBwaW5nIiwiQWN0aW9uVHlwZSIsIkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbiIsImdldEZvcm1JRCIsIktleUhlbHBlciIsImdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZCIsIk5hdmlnYXRpb25BdmFpbGFibGUiLCJidXR0b25UeXBlIiwiRW1waGFzaXplZCIsInByZXNzIiwiZm4iLCJTZW1hbnRpY09iamVjdCIsIkFjdGlvbiIsImN1c3RvbURhdGEiLCJzZW1hbnRpY09iamVjdCIsImZvcm1NYW5pZmVzdEFjdGlvbnNDb25maWd1cmF0aW9uIiwiRGF0YUZpZWxkRm9yQWN0aW9uIiwiZ2V0RW5hYmxlZEZvckFubm90YXRpb25BY3Rpb24iLCJBY3Rpb25UYXJnZXQiLCJiaW5kaW5nIiwicmVxdWlyZXNEaWFsb2ciLCJpc0RpYWxvZyIsImNvbnRleHRzIiwicGF0aEluTW9kZWwiLCJpbnZvY2F0aW9uR3JvdXBpbmciLCJJbnZvY2F0aW9uR3JvdXBpbmciLCJsYWJlbCIsIm1vZGVsIiwiaXNOYXZpZ2FibGUiLCJpc0FjdGlvbk5hdmlnYWJsZSIsInJlZiIsImFjdGlvbkRlZmluaXRpb24iLCJiQ3JpdGljYWwiLCJDb21tb24iLCJJc0FjdGlvbkNyaXRpY2FsIiwicGFyYW1ldGVycyIsImNyZWF0ZUN1c3RvbVN1YlNlY3Rpb25zIiwibWFuaWZlc3RTdWJTZWN0aW9ucyIsInN1YlNlY3Rpb25zIiwic3ViU2VjdGlvbktleSIsImNyZWF0ZUN1c3RvbVN1YlNlY3Rpb24iLCJtYW5pZmVzdFN1YlNlY3Rpb24iLCJnZXRTaWRlQ29udGVudElEIiwiZXF1YWxTcGxpdCIsInBvc2l0aW9uIiwicGxhY2VtZW50IiwiUGxhY2VtZW50IiwiQWZ0ZXIiLCJzdWJTZWN0aW9uRGVmaW5pdGlvbiIsIm5hbWUiLCJQbGFjZWhvbGRlciIsImN1cnJlbnRGYWNldCIsImZhY2V0c1RvQ3JlYXRlSW5TZWN0aW9uIiwibWFuaWZlc3RXcmFwcGVyIiwidXNlSWNvblRhYkJhciIsImhhc05vT3RoZXJWaXNpYmxlVGFibGVJblRhcmdldHMiLCJlbnRpdHlUeXBlIiwiZ2V0RW50aXR5VHlwZSIsImV2ZXJ5Iiwic3ViRmFjZXQiLCJyZWZGYWNldCIsInN1YkNvbGxlY3Rpb25GYWNldCIsInN1YlJlZkZhY2V0Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJTdWJTZWN0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW11bmljYXRpb25Bbm5vdGF0aW9uVGVybXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NvbW11bmljYXRpb25cIjtcbmltcG9ydCB0eXBlIHtcblx0Q29sbGVjdGlvbkZhY2V0VHlwZXMsXG5cdERhdGFGaWVsZEFic3RyYWN0VHlwZXMsXG5cdEVtcGhhc2l6ZWQsXG5cdEZhY2V0VHlwZXMsXG5cdEZpZWxkR3JvdXAsXG5cdE9wZXJhdGlvbkdyb3VwaW5nVHlwZSxcblx0UmVmZXJlbmNlRmFjZXQsXG5cdFJlZmVyZW5jZUZhY2V0VHlwZXNcbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVGVybXMsIFVJQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSB7XG5cdEJhc2VBY3Rpb24sXG5cdENvbWJpbmVkQWN0aW9uLFxuXHRDb252ZXJ0ZXJBY3Rpb24sXG5cdEN1c3RvbUFjdGlvbixcblx0T3ZlcnJpZGVUeXBlQWN0aW9uXG59IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9BY3Rpb25cIjtcbmltcG9ydCB7XG5cdEJ1dHRvblR5cGUsXG5cdGdldEFjdGlvbnNGcm9tTWFuaWZlc3QsXG5cdGdldEVuYWJsZWRGb3JBbm5vdGF0aW9uQWN0aW9uLFxuXHRnZXRTZW1hbnRpY09iamVjdE1hcHBpbmcsXG5cdGlzQWN0aW9uTmF2aWdhYmxlLFxuXHRyZW1vdmVEdXBsaWNhdGVBY3Rpb25zXG59IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9BY3Rpb25cIjtcbmltcG9ydCB0eXBlIHsgQ3VzdG9tT2JqZWN0UGFnZUhlYWRlckZhY2V0LCBGbGV4U2V0dGluZ3MgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9PYmplY3RQYWdlL0hlYWRlckZhY2V0XCI7XG5pbXBvcnQge1xuXHRnZXREZXNpZ25UaW1lTWV0YWRhdGFTZXR0aW5nc0ZvckhlYWRlckZhY2V0LFxuXHRnZXRIZWFkZXJGYWNldHNGcm9tTWFuaWZlc3QsXG5cdGdldFN0YXNoZWRTZXR0aW5nc0ZvckhlYWRlckZhY2V0XG59IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL09iamVjdFBhZ2UvSGVhZGVyRmFjZXRcIjtcbmltcG9ydCB7IElzc3VlQ2F0ZWdvcnksIElzc3VlU2V2ZXJpdHksIElzc3VlVHlwZSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvSXNzdWVNYW5hZ2VyXCI7XG5pbXBvcnQgeyBLZXlIZWxwZXIgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0tleVwiO1xuaW1wb3J0IHtcblx0Q29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24sXG5cdGNvbXBpbGVFeHByZXNzaW9uLFxuXHRlcXVhbCxcblx0Zm4sXG5cdGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbixcblx0aWZFbHNlLFxuXHRub3QsXG5cdG5vdEVxdWFsLFxuXHRvcixcblx0cGF0aEluTW9kZWwsXG5cdHJlZixcblx0cmVzb2x2ZUJpbmRpbmdTdHJpbmdcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIENvbnZlcnRlckNvbnRleHQgZnJvbSBcIi4uLy4uL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB0eXBlIHsgQ29uZmlndXJhYmxlT2JqZWN0LCBDb25maWd1cmFibGVSZWNvcmQsIEN1c3RvbUVsZW1lbnQgfSBmcm9tIFwiLi4vLi4vaGVscGVycy9Db25maWd1cmFibGVPYmplY3RcIjtcbmltcG9ydCB7IGluc2VydEN1c3RvbUVsZW1lbnRzLCBPdmVycmlkZVR5cGUsIFBsYWNlbWVudCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL0NvbmZpZ3VyYWJsZU9iamVjdFwiO1xuaW1wb3J0IHsgZ2V0Q3VzdG9tU3ViU2VjdGlvbklELCBnZXRGb3JtSUQsIGdldFNpZGVDb250ZW50SUQsIGdldFN1YlNlY3Rpb25JRCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL0lEXCI7XG5pbXBvcnQgdHlwZSB7IE1hbmlmZXN0QWN0aW9uLCBNYW5pZmVzdFN1YlNlY3Rpb24gfSBmcm9tIFwiLi4vLi4vTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgQWN0aW9uVHlwZSB9IGZyb20gXCIuLi8uLi9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBnZXRGb3JtQWN0aW9ucywgZ2V0Rm9ybUhpZGRlbkFjdGlvbnMsIGdldFZpc2liaWxpdHlFbmFibGVtZW50Rm9ybU1lbnVBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL29iamVjdFBhZ2UvRm9ybU1lbnVBY3Rpb25zXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFWaXN1YWxpemF0aW9uRGVmaW5pdGlvbiB9IGZyb20gXCIuLi9Db21tb24vRGF0YVZpc3VhbGl6YXRpb25cIjtcbmltcG9ydCB7IGdldERhdGFWaXN1YWxpemF0aW9uQ29uZmlndXJhdGlvbiB9IGZyb20gXCIuLi9Db21tb24vRGF0YVZpc3VhbGl6YXRpb25cIjtcbmltcG9ydCB0eXBlIHsgRm9ybURlZmluaXRpb24gfSBmcm9tIFwiLi4vQ29tbW9uL0Zvcm1cIjtcbmltcG9ydCB7IGNyZWF0ZUZvcm1EZWZpbml0aW9uLCBpc1JlZmVyZW5jZUZhY2V0IH0gZnJvbSBcIi4uL0NvbW1vbi9Gb3JtXCI7XG5cbmV4cG9ydCBlbnVtIFN1YlNlY3Rpb25UeXBlIHtcblx0VW5rbm93biA9IFwiVW5rbm93blwiLCAvLyBEZWZhdWx0IFR5cGVcblx0Rm9ybSA9IFwiRm9ybVwiLFxuXHREYXRhVmlzdWFsaXphdGlvbiA9IFwiRGF0YVZpc3VhbGl6YXRpb25cIixcblx0WE1MRnJhZ21lbnQgPSBcIlhNTEZyYWdtZW50XCIsXG5cdFBsYWNlaG9sZGVyID0gXCJQbGFjZWhvbGRlclwiLFxuXHRNaXhlZCA9IFwiTWl4ZWRcIlxufVxuXG5leHBvcnQgdHlwZSBPYmplY3RQYWdlU3ViU2VjdGlvbiA9XG5cdHwgVW5zdXBwb3J0ZWRTdWJTZWN0aW9uXG5cdHwgRm9ybVN1YlNlY3Rpb25cblx0fCBEYXRhVmlzdWFsaXphdGlvblN1YlNlY3Rpb25cblx0fCBDb250YWN0U3ViU2VjdGlvblxuXHR8IFhNTEZyYWdtZW50U3ViU2VjdGlvblxuXHR8IFBsYWNlaG9sZGVyRnJhZ21lbnRTdWJTZWN0aW9uXG5cdHwgTWl4ZWRTdWJTZWN0aW9uO1xuXG50eXBlIEJhc2VTdWJTZWN0aW9uID0ge1xuXHRpZDogc3RyaW5nO1xuXHRrZXk6IHN0cmluZztcblx0dGl0bGU6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXHRhbm5vdGF0aW9uUGF0aDogc3RyaW5nO1xuXHR0eXBlOiBTdWJTZWN0aW9uVHlwZTtcblx0dmlzaWJsZTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdGlzVmlzaWJpbGl0eUR5bmFtaWM/OiBib29sZWFuIHwgXCJcIjtcblx0ZmxleFNldHRpbmdzPzogRmxleFNldHRpbmdzO1xuXHRzdGFzaGVkPzogYm9vbGVhbjtcblx0bGV2ZWw6IG51bWJlcjtcblx0Y29udGVudD86IEFycmF5PE9iamVjdFBhZ2VTdWJTZWN0aW9uPjtcblx0c2lkZUNvbnRlbnQ/OiBTaWRlQ29udGVudERlZjtcbn07XG5cbnR5cGUgVW5zdXBwb3J0ZWRTdWJTZWN0aW9uID0gQmFzZVN1YlNlY3Rpb24gJiB7XG5cdHRleHQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIERhdGFWaXN1YWxpemF0aW9uU3ViU2VjdGlvbiA9IEJhc2VTdWJTZWN0aW9uICYge1xuXHR0eXBlOiBTdWJTZWN0aW9uVHlwZS5EYXRhVmlzdWFsaXphdGlvbjtcblx0cHJlc2VudGF0aW9uOiBEYXRhVmlzdWFsaXphdGlvbkRlZmluaXRpb247XG5cdHNob3dUaXRsZTogYm9vbGVhbiB8IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXHR0aXRsZVZpc2libGU/OiBzdHJpbmcgfCBib29sZWFuO1xufTtcblxudHlwZSBDb250YWN0U3ViU2VjdGlvbiA9IFVuc3VwcG9ydGVkU3ViU2VjdGlvbjtcblxudHlwZSBYTUxGcmFnbWVudFN1YlNlY3Rpb24gPSBPbWl0PEJhc2VTdWJTZWN0aW9uLCBcImFubm90YXRpb25QYXRoXCI+ICYge1xuXHR0eXBlOiBTdWJTZWN0aW9uVHlwZS5YTUxGcmFnbWVudDtcblx0dGVtcGxhdGU6IHN0cmluZztcblx0YWN0aW9uczogUmVjb3JkPHN0cmluZywgQ3VzdG9tQWN0aW9uPjtcbn07XG5cbnR5cGUgUGxhY2Vob2xkZXJGcmFnbWVudFN1YlNlY3Rpb24gPSBPbWl0PEJhc2VTdWJTZWN0aW9uLCBcImFubm90YXRpb25QYXRoXCI+ICYge1xuXHR0eXBlOiBTdWJTZWN0aW9uVHlwZS5QbGFjZWhvbGRlcjtcblx0YWN0aW9uczogUmVjb3JkPHN0cmluZywgQ3VzdG9tQWN0aW9uPjtcbn07XG5cbnR5cGUgTWl4ZWRTdWJTZWN0aW9uID0gQmFzZVN1YlNlY3Rpb24gJiB7XG5cdGNvbnRlbnQ6IEFycmF5PE9iamVjdFBhZ2VTdWJTZWN0aW9uPjtcbn07XG5cbmV4cG9ydCB0eXBlIEZvcm1TdWJTZWN0aW9uID0gQmFzZVN1YlNlY3Rpb24gJiB7XG5cdHR5cGU6IFN1YlNlY3Rpb25UeXBlLkZvcm07XG5cdGZvcm1EZWZpbml0aW9uOiBGb3JtRGVmaW5pdGlvbjtcblx0YWN0aW9uczogQ29udmVydGVyQWN0aW9uW10gfCBCYXNlQWN0aW9uW107XG5cdGNvbW1hbmRBY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21BY3Rpb24+O1xufTtcblxuZXhwb3J0IHR5cGUgT2JqZWN0UGFnZVNlY3Rpb24gPSBDb25maWd1cmFibGVPYmplY3QgJiB7XG5cdGlkOiBzdHJpbmc7XG5cdHRpdGxlOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblx0c2hvd1RpdGxlPzogYm9vbGVhbjtcblx0dmlzaWJsZTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdHN1YlNlY3Rpb25zOiBPYmplY3RQYWdlU3ViU2VjdGlvbltdO1xufTtcblxudHlwZSBTaWRlQ29udGVudERlZiA9IHtcblx0dGVtcGxhdGU/OiBzdHJpbmc7XG5cdGlkPzogc3RyaW5nO1xuXHRzaWRlQ29udGVudEZhbGxEb3duPzogc3RyaW5nO1xuXHRjb250YWluZXJRdWVyeT86IHN0cmluZztcblx0dmlzaWJsZT86IGJvb2xlYW47XG5cdGVxdWFsU3BsaXQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgQ3VzdG9tT2JqZWN0UGFnZVNlY3Rpb24gPSBDdXN0b21FbGVtZW50PE9iamVjdFBhZ2VTZWN0aW9uPjtcblxuZXhwb3J0IHR5cGUgQ3VzdG9tT2JqZWN0UGFnZVN1YlNlY3Rpb24gPSBDdXN0b21FbGVtZW50PE9iamVjdFBhZ2VTdWJTZWN0aW9uPjtcblxuY29uc3QgdmlzdWFsaXphdGlvblRlcm1zOiBzdHJpbmdbXSA9IFtcblx0VUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW0sXG5cdFVJQW5ub3RhdGlvblRlcm1zLkNoYXJ0LFxuXHRVSUFubm90YXRpb25UZXJtcy5QcmVzZW50YXRpb25WYXJpYW50LFxuXHRVSUFubm90YXRpb25UZXJtcy5TZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50XG5dO1xuXG4vKipcbiAqIENyZWF0ZSBzdWJzZWN0aW9ucyBiYXNlZCBvbiBmYWNldCBkZWZpbml0aW9uLlxuICpcbiAqIEBwYXJhbSBmYWNldENvbGxlY3Rpb24gQ29sbGVjdGlvbiBvZiBmYWNldHNcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0IFRoZSBjb252ZXJ0ZXIgY29udGV4dFxuICogQHBhcmFtIGlzSGVhZGVyU2VjdGlvbiBUcnVlIGlmIGhlYWRlciBzZWN0aW9uIGlzIGdlbmVyYXRlZCBpbiB0aGlzIGl0ZXJhdGlvblxuICogQHJldHVybnMgVGhlIGN1cnJlbnQgc3Vic2VjdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVN1YlNlY3Rpb25zKFxuXHRmYWNldENvbGxlY3Rpb246IEZhY2V0VHlwZXNbXSxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0aXNIZWFkZXJTZWN0aW9uPzogYm9vbGVhblxuKTogT2JqZWN0UGFnZVN1YlNlY3Rpb25bXSB7XG5cdC8vIEZpcnN0IHdlIGRldGVybWluZSB3aGljaCBzdWIgc2VjdGlvbiB3ZSBuZWVkIHRvIGNyZWF0ZVxuXHRjb25zdCBmYWNldHNUb0NyZWF0ZSA9IGZhY2V0Q29sbGVjdGlvbi5yZWR1Y2UoKGZhY2V0c1RvQ3JlYXRlOiBGYWNldFR5cGVzW10sIGZhY2V0RGVmaW5pdGlvbikgPT4ge1xuXHRcdHN3aXRjaCAoZmFjZXREZWZpbml0aW9uLiRUeXBlKSB7XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLlJlZmVyZW5jZUZhY2V0OlxuXHRcdFx0XHRmYWNldHNUb0NyZWF0ZS5wdXNoKGZhY2V0RGVmaW5pdGlvbik7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5Db2xsZWN0aW9uRmFjZXQ6XG5cdFx0XHRcdC8vIFRPRE8gSWYgdGhlIENvbGxlY3Rpb24gRmFjZXQgaGFzIGEgY2hpbGQgb2YgdHlwZSBDb2xsZWN0aW9uIEZhY2V0IHdlIGJyaW5nIHRoZW0gdXAgb25lIGxldmVsIChGb3JtICsgVGFibGUgdXNlIGNhc2UpID9cblx0XHRcdFx0Ly8gZmlyc3QgY2FzZSBmYWNldCBDb2xsZWN0aW9uIGlzIGNvbWJpbmF0aW9uIG9mIGNvbGxlY3Rpb24gYW5kIHJlZmVyZW5jZSBmYWNldCBvciBub3QgYWxsIGZhY2V0cyBhcmUgcmVmZXJlbmNlIGZhY2V0cy5cblx0XHRcdFx0aWYgKGZhY2V0RGVmaW5pdGlvbi5GYWNldHMuZmluZCgoZmFjZXRUeXBlKSA9PiBmYWNldFR5cGUuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkNvbGxlY3Rpb25GYWNldCkpIHtcblx0XHRcdFx0XHRmYWNldHNUb0NyZWF0ZS5zcGxpY2UoZmFjZXRzVG9DcmVhdGUubGVuZ3RoLCAwLCAuLi5mYWNldERlZmluaXRpb24uRmFjZXRzKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRmYWNldHNUb0NyZWF0ZS5wdXNoKGZhY2V0RGVmaW5pdGlvbik7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLlJlZmVyZW5jZVVSTEZhY2V0OlxuXHRcdFx0XHQvLyBOb3Qgc3VwcG9ydGVkXG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFjZXRzVG9DcmVhdGU7XG5cdH0sIFtdKTtcblxuXHQvLyBUaGVuIHdlIGNyZWF0ZSB0aGUgYWN0dWFsIHN1YnNlY3Rpb25zXG5cdHJldHVybiBmYWNldHNUb0NyZWF0ZS5tYXAoKGZhY2V0KSA9PlxuXHRcdGNyZWF0ZVN1YlNlY3Rpb24oZmFjZXQsIGZhY2V0c1RvQ3JlYXRlLCBjb252ZXJ0ZXJDb250ZXh0LCAwLCAhKGZhY2V0IGFzIGFueSk/LkZhY2V0cz8ubGVuZ3RoLCBpc0hlYWRlclNlY3Rpb24pXG5cdCk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBzdWJzZWN0aW9ucyBiYXNlZCBvbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgY3VzdG9tIGhlYWRlciBmYWNldC5cbiAqXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHRcbiAqIEByZXR1cm5zIFRoZSBjdXJyZW50IHN1YnNlY3Rpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDdXN0b21IZWFkZXJGYWNldFN1YlNlY3Rpb25zKGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBPYmplY3RQYWdlU3ViU2VjdGlvbltdIHtcblx0Y29uc3QgY3VzdG9tSGVhZGVyRmFjZXRzOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21PYmplY3RQYWdlSGVhZGVyRmFjZXQ+ID0gZ2V0SGVhZGVyRmFjZXRzRnJvbU1hbmlmZXN0KFxuXHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RXcmFwcGVyKCkuZ2V0SGVhZGVyRmFjZXRzKClcblx0KTtcblx0Y29uc3QgYUN1c3RvbUhlYWRlckZhY2V0czogQ3VzdG9tT2JqZWN0UGFnZUhlYWRlckZhY2V0W10gPSBbXTtcblx0T2JqZWN0LmtleXMoY3VzdG9tSGVhZGVyRmFjZXRzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcblx0XHRhQ3VzdG9tSGVhZGVyRmFjZXRzLnB1c2goY3VzdG9tSGVhZGVyRmFjZXRzW2tleV0pO1xuXHRcdHJldHVybiBhQ3VzdG9tSGVhZGVyRmFjZXRzO1xuXHR9KTtcblx0Y29uc3QgZmFjZXRzVG9DcmVhdGUgPSBhQ3VzdG9tSGVhZGVyRmFjZXRzLnJlZHVjZSgoZmFjZXRzVG9DcmVhdGU6IEN1c3RvbU9iamVjdFBhZ2VIZWFkZXJGYWNldFtdLCBjdXN0b21IZWFkZXJGYWNldCkgPT4ge1xuXHRcdGlmIChjdXN0b21IZWFkZXJGYWNldC50ZW1wbGF0ZUVkaXQpIHtcblx0XHRcdGZhY2V0c1RvQ3JlYXRlLnB1c2goY3VzdG9tSGVhZGVyRmFjZXQpO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFjZXRzVG9DcmVhdGU7XG5cdH0sIFtdKTtcblxuXHRyZXR1cm4gZmFjZXRzVG9DcmVhdGUubWFwKChjdXN0b21IZWFkZXJGYWNldCkgPT4gY3JlYXRlQ3VzdG9tSGVhZGVyRmFjZXRTdWJTZWN0aW9uKGN1c3RvbUhlYWRlckZhY2V0KSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHN1YnNlY3Rpb24gYmFzZWQgb24gYSBjdXN0b20gaGVhZGVyIGZhY2V0LlxuICpcbiAqIEBwYXJhbSBjdXN0b21IZWFkZXJGYWNldCBBIGN1c3RvbSBoZWFkZXIgZmFjZXRcbiAqIEByZXR1cm5zIEEgZGVmaW5pdGlvbiBmb3IgYSBzdWJzZWN0aW9uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUN1c3RvbUhlYWRlckZhY2V0U3ViU2VjdGlvbihjdXN0b21IZWFkZXJGYWNldDogQ3VzdG9tT2JqZWN0UGFnZUhlYWRlckZhY2V0KTogT2JqZWN0UGFnZVN1YlNlY3Rpb24ge1xuXHRjb25zdCBzdWJTZWN0aW9uSUQgPSBnZXRDdXN0b21TdWJTZWN0aW9uSUQoY3VzdG9tSGVhZGVyRmFjZXQua2V5KTtcblx0Y29uc3Qgc3ViU2VjdGlvbjogWE1MRnJhZ21lbnRTdWJTZWN0aW9uID0ge1xuXHRcdGlkOiBzdWJTZWN0aW9uSUQsXG5cdFx0a2V5OiBjdXN0b21IZWFkZXJGYWNldC5rZXksXG5cdFx0dGl0bGU6IGN1c3RvbUhlYWRlckZhY2V0LnRpdGxlLFxuXHRcdHR5cGU6IFN1YlNlY3Rpb25UeXBlLlhNTEZyYWdtZW50LFxuXHRcdHRlbXBsYXRlOiBjdXN0b21IZWFkZXJGYWNldC50ZW1wbGF0ZUVkaXQgfHwgXCJcIixcblx0XHR2aXNpYmxlOiBjdXN0b21IZWFkZXJGYWNldC52aXNpYmxlLFxuXHRcdGxldmVsOiAxLFxuXHRcdHNpZGVDb250ZW50OiB1bmRlZmluZWQsXG5cdFx0c3Rhc2hlZDogY3VzdG9tSGVhZGVyRmFjZXQuc3Rhc2hlZCxcblx0XHRmbGV4U2V0dGluZ3M6IGN1c3RvbUhlYWRlckZhY2V0LmZsZXhTZXR0aW5ncyxcblx0XHRhY3Rpb25zOiB7fVxuXHR9O1xuXHRyZXR1cm4gc3ViU2VjdGlvbjtcbn1cblxuLy8gZnVuY3Rpb24gaXNUYXJnZXRGb3JDb21wbGlhbnQoYW5ub3RhdGlvblBhdGg6IEFubm90YXRpb25QYXRoKSB7XG4vLyBcdHJldHVybiAvLipjb21cXC5zYXBcXC52b2NhYnVsYXJpZXNcXC5VSVxcLnYxXFwuKEZpZWxkR3JvdXB8SWRlbnRpZmljYXRpb258RGF0YVBvaW50fFN0YXR1c0luZm8pLiovLnRlc3QoYW5ub3RhdGlvblBhdGgudmFsdWUpO1xuLy8gfVxuY29uc3QgZ2V0U3ViU2VjdGlvbktleSA9IChmYWNldERlZmluaXRpb246IEZhY2V0VHlwZXMsIGZhbGxiYWNrOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuXHRyZXR1cm4gZmFjZXREZWZpbml0aW9uLklEPy50b1N0cmluZygpIHx8IGZhY2V0RGVmaW5pdGlvbi5MYWJlbD8udG9TdHJpbmcoKSB8fCBmYWxsYmFjaztcbn07XG4vKipcbiAqIEFkZHMgRm9ybSBtZW51IGFjdGlvbiB0byBhbGwgZm9ybSBhY3Rpb25zLCByZW1vdmVzIGR1cGxpY2F0ZSBhY3Rpb25zIGFuZCBoaWRkZW4gYWN0aW9ucy5cbiAqXG4gKiBAcGFyYW0gYWN0aW9ucyBUaGUgYWN0aW9ucyBpbnZvbHZlZFxuICogQHBhcmFtIGZhY2V0RGVmaW5pdGlvbiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGZhY2V0XG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHRcbiAqIEByZXR1cm5zIFRoZSBmb3JtIG1lbnUgYWN0aW9uc1xuICovXG5mdW5jdGlvbiBhZGRGb3JtTWVudUFjdGlvbnMoYWN0aW9uczogQ29udmVydGVyQWN0aW9uW10sIGZhY2V0RGVmaW5pdGlvbjogRmFjZXRUeXBlcywgY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCk6IENvbWJpbmVkQWN0aW9uIHtcblx0Y29uc3QgaGlkZGVuQWN0aW9uczogQmFzZUFjdGlvbltdID0gZ2V0Rm9ybUhpZGRlbkFjdGlvbnMoZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KSB8fCBbXSxcblx0XHRmb3JtQWN0aW9uczogQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0QWN0aW9uPiA9IGdldEZvcm1BY3Rpb25zKGZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dCksXG5cdFx0bWFuaWZlc3RBY3Rpb25zID0gZ2V0QWN0aW9uc0Zyb21NYW5pZmVzdChmb3JtQWN0aW9ucywgY29udmVydGVyQ29udGV4dCwgYWN0aW9ucywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGhpZGRlbkFjdGlvbnMpLFxuXHRcdGFjdGlvbk92ZXJ3cml0ZUNvbmZpZzogT3ZlcnJpZGVUeXBlQWN0aW9uID0ge1xuXHRcdFx0ZW5hYmxlZDogT3ZlcnJpZGVUeXBlLm92ZXJ3cml0ZSxcblx0XHRcdHZpc2libGU6IE92ZXJyaWRlVHlwZS5vdmVyd3JpdGUsXG5cdFx0XHRjb21tYW5kOiBPdmVycmlkZVR5cGUub3ZlcndyaXRlXG5cdFx0fSxcblx0XHRmb3JtQWxsQWN0aW9ucyA9IGluc2VydEN1c3RvbUVsZW1lbnRzKGFjdGlvbnMsIG1hbmlmZXN0QWN0aW9ucy5hY3Rpb25zLCBhY3Rpb25PdmVyd3JpdGVDb25maWcpO1xuXHRyZXR1cm4ge1xuXHRcdGFjdGlvbnM6IGZvcm1BbGxBY3Rpb25zID8gZ2V0VmlzaWJpbGl0eUVuYWJsZW1lbnRGb3JtTWVudUFjdGlvbnMocmVtb3ZlRHVwbGljYXRlQWN0aW9ucyhmb3JtQWxsQWN0aW9ucykpIDogYWN0aW9ucyxcblx0XHRjb21tYW5kQWN0aW9uczogbWFuaWZlc3RBY3Rpb25zLmNvbW1hbmRBY3Rpb25zXG5cdH07XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBhY3Rpb24gZm9ybSBhIGZhY2V0LlxuICpcbiAqIEBwYXJhbSBmYWNldERlZmluaXRpb25cbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcmV0dXJucyBUaGUgY3VycmVudCBmYWNldCBhY3Rpb25zXG4gKi9cbmZ1bmN0aW9uIGdldEZhY2V0QWN0aW9ucyhmYWNldERlZmluaXRpb246IEZhY2V0VHlwZXMsIGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBDb21iaW5lZEFjdGlvbiB7XG5cdGxldCBhY3Rpb25zOiBDb252ZXJ0ZXJBY3Rpb25bXSA9IFtdO1xuXHRzd2l0Y2ggKGZhY2V0RGVmaW5pdGlvbi4kVHlwZSkge1xuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuQ29sbGVjdGlvbkZhY2V0OlxuXHRcdFx0YWN0aW9ucyA9IChcblx0XHRcdFx0ZmFjZXREZWZpbml0aW9uLkZhY2V0cy5maWx0ZXIoKHN1YkZhY2V0RGVmaW5pdGlvbikgPT4gaXNSZWZlcmVuY2VGYWNldChzdWJGYWNldERlZmluaXRpb24pKSBhcyBSZWZlcmVuY2VGYWNldFR5cGVzW11cblx0XHRcdCkucmVkdWNlKFxuXHRcdFx0XHQoYWN0aW9uUmVkdWNlcjogQ29udmVydGVyQWN0aW9uW10sIHJlZmVyZW5jZUZhY2V0KSA9PlxuXHRcdFx0XHRcdGNyZWF0ZUZvcm1BY3Rpb25SZWR1Y2VyKGFjdGlvblJlZHVjZXIsIHJlZmVyZW5jZUZhY2V0LCBjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHRcdFx0W11cblx0XHRcdCk7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLlJlZmVyZW5jZUZhY2V0OlxuXHRcdFx0YWN0aW9ucyA9IGNyZWF0ZUZvcm1BY3Rpb25SZWR1Y2VyKFtdLCBmYWNldERlZmluaXRpb24sIGNvbnZlcnRlckNvbnRleHQpO1xuXHRcdFx0YnJlYWs7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdGJyZWFrO1xuXHR9XG5cdHJldHVybiBhZGRGb3JtTWVudUFjdGlvbnMoYWN0aW9ucywgZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KTtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgYnV0dG9uIHR5cGUgYmFzZWQgb24gQFVJLkVtcGhhc2l6ZWQgYW5ub3RhdGlvbi5cbiAqXG4gKiBAcGFyYW0gZW1waGFzaXplZCBFbXBoYXNpemVkIGFubm90YXRpb24gdmFsdWUuXG4gKiBAcmV0dXJucyBUaGUgYnV0dG9uIHR5cGUgb3IgcGF0aCBiYXNlZCBleHByZXNzaW9uLlxuICovXG5mdW5jdGlvbiBnZXRCdXR0b25UeXBlKGVtcGhhc2l6ZWQ6IEVtcGhhc2l6ZWQgfCB1bmRlZmluZWQpOiBCdXR0b25UeXBlIHtcblx0Ly8gRW1waGFzaXplZCBpcyBhIGJvb2xlYW4gc28gaWYgaXQncyBlcXVhbCB0byB0cnVlIHdlIHNob3cgdGhlIGJ1dHRvbiBhcyBHaG9zdCwgb3RoZXJ3aXNlIGFzIFRyYW5zcGFyZW50XG5cdGNvbnN0IGJ1dHRvblR5cGVDb25kaXRpb24gPSBlcXVhbChnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oZW1waGFzaXplZCksIHRydWUpO1xuXHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oaWZFbHNlKGJ1dHRvblR5cGVDb25kaXRpb24sIEJ1dHRvblR5cGUuR2hvc3QsIEJ1dHRvblR5cGUuVHJhbnNwYXJlbnQpKSBhcyBCdXR0b25UeXBlO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIHN1YnNlY3Rpb24gYmFzZWQgb24gRmFjZXRUeXBlcy5cbiAqXG4gKiBAcGFyYW0gZmFjZXREZWZpbml0aW9uXG4gKiBAcGFyYW0gZmFjZXRzVG9DcmVhdGVcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcGFyYW0gbGV2ZWxcbiAqIEBwYXJhbSBoYXNTaW5nbGVDb250ZW50XG4gKiBAcGFyYW0gaXNIZWFkZXJTZWN0aW9uXG4gKiBAcmV0dXJucyBBIHN1YnNlY3Rpb24gZGVmaW5pdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU3ViU2VjdGlvbihcblx0ZmFjZXREZWZpbml0aW9uOiBGYWNldFR5cGVzLFxuXHRmYWNldHNUb0NyZWF0ZTogRmFjZXRUeXBlc1tdLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRsZXZlbDogbnVtYmVyLFxuXHRoYXNTaW5nbGVDb250ZW50OiBib29sZWFuLFxuXHRpc0hlYWRlclNlY3Rpb24/OiBib29sZWFuXG4pOiBPYmplY3RQYWdlU3ViU2VjdGlvbiB7XG5cdGNvbnN0IHN1YlNlY3Rpb25JRCA9IGdldFN1YlNlY3Rpb25JRChmYWNldERlZmluaXRpb24pO1xuXHRjb25zdCBvSGlkZGVuQW5ub3RhdGlvbjogYW55ID0gZmFjZXREZWZpbml0aW9uLmFubm90YXRpb25zPy5VST8uSGlkZGVuO1xuXHRjb25zdCBpc1Zpc2libGUgPSBjb21waWxlRXhwcmVzc2lvbihub3QoZXF1YWwodHJ1ZSwgZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKG9IaWRkZW5Bbm5vdGF0aW9uKSkpKTtcblx0Y29uc3QgaXNEeW5hbWljRXhwcmVzc2lvbiA9XG5cdFx0aXNWaXNpYmxlICYmIHR5cGVvZiBpc1Zpc2libGUgPT09IFwic3RyaW5nXCIgJiYgaXNWaXNpYmxlLmluZGV4T2YoXCJ7PVwiKSA9PT0gMCAmJiBvSGlkZGVuQW5ub3RhdGlvbj8udHlwZSAhPT0gXCJQYXRoXCI7XG5cdGNvbnN0IGlzVmlzaWJsZUR5bmFtaWNFeHByZXNzaW9uID1cblx0XHRpc1Zpc2libGUgJiYgaXNEeW5hbWljRXhwcmVzc2lvbiA/IGlzVmlzaWJsZS5zdWJzdHJpbmcoaXNWaXNpYmxlLmluZGV4T2YoXCJ7PVwiKSArIDIsIGlzVmlzaWJsZS5sYXN0SW5kZXhPZihcIn1cIikpIDogZmFsc2U7XG5cdGNvbnN0IHRpdGxlID0gY29tcGlsZUV4cHJlc3Npb24oZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGZhY2V0RGVmaW5pdGlvbi5MYWJlbCkpO1xuXHRjb25zdCBzdWJTZWN0aW9uOiBCYXNlU3ViU2VjdGlvbiA9IHtcblx0XHRpZDogc3ViU2VjdGlvbklELFxuXHRcdGtleTogZ2V0U3ViU2VjdGlvbktleShmYWNldERlZmluaXRpb24sIHN1YlNlY3Rpb25JRCksXG5cdFx0dGl0bGU6IHRpdGxlLFxuXHRcdHR5cGU6IFN1YlNlY3Rpb25UeXBlLlVua25vd24sXG5cdFx0YW5ub3RhdGlvblBhdGg6IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aChmYWNldERlZmluaXRpb24uZnVsbHlRdWFsaWZpZWROYW1lKSxcblx0XHR2aXNpYmxlOiBpc1Zpc2libGUsXG5cdFx0aXNWaXNpYmlsaXR5RHluYW1pYzogaXNEeW5hbWljRXhwcmVzc2lvbixcblx0XHRsZXZlbDogbGV2ZWwsXG5cdFx0c2lkZUNvbnRlbnQ6IHVuZGVmaW5lZFxuXHR9O1xuXHRpZiAoaXNIZWFkZXJTZWN0aW9uKSB7XG5cdFx0c3ViU2VjdGlvbi5zdGFzaGVkID0gZ2V0U3Rhc2hlZFNldHRpbmdzRm9ySGVhZGVyRmFjZXQoZmFjZXREZWZpbml0aW9uLCBmYWNldERlZmluaXRpb24sIGNvbnZlcnRlckNvbnRleHQpO1xuXHRcdHN1YlNlY3Rpb24uZmxleFNldHRpbmdzID0ge1xuXHRcdFx0ZGVzaWdudGltZTogZ2V0RGVzaWduVGltZU1ldGFkYXRhU2V0dGluZ3NGb3JIZWFkZXJGYWNldChmYWNldERlZmluaXRpb24sIGZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dClcblx0XHR9O1xuXHR9XG5cdGxldCB1bnN1cHBvcnRlZFRleHQgPSBcIlwiO1xuXHRsZXZlbCsrO1xuXHRzd2l0Y2ggKGZhY2V0RGVmaW5pdGlvbi4kVHlwZSkge1xuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuQ29sbGVjdGlvbkZhY2V0OlxuXHRcdFx0Y29uc3QgZmFjZXRzID0gZmFjZXREZWZpbml0aW9uLkZhY2V0cztcblxuXHRcdFx0Ly8gRmlsdGVyIGZvciBhbGwgZmFjZXRzIG9mIHRoaXMgc3Vic2VjdGlvbiB0aGF0IGFyZSByZWZlcnJpbmcgdG8gYW4gYW5ub3RhdGlvbiBkZXNjcmliaW5nIGEgdmlzdWFsaXphdGlvbiAoZS5nLiB0YWJsZSBvciBjaGFydClcblx0XHRcdGNvbnN0IHZpc3VhbGl6YXRpb25GYWNldHMgPSBmYWNldHNcblx0XHRcdFx0Lm1hcCgoZmFjZXQsIGluZGV4KSA9PiAoeyBpbmRleCwgZmFjZXQgfSkpIC8vIFJlbWVtYmVyIHRoZSBpbmRleCBhc3NpZ25lZCB0byBlYWNoIGZhY2V0XG5cdFx0XHRcdC5maWx0ZXIoKHsgZmFjZXQgfSkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiB2aXN1YWxpemF0aW9uVGVybXMuaW5jbHVkZXMoKGZhY2V0IGFzIFJlZmVyZW5jZUZhY2V0KS5UYXJnZXQ/LiR0YXJnZXQ/LnRlcm0pO1xuXHRcdFx0XHR9KTtcblxuXHRcdFx0Ly8gRmlsdGVyIG91dCBhbGwgdmlzdWFsaXphdGlvbiBmYWNldHM7IFwidmlzdWFsaXphdGlvbkZhY2V0c1wiIGFuZCBcIm5vblZpc3VhbGl6YXRpb25GYWNldHNcIiBhcmUgZGlzam9pbnRcblx0XHRcdGNvbnN0IG5vblZpc3VhbGl6YXRpb25GYWNldHMgPSBmYWNldHMuZmlsdGVyKFxuXHRcdFx0XHQoZmFjZXQpID0+ICF2aXN1YWxpemF0aW9uRmFjZXRzLmZpbmQoKHZpc3VhbGl6YXRpb24pID0+IHZpc3VhbGl6YXRpb24uZmFjZXQgPT09IGZhY2V0KVxuXHRcdFx0KTtcblxuXHRcdFx0aWYgKHZpc3VhbGl6YXRpb25GYWNldHMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHQvLyBDb2xsZWN0aW9uRmFjZXRzIHdpdGggdmlzdWFsaXphdGlvbnMgbXVzdCBiZSBoYW5kbGVkIHNlcGFyYXRlbHkgYXMgdGhleSBjYW5ub3QgYmUgaW5jbHVkZWQgaW4gZm9ybXNcblx0XHRcdFx0Y29uc3QgdmlzdWFsaXphdGlvbkNvbnRlbnQ6IE9iamVjdFBhZ2VTdWJTZWN0aW9uW10gPSBbXTtcblx0XHRcdFx0Y29uc3QgZm9ybUNvbnRlbnQ6IE9iamVjdFBhZ2VTdWJTZWN0aW9uW10gPSBbXTtcblx0XHRcdFx0Y29uc3QgbWl4ZWRDb250ZW50OiBPYmplY3RQYWdlU3ViU2VjdGlvbltdID0gW107XG5cblx0XHRcdFx0Ly8gQ3JlYXRlIGVhY2ggdmlzdWFsaXphdGlvbiBmYWNldCBhcyBpZiBpdCB3YXMgaXRzIG93biBzdWJzZWN0aW9uICh2aWEgcmVjdXJzaW9uKSwgYW5kIGtlZXAgdGhlaXIgcmVsYXRpdmUgb3JkZXJpbmdcblx0XHRcdFx0Zm9yIChjb25zdCB7IGZhY2V0IH0gb2YgdmlzdWFsaXphdGlvbkZhY2V0cykge1xuXHRcdFx0XHRcdHZpc3VhbGl6YXRpb25Db250ZW50LnB1c2goY3JlYXRlU3ViU2VjdGlvbihmYWNldCwgW10sIGNvbnZlcnRlckNvbnRleHQsIGxldmVsLCBmYWNldHMubGVuZ3RoID09PSAxLCBpc0hlYWRlclNlY3Rpb24pKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChub25WaXN1YWxpemF0aW9uRmFjZXRzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHQvLyBUaGlzIHN1YnNlY3Rpb24gaW5jbHVkZXMgdmlzdWFsaXphdGlvbnMgYW5kIG90aGVyIGNvbnRlbnQsIHNvIGl0IGlzIGEgXCJNaXhlZFwiIHN1YnNlY3Rpb25cblx0XHRcdFx0XHRMb2cud2FybmluZyhcblx0XHRcdFx0XHRcdGBXYXJuaW5nOiBDb2xsZWN0aW9uRmFjZXQgJyR7ZmFjZXREZWZpbml0aW9uLklEfScgaW5jbHVkZXMgYSBjb21iaW5hdGlvbiBvZiBlaXRoZXIgYSBjaGFydCBvciBhIHRhYmxlIGFuZCBvdGhlciBjb250ZW50LiBUaGlzIGNhbiBsZWFkIHRvIHJlbmRlcmluZyBpc3N1ZXMuIENvbnNpZGVyIG1vdmluZyB0aGUgY2hhcnQgb3IgdGFibGUgaW50byBhIHNlcGFyYXRlIENvbGxlY3Rpb25GYWNldC5gXG5cdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdGZhY2V0RGVmaW5pdGlvbi5GYWNldHMgPSBub25WaXN1YWxpemF0aW9uRmFjZXRzO1xuXHRcdFx0XHRcdC8vIENyZWF0ZSBhIGpvaW5lZCBmb3JtIG9mIGFsbCBmYWNldHMgdGhhdCBhcmUgbm90IHJlZmVycmluZyB0byB2aXN1YWxpemF0aW9uc1xuXHRcdFx0XHRcdGZvcm1Db250ZW50LnB1c2goY3JlYXRlU3ViU2VjdGlvbihmYWNldERlZmluaXRpb24sIFtdLCBjb252ZXJ0ZXJDb250ZXh0LCBsZXZlbCwgaGFzU2luZ2xlQ29udGVudCwgaXNIZWFkZXJTZWN0aW9uKSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBNZXJnZSB0aGUgdmlzdWFsaXphdGlvbiBjb250ZW50IHdpdGggdGhlIGZvcm0gY29udGVudFxuXHRcdFx0XHRpZiAodmlzdWFsaXphdGlvbkZhY2V0cy5maW5kKCh7IGluZGV4IH0pID0+IGluZGV4ID09PSAwKSkge1xuXHRcdFx0XHRcdC8vIElmIHRoZSBmaXJzdCBmYWNldCBpcyBhIHZpc3VhbGl6YXRpb24sIGRpc3BsYXkgdGhlIHZpc3VhbGl6YXRpb25zIGZpcnN0XG5cdFx0XHRcdFx0bWl4ZWRDb250ZW50LnB1c2goLi4udmlzdWFsaXphdGlvbkNvbnRlbnQpO1xuXHRcdFx0XHRcdG1peGVkQ29udGVudC5wdXNoKC4uLmZvcm1Db250ZW50KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBPdGhlcndpc2UsIGRpc3BsYXkgdGhlIGZvcm0gZmlyc3Rcblx0XHRcdFx0XHRtaXhlZENvbnRlbnQucHVzaCguLi5mb3JtQ29udGVudCk7XG5cdFx0XHRcdFx0bWl4ZWRDb250ZW50LnB1c2goLi4udmlzdWFsaXphdGlvbkNvbnRlbnQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgbWl4ZWRTdWJTZWN0aW9uOiBNaXhlZFN1YlNlY3Rpb24gPSB7XG5cdFx0XHRcdFx0Li4uc3ViU2VjdGlvbixcblx0XHRcdFx0XHR0eXBlOiBTdWJTZWN0aW9uVHlwZS5NaXhlZCxcblx0XHRcdFx0XHRsZXZlbDogbGV2ZWwsXG5cdFx0XHRcdFx0Y29udGVudDogbWl4ZWRDb250ZW50XG5cdFx0XHRcdH07XG5cdFx0XHRcdHJldHVybiBtaXhlZFN1YlNlY3Rpb247XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBUaGlzIENvbGxlY3Rpb25GYWNldCBvbmx5IGluY2x1ZGVzIGNvbnRlbnQgdGhhdCBjYW4gYmUgcmVuZGVyZWQgaW4gYSBtZXJnZWQgZm9ybVxuXHRcdFx0XHRjb25zdCBmYWNldEFjdGlvbnMgPSBnZXRGYWNldEFjdGlvbnMoZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHRcdFx0XHRmb3JtQ29sbGVjdGlvblN1YlNlY3Rpb246IEZvcm1TdWJTZWN0aW9uID0ge1xuXHRcdFx0XHRcdFx0Li4uc3ViU2VjdGlvbixcblx0XHRcdFx0XHRcdHR5cGU6IFN1YlNlY3Rpb25UeXBlLkZvcm0sXG5cdFx0XHRcdFx0XHRmb3JtRGVmaW5pdGlvbjogY3JlYXRlRm9ybURlZmluaXRpb24oZmFjZXREZWZpbml0aW9uLCBpc1Zpc2libGUsIGNvbnZlcnRlckNvbnRleHQsIGZhY2V0QWN0aW9ucy5hY3Rpb25zKSxcblx0XHRcdFx0XHRcdGxldmVsOiBsZXZlbCxcblx0XHRcdFx0XHRcdGFjdGlvbnM6IGZhY2V0QWN0aW9ucy5hY3Rpb25zLmZpbHRlcigoYWN0aW9uKSA9PiBhY3Rpb24uZmFjZXROYW1lID09PSB1bmRlZmluZWQpLFxuXHRcdFx0XHRcdFx0Y29tbWFuZEFjdGlvbnM6IGZhY2V0QWN0aW9ucy5jb21tYW5kQWN0aW9uc1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdHJldHVybiBmb3JtQ29sbGVjdGlvblN1YlNlY3Rpb247XG5cdFx0XHR9XG5cdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5SZWZlcmVuY2VGYWNldDpcblx0XHRcdGlmICghZmFjZXREZWZpbml0aW9uLlRhcmdldC4kdGFyZ2V0KSB7XG5cdFx0XHRcdHVuc3VwcG9ydGVkVGV4dCA9IGBVbmFibGUgdG8gZmluZCBhbm5vdGF0aW9uUGF0aCAke2ZhY2V0RGVmaW5pdGlvbi5UYXJnZXQudmFsdWV9YDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHN3aXRjaCAoZmFjZXREZWZpbml0aW9uLlRhcmdldC4kdGFyZ2V0LnRlcm0pIHtcblx0XHRcdFx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLkxpbmVJdGVtOlxuXHRcdFx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuQ2hhcnQ6XG5cdFx0XHRcdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5QcmVzZW50YXRpb25WYXJpYW50OlxuXHRcdFx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudDpcblx0XHRcdFx0XHRcdGNvbnN0IHByZXNlbnRhdGlvbiA9IGdldERhdGFWaXN1YWxpemF0aW9uQ29uZmlndXJhdGlvbihcblx0XHRcdFx0XHRcdFx0ZmFjZXREZWZpbml0aW9uLlRhcmdldC52YWx1ZSxcblx0XHRcdFx0XHRcdFx0Z2V0Q29uZGVuc2VkVGFibGVMYXlvdXRDb21wbGlhbmNlKGZhY2V0RGVmaW5pdGlvbiwgZmFjZXRzVG9DcmVhdGUsIGNvbnZlcnRlckNvbnRleHQpLFxuXHRcdFx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0LFxuXHRcdFx0XHRcdFx0XHR1bmRlZmluZWQsXG5cdFx0XHRcdFx0XHRcdGlzSGVhZGVyU2VjdGlvblxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdGNvbnN0IHN1YlNlY3Rpb25UaXRsZTogc3RyaW5nID0gc3ViU2VjdGlvbi50aXRsZSA/IHN1YlNlY3Rpb24udGl0bGUgOiBcIlwiO1xuXHRcdFx0XHRcdFx0Y29uc3QgY29udHJvbFRpdGxlID1cblx0XHRcdFx0XHRcdFx0KHByZXNlbnRhdGlvbi52aXN1YWxpemF0aW9uc1swXSBhcyBhbnkpPy5hbm5vdGF0aW9uPy50aXRsZSB8fCAocHJlc2VudGF0aW9uLnZpc3VhbGl6YXRpb25zWzBdIGFzIGFueSk/LnRpdGxlO1xuXHRcdFx0XHRcdFx0Y29uc3Qgc2hvd1RpdGxlID0gZ2V0VGl0bGVWaXNpYmlsaXR5KGNvbnRyb2xUaXRsZSwgc3ViU2VjdGlvblRpdGxlLCBoYXNTaW5nbGVDb250ZW50KTtcblx0XHRcdFx0XHRcdGNvbnN0IHRpdGxlVmlzaWJsZUV4cHJlc3Npb24gPSBpc1Zpc2libGUgJiYgdGl0bGUgIT09IFwidW5kZWZpbmVkXCIgJiYgKHRpdGxlID8gaXNWaXNpYmxlIDogZmFsc2UpO1xuXHRcdFx0XHRcdFx0Y29uc3QgZGF0YVZpc3VhbGl6YXRpb25TdWJTZWN0aW9uOiBEYXRhVmlzdWFsaXphdGlvblN1YlNlY3Rpb24gPSB7XG5cdFx0XHRcdFx0XHRcdC4uLnN1YlNlY3Rpb24sXG5cdFx0XHRcdFx0XHRcdHR5cGU6IFN1YlNlY3Rpb25UeXBlLkRhdGFWaXN1YWxpemF0aW9uLFxuXHRcdFx0XHRcdFx0XHRsZXZlbDogbGV2ZWwsXG5cdFx0XHRcdFx0XHRcdHByZXNlbnRhdGlvbjogcHJlc2VudGF0aW9uLFxuXHRcdFx0XHRcdFx0XHRzaG93VGl0bGU6IHNob3dUaXRsZSxcblx0XHRcdFx0XHRcdFx0dGl0bGVWaXNpYmxlOiBpc0R5bmFtaWNFeHByZXNzaW9uXG5cdFx0XHRcdFx0XHRcdFx0PyBgez0gKCR7aXNWaXNpYmxlRHluYW1pY0V4cHJlc3Npb259KSAmJiAoJyR7dGl0bGV9JyAhPT0ndW5kZWZpbmVkJykgJiYgKCR7c2hvd1RpdGxlfSA/IHRydWUgOiBmYWxzZSkgfWBcblx0XHRcdFx0XHRcdFx0XHQ6IHRpdGxlVmlzaWJsZUV4cHJlc3Npb25cblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRyZXR1cm4gZGF0YVZpc3VhbGl6YXRpb25TdWJTZWN0aW9uO1xuXG5cdFx0XHRcdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5GaWVsZEdyb3VwOlxuXHRcdFx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuSWRlbnRpZmljYXRpb246XG5cdFx0XHRcdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5EYXRhUG9pbnQ6XG5cdFx0XHRcdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5TdGF0dXNJbmZvOlxuXHRcdFx0XHRcdGNhc2UgQ29tbXVuaWNhdGlvbkFubm90YXRpb25UZXJtcy5Db250YWN0OlxuXHRcdFx0XHRcdFx0Ly8gQWxsIHRob3NlIGVsZW1lbnQgYmVsb25nIHRvIGEgZnJvbSBmYWNldFxuXHRcdFx0XHRcdFx0Y29uc3QgZmFjZXRBY3Rpb25zID0gZ2V0RmFjZXRBY3Rpb25zKGZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dCksXG5cdFx0XHRcdFx0XHRcdGZvcm1FbGVtZW50U3ViU2VjdGlvbjogRm9ybVN1YlNlY3Rpb24gPSB7XG5cdFx0XHRcdFx0XHRcdFx0Li4uc3ViU2VjdGlvbixcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiBTdWJTZWN0aW9uVHlwZS5Gb3JtLFxuXHRcdFx0XHRcdFx0XHRcdGxldmVsOiBsZXZlbCxcblx0XHRcdFx0XHRcdFx0XHRmb3JtRGVmaW5pdGlvbjogY3JlYXRlRm9ybURlZmluaXRpb24oZmFjZXREZWZpbml0aW9uLCBpc1Zpc2libGUsIGNvbnZlcnRlckNvbnRleHQsIGZhY2V0QWN0aW9ucy5hY3Rpb25zKSxcblx0XHRcdFx0XHRcdFx0XHRhY3Rpb25zOiBmYWNldEFjdGlvbnMuYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gYWN0aW9uLmZhY2V0TmFtZSA9PT0gdW5kZWZpbmVkKSxcblx0XHRcdFx0XHRcdFx0XHRjb21tYW5kQWN0aW9uczogZmFjZXRBY3Rpb25zLmNvbW1hbmRBY3Rpb25zXG5cdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRyZXR1cm4gZm9ybUVsZW1lbnRTdWJTZWN0aW9uO1xuXG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdHVuc3VwcG9ydGVkVGV4dCA9IGBGb3IgJHtmYWNldERlZmluaXRpb24uVGFyZ2V0LiR0YXJnZXQudGVybX0gRnJhZ21lbnRgO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuUmVmZXJlbmNlVVJMRmFjZXQ6XG5cdFx0XHR1bnN1cHBvcnRlZFRleHQgPSBcIkZvciBSZWZlcmVuY2UgVVJMIEZhY2V0XCI7XG5cdFx0XHRicmVhaztcblx0XHRkZWZhdWx0OlxuXHRcdFx0YnJlYWs7XG5cdH1cblx0Ly8gSWYgd2UgcmVhY2ggaGVyZSB3ZSBlbmRlZCB1cCB3aXRoIGFuIHVuc3VwcG9ydGVkIFN1YlNlY3Rpb24gdHlwZVxuXHRjb25zdCB1bnN1cHBvcnRlZFN1YlNlY3Rpb246IFVuc3VwcG9ydGVkU3ViU2VjdGlvbiA9IHtcblx0XHQuLi5zdWJTZWN0aW9uLFxuXHRcdHRleHQ6IHVuc3VwcG9ydGVkVGV4dFxuXHR9O1xuXHRyZXR1cm4gdW5zdXBwb3J0ZWRTdWJTZWN0aW9uO1xufVxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0byBoaWRlIG9yIHNob3cgc3Vic2VjdGlvbiB0aXRsZVxuICpcbiAqIEBwYXJhbSBjb250cm9sVGl0bGVcbiAqIEBwYXJhbSBzZWN0aW9uVGl0bGVcbiAqIEBwYXJhbSBoYXNTaW5nbGVDb250ZW50XG4gKiBAcmV0dXJucyBCb29sZWFuIHZhbHVlICBvciBleHByZXNzaW9uIGZvciBzaG93VGl0bGVcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGl0bGVWaXNpYmlsaXR5KFxuXHRjb250cm9sVGl0bGU6IHN0cmluZyxcblx0c3ViU2VjdGlvblRpdGxlOiBzdHJpbmcsXG5cdGhhc1NpbmdsZUNvbnRlbnQ6IGJvb2xlYW5cbik6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHtcblx0Ly8gdmlzaWJsZSBzaGFsbCBiZSB0cnVlIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBjb250ZW50IG9yIGlmIHRoZSBjb250cm9sIGFuZCBzdWJzZWN0aW9uIHRpdGxlIGFyZSBkaWZmZXJlbnRcblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKFxuXHRcdG9yKG5vdChoYXNTaW5nbGVDb250ZW50KSwgbm90RXF1YWwocmVzb2x2ZUJpbmRpbmdTdHJpbmcoY29udHJvbFRpdGxlKSwgcmVzb2x2ZUJpbmRpbmdTdHJpbmcoc3ViU2VjdGlvblRpdGxlKSkpXG5cdCk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUZvcm1BY3Rpb25SZWR1Y2VyKFxuXHRhY3Rpb25zOiBDb252ZXJ0ZXJBY3Rpb25bXSxcblx0ZmFjZXREZWZpbml0aW9uOiBSZWZlcmVuY2VGYWNldFR5cGVzLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0XG4pOiBDb252ZXJ0ZXJBY3Rpb25bXSB7XG5cdGNvbnN0IHJlZmVyZW5jZVRhcmdldCA9IGZhY2V0RGVmaW5pdGlvbi5UYXJnZXQuJHRhcmdldDtcblx0Y29uc3QgdGFyZ2V0VmFsdWUgPSBmYWNldERlZmluaXRpb24uVGFyZ2V0LnZhbHVlO1xuXHRsZXQgbWFuaWZlc3RBY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21BY3Rpb24+ID0ge307XG5cdGxldCBkYXRhRmllbGRDb2xsZWN0aW9uOiBEYXRhRmllbGRBYnN0cmFjdFR5cGVzW10gPSBbXTtcblx0bGV0IFtuYXZpZ2F0aW9uUHJvcGVydHlQYXRoXTogYW55ID0gdGFyZ2V0VmFsdWUuc3BsaXQoXCJAXCIpO1xuXHRpZiAobmF2aWdhdGlvblByb3BlcnR5UGF0aC5sZW5ndGggPiAwKSB7XG5cdFx0aWYgKG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgubGFzdEluZGV4T2YoXCIvXCIpID09PSBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLmxlbmd0aCAtIDEpIHtcblx0XHRcdG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGggPSBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLnN1YnN0cigwLCBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLmxlbmd0aCAtIDEpO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRuYXZpZ2F0aW9uUHJvcGVydHlQYXRoID0gdW5kZWZpbmVkO1xuXHR9XG5cblx0aWYgKHJlZmVyZW5jZVRhcmdldCkge1xuXHRcdHN3aXRjaCAocmVmZXJlbmNlVGFyZ2V0LnRlcm0pIHtcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuRmllbGRHcm91cDpcblx0XHRcdFx0ZGF0YUZpZWxkQ29sbGVjdGlvbiA9IChyZWZlcmVuY2VUYXJnZXQgYXMgRmllbGRHcm91cCkuRGF0YTtcblx0XHRcdFx0bWFuaWZlc3RBY3Rpb25zID0gZ2V0QWN0aW9uc0Zyb21NYW5pZmVzdChcblx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0Q29udHJvbENvbmZpZ3VyYXRpb24ocmVmZXJlbmNlVGFyZ2V0KS5hY3Rpb25zLFxuXHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQsXG5cdFx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdFx0XHR1bmRlZmluZWQsXG5cdFx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHRcdGZhY2V0RGVmaW5pdGlvbi5mdWxseVF1YWxpZmllZE5hbWVcblx0XHRcdFx0KS5hY3Rpb25zO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuSWRlbnRpZmljYXRpb246XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLlN0YXR1c0luZm86XG5cdFx0XHRcdGlmIChyZWZlcmVuY2VUYXJnZXQucXVhbGlmaWVyKSB7XG5cdFx0XHRcdFx0ZGF0YUZpZWxkQ29sbGVjdGlvbiA9IHJlZmVyZW5jZVRhcmdldDtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdGFjdGlvbnMgPSBkYXRhRmllbGRDb2xsZWN0aW9uLnJlZHVjZSgoYWN0aW9uUmVkdWNlciwgZGF0YUZpZWxkOiBEYXRhRmllbGRBYnN0cmFjdFR5cGVzKSA9PiB7XG5cdFx0c3dpdGNoIChkYXRhRmllbGQuJFR5cGUpIHtcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uOlxuXHRcdFx0XHRpZiAoZGF0YUZpZWxkLlJlcXVpcmVzQ29udGV4dD8udmFsdWVPZigpID09PSB0cnVlKSB7XG5cdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dFxuXHRcdFx0XHRcdFx0LmdldERpYWdub3N0aWNzKClcblx0XHRcdFx0XHRcdC5hZGRJc3N1ZShJc3N1ZUNhdGVnb3J5LkFubm90YXRpb24sIElzc3VlU2V2ZXJpdHkuTG93LCBJc3N1ZVR5cGUuTUFMRk9STUVEX0RBVEFGSUVMRF9GT1JfSUJOLlJFUVVJUkVTQ09OVEVYVCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGRhdGFGaWVsZC5JbmxpbmU/LnZhbHVlT2YoKSA9PT0gdHJ1ZSkge1xuXHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHRcblx0XHRcdFx0XHRcdC5nZXREaWFnbm9zdGljcygpXG5cdFx0XHRcdFx0XHQuYWRkSXNzdWUoSXNzdWVDYXRlZ29yeS5Bbm5vdGF0aW9uLCBJc3N1ZVNldmVyaXR5LkxvdywgSXNzdWVUeXBlLk1BTEZPUk1FRF9EQVRBRklFTERfRk9SX0lCTi5JTkxJTkUpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChkYXRhRmllbGQuRGV0ZXJtaW5pbmc/LnZhbHVlT2YoKSA9PT0gdHJ1ZSkge1xuXHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHRcblx0XHRcdFx0XHRcdC5nZXREaWFnbm9zdGljcygpXG5cdFx0XHRcdFx0XHQuYWRkSXNzdWUoSXNzdWVDYXRlZ29yeS5Bbm5vdGF0aW9uLCBJc3N1ZVNldmVyaXR5LkxvdywgSXNzdWVUeXBlLk1BTEZPUk1FRF9EQVRBRklFTERfRk9SX0lCTi5ERVRFUk1JTklORyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgbU5hdmlnYXRpb25QYXJhbWV0ZXJzOiBhbnkgPSB7fTtcblx0XHRcdFx0aWYgKGRhdGFGaWVsZC5NYXBwaW5nKSB7XG5cdFx0XHRcdFx0bU5hdmlnYXRpb25QYXJhbWV0ZXJzLnNlbWFudGljT2JqZWN0TWFwcGluZyA9IGdldFNlbWFudGljT2JqZWN0TWFwcGluZyhkYXRhRmllbGQuTWFwcGluZyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YWN0aW9uUmVkdWNlci5wdXNoKHtcblx0XHRcdFx0XHR0eXBlOiBBY3Rpb25UeXBlLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbixcblx0XHRcdFx0XHRpZDogZ2V0Rm9ybUlEKGZhY2V0RGVmaW5pdGlvbiwgZGF0YUZpZWxkKSxcblx0XHRcdFx0XHRrZXk6IEtleUhlbHBlci5nZW5lcmF0ZUtleUZyb21EYXRhRmllbGQoZGF0YUZpZWxkKSxcblx0XHRcdFx0XHR0ZXh0OiBkYXRhRmllbGQuTGFiZWw/LnRvU3RyaW5nKCksXG5cdFx0XHRcdFx0YW5ub3RhdGlvblBhdGg6IFwiXCIsXG5cdFx0XHRcdFx0ZW5hYmxlZDpcblx0XHRcdFx0XHRcdGRhdGFGaWVsZC5OYXZpZ2F0aW9uQXZhaWxhYmxlICE9PSB1bmRlZmluZWRcblx0XHRcdFx0XHRcdFx0PyBjb21waWxlRXhwcmVzc2lvbihlcXVhbChnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oZGF0YUZpZWxkLk5hdmlnYXRpb25BdmFpbGFibGU/LnZhbHVlT2YoKSksIHRydWUpKVxuXHRcdFx0XHRcdFx0XHQ6IFwidHJ1ZVwiLFxuXHRcdFx0XHRcdHZpc2libGU6IGNvbXBpbGVFeHByZXNzaW9uKG5vdChlcXVhbChnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oZGF0YUZpZWxkLmFubm90YXRpb25zPy5VST8uSGlkZGVuPy52YWx1ZU9mKCkpLCB0cnVlKSkpLFxuXHRcdFx0XHRcdGJ1dHRvblR5cGU6IGdldEJ1dHRvblR5cGUoZGF0YUZpZWxkLmFubm90YXRpb25zPy5VST8uRW1waGFzaXplZCksXG5cdFx0XHRcdFx0cHJlc3M6IGNvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0XHRcdFx0Zm4oXCIuX2ludGVudEJhc2VkTmF2aWdhdGlvbi5uYXZpZ2F0ZVwiLCBbXG5cdFx0XHRcdFx0XHRcdGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihkYXRhRmllbGQuU2VtYW50aWNPYmplY3QpLFxuXHRcdFx0XHRcdFx0XHRnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oZGF0YUZpZWxkLkFjdGlvbiksXG5cdFx0XHRcdFx0XHRcdG1OYXZpZ2F0aW9uUGFyYW1ldGVyc1xuXHRcdFx0XHRcdFx0XSlcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGN1c3RvbURhdGE6IGNvbXBpbGVFeHByZXNzaW9uKHtcblx0XHRcdFx0XHRcdHNlbWFudGljT2JqZWN0OiBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oZGF0YUZpZWxkLlNlbWFudGljT2JqZWN0KSxcblx0XHRcdFx0XHRcdGFjdGlvbjogZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGRhdGFGaWVsZC5BY3Rpb24pXG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JBY3Rpb246XG5cdFx0XHRcdGNvbnN0IGZvcm1NYW5pZmVzdEFjdGlvbnNDb25maWd1cmF0aW9uOiBhbnkgPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0Q29udHJvbENvbmZpZ3VyYXRpb24ocmVmZXJlbmNlVGFyZ2V0KS5hY3Rpb25zO1xuXHRcdFx0XHRjb25zdCBrZXk6IHN0cmluZyA9IEtleUhlbHBlci5nZW5lcmF0ZUtleUZyb21EYXRhRmllbGQoZGF0YUZpZWxkKTtcblx0XHRcdFx0YWN0aW9uUmVkdWNlci5wdXNoKHtcblx0XHRcdFx0XHR0eXBlOiBBY3Rpb25UeXBlLkRhdGFGaWVsZEZvckFjdGlvbixcblx0XHRcdFx0XHRpZDogZ2V0Rm9ybUlEKGZhY2V0RGVmaW5pdGlvbiwgZGF0YUZpZWxkKSxcblx0XHRcdFx0XHRrZXk6IGtleSxcblx0XHRcdFx0XHR0ZXh0OiBkYXRhRmllbGQuTGFiZWw/LnRvU3RyaW5nKCksXG5cdFx0XHRcdFx0YW5ub3RhdGlvblBhdGg6IFwiXCIsXG5cdFx0XHRcdFx0ZW5hYmxlZDogZ2V0RW5hYmxlZEZvckFubm90YXRpb25BY3Rpb24oY29udmVydGVyQ29udGV4dCwgZGF0YUZpZWxkLkFjdGlvblRhcmdldCksXG5cdFx0XHRcdFx0YmluZGluZzogbmF2aWdhdGlvblByb3BlcnR5UGF0aCA/IGB7ICdwYXRoJyA6ICcke25hdmlnYXRpb25Qcm9wZXJ0eVBhdGh9J31gIDogdW5kZWZpbmVkLFxuXHRcdFx0XHRcdHZpc2libGU6IGNvbXBpbGVFeHByZXNzaW9uKG5vdChlcXVhbChnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oZGF0YUZpZWxkLmFubm90YXRpb25zPy5VST8uSGlkZGVuPy52YWx1ZU9mKCkpLCB0cnVlKSkpLFxuXHRcdFx0XHRcdHJlcXVpcmVzRGlhbG9nOiBpc0RpYWxvZyhkYXRhRmllbGQuQWN0aW9uVGFyZ2V0KSxcblx0XHRcdFx0XHRidXR0b25UeXBlOiBnZXRCdXR0b25UeXBlKGRhdGFGaWVsZC5hbm5vdGF0aW9ucz8uVUk/LkVtcGhhc2l6ZWQpLFxuXHRcdFx0XHRcdHByZXNzOiBjb21waWxlRXhwcmVzc2lvbihcblx0XHRcdFx0XHRcdGZuKFxuXHRcdFx0XHRcdFx0XHRcImludm9rZUFjdGlvblwiLFxuXHRcdFx0XHRcdFx0XHRbXG5cdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkLkFjdGlvbixcblx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb250ZXh0czogZm4oXCJnZXRCaW5kaW5nQ29udGV4dFwiLCBbXSwgcGF0aEluTW9kZWwoXCJcIiwgXCIkc291cmNlXCIpKSxcblx0XHRcdFx0XHRcdFx0XHRcdGludm9jYXRpb25Hcm91cGluZzogKGRhdGFGaWVsZC5JbnZvY2F0aW9uR3JvdXBpbmcgPT09IFwiVUkuT3BlcmF0aW9uR3JvdXBpbmdUeXBlL0NoYW5nZVNldFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD8gXCJDaGFuZ2VTZXRcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ6IFwiSXNvbGF0ZWRcIikgYXMgT3BlcmF0aW9uR3JvdXBpbmdUeXBlLFxuXHRcdFx0XHRcdFx0XHRcdFx0bGFiZWw6IGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihkYXRhRmllbGQuTGFiZWwpLFxuXHRcdFx0XHRcdFx0XHRcdFx0bW9kZWw6IGZuKFwiZ2V0TW9kZWxcIiwgW10sIHBhdGhJbk1vZGVsKFwiL1wiLCBcIiRzb3VyY2VcIikpLFxuXHRcdFx0XHRcdFx0XHRcdFx0aXNOYXZpZ2FibGU6IGlzQWN0aW9uTmF2aWdhYmxlKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmb3JtTWFuaWZlc3RBY3Rpb25zQ29uZmlndXJhdGlvbiAmJiBmb3JtTWFuaWZlc3RBY3Rpb25zQ29uZmlndXJhdGlvbltrZXldXG5cdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdFx0XHRyZWYoXCIuZWRpdEZsb3dcIilcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGZhY2V0TmFtZTogZGF0YUZpZWxkLklubGluZSA/IGZhY2V0RGVmaW5pdGlvbi5mdWxseVF1YWxpZmllZE5hbWUgOiB1bmRlZmluZWRcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdHJldHVybiBhY3Rpb25SZWR1Y2VyO1xuXHR9LCBhY3Rpb25zKTtcblx0Ly8gT3ZlcndyaXRpbmcgb2YgYWN0aW9ucyBoYXBwZW5zIGluIGFkZEZvcm1NZW51QWN0aW9uc1xuXHRyZXR1cm4gaW5zZXJ0Q3VzdG9tRWxlbWVudHMoYWN0aW9ucywgbWFuaWZlc3RBY3Rpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGlhbG9nKGFjdGlvbkRlZmluaXRpb246IGFueSB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG5cdGlmIChhY3Rpb25EZWZpbml0aW9uKSB7XG5cdFx0Y29uc3QgYkNyaXRpY2FsID0gYWN0aW9uRGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uQ29tbW9uPy5Jc0FjdGlvbkNyaXRpY2FsO1xuXHRcdGlmIChhY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMubGVuZ3RoID4gMSB8fCBiQ3JpdGljYWwpIHtcblx0XHRcdHJldHVybiBcIkRpYWxvZ1wiO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gXCJOb25lXCI7XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBcIk5vbmVcIjtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ3VzdG9tU3ViU2VjdGlvbnMoXG5cdG1hbmlmZXN0U3ViU2VjdGlvbnM6IFJlY29yZDxzdHJpbmcsIE1hbmlmZXN0U3ViU2VjdGlvbj4sXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHRcbik6IFJlY29yZDxzdHJpbmcsIEN1c3RvbU9iamVjdFBhZ2VTdWJTZWN0aW9uPiB7XG5cdGNvbnN0IHN1YlNlY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21PYmplY3RQYWdlU3ViU2VjdGlvbj4gPSB7fTtcblx0T2JqZWN0LmtleXMobWFuaWZlc3RTdWJTZWN0aW9ucykuZm9yRWFjaChcblx0XHQoc3ViU2VjdGlvbktleSkgPT5cblx0XHRcdChzdWJTZWN0aW9uc1tzdWJTZWN0aW9uS2V5XSA9IGNyZWF0ZUN1c3RvbVN1YlNlY3Rpb24obWFuaWZlc3RTdWJTZWN0aW9uc1tzdWJTZWN0aW9uS2V5XSwgc3ViU2VjdGlvbktleSwgY29udmVydGVyQ29udGV4dCkpXG5cdCk7XG5cdHJldHVybiBzdWJTZWN0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUN1c3RvbVN1YlNlY3Rpb24oXG5cdG1hbmlmZXN0U3ViU2VjdGlvbjogTWFuaWZlc3RTdWJTZWN0aW9uLFxuXHRzdWJTZWN0aW9uS2V5OiBzdHJpbmcsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHRcbik6IEN1c3RvbU9iamVjdFBhZ2VTdWJTZWN0aW9uIHtcblx0Y29uc3Qgc2lkZUNvbnRlbnQ6IFNpZGVDb250ZW50RGVmIHwgdW5kZWZpbmVkID0gbWFuaWZlc3RTdWJTZWN0aW9uLnNpZGVDb250ZW50XG5cdFx0PyB7XG5cdFx0XHRcdHRlbXBsYXRlOiBtYW5pZmVzdFN1YlNlY3Rpb24uc2lkZUNvbnRlbnQudGVtcGxhdGUsXG5cdFx0XHRcdGlkOiBnZXRTaWRlQ29udGVudElEKHN1YlNlY3Rpb25LZXkpLFxuXHRcdFx0XHR2aXNpYmxlOiBmYWxzZSxcblx0XHRcdFx0ZXF1YWxTcGxpdDogbWFuaWZlc3RTdWJTZWN0aW9uLnNpZGVDb250ZW50LmVxdWFsU3BsaXRcblx0XHQgIH1cblx0XHQ6IHVuZGVmaW5lZDtcblx0bGV0IHBvc2l0aW9uID0gbWFuaWZlc3RTdWJTZWN0aW9uLnBvc2l0aW9uO1xuXHRpZiAoIXBvc2l0aW9uKSB7XG5cdFx0cG9zaXRpb24gPSB7XG5cdFx0XHRwbGFjZW1lbnQ6IFBsYWNlbWVudC5BZnRlclxuXHRcdH07XG5cdH1cblx0Y29uc3QgaXNWaXNpYmxlID0gbWFuaWZlc3RTdWJTZWN0aW9uLnZpc2libGUgIT09IHVuZGVmaW5lZCA/IG1hbmlmZXN0U3ViU2VjdGlvbi52aXNpYmxlIDogdHJ1ZTtcblx0Y29uc3QgaXNEeW5hbWljRXhwcmVzc2lvbiA9IGlzVmlzaWJsZSAmJiB0eXBlb2YgaXNWaXNpYmxlID09PSBcInN0cmluZ1wiICYmIGlzVmlzaWJsZS5pbmRleE9mKFwiez1cIikgPT09IDA7XG5cdGNvbnN0IG1hbmlmZXN0QWN0aW9ucyA9IGdldEFjdGlvbnNGcm9tTWFuaWZlc3QobWFuaWZlc3RTdWJTZWN0aW9uLmFjdGlvbnMsIGNvbnZlcnRlckNvbnRleHQpO1xuXHRjb25zdCBzdWJTZWN0aW9uRGVmaW5pdGlvbiA9IHtcblx0XHR0eXBlOiBTdWJTZWN0aW9uVHlwZS5Vbmtub3duLFxuXHRcdGlkOiBtYW5pZmVzdFN1YlNlY3Rpb24uaWQgfHwgZ2V0Q3VzdG9tU3ViU2VjdGlvbklEKHN1YlNlY3Rpb25LZXkpLFxuXHRcdGFjdGlvbnM6IG1hbmlmZXN0QWN0aW9ucy5hY3Rpb25zLFxuXHRcdGtleTogc3ViU2VjdGlvbktleSxcblx0XHR0aXRsZTogbWFuaWZlc3RTdWJTZWN0aW9uLnRpdGxlLFxuXHRcdGxldmVsOiAxLFxuXHRcdHBvc2l0aW9uOiBwb3NpdGlvbixcblx0XHR2aXNpYmxlOiBtYW5pZmVzdFN1YlNlY3Rpb24udmlzaWJsZSAhPT0gdW5kZWZpbmVkID8gbWFuaWZlc3RTdWJTZWN0aW9uLnZpc2libGUgOiB0cnVlLFxuXHRcdHNpZGVDb250ZW50OiBzaWRlQ29udGVudCxcblx0XHRpc1Zpc2liaWxpdHlEeW5hbWljOiBpc0R5bmFtaWNFeHByZXNzaW9uXG5cdH07XG5cdGlmIChtYW5pZmVzdFN1YlNlY3Rpb24udGVtcGxhdGUgfHwgbWFuaWZlc3RTdWJTZWN0aW9uLm5hbWUpIHtcblx0XHRzdWJTZWN0aW9uRGVmaW5pdGlvbi50eXBlID0gU3ViU2VjdGlvblR5cGUuWE1MRnJhZ21lbnQ7XG5cdFx0KHN1YlNlY3Rpb25EZWZpbml0aW9uIGFzIHVua25vd24gYXMgWE1MRnJhZ21lbnRTdWJTZWN0aW9uKS50ZW1wbGF0ZSA9IG1hbmlmZXN0U3ViU2VjdGlvbi50ZW1wbGF0ZSB8fCBtYW5pZmVzdFN1YlNlY3Rpb24ubmFtZSB8fCBcIlwiO1xuXHR9IGVsc2Uge1xuXHRcdHN1YlNlY3Rpb25EZWZpbml0aW9uLnR5cGUgPSBTdWJTZWN0aW9uVHlwZS5QbGFjZWhvbGRlcjtcblx0fVxuXHRyZXR1cm4gc3ViU2VjdGlvbkRlZmluaXRpb24gYXMgQ3VzdG9tT2JqZWN0UGFnZVN1YlNlY3Rpb247XG59XG5cbi8qKlxuICogRXZhbHVhdGUgaWYgdGhlIGNvbmRlbnNlZCBtb2RlIGNhbiBiZSBhcHBsaTNlZCBvbiB0aGUgdGFibGUuXG4gKlxuICogQHBhcmFtIGN1cnJlbnRGYWNldFxuICogQHBhcmFtIGZhY2V0c1RvQ3JlYXRlSW5TZWN0aW9uXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dFxuICogQHJldHVybnMgYHRydWVgIGZvciBjb21wbGlhbnQsIGZhbHNlIG90aGVyd2lzZVxuICovXG5mdW5jdGlvbiBnZXRDb25kZW5zZWRUYWJsZUxheW91dENvbXBsaWFuY2UoXG5cdGN1cnJlbnRGYWNldDogRmFjZXRUeXBlcyxcblx0ZmFjZXRzVG9DcmVhdGVJblNlY3Rpb246IEZhY2V0VHlwZXNbXSxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dFxuKTogYm9vbGVhbiB7XG5cdGNvbnN0IG1hbmlmZXN0V3JhcHBlciA9IGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RXcmFwcGVyKCk7XG5cdGlmIChtYW5pZmVzdFdyYXBwZXIudXNlSWNvblRhYkJhcigpKSB7XG5cdFx0Ly8gSWYgdGhlIE9QIHVzZSB0aGUgdGFiIGJhc2VkIHdlIGNoZWNrIGlmIHRoZSBmYWNldHMgdGhhdCB3aWxsIGJlIGNyZWF0ZWQgZm9yIHRoaXMgc2VjdGlvbiBhcmUgYWxsIG5vbiB2aXNpYmxlXG5cdFx0cmV0dXJuIGhhc05vT3RoZXJWaXNpYmxlVGFibGVJblRhcmdldHMoY3VycmVudEZhY2V0LCBmYWNldHNUb0NyZWF0ZUluU2VjdGlvbik7XG5cdH0gZWxzZSB7XG5cdFx0Y29uc3QgZW50aXR5VHlwZSA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpO1xuXHRcdGlmIChlbnRpdHlUeXBlLmFubm90YXRpb25zPy5VST8uRmFjZXRzPy5sZW5ndGggJiYgZW50aXR5VHlwZS5hbm5vdGF0aW9ucz8uVUk/LkZhY2V0cz8ubGVuZ3RoID4gMSkge1xuXHRcdFx0cmV0dXJuIGhhc05vT3RoZXJWaXNpYmxlVGFibGVJblRhcmdldHMoY3VycmVudEZhY2V0LCBmYWNldHNUb0NyZWF0ZUluU2VjdGlvbik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiBoYXNOb090aGVyVmlzaWJsZVRhYmxlSW5UYXJnZXRzKGN1cnJlbnRGYWNldDogRmFjZXRUeXBlcywgZmFjZXRzVG9DcmVhdGVJblNlY3Rpb246IEZhY2V0VHlwZXNbXSk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gZmFjZXRzVG9DcmVhdGVJblNlY3Rpb24uZXZlcnkoZnVuY3Rpb24gKHN1YkZhY2V0KSB7XG5cdFx0aWYgKHN1YkZhY2V0ICE9PSBjdXJyZW50RmFjZXQpIHtcblx0XHRcdGlmIChzdWJGYWNldC4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuUmVmZXJlbmNlRmFjZXQpIHtcblx0XHRcdFx0Y29uc3QgcmVmRmFjZXQgPSBzdWJGYWNldDtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdHJlZkZhY2V0LlRhcmdldD8uJHRhcmdldD8udGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW0gfHxcblx0XHRcdFx0XHRyZWZGYWNldC5UYXJnZXQ/LiR0YXJnZXQ/LnRlcm0gPT09IFVJQW5ub3RhdGlvblRlcm1zLlByZXNlbnRhdGlvblZhcmlhbnQgfHxcblx0XHRcdFx0XHRyZWZGYWNldC5UYXJnZXQuJHRhcmdldD8udGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gcmVmRmFjZXQuYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4gIT09IHVuZGVmaW5lZCA/IHJlZkZhY2V0LmFubm90YXRpb25zPy5VST8uSGlkZGVuIDogZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdCBzdWJDb2xsZWN0aW9uRmFjZXQgPSBzdWJGYWNldCBhcyBDb2xsZWN0aW9uRmFjZXRUeXBlcztcblx0XHRcdFx0cmV0dXJuIHN1YkNvbGxlY3Rpb25GYWNldC5GYWNldHMuZXZlcnkoZnVuY3Rpb24gKGZhY2V0KSB7XG5cdFx0XHRcdFx0Y29uc3Qgc3ViUmVmRmFjZXQgPSBmYWNldCBhcyBSZWZlcmVuY2VGYWNldFR5cGVzO1xuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdHN1YlJlZkZhY2V0LlRhcmdldD8uJHRhcmdldD8udGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW0gfHxcblx0XHRcdFx0XHRcdHN1YlJlZkZhY2V0LlRhcmdldD8uJHRhcmdldD8udGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuUHJlc2VudGF0aW9uVmFyaWFudCB8fFxuXHRcdFx0XHRcdFx0c3ViUmVmRmFjZXQuVGFyZ2V0Py4kdGFyZ2V0Py50ZXJtID09PSBVSUFubm90YXRpb25UZXJtcy5TZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50XG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc3ViUmVmRmFjZXQuYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4gIT09IHVuZGVmaW5lZCA/IHN1YlJlZkZhY2V0LmFubm90YXRpb25zPy5VST8uSGlkZGVuIDogZmFsc2U7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHRydWU7XG5cdH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BOERZQSxjQUFjO0VBQUEsV0FBZEEsY0FBYztJQUFkQSxjQUFjO0lBQWRBLGNBQWM7SUFBZEEsY0FBYztJQUFkQSxjQUFjO0lBQWRBLGNBQWM7SUFBZEEsY0FBYztFQUFBLEdBQWRBLGNBQWMsS0FBZEEsY0FBYztFQUFBO0VBeUYxQixNQUFNQyxrQkFBNEIsR0FBRyx3TEFLcEM7O0VBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNPLFNBQVNDLGlCQUFpQixDQUNoQ0MsZUFBNkIsRUFDN0JDLGdCQUFrQyxFQUNsQ0MsZUFBeUIsRUFDQTtJQUN6QjtJQUNBLE1BQU1DLGNBQWMsR0FBR0gsZUFBZSxDQUFDSSxNQUFNLENBQUMsQ0FBQ0QsY0FBNEIsRUFBRUUsZUFBZSxL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
|