@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,396 @@
|
|
|
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/fe/core/templating/DisplayModeFormatter", "sap/fe/core/templating/PropertyHelper", "../helpers/DataFieldHelper"], function (DisplayModeFormatter, PropertyHelper, DataFieldHelper) {
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
var _exports = {};
|
|
9
|
+
var isReferencePropertyStaticallyHidden = DataFieldHelper.isReferencePropertyStaticallyHidden;
|
|
10
|
+
var isProperty = PropertyHelper.isProperty;
|
|
11
|
+
var isPathExpression = PropertyHelper.isPathExpression;
|
|
12
|
+
var getAssociatedUnitProperty = PropertyHelper.getAssociatedUnitProperty;
|
|
13
|
+
var getAssociatedTimezoneProperty = PropertyHelper.getAssociatedTimezoneProperty;
|
|
14
|
+
var getAssociatedCurrencyProperty = PropertyHelper.getAssociatedCurrencyProperty;
|
|
15
|
+
var getDisplayMode = DisplayModeFormatter.getDisplayMode;
|
|
16
|
+
/**
|
|
17
|
+
* Identifies if the given dataFieldAbstract that is passed is a "DataFieldForActionAbstract".
|
|
18
|
+
* DataFieldForActionAbstract has an inline action defined.
|
|
19
|
+
*
|
|
20
|
+
* @param dataField DataField to be evaluated
|
|
21
|
+
* @returns Validates that dataField is a DataFieldForActionAbstractType
|
|
22
|
+
*/
|
|
23
|
+
function isDataFieldForActionAbstract(dataField) {
|
|
24
|
+
return dataField.hasOwnProperty("Action");
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Identifies if the given dataFieldAbstract that is passed is a "DataField".
|
|
29
|
+
* DataField has a value defined.
|
|
30
|
+
*
|
|
31
|
+
* @param dataField DataField to be evaluated
|
|
32
|
+
* @returns Validate that dataField is a DataFieldTypes
|
|
33
|
+
*/
|
|
34
|
+
_exports.isDataFieldForActionAbstract = isDataFieldForActionAbstract;
|
|
35
|
+
function isDataFieldTypes(dataField) {
|
|
36
|
+
return dataField.hasOwnProperty("Value");
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Retrieves the TargetValue from a DataPoint.
|
|
41
|
+
*
|
|
42
|
+
* @param source the target property or DataPoint
|
|
43
|
+
* @returns The TargetValue as a decimal or a property path
|
|
44
|
+
*/
|
|
45
|
+
_exports.isDataFieldTypes = isDataFieldTypes;
|
|
46
|
+
function getTargetValueOnDataPoint(source) {
|
|
47
|
+
let targetValue;
|
|
48
|
+
if (isProperty(source)) {
|
|
49
|
+
var _source$annotations, _source$annotations$U, _source$annotations$U2, _source$annotations$U3, _source$annotations$U4, _source$annotations2, _source$annotations2$, _source$annotations2$2, _source$annotations2$3, _source$annotations2$4;
|
|
50
|
+
targetValue = ((_source$annotations = source.annotations) === null || _source$annotations === void 0 ? void 0 : (_source$annotations$U = _source$annotations.UI) === null || _source$annotations$U === void 0 ? void 0 : (_source$annotations$U2 = _source$annotations$U.DataFieldDefault) === null || _source$annotations$U2 === void 0 ? void 0 : (_source$annotations$U3 = _source$annotations$U2.Target) === null || _source$annotations$U3 === void 0 ? void 0 : (_source$annotations$U4 = _source$annotations$U3.$target) === null || _source$annotations$U4 === void 0 ? void 0 : _source$annotations$U4.TargetValue) ?? ((_source$annotations2 = source.annotations) === null || _source$annotations2 === void 0 ? void 0 : (_source$annotations2$ = _source$annotations2.UI) === null || _source$annotations2$ === void 0 ? void 0 : (_source$annotations2$2 = _source$annotations2$.DataFieldDefault) === null || _source$annotations2$2 === void 0 ? void 0 : (_source$annotations2$3 = _source$annotations2$2.Target) === null || _source$annotations2$3 === void 0 ? void 0 : (_source$annotations2$4 = _source$annotations2$3.$target) === null || _source$annotations2$4 === void 0 ? void 0 : _source$annotations2$4.MaximumValue);
|
|
51
|
+
} else {
|
|
52
|
+
targetValue = source.TargetValue ?? source.MaximumValue;
|
|
53
|
+
}
|
|
54
|
+
if (typeof targetValue === "number") {
|
|
55
|
+
return targetValue.toString();
|
|
56
|
+
}
|
|
57
|
+
return isPathExpression(targetValue) ? targetValue : "100";
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Check if a property uses a DataPoint within a DataFieldDefault.
|
|
62
|
+
*
|
|
63
|
+
* @param property The property to be checked
|
|
64
|
+
* @returns `true` if the referenced property has a DataPoint within the DataFieldDefault, false else
|
|
65
|
+
* @private
|
|
66
|
+
*/
|
|
67
|
+
_exports.getTargetValueOnDataPoint = getTargetValueOnDataPoint;
|
|
68
|
+
const isDataPointFromDataFieldDefault = function (property) {
|
|
69
|
+
var _property$annotations, _property$annotations2, _property$annotations3, _property$annotations4, _property$annotations5;
|
|
70
|
+
return ((_property$annotations = property.annotations) === null || _property$annotations === void 0 ? void 0 : (_property$annotations2 = _property$annotations.UI) === null || _property$annotations2 === void 0 ? void 0 : (_property$annotations3 = _property$annotations2.DataFieldDefault) === null || _property$annotations3 === void 0 ? void 0 : (_property$annotations4 = _property$annotations3.Target) === null || _property$annotations4 === void 0 ? void 0 : (_property$annotations5 = _property$annotations4.$target) === null || _property$annotations5 === void 0 ? void 0 : _property$annotations5.$Type) === "com.sap.vocabularies.UI.v1.DataPointType";
|
|
71
|
+
};
|
|
72
|
+
_exports.isDataPointFromDataFieldDefault = isDataPointFromDataFieldDefault;
|
|
73
|
+
function getSemanticObjectPath(converterContext, object) {
|
|
74
|
+
if (typeof object === "object") {
|
|
75
|
+
var _object$Value;
|
|
76
|
+
if (isDataFieldTypes(object) && (_object$Value = object.Value) !== null && _object$Value !== void 0 && _object$Value.$target) {
|
|
77
|
+
var _object$Value2, _property$annotations6, _property$annotations7;
|
|
78
|
+
const property = (_object$Value2 = object.Value) === null || _object$Value2 === void 0 ? void 0 : _object$Value2.$target;
|
|
79
|
+
if ((property === null || property === void 0 ? void 0 : (_property$annotations6 = property.annotations) === null || _property$annotations6 === void 0 ? void 0 : (_property$annotations7 = _property$annotations6.Common) === null || _property$annotations7 === void 0 ? void 0 : _property$annotations7.SemanticObject) !== undefined) {
|
|
80
|
+
return converterContext.getEntitySetBasedAnnotationPath(property === null || property === void 0 ? void 0 : property.fullyQualifiedName);
|
|
81
|
+
}
|
|
82
|
+
} else if (isProperty(object)) {
|
|
83
|
+
var _object$annotations, _object$annotations$C;
|
|
84
|
+
if ((object === null || object === void 0 ? void 0 : (_object$annotations = object.annotations) === null || _object$annotations === void 0 ? void 0 : (_object$annotations$C = _object$annotations.Common) === null || _object$annotations$C === void 0 ? void 0 : _object$annotations$C.SemanticObject) !== undefined) {
|
|
85
|
+
return converterContext.getEntitySetBasedAnnotationPath(object === null || object === void 0 ? void 0 : object.fullyQualifiedName);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Returns the navigation path prefix for a property path.
|
|
94
|
+
*
|
|
95
|
+
* @param path The property path For e.g. /EntityType/Navigation/Property
|
|
96
|
+
* @returns The navigation path prefix For e.g. /EntityType/Navigation/
|
|
97
|
+
*/
|
|
98
|
+
_exports.getSemanticObjectPath = getSemanticObjectPath;
|
|
99
|
+
function _getNavigationPathPrefix(path) {
|
|
100
|
+
return path.indexOf("/") > -1 ? path.substring(0, path.lastIndexOf("/") + 1) : "";
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Collect additional properties for the ALP table use-case.
|
|
105
|
+
*
|
|
106
|
+
* For e.g. If UI.Hidden points to a property, include this property in the additionalProperties of ComplexPropertyInfo object.
|
|
107
|
+
*
|
|
108
|
+
* @param target Property or DataField being processed
|
|
109
|
+
* @param navigationPathPrefix Navigation path prefix, applicable in case of navigation properties.
|
|
110
|
+
* @param tableType Table type.
|
|
111
|
+
* @param relatedProperties The related properties identified so far.
|
|
112
|
+
* @returns The related properties identified.
|
|
113
|
+
*/
|
|
114
|
+
function _collectAdditionalPropertiesForAnalyticalTable(target, navigationPathPrefix, tableType, relatedProperties) {
|
|
115
|
+
if (tableType === "AnalyticalTable") {
|
|
116
|
+
var _target$annotations, _target$annotations$U;
|
|
117
|
+
const hiddenAnnotation = (_target$annotations = target.annotations) === null || _target$annotations === void 0 ? void 0 : (_target$annotations$U = _target$annotations.UI) === null || _target$annotations$U === void 0 ? void 0 : _target$annotations$U.Hidden;
|
|
118
|
+
if (hiddenAnnotation !== null && hiddenAnnotation !== void 0 && hiddenAnnotation.path && isProperty(hiddenAnnotation.$target)) {
|
|
119
|
+
const hiddenAnnotationPropertyPath = navigationPathPrefix + hiddenAnnotation.path;
|
|
120
|
+
// This property should be added to additionalProperties map for the ALP table use-case.
|
|
121
|
+
relatedProperties.additionalProperties[hiddenAnnotationPropertyPath] = hiddenAnnotation.$target;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return relatedProperties;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Collect related properties from a property's annotations.
|
|
129
|
+
*
|
|
130
|
+
* @param path The property path
|
|
131
|
+
* @param property The property to be considered
|
|
132
|
+
* @param converterContext The converter context
|
|
133
|
+
* @param ignoreSelf Whether to exclude the same property from related properties.
|
|
134
|
+
* @param tableType The table type.
|
|
135
|
+
* @param relatedProperties The related properties identified so far.
|
|
136
|
+
* @param addUnitInTemplate True if the unit/currency property needs to be added in the export template
|
|
137
|
+
* @param isAnnotatedAsHidden True if the DataField or the property are statically hidden
|
|
138
|
+
* @returns The related properties identified.
|
|
139
|
+
*/
|
|
140
|
+
function collectRelatedProperties(path, property, converterContext, ignoreSelf, tableType) {
|
|
141
|
+
let relatedProperties = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {
|
|
142
|
+
properties: {},
|
|
143
|
+
additionalProperties: {},
|
|
144
|
+
textOnlyPropertiesFromTextAnnotation: []
|
|
145
|
+
};
|
|
146
|
+
let addUnitInTemplate = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;
|
|
147
|
+
let isAnnotatedAsHidden = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : false;
|
|
148
|
+
/**
|
|
149
|
+
* Helper to push unique related properties.
|
|
150
|
+
*
|
|
151
|
+
* @param key The property path
|
|
152
|
+
* @param value The properties object containing value property, description property...
|
|
153
|
+
* @returns Index at which the property is available
|
|
154
|
+
*/
|
|
155
|
+
function _pushUnique(key, value) {
|
|
156
|
+
if (!relatedProperties.properties.hasOwnProperty(key)) {
|
|
157
|
+
relatedProperties.properties[key] = value;
|
|
158
|
+
}
|
|
159
|
+
return Object.keys(relatedProperties.properties).indexOf(key);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Helper to append the export settings template with a formatted text.
|
|
164
|
+
*
|
|
165
|
+
* @param value Formatted text
|
|
166
|
+
*/
|
|
167
|
+
function _appendTemplate(value) {
|
|
168
|
+
relatedProperties.exportSettingsTemplate = relatedProperties.exportSettingsTemplate ? `${relatedProperties.exportSettingsTemplate}${value}` : `${value}`;
|
|
169
|
+
}
|
|
170
|
+
if (path && property) {
|
|
171
|
+
var _property$annotations8, _property$annotations9;
|
|
172
|
+
let valueIndex;
|
|
173
|
+
let targetValue;
|
|
174
|
+
let currencyOrUoMIndex;
|
|
175
|
+
let timezoneOrUoMIndex;
|
|
176
|
+
let dataPointIndex;
|
|
177
|
+
if (isAnnotatedAsHidden) {
|
|
178
|
+
// Collect underlying property
|
|
179
|
+
valueIndex = _pushUnique(path, property);
|
|
180
|
+
_appendTemplate(`{${valueIndex}}`);
|
|
181
|
+
return relatedProperties;
|
|
182
|
+
}
|
|
183
|
+
const navigationPathPrefix = _getNavigationPathPrefix(path);
|
|
184
|
+
|
|
185
|
+
// Check for Text annotation.
|
|
186
|
+
const textAnnotation = (_property$annotations8 = property.annotations) === null || _property$annotations8 === void 0 ? void 0 : (_property$annotations9 = _property$annotations8.Common) === null || _property$annotations9 === void 0 ? void 0 : _property$annotations9.Text;
|
|
187
|
+
if (relatedProperties.exportSettingsTemplate) {
|
|
188
|
+
// FieldGroup use-case. Need to add each Field in new line.
|
|
189
|
+
_appendTemplate("\n");
|
|
190
|
+
relatedProperties.exportSettingsWrapping = true;
|
|
191
|
+
}
|
|
192
|
+
if (textAnnotation !== null && textAnnotation !== void 0 && textAnnotation.path && textAnnotation !== null && textAnnotation !== void 0 && textAnnotation.$target) {
|
|
193
|
+
// Check for Text Arrangement.
|
|
194
|
+
const dataModelObjectPath = converterContext.getDataModelObjectPath();
|
|
195
|
+
const textAnnotationPropertyPath = navigationPathPrefix + textAnnotation.path;
|
|
196
|
+
const displayMode = getDisplayMode(property, dataModelObjectPath);
|
|
197
|
+
let descriptionIndex;
|
|
198
|
+
switch (displayMode) {
|
|
199
|
+
case "Value":
|
|
200
|
+
valueIndex = _pushUnique(path, property);
|
|
201
|
+
_appendTemplate(`{${valueIndex}}`);
|
|
202
|
+
break;
|
|
203
|
+
case "Description":
|
|
204
|
+
descriptionIndex = _pushUnique(textAnnotationPropertyPath, textAnnotation.$target);
|
|
205
|
+
_appendTemplate(`{${descriptionIndex}}`);
|
|
206
|
+
relatedProperties.textOnlyPropertiesFromTextAnnotation.push(textAnnotationPropertyPath);
|
|
207
|
+
break;
|
|
208
|
+
case "ValueDescription":
|
|
209
|
+
valueIndex = _pushUnique(path, property);
|
|
210
|
+
descriptionIndex = _pushUnique(textAnnotationPropertyPath, textAnnotation.$target);
|
|
211
|
+
_appendTemplate(`{${valueIndex}} ({${descriptionIndex}})`);
|
|
212
|
+
break;
|
|
213
|
+
case "DescriptionValue":
|
|
214
|
+
valueIndex = _pushUnique(path, property);
|
|
215
|
+
descriptionIndex = _pushUnique(textAnnotationPropertyPath, textAnnotation.$target);
|
|
216
|
+
_appendTemplate(`{${descriptionIndex}} ({${valueIndex}})`);
|
|
217
|
+
break;
|
|
218
|
+
// no default
|
|
219
|
+
}
|
|
220
|
+
} else {
|
|
221
|
+
var _property$annotations10, _property$annotations11, _property$annotations12, _property$annotations13, _property$annotations14, _property$annotations15, _property$Target, _property$Target$$tar, _property$Target2, _property$Target2$$ta, _property$annotations16, _property$annotations17, _property$annotations18, _property$annotations19, _property$annotations20;
|
|
222
|
+
// Check for field containing Currency Or Unit Properties or Timezone
|
|
223
|
+
const currencyOrUoMProperty = getAssociatedCurrencyProperty(property) || getAssociatedUnitProperty(property);
|
|
224
|
+
const currencyOrUnitAnnotation = (property === null || property === void 0 ? void 0 : (_property$annotations10 = property.annotations) === null || _property$annotations10 === void 0 ? void 0 : (_property$annotations11 = _property$annotations10.Measures) === null || _property$annotations11 === void 0 ? void 0 : _property$annotations11.ISOCurrency) || (property === null || property === void 0 ? void 0 : (_property$annotations12 = property.annotations) === null || _property$annotations12 === void 0 ? void 0 : (_property$annotations13 = _property$annotations12.Measures) === null || _property$annotations13 === void 0 ? void 0 : _property$annotations13.Unit);
|
|
225
|
+
const timezoneProperty = getAssociatedTimezoneProperty(property);
|
|
226
|
+
const timezoneAnnotation = property === null || property === void 0 ? void 0 : (_property$annotations14 = property.annotations) === null || _property$annotations14 === void 0 ? void 0 : (_property$annotations15 = _property$annotations14.Common) === null || _property$annotations15 === void 0 ? void 0 : _property$annotations15.Timezone;
|
|
227
|
+
if (currencyOrUoMProperty && currencyOrUnitAnnotation !== null && currencyOrUnitAnnotation !== void 0 && currencyOrUnitAnnotation.$target) {
|
|
228
|
+
valueIndex = _pushUnique(path, property);
|
|
229
|
+
currencyOrUoMIndex = _pushUnique(navigationPathPrefix + currencyOrUnitAnnotation.path, currencyOrUnitAnnotation.$target);
|
|
230
|
+
if (addUnitInTemplate) {
|
|
231
|
+
_appendTemplate(`{${valueIndex}} {${currencyOrUoMIndex}}`);
|
|
232
|
+
} else {
|
|
233
|
+
relatedProperties.exportUnitName = navigationPathPrefix + currencyOrUnitAnnotation.path;
|
|
234
|
+
}
|
|
235
|
+
} else if (timezoneProperty && timezoneAnnotation !== null && timezoneAnnotation !== void 0 && timezoneAnnotation.$target) {
|
|
236
|
+
valueIndex = _pushUnique(path, property);
|
|
237
|
+
timezoneOrUoMIndex = _pushUnique(navigationPathPrefix + timezoneAnnotation.path, timezoneAnnotation.$target);
|
|
238
|
+
if (addUnitInTemplate) {
|
|
239
|
+
_appendTemplate(`{${valueIndex}} {${timezoneOrUoMIndex}}`);
|
|
240
|
+
} else {
|
|
241
|
+
relatedProperties.exportTimezoneName = navigationPathPrefix + timezoneAnnotation.path;
|
|
242
|
+
}
|
|
243
|
+
} else if (((_property$Target = property.Target) === null || _property$Target === void 0 ? void 0 : (_property$Target$$tar = _property$Target.$target) === null || _property$Target$$tar === void 0 ? void 0 : _property$Target$$tar.$Type) === "com.sap.vocabularies.UI.v1.DataPointType" && !((_property$Target2 = property.Target) !== null && _property$Target2 !== void 0 && (_property$Target2$$ta = _property$Target2.$target) !== null && _property$Target2$$ta !== void 0 && _property$Target2$$ta.ValueFormat) || ((_property$annotations16 = property.annotations) === null || _property$annotations16 === void 0 ? void 0 : (_property$annotations17 = _property$annotations16.UI) === null || _property$annotations17 === void 0 ? void 0 : (_property$annotations18 = _property$annotations17.DataFieldDefault) === null || _property$annotations18 === void 0 ? void 0 : (_property$annotations19 = _property$annotations18.Target) === null || _property$annotations19 === void 0 ? void 0 : (_property$annotations20 = _property$annotations19.$target) === null || _property$annotations20 === void 0 ? void 0 : _property$annotations20.$Type) === "com.sap.vocabularies.UI.v1.DataPointType") {
|
|
244
|
+
var _property$Target3, _property$Target3$$ta, _property$Target4, _property$annotations21, _property$annotations22;
|
|
245
|
+
const dataPointProperty = (_property$Target3 = property.Target) === null || _property$Target3 === void 0 ? void 0 : (_property$Target3$$ta = _property$Target3.$target) === null || _property$Target3$$ta === void 0 ? void 0 : _property$Target3$$ta.Value.$target;
|
|
246
|
+
const datapointTarget = (_property$Target4 = property.Target) === null || _property$Target4 === void 0 ? void 0 : _property$Target4.$target;
|
|
247
|
+
// DataPoint use-case using DataFieldDefault.
|
|
248
|
+
const dataPointDefaultProperty = (_property$annotations21 = property.annotations) === null || _property$annotations21 === void 0 ? void 0 : (_property$annotations22 = _property$annotations21.UI) === null || _property$annotations22 === void 0 ? void 0 : _property$annotations22.DataFieldDefault;
|
|
249
|
+
valueIndex = _pushUnique(navigationPathPrefix ? navigationPathPrefix + path : path, dataPointDefaultProperty ? property : dataPointProperty);
|
|
250
|
+
targetValue = getTargetValueOnDataPoint(dataPointDefaultProperty ? property : datapointTarget);
|
|
251
|
+
if (isProperty(targetValue.$target)) {
|
|
252
|
+
//in case it's a dynamic targetValue
|
|
253
|
+
targetValue = targetValue;
|
|
254
|
+
dataPointIndex = _pushUnique(navigationPathPrefix ? navigationPathPrefix + targetValue.$target.name : targetValue.$target.name, targetValue.$target);
|
|
255
|
+
_appendTemplate(`{${valueIndex}}/{${dataPointIndex}}`);
|
|
256
|
+
} else {
|
|
257
|
+
relatedProperties.exportDataPointTargetValue = targetValue;
|
|
258
|
+
_appendTemplate(`{${valueIndex}}/${targetValue}`);
|
|
259
|
+
}
|
|
260
|
+
} else if (property.$Type === "com.sap.vocabularies.Communication.v1.ContactType") {
|
|
261
|
+
var _property$fn, _property$fn2;
|
|
262
|
+
const contactProperty = (_property$fn = property.fn) === null || _property$fn === void 0 ? void 0 : _property$fn.$target;
|
|
263
|
+
const contactPropertyPath = (_property$fn2 = property.fn) === null || _property$fn2 === void 0 ? void 0 : _property$fn2.path;
|
|
264
|
+
valueIndex = _pushUnique(navigationPathPrefix ? navigationPathPrefix + contactPropertyPath : contactPropertyPath, contactProperty);
|
|
265
|
+
_appendTemplate(`{${valueIndex}}`);
|
|
266
|
+
} else if (!ignoreSelf) {
|
|
267
|
+
// Collect underlying property
|
|
268
|
+
valueIndex = _pushUnique(path, property);
|
|
269
|
+
_appendTemplate(`{${valueIndex}}`);
|
|
270
|
+
if (currencyOrUnitAnnotation) {
|
|
271
|
+
relatedProperties.exportUnitString = `${currencyOrUnitAnnotation}`; // Hard-coded currency/unit
|
|
272
|
+
} else if (timezoneAnnotation) {
|
|
273
|
+
relatedProperties.exportTimezoneString = `${timezoneAnnotation}`; // Hard-coded timezone
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
relatedProperties = _collectAdditionalPropertiesForAnalyticalTable(property, navigationPathPrefix, tableType, relatedProperties);
|
|
279
|
+
if (Object.keys(relatedProperties.additionalProperties).length > 0 && Object.keys(relatedProperties.properties).length === 0) {
|
|
280
|
+
// Collect underlying property if not collected already.
|
|
281
|
+
// This is to ensure that additionalProperties are made available only to complex property infos.
|
|
282
|
+
valueIndex = _pushUnique(path, property);
|
|
283
|
+
_appendTemplate(`{${valueIndex}}`);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
return relatedProperties;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
/**
|
|
290
|
+
* Collect properties consumed by a DataField.
|
|
291
|
+
* This is for populating the ComplexPropertyInfos of the table delegate.
|
|
292
|
+
*
|
|
293
|
+
* @param dataField The DataField for which the properties need to be identified.
|
|
294
|
+
* @param converterContext The converter context.
|
|
295
|
+
* @param tableType The table type.
|
|
296
|
+
* @param relatedProperties The properties identified so far.
|
|
297
|
+
* @param isEmbedded True if the DataField is embedded in another annotation (e.g. FieldGroup).
|
|
298
|
+
* @returns The properties related to the DataField.
|
|
299
|
+
*/
|
|
300
|
+
_exports.collectRelatedProperties = collectRelatedProperties;
|
|
301
|
+
function collectRelatedPropertiesRecursively(dataField, converterContext, tableType) {
|
|
302
|
+
var _dataField$Target, _dataField$Target$$ta, _dataField$Target$$ta2;
|
|
303
|
+
let relatedProperties = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {
|
|
304
|
+
properties: {},
|
|
305
|
+
additionalProperties: {},
|
|
306
|
+
textOnlyPropertiesFromTextAnnotation: []
|
|
307
|
+
};
|
|
308
|
+
let isEmbedded = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
|
|
309
|
+
let isStaticallyHidden = false;
|
|
310
|
+
switch (dataField === null || dataField === void 0 ? void 0 : dataField.$Type) {
|
|
311
|
+
case "com.sap.vocabularies.UI.v1.DataField":
|
|
312
|
+
case "com.sap.vocabularies.UI.v1.DataFieldWithUrl":
|
|
313
|
+
case "com.sap.vocabularies.UI.v1.DataFieldWithNavigationPath":
|
|
314
|
+
case "com.sap.vocabularies.UI.v1.DataFieldWithIntentBasedNavigation":
|
|
315
|
+
case "com.sap.vocabularies.UI.v1.DataFieldWithAction":
|
|
316
|
+
if (dataField.Value) {
|
|
317
|
+
var _property$$target, _property$$target$ann, _property$$target$ann2;
|
|
318
|
+
const property = dataField.Value;
|
|
319
|
+
isStaticallyHidden = isReferencePropertyStaticallyHidden((_property$$target = property.$target) === null || _property$$target === void 0 ? void 0 : (_property$$target$ann = _property$$target.annotations) === null || _property$$target$ann === void 0 ? void 0 : (_property$$target$ann2 = _property$$target$ann.UI) === null || _property$$target$ann2 === void 0 ? void 0 : _property$$target$ann2.DataFieldDefault) || isReferencePropertyStaticallyHidden(dataField) || false;
|
|
320
|
+
relatedProperties = collectRelatedProperties(property.path, property.$target, converterContext, false, tableType, relatedProperties, isEmbedded, isStaticallyHidden);
|
|
321
|
+
const navigationPathPrefix = _getNavigationPathPrefix(property.path);
|
|
322
|
+
relatedProperties = _collectAdditionalPropertiesForAnalyticalTable(dataField, navigationPathPrefix, tableType, relatedProperties);
|
|
323
|
+
}
|
|
324
|
+
break;
|
|
325
|
+
case "com.sap.vocabularies.UI.v1.DataFieldForAction":
|
|
326
|
+
case "com.sap.vocabularies.UI.v1.DataFieldForIntentBasedNavigation":
|
|
327
|
+
break;
|
|
328
|
+
case "com.sap.vocabularies.UI.v1.DataFieldForAnnotation":
|
|
329
|
+
switch ((_dataField$Target = dataField.Target) === null || _dataField$Target === void 0 ? void 0 : (_dataField$Target$$ta = _dataField$Target.$target) === null || _dataField$Target$$ta === void 0 ? void 0 : _dataField$Target$$ta.$Type) {
|
|
330
|
+
case "com.sap.vocabularies.UI.v1.FieldGroupType":
|
|
331
|
+
(_dataField$Target$$ta2 = dataField.Target.$target.Data) === null || _dataField$Target$$ta2 === void 0 ? void 0 : _dataField$Target$$ta2.forEach(innerDataField => {
|
|
332
|
+
relatedProperties = collectRelatedPropertiesRecursively(innerDataField, converterContext, tableType, relatedProperties, true);
|
|
333
|
+
});
|
|
334
|
+
break;
|
|
335
|
+
case "com.sap.vocabularies.UI.v1.DataPointType":
|
|
336
|
+
isStaticallyHidden = isReferencePropertyStaticallyHidden(dataField) ?? false;
|
|
337
|
+
relatedProperties = collectRelatedProperties(dataField.Target.$target.Value.path, dataField, converterContext, false, tableType, relatedProperties, isEmbedded, isStaticallyHidden);
|
|
338
|
+
break;
|
|
339
|
+
case "com.sap.vocabularies.Communication.v1.ContactType":
|
|
340
|
+
const dataFieldContact = dataField.Target.$target;
|
|
341
|
+
isStaticallyHidden = isReferencePropertyStaticallyHidden(dataField) ?? false;
|
|
342
|
+
relatedProperties = collectRelatedProperties(dataField.Target.value, dataFieldContact, converterContext, isStaticallyHidden, tableType, relatedProperties, isEmbedded, isStaticallyHidden);
|
|
343
|
+
break;
|
|
344
|
+
default:
|
|
345
|
+
break;
|
|
346
|
+
}
|
|
347
|
+
break;
|
|
348
|
+
default:
|
|
349
|
+
break;
|
|
350
|
+
}
|
|
351
|
+
return relatedProperties;
|
|
352
|
+
}
|
|
353
|
+
_exports.collectRelatedPropertiesRecursively = collectRelatedPropertiesRecursively;
|
|
354
|
+
const getDataFieldDataType = function (oDataField) {
|
|
355
|
+
var _Value, _Value$$target, _Target, _Target$$target;
|
|
356
|
+
let sDataType = oDataField.$Type;
|
|
357
|
+
switch (sDataType) {
|
|
358
|
+
case "com.sap.vocabularies.UI.v1.DataFieldForAction":
|
|
359
|
+
case "com.sap.vocabularies.UI.v1.DataFieldForIntentBasedNavigation":
|
|
360
|
+
sDataType = undefined;
|
|
361
|
+
break;
|
|
362
|
+
case "com.sap.vocabularies.UI.v1.DataField":
|
|
363
|
+
case "com.sap.vocabularies.UI.v1.DataFieldWithNavigationPath":
|
|
364
|
+
case "com.sap.vocabularies.UI.v1.DataFieldWithUrl":
|
|
365
|
+
case "com.sap.vocabularies.UI.v1.DataFieldWithIntentBasedNavigation":
|
|
366
|
+
case "com.sap.vocabularies.UI.v1.DataFieldWithAction":
|
|
367
|
+
sDataType = oDataField === null || oDataField === void 0 ? void 0 : (_Value = oDataField.Value) === null || _Value === void 0 ? void 0 : (_Value$$target = _Value.$target) === null || _Value$$target === void 0 ? void 0 : _Value$$target.type;
|
|
368
|
+
break;
|
|
369
|
+
case "com.sap.vocabularies.UI.v1.DataFieldForAnnotation":
|
|
370
|
+
default:
|
|
371
|
+
const sDataTypeForDataFieldForAnnotation = (_Target = oDataField.Target) === null || _Target === void 0 ? void 0 : (_Target$$target = _Target.$target) === null || _Target$$target === void 0 ? void 0 : _Target$$target.$Type;
|
|
372
|
+
if (sDataTypeForDataFieldForAnnotation) {
|
|
373
|
+
var _Target2, _Target4;
|
|
374
|
+
if (((_Target2 = oDataField.Target) === null || _Target2 === void 0 ? void 0 : _Target2.$target.$Type) === "com.sap.vocabularies.Communication.v1.ContactType") {
|
|
375
|
+
var _$target, _Target3, _Target3$$target;
|
|
376
|
+
sDataType = (_$target = ((_Target3 = oDataField.Target) === null || _Target3 === void 0 ? void 0 : (_Target3$$target = _Target3.$target) === null || _Target3$$target === void 0 ? void 0 : _Target3$$target.fn).$target) === null || _$target === void 0 ? void 0 : _$target.type;
|
|
377
|
+
} else if (((_Target4 = oDataField.Target) === null || _Target4 === void 0 ? void 0 : _Target4.$target.$Type) === "com.sap.vocabularies.UI.v1.DataPointType") {
|
|
378
|
+
var _Target5, _Target5$$target, _Target5$$target$Valu, _Target5$$target$Valu2, _Target6, _Target6$$target, _Target6$$target$Valu;
|
|
379
|
+
sDataType = ((_Target5 = oDataField.Target) === null || _Target5 === void 0 ? void 0 : (_Target5$$target = _Target5.$target) === null || _Target5$$target === void 0 ? void 0 : (_Target5$$target$Valu = _Target5$$target.Value) === null || _Target5$$target$Valu === void 0 ? void 0 : (_Target5$$target$Valu2 = _Target5$$target$Valu.$Path) === null || _Target5$$target$Valu2 === void 0 ? void 0 : _Target5$$target$Valu2.$Type) || ((_Target6 = oDataField.Target) === null || _Target6 === void 0 ? void 0 : (_Target6$$target = _Target6.$target) === null || _Target6$$target === void 0 ? void 0 : (_Target6$$target$Valu = _Target6$$target.Value) === null || _Target6$$target$Valu === void 0 ? void 0 : _Target6$$target$Valu.$target.type);
|
|
380
|
+
} else {
|
|
381
|
+
var _Target7;
|
|
382
|
+
// e.g. FieldGroup or Chart
|
|
383
|
+
// FieldGroup Properties have no type, so we define it as a boolean type to prevent exceptions during the calculation of the width
|
|
384
|
+
sDataType = ((_Target7 = oDataField.Target) === null || _Target7 === void 0 ? void 0 : _Target7.$target.$Type) === "com.sap.vocabularies.UI.v1.ChartDefinitionType" ? undefined : "Edm.Boolean";
|
|
385
|
+
}
|
|
386
|
+
} else {
|
|
387
|
+
sDataType = undefined;
|
|
388
|
+
}
|
|
389
|
+
break;
|
|
390
|
+
}
|
|
391
|
+
return sDataType;
|
|
392
|
+
};
|
|
393
|
+
_exports.getDataFieldDataType = getDataFieldDataType;
|
|
394
|
+
return _exports;
|
|
395
|
+
}, false);
|
|
396
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc0RhdGFGaWVsZEZvckFjdGlvbkFic3RyYWN0IiwiZGF0YUZpZWxkIiwiaGFzT3duUHJvcGVydHkiLCJpc0RhdGFGaWVsZFR5cGVzIiwiZ2V0VGFyZ2V0VmFsdWVPbkRhdGFQb2ludCIsInNvdXJjZSIsInRhcmdldFZhbHVlIiwiaXNQcm9wZXJ0eSIsImFubm90YXRpb25zIiwiVUkiLCJEYXRhRmllbGREZWZhdWx0IiwiVGFyZ2V0IiwiJHRhcmdldCIsIlRhcmdldFZhbHVlIiwiTWF4aW11bVZhbHVlIiwidG9TdHJpbmciLCJpc1BhdGhFeHByZXNzaW9uIiwiaXNEYXRhUG9pbnRGcm9tRGF0YUZpZWxkRGVmYXVsdCIsInByb3BlcnR5IiwiJFR5cGUiLCJnZXRTZW1hbnRpY09iamVjdFBhdGgiLCJjb252ZXJ0ZXJDb250ZXh0Iiwib2JqZWN0IiwiVmFsdWUiLCJDb21tb24iLCJTZW1hbnRpY09iamVjdCIsInVuZGVmaW5lZCIsImdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgiLCJmdWxseVF1YWxpZmllZE5hbWUiLCJfZ2V0TmF2aWdhdGlvblBhdGhQcmVmaXgiLCJwYXRoIiwiaW5kZXhPZiIsInN1YnN0cmluZyIsImxhc3RJbmRleE9mIiwiX2NvbGxlY3RBZGRpdGlvbmFsUHJvcGVydGllc0ZvckFuYWx5dGljYWxUYWJsZSIsInRhcmdldCIsIm5hdmlnYXRpb25QYXRoUHJlZml4IiwidGFibGVUeXBlIiwicmVsYXRlZFByb3BlcnRpZXMiLCJoaWRkZW5Bbm5vdGF0aW9uIiwiSGlkZGVuIiwiaGlkZGVuQW5ub3RhdGlvblByb3BlcnR5UGF0aCIsImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiwiY29sbGVjdFJlbGF0ZWRQcm9wZXJ0aWVzIiwiaWdub3JlU2VsZiIsInByb3BlcnRpZXMiLCJ0ZXh0T25seVByb3BlcnRpZXNGcm9tVGV4dEFubm90YXRpb24iLCJhZGRVbml0SW5UZW1wbGF0ZSIsImlzQW5ub3RhdGVkQXNIaWRkZW4iLCJfcHVzaFVuaXF1ZSIsImtleSIsInZhbHVlIiwiT2JqZWN0Iiwia2V5cyIsIl9hcHBlbmRUZW1wbGF0ZSIsImV4cG9ydFNldHRpbmdzVGVtcGxhdGUiLCJ2YWx1ZUluZGV4IiwiY3VycmVuY3lPclVvTUluZGV4IiwidGltZXpvbmVPclVvTUluZGV4IiwiZGF0YVBvaW50SW5kZXgiLCJ0ZXh0QW5ub3RhdGlvbiIsIlRleHQiLCJleHBvcnRTZXR0aW5nc1dyYXBwaW5nIiwiZGF0YU1vZGVsT2JqZWN0UGF0aCIsImdldERhdGFNb2RlbE9iamVjdFBhdGgiLCJ0ZXh0QW5ub3RhdGlvblByb3BlcnR5UGF0aCIsImRpc3BsYXlNb2RlIiwiZ2V0RGlzcGxheU1vZGUiLCJkZXNjcmlwdGlvbkluZGV4IiwicHVzaCIsImN1cnJlbmN5T3JVb01Qcm9wZXJ0eSIsImdldEFzc29jaWF0ZWRDdXJyZW5jeVByb3BlcnR5IiwiZ2V0QXNzb2NpYXRlZFVuaXRQcm9wZXJ0eSIsImN1cnJlbmN5T3JVbml0QW5ub3RhdGlvbiIsIk1lYXN1cmVzIiwiSVNPQ3VycmVuY3kiLCJVbml0IiwidGltZXpvbmVQcm9wZXJ0eSIsImdldEFzc29jaWF0ZWRUaW1lem9uZVByb3BlcnR5IiwidGltZXpvbmVBbm5vdGF0aW9uIiwiVGltZXpvbmUiLCJleHBvcnRVbml0TmFtZSIsImV4cG9ydFRpbWV6b25lTmFtZSIsIlZhbHVlRm9ybWF0IiwiZGF0YVBvaW50UHJvcGVydHkiLCJkYXRhcG9pbnRUYXJnZXQiLCJkYXRhUG9pbnREZWZhdWx0UHJvcGVydHkiLCJuYW1lIiwiZXhwb3J0RGF0YVBvaW50VGFyZ2V0VmFsdWUiLCJjb250YWN0UHJvcGVydHkiLCJmbiIsImNvbnRhY3RQcm9wZXJ0eVBhdGgiLCJleHBvcnRVbml0U3RyaW5nIiwiZXhwb3J0VGltZXpvbmVTdHJpbmciLCJsZW5ndGgiLCJjb2xsZWN0UmVsYXRlZFByb3BlcnRpZXNSZWN1cnNpdmVseSIsImlzRW1iZWRkZWQiLCJpc1N0YXRpY2FsbHlIaWRkZW4iLCJpc1JlZmVyZW5jZVByb3BlcnR5U3RhdGljYWxseUhpZGRlbiIsIkRhdGEiLCJmb3JFYWNoIiwiaW5uZXJEYXRhRmllbGQiLCJkYXRhRmllbGRDb250YWN0IiwiZ2V0RGF0YUZpZWxkRGF0YVR5cGUiLCJvRGF0YUZpZWxkIiwic0RhdGFUeXBlIiwidHlwZSIsInNEYXRhVHlwZUZvckRhdGFGaWVsZEZvckFubm90YXRpb24iLCIkUGF0aCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRGF0YUZpZWxkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHJpbWl0aXZlVHlwZSwgUHJvcGVydHksIFByb3BlcnR5UGF0aCB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBDb250YWN0IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9Db21tdW5pY2F0aW9uXCI7XG5pbXBvcnQgeyBDb21tdW5pY2F0aW9uQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9Db21tdW5pY2F0aW9uXCI7XG5pbXBvcnQgdHlwZSB7XG5cdERhdGFGaWVsZCxcblx0RGF0YUZpZWxkQWJzdHJhY3RUeXBlcyxcblx0RGF0YUZpZWxkRm9yQWN0aW9uQWJzdHJhY3RUeXBlcyxcblx0RGF0YUZpZWxkRm9yQW5ub3RhdGlvbixcblx0RGF0YUZpZWxkRm9yQW5ub3RhdGlvblR5cGVzLFxuXHREYXRhRmllbGRUeXBlcyxcblx0RGF0YVBvaW50LFxuXHREYXRhUG9pbnRUeXBlXG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IFVJQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHR5cGUgeyBUYWJsZVR5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vVGFibGVcIjtcbmltcG9ydCB7IGdldERpc3BsYXlNb2RlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGlzcGxheU1vZGVGb3JtYXR0ZXJcIjtcbmltcG9ydCB7XG5cdGdldEFzc29jaWF0ZWRDdXJyZW5jeVByb3BlcnR5LFxuXHRnZXRBc3NvY2lhdGVkVGltZXpvbmVQcm9wZXJ0eSxcblx0Z2V0QXNzb2NpYXRlZFVuaXRQcm9wZXJ0eSxcblx0aXNQYXRoRXhwcmVzc2lvbixcblx0aXNQcm9wZXJ0eVxufSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Qcm9wZXJ0eUhlbHBlclwiO1xuaW1wb3J0IHR5cGUgQ29udmVydGVyQ29udGV4dCBmcm9tIFwiLi4vQ29udmVydGVyQ29udGV4dFwiO1xuaW1wb3J0IHsgaXNSZWZlcmVuY2VQcm9wZXJ0eVN0YXRpY2FsbHlIaWRkZW4gfSBmcm9tIFwiLi4vaGVscGVycy9EYXRhRmllbGRIZWxwZXJcIjtcblxuZXhwb3J0IHR5cGUgQ29tcGxleFByb3BlcnR5SW5mbyA9IHtcblx0cHJvcGVydGllczogUmVjb3JkPHN0cmluZywgUHJvcGVydHk+O1xuXHRhZGRpdGlvbmFsUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgUHJvcGVydHk+O1xuXHRleHBvcnRTZXR0aW5nc1RlbXBsYXRlPzogc3RyaW5nO1xuXHRleHBvcnRTZXR0aW5nc1dyYXBwaW5nPzogYm9vbGVhbjtcblx0ZXhwb3J0VW5pdE5hbWU/OiBzdHJpbmc7XG5cdGV4cG9ydFVuaXRTdHJpbmc/OiBzdHJpbmc7XG5cdGV4cG9ydFRpbWV6b25lTmFtZT86IHN0cmluZztcblx0ZXhwb3J0VGltZXpvbmVTdHJpbmc/OiBzdHJpbmc7XG5cdHRleHRPbmx5UHJvcGVydGllc0Zyb21UZXh0QW5ub3RhdGlvbjogc3RyaW5nW107XG5cdGV4cG9ydERhdGFQb2ludFRhcmdldFZhbHVlPzogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBJZGVudGlmaWVzIGlmIHRoZSBnaXZlbiBkYXRhRmllbGRBYnN0cmFjdCB0aGF0IGlzIHBhc3NlZCBpcyBhIFwiRGF0YUZpZWxkRm9yQWN0aW9uQWJzdHJhY3RcIi5cbiAqIERhdGFGaWVsZEZvckFjdGlvbkFic3RyYWN0IGhhcyBhbiBpbmxpbmUgYWN0aW9uIGRlZmluZWQuXG4gKlxuICogQHBhcmFtIGRhdGFGaWVsZCBEYXRhRmllbGQgdG8gYmUgZXZhbHVhdGVkXG4gKiBAcmV0dXJucyBWYWxpZGF0ZXMgdGhhdCBkYXRhRmllbGQgaXMgYSBEYXRhRmllbGRGb3JBY3Rpb25BYnN0cmFjdFR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRGF0YUZpZWxkRm9yQWN0aW9uQWJzdHJhY3QoZGF0YUZpZWxkOiBEYXRhRmllbGRBYnN0cmFjdFR5cGVzKTogZGF0YUZpZWxkIGlzIERhdGFGaWVsZEZvckFjdGlvbkFic3RyYWN0VHlwZXMge1xuXHRyZXR1cm4gKGRhdGFGaWVsZCBhcyBEYXRhRmllbGRGb3JBY3Rpb25BYnN0cmFjdFR5cGVzKS5oYXNPd25Qcm9wZXJ0eShcIkFjdGlvblwiKTtcbn1cblxuLyoqXG4gKiBJZGVudGlmaWVzIGlmIHRoZSBnaXZlbiBkYXRhRmllbGRBYnN0cmFjdCB0aGF0IGlzIHBhc3NlZCBpcyBhIFwiRGF0YUZpZWxkXCIuXG4gKiBEYXRhRmllbGQgaGFzIGEgdmFsdWUgZGVmaW5lZC5cbiAqXG4gKiBAcGFyYW0gZGF0YUZpZWxkIERhdGFGaWVsZCB0byBiZSBldmFsdWF0ZWRcbiAqIEByZXR1cm5zIFZhbGlkYXRlIHRoYXQgZGF0YUZpZWxkIGlzIGEgRGF0YUZpZWxkVHlwZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRGF0YUZpZWxkVHlwZXMoZGF0YUZpZWxkOiBEYXRhRmllbGRBYnN0cmFjdFR5cGVzKTogZGF0YUZpZWxkIGlzIERhdGFGaWVsZFR5cGVzIHtcblx0cmV0dXJuIChkYXRhRmllbGQgYXMgRGF0YUZpZWxkVHlwZXMpLmhhc093blByb3BlcnR5KFwiVmFsdWVcIik7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBUYXJnZXRWYWx1ZSBmcm9tIGEgRGF0YVBvaW50LlxuICpcbiAqIEBwYXJhbSBzb3VyY2UgdGhlIHRhcmdldCBwcm9wZXJ0eSBvciBEYXRhUG9pbnRcbiAqIEByZXR1cm5zIFRoZSBUYXJnZXRWYWx1ZSBhcyBhIGRlY2ltYWwgb3IgYSBwcm9wZXJ0eSBwYXRoXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRhcmdldFZhbHVlT25EYXRhUG9pbnQoc291cmNlOiBQcm9wZXJ0eSB8IERhdGFQb2ludFR5cGUpOiBzdHJpbmcgfCBQcm9wZXJ0eVBhdGgge1xuXHRsZXQgdGFyZ2V0VmFsdWU6IHN0cmluZyB8IFByb3BlcnR5UGF0aCB8IG51bWJlcjtcblx0aWYgKGlzUHJvcGVydHkoc291cmNlKSkge1xuXHRcdHRhcmdldFZhbHVlID1cblx0XHRcdCgoc291cmNlLmFubm90YXRpb25zPy5VST8uRGF0YUZpZWxkRGVmYXVsdCBhcyBEYXRhRmllbGRGb3JBbm5vdGF0aW9uVHlwZXMpPy5UYXJnZXQ/LiR0YXJnZXQgYXMgRGF0YVBvaW50VHlwZSk/LlRhcmdldFZhbHVlID8/XG5cdFx0XHQoKHNvdXJjZS5hbm5vdGF0aW9ucz8uVUk/LkRhdGFGaWVsZERlZmF1bHQgYXMgRGF0YUZpZWxkRm9yQW5ub3RhdGlvblR5cGVzKT8uVGFyZ2V0Py4kdGFyZ2V0IGFzIERhdGFQb2ludFR5cGUpPy5NYXhpbXVtVmFsdWU7XG5cdH0gZWxzZSB7XG5cdFx0dGFyZ2V0VmFsdWUgPSBzb3VyY2UuVGFyZ2V0VmFsdWUgPz8gc291cmNlLk1heGltdW1WYWx1ZTtcblx0fVxuXHRpZiAodHlwZW9mIHRhcmdldFZhbHVlID09PSBcIm51bWJlclwiKSB7XG5cdFx0cmV0dXJuIHRhcmdldFZhbHVlLnRvU3RyaW5nKCk7XG5cdH1cblx0cmV0dXJuIGlzUGF0aEV4cHJlc3Npb24odGFyZ2V0VmFsdWUpID8gdGFyZ2V0VmFsdWUgOiBcIjEwMFwiO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgcHJvcGVydHkgdXNlcyBhIERhdGFQb2ludCB3aXRoaW4gYSBEYXRhRmllbGREZWZhdWx0LlxuICpcbiAqIEBwYXJhbSBwcm9wZXJ0eSBUaGUgcHJvcGVydHkgdG8gYmUgY2hlY2tlZFxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSByZWZlcmVuY2VkIHByb3BlcnR5IGhhcyBhIERhdGFQb2ludCB3aXRoaW4gdGhlIERhdGFGaWVsZERlZmF1bHQsIGZhbHNlIGVsc2VcbiAqIEBwcml2YXRlXG4gKi9cblxuZXhwb3J0IGNvbnN0IGlzRGF0YVBvaW50RnJvbURhdGFGaWVsZERlZmF1bHQgPSBmdW5jdGlvbiAocHJvcGVydHk6IFByb3BlcnR5KTogYm9vbGVhbiB7XG5cdHJldHVybiAoXG5cdFx0KHByb3BlcnR5LmFubm90YXRpb25zPy5VST8uRGF0YUZpZWxkRGVmYXVsdCBhcyBEYXRhRmllbGRGb3JBbm5vdGF0aW9uKT8uVGFyZ2V0Py4kdGFyZ2V0Py4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuRGF0YVBvaW50VHlwZVxuXHQpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlbWFudGljT2JqZWN0UGF0aChjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LCBvYmplY3Q6IGFueSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGlmICh0eXBlb2Ygb2JqZWN0ID09PSBcIm9iamVjdFwiKSB7XG5cdFx0aWYgKGlzRGF0YUZpZWxkVHlwZXMob2JqZWN0KSAmJiBvYmplY3QuVmFsdWU/LiR0YXJnZXQpIHtcblx0XHRcdGNvbnN0IHByb3BlcnR5ID0gb2JqZWN0LlZhbHVlPy4kdGFyZ2V0O1xuXHRcdFx0aWYgKHByb3BlcnR5Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5TZW1hbnRpY09iamVjdCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdHJldHVybiBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgocHJvcGVydHk/LmZ1bGx5UXVhbGlmaWVkTmFtZSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChpc1Byb3BlcnR5KG9iamVjdCkpIHtcblx0XHRcdGlmIChvYmplY3Q/LmFubm90YXRpb25zPy5Db21tb24/LlNlbWFudGljT2JqZWN0ICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0cmV0dXJuIGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aChvYmplY3Q/LmZ1bGx5UXVhbGlmaWVkTmFtZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgbmF2aWdhdGlvbiBwYXRoIHByZWZpeCBmb3IgYSBwcm9wZXJ0eSBwYXRoLlxuICpcbiAqIEBwYXJhbSBwYXRoIFRoZSBwcm9wZXJ0eSBwYXRoIEZvciBlLmcuIC9FbnRpdHlUeXBlL05hdmlnYXRpb24vUHJvcGVydHlcbiAqIEByZXR1cm5zIFRoZSBuYXZpZ2F0aW9uIHBhdGggcHJlZml4IEZvciBlLmcuIC9FbnRpdHlUeXBlL05hdmlnYXRpb24vXG4gKi9cbmZ1bmN0aW9uIF9nZXROYXZpZ2F0aW9uUGF0aFByZWZpeChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRyZXR1cm4gcGF0aC5pbmRleE9mKFwiL1wiKSA+IC0xID8gcGF0aC5zdWJzdHJpbmcoMCwgcGF0aC5sYXN0SW5kZXhPZihcIi9cIikgKyAxKSA6IFwiXCI7XG59XG5cbi8qKlxuICogQ29sbGVjdCBhZGRpdGlvbmFsIHByb3BlcnRpZXMgZm9yIHRoZSBBTFAgdGFibGUgdXNlLWNhc2UuXG4gKlxuICogRm9yIGUuZy4gSWYgVUkuSGlkZGVuIHBvaW50cyB0byBhIHByb3BlcnR5LCBpbmNsdWRlIHRoaXMgcHJvcGVydHkgaW4gdGhlIGFkZGl0aW9uYWxQcm9wZXJ0aWVzIG9mIENvbXBsZXhQcm9wZXJ0eUluZm8gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB0YXJnZXQgUHJvcGVydHkgb3IgRGF0YUZpZWxkIGJlaW5nIHByb2Nlc3NlZFxuICogQHBhcmFtIG5hdmlnYXRpb25QYXRoUHJlZml4IE5hdmlnYXRpb24gcGF0aCBwcmVmaXgsIGFwcGxpY2FibGUgaW4gY2FzZSBvZiBuYXZpZ2F0aW9uIHByb3BlcnRpZXMuXG4gKiBAcGFyYW0gdGFibGVUeXBlIFRhYmxlIHR5cGUuXG4gKiBAcGFyYW0gcmVsYXRlZFByb3BlcnRpZXMgVGhlIHJlbGF0ZWQgcHJvcGVydGllcyBpZGVudGlmaWVkIHNvIGZhci5cbiAqIEByZXR1cm5zIFRoZSByZWxhdGVkIHByb3BlcnRpZXMgaWRlbnRpZmllZC5cbiAqL1xuZnVuY3Rpb24gX2NvbGxlY3RBZGRpdGlvbmFsUHJvcGVydGllc0ZvckFuYWx5dGljYWxUYWJsZShcblx0dGFyZ2V0OiBQcmltaXRpdmVUeXBlLFxuXHRuYXZpZ2F0aW9uUGF0aFByZWZpeDogc3RyaW5nLFxuXHR0YWJsZVR5cGU6IFRhYmxlVHlwZSxcblx0cmVsYXRlZFByb3BlcnRpZXM6IENvbXBsZXhQcm9wZXJ0eUluZm9cbik6IENvbXBsZXhQcm9wZXJ0eUluZm8ge1xuXHRpZiAodGFibGVUeXBlID09PSBcIkFuYWx5dGljYWxUYWJsZVwiKSB7XG5cdFx0Y29uc3QgaGlkZGVuQW5ub3RhdGlvbiA9IHRhcmdldC5hbm5vdGF0aW9ucz8uVUk/LkhpZGRlbjtcblx0XHRpZiAoaGlkZGVuQW5ub3RhdGlvbj8ucGF0aCAmJiBpc1Byb3BlcnR5KGhpZGRlbkFubm90YXRpb24uJHRhcmdldCkpIHtcblx0XHRcdGNvbnN0IGhpZGRlbkFubm90YXRpb25Qcm9wZXJ0eVBhdGggPSBuYXZpZ2F0aW9uUGF0aFByZWZpeCArIGhpZGRlbkFubm90YXRpb24ucGF0aDtcblx0XHRcdC8vIFRoaXMgcHJvcGVydHkgc2hvdWxkIGJlIGFkZGVkIHRvIGFkZGl0aW9uYWxQcm9wZXJ0aWVzIG1hcCBmb3IgdGhlIEFMUCB0YWJsZSB1c2UtY2FzZS5cblx0XHRcdHJlbGF0ZWRQcm9wZXJ0aWVzLmFkZGl0aW9uYWxQcm9wZXJ0aWVzW2hpZGRlbkFubm90YXRpb25Qcm9wZXJ0eVBhdGhdID0gaGlkZGVuQW5ub3RhdGlvbi4kdGFyZ2V0O1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gcmVsYXRlZFByb3BlcnRpZXM7XG59XG5cbi8qKlxuICogQ29sbGVjdCByZWxhdGVkIHByb3BlcnRpZXMgZnJvbSBhIHByb3BlcnR5J3MgYW5ub3RhdGlvbnMuXG4gKlxuICogQHBhcmFtIHBhdGggVGhlIHByb3BlcnR5IHBhdGhcbiAqIEBwYXJhbSBwcm9wZXJ0eSBUaGUgcHJvcGVydHkgdG8gYmUgY29uc2lkZXJlZFxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHQgVGhlIGNvbnZlcnRlciBjb250ZXh0XG4gKiBAcGFyYW0gaWdub3JlU2VsZiBXaGV0aGVyIHRvIGV4Y2x1ZGUgdGhlIHNhbWUgcHJvcGVydHkgZnJvbSByZWxhdGVkIHByb3BlcnRpZXMuXG4gKiBAcGFyYW0gdGFibGVUeXBlIFRoZSB0YWJsZSB0eXBlLlxuICogQHBhcmFtIHJlbGF0ZWRQcm9wZXJ0aWVzIFRoZSByZWxhdGVkIHByb3BlcnRpZXMgaWRlbnRpZmllZCBzbyBmYXIuXG4gKiBAcGFyYW0gYWRkVW5pdEluVGVtcGxhdGUgVHJ1ZSBpZiB0aGUgdW5pdC9jdXJyZW5jeSBwcm9wZXJ0eSBuZWVkcyB0byBiZSBhZGRlZCBpbiB0aGUgZXhwb3J0IHRlbXBsYXRlXG4gKiBAcGFyYW0gaXNBbm5vdGF0ZWRBc0hpZGRlbiBUcnVlIGlmIHRoZSBEYXRhRmllbGQgb3IgdGhlIHByb3BlcnR5IGFyZSBzdGF0aWNhbGx5IGhpZGRlblxuICogQHJldHVybnMgVGhlIHJlbGF0ZWQgcHJvcGVydGllcyBpZGVudGlmaWVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29sbGVjdFJlbGF0ZWRQcm9wZXJ0aWVzKFxuXHRwYXRoOiBzdHJpbmcsXG5cdHByb3BlcnR5OiBQcmltaXRpdmVUeXBlLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRpZ25vcmVTZWxmOiBib29sZWFuLFxuXHR0YWJsZVR5cGU6IFRhYmxlVHlwZSxcblx0cmVsYXRlZFByb3BlcnRpZXM6IENvbXBsZXhQcm9wZXJ0eUluZm8gPSB7IHByb3BlcnRpZXM6IHt9LCBhZGRpdGlvbmFsUHJvcGVydGllczoge30sIHRleHRPbmx5UHJvcGVydGllc0Zyb21UZXh0QW5ub3RhdGlvbjogW10gfSxcblx0YWRkVW5pdEluVGVtcGxhdGU6IGJvb2xlYW4gPSBmYWxzZSxcblx0aXNBbm5vdGF0ZWRBc0hpZGRlbjogYm9vbGVhbiA9IGZhbHNlXG4pOiBDb21wbGV4UHJvcGVydHlJbmZvIHtcblx0LyoqXG5cdCAqIEhlbHBlciB0byBwdXNoIHVuaXF1ZSByZWxhdGVkIHByb3BlcnRpZXMuXG5cdCAqXG5cdCAqIEBwYXJhbSBrZXkgVGhlIHByb3BlcnR5IHBhdGhcblx0ICogQHBhcmFtIHZhbHVlIFRoZSBwcm9wZXJ0aWVzIG9iamVjdCBjb250YWluaW5nIHZhbHVlIHByb3BlcnR5LCBkZXNjcmlwdGlvbiBwcm9wZXJ0eS4uLlxuXHQgKiBAcmV0dXJucyBJbmRleCBhdCB3aGljaCB0aGUgcHJvcGVydHkgaXMgYXZhaWxhYmxlXG5cdCAqL1xuXHRmdW5jdGlvbiBfcHVzaFVuaXF1ZShrZXk6IHN0cmluZywgdmFsdWU6IFByb3BlcnR5KTogbnVtYmVyIHtcblx0XHRpZiAoIXJlbGF0ZWRQcm9wZXJ0aWVzLnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuXHRcdFx0cmVsYXRlZFByb3BlcnRpZXMucHJvcGVydGllc1trZXldID0gdmFsdWU7XG5cdFx0fVxuXHRcdHJldHVybiBPYmplY3Qua2V5cyhyZWxhdGVkUHJvcGVydGllcy5wcm9wZXJ0aWVzKS5pbmRleE9mKGtleSk7XG5cdH1cblxuXHQvKipcblx0ICogSGVscGVyIHRvIGFwcGVuZCB0aGUgZXhwb3J0IHNldHRpbmdzIHRlbXBsYXRlIHdpdGggYSBmb3JtYXR0ZWQgdGV4dC5cblx0ICpcblx0ICogQHBhcmFtIHZhbHVlIEZvcm1hdHRlZCB0ZXh0XG5cdCAqL1xuXHRmdW5jdGlvbiBfYXBwZW5kVGVtcGxhdGUodmFsdWU6IHN0cmluZykge1xuXHRcdHJlbGF0ZWRQcm9wZXJ0aWVzLmV4cG9ydFNldHRpbmdzVGVtcGxhdGUgPSByZWxhdGVkUHJvcGVydGllcy5leHBvcnRTZXR0aW5nc1RlbXBsYXRlXG5cdFx0XHQ/IGAke3JlbGF0ZWRQcm9wZXJ0aWVzLmV4cG9ydFNldHRpbmdzVGVtcGxhdGV9JHt2YWx1ZX1gXG5cdFx0XHQ6IGAke3ZhbHVlfWA7XG5cdH1cblx0aWYgKHBhdGggJiYgcHJvcGVydHkpIHtcblx0XHRsZXQgdmFsdWVJbmRleDogbnVtYmVyO1xuXHRcdGxldCB0YXJnZXRWYWx1ZTogc3RyaW5nIHwgUHJvcGVydHlQYXRoO1xuXHRcdGxldCBjdXJyZW5jeU9yVW9NSW5kZXg6IG51bWJlcjtcblx0XHRsZXQgdGltZXpvbmVPclVvTUluZGV4OiBudW1iZXI7XG5cdFx0bGV0IGRhdGFQb2ludEluZGV4OiBudW1iZXI7XG5cdFx0aWYgKGlzQW5ub3RhdGVkQXNIaWRkZW4pIHtcblx0XHRcdC8vIENvbGxlY3QgdW5kZXJseWluZyBwcm9wZXJ0eVxuXHRcdFx0dmFsdWVJbmRleCA9IF9wdXNoVW5pcXVlKHBhdGgsIHByb3BlcnR5KTtcblx0XHRcdF9hcHBlbmRUZW1wbGF0ZShgeyR7dmFsdWVJbmRleH19YCk7XG5cdFx0XHRyZXR1cm4gcmVsYXRlZFByb3BlcnRpZXM7XG5cdFx0fVxuXHRcdGNvbnN0IG5hdmlnYXRpb25QYXRoUHJlZml4ID0gX2dldE5hdmlnYXRpb25QYXRoUHJlZml4KHBhdGgpO1xuXG5cdFx0Ly8gQ2hlY2sgZm9yIFRleHQgYW5ub3RhdGlvbi5cblx0XHRjb25zdCB0ZXh0QW5ub3RhdGlvbiA9IHByb3BlcnR5LmFubm90YXRpb25zPy5Db21tb24/LlRleHQ7XG5cblx0XHRpZiAocmVsYXRlZFByb3BlcnRpZXMuZXhwb3J0U2V0dGluZ3NUZW1wbGF0ZSkge1xuXHRcdFx0Ly8gRmllbGRHcm91cCB1c2UtY2FzZS4gTmVlZCB0byBhZGQgZWFjaCBGaWVsZCBpbiBuZXcgbGluZS5cblx0XHRcdF9hcHBlbmRUZW1wbGF0ZShcIlxcblwiKTtcblx0XHRcdHJlbGF0ZWRQcm9wZXJ0aWVzLmV4cG9ydFNldHRpbmdzV3JhcHBpbmcgPSB0cnVlO1xuXHRcdH1cblxuXHRcdGlmICh0ZXh0QW5ub3RhdGlvbj8ucGF0aCAmJiB0ZXh0QW5ub3RhdGlvbj8uJHRhcmdldCkge1xuXHRcdFx0Ly8gQ2hlY2sgZm9yIFRleHQgQXJyYW5nZW1lbnQuXG5cdFx0XHRjb25zdCBkYXRhTW9kZWxPYmplY3RQYXRoID0gY29udmVydGVyQ29udGV4dC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCk7XG5cdFx0XHRjb25zdCB0ZXh0QW5ub3RhdGlvblByb3BlcnR5UGF0aCA9IG5hdmlnYXRpb25QYXRoUHJlZml4ICsgdGV4dEFubm90YXRpb24ucGF0aDtcblx0XHRcdGNvbnN0IGRpc3BsYXlNb2RlID0gZ2V0RGlzcGxheU1vZGUocHJvcGVydHksIGRhdGFNb2RlbE9iamVjdFBhdGgpO1xuXHRcdFx0bGV0IGRlc2NyaXB0aW9uSW5kZXg6IG51bWJlcjtcblx0XHRcdHN3aXRjaCAoZGlzcGxheU1vZGUpIHtcblx0XHRcdFx0Y2FzZSBcIlZhbHVlXCI6XG5cdFx0XHRcdFx0dmFsdWVJbmRleCA9IF9wdXNoVW5pcXVlKHBhdGgsIHByb3BlcnR5KTtcblx0XHRcdFx0XHRfYXBwZW5kVGVtcGxhdGUoYHske3ZhbHVlSW5kZXh9fWApO1xuXHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdGNhc2UgXCJEZXNjcmlwdGlvblwiOlxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uSW5kZXggPSBfcHVzaFVuaXF1ZSh0ZXh0QW5ub3RhdGlvblByb3BlcnR5UGF0aCwgdGV4dEFubm90YXRpb24uJHRhcmdldCk7XG5cdFx0XHRcdFx0X2FwcGVuZFRlbXBsYXRlKGB7JHtkZXNjcmlwdGlvbkluZGV4fX1gKTtcblx0XHRcdFx0XHRyZWxhdGVkUHJvcGVydGllcy50ZXh0T25seVByb3BlcnRpZXNGcm9tVGV4dEFubm90YXRpb24ucHVzaCh0ZXh0QW5ub3RhdGlvblByb3BlcnR5UGF0aCk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdFx0Y2FzZSBcIlZhbHVlRGVzY3JpcHRpb25cIjpcblx0XHRcdFx0XHR2YWx1ZUluZGV4ID0gX3B1c2hVbmlxdWUocGF0aCwgcHJvcGVydHkpO1xuXHRcdFx0XHRcdGRlc2NyaXB0aW9uSW5kZXggPSBfcHVzaFVuaXF1ZSh0ZXh0QW5ub3RhdGlvblByb3BlcnR5UGF0aCwgdGV4dEFubm90YXRpb24uJHRhcmdldCk7XG5cdFx0XHRcdFx0X2FwcGVuZFRlbXBsYXRlKGB7JHt2YWx1ZUluZGV4fX0gKHske2Rlc2NyaXB0aW9uSW5kZXh9fSlgKTtcblx0XHRcdFx0XHRicmVhaztcblxuXHRcdFx0XHRjYXNlIFwiRGVzY3JpcHRpb25WYWx1ZVwiOlxuXHRcdFx0XHRcdHZhbHVlSW5kZXggPSBfcHVzaFVuaXF1ZShwYXRoLCBwcm9wZXJ0eSk7XG5cdFx0XHRcdFx0ZGVzY3JpcHRpb25JbmRleCA9IF9wdXNoVW5pcXVlKHRleHRBbm5vdGF0aW9uUHJvcGVydHlQYXRoLCB0ZXh0QW5ub3RhdGlvbi4kdGFyZ2V0KTtcblx0XHRcdFx0XHRfYXBwZW5kVGVtcGxhdGUoYHske2Rlc2NyaXB0aW9uSW5kZXh9fSAoeyR7dmFsdWVJbmRleH19KWApO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHQvLyBubyBkZWZhdWx0XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIENoZWNrIGZvciBmaWVsZCBjb250YWluaW5nIEN1cnJlbmN5IE9yIFVuaXQgUHJvcGVydGllcyBvciBUaW1lem9uZVxuXHRcdFx0Y29uc3QgY3VycmVuY3lPclVvTVByb3BlcnR5ID0gZ2V0QXNzb2NpYXRlZEN1cnJlbmN5UHJvcGVydHkocHJvcGVydHkpIHx8IGdldEFzc29jaWF0ZWRVbml0UHJvcGVydHkocHJvcGVydHkpO1xuXHRcdFx0Y29uc3QgY3VycmVuY3lPclVuaXRBbm5vdGF0aW9uID0gcHJvcGVydHk/LmFubm90YXRpb25zPy5NZWFzdXJlcz8uSVNPQ3VycmVuY3kgfHwgcHJvcGVydHk/LmFubm90YXRpb25zPy5NZWFzdXJlcz8uVW5pdDtcblx0XHRcdGNvbnN0IHRpbWV6b25lUHJvcGVydHkgPSBnZXRBc3NvY2lhdGVkVGltZXpvbmVQcm9wZXJ0eShwcm9wZXJ0eSk7XG5cdFx0XHRjb25zdCB0aW1lem9uZUFubm90YXRpb24gPSBwcm9wZXJ0eT8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uVGltZXpvbmU7XG5cblx0XHRcdGlmIChjdXJyZW5jeU9yVW9NUHJvcGVydHkgJiYgY3VycmVuY3lPclVuaXRBbm5vdGF0aW9uPy4kdGFyZ2V0KSB7XG5cdFx0XHRcdHZhbHVlSW5kZXggPSBfcHVzaFVuaXF1ZShwYXRoLCBwcm9wZXJ0eSk7XG5cdFx0XHRcdGN1cnJlbmN5T3JVb01JbmRleCA9IF9wdXNoVW5pcXVlKG5hdmlnYXRpb25QYXRoUHJlZml4ICsgY3VycmVuY3lPclVuaXRBbm5vdGF0aW9uLnBhdGgsIGN1cnJlbmN5T3JVbml0QW5ub3RhdGlvbi4kdGFyZ2V0KTtcblx0XHRcdFx0aWYgKGFkZFVuaXRJblRlbXBsYXRlKSB7XG5cdFx0XHRcdFx0X2FwcGVuZFRlbXBsYXRlKGB7JHt2YWx1ZUluZGV4fX0gIHske2N1cnJlbmN5T3JVb01JbmRleH19YCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmVsYXRlZFByb3BlcnRpZXMuZXhwb3J0VW5pdE5hbWUgPSBuYXZpZ2F0aW9uUGF0aFByZWZpeCArIGN1cnJlbmN5T3JVbml0QW5ub3RhdGlvbi5wYXRoO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYgKHRpbWV6b25lUHJvcGVydHkgJiYgdGltZXpvbmVBbm5vdGF0aW9uPy4kdGFyZ2V0KSB7XG5cdFx0XHRcdHZhbHVlSW5kZXggPSBfcHVzaFVuaXF1ZShwYXRoLCBwcm9wZXJ0eSk7XG5cdFx0XHRcdHRpbWV6b25lT3JVb01JbmRleCA9IF9wdXNoVW5pcXVlKG5hdmlnYXRpb25QYXRoUHJlZml4ICsgdGltZXpvbmVBbm5vdGF0aW9uLnBhdGgsIHRpbWV6b25lQW5ub3RhdGlvbi4kdGFyZ2V0KTtcblx0XHRcdFx0aWYgKGFkZFVuaXRJblRlbXBsYXRlKSB7XG5cdFx0XHRcdFx0X2FwcGVuZFRlbXBsYXRlKGB7JHt2YWx1ZUluZGV4fX0gIHske3RpbWV6b25lT3JVb01JbmRleH19YCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmVsYXRlZFByb3BlcnRpZXMuZXhwb3J0VGltZXpvbmVOYW1lID0gbmF2aWdhdGlvblBhdGhQcmVmaXggKyB0aW1lem9uZUFubm90YXRpb24ucGF0aDtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0KHByb3BlcnR5LlRhcmdldD8uJHRhcmdldD8uJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFQb2ludFR5cGUgJiYgIXByb3BlcnR5LlRhcmdldD8uJHRhcmdldD8uVmFsdWVGb3JtYXQpIHx8XG5cdFx0XHRcdHByb3BlcnR5LmFubm90YXRpb25zPy5VST8uRGF0YUZpZWxkRGVmYXVsdD8uVGFyZ2V0Py4kdGFyZ2V0Py4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuRGF0YVBvaW50VHlwZVxuXHRcdFx0KSB7XG5cdFx0XHRcdGNvbnN0IGRhdGFQb2ludFByb3BlcnR5ID0gcHJvcGVydHkuVGFyZ2V0Py4kdGFyZ2V0Py5WYWx1ZS4kdGFyZ2V0IGFzIFByb3BlcnR5O1xuXHRcdFx0XHRjb25zdCBkYXRhcG9pbnRUYXJnZXQgPSBwcm9wZXJ0eS5UYXJnZXQ/LiR0YXJnZXQ7XG5cdFx0XHRcdC8vIERhdGFQb2ludCB1c2UtY2FzZSB1c2luZyBEYXRhRmllbGREZWZhdWx0LlxuXHRcdFx0XHRjb25zdCBkYXRhUG9pbnREZWZhdWx0UHJvcGVydHkgPSBwcm9wZXJ0eS5hbm5vdGF0aW9ucz8uVUk/LkRhdGFGaWVsZERlZmF1bHQ7XG5cdFx0XHRcdHZhbHVlSW5kZXggPSBfcHVzaFVuaXF1ZShcblx0XHRcdFx0XHRuYXZpZ2F0aW9uUGF0aFByZWZpeCA/IG5hdmlnYXRpb25QYXRoUHJlZml4ICsgcGF0aCA6IHBhdGgsXG5cdFx0XHRcdFx0ZGF0YVBvaW50RGVmYXVsdFByb3BlcnR5ID8gcHJvcGVydHkgOiBkYXRhUG9pbnRQcm9wZXJ0eVxuXHRcdFx0XHQpO1xuXHRcdFx0XHR0YXJnZXRWYWx1ZSA9IGdldFRhcmdldFZhbHVlT25EYXRhUG9pbnQoZGF0YVBvaW50RGVmYXVsdFByb3BlcnR5ID8gcHJvcGVydHkgOiBkYXRhcG9pbnRUYXJnZXQpO1xuXHRcdFx0XHRpZiAoaXNQcm9wZXJ0eSgodGFyZ2V0VmFsdWUgYXMgUHJvcGVydHlQYXRoKS4kdGFyZ2V0KSkge1xuXHRcdFx0XHRcdC8vaW4gY2FzZSBpdCdzIGEgZHluYW1pYyB0YXJnZXRWYWx1ZVxuXHRcdFx0XHRcdHRhcmdldFZhbHVlID0gdGFyZ2V0VmFsdWUgYXMgUHJvcGVydHlQYXRoO1xuXHRcdFx0XHRcdGRhdGFQb2ludEluZGV4ID0gX3B1c2hVbmlxdWUoXG5cdFx0XHRcdFx0XHRuYXZpZ2F0aW9uUGF0aFByZWZpeCA/IG5hdmlnYXRpb25QYXRoUHJlZml4ICsgdGFyZ2V0VmFsdWUuJHRhcmdldC5uYW1lIDogdGFyZ2V0VmFsdWUuJHRhcmdldC5uYW1lLFxuXHRcdFx0XHRcdFx0dGFyZ2V0VmFsdWUuJHRhcmdldFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0X2FwcGVuZFRlbXBsYXRlKGB7JHt2YWx1ZUluZGV4fX0veyR7ZGF0YVBvaW50SW5kZXh9fWApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJlbGF0ZWRQcm9wZXJ0aWVzLmV4cG9ydERhdGFQb2ludFRhcmdldFZhbHVlID0gdGFyZ2V0VmFsdWUgYXMgc3RyaW5nO1xuXHRcdFx0XHRcdF9hcHBlbmRUZW1wbGF0ZShgeyR7dmFsdWVJbmRleH19LyR7dGFyZ2V0VmFsdWV9YCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAocHJvcGVydHkuJFR5cGUgPT09IENvbW11bmljYXRpb25Bbm5vdGF0aW9uVHlwZXMuQ29udGFjdFR5cGUpIHtcblx0XHRcdFx0Y29uc3QgY29udGFjdFByb3BlcnR5ID0gcHJvcGVydHkuZm4/LiR0YXJnZXQ7XG5cdFx0XHRcdGNvbnN0IGNvbnRhY3RQcm9wZXJ0eVBhdGggPSBwcm9wZXJ0eS5mbj8ucGF0aDtcblx0XHRcdFx0dmFsdWVJbmRleCA9IF9wdXNoVW5pcXVlKFxuXHRcdFx0XHRcdG5hdmlnYXRpb25QYXRoUHJlZml4ID8gbmF2aWdhdGlvblBhdGhQcmVmaXggKyBjb250YWN0UHJvcGVydHlQYXRoIDogY29udGFjdFByb3BlcnR5UGF0aCxcblx0XHRcdFx0XHRjb250YWN0UHJvcGVydHlcblx0XHRcdFx0KTtcblx0XHRcdFx0X2FwcGVuZFRlbXBsYXRlKGB7JHt2YWx1ZUluZGV4fX1gKTtcblx0XHRcdH0gZWxzZSBpZiAoIWlnbm9yZVNlbGYpIHtcblx0XHRcdFx0Ly8gQ29sbGVjdCB1bmRlcmx5aW5nIHByb3BlcnR5XG5cdFx0XHRcdHZhbHVlSW5kZXggPSBfcHVzaFVuaXF1ZShwYXRoLCBwcm9wZXJ0eSk7XG5cdFx0XHRcdF9hcHBlbmRUZW1wbGF0ZShgeyR7dmFsdWVJbmRleH19YCk7XG5cdFx0XHRcdGlmIChjdXJyZW5jeU9yVW5pdEFubm90YXRpb24pIHtcblx0XHRcdFx0XHRyZWxhdGVkUHJvcGVydGllcy5leHBvcnRVbml0U3RyaW5nID0gYCR7Y3VycmVuY3lPclVuaXRBbm5vdGF0aW9ufWA7IC8vIEhhcmQtY29kZWQgY3VycmVuY3kvdW5pdFxuXHRcdFx0XHR9IGVsc2UgaWYgKHRpbWV6b25lQW5ub3RhdGlvbikge1xuXHRcdFx0XHRcdHJlbGF0ZWRQcm9wZXJ0aWVzLmV4cG9ydFRpbWV6b25lU3RyaW5nID0gYCR7dGltZXpvbmVBbm5vdGF0aW9ufWA7IC8vIEhhcmQtY29kZWQgdGltZXpvbmVcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJlbGF0ZWRQcm9wZXJ0aWVzID0gX2NvbGxlY3RBZGRpdGlvbmFsUHJvcGVydGllc0ZvckFuYWx5dGljYWxUYWJsZShwcm9wZXJ0eSwgbmF2aWdhdGlvblBhdGhQcmVmaXgsIHRhYmxlVHlwZSwgcmVsYXRlZFByb3BlcnRpZXMpO1xuXHRcdGlmIChPYmplY3Qua2V5cyhyZWxhdGVkUHJvcGVydGllcy5hZGRpdGlvbmFsUHJvcGVydGllcykubGVuZ3RoID4gMCAmJiBPYmplY3Qua2V5cyhyZWxhdGVkUHJvcGVydGllcy5wcm9wZXJ0aWVzKS5sZW5ndGggPT09IDApIHtcblx0XHRcdC8vIENvbGxlY3QgdW5kZXJseWluZyBwcm9wZXJ0eSBpZiBub3QgY29sbGVjdGVkIGFscmVhZHkuXG5cdFx0XHQvLyBUaGlzIGlzIHRvIGVuc3VyZSB0aGF0IGFkZGl0aW9uYWxQcm9wZXJ0aWVzIGFyZSBtYWRlIGF2YWlsYWJsZSBvbmx5IHRvIGNvbXBsZXggcHJvcGVydHkgaW5mb3MuXG5cdFx0XHR2YWx1ZUluZGV4ID0gX3B1c2hVbmlxdWUocGF0aCwgcHJvcGVydHkpO1xuXHRcdFx0X2FwcGVuZFRlbXBsYXRlKGB7JHt2YWx1ZUluZGV4fX1gKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHJlbGF0ZWRQcm9wZXJ0aWVzO1xufVxuXG4vKipcbiAqIENvbGxlY3QgcHJvcGVydGllcyBjb25zdW1lZCBieSBhIERhdGFGaWVsZC5cbiAqIFRoaXMgaXMgZm9yIHBvcHVsYXRpbmcgdGhlIENvbXBsZXhQcm9wZXJ0eUluZm9zIG9mIHRoZSB0YWJsZSBkZWxlZ2F0ZS5cbiAqXG4gKiBAcGFyYW0gZGF0YUZpZWxkIFRoZSBEYXRhRmllbGQgZm9yIHdoaWNoIHRoZSBwcm9wZXJ0aWVzIG5lZWQgdG8gYmUgaWRlbnRpZmllZC5cbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0IFRoZSBjb252ZXJ0ZXIgY29udGV4dC5cbiAqIEBwYXJhbSB0YWJsZVR5cGUgVGhlIHRhYmxlIHR5cGUuXG4gKiBAcGFyYW0gcmVsYXRlZFByb3BlcnRpZXMgVGhlIHByb3BlcnRpZXMgaWRlbnRpZmllZCBzbyBmYXIuXG4gKiBAcGFyYW0gaXNFbWJlZGRlZCBUcnVlIGlmIHRoZSBEYXRhRmllbGQgaXMgZW1iZWRkZWQgaW4gYW5vdGhlciBhbm5vdGF0aW9uIChlLmcuIEZpZWxkR3JvdXApLlxuICogQHJldHVybnMgVGhlIHByb3BlcnRpZXMgcmVsYXRlZCB0byB0aGUgRGF0YUZpZWxkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29sbGVjdFJlbGF0ZWRQcm9wZXJ0aWVzUmVjdXJzaXZlbHkoXG5cdGRhdGFGaWVsZDogRGF0YUZpZWxkQWJzdHJhY3RUeXBlcyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0dGFibGVUeXBlOiBUYWJsZVR5cGUsXG5cdHJlbGF0ZWRQcm9wZXJ0aWVzOiBDb21wbGV4UHJvcGVydHlJbmZvID0geyBwcm9wZXJ0aWVzOiB7fSwgYWRkaXRpb25hbFByb3BlcnRpZXM6IHt9LCB0ZXh0T25seVByb3BlcnRpZXNGcm9tVGV4dEFubm90YXRpb246IFtdIH0sXG5cdGlzRW1iZWRkZWQ6IGJvb2xlYW4gPSBmYWxzZVxuKTogQ29tcGxleFByb3BlcnR5SW5mbyB7XG5cdGxldCBpc1N0YXRpY2FsbHlIaWRkZW4gPSBmYWxzZTtcblx0c3dpdGNoIChkYXRhRmllbGQ/LiRUeXBlKSB7XG5cdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGQ6XG5cdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoVXJsOlxuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aE5hdmlnYXRpb25QYXRoOlxuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aEludGVudEJhc2VkTmF2aWdhdGlvbjpcblx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhBY3Rpb246XG5cdFx0XHRpZiAoZGF0YUZpZWxkLlZhbHVlKSB7XG5cdFx0XHRcdGNvbnN0IHByb3BlcnR5ID0gZGF0YUZpZWxkLlZhbHVlO1xuXHRcdFx0XHRpc1N0YXRpY2FsbHlIaWRkZW4gPVxuXHRcdFx0XHRcdGlzUmVmZXJlbmNlUHJvcGVydHlTdGF0aWNhbGx5SGlkZGVuKHByb3BlcnR5LiR0YXJnZXQ/LmFubm90YXRpb25zPy5VST8uRGF0YUZpZWxkRGVmYXVsdCkgfHxcblx0XHRcdFx0XHRpc1JlZmVyZW5jZVByb3BlcnR5U3RhdGljYWxseUhpZGRlbihkYXRhRmllbGQpIHx8XG5cdFx0XHRcdFx0ZmFsc2U7XG5cdFx0XHRcdHJlbGF0ZWRQcm9wZXJ0aWVzID0gY29sbGVjdFJlbGF0ZWRQcm9wZXJ0aWVzKFxuXHRcdFx0XHRcdHByb3BlcnR5LnBhdGgsXG5cdFx0XHRcdFx0cHJvcGVydHkuJHRhcmdldCxcblx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0LFxuXHRcdFx0XHRcdGZhbHNlLFxuXHRcdFx0XHRcdHRhYmxlVHlwZSxcblx0XHRcdFx0XHRyZWxhdGVkUHJvcGVydGllcyxcblx0XHRcdFx0XHRpc0VtYmVkZGVkLFxuXHRcdFx0XHRcdGlzU3RhdGljYWxseUhpZGRlblxuXHRcdFx0XHQpO1xuXHRcdFx0XHRjb25zdCBuYXZpZ2F0aW9uUGF0aFByZWZpeCA9IF9nZXROYXZpZ2F0aW9uUGF0aFByZWZpeChwcm9wZXJ0eS5wYXRoKTtcblx0XHRcdFx0cmVsYXRlZFByb3BlcnRpZXMgPSBfY29sbGVjdEFkZGl0aW9uYWxQcm9wZXJ0aWVzRm9yQW5hbHl0aWNhbFRhYmxlKFxuXHRcdFx0XHRcdGRhdGFGaWVsZCxcblx0XHRcdFx0XHRuYXZpZ2F0aW9uUGF0aFByZWZpeCxcblx0XHRcdFx0XHR0YWJsZVR5cGUsXG5cdFx0XHRcdFx0cmVsYXRlZFByb3BlcnRpZXNcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXG5cdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JBY3Rpb246XG5cdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb246XG5cdFx0XHRicmVhaztcblxuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9yQW5ub3RhdGlvbjpcblx0XHRcdHN3aXRjaCAoZGF0YUZpZWxkLlRhcmdldD8uJHRhcmdldD8uJFR5cGUpIHtcblx0XHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5GaWVsZEdyb3VwVHlwZTpcblx0XHRcdFx0XHRkYXRhRmllbGQuVGFyZ2V0LiR0YXJnZXQuRGF0YT8uZm9yRWFjaCgoaW5uZXJEYXRhRmllbGQ6IERhdGFGaWVsZEFic3RyYWN0VHlwZXMpID0+IHtcblx0XHRcdFx0XHRcdHJlbGF0ZWRQcm9wZXJ0aWVzID0gY29sbGVjdFJlbGF0ZWRQcm9wZXJ0aWVzUmVjdXJzaXZlbHkoXG5cdFx0XHRcdFx0XHRcdGlubmVyRGF0YUZpZWxkLFxuXHRcdFx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0LFxuXHRcdFx0XHRcdFx0XHR0YWJsZVR5cGUsXG5cdFx0XHRcdFx0XHRcdHJlbGF0ZWRQcm9wZXJ0aWVzLFxuXHRcdFx0XHRcdFx0XHR0cnVlXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YVBvaW50VHlwZTpcblx0XHRcdFx0XHRpc1N0YXRpY2FsbHlIaWRkZW4gPSBpc1JlZmVyZW5jZVByb3BlcnR5U3RhdGljYWxseUhpZGRlbihkYXRhRmllbGQpID8/IGZhbHNlO1xuXHRcdFx0XHRcdHJlbGF0ZWRQcm9wZXJ0aWVzID0gY29sbGVjdFJlbGF0ZWRQcm9wZXJ0aWVzKFxuXHRcdFx0XHRcdFx0ZGF0YUZpZWxkLlRhcmdldC4kdGFyZ2V0LlZhbHVlLnBhdGgsXG5cdFx0XHRcdFx0XHRkYXRhRmllbGQsXG5cdFx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0LFxuXHRcdFx0XHRcdFx0ZmFsc2UsXG5cdFx0XHRcdFx0XHR0YWJsZVR5cGUsXG5cdFx0XHRcdFx0XHRyZWxhdGVkUHJvcGVydGllcyxcblx0XHRcdFx0XHRcdGlzRW1iZWRkZWQsXG5cdFx0XHRcdFx0XHRpc1N0YXRpY2FsbHlIaWRkZW5cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdGNhc2UgQ29tbXVuaWNhdGlvbkFubm90YXRpb25UeXBlcy5Db250YWN0VHlwZTpcblx0XHRcdFx0XHRjb25zdCBkYXRhRmllbGRDb250YWN0ID0gZGF0YUZpZWxkLlRhcmdldC4kdGFyZ2V0IGFzIENvbnRhY3Q7XG5cdFx0XHRcdFx0aXNTdGF0aWNhbGx5SGlkZGVuID0gaXNSZWZlcmVuY2VQcm9wZXJ0eVN0YXRpY2FsbHlIaWRkZW4oZGF0YUZpZWxkKSA/PyBmYWxzZTtcblx0XHRcdFx0XHRyZWxhdGVkUHJvcGVydGllcyA9IGNvbGxlY3RSZWxhdGVkUHJvcGVydGllcyhcblx0XHRcdFx0XHRcdGRhdGFGaWVsZC5UYXJnZXQudmFsdWUsXG5cdFx0XHRcdFx0XHRkYXRhRmllbGRDb250YWN0LFxuXHRcdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dCxcblx0XHRcdFx0XHRcdGlzU3RhdGljYWxseUhpZGRlbixcblx0XHRcdFx0XHRcdHRhYmxlVHlwZSxcblx0XHRcdFx0XHRcdHJlbGF0ZWRQcm9wZXJ0aWVzLFxuXHRcdFx0XHRcdFx0aXNFbWJlZGRlZCxcblx0XHRcdFx0XHRcdGlzU3RhdGljYWxseUhpZGRlblxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblxuXHRcdGRlZmF1bHQ6XG5cdFx0XHRicmVhaztcblx0fVxuXG5cdHJldHVybiByZWxhdGVkUHJvcGVydGllcztcbn1cblxuZXhwb3J0IGNvbnN0IGdldERhdGFGaWVsZERhdGFUeXBlID0gZnVuY3Rpb24gKG9EYXRhRmllbGQ6IERhdGFGaWVsZEFic3RyYWN0VHlwZXMgfCBQcm9wZXJ0eSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGxldCBzRGF0YVR5cGU6IHN0cmluZyB8IHVuZGVmaW5lZCA9IChvRGF0YUZpZWxkIGFzIERhdGFGaWVsZEFic3RyYWN0VHlwZXMpLiRUeXBlO1xuXHRzd2l0Y2ggKHNEYXRhVHlwZSkge1xuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9yQWN0aW9uOlxuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uOlxuXHRcdFx0c0RhdGFUeXBlID0gdW5kZWZpbmVkO1xuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZDpcblx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aDpcblx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhVcmw6XG5cdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoSW50ZW50QmFzZWROYXZpZ2F0aW9uOlxuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aEFjdGlvbjpcblx0XHRcdHNEYXRhVHlwZSA9IChvRGF0YUZpZWxkIGFzIERhdGFGaWVsZCk/LlZhbHVlPy4kdGFyZ2V0Py50eXBlO1xuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckFubm90YXRpb246XG5cdFx0ZGVmYXVsdDpcblx0XHRcdGNvbnN0IHNEYXRhVHlwZUZvckRhdGFGaWVsZEZvckFubm90YXRpb24gPSAob0RhdGFGaWVsZCBhcyBEYXRhRmllbGRGb3JBbm5vdGF0aW9uKS5UYXJnZXQ/LiR0YXJnZXQ/LiRUeXBlO1xuXHRcdFx0aWYgKHNEYXRhVHlwZUZvckRhdGFGaWVsZEZvckFubm90YXRpb24pIHtcblx0XHRcdFx0aWYgKChvRGF0YUZpZWxkIGFzIERhdGFGaWVsZEZvckFubm90YXRpb24pLlRhcmdldD8uJHRhcmdldC4kVHlwZSA9PT0gQ29tbXVuaWNhdGlvbkFubm90YXRpb25UeXBlcy5Db250YWN0VHlwZSkge1xuXHRcdFx0XHRcdHNEYXRhVHlwZSA9ICgoKG9EYXRhRmllbGQgYXMgRGF0YUZpZWxkRm9yQW5ub3RhdGlvbikuVGFyZ2V0Py4kdGFyZ2V0IGFzIENvbnRhY3QpPy5mbiBhcyBhbnkpLiR0YXJnZXQ/LnR5cGU7XG5cdFx0XHRcdH0gZWxzZSBpZiAoKG9EYXRhRmllbGQgYXMgRGF0YUZpZWxkRm9yQW5ub3RhdGlvbikuVGFyZ2V0Py4kdGFyZ2V0LiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5EYXRhUG9pbnRUeXBlKSB7XG5cdFx0XHRcdFx0c0RhdGFUeXBlID1cblx0XHRcdFx0XHRcdCgob0RhdGFGaWVsZCBhcyBEYXRhRmllbGRGb3JBbm5vdGF0aW9uKS5UYXJnZXQ/LiR0YXJnZXQgYXMgRGF0YVBvaW50KT8uVmFsdWU/LiRQYXRoPy4kVHlwZSB8fFxuXHRcdFx0XHRcdFx0KChvRGF0YUZpZWxkIGFzIERhdGFGaWVsZEZvckFubm90YXRpb24pLlRhcmdldD8uJHRhcmdldCBhcyBEYXRhUG9pbnQpPy5WYWx1ZT8uJHRhcmdldC50eXBlO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIGUuZy4gRmllbGRHcm91cCBvciBDaGFydFxuXHRcdFx0XHRcdC8vIEZpZWxkR3JvdXAgUHJvcGVydGllcyBoYXZlIG5vIHR5cGUsIHNvIHdlIGRlZmluZSBpdCBhcyBhIGJvb2xlYW4gdHlwZSB0byBwcmV2ZW50IGV4Y2VwdGlvbnMgZHVyaW5nIHRoZSBjYWxjdWxhdGlvbiBvZiB0aGUgd2lkdGhcblx0XHRcdFx0XHRzRGF0YVR5cGUgPVxuXHRcdFx0XHRcdFx0KG9EYXRhRmllbGQgYXMgRGF0YUZpZWxkRm9yQW5ub3RhdGlvbikuVGFyZ2V0Py4kdGFyZ2V0LiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNoYXJ0RGVmaW5pdGlvblR5cGVcIlxuXHRcdFx0XHRcdFx0XHQ/IHVuZGVmaW5lZFxuXHRcdFx0XHRcdFx0XHQ6IFwiRWRtLkJvb2xlYW5cIjtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0c0RhdGFUeXBlID0gdW5kZWZpbmVkO1xuXHRcdFx0fVxuXHRcdFx0YnJlYWs7XG5cdH1cblxuXHRyZXR1cm4gc0RhdGFUeXBlO1xufTtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7O0VBdUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ08sU0FBU0EsNEJBQTRCLENBQUNDLFNBQWlDLEVBQWdEO0lBQzdILE9BQVFBLFNBQVMsQ0FBcUNDLGNBQWMsQ0FBQyxRQUFRLENBQUM7RUFDL0U7O0VBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFOQTtFQU9PLFNBQVNDLGdCQUFnQixDQUFDRixTQUFpQyxFQUErQjtJQUNoRyxPQUFRQSxTQUFTLENBQW9CQyxjQUFjLENBQUMsT0FBTyxDQUFDO0VBQzdEOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUxBO0VBT08sU0FBU0UseUJBQXlCLENBQUNDLE1BQWdDLEVBQXlCO0lBQ2xHLElBQUlDLFdBQTJDO0lBQy9DLElBQUlDLFVBQVUsQ0FBQ0YsTUFBTSxDQUFDLEVBQUU7TUFBQTtNQUN2QkMsV0FBVyxHQUNWLHdCQUFFRCxNQUFNLENBQUNHLFdBQVcsaUZBQWxCLG9CQUFvQkMsRUFBRSxvRkFBdEIsc0JBQXdCQyxnQkFBZ0IscUZBQXpDLHVCQUEyRUMsTUFBTSxxRkFBakYsdUJBQW1GQyxPQUFPLDJEQUEzRix1QkFBK0dDLFdBQVcsOEJBQ3hIUixNQUFNLENBQUNHLFdBQVcsa0ZBQWxCLHFCQUFvQkMsRUFBRSxvRkFBdEIsc0JBQXdCQyxnQkFBZ0IscUZBQXpDLHVCQUEyRUMsTUFBTSxxRkFBakYsdUJBQW1GQyxPQUFPLDJEQUEzRix1QkFBK0dFLFlBQVk7SUFDN0gsQ0FBQyxNQUFNO01BQ05SLFdBQVcsR0FBR0QsTUFBTSxDQUFDUSxXQUFXLElBQUlSLE1BQU0sQ0FBQ1MsWUFBWTtJQUN4RDtJQUNBLElBQUksT0FBT1IsV0FBVyxLQUFLLFFBQVEsRUFBRTtNQUNwQyxPQUFPQSxXQUFXLENBQUNTLFFBQVEsRUFBRTtJQUM5QjtJQUNBLE9BQU9DLGdCQUFnQixDQUFDVixXQUFXLENBQUMsR0FBR0EsV0FBVyxHQUFHLEtBQUs7RUFDM0Q7O0VBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFOQTtFQVFPLE1BQU1XLCtCQUErQixHQUFHLFVBQVVDLFFBQWtCLEVBQVc7SUFBQTtJQUNyRixPQUNDLDBCQUFDQSxRQUFRLENBQUNWLFdBQVcsb0ZBQXBCLHNCQUFzQkMsRUFBRSxxRkFBeEIsdUJBQTBCQyxnQkFBZ0IscUZBQTNDLHVCQUF3RUMsTUFBTSxxRkFBOUUsdUJBQWdGQyxPQUFPLDJEQUF2Rix1QkFBeUZPLEtBQUssZ0RBQW9DO0VBRXBJLENBQUM7RUFBQztFQUVLLFNBQVNDLHFCQUFxQixDQUFDQyxnQkFBa0MsRUFBRUMsTUFBVyxFQUFzQjtJQUMxRyxJQUFJLE9BQU9BLE1BQU0sS0FBSyxRQUFRLEVBQUU7TUFBQTtNQUMvQixJQUFJbkIsZ0JBQWdCLENBQUNtQixNQUFNLENBQUMscUJBQUlBLE1BQU0sQ0FBQ0MsS0FBSywwQ0FBWixjQUFjWCxPQUFPLEVBQUU7UUFBQTtRQUN0RCxNQUFNTSxRQUFRLHFCQUFHSSxNQUFNLENBQUNDLEtBQUssbURBQVosZUFBY1gsT0FBTztRQUN0QyxJQUFJLENBQUFNLFFBQVEsYUFBUkEsUUFBUSxpREFBUkEsUUFBUSxDQUFFVixXQUFXLHFGQUFyQix1QkFBdUJnQixNQUFNLDJEQUE3Qix1QkFBK0JDLGNBQWMsTUFBS0MsU0FBUyxFQUFFO1VBQ2hFLE9BQU9MLGdCQUFnQixDQUFDTSwrQkFBK0IsQ0FBQ1QsUUFBUSxhQUFSQSxRQUFRLHVCQUFSQSxRQUFRLENBQUVVLGtCQUFrQixDQUFDO1FBQ3RGO01BQ0QsQ0FBQyxNQUFNLElBQUlyQixVQUFVLENBQUNlLE1BQU0sQ0FBQyxFQUFFO1FBQUE7UUFDOUIsSUFBSSxDQUFBQSxNQUFNLGFBQU5BLE1BQU0sOENBQU5BLE1BQU0sQ0FBRWQsV0FBVyxpRkFBbkIsb0JBQXFCZ0IsTUFBTSwwREFBM0Isc0JBQTZCQyxjQUFjLE1BQUtDLFNBQVMsRUFBRTtVQUM5RCxPQUFPTCxnQkFBZ0IsQ0FBQ00sK0JBQStCLENBQUNMLE1BQU0sYUFBTkEsTUFBTSx1QkFBTkEsTUFBTSxDQUFFTSxrQkFBa0IsQ0FBQztRQUNwRjtNQUNEO0lBQ0Q7SUFDQSxPQUFPRixTQUFTO0VBQ2pCOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUxBO0VBTUEsU0FBU0csd0JBQXdCLENBQUNDLElBQVksRUFBVTtJQUN2RCxPQUFPQSxJQUFJLENBQUNDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBR0QsSUFBSSxDQUFDRSxTQUFTLENBQUMsQ0FBQyxFQUFFRixJQUFJLENBQUNHLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFO0VBQ2xGOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQSxTQUFTQyw4Q0FBOEMsQ0FDdERDLE1BQXFCLEVBQ3JCQyxvQkFBNEIsRUFDNUJDLFNBQW9CLEVBQ3BCQyxpQkFBc0MsRUFDaEI7SUFDdEIsSUFBSUQsU0FBUyxLQUFLLGlCQUFpQixFQUFFO01BQUE7TUFDcEMsTUFBTUUsZ0JBQWdCLDBCQUFHSixNQUFNLENBQUMzQixXQUFXLGlGQUFsQixvQkFBb0JDLEVBQUUsMERBQXRCLHNCQUF3QitCLE1BQU07TUFDdkQsSUFBSUQsZ0JBQWdCLGFBQWhCQSxnQkFBZ0IsZUFBaEJBLGdCQUFnQixDQUFFVCxJQUFJLElBQUl2QixVQUFVLENBQUNnQyxnQkFBZ0IsQ0FBQzNCLE9BQU8sQ0FBQyxFQUFFO1FBQ25FLE1BQU02Qiw0QkFBNEIsR0FBR0wsb0JBQW9CLEdBQUdHLGdCQUFnQixDQUFDVCxJQUFJO1FBQ2pGO1FBQ0FRLGlCQUFpQixDQUFDSSxvQkFBb0IsQ0FBQ0QsNEJBQTRCLENBQUMsR0FBR0YsZ0JBQWdCLENBQUMzQixPQUFPO01BQ2hHO0lBQ0Q7SUFDQSxPQUFPMEIsaUJBQWlCO0VBQ3pCOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ08sU0FBU0ssd0JBQXdCLENBQ3ZDYixJQUFZLEVBQ1paLFFBQXVCLEVBQ3ZCRyxnQkFBa0MsRUFDbEN1QixVQUFtQixFQUNuQlAsU0FBb0IsRUFJRTtJQUFBLElBSHRCQyxpQkFBc0MsdUVBQUc7TUFBRU8sVUFBVSxFQUFFLENBQUMsQ0FBQztNQUFFSCxvQkFBb0IsRUFBRSxDQUFDLENBQUM7TUFBRUksb0NBQW9DLEVBQUU7SUFBRyxDQUFDO0lBQUEsSUFDL0hDLGlCQUEwQix1RUFBRyxLQUFLO0lBQUEsSUFDbENDLG1CQUE0Qix1RUFBRyxLQUFLO0lBRXBDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0MsU0FBU0MsV0FBVyxDQUFDQyxHQUFXLEVBQUVDLEtBQWUsRUFBVTtNQUMxRCxJQUFJLENBQUNiLGlCQUFpQixDQUFDTyxVQUFVLENBQUMzQyxjQUFjLENBQUNnRCxHQUFHLENBQUMsRUFBRTtRQUN0RFosaUJBQWlCLENBQUNPLFVBQVUsQ0FBQ0ssR0FBRyxDQUFDLEdBQUdDLEtBQUs7TUFDMUM7TUFDQSxPQUFPQyxNQUFNLENBQUNDLElBQUksQ0FBQ2YsaUJBQWlCLENBQUNPLFVBQVUsQ0FBQyxDQUFDZCxPQUFPLENBQUNtQixHQUFHLENBQUM7SUFDOUQ7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtJQUNDLFNBQVNJLGVBQWUsQ0FBQ0gsS0FBYSxFQUFFO01BQ3ZDYixpQkFBaUIsQ0FBQ2lCLHNCQUFzQixHQUFHakIsaUJBQWlCLENBQUNpQixzQkFBc0IsR0FDL0UsR0FBRWpCLGlCQUFpQixDQUFDaUIsc0JBQXVCLEdBQUVKLEtBQU0sRUFBQyxHQUNwRCxHQUFFQSxLQUFNLEVBQUM7SUFDZDtJQUNBLElBQUlyQixJQUFJLElBQUlaLFFBQVEsRUFBRTtNQUFBO01BQ3JCLElBQUlzQyxVQUFrQjtNQUN0QixJQUFJbEQsV0FBa0M7TUFDdEMsSUFBSW1ELGtCQUEwQjtNQUM5QixJQUFJQyxrQkFBMEI7TUFDOUIsSUFBSUMsY0FBc0I7TUFDMUIsSUFBSVgsbUJBQW1CLEVBQUU7UUFDeEI7UUFDQVEsVUFBVSxHQUFHUCxXQUFXLENBQUNuQixJQUFJLEVBQUVaLFFBQVEsQ0FBQztRQUN4Q29DLGVBQWUsQ0FBRSxJQUFHRSxVQUFXLEdBQUUsQ0FBQztRQUNsQyxPQUFPbEIsaUJBQWlCO01BQ3pCO01BQ0EsTUFBTUYsb0JBQW9CLEdBQUdQLHdCQUF3QixDQUFDQyxJQUFJLENBQUM7O01BRTNEO01BQ0EsTUFBTThCLGNBQWMsNkJBQUcxQyxRQUFRLENBQUNWLFdBQVcscUZBQXBCLHVCQUFzQmdCLE1BQU0sMkRBQTVCLHVCQUE4QnFDLElBQUk7TUFFekQsSUFBSXZCLGlCQUFpQixDQUFDaUIsc0JBQXNCLEVBQUU7UUFDN0M7UUFDQUQsZUFBZSxDQUFDLElBQUksQ0FBQztRQUNyQmhCLGlCQUFpQixDQUFDd0Isc0JBQXNCLEdBQUcsSUFBSTtNQUNoRDtNQUVBLElBQUlGLGNBQWMsYUFBZEEsY0FBYyxlQUFkQSxjQUFjLENBQUU5QixJQUFJLElBQUk4QixjQUFjLGFBQWRBLGNBQWMsZUFBZEEsY0FBYyxDQUFFaEQsT0FBTyxFQUFFO1FBQ3BEO1FBQ0EsTUFBTW1ELG1CQUFtQixHQUFHMUMsZ0JBQWdCLENBQUMyQyxzQkFBc0IsRUFBRTtRQUNyRSxNQUFNQywwQkFBMEIsR0FBRzdCLG9CQUFvQixHQUFHd0IsY0FBYyxDQUFDOUIsSUFBSTtRQUM3RSxNQUFNb0MsV0FBVyxHQUFHQyxjQUFjLENBQUNqRCxRQUFRLEVBQUU2QyxtQkFBbUIsQ0FBQztRQUNqRSxJQUFJSyxnQkFBd0I7UUFDNUIsUUFBUUYsV0FBVztVQUNsQixLQUFLLE9BQU87WUFDWFYsVUFBVSxHQUFHUCxXQUFXLENBQUNuQixJQUFJLEVBQUVaLFFBQVEsQ0FBQztZQUN4Q29DLGVBQWUsQ0FBRSxJQUFHRSxVQUFXLEdBQUUsQ0FBQztZQUNsQztVQUVELEtBQUssYUFBYTtZQUNqQlksZ0JBQWdCLEdBQUduQixXQUFXLENBQUNnQiwwQkFBMEIsRUFBRUwsY0FBYyxDQUFDaEQsT0FBTyxDQUFDO1lBQ2xGMEMsZUFBZSxDQUFFLElBQUdjLGdCQUFpQixHQUFFLENBQUM7WUFDeEM5QixpQkFBaUIsQ0FBQ1Esb0NBQW9DLENBQUN1QixJQUFJLENBQUNKLDBCQUEwQixDQUFDO1lBQ3ZGO1VBRUQsS0FBSyxrQkFBa0I7WUFDdEJULFVBQVUsR0FBR1AsV0FBVyxDQUFDbkIsSUFBSSxFQUFFWixRQUFRLENBQUM7WUFDeENrRCxnQkFBZ0IsR0FBR25CLFdBQVcsQ0FBQ2dCLDBCQUEwQixFQUFFTCxjQUFjLENBQUNoRCxPQUFPLENBQUM7WUFDbEYwQyxlQUFlLENBQUUsSUFBR0UsVUFBVyxPQUFNWSxnQkFBaUIsSUFBRyxDQUFDO1lBQzFEO1VBRUQsS0FBSyxrQkFBa0I7WUFDdEJaLFVBQVUsR0FBR1AsV0FBVyxDQUFDbkIsSUFBSSxFQUFFWixRQUFRLENBQUM7WUFDeENrRCxnQkFBZ0IsR0FBR25CLFdBQVcsQ0FBQ2dCLDBCQUEwQixFQUFFTCxjQUFjLENBQUNoRCxPQUFPLENBQUM7WUFDbEYwQyxlQUFlLENBQUUsSUFBR2MsZ0JBQWlCLE9BQU1aLFVBQVcsSUFBRyxDQUFDO1lBQzFEO1VBQ0Q7UUFBQTtNQUVGLENBQUMsTUFBTTtRQUFBO1FBQ047UUFDQSxNQUFNYyxxQkFBcUIsR0FBR0MsNkJBQTZCLENBQUNyRCxRQUFRLENBQUMsSUFBSXNELHlCQUF5QixDQUFDdEQsUUFBUSxDQUFDO1FBQzVHLE1BQU11RCx3QkFBd0IsR0FBRyxDQUFBdkQsUUFBUSxhQUFSQSxRQUFRLGtEQUFSQSxRQUFRLENBQUVWLFdBQVcsdUZBQXJCLHdCQUF1QmtFLFFBQVEsNERBQS9CLHdCQUFpQ0MsV0FBVyxNQUFJekQsUUFBUSxhQUFSQSxRQUFRLGtEQUFSQSxRQUFRLENBQUVWLFdBQVcsdUZBQXJCLHdCQUF1QmtFLFFBQVEsNERBQS9CLHdCQUFpQ0UsSUFBSTtRQUN0SCxNQUFNQyxnQkFBZ0IsR0FBR0MsNkJBQTZCLENBQUM1RCxRQUFRLENBQUM7UUFDaEUsTUFBTTZELGtCQUFrQixHQUFHN0QsUUFBUSxhQUFSQSxRQUFRLGtEQUFSQSxRQUFRLENBQUVWLFdBQVcsdUZBQXJCLHdCQUF1QmdCLE1BQU0sNERBQTdCLHdCQUErQndELFFBQVE7UUFFbEUsSUFBSVYscUJBQXFCLElBQUlHLHdCQUF3QixhQUF4QkEsd0JBQXdCLGVBQXhCQSx3QkFBd0IsQ0FBRTdELE9BQU8sRUFBRTtVQUMvRDRDLFVBQVUsR0FBR1AsV0FBVyxDQUFDbkIsSUFBSSxFQUFFWixRQUFRLENBQUM7VUFDeEN1QyxrQkFBa0IsR0FBR1IsV0FBVyxDQUFDYixvQkFBb0IsR0FBR3FDLHdCQUF3QixDQUFDM0MsSUFBSSxFQUFFMkMsd0JBQXdCLENBQUM3RCxPQUFPLENBQUM7VUFDeEgsSUFBSW1DLGlCQUFpQixFQUFFO1lBQ3RCTyxlQUFlLENBQUUsSUFBR0UsVUFBVyxPQUFNQyxrQkFBbUIsR0FBRSxDQUFDO1VBQzVELENBQUMsTUFBTTtZQUNObkIsaUJBQWlCLENBQUMyQyxjQUFjLEdBQUc3QyxvQkFBb0IsR0FBR3FDLHdCQUF3QixDQUFDM0MsSUFBSTtVQUN4RjtRQUNELENBQUMsTUFBTSxJQUFJK0MsZ0JBQWdCLElBQUlFLGtCQUFrQixhQUFsQkEsa0JBQWtCLGVBQWxCQSxrQkFBa0IsQ0FBRW5FLE9BQU8sRUFBRTtVQUMzRDRDLFVBQVUsR0FBR1AsV0FBVyxDQUFDbkIsSUFBSSxFQUFFWixRQUFRLENBQUM7VUFDeEN3QyxrQkFBa0IsR0FBR1QsV0FBVyxDQUFDYixvQkFBb0IsR0FBRzJDLGtCQUFrQixDQUFDakQsSUFBSSxFQUFFaUQsa0JBQWtCLENBQUNuRSxPQUFPLENBQUM7VUFDNUcsSUFBSW1DLGlCQUFpQixFQUFFO1lBQ3RCTyxlQUFlLENBQUUsSUFBR0UsVUFBVyxPQUFNRSxrQkFBbUIsR0FBRSxDQUFDO1VBQzVELENBQUMsTUFBTTtZQUNOcEIsaUJBQWlCLENBQUM0QyxrQkFBa0IsR0FBRzlDLG9CQUFvQixHQUFHMkMsa0JBQWtCLENBQUNqRCxJQUFJO1VBQ3RGO1FBQ0QsQ0FBQyxNQUFNLElBQ0wscUJBQUFaLFFBQVEsQ0FBQ1AsTUFBTSw4RUFBZixpQkFBaUJDLE9BQU8sMERBQXhCLHNCQUEwQk8sS0FBSyxnREFBb0MsSUFBSSx1QkFBQ0QsUUFBUSxDQUFDUCxNQUFNLHVFQUFmLGtCQUFpQkMsT0FBTyxrREFBeEIsc0JBQTBCdUUsV0FBVyxLQUM5Ryw0QkFBQWpFLFFBQVEsQ0FBQ1YsV0FBVyx1RkFBcEIsd0JBQXNCQyxFQUFFLHVGQUF4Qix3QkFBMEJDLGdCQUFnQix1RkFBMUMsd0JBQTRDQyxNQUFNLHVGQUFsRCx3QkFBb0RDLE9BQU8sNERBQTNELHdCQUE2RE8sS0FBSyxnREFBb0MsRUFDckc7VUFBQTtVQUNELE1BQU1pRSxpQkFBaUIsd0JBQUdsRSxRQUFRLENBQUNQLE1BQU0sK0VBQWYsa0JBQWlCQyxPQUFPLDBEQUF4QixzQkFBMEJXLEtBQUssQ0FBQ1gsT0FBbUI7VUFDN0UsTUFBTXlFLGVBQWUsd0JBQUduRSxRQUFRLENBQUNQLE1BQU0sc0RBQWYsa0JBQWlCQyxPQUFPO1VBQ2hEO1VBQ0EsTUFBTTBFLHdCQUF3Qiw4QkFBR3BFLFFBQVEsQ0FBQ1YsV0FBVyx1RkFBcEIsd0JBQXNCQyxFQUFFLDREQUF4Qix3QkFBMEJDLGdCQUFnQjtVQUMzRThDLFVBQVUsR0FBR1AsV0FBVyxDQUN2QmIsb0JBQW9CLEdBQUdBLG9CQUFvQixHQUFHTixJQUFJLEdBQUdBLElBQUksRUFDekR3RCx3QkFBd0IsR0FBR3BFLFFBQVEsR0FBR2tFLGlCQUFpQixDQUN2RDtVQUNEOUUsV0FBVyxHQUFHRix5QkFBeUIsQ0FBQ2tGLHdCQUF3QixHQUFHcEUsUUFBUSxHQUFHbUUsZUFBZSxDQUFDO1VBQzlGLElBQUk5RSxVQUFVLENBQUVELFdBQVcsQ0FBa0JNLE9BQU8sQ0FBQyxFQUFFO1lBQ3REO1lBQ0FOLFdBQVcsR0FBR0EsV0FBMkI7WUFDekNxRCxjQUFjLEdBQUdWLFdBQVcsQ0FDM0JiLG9CQUFvQixHQUFHQSxvQkFBb0IsR0FBRzlCLFdBQVcsQ0FBQ00sT0FBTyxDQUFDMkUsSUFBSSxHQUFHakYsV0FBVyxDQUFDTSxPQUFPLENBQUMyRSxJQUFJLEVBQ2pHakYsV0FBVyxDQUFDTSxPQUFPLENBQ25CO1lBQ0QwQyxlQUFlLENBQUUsSUFBR0UsVUFBVyxNQUFLRyxjQUFlLEdBQUUsQ0FBQztVQUN2RCxDQUFDLE1BQU07WUFDTnJCLGlCQUFpQixDQUFDa0QsMEJBQTBCLEdBQUdsRixXQUFxQjtZQUNwRWdELGVBQWUsQ0FBRSxJQUFHRSxVQUFXLEtBQUlsRCxXQUFZLEVBQUMsQ0FBQztVQUNsRDtRQUNELENBQUMsTUFBTSxJQUFJWSxRQUFRLENBQUNDLEtBQUssd0RBQTZDLEVBQUU7VUFBQTtVQUN2RSxNQUFNc0UsZUFBZSxtQkFBR3ZFLFFBQVEsQ0FBQ3dFLEVBQUUsaURBQVgsYUFBYTlFLE9BQU87VUFDNUMsTUFBTStFLG1CQUFtQixvQkFBR3pFLFFBQVEsQ0FBQ3dFLEVBQUUsa0RBQVgsY0FBYTVELElBQUk7VUFDN0MwQixVQUFVLEdBQUdQLFdBQVcsQ0FDdkJiLG9CQUFvQixHQUFHQSxvQkFBb0IsR0FBR3VELG1CQUFtQixHQUFHQSxtQkFBbUIsRUFDdkZGLGVBQWUsQ0FDZjtVQUNEbkMsZUFBZSxDQUFFLElBQUdFLFVBQVcsR0FBRSxDQUFDO1FBQ25DLENBQUMsTUFBTSxJQUFJLENBQUNaLFVBQVUsRUFBRTtVQUN2QjtVQUNBWSxVQUFVLEdBQUdQLFdBQVcsQ0FBQ25CLElBQUksRUFBRVosUUFBUSxDQUFDO1VBQ3hDb0MsZUFBZSxDQUFFLElBQUdFLFVBQVcsR0FBRSxDQUFDO1VBQ2xDLElBQUlpQix3QkFBd0IsRUFBRTtZQUM3Qm5DLGlCQUFpQixDQUFDc0QsZ0JBQWdCLEdBQUksR0FBRW5CLHdCQUF5QixFQUFDLENBQUMsQ0FBQztVQUNyRSxDQUFDLE1BQU0sSUFBSU0sa0JBQWtCLEVBQUU7WUFDOUJ6QyxpQkFBaUIsQ0FBQ3VELG9CQUFvQixHQUFJLEdBQUVkLGtCQUFtQixFQUFDLENBQUMsQ0FBQztVQUNuRTtRQUNEO01BQ0Q7O01BRUF6QyxpQkFBaUIsR0FBR0osOENBQThDLENBQUNoQixRQUFRLEVBQUVrQixvQkFBb0IsRUFBRUMsU0FBUyxFQUFFQyxpQkFBaUIsQ0FBQztNQUNoSSxJQUFJYyxNQUFNLENBQUNDLElBQUksQ0FBQ2YsaUJBQWlCLENBQUNJLG9CQUFvQixDQUFDLENBQUNvRCxNQUFNLEdBQUcsQ0FBQyxJQUFJMUMsTUFBTSxDQUFDQyxJQUFJLENBQUNmLGlCQUFpQixDQUFDTyxVQUFVLENBQUMsQ0FBQ2lELE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDN0g7UUFDQTtRQUNBdEMsVUFBVSxHQUFHUCxXQUFXLENBQUNuQixJQUFJLEVBQUVaLFFBQVEsQ0FBQztRQUN4Q29DLGVBQWUsQ0FBRSxJQUFHRSxVQUFXLEdBQUUsQ0FBQztNQUNuQztJQUNEO0lBQ0EsT0FBT2xCLGlCQUFpQjtFQUN6Qjs7RUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBVkE7RUFXTyxTQUFTeUQsbUNBQW1DLENBQ2xEOUYsU0FBaUMsRUFDakNvQixnQkFBa0MsRUFDbENnQixTQUFvQixFQUdFO0lBQUE7SUFBQSxJQUZ0QkMsaUJBQXNDLHVFQUFHO01BQUVPLFVBQVUsRUFBRSxDQUFDLENBQUM7TUFBRUgsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO01BQUVJLG9DQUFvQyxFQUFFO0lBQUcsQ0FBQztJQUFBLElBQy9Ia0QsVUFBbUIsdUVBQUcsS0FBSztJQUUzQixJQUFJQyxrQkFBa0IsR0FBRyxLQUFLO0lBQzlCLFFBQVFoRyxTQUFTLGFBQVRBLFNBQVMsdUJBQVRBLFNBQVMsQ0FBRWtCLEtBQUs7TUFDdkI7TUFDQTtNQUNBO01BQ0E7TUFDQTtRQUNDLElBQUlsQixTQUFTLENBQUNzQixLQUFLLEVBQUU7VUFBQTtVQUNwQixNQUFNTCxRQUFRLEdBQUdqQixTQUFTLENBQUNzQixLQUFLO1VBQ2hDMEUsa0JBQWtCLEdBQ2pCQyxtQ0FBbUMsc0JBQUNoRixRQUFRLENBQUNOLE9BQU8sK0VBQWhCLGtCQUFrQkosV0FBVyxvRkFBN0Isc0JBQStCQyxFQUFFLDJEQUFqQyx1QkFBbUNDLGdCQUFnQixDQUFDLElBQ3hGd0YsbUNBQW1DLENBQUNqRyxTQUFTLENBQUMsSUFDOUMsS0FBSztVQUNOcUMsaUJBQWlCLEdBQUdLLHdCQUF3QixDQUMzQ3pCLFFBQVEsQ0FBQ1ksSUFBSSxFQUNiWixRQUFRLENBQUNOLE9BQU8sRUFDaEJTLGdCQUFnQixFQUNoQixLQUFLLEVBQ0xnQixTQUFTLEVBQ1RDLGlCQUFpQixFQUNqQjBELFVBQVUsRUFDVkMsa0JBQWtCLENBQ2xCO1VBQ0QsTUFBTTdELG9CQUFvQixHQUFHUCx3QkFBd0IsQ0FBQ1gsUUFBUSxDQUFDWSxJQUFJLENBQUM7VUFDcEVRLGlCQUFpQixHQUFHSiw4Q0FBOEMsQ0FDakVqQyxTQUFTLEVBQ1RtQyxvQkFBb0IsRUFDcEJDLFNBQVMsRUFDVEMsaUJBQWlCLENBQ2pCO1FBQ0Y7UUFDQTtNQUVEO01BQ0E7UUFDQztNQUVEO1FBQ0MsNkJBQVFyQyxTQUFTLENBQUNVLE1BQU0sK0VBQWhCLGtCQUFrQkMsT0FBTywwREFBekIsc0JBQTJCTyxLQUFLO1VBQ3ZDO1lBQ0MsMEJBQUFsQixTQUFTLENBQUNVLE1BQU0sQ0FBQ0MsT0FBTyxDQUFDdUYsSUFBSSwyREFBN0IsdUJBQStCQyxPQUFPLENBQUVDLGNBQXNDLElBQUs7Y0FDbEYvRCxpQkFBaUIsR0FBR3lELG1DQUFtQyxDQUN0RE0sY0FBYyxFQUNkaEYsZ0JBQWdCLEVBQ2hCZ0IsU0FBUyxFQUNUQyxpQkFBaUIsRUFDakIsSUFBSSxDQUNKO1lBQ0YsQ0FBQyxDQUFDO1lBQ0Y7VUFFRDtZQUNDMkQsa0JBQWtCLEdBQUdDLG1DQUFtQyxDQUFDakcsU0FBUyxDQUFDLElBQUksS0FBSztZQUM1RXFDLGlCQUFpQixHQUFHSyx3QkFBd0IsQ0FDM0MxQyxTQUFTLENBQUNVLE1BQU0sQ0FBQ0MsT0FBTyxDQUFDVyxLQUFLLENBQUNPLElBQUksRUFDbkM3QixTQUFTLEVBQ1RvQixnQkFBZ0IsRUFDaEIsS0FBSyxFQUNMZ0IsU0FBUyxFQUNUQyxpQkFBaUIsRUFDakIwRCxVQUFVLEVBQ1ZDLGtCQUFrQixDQUNsQjtZQUNEO1VBRUQ7WUFDQyxNQUFNSyxnQkFBZ0IsR0FBR3JHLFNBQVMsQ0FBQ1UsTUFBTSxDQUFDQyxPQUFrQjtZQUM1RHFGLGtCQUFrQixHQUFHQyxtQ0FBbUMsQ0FBQ2pHLFNBQVMsQ0FBQyxJQUFJLEtBQUs7WUFDNUVxQyxpQkFBaUIsR0FBR0ssd0JBQXdCLENBQzNDMUMsU0FBUyxDQUFDVSxNQUFNLENBQUN3QyxLQUFLLEVBQ3RCbUQsZ0JBQWdCLEVBQ2hCakYsZ0JBQWdCLEVBQ2hCNEUsa0JBQWtCLEVBQ2xCNUQsU0FBUyxFQUNUQyxpQkFBaUIsRUFDakIwRCxVQUFVLEVBQ1ZDLGtCQUFrQixDQUNsQjtZQUNEO1VBQ0Q7WUFDQztRQUFNO1FBRVI7TUFFRDtRQUNDO0lBQU07SUFHUixPQUFPM0QsaUJBQWlCO0VBQ3pCO0VBQUM7RUFFTSxNQUFNaUUsb0JBQW9CLEdBQUcsVUFBVUMsVUFBNkMsRUFBc0I7SUFBQTtJQUNoSCxJQUFJQyxTQUE2QixHQUFJRCxVQUFVLENBQTRCckYsS0FBSztJQUNoRixRQUFRc0YsU0FBUztNQUNoQjtNQUNBO1FBQ0NBLFNBQVMsR0FBRy9FLFNBQVM7UUFDckI7TUFFRDtNQUNBO01BQ0E7TUFDQTtNQUNBO1FBQ0MrRSxTQUFTLEdBQUlELFVBQVUsYUFBVkEsVUFBVSxpQ0FBVkEsVUFBVSxDQUFnQmpGLEtBQUssNkRBQWhDLE9BQWtDWCxPQUFPLG1EQUF6QyxlQUEyQzhGLElBQUk7UUFDM0Q7TUFFRDtNQUNBO1FBQ0MsTUFBTUMsa0NBQWtDLGNBQUlILFVBQVUsQ0FBNEI3RixNQUFNLCtEQUE3QyxRQUErQ0MsT0FBTyxvREFBdEQsZ0JBQXdETyxLQUFLO1FBQ3hHLElBQUl3RixrQ0FBa0MsRUFBRTtVQUFBO1VBQ3ZDLElBQUksYUFBQ0gsVUFBVSxDQUE0QjdGLE1BQU0sNkNBQTdDLFNBQStDQyxPQUFPLENBQUNPLEtBQUsseURBQTZDLEVBQUU7WUFBQTtZQUM5R3NGLFNBQVMsZUFBRyxhQUFHRCxVQUFVLENBQTRCN0YsTUFBTSxpRUFBN0MsU0FBK0NDLE9BQU8scURBQXZELGlCQUFxRThFLEVBQUUsRUFBUzlFLE9BQU8sNkNBQXhGLFNBQTBGOEYsSUFBSTtVQUMzRyxDQUFDLE1BQU0sSUFBSSxhQUFDRixVQUFVLENBQTRCN0YsTUFBTSw2Q0FBN0MsU0FBK0NDLE9BQU8sQ0FBQ08sS0FBSyxnREFBb0MsRUFBRTtZQUFBO1lBQzVHc0YsU0FBUyxHQUNSLGFBQUVELFVBQVUsQ0FBNEI3RixNQUFNLGlFQUE3QyxTQUErQ0MsT0FBTyw4RUFBdkQsaUJBQXVFVyxLQUFLLG9GQUE1RSxzQkFBOEVxRixLQUFLLDJEQUFuRix1QkFBcUZ6RixLQUFLLGtCQUN4RnFGLFVBQVUsQ0FBNEI3RixNQUFNLGlFQUE3QyxTQUErQ0MsT0FBTyw4RUFBdkQsaUJBQXVFVyxLQUFLLDBEQUE1RSxzQkFBOEVYLE9BQU8sQ0FBQzhGLElBQUk7VUFDNUYsQ0FBQyxNQUFNO1lBQUE7WUFDTjtZQUNBO1lBQ0FELFNBQVMsR0FDUixhQUFDRCxVQUFVLENBQTRCN0YsTUFBTSw2Q0FBN0MsU0FBK0NDLE9BQU8sQ0FBQ08sS0FBSyxNQUFLLGdEQUFnRCxHQUM5R08sU0FBUyxHQUNULGFBQWE7VUFDbEI7UUFDRCxDQUFDLE1BQU07VUFDTitFLFNBQVMsR0FBRy9FLFNBQVM7UUFDdEI7UUFDQTtJQUFNO0lBR1IsT0FBTytFLFNBQVM7RUFDakIsQ0FBQztFQUFDO0VBQUE7QUFBQSJ9
|