@sapui5/sap.fe.core 1.102.2 → 1.104.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +6 -6
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/AppComponent.js +73 -30
- package/src/sap/fe/core/AppComponent.ts +65 -43
- package/src/sap/fe/core/AppStateHandler.js +82 -70
- package/src/sap/fe/core/AppStateHandler.ts +32 -37
- package/src/sap/fe/core/BaseController.js +11 -9
- package/src/sap/fe/core/BaseController.ts +15 -13
- package/src/sap/fe/core/CommonUtils.js +227 -126
- package/src/sap/fe/core/CommonUtils.ts +240 -163
- package/src/sap/fe/core/ExtensionAPI.js +24 -27
- package/src/sap/fe/core/ExtensionAPI.ts +36 -38
- package/src/sap/fe/core/PageController.js +4 -4
- package/src/sap/fe/core/PageController.ts +4 -5
- package/src/sap/fe/core/TemplateComponent.js +1 -1
- package/src/sap/fe/core/TemplateComponent.ts +6 -6
- package/src/sap/fe/core/TemplateModel.js +1 -1
- package/src/sap/fe/core/TemplateModel.ts +1 -1
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js +1 -1
- package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +1 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +181 -43
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +150 -24
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +585 -210
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +246 -96
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +30 -30
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +32 -29
- package/src/sap/fe/core/controllerextensions/EditFlow.js +379 -330
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +253 -245
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +9 -9
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +10 -10
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +101 -74
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +69 -79
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +67 -67
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +76 -76
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +85 -77
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +103 -99
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +66 -68
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +106 -123
- package/src/sap/fe/core/controllerextensions/MassEdit.js +9 -9
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +20 -27
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +20 -12
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +21 -14
- package/src/sap/fe/core/controllerextensions/PageReady.js +97 -25
- package/src/sap/fe/core/controllerextensions/PageReady.ts +98 -34
- package/src/sap/fe/core/controllerextensions/Paginator.js +21 -22
- package/src/sap/fe/core/controllerextensions/Paginator.ts +24 -25
- package/src/sap/fe/core/controllerextensions/Placeholder.js +4 -6
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +12 -14
- package/src/sap/fe/core/controllerextensions/Routing.js +10 -11
- package/src/sap/fe/core/controllerextensions/Routing.ts +12 -13
- package/src/sap/fe/core/controllerextensions/Share.js +170 -139
- package/src/sap/fe/core/controllerextensions/Share.ts +117 -118
- package/src/sap/fe/core/controllerextensions/SideEffects.js +46 -50
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +56 -60
- package/src/sap/fe/core/controllerextensions/ViewState.js +200 -131
- package/src/sap/fe/core/controllerextensions/ViewState.ts +141 -148
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +5 -5
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +8 -7
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +11 -10
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +17 -20
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +2 -2
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +4 -4
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +7 -9
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +18 -19
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +190 -141
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +258 -210
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +183 -125
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +213 -156
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +164 -140
- package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +180 -150
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +24 -26
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +35 -33
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +71 -41
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +102 -82
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +61 -71
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +56 -64
- package/src/sap/fe/core/controls/Any.js +9 -5
- package/src/sap/fe/core/controls/Any.ts +10 -4
- package/src/sap/fe/core/controls/CommandExecution.js +11 -25
- package/src/sap/fe/core/controls/CommandExecution.ts +11 -25
- package/src/sap/fe/core/controls/ConditionalWrapper.js +2 -2
- package/src/sap/fe/core/controls/ConditionalWrapper.ts +3 -3
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +22 -22
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +25 -24
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +2 -2
- package/src/sap/fe/core/controls/CustomQuickViewPage.ts +2 -2
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +3 -3
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +5 -5
- package/src/sap/fe/core/controls/FieldWrapper.js +2 -2
- package/src/sap/fe/core/controls/FieldWrapper.ts +3 -3
- package/src/sap/fe/core/controls/FileWrapper.js +7 -2
- package/src/sap/fe/core/controls/FileWrapper.ts +15 -11
- package/src/sap/fe/core/controls/FilterBar.js +6 -2
- package/src/sap/fe/core/controls/FilterBar.ts +13 -9
- package/src/sap/fe/core/controls/FormElementWrapper.js +1 -1
- package/src/sap/fe/core/controls/FormElementWrapper.ts +2 -2
- package/src/sap/fe/core/controls/MassEditSelect.js +1 -1
- package/src/sap/fe/core/controls/MassEditSelect.ts +0 -4
- package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +3 -3
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +16 -12
- package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +20 -22
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +3 -3
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +8 -8
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +49 -49
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +54 -54
- package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +8 -2
- package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +22 -35
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +89 -88
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +107 -106
- package/src/sap/fe/core/converters/ConverterContext.js +26 -33
- package/src/sap/fe/core/converters/ConverterContext.ts +52 -61
- package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +17 -15
- package/src/sap/fe/core/converters/ManifestWrapper.js +59 -45
- package/src/sap/fe/core/converters/ManifestWrapper.ts +55 -45
- package/src/sap/fe/core/converters/MetaModelConverter.js +64 -35
- package/src/sap/fe/core/converters/MetaModelConverter.ts +154 -129
- package/src/sap/fe/core/converters/TemplateConverter.js +21 -20
- package/src/sap/fe/core/converters/TemplateConverter.ts +27 -24
- package/src/sap/fe/core/converters/annotations/DataField.js +58 -35
- package/src/sap/fe/core/converters/annotations/DataField.ts +102 -76
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +1911 -1495
- package/src/sap/fe/core/converters/controls/Common/Action.js +50 -41
- package/src/sap/fe/core/converters/controls/Common/Action.ts +56 -46
- package/src/sap/fe/core/converters/controls/Common/Chart.js +14 -14
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +26 -33
- package/src/sap/fe/core/converters/controls/Common/Criticality.js +3 -3
- package/src/sap/fe/core/converters/controls/Common/Criticality.ts +4 -4
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +30 -28
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +60 -61
- package/src/sap/fe/core/converters/controls/Common/Form.js +27 -28
- package/src/sap/fe/core/converters/controls/Common/Form.ts +44 -57
- package/src/sap/fe/core/converters/controls/Common/KPI.js +11 -11
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +49 -52
- package/src/sap/fe/core/converters/controls/Common/Table.js +181 -197
- package/src/sap/fe/core/converters/controls/Common/Table.ts +251 -280
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +119 -119
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +144 -141
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +45 -41
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +65 -59
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +28 -26
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +46 -43
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +9 -9
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +14 -13
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +67 -64
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +69 -66
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +77 -73
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +101 -97
- package/src/sap/fe/core/converters/helpers/Aggregation.js +2 -4
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +12 -15
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +31 -31
- package/src/sap/fe/core/converters/helpers/BindingHelper.ts +30 -29
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +4 -4
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +9 -9
- package/src/sap/fe/core/converters/helpers/ID.js +48 -46
- package/src/sap/fe/core/converters/helpers/ID.ts +26 -25
- package/src/sap/fe/core/converters/helpers/Key.js +7 -7
- package/src/sap/fe/core/converters/helpers/Key.ts +7 -7
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +4 -5
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +6 -6
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +10 -10
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +46 -62
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +54 -82
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +55 -42
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +81 -66
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +39 -38
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +52 -61
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +4 -4
- package/src/sap/fe/core/designtime/AppComponent.designtime.ts +4 -4
- package/src/sap/fe/core/formatters/CollaborationFormatter.js +2 -2
- package/src/sap/fe/core/formatters/CollaborationFormatter.ts +3 -3
- package/src/sap/fe/core/formatters/FPMFormatter.js +5 -5
- package/src/sap/fe/core/formatters/FPMFormatter.ts +10 -10
- package/src/sap/fe/core/formatters/KPIFormatter.js +7 -7
- package/src/sap/fe/core/formatters/KPIFormatter.ts +10 -10
- package/src/sap/fe/core/formatters/StandardFormatter.js +96 -0
- package/src/sap/fe/core/formatters/StandardFormatter.ts +70 -0
- package/src/sap/fe/core/formatters/TableFormatter.js +11 -11
- package/src/sap/fe/core/formatters/TableFormatter.ts +12 -12
- package/src/sap/fe/core/formatters/ValueFormatter.js +8 -8
- package/src/sap/fe/core/formatters/ValueFormatter.ts +9 -9
- package/src/sap/fe/core/helpers/AppStartupHelper.js +15 -15
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +37 -40
- package/src/sap/fe/core/helpers/BindingToolkit.js +1832 -0
- package/src/sap/fe/core/helpers/{BindingExpression.ts → BindingToolkit.ts} +396 -269
- package/src/sap/fe/core/helpers/ClassSupport.js +49 -12
- package/src/sap/fe/core/helpers/ClassSupport.ts +37 -10
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +2 -2
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -1
- package/src/sap/fe/core/helpers/EditState.js +1 -6
- package/src/sap/fe/core/helpers/EditState.ts +5 -10
- package/src/sap/fe/core/helpers/ExcelFormatHelper.js +2 -2
- package/src/sap/fe/core/helpers/ExcelFormatHelper.ts +4 -4
- package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
- package/src/sap/fe/core/helpers/FPMHelper.ts +2 -2
- package/src/sap/fe/core/helpers/KeepAliveHelper.js +31 -31
- package/src/sap/fe/core/helpers/KeepAliveHelper.ts +52 -56
- package/src/sap/fe/core/helpers/MassEditHelper.js +306 -280
- package/src/sap/fe/core/helpers/MassEditHelper.ts +380 -360
- package/src/sap/fe/core/helpers/MessageStrip.js +81 -0
- package/src/sap/fe/core/helpers/MessageStrip.ts +79 -0
- package/src/sap/fe/core/helpers/ModelHelper.js +25 -25
- package/src/sap/fe/core/helpers/ModelHelper.ts +34 -32
- package/src/sap/fe/core/helpers/PasteHelper.js +3 -10
- package/src/sap/fe/core/helpers/PasteHelper.ts +20 -25
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
- package/src/sap/fe/core/helpers/SemanticDateOperators.ts +11 -11
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +3 -3
- package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +8 -8
- package/src/sap/fe/core/helpers/StableIdHelper.js +12 -12
- package/src/sap/fe/core/helpers/StableIdHelper.ts +12 -12
- package/src/sap/fe/core/helpers/ToES6Promise.js +32 -0
- package/src/sap/fe/core/helpers/ToES6Promise.ts +19 -0
- package/src/sap/fe/core/jsx-runtime/Fragment.js +16 -0
- package/src/sap/fe/core/jsx-runtime/Fragment.ts +3 -0
- package/src/sap/fe/core/jsx-runtime/jsx-control.js +99 -0
- package/src/sap/fe/core/jsx-runtime/jsx-control.ts +82 -0
- package/src/sap/fe/core/jsx-runtime/jsx-xml.js +105 -0
- package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +89 -0
- package/src/sap/fe/core/jsx-runtime/jsx.js +12 -90
- package/src/sap/fe/core/jsx-runtime/jsx.ts +24 -85
- package/src/sap/fe/core/library.js +42 -3
- package/src/sap/fe/core/library.ts +38 -0
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +3 -3
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +2 -2
- package/src/sap/fe/core/messagebundle.properties +39 -63
- package/src/sap/fe/core/messagebundle_ar.properties +25 -39
- package/src/sap/fe/core/messagebundle_bg.properties +25 -39
- package/src/sap/fe/core/messagebundle_ca.properties +25 -39
- package/src/sap/fe/core/messagebundle_cs.properties +25 -39
- package/src/sap/fe/core/messagebundle_cy.properties +25 -39
- package/src/sap/fe/core/messagebundle_da.properties +25 -39
- package/src/sap/fe/core/messagebundle_de.properties +25 -39
- package/src/sap/fe/core/messagebundle_el.properties +26 -40
- package/src/sap/fe/core/messagebundle_en.properties +25 -39
- package/src/sap/fe/core/messagebundle_en_GB.properties +25 -39
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +25 -39
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +25 -39
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +26 -18
- package/src/sap/fe/core/messagebundle_es.properties +27 -41
- package/src/sap/fe/core/messagebundle_es_MX.properties +25 -39
- package/src/sap/fe/core/messagebundle_et.properties +25 -39
- package/src/sap/fe/core/messagebundle_fi.properties +25 -39
- package/src/sap/fe/core/messagebundle_fr.properties +26 -40
- package/src/sap/fe/core/messagebundle_fr_CA.properties +25 -39
- package/src/sap/fe/core/messagebundle_hi.properties +25 -39
- package/src/sap/fe/core/messagebundle_hr.properties +25 -39
- package/src/sap/fe/core/messagebundle_hu.properties +25 -39
- package/src/sap/fe/core/messagebundle_id.properties +25 -39
- package/src/sap/fe/core/messagebundle_it.properties +41 -55
- package/src/sap/fe/core/messagebundle_iw.properties +25 -39
- package/src/sap/fe/core/messagebundle_ja.properties +25 -39
- package/src/sap/fe/core/messagebundle_kk.properties +25 -39
- package/src/sap/fe/core/messagebundle_ko.properties +30 -44
- package/src/sap/fe/core/messagebundle_lt.properties +25 -39
- package/src/sap/fe/core/messagebundle_lv.properties +25 -39
- package/src/sap/fe/core/messagebundle_ms.properties +25 -39
- package/src/sap/fe/core/messagebundle_nl.properties +27 -41
- package/src/sap/fe/core/messagebundle_no.properties +25 -39
- package/src/sap/fe/core/messagebundle_pl.properties +26 -40
- package/src/sap/fe/core/messagebundle_pt.properties +26 -40
- package/src/sap/fe/core/messagebundle_pt_PT.properties +25 -39
- package/src/sap/fe/core/messagebundle_ro.properties +25 -39
- package/src/sap/fe/core/messagebundle_ru.properties +25 -39
- package/src/sap/fe/core/messagebundle_sh.properties +25 -39
- package/src/sap/fe/core/messagebundle_sk.properties +25 -39
- package/src/sap/fe/core/messagebundle_sl.properties +25 -39
- package/src/sap/fe/core/messagebundle_sv.properties +25 -39
- package/src/sap/fe/core/messagebundle_th.properties +25 -39
- package/src/sap/fe/core/messagebundle_tr.properties +25 -39
- package/src/sap/fe/core/messagebundle_uk.properties +25 -39
- package/src/sap/fe/core/messagebundle_vi.properties +25 -39
- package/src/sap/fe/core/messagebundle_zh_CN.properties +25 -39
- package/src/sap/fe/core/messagebundle_zh_TW.properties +25 -39
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +2 -2
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +5 -5
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +97 -69
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +68 -69
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +3 -2
- package/src/sap/fe/core/services/NavigationServiceFactory.js +61 -49
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +63 -52
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +2 -2
- package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +4 -4
- package/src/sap/fe/core/services/RoutingServiceFactory.js +55 -55
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +67 -65
- package/src/sap/fe/core/services/ShellServicesFactory.js +92 -76
- package/src/sap/fe/core/services/ShellServicesFactory.ts +95 -82
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +61 -61
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +102 -92
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +224 -198
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +138 -139
- package/src/sap/fe/core/support/CommonHelper.js +3 -2
- package/src/sap/fe/core/support/CommonHelper.ts +9 -13
- package/src/sap/fe/core/support/Diagnostics.js +1 -1
- package/src/sap/fe/core/support/Diagnostics.ts +5 -5
- package/src/sap/fe/core/templating/CommonFormatters.js +84 -0
- package/src/sap/fe/core/templating/CommonFormatters.ts +86 -0
- package/src/sap/fe/core/templating/CriticalityFormatters.js +31 -31
- package/src/sap/fe/core/templating/CriticalityFormatters.ts +42 -40
- package/src/sap/fe/core/templating/DataFieldFormatters.js +8 -8
- package/src/sap/fe/core/templating/DataFieldFormatters.ts +13 -10
- package/src/sap/fe/core/templating/DataModelPathHelper.js +16 -15
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +42 -32
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +2 -3
- package/src/sap/fe/core/templating/EntitySetHelper.js +7 -7
- package/src/sap/fe/core/templating/EntitySetHelper.ts +6 -8
- package/src/sap/fe/core/templating/FieldControlHelper.js +35 -34
- package/src/sap/fe/core/templating/FieldControlHelper.ts +29 -46
- package/src/sap/fe/core/templating/FilterHelper.js +16 -15
- package/src/sap/fe/core/templating/FilterHelper.ts +18 -18
- package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
- package/src/sap/fe/core/templating/FilterTemplating.ts +3 -3
- package/src/sap/fe/core/templating/PropertyFormatters.js +7 -7
- package/src/sap/fe/core/templating/PropertyFormatters.ts +21 -19
- package/src/sap/fe/core/templating/PropertyHelper.js +25 -25
- package/src/sap/fe/core/templating/PropertyHelper.ts +25 -26
- package/src/sap/fe/core/templating/UIFormatters.js +152 -95
- package/src/sap/fe/core/templating/UIFormatters.ts +202 -128
- package/src/sap/fe/core/type/Email.js +2 -2
- package/src/sap/fe/core/type/Email.ts +2 -2
- package/src/sap/fe/core/helpers/BindingExpression.js +0 -1732
|
@@ -102,42 +102,42 @@ sap.ui.define(["sap/ui/base/ManagedObject", "sap/ui/core/util/XMLPreprocessor"],
|
|
|
102
102
|
return oContext.path || oContext.parts;
|
|
103
103
|
}).forEach(function (oContext) {
|
|
104
104
|
var aParts = oContext.parts || [oContext];
|
|
105
|
-
aParts.filter(function (
|
|
106
|
-
return
|
|
107
|
-
}).forEach(function (
|
|
108
|
-
var oModel = oContexts[
|
|
109
|
-
var sSimplePath =
|
|
105
|
+
aParts.filter(function (oPartContext) {
|
|
106
|
+
return oPartContext.path;
|
|
107
|
+
}).forEach(function (oPartContext) {
|
|
108
|
+
var oModel = oContexts[oPartContext.model] = oContexts[oPartContext.model] || {};
|
|
109
|
+
var sSimplePath = oPartContext.path.indexOf(">") < 0 ? (oPartContext.model && "".concat(oPartContext.model, ">")) + oPartContext.path : oPartContext.path;
|
|
110
110
|
var oRealContext;
|
|
111
|
-
var
|
|
111
|
+
var aInnerParts;
|
|
112
112
|
|
|
113
|
-
if (typeof
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
113
|
+
if (typeof oPartContext.model === "undefined" && sSimplePath.indexOf(">") > -1) {
|
|
114
|
+
aInnerParts = sSimplePath.split(">");
|
|
115
|
+
oPartContext.model = aInnerParts[0];
|
|
116
|
+
oPartContext.path = aInnerParts[1];
|
|
117
117
|
}
|
|
118
118
|
|
|
119
119
|
try {
|
|
120
120
|
oRealContext = oVisitor.getContext(sSimplePath);
|
|
121
|
-
aPromises.push(oVisitor.getResult("{"
|
|
121
|
+
aPromises.push(oVisitor.getResult("{".concat(sSimplePath, "}"), oNode).then(function (oResult) {
|
|
122
122
|
if (oRealContext.getModel().getMetadata().getName() === "sap.ui.model.json.JSONModel") {
|
|
123
123
|
if (!oResult.oModel) {
|
|
124
|
-
oModel[
|
|
124
|
+
oModel[oPartContext.path] = oResult; //oRealContext.getObject(oContext.path);
|
|
125
125
|
} else {
|
|
126
|
-
oModel[
|
|
126
|
+
oModel[oPartContext.path] = "Context from ".concat(oResult.getPath());
|
|
127
127
|
}
|
|
128
128
|
} else {
|
|
129
|
-
oModel[
|
|
129
|
+
oModel[oPartContext.path] = {
|
|
130
130
|
path: oRealContext.getPath(),
|
|
131
131
|
data: typeof oResult === "object" ? "[ctrl/cmd-click] on path to see data" : oResult
|
|
132
132
|
};
|
|
133
133
|
}
|
|
134
134
|
}).catch(function () {
|
|
135
|
-
oModel[
|
|
135
|
+
oModel[oPartContext.path] = {
|
|
136
136
|
bindingFor: "Runtime"
|
|
137
137
|
};
|
|
138
138
|
}));
|
|
139
139
|
} catch (exc) {
|
|
140
|
-
oModel[
|
|
140
|
+
oModel[oPartContext.path] = {
|
|
141
141
|
bindingFor: "Runtime"
|
|
142
142
|
};
|
|
143
143
|
}
|
|
@@ -194,7 +194,7 @@ sap.ui.define(["sap/ui/base/ManagedObject", "sap/ui/core/util/XMLPreprocessor"],
|
|
|
194
194
|
var sControlName = oNode.nodeName.split(":")[1] || oNode.nodeName,
|
|
195
195
|
bIsControl = /^[A-Z]/.test(sControlName),
|
|
196
196
|
oTraceMetadataContext = {
|
|
197
|
-
control: oNode.namespaceURI
|
|
197
|
+
control: "".concat(oNode.namespaceURI, ".").concat(oNode.nodeName.split(":")[1] || oNode.nodeName)
|
|
198
198
|
};
|
|
199
199
|
|
|
200
200
|
if (bIsControl) {
|
|
@@ -215,9 +215,9 @@ sap.ui.define(["sap/ui/base/ManagedObject", "sap/ui/core/util/XMLPreprocessor"],
|
|
|
215
215
|
aTraceInfo.push(oTraceMetadataContext);
|
|
216
216
|
}
|
|
217
217
|
|
|
218
|
-
return oVisitor.visitAttributes(oNode)
|
|
219
|
-
|
|
220
|
-
|
|
218
|
+
return oVisitor.visitAttributes(oNode);
|
|
219
|
+
}).then(function () {
|
|
220
|
+
return oVisitor.visitChildNodes(oNode);
|
|
221
221
|
}).catch(function (exc) {
|
|
222
222
|
oTraceMetadataContext.error = {
|
|
223
223
|
exception: exc,
|
|
@@ -245,12 +245,12 @@ sap.ui.define(["sap/ui/base/ManagedObject", "sap/ui/core/util/XMLPreprocessor"],
|
|
|
245
245
|
* Adds information about the processing of one macro to the collection.
|
|
246
246
|
*
|
|
247
247
|
* @name sap.fe.macros.TraceInfo.traceMacroCalls
|
|
248
|
-
* @param
|
|
249
|
-
* @param
|
|
250
|
-
* @param
|
|
251
|
-
* @param
|
|
252
|
-
* @param
|
|
253
|
-
* @returns
|
|
248
|
+
* @param sName Macro class name
|
|
249
|
+
* @param oMetadata Definition from (macro).metadata.js
|
|
250
|
+
* @param mContexts Available named contexts
|
|
251
|
+
* @param oNode
|
|
252
|
+
* @param oVisitor
|
|
253
|
+
* @returns The traced metadata context
|
|
254
254
|
* @private
|
|
255
255
|
* @ui5-restricted
|
|
256
256
|
* @static
|
|
@@ -381,8 +381,8 @@ sap.ui.define(["sap/ui/base/ManagedObject", "sap/ui/core/util/XMLPreprocessor"],
|
|
|
381
381
|
*
|
|
382
382
|
* @function
|
|
383
383
|
* @name sap.fe.macros.TraceInfo.getTraceInfo
|
|
384
|
-
* @param
|
|
385
|
-
* @returns
|
|
384
|
+
* @param id TraceInfo id
|
|
385
|
+
* @returns Object / Array for TraceInfo
|
|
386
386
|
* @private
|
|
387
387
|
* @static
|
|
388
388
|
*/
|
|
@@ -403,7 +403,7 @@ sap.ui.define(["sap/ui/base/ManagedObject", "sap/ui/core/util/XMLPreprocessor"],
|
|
|
403
403
|
*
|
|
404
404
|
* @function
|
|
405
405
|
* @name sap.fe.macros.TraceInfo.isTraceInfoActive
|
|
406
|
-
* @returns
|
|
406
|
+
* @returns `true` when active
|
|
407
407
|
* @private
|
|
408
408
|
* @static
|
|
409
409
|
*/
|
|
@@ -433,4 +433,4 @@ sap.ui.define(["sap/ui/base/ManagedObject", "sap/ui/core/util/XMLPreprocessor"],
|
|
|
433
433
|
getTraceInfo: getTraceInfo
|
|
434
434
|
};
|
|
435
435
|
}, true);
|
|
436
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyYWNlSW5mby50cyJdLCJuYW1lcyI6WyJhVHJhY2VJbmZvIiwidHJhY2VOYW1lc3BhY2UiLCJ4bWxucyIsInRyYWNlSXNPbiIsImxvY2F0aW9uIiwic2VhcmNoIiwiaW5kZXhPZiIsImFOYW1lc3BhY2VzIiwib0NhbGxiYWNrcyIsImZuQ2xvbmUiLCJvT2JqZWN0IiwiSlNPTiIsInBhcnNlIiwic3RyaW5naWZ5IiwiY29sbGVjdENvbnRleHRJbmZvIiwic1ZhbHVlIiwib0NvbnRleHRzIiwib1Zpc2l0b3IiLCJvTm9kZSIsImFDb250ZXh0cyIsImFQcm9taXNlcyIsIk1hbmFnZWRPYmplY3QiLCJiaW5kaW5nUGFyc2VyIiwidW5kZWZpbmVkIiwiZSIsIkFycmF5IiwiaXNBcnJheSIsImZpbHRlciIsIm9Db250ZXh0IiwicGF0aCIsInBhcnRzIiwiZm9yRWFjaCIsImFQYXJ0cyIsIm9Nb2RlbCIsIm1vZGVsIiwic1NpbXBsZVBhdGgiLCJvUmVhbENvbnRleHQiLCJzcGxpdCIsImdldENvbnRleHQiLCJwdXNoIiwiZ2V0UmVzdWx0IiwidGhlbiIsIm9SZXN1bHQiLCJnZXRNb2RlbCIsImdldE1ldGFkYXRhIiwiZ2V0TmFtZSIsImdldFBhdGgiLCJkYXRhIiwiY2F0Y2giLCJiaW5kaW5nRm9yIiwiZXhjIiwiUHJvbWlzZSIsImFsbCIsImZpbGxBdHRyaWJ1dGVzIiwib1Jlc3VsdHMiLCJvQXR0cmlidXRlcyIsInNOYW1lIiwicmVzdWx0Iiwib3JpZ2luYWxWYWx1ZSIsInJlc29sdmVkVmFsdWUiLCJlcnJvciIsInN0YWNrIiwidG9TdHJpbmciLCJjb2xsZWN0SW5mbyIsImkiLCJhdHRyaWJ1dGVzIiwibGVuZ3RoIiwib0F0dHJpYnV0ZSIsIm5vZGVOYW1lIiwiZ2V0QXR0cmlidXRlIiwiaW5jbHVkZXMiLCJwcm9wZXJ0aWVzIiwiY29udGV4dHMiLCJyZXNvbHZlIiwic0NvbnRyb2xOYW1lIiwiYklzQ29udHJvbCIsInRlc3QiLCJvVHJhY2VNZXRhZGF0YUNvbnRleHQiLCJjb250cm9sIiwibmFtZXNwYWNlVVJJIiwib3duZXJEb2N1bWVudCIsImZpcnN0Q2hpbGQiLCJzZXRBdHRyaWJ1dGVOUyIsImJSZWxldmFudCIsIk9iamVjdCIsImtleXMiLCJhc3NpZ24iLCJ2aWV3SW5mbyIsImdldFZpZXdJbmZvIiwibWFjcm9JbmZvIiwiZ2V0U2V0dGluZ3MiLCJ0cmFjZUlEIiwidmlzaXRBdHRyaWJ1dGVzIiwidmlzaXRDaGlsZE5vZGVzIiwiZXhjZXB0aW9uIiwibm9kZSIsIlhNTFNlcmlhbGl6ZXIiLCJzZXJpYWxpemVUb1N0cmluZyIsIm5hbWVzcGFjZSIsIlhNTFByZXByb2Nlc3NvciIsInBsdWdJbiIsImJpbmQiLCJ0cmFjZU1hY3JvQ2FsbHMiLCJvTWV0YWRhdGEiLCJtQ29udGV4dHMiLCJhTWV0YWRhdGFDb250ZXh0S2V5cyIsIm1ldGFkYXRhQ29udGV4dHMiLCJhUHJvcGVydGllcyIsIm1hY3JvIiwibWV0YURhdGFDb250ZXh0cyIsIm5hbWUiLCJzS2V5Iiwib01ldGFEYXRhQ29udGV4dCIsIm9Qcm9wZXJ0eSIsInRoaXMiLCJnZXRPYmplY3QiLCJwYXJlbnRNYWNyb0lEIiwibWFjcm9JRCIsImdldFRyYWNlSW5mbyIsImlkIiwiYUVycm9ycyIsInRyYWNlSW5mbyIsImlzVHJhY2VJbmZvQWN0aXZlIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7O0FBQUE7QUFDQSxNQUFNQSxVQUFpQixHQUFHO0FBQ3pCO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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O0FBQ0E7QUFDQTtBQUNBOzs7QUFDQSxXQUFTMEgsaUJBQVQsR0FBNkI7QUFDNUIsV0FBT3ZILFNBQVA7QUFDQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7U0FDZTtBQUNkdUgsSUFBQUEsaUJBQWlCLEVBQUVBLGlCQURMO0FBRWRwQixJQUFBQSxlQUFlLEVBQUVBLGVBRkg7QUFHZGdCLElBQUFBLFlBQVksRUFBRUE7QUFIQSxHIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IFhNTFByZXByb2Nlc3NvciBmcm9tIFwic2FwL3VpL2NvcmUvdXRpbC9YTUxQcmVwcm9jZXNzb3JcIjtcbi8vVHJhY2UgaW5mb3JtYXRpb25cbmNvbnN0IGFUcmFjZUluZm86IGFueVtdID0gW1xuXHQvKiBTdHJ1Y3R1cmUgZm9yIGEgbWFjcm9cblx0XHRcdHtcblx0XHRcdFx0bWFjcm86ICcnLCAvL25hbWUgb2YgbWFjcm9cblx0XHRcdFx0bWV0YURhdGFDb250ZXh0czogWyAvL1Byb3BlcnRpZXMgb2YgdHlwZSBzYXAudWkubW9kZWwuQ29udGV4dFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdG5hbWU6ICcnLCAvL2NvbnRleHQgcHJvcGVydHkgbmFtZSAvIGtleVxuXHRcdFx0XHRcdFx0cGF0aDogJycsIC8vZnJvbSBvQ29udGV4dC5nZXRQYXRoKClcblx0XHRcdFx0XHR9XG5cdFx0XHRcdF0sXG5cdFx0XHRcdHByb3BlcnRpZXM6IHsgLy8gT3RoZXIgcHJvcGVydGllcyB3aGljaCBiZWNvbWUgcGFydCBvZiB7dGhpcz59XG5cdFx0XHRcdFx0cHJvcGVydHkxOiB2YWx1ZSxcblx0XHRcdFx0XHRwcm9wZXJ0eTI6IHZhbHVlXG5cdFx0XHRcdH1cblx0XHRcdFx0dmlld0luZm86IHtcblx0XHRcdFx0XHR2aWV3SW5mbzoge30gLy8gQXMgc3BlY2lmaWVkIGluIHZpZXcgb3IgZnJhZ2VtZW50IGNyZWF0aW9uXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHRyYWNlSUQ6IHRoaXMuaW5kZXgsIC8vSUQgZm9yIHRoaXMgdHJhY2UgaW5mb3JtYXRpb24sXG5cdFx0XHRcdG1hY3JvSW5mbzoge1xuXHRcdFx0XHRcdG1hY3JvSUQ6IGluZGV4LCAvLyB0cmFjZUlEIG9mIHRoaXMgbWFjcm8gKHJlZHVuZGFudCBmb3IgbWFjcm9zKVxuXHRcdFx0XHRcdHBhcmVudE1hY3JvSUQsIGluZGV4IC8vIHRyYWNlSUQgb2YgdGhlIHBhcmVudCBtYWNybyAoaWYgaXQgaGFzIGEgcGFyZW50KVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQvLyBTdHJ1Y3R1cmUgZm9yIGEgY29udHJvbFxuXHRcdFx0e1xuXHRcdFx0XHRjb250cm9sOiAnJywgLy9jb250cm9sIGNsYXNzXG5cdFx0XHRcdHByb3BlcnRpZXM6IHsgLy8gT3RoZXIgcHJvcGVydGllcyB3aGljaCBiZWNvbWUgcGFydCBvZiB7dGhpcz59XG5cdFx0XHRcdFx0cHJvcGVydHkxOiB7XG5cdFx0XHRcdFx0XHRvcmlnaW5hbFZhbHVlOiAnJywgLy9WYWx1ZSBiZWZvcmUgdGVtcGxhdGluZ1xuXHRcdFx0XHRcdFx0cmVzb2x2ZWRWYWx1ZTogJycgLy9WYWx1ZSBhZnRlciB0ZW1wbGF0aW5nXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnRleHRzOiB7IC8vTW9kZWxzIGFuZCBDb250ZXh0cyB1c2VkIGR1cmluZyB0ZW1wbGF0aW5nXG5cdFx0XHRcdFx0Ly8gTW9kZWwgb3IgY29udGV4dCBuYW1lIHVzZWQgZm9yIHRoaXMgY29udHJvbFxuXHRcdFx0XHRcdG1vZGVsTmFtZTE6IHsgLy8gRm9yIE9EYXRhTWV0YU1vZGVsXG5cdFx0XHRcdFx0XHRwYXRoMToge1xuXHRcdFx0XHRcdFx0XHRwYXRoOiAnJywgLy9hYnNvbHV0IHBhdGggd2l0aGluIG1ldGFtb2RlbFxuXHRcdFx0XHRcdFx0XHRkYXRhOiAnJywgLy9kYXRhIG9mIHBhdGggdW5sZXNzIHR5cGUgT2JqZWN0XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0bW9kZWxOYW1lMjoge1xuXHRcdFx0XHRcdFx0Ly8gZm9yIG90aGVyIG1vZGVsIHR5cGVzXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHByb3BlcnR5MTogdmFsdWUsXG5cdFx0XHRcdFx0XHRcdHByb3BlcnR5MjogdmFsdWVcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdC8vIEluIGNhc2UgYmluZGluZyBjYW5ub3QgYmUgcmVzb2x2ZWQgLT4gbWFyayBhcyBydW50aW1lIGJpbmRpbmdcblx0XHRcdFx0XHRcdC8vIFRoaXMgaXMgbm90IGFsd2F5cyB0cnVlLCBlLmcuIGluIGNhc2UgdGhlIHBhdGggaXMgbWV0YW1vZGVscGF0aFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcImJpbmRpbmdGb3JcIjogXCJSdW50aW1lXCJcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHZpZXdJbmZvOiB7XG5cdFx0XHRcdFx0dmlld0luZm86IHt9IC8vIEFzIHNwZWNpZmllZCBpbiB2aWV3IG9yIGZyYWdlbWVudCBjcmVhdGlvblxuXHRcdFx0XHR9LFxuXHRcdFx0XHRtYWNyb0luZm86IHtcblx0XHRcdFx0XHRtYWNyb0lEOiBpbmRleCwgLy8gdHJhY2VJRCBvZiB0aGUgbWFjcm8gdGhhdCBjcmVhdGVkIHRoaXMgY29udHJvbFxuXHRcdFx0XHRcdHBhcmVudE1hY3JvSUQsIGluZGV4IC8vIHRyYWNlSUQgb2YgdGhlIG1hY3JvJ3MgcGFyZW50IG1hY3JvXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHRyYWNlSUQ6IHRoaXMuaW5kZXggLy9JRCBmb3IgdGhpcyB0cmFjZSBpbmZvcm1hdGlvblxuXHRcdFx0fVxuXHRcdFx0Ki9cbl07XG5jb25zdCB0cmFjZU5hbWVzcGFjZSA9IFwiaHR0cDovL3NjaGVtYXMuc2FwLmNvbS9zYXB1aTUvZXh0ZW5zaW9uL3NhcC5mZS5pbmZvLzFcIixcblx0eG1sbnMgPSBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvXCIsXG5cdC8qKlxuXHQgKiBTd2l0Y2ggaXMgY3VycmVudGx5IGJhc2VkIG9uIHVybCBwYXJhbWV0ZXJcblx0ICovXG5cdHRyYWNlSXNPbiA9IGxvY2F0aW9uLnNlYXJjaC5pbmRleE9mKFwic2FwLXVpLXh4LWZlVHJhY2VJbmZvPXRydWVcIikgPiAtMSxcblx0LyoqXG5cdCAqIFNwZWNpZnkgYWxsIG5hbWVzcGFjZXMgdGhhdCBzaGFsbCBiZSB0cmFjZWQgZHVyaW5nIHRlbXBsYXRpbmdcblx0ICovXG5cdGFOYW1lc3BhY2VzID0gW1xuXHRcdFwic2FwLm1cIixcblx0XHRcInNhcC51eGFwXCIsXG5cdFx0XCJzYXAudWkudW5pZmllZFwiLFxuXHRcdFwic2FwLmZcIixcblx0XHRcInNhcC51aS50YWJsZVwiLFxuXHRcdFwic2FwLnN1aXRlLnVpLm1pY3JvY2hhcnRcIixcblx0XHRcInNhcC51aS5sYXlvdXQuZm9ybVwiLFxuXHRcdFwic2FwLnVpLm1kY1wiLFxuXHRcdFwic2FwLnVpLm1kYy5saW5rXCIsXG5cdFx0XCJzYXAudWkubWRjLmZpZWxkXCIsXG5cdFx0XCJzYXAuZmUuZnBtXCJcblx0XSxcblx0b0NhbGxiYWNrczogYW55ID0ge307XG5cbmZ1bmN0aW9uIGZuQ2xvbmUob09iamVjdDogYW55KSB7XG5cdHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9PYmplY3QpKTtcbn1cbmZ1bmN0aW9uIGNvbGxlY3RDb250ZXh0SW5mbyhzVmFsdWU6IGFueSwgb0NvbnRleHRzOiBhbnksIG9WaXNpdG9yOiBhbnksIG9Ob2RlOiBhbnkpIHtcblx0bGV0IGFDb250ZXh0cztcblx0Y29uc3QgYVByb21pc2VzOiBhbnlbXSA9IFtdO1xuXHR0cnkge1xuXHRcdGFDb250ZXh0cyA9IChNYW5hZ2VkT2JqZWN0IGFzIGFueSkuYmluZGluZ1BhcnNlcihzVmFsdWUsIHVuZGVmaW5lZCwgZmFsc2UsIHRydWUpIHx8IFtdO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0YUNvbnRleHRzID0gW107XG5cdH1cblx0YUNvbnRleHRzID0gQXJyYXkuaXNBcnJheShhQ29udGV4dHMpID8gYUNvbnRleHRzIDogW2FDb250ZXh0c107XG5cdGFDb250ZXh0c1xuXHRcdC5maWx0ZXIoZnVuY3Rpb24gKG9Db250ZXh0OiBhbnkpIHtcblx0XHRcdHJldHVybiBvQ29udGV4dC5wYXRoIHx8IG9Db250ZXh0LnBhcnRzO1xuXHRcdH0pXG5cdFx0LmZvckVhY2goZnVuY3Rpb24gKG9Db250ZXh0OiBhbnkpIHtcblx0XHRcdGNvbnN0IGFQYXJ0cyA9IG9Db250ZXh0LnBhcnRzIHx8IFtvQ29udGV4dF07XG5cdFx0XHRhUGFydHNcblx0XHRcdFx0LmZpbHRlcihmdW5jdGlvbiAob0NvbnRleHQ6IGFueSkge1xuXHRcdFx0XHRcdHJldHVybiBvQ29udGV4dC5wYXRoO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuZm9yRWFjaChmdW5jdGlvbiAob0NvbnRleHQ6IGFueSkge1xuXHRcdFx0XHRcdGNvbnN0IG9Nb2RlbCA9IChvQ29udGV4dHNbb0NvbnRleHQubW9kZWxdID0gb0NvbnRleHRzW29Db250ZXh0Lm1vZGVsXSB8fCB7fSk7XG5cdFx0XHRcdFx0Y29uc3Qgc1NpbXBsZVBhdGggPVxuXHRcdFx0XHRcdFx0b0NvbnRleHQucGF0aC5pbmRleE9mKFwiPlwiKSA8IDAgPyAob0NvbnRleHQubW9kZWwgJiYgb0NvbnRleHQubW9kZWwgKyBcIj5cIikgKyBvQ29udGV4dC5wYXRoIDogb0NvbnRleHQucGF0aDtcblx0XHRcdFx0XHRsZXQgb1JlYWxDb250ZXh0OiBhbnk7XG5cdFx0XHRcdFx0bGV0IGFQYXJ0cztcblxuXHRcdFx0XHRcdGlmICh0eXBlb2Ygb0NvbnRleHQubW9kZWwgPT09IFwidW5kZWZpbmVkXCIgJiYgc1NpbXBsZVBhdGguaW5kZXhPZihcIj5cIikgPiAtMSkge1xuXHRcdFx0XHRcdFx0YVBhcnRzID0gc1NpbXBsZVBhdGguc3BsaXQoXCI+XCIpO1xuXHRcdFx0XHRcdFx0b0NvbnRleHQubW9kZWwgPSBhUGFydHNbMF07XG5cdFx0XHRcdFx0XHRvQ29udGV4dC5wYXRoID0gYVBhcnRzWzFdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0b1JlYWxDb250ZXh0ID0gb1Zpc2l0b3IuZ2V0Q29udGV4dChzU2ltcGxlUGF0aCk7XG5cdFx0XHRcdFx0XHRhUHJvbWlzZXMucHVzaChcblx0XHRcdFx0XHRcdFx0b1Zpc2l0b3Jcblx0XHRcdFx0XHRcdFx0XHQuZ2V0UmVzdWx0KFwie1wiICsgc1NpbXBsZVBhdGggKyBcIn1cIiwgb05vZGUpXG5cdFx0XHRcdFx0XHRcdFx0LnRoZW4oZnVuY3Rpb24gKG9SZXN1bHQ6IGFueSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKG9SZWFsQ29udGV4dC5nZXRNb2RlbCgpLmdldE1ldGFkYXRhKCkuZ2V0TmFtZSgpID09PSBcInNhcC51aS5tb2RlbC5qc29uLkpTT05Nb2RlbFwiKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICghb1Jlc3VsdC5vTW9kZWwpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvTW9kZWxbb0NvbnRleHQucGF0aF0gPSBvUmVzdWx0OyAvL29SZWFsQ29udGV4dC5nZXRPYmplY3Qob0NvbnRleHQucGF0aCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0b01vZGVsW29Db250ZXh0LnBhdGhdID0gXCJDb250ZXh0IGZyb20gXCIgKyBvUmVzdWx0LmdldFBhdGgoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0b01vZGVsW29Db250ZXh0LnBhdGhdID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHBhdGg6IG9SZWFsQ29udGV4dC5nZXRQYXRoKCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGF0YTogdHlwZW9mIG9SZXN1bHQgPT09IFwib2JqZWN0XCIgPyBcIltjdHJsL2NtZC1jbGlja10gb24gcGF0aCB0byBzZWUgZGF0YVwiIDogb1Jlc3VsdFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0LmNhdGNoKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdG9Nb2RlbFtvQ29udGV4dC5wYXRoXSA9IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YmluZGluZ0ZvcjogXCJSdW50aW1lXCJcblx0XHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSBjYXRjaCAoZXhjKSB7XG5cdFx0XHRcdFx0XHRvTW9kZWxbb0NvbnRleHQucGF0aF0gPSB7XG5cdFx0XHRcdFx0XHRcdGJpbmRpbmdGb3I6IFwiUnVudGltZVwiXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0fSk7XG5cdHJldHVybiBQcm9taXNlLmFsbChhUHJvbWlzZXMpO1xufVxuZnVuY3Rpb24gZmlsbEF0dHJpYnV0ZXMob1Jlc3VsdHM6IGFueSwgb0F0dHJpYnV0ZXM6IGFueSwgc05hbWU6IGFueSwgc1ZhbHVlOiBhbnkpIHtcblx0cmV0dXJuIG9SZXN1bHRzXG5cdFx0LnRoZW4oZnVuY3Rpb24gKHJlc3VsdDogYW55KSB7XG5cdFx0XHRvQXR0cmlidXRlc1tzTmFtZV0gPVxuXHRcdFx0XHRzVmFsdWUgIT09IHJlc3VsdFxuXHRcdFx0XHRcdD8ge1xuXHRcdFx0XHRcdFx0XHRvcmlnaW5hbFZhbHVlOiBzVmFsdWUsXG5cdFx0XHRcdFx0XHRcdHJlc29sdmVkVmFsdWU6IHJlc3VsdFxuXHRcdFx0XHRcdCAgfVxuXHRcdFx0XHRcdDogc1ZhbHVlO1xuXHRcdH0pXG5cdFx0LmNhdGNoKGZ1bmN0aW9uIChlOiBhbnkpIHtcblx0XHRcdG9BdHRyaWJ1dGVzW3NOYW1lXSA9IHtcblx0XHRcdFx0b3JpZ2luYWxWYWx1ZTogc1ZhbHVlLFxuXHRcdFx0XHRlcnJvcjogKGUuc3RhY2sgJiYgZS5zdGFjay50b1N0cmluZygpKSB8fCBlXG5cdFx0XHR9O1xuXHRcdH0pO1xufVxuZnVuY3Rpb24gY29sbGVjdEluZm8ob05vZGU6IGFueSwgb1Zpc2l0b3I6IGFueSkge1xuXHRjb25zdCBvQXR0cmlidXRlcyA9IHt9O1xuXHRjb25zdCBhUHJvbWlzZXMgPSBbXTtcblx0Y29uc3Qgb0NvbnRleHRzID0ge307XG5cdGxldCBvUmVzdWx0cztcblx0Zm9yIChsZXQgaSA9IG9Ob2RlLmF0dHJpYnV0ZXMubGVuZ3RoID4+PiAwOyBpLS07ICkge1xuXHRcdGNvbnN0IG9BdHRyaWJ1dGUgPSBvTm9kZS5hdHRyaWJ1dGVzW2ldLFxuXHRcdFx0c05hbWUgPSBvQXR0cmlidXRlLm5vZGVOYW1lLFxuXHRcdFx0c1ZhbHVlID0gb05vZGUuZ2V0QXR0cmlidXRlKHNOYW1lKTtcblx0XHRpZiAoIVtcImNvcmU6cmVxdWlyZVwiXS5pbmNsdWRlcyhzTmFtZSkpIHtcblx0XHRcdGFQcm9taXNlcy5wdXNoKGNvbGxlY3RDb250ZXh0SW5mbyhzVmFsdWUsIG9Db250ZXh0cywgb1Zpc2l0b3IsIG9Ob2RlKSk7XG5cdFx0XHRvUmVzdWx0cyA9IG9WaXNpdG9yLmdldFJlc3VsdChzVmFsdWUsIG9Ob2RlKTtcblx0XHRcdGlmIChvUmVzdWx0cykge1xuXHRcdFx0XHRhUHJvbWlzZXMucHVzaChmaWxsQXR0cmlidXRlcyhvUmVzdWx0cywgb0F0dHJpYnV0ZXMsIHNOYW1lLCBzVmFsdWUpKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vV2hhdFxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRyZXR1cm4gUHJvbWlzZS5hbGwoYVByb21pc2VzKS50aGVuKGZ1bmN0aW9uICgpIHtcblx0XHRyZXR1cm4geyBwcm9wZXJ0aWVzOiBvQXR0cmlidXRlcywgY29udGV4dHM6IG9Db250ZXh0cyB9O1xuXHR9KTtcbn1cbmZ1bmN0aW9uIHJlc29sdmUob05vZGU6IGFueSwgb1Zpc2l0b3I6IGFueSkge1xuXHRjb25zdCBzQ29udHJvbE5hbWUgPSBvTm9kZS5ub2RlTmFtZS5zcGxpdChcIjpcIilbMV0gfHwgb05vZGUubm9kZU5hbWUsXG5cdFx0YklzQ29udHJvbCA9IC9eW0EtWl0vLnRlc3Qoc0NvbnRyb2xOYW1lKSxcblx0XHRvVHJhY2VNZXRhZGF0YUNvbnRleHQ6IGFueSA9IHtcblx0XHRcdGNvbnRyb2w6IG9Ob2RlLm5hbWVzcGFjZVVSSSArIFwiLlwiICsgKG9Ob2RlLm5vZGVOYW1lLnNwbGl0KFwiOlwiKVsxXSB8fCBvTm9kZS5ub2RlTmFtZSlcblx0XHR9O1xuXG5cdGlmIChiSXNDb250cm9sKSB7XG5cdFx0aWYgKCFvTm9kZS5vd25lckRvY3VtZW50LmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKFwieG1sbnM6dHJhY2VcIikpIHtcblx0XHRcdG9Ob2RlLm93bmVyRG9jdW1lbnQuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGVOUyh4bWxucywgXCJ4bWxuczp0cmFjZVwiLCB0cmFjZU5hbWVzcGFjZSk7XG5cdFx0XHRvTm9kZS5vd25lckRvY3VtZW50LmZpcnN0Q2hpbGQuc2V0QXR0cmlidXRlTlModHJhY2VOYW1lc3BhY2UsIFwidHJhY2U6aXNcIiwgXCJvblwiKTtcblx0XHR9XG5cdFx0cmV0dXJuIGNvbGxlY3RJbmZvKG9Ob2RlLCBvVmlzaXRvcilcblx0XHRcdC50aGVuKGZ1bmN0aW9uIChyZXN1bHQ6IHsgcHJvcGVydGllczoge307IGNvbnRleHRzOiB7fSB9KSB7XG5cdFx0XHRcdGNvbnN0IGJSZWxldmFudCA9IE9iamVjdC5rZXlzKHJlc3VsdC5jb250ZXh0cykubGVuZ3RoID4gMDsgLy9JZiBubyBjb250ZXh0IHdhcyB1c2VkIGl0IGlzIG5vdCByZWxldmFudCBzbyB3ZSBpZ25vcmUgT2JqZWN0LmtleXMocmVzdWx0LnByb3BlcnRpZXMpLmxlbmd0aFxuXHRcdFx0XHRpZiAoYlJlbGV2YW50KSB7XG5cdFx0XHRcdFx0T2JqZWN0LmFzc2lnbihvVHJhY2VNZXRhZGF0YUNvbnRleHQsIHJlc3VsdCk7XG5cdFx0XHRcdFx0b1RyYWNlTWV0YWRhdGFDb250ZXh0LnZpZXdJbmZvID0gb1Zpc2l0b3IuZ2V0Vmlld0luZm8oKTtcblx0XHRcdFx0XHRvVHJhY2VNZXRhZGF0YUNvbnRleHQubWFjcm9JbmZvID0gb1Zpc2l0b3IuZ2V0U2V0dGluZ3MoKVtcIl9tYWNyb0luZm9cIl07XG5cdFx0XHRcdFx0b1RyYWNlTWV0YWRhdGFDb250ZXh0LnRyYWNlSUQgPSBhVHJhY2VJbmZvLmxlbmd0aDtcblx0XHRcdFx0XHRvTm9kZS5zZXRBdHRyaWJ1dGVOUyh0cmFjZU5hbWVzcGFjZSwgXCJ0cmFjZTp0cmFjZUlEXCIsIG9UcmFjZU1ldGFkYXRhQ29udGV4dC50cmFjZUlEKTtcblx0XHRcdFx0XHRhVHJhY2VJbmZvLnB1c2gob1RyYWNlTWV0YWRhdGFDb250ZXh0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gb1Zpc2l0b3IudmlzaXRBdHRyaWJ1dGVzKG9Ob2RlKS50aGVuKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRyZXR1cm4gb1Zpc2l0b3IudmlzaXRDaGlsZE5vZGVzKG9Ob2RlKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChleGM6IGFueSkge1xuXHRcdFx0XHRvVHJhY2VNZXRhZGF0YUNvbnRleHQuZXJyb3IgPSB7XG5cdFx0XHRcdFx0ZXhjZXB0aW9uOiBleGMsXG5cdFx0XHRcdFx0bm9kZTogbmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyhvTm9kZSlcblx0XHRcdFx0fTtcblx0XHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBvVmlzaXRvci52aXNpdEF0dHJpYnV0ZXMob05vZGUpLnRoZW4oZnVuY3Rpb24gKCkge1xuXHRcdFx0cmV0dXJuIG9WaXNpdG9yLnZpc2l0Q2hpbGROb2RlcyhvTm9kZSk7XG5cdFx0fSk7XG5cdH1cbn1cbi8qKlxuICogUmVnaXN0ZXIgcGF0aC10aHJvdWdoIFhNTFByZXByb2Nlc3NvciBwbHVnaW4gZm9yIGFsbCBuYW1lc3BhY2VzXG4gKiBnaXZlbiBhYm92ZSBpbiBhTmFtZXNwYWNlc1xuICovXG5pZiAodHJhY2VJc09uKSB7XG5cdGFOYW1lc3BhY2VzLmZvckVhY2goZnVuY3Rpb24gKG5hbWVzcGFjZTogc3RyaW5nKSB7XG5cdFx0b0NhbGxiYWNrc1tuYW1lc3BhY2VdID0gWE1MUHJlcHJvY2Vzc29yLnBsdWdJbihyZXNvbHZlLmJpbmQobmFtZXNwYWNlKSwgbmFtZXNwYWNlKTtcblx0fSk7XG59XG4vKipcbiAqIEFkZHMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHByb2Nlc3Npbmcgb2Ygb25lIG1hY3JvIHRvIHRoZSBjb2xsZWN0aW9uLlxuICpcbiAqIEBuYW1lIHNhcC5mZS5tYWNyb3MuVHJhY2VJbmZvLnRyYWNlTWFjcm9DYWxsc1xuICogQHBhcmFtIHtzdHJpbmd9IHNOYW1lIE1hY3JvIGNsYXNzIG5hbWVcbiAqIEBwYXJhbSB7b2JqZWN0fSBvTWV0YWRhdGEgRGVmaW5pdGlvbiBmcm9tIChtYWNybykubWV0YWRhdGEuanNcbiAqIEBwYXJhbSB7b2JqZWN0fSBtQ29udGV4dHMgQXZhaWxhYmxlIG5hbWVkIGNvbnRleHRzXG4gKiBAcGFyYW0ge1hNTE5vZGV9IG9Ob2RlXG4gKiBAcGFyYW0ge29iamVjdH0gb1Zpc2l0b3JcbiAqIEByZXR1cm5zIHtvYmplY3R9XG4gKiBAcHJpdmF0ZVxuICogQHVpNS1yZXN0cmljdGVkXG4gKiBAc3RhdGljXG4gKi9cbmZ1bmN0aW9uIHRyYWNlTWFjcm9DYWxscyhzTmFtZTogc3RyaW5nLCBvTWV0YWRhdGE6IGFueSwgbUNvbnRleHRzOiBhbnksIG9Ob2RlOiBhbnksIG9WaXNpdG9yOiBhbnkpIHtcblx0bGV0IGFNZXRhZGF0YUNvbnRleHRLZXlzID0gKG9NZXRhZGF0YS5tZXRhZGF0YUNvbnRleHRzICYmIE9iamVjdC5rZXlzKG9NZXRhZGF0YS5tZXRhZGF0YUNvbnRleHRzKSkgfHwgW107XG5cdGNvbnN0IGFQcm9wZXJ0aWVzID0gKG9NZXRhZGF0YS5wcm9wZXJ0aWVzICYmIE9iamVjdC5rZXlzKG9NZXRhZGF0YS5wcm9wZXJ0aWVzKSkgfHwgW107XG5cdGNvbnN0IG1hY3JvSW5mbyA9IGZuQ2xvbmUob1Zpc2l0b3IuZ2V0U2V0dGluZ3MoKVtcIl9tYWNyb0luZm9cIl0gfHwge30pO1xuXHRjb25zdCBvVHJhY2VNZXRhZGF0YUNvbnRleHQ6IGFueSA9IHtcblx0XHRtYWNybzogc05hbWUsXG5cdFx0bWV0YURhdGFDb250ZXh0czogW10gYXMgYW55W10sXG5cdFx0cHJvcGVydGllczoge31cblx0fTtcblxuXHRpZiAoYU1ldGFkYXRhQ29udGV4dEtleXMubGVuZ3RoID09PSAwKSB7XG5cdFx0Ly9JbiBjYXNlIHRoZSBtYWNybyBoYXMgbm90IG1ldGFkYXRhLmpzIHdlIHRha2UgYWxsIG1ldGFkYXRhQ29udGV4dHMgZXhjZXB0IHRoaXNcblx0XHRhTWV0YWRhdGFDb250ZXh0S2V5cyA9IE9iamVjdC5rZXlzKG1Db250ZXh0cykuZmlsdGVyKGZ1bmN0aW9uIChuYW1lOiBzdHJpbmcpIHtcblx0XHRcdHJldHVybiBuYW1lICE9PSBcInRoaXNcIjtcblx0XHR9KTtcblx0fVxuXG5cdGlmICghb05vZGUuZ2V0QXR0cmlidXRlKFwieG1sbnM6dHJhY2VcIikpIHtcblx0XHRvTm9kZS5zZXRBdHRyaWJ1dGVOUyh4bWxucywgXCJ4bWxuczp0cmFjZVwiLCB0cmFjZU5hbWVzcGFjZSk7XG5cdH1cblxuXHRpZiAoYU1ldGFkYXRhQ29udGV4dEtleXMubGVuZ3RoID4gMCkge1xuXHRcdGFNZXRhZGF0YUNvbnRleHRLZXlzLmZvckVhY2goZnVuY3Rpb24gKHNLZXk6IGFueSkge1xuXHRcdFx0Y29uc3Qgb0NvbnRleHQgPSBtQ29udGV4dHNbc0tleV0sXG5cdFx0XHRcdG9NZXRhRGF0YUNvbnRleHQ6IGFueSA9IG9Db250ZXh0ICYmIHtcblx0XHRcdFx0XHRuYW1lOiBzS2V5LFxuXHRcdFx0XHRcdHBhdGg6IG9Db250ZXh0LmdldFBhdGgoKVxuXHRcdFx0XHRcdC8vZGF0YTogSlNPTi5zdHJpbmdpZnkob0NvbnRleHQuZ2V0T2JqZWN0KCksbnVsbCwyKVxuXHRcdFx0XHR9O1xuXG5cdFx0XHRpZiAob01ldGFEYXRhQ29udGV4dCkge1xuXHRcdFx0XHRvVHJhY2VNZXRhZGF0YUNvbnRleHQubWV0YURhdGFDb250ZXh0cy5wdXNoKG9NZXRhRGF0YUNvbnRleHQpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0YVByb3BlcnRpZXMuZm9yRWFjaChmdW5jdGlvbiAoc0tleTogYW55KSB7XG5cdFx0XHRjb25zdCAvL29Qcm9wZXJ0eVNldHRpbmdzID0gb01ldGFkYXRhLnByb3BlcnRpZXNbc0tleV0sXG5cdFx0XHRcdG9Qcm9wZXJ0eSA9IG1Db250ZXh0cy50aGlzLmdldE9iamVjdChzS2V5KTtcblx0XHRcdC8vIChvTm9kZS5oYXNBdHRyaWJ1dGUoc0tleSkgJiYgb05vZGUuZ2V0QXR0cmlidXRlKHNLZXkpKSB8fFxuXHRcdFx0Ly8gKG9Qcm9wZXJ0eVNldHRpbmdzLmhhc093blByb3BlcnR5KFwiZGVmYXVsdFZhbHVlXCIpICYmIG9Qcm9wZXJ0eVNldHRpbmdzLmRlZmluZSkgfHxcblx0XHRcdC8vIGZhbHNlO1xuXG5cdFx0XHRpZiAob1Byb3BlcnR5KSB7XG5cdFx0XHRcdG9UcmFjZU1ldGFkYXRhQ29udGV4dC5wcm9wZXJ0aWVzW3NLZXldID0gb1Byb3BlcnR5O1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdG9UcmFjZU1ldGFkYXRhQ29udGV4dC52aWV3SW5mbyA9IG9WaXNpdG9yLmdldFZpZXdJbmZvKCk7XG5cdFx0b1RyYWNlTWV0YWRhdGFDb250ZXh0LnRyYWNlSUQgPSBhVHJhY2VJbmZvLmxlbmd0aDtcblx0XHRtYWNyb0luZm8ucGFyZW50TWFjcm9JRCA9IG1hY3JvSW5mby5tYWNyb0lEO1xuXHRcdG1hY3JvSW5mby5tYWNyb0lEID0gb1RyYWNlTWV0YWRhdGFDb250ZXh0LnRyYWNlSUQ7XG5cdFx0b1RyYWNlTWV0YWRhdGFDb250ZXh0Lm1hY3JvSW5mbyA9IG1hY3JvSW5mbztcblx0XHRvTm9kZS5zZXRBdHRyaWJ1dGVOUyh0cmFjZU5hbWVzcGFjZSwgXCJ0cmFjZTptYWNyb0lEXCIsIG9UcmFjZU1ldGFkYXRhQ29udGV4dC50cmFjZUlEKTtcblx0XHRhVHJhY2VJbmZvLnB1c2gob1RyYWNlTWV0YWRhdGFDb250ZXh0KTtcblx0XHRyZXR1cm4gb1RyYWNlTWV0YWRhdGFDb250ZXh0O1xuXHR9XG59XG4vKipcbiAqIFJldHVybnMgdGhlIGdsb2JhbGx5IHN0b3JlZCB0cmFjZSBpbmZvcm1hdGlvbiBmb3IgdGhlIG1hY3JvIG9yXG4gKiBjb250cm9sIG1hcmtlZCB3aXRoIHRoZSBnaXZlbiBpZC5cbiAqXG4gKiBSZXR1cm5zIGFsbCB0cmFjZSBpbmZvcm1hdGlvbiBpZiBubyBpZCBpcyBzcGVjaWZpZWRcbiAqXG4gKlxuPHByZT5TdHJ1Y3R1cmUgZm9yIGEgbWFjcm9cbntcblx0bWFjcm86ICcnLCAvL25hbWUgb2YgbWFjcm9cblx0bWV0YURhdGFDb250ZXh0czogWyAvL1Byb3BlcnRpZXMgb2YgdHlwZSBzYXAudWkubW9kZWwuQ29udGV4dFxuXHRcdHtcblx0XHRcdG5hbWU6ICcnLCAvL2NvbnRleHQgcHJvcGVydHkgbmFtZSAvIGtleVxuXHRcdFx0cGF0aDogJycsIC8vZnJvbSBvQ29udGV4dC5nZXRQYXRoKClcblx0XHR9XG5cdF0sXG5cdHByb3BlcnRpZXM6IHsgLy8gT3RoZXIgcHJvcGVydGllcyB3aGljaCBiZWNvbWUgcGFydCBvZiB7dGhpcz59XG5cdFx0cHJvcGVydHkxOiB2YWx1ZSxcblx0XHRwcm9wZXJ0eTI6IHZhbHVlXG5cdH1cblx0dmlld0luZm86IHtcblx0XHR2aWV3SW5mbzoge30gLy8gQXMgc3BlY2lmaWVkIGluIHZpZXcgb3IgZnJhZ2VtZW50IGNyZWF0aW9uXG5cdH0sXG5cdHRyYWNlSUQ6IHRoaXMuaW5kZXgsIC8vSUQgZm9yIHRoaXMgdHJhY2UgaW5mb3JtYXRpb24sXG5cdG1hY3JvSW5mbzoge1xuXHRcdG1hY3JvSUQ6IGluZGV4LCAvLyB0cmFjZUlEIG9mIHRoaXMgbWFjcm8gKHJlZHVuZGFudCBmb3IgbWFjcm9zKVxuXHRcdHBhcmVudE1hY3JvSUQsIGluZGV4IC8vIHRyYWNlSUQgb2YgdGhlIHBhcmVudCBtYWNybyAoaWYgaXQgaGFzIGEgcGFyZW50KVxuXHR9XG59XG5TdHJ1Y3R1cmUgZm9yIGEgY29udHJvbFxue1xuXHRjb250cm9sOiAnJywgLy9jb250cm9sIGNsYXNzXG5cdHByb3BlcnRpZXM6IHsgLy8gT3RoZXIgcHJvcGVydGllcyB3aGljaCBiZWNvbWUgcGFydCBvZiB7dGhpcz59XG5cdFx0cHJvcGVydHkxOiB7XG5cdFx0XHRvcmlnaW5hbFZhbHVlOiAnJywgLy9WYWx1ZSBiZWZvcmUgdGVtcGxhdGluZ1xuXHRcdFx0cmVzb2x2ZWRWYWx1ZTogJycgLy9WYWx1ZSBhZnRlciB0ZW1wbGF0aW5nXG5cdFx0fVxuXHR9XG5cdGNvbnRleHRzOiB7IC8vTW9kZWxzIGFuZCBDb250ZXh0cyB1c2VkIGR1cmluZyB0ZW1wbGF0aW5nXG5cdFx0Ly8gTW9kZWwgb3IgY29udGV4dCBuYW1lIHVzZWQgZm9yIHRoaXMgY29udHJvbFxuXHRcdG1vZGVsTmFtZTE6IHsgLy8gRm9yIE9EYXRhTWV0YU1vZGVsXG5cdFx0XHRwYXRoMToge1xuXHRcdFx0XHRwYXRoOiAnJywgLy9hYnNvbHV0IHBhdGggd2l0aGluIG1ldGFtb2RlbFxuXHRcdFx0XHRkYXRhOiAnJywgLy9kYXRhIG9mIHBhdGggdW5sZXNzIHR5cGUgT2JqZWN0XG5cdFx0XHR9XG5cdFx0bW9kZWxOYW1lMjoge1xuXHRcdFx0Ly8gZm9yIG90aGVyIG1vZGVsIHR5cGVzXG5cdFx0XHR7XG5cdFx0XHRcdHByb3BlcnR5MTogdmFsdWUsXG5cdFx0XHRcdHByb3BlcnR5MjogdmFsdWVcblx0XHRcdH1cblx0XHRcdC8vIEluIGNhc2UgYmluZGluZyBjYW5ub3QgYmUgcmVzb2x2ZWQgLT4gbWFyayBhcyBydW50aW1lIGJpbmRpbmdcblx0XHRcdC8vIFRoaXMgaXMgbm90IGFsd2F5cyB0cnVlLCBlLmcuIGluIGNhc2UgdGhlIHBhdGggaXMgbWV0YW1vZGVscGF0aFxuXHRcdFx0e1xuXHRcdFx0XHRcImJpbmRpbmdGb3JcIjogXCJSdW50aW1lXCJcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdHZpZXdJbmZvOiB7XG5cdFx0dmlld0luZm86IHt9IC8vIEFzIHNwZWNpZmllZCBpbiB2aWV3IG9yIGZyYWdlbWVudCBjcmVhdGlvblxuXHR9LFxuXHRtYWNyb0luZm86IHtcblx0XHRtYWNyb0lEOiBpbmRleCwgLy8gdHJhY2VJRCBvZiB0aGUgbWFjcm8gdGhhdCBjcmVhdGVkIHRoaXMgY29udHJvbFxuXHRcdHBhcmVudE1hY3JvSUQsIGluZGV4IC8vIHRyYWNlSUQgb2YgdGhlIG1hY3JvJ3MgcGFyZW50IG1hY3JvXG5cdH0sXG5cdHRyYWNlSUQ6IHRoaXMuaW5kZXggLy9JRCBmb3IgdGhpcyB0cmFjZSBpbmZvcm1hdGlvblxufTwvcHJlPi5cbiAqXG4gKiBAZnVuY3Rpb25cbiAqIEBuYW1lIHNhcC5mZS5tYWNyb3MuVHJhY2VJbmZvLmdldFRyYWNlSW5mb1xuICogQHBhcmFtIHtudW1iZXJ9IGlkIFRyYWNlSW5mbyBpZFxuICogQHJldHVybnMge29iamVjdHxBcnJheX0gT2JqZWN0IC8gQXJyYXkgZm9yIFRyYWNlSW5mb1xuICogQHByaXZhdGVcbiAqIEBzdGF0aWNcbiAqL1xuZnVuY3Rpb24gZ2V0VHJhY2VJbmZvKGlkOiBudW1iZXIpIHtcblx0aWYgKGlkKSB7XG5cdFx0cmV0dXJuIGFUcmFjZUluZm9baWRdO1xuXHR9XG5cdGNvbnN0IGFFcnJvcnMgPSBhVHJhY2VJbmZvLmZpbHRlcihmdW5jdGlvbiAodHJhY2VJbmZvOiBhbnkpIHtcblx0XHRyZXR1cm4gdHJhY2VJbmZvLmVycm9yO1xuXHR9KTtcblx0cmV0dXJuIChhRXJyb3JzLmxlbmd0aCA+IDAgJiYgYUVycm9ycykgfHwgYVRyYWNlSW5mbztcbn1cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIFRyYWNlSW5mbyBpcyBhY3RpdmUuXG4gKlxuICogQGZ1bmN0aW9uXG4gKiBAbmFtZSBzYXAuZmUubWFjcm9zLlRyYWNlSW5mby5pc1RyYWNlSW5mb0FjdGl2ZVxuICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCB3aGVuIGFjdGl2ZVxuICogQHByaXZhdGVcbiAqIEBzdGF0aWNcbiAqL1xuZnVuY3Rpb24gaXNUcmFjZUluZm9BY3RpdmUoKSB7XG5cdHJldHVybiB0cmFjZUlzT247XG59XG4vKipcbiAqIEB0eXBlZGVmIHNhcC5mZS5tYWNyb3MuVHJhY2VJbmZvXG4gKiBUcmFjZUluZm8gZm9yIFNBUCBGaW9yaSBlbGVtZW50c1xuICpcbiAqIE9uY2UgdHJhY2VzIGlzIHN3aXRjaGVkLCBpbmZvcm1hdGlvbiBhYm91dCBtYWNyb3MgYW5kIGNvbnRyb2xzXG4gKiB0aGF0IGFyZSBwcm9jZXNzZWQgZHVyaW5nIHhtbCBwcmVwcm9jZXNzaW5nICggQHNlZSB7QGxpbmsgc2FwLnVpLmNvcmUudXRpbC5YTUxQcmVwcm9jZXNzb3J9KVxuICogd2lsbCBiZSBjb2xsZWN0ZWQgd2l0aGluIHRoaXMgc2luZ2xldG9uXG4gKiBAbmFtZXNwYWNlXG4gKiBAcHJpdmF0ZVxuICogQGdsb2JhbFxuICogQGV4cGVyaW1lbnRhbCBUaGlzIG1vZHVsZSBpcyBvbmx5IGZvciBleHBlcmltZW50YWwgdXNlISA8YnIvPjxiPlRoaXMgaXMgb25seSBhIFBPQyBhbmQgbWF5YmUgZGVsZXRlZDwvYj5cbiAqIEBzaW5jZSAxLjc0LjBcbiAqL1xuZXhwb3J0IGRlZmF1bHQge1xuXHRpc1RyYWNlSW5mb0FjdGl2ZTogaXNUcmFjZUluZm9BY3RpdmUsXG5cdHRyYWNlTWFjcm9DYWxsczogdHJhY2VNYWNyb0NhbGxzLFxuXHRnZXRUcmFjZUluZm86IGdldFRyYWNlSW5mb1xufTtcbiJdfQ==
|
|
436
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyYWNlSW5mby50cyJdLCJuYW1lcyI6WyJhVHJhY2VJbmZvIiwidHJhY2VOYW1lc3BhY2UiLCJ4bWxucyIsInRyYWNlSXNPbiIsImxvY2F0aW9uIiwic2VhcmNoIiwiaW5kZXhPZiIsImFOYW1lc3BhY2VzIiwib0NhbGxiYWNrcyIsImZuQ2xvbmUiLCJvT2JqZWN0IiwiSlNPTiIsInBhcnNlIiwic3RyaW5naWZ5IiwiY29sbGVjdENvbnRleHRJbmZvIiwic1ZhbHVlIiwib0NvbnRleHRzIiwib1Zpc2l0b3IiLCJvTm9kZSIsImFDb250ZXh0cyIsImFQcm9taXNlcyIsIk1hbmFnZWRPYmplY3QiLCJiaW5kaW5nUGFyc2VyIiwidW5kZWZpbmVkIiwiZSIsIkFycmF5IiwiaXNBcnJheSIsImZpbHRlciIsIm9Db250ZXh0IiwicGF0aCIsInBhcnRzIiwiZm9yRWFjaCIsImFQYXJ0cyIsIm9QYXJ0Q29udGV4dCIsIm9Nb2RlbCIsIm1vZGVsIiwic1NpbXBsZVBhdGgiLCJvUmVhbENvbnRleHQiLCJhSW5uZXJQYXJ0cyIsInNwbGl0IiwiZ2V0Q29udGV4dCIsInB1c2giLCJnZXRSZXN1bHQiLCJ0aGVuIiwib1Jlc3VsdCIsImdldE1vZGVsIiwiZ2V0TWV0YWRhdGEiLCJnZXROYW1lIiwiZ2V0UGF0aCIsImRhdGEiLCJjYXRjaCIsImJpbmRpbmdGb3IiLCJleGMiLCJQcm9taXNlIiwiYWxsIiwiZmlsbEF0dHJpYnV0ZXMiLCJvUmVzdWx0cyIsIm9BdHRyaWJ1dGVzIiwic05hbWUiLCJyZXN1bHQiLCJvcmlnaW5hbFZhbHVlIiwicmVzb2x2ZWRWYWx1ZSIsImVycm9yIiwic3RhY2siLCJ0b1N0cmluZyIsImNvbGxlY3RJbmZvIiwiaSIsImF0dHJpYnV0ZXMiLCJsZW5ndGgiLCJvQXR0cmlidXRlIiwibm9kZU5hbWUiLCJnZXRBdHRyaWJ1dGUiLCJpbmNsdWRlcyIsInByb3BlcnRpZXMiLCJjb250ZXh0cyIsInJlc29sdmUiLCJzQ29udHJvbE5hbWUiLCJiSXNDb250cm9sIiwidGVzdCIsIm9UcmFjZU1ldGFkYXRhQ29udGV4dCIsImNvbnRyb2wiLCJuYW1lc3BhY2VVUkkiLCJvd25lckRvY3VtZW50IiwiZmlyc3RDaGlsZCIsInNldEF0dHJpYnV0ZU5TIiwiYlJlbGV2YW50IiwiT2JqZWN0Iiwia2V5cyIsImFzc2lnbiIsInZpZXdJbmZvIiwiZ2V0Vmlld0luZm8iLCJtYWNyb0luZm8iLCJnZXRTZXR0aW5ncyIsInRyYWNlSUQiLCJ2aXNpdEF0dHJpYnV0ZXMiLCJ2aXNpdENoaWxkTm9kZXMiLCJleGNlcHRpb24iLCJub2RlIiwiWE1MU2VyaWFsaXplciIsInNlcmlhbGl6ZVRvU3RyaW5nIiwibmFtZXNwYWNlIiwiWE1MUHJlcHJvY2Vzc29yIiwicGx1Z0luIiwiYmluZCIsInRyYWNlTWFjcm9DYWxscyIsIm9NZXRhZGF0YSIsIm1Db250ZXh0cyIsImFNZXRhZGF0YUNvbnRleHRLZXlzIiwibWV0YWRhdGFDb250ZXh0cyIsImFQcm9wZXJ0aWVzIiwibWFjcm8iLCJtZXRhRGF0YUNvbnRleHRzIiwibmFtZSIsInNLZXkiLCJvTWV0YURhdGFDb250ZXh0Iiwib1Byb3BlcnR5IiwidGhpcyIsImdldE9iamVjdCIsInBhcmVudE1hY3JvSUQiLCJtYWNyb0lEIiwiZ2V0VHJhY2VJbmZvIiwiaWQiLCJhRXJyb3JzIiwidHJhY2VJbmZvIiwiaXNUcmFjZUluZm9BY3RpdmUiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7QUFBQTtBQUNBLE1BQU1BLFVBQWlCLEdBQUc7QUFDekI7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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QUFDQTtBQUNBOzs7QUFDQSxXQUFTNEgsaUJBQVQsR0FBNkI7QUFDNUIsV0FBT3pILFNBQVA7QUFDQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7U0FDZTtBQUNkeUgsSUFBQUEsaUJBQWlCLEVBQUVBLGlCQURMO0FBRWRwQixJQUFBQSxlQUFlLEVBQUVBLGVBRkg7QUFHZGdCLElBQUFBLFlBQVksRUFBRUE7QUFIQSxHIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IFhNTFByZXByb2Nlc3NvciBmcm9tIFwic2FwL3VpL2NvcmUvdXRpbC9YTUxQcmVwcm9jZXNzb3JcIjtcbi8vVHJhY2UgaW5mb3JtYXRpb25cbmNvbnN0IGFUcmFjZUluZm86IGFueVtdID0gW1xuXHQvKiBTdHJ1Y3R1cmUgZm9yIGEgbWFjcm9cblx0XHRcdHtcblx0XHRcdFx0bWFjcm86ICcnLCAvL25hbWUgb2YgbWFjcm9cblx0XHRcdFx0bWV0YURhdGFDb250ZXh0czogWyAvL1Byb3BlcnRpZXMgb2YgdHlwZSBzYXAudWkubW9kZWwuQ29udGV4dFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdG5hbWU6ICcnLCAvL2NvbnRleHQgcHJvcGVydHkgbmFtZSAvIGtleVxuXHRcdFx0XHRcdFx0cGF0aDogJycsIC8vZnJvbSBvQ29udGV4dC5nZXRQYXRoKClcblx0XHRcdFx0XHR9XG5cdFx0XHRcdF0sXG5cdFx0XHRcdHByb3BlcnRpZXM6IHsgLy8gT3RoZXIgcHJvcGVydGllcyB3aGljaCBiZWNvbWUgcGFydCBvZiB7dGhpcz59XG5cdFx0XHRcdFx0cHJvcGVydHkxOiB2YWx1ZSxcblx0XHRcdFx0XHRwcm9wZXJ0eTI6IHZhbHVlXG5cdFx0XHRcdH1cblx0XHRcdFx0dmlld0luZm86IHtcblx0XHRcdFx0XHR2aWV3SW5mbzoge30gLy8gQXMgc3BlY2lmaWVkIGluIHZpZXcgb3IgZnJhZ2VtZW50IGNyZWF0aW9uXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHRyYWNlSUQ6IHRoaXMuaW5kZXgsIC8vSUQgZm9yIHRoaXMgdHJhY2UgaW5mb3JtYXRpb24sXG5cdFx0XHRcdG1hY3JvSW5mbzoge1xuXHRcdFx0XHRcdG1hY3JvSUQ6IGluZGV4LCAvLyB0cmFjZUlEIG9mIHRoaXMgbWFjcm8gKHJlZHVuZGFudCBmb3IgbWFjcm9zKVxuXHRcdFx0XHRcdHBhcmVudE1hY3JvSUQsIGluZGV4IC8vIHRyYWNlSUQgb2YgdGhlIHBhcmVudCBtYWNybyAoaWYgaXQgaGFzIGEgcGFyZW50KVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQvLyBTdHJ1Y3R1cmUgZm9yIGEgY29udHJvbFxuXHRcdFx0e1xuXHRcdFx0XHRjb250cm9sOiAnJywgLy9jb250cm9sIGNsYXNzXG5cdFx0XHRcdHByb3BlcnRpZXM6IHsgLy8gT3RoZXIgcHJvcGVydGllcyB3aGljaCBiZWNvbWUgcGFydCBvZiB7dGhpcz59XG5cdFx0XHRcdFx0cHJvcGVydHkxOiB7XG5cdFx0XHRcdFx0XHRvcmlnaW5hbFZhbHVlOiAnJywgLy9WYWx1ZSBiZWZvcmUgdGVtcGxhdGluZ1xuXHRcdFx0XHRcdFx0cmVzb2x2ZWRWYWx1ZTogJycgLy9WYWx1ZSBhZnRlciB0ZW1wbGF0aW5nXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnRleHRzOiB7IC8vTW9kZWxzIGFuZCBDb250ZXh0cyB1c2VkIGR1cmluZyB0ZW1wbGF0aW5nXG5cdFx0XHRcdFx0Ly8gTW9kZWwgb3IgY29udGV4dCBuYW1lIHVzZWQgZm9yIHRoaXMgY29udHJvbFxuXHRcdFx0XHRcdG1vZGVsTmFtZTE6IHsgLy8gRm9yIE9EYXRhTWV0YU1vZGVsXG5cdFx0XHRcdFx0XHRwYXRoMToge1xuXHRcdFx0XHRcdFx0XHRwYXRoOiAnJywgLy9hYnNvbHV0IHBhdGggd2l0aGluIG1ldGFtb2RlbFxuXHRcdFx0XHRcdFx0XHRkYXRhOiAnJywgLy9kYXRhIG9mIHBhdGggdW5sZXNzIHR5cGUgT2JqZWN0XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0bW9kZWxOYW1lMjoge1xuXHRcdFx0XHRcdFx0Ly8gZm9yIG90aGVyIG1vZGVsIHR5cGVzXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHByb3BlcnR5MTogdmFsdWUsXG5cdFx0XHRcdFx0XHRcdHByb3BlcnR5MjogdmFsdWVcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdC8vIEluIGNhc2UgYmluZGluZyBjYW5ub3QgYmUgcmVzb2x2ZWQgLT4gbWFyayBhcyBydW50aW1lIGJpbmRpbmdcblx0XHRcdFx0XHRcdC8vIFRoaXMgaXMgbm90IGFsd2F5cyB0cnVlLCBlLmcuIGluIGNhc2UgdGhlIHBhdGggaXMgbWV0YW1vZGVscGF0aFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcImJpbmRpbmdGb3JcIjogXCJSdW50aW1lXCJcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHZpZXdJbmZvOiB7XG5cdFx0XHRcdFx0dmlld0luZm86IHt9IC8vIEFzIHNwZWNpZmllZCBpbiB2aWV3IG9yIGZyYWdlbWVudCBjcmVhdGlvblxuXHRcdFx0XHR9LFxuXHRcdFx0XHRtYWNyb0luZm86IHtcblx0XHRcdFx0XHRtYWNyb0lEOiBpbmRleCwgLy8gdHJhY2VJRCBvZiB0aGUgbWFjcm8gdGhhdCBjcmVhdGVkIHRoaXMgY29udHJvbFxuXHRcdFx0XHRcdHBhcmVudE1hY3JvSUQsIGluZGV4IC8vIHRyYWNlSUQgb2YgdGhlIG1hY3JvJ3MgcGFyZW50IG1hY3JvXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHRyYWNlSUQ6IHRoaXMuaW5kZXggLy9JRCBmb3IgdGhpcyB0cmFjZSBpbmZvcm1hdGlvblxuXHRcdFx0fVxuXHRcdFx0Ki9cbl07XG5jb25zdCB0cmFjZU5hbWVzcGFjZSA9IFwiaHR0cDovL3NjaGVtYXMuc2FwLmNvbS9zYXB1aTUvZXh0ZW5zaW9uL3NhcC5mZS5pbmZvLzFcIixcblx0eG1sbnMgPSBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvXCIsXG5cdC8qKlxuXHQgKiBTd2l0Y2ggaXMgY3VycmVudGx5IGJhc2VkIG9uIHVybCBwYXJhbWV0ZXJcblx0ICovXG5cdHRyYWNlSXNPbiA9IGxvY2F0aW9uLnNlYXJjaC5pbmRleE9mKFwic2FwLXVpLXh4LWZlVHJhY2VJbmZvPXRydWVcIikgPiAtMSxcblx0LyoqXG5cdCAqIFNwZWNpZnkgYWxsIG5hbWVzcGFjZXMgdGhhdCBzaGFsbCBiZSB0cmFjZWQgZHVyaW5nIHRlbXBsYXRpbmdcblx0ICovXG5cdGFOYW1lc3BhY2VzID0gW1xuXHRcdFwic2FwLm1cIixcblx0XHRcInNhcC51eGFwXCIsXG5cdFx0XCJzYXAudWkudW5pZmllZFwiLFxuXHRcdFwic2FwLmZcIixcblx0XHRcInNhcC51aS50YWJsZVwiLFxuXHRcdFwic2FwLnN1aXRlLnVpLm1pY3JvY2hhcnRcIixcblx0XHRcInNhcC51aS5sYXlvdXQuZm9ybVwiLFxuXHRcdFwic2FwLnVpLm1kY1wiLFxuXHRcdFwic2FwLnVpLm1kYy5saW5rXCIsXG5cdFx0XCJzYXAudWkubWRjLmZpZWxkXCIsXG5cdFx0XCJzYXAuZmUuZnBtXCJcblx0XSxcblx0b0NhbGxiYWNrczogYW55ID0ge307XG5cbmZ1bmN0aW9uIGZuQ2xvbmUob09iamVjdDogYW55KSB7XG5cdHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9PYmplY3QpKTtcbn1cbmZ1bmN0aW9uIGNvbGxlY3RDb250ZXh0SW5mbyhzVmFsdWU6IGFueSwgb0NvbnRleHRzOiBhbnksIG9WaXNpdG9yOiBhbnksIG9Ob2RlOiBhbnkpIHtcblx0bGV0IGFDb250ZXh0cztcblx0Y29uc3QgYVByb21pc2VzOiBhbnlbXSA9IFtdO1xuXHR0cnkge1xuXHRcdGFDb250ZXh0cyA9IChNYW5hZ2VkT2JqZWN0IGFzIGFueSkuYmluZGluZ1BhcnNlcihzVmFsdWUsIHVuZGVmaW5lZCwgZmFsc2UsIHRydWUpIHx8IFtdO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0YUNvbnRleHRzID0gW107XG5cdH1cblx0YUNvbnRleHRzID0gQXJyYXkuaXNBcnJheShhQ29udGV4dHMpID8gYUNvbnRleHRzIDogW2FDb250ZXh0c107XG5cdGFDb250ZXh0c1xuXHRcdC5maWx0ZXIoZnVuY3Rpb24gKG9Db250ZXh0OiBhbnkpIHtcblx0XHRcdHJldHVybiBvQ29udGV4dC5wYXRoIHx8IG9Db250ZXh0LnBhcnRzO1xuXHRcdH0pXG5cdFx0LmZvckVhY2goZnVuY3Rpb24gKG9Db250ZXh0OiBhbnkpIHtcblx0XHRcdGNvbnN0IGFQYXJ0cyA9IG9Db250ZXh0LnBhcnRzIHx8IFtvQ29udGV4dF07XG5cdFx0XHRhUGFydHNcblx0XHRcdFx0LmZpbHRlcihmdW5jdGlvbiAob1BhcnRDb250ZXh0OiBhbnkpIHtcblx0XHRcdFx0XHRyZXR1cm4gb1BhcnRDb250ZXh0LnBhdGg7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5mb3JFYWNoKGZ1bmN0aW9uIChvUGFydENvbnRleHQ6IGFueSkge1xuXHRcdFx0XHRcdGNvbnN0IG9Nb2RlbCA9IChvQ29udGV4dHNbb1BhcnRDb250ZXh0Lm1vZGVsXSA9IG9Db250ZXh0c1tvUGFydENvbnRleHQubW9kZWxdIHx8IHt9KTtcblx0XHRcdFx0XHRjb25zdCBzU2ltcGxlUGF0aCA9XG5cdFx0XHRcdFx0XHRvUGFydENvbnRleHQucGF0aC5pbmRleE9mKFwiPlwiKSA8IDBcblx0XHRcdFx0XHRcdFx0PyAob1BhcnRDb250ZXh0Lm1vZGVsICYmIGAke29QYXJ0Q29udGV4dC5tb2RlbH0+YCkgKyBvUGFydENvbnRleHQucGF0aFxuXHRcdFx0XHRcdFx0XHQ6IG9QYXJ0Q29udGV4dC5wYXRoO1xuXHRcdFx0XHRcdGxldCBvUmVhbENvbnRleHQ6IGFueTtcblx0XHRcdFx0XHRsZXQgYUlubmVyUGFydHM7XG5cblx0XHRcdFx0XHRpZiAodHlwZW9mIG9QYXJ0Q29udGV4dC5tb2RlbCA9PT0gXCJ1bmRlZmluZWRcIiAmJiBzU2ltcGxlUGF0aC5pbmRleE9mKFwiPlwiKSA+IC0xKSB7XG5cdFx0XHRcdFx0XHRhSW5uZXJQYXJ0cyA9IHNTaW1wbGVQYXRoLnNwbGl0KFwiPlwiKTtcblx0XHRcdFx0XHRcdG9QYXJ0Q29udGV4dC5tb2RlbCA9IGFJbm5lclBhcnRzWzBdO1xuXHRcdFx0XHRcdFx0b1BhcnRDb250ZXh0LnBhdGggPSBhSW5uZXJQYXJ0c1sxXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdG9SZWFsQ29udGV4dCA9IG9WaXNpdG9yLmdldENvbnRleHQoc1NpbXBsZVBhdGgpO1xuXHRcdFx0XHRcdFx0YVByb21pc2VzLnB1c2goXG5cdFx0XHRcdFx0XHRcdG9WaXNpdG9yXG5cdFx0XHRcdFx0XHRcdFx0LmdldFJlc3VsdChgeyR7c1NpbXBsZVBhdGh9fWAsIG9Ob2RlKVxuXHRcdFx0XHRcdFx0XHRcdC50aGVuKGZ1bmN0aW9uIChvUmVzdWx0OiBhbnkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChvUmVhbENvbnRleHQuZ2V0TW9kZWwoKS5nZXRNZXRhZGF0YSgpLmdldE5hbWUoKSA9PT0gXCJzYXAudWkubW9kZWwuanNvbi5KU09OTW9kZWxcIikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIW9SZXN1bHQub01vZGVsKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0b01vZGVsW29QYXJ0Q29udGV4dC5wYXRoXSA9IG9SZXN1bHQ7IC8vb1JlYWxDb250ZXh0LmdldE9iamVjdChvQ29udGV4dC5wYXRoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvTW9kZWxbb1BhcnRDb250ZXh0LnBhdGhdID0gYENvbnRleHQgZnJvbSAke29SZXN1bHQuZ2V0UGF0aCgpfWA7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG9Nb2RlbFtvUGFydENvbnRleHQucGF0aF0gPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cGF0aDogb1JlYWxDb250ZXh0LmdldFBhdGgoKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkYXRhOiB0eXBlb2Ygb1Jlc3VsdCA9PT0gXCJvYmplY3RcIiA/IFwiW2N0cmwvY21kLWNsaWNrXSBvbiBwYXRoIHRvIHNlZSBkYXRhXCIgOiBvUmVzdWx0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0b01vZGVsW29QYXJ0Q29udGV4dC5wYXRoXSA9IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YmluZGluZ0ZvcjogXCJSdW50aW1lXCJcblx0XHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSBjYXRjaCAoZXhjKSB7XG5cdFx0XHRcdFx0XHRvTW9kZWxbb1BhcnRDb250ZXh0LnBhdGhdID0ge1xuXHRcdFx0XHRcdFx0XHRiaW5kaW5nRm9yOiBcIlJ1bnRpbWVcIlxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdH0pO1xuXHRyZXR1cm4gUHJvbWlzZS5hbGwoYVByb21pc2VzKTtcbn1cbmZ1bmN0aW9uIGZpbGxBdHRyaWJ1dGVzKG9SZXN1bHRzOiBhbnksIG9BdHRyaWJ1dGVzOiBhbnksIHNOYW1lOiBhbnksIHNWYWx1ZTogYW55KSB7XG5cdHJldHVybiBvUmVzdWx0c1xuXHRcdC50aGVuKGZ1bmN0aW9uIChyZXN1bHQ6IGFueSkge1xuXHRcdFx0b0F0dHJpYnV0ZXNbc05hbWVdID1cblx0XHRcdFx0c1ZhbHVlICE9PSByZXN1bHRcblx0XHRcdFx0XHQ/IHtcblx0XHRcdFx0XHRcdFx0b3JpZ2luYWxWYWx1ZTogc1ZhbHVlLFxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlZFZhbHVlOiByZXN1bHRcblx0XHRcdFx0XHQgIH1cblx0XHRcdFx0XHQ6IHNWYWx1ZTtcblx0XHR9KVxuXHRcdC5jYXRjaChmdW5jdGlvbiAoZTogYW55KSB7XG5cdFx0XHRvQXR0cmlidXRlc1tzTmFtZV0gPSB7XG5cdFx0XHRcdG9yaWdpbmFsVmFsdWU6IHNWYWx1ZSxcblx0XHRcdFx0ZXJyb3I6IChlLnN0YWNrICYmIGUuc3RhY2sudG9TdHJpbmcoKSkgfHwgZVxuXHRcdFx0fTtcblx0XHR9KTtcbn1cbmZ1bmN0aW9uIGNvbGxlY3RJbmZvKG9Ob2RlOiBhbnksIG9WaXNpdG9yOiBhbnkpIHtcblx0Y29uc3Qgb0F0dHJpYnV0ZXMgPSB7fTtcblx0Y29uc3QgYVByb21pc2VzID0gW107XG5cdGNvbnN0IG9Db250ZXh0cyA9IHt9O1xuXHRsZXQgb1Jlc3VsdHM7XG5cdGZvciAobGV0IGkgPSBvTm9kZS5hdHRyaWJ1dGVzLmxlbmd0aCA+Pj4gMDsgaS0tOyApIHtcblx0XHRjb25zdCBvQXR0cmlidXRlID0gb05vZGUuYXR0cmlidXRlc1tpXSxcblx0XHRcdHNOYW1lID0gb0F0dHJpYnV0ZS5ub2RlTmFtZSxcblx0XHRcdHNWYWx1ZSA9IG9Ob2RlLmdldEF0dHJpYnV0ZShzTmFtZSk7XG5cdFx0aWYgKCFbXCJjb3JlOnJlcXVpcmVcIl0uaW5jbHVkZXMoc05hbWUpKSB7XG5cdFx0XHRhUHJvbWlzZXMucHVzaChjb2xsZWN0Q29udGV4dEluZm8oc1ZhbHVlLCBvQ29udGV4dHMsIG9WaXNpdG9yLCBvTm9kZSkpO1xuXHRcdFx0b1Jlc3VsdHMgPSBvVmlzaXRvci5nZXRSZXN1bHQoc1ZhbHVlLCBvTm9kZSk7XG5cdFx0XHRpZiAob1Jlc3VsdHMpIHtcblx0XHRcdFx0YVByb21pc2VzLnB1c2goZmlsbEF0dHJpYnV0ZXMob1Jlc3VsdHMsIG9BdHRyaWJ1dGVzLCBzTmFtZSwgc1ZhbHVlKSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvL1doYXRcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cmV0dXJuIFByb21pc2UuYWxsKGFQcm9taXNlcykudGhlbihmdW5jdGlvbiAoKSB7XG5cdFx0cmV0dXJuIHsgcHJvcGVydGllczogb0F0dHJpYnV0ZXMsIGNvbnRleHRzOiBvQ29udGV4dHMgfTtcblx0fSk7XG59XG5mdW5jdGlvbiByZXNvbHZlKG9Ob2RlOiBhbnksIG9WaXNpdG9yOiBhbnkpIHtcblx0Y29uc3Qgc0NvbnRyb2xOYW1lID0gb05vZGUubm9kZU5hbWUuc3BsaXQoXCI6XCIpWzFdIHx8IG9Ob2RlLm5vZGVOYW1lLFxuXHRcdGJJc0NvbnRyb2wgPSAvXltBLVpdLy50ZXN0KHNDb250cm9sTmFtZSksXG5cdFx0b1RyYWNlTWV0YWRhdGFDb250ZXh0OiBhbnkgPSB7XG5cdFx0XHRjb250cm9sOiBgJHtvTm9kZS5uYW1lc3BhY2VVUkl9LiR7b05vZGUubm9kZU5hbWUuc3BsaXQoXCI6XCIpWzFdIHx8IG9Ob2RlLm5vZGVOYW1lfWBcblx0XHR9O1xuXG5cdGlmIChiSXNDb250cm9sKSB7XG5cdFx0aWYgKCFvTm9kZS5vd25lckRvY3VtZW50LmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKFwieG1sbnM6dHJhY2VcIikpIHtcblx0XHRcdG9Ob2RlLm93bmVyRG9jdW1lbnQuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGVOUyh4bWxucywgXCJ4bWxuczp0cmFjZVwiLCB0cmFjZU5hbWVzcGFjZSk7XG5cdFx0XHRvTm9kZS5vd25lckRvY3VtZW50LmZpcnN0Q2hpbGQuc2V0QXR0cmlidXRlTlModHJhY2VOYW1lc3BhY2UsIFwidHJhY2U6aXNcIiwgXCJvblwiKTtcblx0XHR9XG5cdFx0cmV0dXJuIGNvbGxlY3RJbmZvKG9Ob2RlLCBvVmlzaXRvcilcblx0XHRcdC50aGVuKGZ1bmN0aW9uIChyZXN1bHQ6IHsgcHJvcGVydGllczoge307IGNvbnRleHRzOiB7fSB9KSB7XG5cdFx0XHRcdGNvbnN0IGJSZWxldmFudCA9IE9iamVjdC5rZXlzKHJlc3VsdC5jb250ZXh0cykubGVuZ3RoID4gMDsgLy9JZiBubyBjb250ZXh0IHdhcyB1c2VkIGl0IGlzIG5vdCByZWxldmFudCBzbyB3ZSBpZ25vcmUgT2JqZWN0LmtleXMocmVzdWx0LnByb3BlcnRpZXMpLmxlbmd0aFxuXHRcdFx0XHRpZiAoYlJlbGV2YW50KSB7XG5cdFx0XHRcdFx0T2JqZWN0LmFzc2lnbihvVHJhY2VNZXRhZGF0YUNvbnRleHQsIHJlc3VsdCk7XG5cdFx0XHRcdFx0b1RyYWNlTWV0YWRhdGFDb250ZXh0LnZpZXdJbmZvID0gb1Zpc2l0b3IuZ2V0Vmlld0luZm8oKTtcblx0XHRcdFx0XHRvVHJhY2VNZXRhZGF0YUNvbnRleHQubWFjcm9JbmZvID0gb1Zpc2l0b3IuZ2V0U2V0dGluZ3MoKVtcIl9tYWNyb0luZm9cIl07XG5cdFx0XHRcdFx0b1RyYWNlTWV0YWRhdGFDb250ZXh0LnRyYWNlSUQgPSBhVHJhY2VJbmZvLmxlbmd0aDtcblx0XHRcdFx0XHRvTm9kZS5zZXRBdHRyaWJ1dGVOUyh0cmFjZU5hbWVzcGFjZSwgXCJ0cmFjZTp0cmFjZUlEXCIsIG9UcmFjZU1ldGFkYXRhQ29udGV4dC50cmFjZUlEKTtcblx0XHRcdFx0XHRhVHJhY2VJbmZvLnB1c2gob1RyYWNlTWV0YWRhdGFDb250ZXh0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gb1Zpc2l0b3IudmlzaXRBdHRyaWJ1dGVzKG9Ob2RlKTtcblx0XHRcdH0pXG5cdFx0XHQudGhlbihmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdHJldHVybiBvVmlzaXRvci52aXNpdENoaWxkTm9kZXMob05vZGUpO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAoZXhjOiBhbnkpIHtcblx0XHRcdFx0b1RyYWNlTWV0YWRhdGFDb250ZXh0LmVycm9yID0ge1xuXHRcdFx0XHRcdGV4Y2VwdGlvbjogZXhjLFxuXHRcdFx0XHRcdG5vZGU6IG5ldyBYTUxTZXJpYWxpemVyKCkuc2VyaWFsaXplVG9TdHJpbmcob05vZGUpXG5cdFx0XHRcdH07XG5cdFx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gb1Zpc2l0b3IudmlzaXRBdHRyaWJ1dGVzKG9Ob2RlKS50aGVuKGZ1bmN0aW9uICgpIHtcblx0XHRcdHJldHVybiBvVmlzaXRvci52aXNpdENoaWxkTm9kZXMob05vZGUpO1xuXHRcdH0pO1xuXHR9XG59XG4vKipcbiAqIFJlZ2lzdGVyIHBhdGgtdGhyb3VnaCBYTUxQcmVwcm9jZXNzb3IgcGx1Z2luIGZvciBhbGwgbmFtZXNwYWNlc1xuICogZ2l2ZW4gYWJvdmUgaW4gYU5hbWVzcGFjZXNcbiAqL1xuaWYgKHRyYWNlSXNPbikge1xuXHRhTmFtZXNwYWNlcy5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lc3BhY2U6IHN0cmluZykge1xuXHRcdG9DYWxsYmFja3NbbmFtZXNwYWNlXSA9IFhNTFByZXByb2Nlc3Nvci5wbHVnSW4ocmVzb2x2ZS5iaW5kKG5hbWVzcGFjZSksIG5hbWVzcGFjZSk7XG5cdH0pO1xufVxuLyoqXG4gKiBBZGRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcm9jZXNzaW5nIG9mIG9uZSBtYWNybyB0byB0aGUgY29sbGVjdGlvbi5cbiAqXG4gKiBAbmFtZSBzYXAuZmUubWFjcm9zLlRyYWNlSW5mby50cmFjZU1hY3JvQ2FsbHNcbiAqIEBwYXJhbSBzTmFtZSBNYWNybyBjbGFzcyBuYW1lXG4gKiBAcGFyYW0gb01ldGFkYXRhIERlZmluaXRpb24gZnJvbSAobWFjcm8pLm1ldGFkYXRhLmpzXG4gKiBAcGFyYW0gbUNvbnRleHRzIEF2YWlsYWJsZSBuYW1lZCBjb250ZXh0c1xuICogQHBhcmFtIG9Ob2RlXG4gKiBAcGFyYW0gb1Zpc2l0b3JcbiAqIEByZXR1cm5zIFRoZSB0cmFjZWQgbWV0YWRhdGEgY29udGV4dFxuICogQHByaXZhdGVcbiAqIEB1aTUtcmVzdHJpY3RlZFxuICogQHN0YXRpY1xuICovXG5mdW5jdGlvbiB0cmFjZU1hY3JvQ2FsbHMoc05hbWU6IHN0cmluZywgb01ldGFkYXRhOiBhbnksIG1Db250ZXh0czogYW55LCBvTm9kZTogYW55LCBvVmlzaXRvcjogYW55KSB7XG5cdGxldCBhTWV0YWRhdGFDb250ZXh0S2V5cyA9IChvTWV0YWRhdGEubWV0YWRhdGFDb250ZXh0cyAmJiBPYmplY3Qua2V5cyhvTWV0YWRhdGEubWV0YWRhdGFDb250ZXh0cykpIHx8IFtdO1xuXHRjb25zdCBhUHJvcGVydGllcyA9IChvTWV0YWRhdGEucHJvcGVydGllcyAmJiBPYmplY3Qua2V5cyhvTWV0YWRhdGEucHJvcGVydGllcykpIHx8IFtdO1xuXHRjb25zdCBtYWNyb0luZm8gPSBmbkNsb25lKG9WaXNpdG9yLmdldFNldHRpbmdzKClbXCJfbWFjcm9JbmZvXCJdIHx8IHt9KTtcblx0Y29uc3Qgb1RyYWNlTWV0YWRhdGFDb250ZXh0OiBhbnkgPSB7XG5cdFx0bWFjcm86IHNOYW1lLFxuXHRcdG1ldGFEYXRhQ29udGV4dHM6IFtdIGFzIGFueVtdLFxuXHRcdHByb3BlcnRpZXM6IHt9XG5cdH07XG5cblx0aWYgKGFNZXRhZGF0YUNvbnRleHRLZXlzLmxlbmd0aCA9PT0gMCkge1xuXHRcdC8vSW4gY2FzZSB0aGUgbWFjcm8gaGFzIG5vdCBtZXRhZGF0YS5qcyB3ZSB0YWtlIGFsbCBtZXRhZGF0YUNvbnRleHRzIGV4Y2VwdCB0aGlzXG5cdFx0YU1ldGFkYXRhQ29udGV4dEtleXMgPSBPYmplY3Qua2V5cyhtQ29udGV4dHMpLmZpbHRlcihmdW5jdGlvbiAobmFtZTogc3RyaW5nKSB7XG5cdFx0XHRyZXR1cm4gbmFtZSAhPT0gXCJ0aGlzXCI7XG5cdFx0fSk7XG5cdH1cblxuXHRpZiAoIW9Ob2RlLmdldEF0dHJpYnV0ZShcInhtbG5zOnRyYWNlXCIpKSB7XG5cdFx0b05vZGUuc2V0QXR0cmlidXRlTlMoeG1sbnMsIFwieG1sbnM6dHJhY2VcIiwgdHJhY2VOYW1lc3BhY2UpO1xuXHR9XG5cblx0aWYgKGFNZXRhZGF0YUNvbnRleHRLZXlzLmxlbmd0aCA+IDApIHtcblx0XHRhTWV0YWRhdGFDb250ZXh0S2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChzS2V5OiBhbnkpIHtcblx0XHRcdGNvbnN0IG9Db250ZXh0ID0gbUNvbnRleHRzW3NLZXldLFxuXHRcdFx0XHRvTWV0YURhdGFDb250ZXh0OiBhbnkgPSBvQ29udGV4dCAmJiB7XG5cdFx0XHRcdFx0bmFtZTogc0tleSxcblx0XHRcdFx0XHRwYXRoOiBvQ29udGV4dC5nZXRQYXRoKClcblx0XHRcdFx0XHQvL2RhdGE6IEpTT04uc3RyaW5naWZ5KG9Db250ZXh0LmdldE9iamVjdCgpLG51bGwsMilcblx0XHRcdFx0fTtcblxuXHRcdFx0aWYgKG9NZXRhRGF0YUNvbnRleHQpIHtcblx0XHRcdFx0b1RyYWNlTWV0YWRhdGFDb250ZXh0Lm1ldGFEYXRhQ29udGV4dHMucHVzaChvTWV0YURhdGFDb250ZXh0KTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdGFQcm9wZXJ0aWVzLmZvckVhY2goZnVuY3Rpb24gKHNLZXk6IGFueSkge1xuXHRcdFx0Y29uc3QgLy9vUHJvcGVydHlTZXR0aW5ncyA9IG9NZXRhZGF0YS5wcm9wZXJ0aWVzW3NLZXldLFxuXHRcdFx0XHRvUHJvcGVydHkgPSBtQ29udGV4dHMudGhpcy5nZXRPYmplY3Qoc0tleSk7XG5cdFx0XHQvLyAob05vZGUuaGFzQXR0cmlidXRlKHNLZXkpICYmIG9Ob2RlLmdldEF0dHJpYnV0ZShzS2V5KSkgfHxcblx0XHRcdC8vIChvUHJvcGVydHlTZXR0aW5ncy5oYXNPd25Qcm9wZXJ0eShcImRlZmF1bHRWYWx1ZVwiKSAmJiBvUHJvcGVydHlTZXR0aW5ncy5kZWZpbmUpIHx8XG5cdFx0XHQvLyBmYWxzZTtcblxuXHRcdFx0aWYgKG9Qcm9wZXJ0eSkge1xuXHRcdFx0XHRvVHJhY2VNZXRhZGF0YUNvbnRleHQucHJvcGVydGllc1tzS2V5XSA9IG9Qcm9wZXJ0eTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRvVHJhY2VNZXRhZGF0YUNvbnRleHQudmlld0luZm8gPSBvVmlzaXRvci5nZXRWaWV3SW5mbygpO1xuXHRcdG9UcmFjZU1ldGFkYXRhQ29udGV4dC50cmFjZUlEID0gYVRyYWNlSW5mby5sZW5ndGg7XG5cdFx0bWFjcm9JbmZvLnBhcmVudE1hY3JvSUQgPSBtYWNyb0luZm8ubWFjcm9JRDtcblx0XHRtYWNyb0luZm8ubWFjcm9JRCA9IG9UcmFjZU1ldGFkYXRhQ29udGV4dC50cmFjZUlEO1xuXHRcdG9UcmFjZU1ldGFkYXRhQ29udGV4dC5tYWNyb0luZm8gPSBtYWNyb0luZm87XG5cdFx0b05vZGUuc2V0QXR0cmlidXRlTlModHJhY2VOYW1lc3BhY2UsIFwidHJhY2U6bWFjcm9JRFwiLCBvVHJhY2VNZXRhZGF0YUNvbnRleHQudHJhY2VJRCk7XG5cdFx0YVRyYWNlSW5mby5wdXNoKG9UcmFjZU1ldGFkYXRhQ29udGV4dCk7XG5cdFx0cmV0dXJuIG9UcmFjZU1ldGFkYXRhQ29udGV4dDtcblx0fVxufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBnbG9iYWxseSBzdG9yZWQgdHJhY2UgaW5mb3JtYXRpb24gZm9yIHRoZSBtYWNybyBvclxuICogY29udHJvbCBtYXJrZWQgd2l0aCB0aGUgZ2l2ZW4gaWQuXG4gKlxuICogUmV0dXJucyBhbGwgdHJhY2UgaW5mb3JtYXRpb24gaWYgbm8gaWQgaXMgc3BlY2lmaWVkXG4gKlxuICpcbjxwcmU+U3RydWN0dXJlIGZvciBhIG1hY3JvXG57XG5cdG1hY3JvOiAnJywgLy9uYW1lIG9mIG1hY3JvXG5cdG1ldGFEYXRhQ29udGV4dHM6IFsgLy9Qcm9wZXJ0aWVzIG9mIHR5cGUgc2FwLnVpLm1vZGVsLkNvbnRleHRcblx0XHR7XG5cdFx0XHRuYW1lOiAnJywgLy9jb250ZXh0IHByb3BlcnR5IG5hbWUgLyBrZXlcblx0XHRcdHBhdGg6ICcnLCAvL2Zyb20gb0NvbnRleHQuZ2V0UGF0aCgpXG5cdFx0fVxuXHRdLFxuXHRwcm9wZXJ0aWVzOiB7IC8vIE90aGVyIHByb3BlcnRpZXMgd2hpY2ggYmVjb21lIHBhcnQgb2Yge3RoaXM+fVxuXHRcdHByb3BlcnR5MTogdmFsdWUsXG5cdFx0cHJvcGVydHkyOiB2YWx1ZVxuXHR9XG5cdHZpZXdJbmZvOiB7XG5cdFx0dmlld0luZm86IHt9IC8vIEFzIHNwZWNpZmllZCBpbiB2aWV3IG9yIGZyYWdlbWVudCBjcmVhdGlvblxuXHR9LFxuXHR0cmFjZUlEOiB0aGlzLmluZGV4LCAvL0lEIGZvciB0aGlzIHRyYWNlIGluZm9ybWF0aW9uLFxuXHRtYWNyb0luZm86IHtcblx0XHRtYWNyb0lEOiBpbmRleCwgLy8gdHJhY2VJRCBvZiB0aGlzIG1hY3JvIChyZWR1bmRhbnQgZm9yIG1hY3Jvcylcblx0XHRwYXJlbnRNYWNyb0lELCBpbmRleCAvLyB0cmFjZUlEIG9mIHRoZSBwYXJlbnQgbWFjcm8gKGlmIGl0IGhhcyBhIHBhcmVudClcblx0fVxufVxuU3RydWN0dXJlIGZvciBhIGNvbnRyb2xcbntcblx0Y29udHJvbDogJycsIC8vY29udHJvbCBjbGFzc1xuXHRwcm9wZXJ0aWVzOiB7IC8vIE90aGVyIHByb3BlcnRpZXMgd2hpY2ggYmVjb21lIHBhcnQgb2Yge3RoaXM+fVxuXHRcdHByb3BlcnR5MToge1xuXHRcdFx0b3JpZ2luYWxWYWx1ZTogJycsIC8vVmFsdWUgYmVmb3JlIHRlbXBsYXRpbmdcblx0XHRcdHJlc29sdmVkVmFsdWU6ICcnIC8vVmFsdWUgYWZ0ZXIgdGVtcGxhdGluZ1xuXHRcdH1cblx0fVxuXHRjb250ZXh0czogeyAvL01vZGVscyBhbmQgQ29udGV4dHMgdXNlZCBkdXJpbmcgdGVtcGxhdGluZ1xuXHRcdC8vIE1vZGVsIG9yIGNvbnRleHQgbmFtZSB1c2VkIGZvciB0aGlzIGNvbnRyb2xcblx0XHRtb2RlbE5hbWUxOiB7IC8vIEZvciBPRGF0YU1ldGFNb2RlbFxuXHRcdFx0cGF0aDE6IHtcblx0XHRcdFx0cGF0aDogJycsIC8vYWJzb2x1dCBwYXRoIHdpdGhpbiBtZXRhbW9kZWxcblx0XHRcdFx0ZGF0YTogJycsIC8vZGF0YSBvZiBwYXRoIHVubGVzcyB0eXBlIE9iamVjdFxuXHRcdFx0fVxuXHRcdG1vZGVsTmFtZTI6IHtcblx0XHRcdC8vIGZvciBvdGhlciBtb2RlbCB0eXBlc1xuXHRcdFx0e1xuXHRcdFx0XHRwcm9wZXJ0eTE6IHZhbHVlLFxuXHRcdFx0XHRwcm9wZXJ0eTI6IHZhbHVlXG5cdFx0XHR9XG5cdFx0XHQvLyBJbiBjYXNlIGJpbmRpbmcgY2Fubm90IGJlIHJlc29sdmVkIC0+IG1hcmsgYXMgcnVudGltZSBiaW5kaW5nXG5cdFx0XHQvLyBUaGlzIGlzIG5vdCBhbHdheXMgdHJ1ZSwgZS5nLiBpbiBjYXNlIHRoZSBwYXRoIGlzIG1ldGFtb2RlbHBhdGhcblx0XHRcdHtcblx0XHRcdFx0XCJiaW5kaW5nRm9yXCI6IFwiUnVudGltZVwiXG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHR2aWV3SW5mbzoge1xuXHRcdHZpZXdJbmZvOiB7fSAvLyBBcyBzcGVjaWZpZWQgaW4gdmlldyBvciBmcmFnZW1lbnQgY3JlYXRpb25cblx0fSxcblx0bWFjcm9JbmZvOiB7XG5cdFx0bWFjcm9JRDogaW5kZXgsIC8vIHRyYWNlSUQgb2YgdGhlIG1hY3JvIHRoYXQgY3JlYXRlZCB0aGlzIGNvbnRyb2xcblx0XHRwYXJlbnRNYWNyb0lELCBpbmRleCAvLyB0cmFjZUlEIG9mIHRoZSBtYWNybydzIHBhcmVudCBtYWNyb1xuXHR9LFxuXHR0cmFjZUlEOiB0aGlzLmluZGV4IC8vSUQgZm9yIHRoaXMgdHJhY2UgaW5mb3JtYXRpb25cbn08L3ByZT4uXG4gKlxuICogQGZ1bmN0aW9uXG4gKiBAbmFtZSBzYXAuZmUubWFjcm9zLlRyYWNlSW5mby5nZXRUcmFjZUluZm9cbiAqIEBwYXJhbSBpZCBUcmFjZUluZm8gaWRcbiAqIEByZXR1cm5zIE9iamVjdCAvIEFycmF5IGZvciBUcmFjZUluZm9cbiAqIEBwcml2YXRlXG4gKiBAc3RhdGljXG4gKi9cbmZ1bmN0aW9uIGdldFRyYWNlSW5mbyhpZDogbnVtYmVyKSB7XG5cdGlmIChpZCkge1xuXHRcdHJldHVybiBhVHJhY2VJbmZvW2lkXTtcblx0fVxuXHRjb25zdCBhRXJyb3JzID0gYVRyYWNlSW5mby5maWx0ZXIoZnVuY3Rpb24gKHRyYWNlSW5mbzogYW55KSB7XG5cdFx0cmV0dXJuIHRyYWNlSW5mby5lcnJvcjtcblx0fSk7XG5cdHJldHVybiAoYUVycm9ycy5sZW5ndGggPiAwICYmIGFFcnJvcnMpIHx8IGFUcmFjZUluZm87XG59XG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiBUcmFjZUluZm8gaXMgYWN0aXZlLlxuICpcbiAqIEBmdW5jdGlvblxuICogQG5hbWUgc2FwLmZlLm1hY3Jvcy5UcmFjZUluZm8uaXNUcmFjZUluZm9BY3RpdmVcbiAqIEByZXR1cm5zIGB0cnVlYCB3aGVuIGFjdGl2ZVxuICogQHByaXZhdGVcbiAqIEBzdGF0aWNcbiAqL1xuZnVuY3Rpb24gaXNUcmFjZUluZm9BY3RpdmUoKSB7XG5cdHJldHVybiB0cmFjZUlzT247XG59XG4vKipcbiAqIEB0eXBlZGVmIHNhcC5mZS5tYWNyb3MuVHJhY2VJbmZvXG4gKiBUcmFjZUluZm8gZm9yIFNBUCBGaW9yaSBlbGVtZW50c1xuICpcbiAqIE9uY2UgdHJhY2VzIGlzIHN3aXRjaGVkLCBpbmZvcm1hdGlvbiBhYm91dCBtYWNyb3MgYW5kIGNvbnRyb2xzXG4gKiB0aGF0IGFyZSBwcm9jZXNzZWQgZHVyaW5nIHhtbCBwcmVwcm9jZXNzaW5nICggQHNlZSB7QGxpbmsgc2FwLnVpLmNvcmUudXRpbC5YTUxQcmVwcm9jZXNzb3J9KVxuICogd2lsbCBiZSBjb2xsZWN0ZWQgd2l0aGluIHRoaXMgc2luZ2xldG9uXG4gKiBAbmFtZXNwYWNlXG4gKiBAcHJpdmF0ZVxuICogQGdsb2JhbFxuICogQGV4cGVyaW1lbnRhbCBUaGlzIG1vZHVsZSBpcyBvbmx5IGZvciBleHBlcmltZW50YWwgdXNlISA8YnIvPjxiPlRoaXMgaXMgb25seSBhIFBPQyBhbmQgbWF5YmUgZGVsZXRlZDwvYj5cbiAqIEBzaW5jZSAxLjc0LjBcbiAqL1xuZXhwb3J0IGRlZmF1bHQge1xuXHRpc1RyYWNlSW5mb0FjdGl2ZTogaXNUcmFjZUluZm9BY3RpdmUsXG5cdHRyYWNlTWFjcm9DYWxsczogdHJhY2VNYWNyb0NhbGxzLFxuXHRnZXRUcmFjZUluZm86IGdldFRyYWNlSW5mb1xufTtcbiJdfQ==
|
|
@@ -107,48 +107,50 @@ function collectContextInfo(sValue: any, oContexts: any, oVisitor: any, oNode: a
|
|
|
107
107
|
.forEach(function (oContext: any) {
|
|
108
108
|
const aParts = oContext.parts || [oContext];
|
|
109
109
|
aParts
|
|
110
|
-
.filter(function (
|
|
111
|
-
return
|
|
110
|
+
.filter(function (oPartContext: any) {
|
|
111
|
+
return oPartContext.path;
|
|
112
112
|
})
|
|
113
|
-
.forEach(function (
|
|
114
|
-
const oModel = (oContexts[
|
|
113
|
+
.forEach(function (oPartContext: any) {
|
|
114
|
+
const oModel = (oContexts[oPartContext.model] = oContexts[oPartContext.model] || {});
|
|
115
115
|
const sSimplePath =
|
|
116
|
-
|
|
116
|
+
oPartContext.path.indexOf(">") < 0
|
|
117
|
+
? (oPartContext.model && `${oPartContext.model}>`) + oPartContext.path
|
|
118
|
+
: oPartContext.path;
|
|
117
119
|
let oRealContext: any;
|
|
118
|
-
let
|
|
120
|
+
let aInnerParts;
|
|
119
121
|
|
|
120
|
-
if (typeof
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
122
|
+
if (typeof oPartContext.model === "undefined" && sSimplePath.indexOf(">") > -1) {
|
|
123
|
+
aInnerParts = sSimplePath.split(">");
|
|
124
|
+
oPartContext.model = aInnerParts[0];
|
|
125
|
+
oPartContext.path = aInnerParts[1];
|
|
124
126
|
}
|
|
125
127
|
try {
|
|
126
128
|
oRealContext = oVisitor.getContext(sSimplePath);
|
|
127
129
|
aPromises.push(
|
|
128
130
|
oVisitor
|
|
129
|
-
.getResult(
|
|
131
|
+
.getResult(`{${sSimplePath}}`, oNode)
|
|
130
132
|
.then(function (oResult: any) {
|
|
131
133
|
if (oRealContext.getModel().getMetadata().getName() === "sap.ui.model.json.JSONModel") {
|
|
132
134
|
if (!oResult.oModel) {
|
|
133
|
-
oModel[
|
|
135
|
+
oModel[oPartContext.path] = oResult; //oRealContext.getObject(oContext.path);
|
|
134
136
|
} else {
|
|
135
|
-
oModel[
|
|
137
|
+
oModel[oPartContext.path] = `Context from ${oResult.getPath()}`;
|
|
136
138
|
}
|
|
137
139
|
} else {
|
|
138
|
-
oModel[
|
|
140
|
+
oModel[oPartContext.path] = {
|
|
139
141
|
path: oRealContext.getPath(),
|
|
140
142
|
data: typeof oResult === "object" ? "[ctrl/cmd-click] on path to see data" : oResult
|
|
141
143
|
};
|
|
142
144
|
}
|
|
143
145
|
})
|
|
144
146
|
.catch(function () {
|
|
145
|
-
oModel[
|
|
147
|
+
oModel[oPartContext.path] = {
|
|
146
148
|
bindingFor: "Runtime"
|
|
147
149
|
};
|
|
148
150
|
})
|
|
149
151
|
);
|
|
150
152
|
} catch (exc) {
|
|
151
|
-
oModel[
|
|
153
|
+
oModel[oPartContext.path] = {
|
|
152
154
|
bindingFor: "Runtime"
|
|
153
155
|
};
|
|
154
156
|
}
|
|
@@ -201,7 +203,7 @@ function resolve(oNode: any, oVisitor: any) {
|
|
|
201
203
|
const sControlName = oNode.nodeName.split(":")[1] || oNode.nodeName,
|
|
202
204
|
bIsControl = /^[A-Z]/.test(sControlName),
|
|
203
205
|
oTraceMetadataContext: any = {
|
|
204
|
-
control: oNode.namespaceURI
|
|
206
|
+
control: `${oNode.namespaceURI}.${oNode.nodeName.split(":")[1] || oNode.nodeName}`
|
|
205
207
|
};
|
|
206
208
|
|
|
207
209
|
if (bIsControl) {
|
|
@@ -220,9 +222,10 @@ function resolve(oNode: any, oVisitor: any) {
|
|
|
220
222
|
oNode.setAttributeNS(traceNamespace, "trace:traceID", oTraceMetadataContext.traceID);
|
|
221
223
|
aTraceInfo.push(oTraceMetadataContext);
|
|
222
224
|
}
|
|
223
|
-
return oVisitor.visitAttributes(oNode)
|
|
224
|
-
|
|
225
|
-
|
|
225
|
+
return oVisitor.visitAttributes(oNode);
|
|
226
|
+
})
|
|
227
|
+
.then(function () {
|
|
228
|
+
return oVisitor.visitChildNodes(oNode);
|
|
226
229
|
})
|
|
227
230
|
.catch(function (exc: any) {
|
|
228
231
|
oTraceMetadataContext.error = {
|
|
@@ -249,12 +252,12 @@ if (traceIsOn) {
|
|
|
249
252
|
* Adds information about the processing of one macro to the collection.
|
|
250
253
|
*
|
|
251
254
|
* @name sap.fe.macros.TraceInfo.traceMacroCalls
|
|
252
|
-
* @param
|
|
253
|
-
* @param
|
|
254
|
-
* @param
|
|
255
|
-
* @param
|
|
256
|
-
* @param
|
|
257
|
-
* @returns
|
|
255
|
+
* @param sName Macro class name
|
|
256
|
+
* @param oMetadata Definition from (macro).metadata.js
|
|
257
|
+
* @param mContexts Available named contexts
|
|
258
|
+
* @param oNode
|
|
259
|
+
* @param oVisitor
|
|
260
|
+
* @returns The traced metadata context
|
|
258
261
|
* @private
|
|
259
262
|
* @ui5-restricted
|
|
260
263
|
* @static
|
|
@@ -385,8 +388,8 @@ Structure for a control
|
|
|
385
388
|
*
|
|
386
389
|
* @function
|
|
387
390
|
* @name sap.fe.macros.TraceInfo.getTraceInfo
|
|
388
|
-
* @param
|
|
389
|
-
* @returns
|
|
391
|
+
* @param id TraceInfo id
|
|
392
|
+
* @returns Object / Array for TraceInfo
|
|
390
393
|
* @private
|
|
391
394
|
* @static
|
|
392
395
|
*/
|
|
@@ -404,7 +407,7 @@ function getTraceInfo(id: number) {
|
|
|
404
407
|
*
|
|
405
408
|
* @function
|
|
406
409
|
* @name sap.fe.macros.TraceInfo.isTraceInfoActive
|
|
407
|
-
* @returns
|
|
410
|
+
* @returns `true` when active
|
|
408
411
|
* @private
|
|
409
412
|
* @static
|
|
410
413
|
*/
|