@sap/open.fe 1.97.0 → 1.98.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/packages/sap.fe.common/src/sap/fe/common/.library +1 -1
- package/packages/sap.fe.common/src/sap/fe/common/.theming +1 -1
- package/packages/sap.fe.common/src/sap/fe/common/MessageButton-dbg.js +275 -62
- package/packages/sap.fe.common/src/sap/fe/common/MessageButton.js +1 -1
- package/packages/sap.fe.common/src/sap/fe/common/MessagePopover-dbg.js +1 -0
- package/packages/sap.fe.common/src/sap/fe/common/MessagePopover.js +1 -1
- package/packages/sap.fe.common/src/sap/fe/common/library-dbg.js +1 -1
- package/packages/sap.fe.common/src/sap/fe/common/library-h2-preload.js +3 -3
- package/packages/sap.fe.common/src/sap/fe/common/library-preload.js +51 -46
- package/packages/sap.fe.common/src/sap/fe/common/library-preload.js.map +3 -3
- package/packages/sap.fe.common/src/sap/fe/common/library.js +1 -1
- package/packages/sap.fe.common/src/sap/fe/common/manifest.json +3 -3
- package/packages/sap.fe.common/src/sap/fe/common/resources.json +16 -8
- package/packages/sap.fe.common/test/sap/fe/common/designtime/api.json +1 -1
- package/packages/sap.fe.common/test/sap/fe/common/designtime/apiref/api.json +1 -1
- package/packages/sap.fe.common/test/sap/fe/common/designtime/codeassistance/Library.xmlmeta.json +1 -1
- package/packages/sap.fe.common/test/sap/fe/common/relnotes/changes-1.98.json +18 -0
- package/packages/sap.fe.core/src/sap/fe/core/.library +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/.theming +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/AppComponent-dbg.js +3 -1
- package/packages/sap.fe.core/src/sap/fe/core/AppComponent.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/AppStateHandler-dbg.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/AppStateHandler.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/CommonUtils-dbg.js +35 -15
- package/packages/sap.fe.core/src/sap/fe/core/CommonUtils.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/ExtensionAPI-dbg.js +13 -5
- package/packages/sap.fe.core/src/sap/fe/core/ExtensionAPI.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/PageController-dbg.js +8 -2
- package/packages/sap.fe.core/src/sap/fe/core/PageController.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/RouterProxy-dbg.js +26 -10
- package/packages/sap.fe.core/src/sap/fe/core/RouterProxy.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/TemplateComponent-dbg.js +13 -4
- package/packages/sap.fe.core/src/sap/fe/core/TemplateComponent.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper-dbg.js +124 -39
- package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/actions/draft-dbg.js +49 -22
- package/packages/sap.fe.core/src/sap/fe/core/actions/draft.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling-dbg.js +11 -8
- package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/actions/operations-dbg.js +12 -8
- package/packages/sap.fe.core/src/sap/fe/core/actions/operations.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow-dbg.js +196 -70
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalEditFlow-dbg.js +9 -2
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalEditFlow.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +19 -17
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting-dbg.js +39 -8
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/KPIManagement-dbg.js +114 -25
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/KPIManagement.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/KPIManagement.ts +112 -24
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MassEdit-dbg.js +80 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MassEdit.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler-dbg.js +5 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/PageReady-dbg.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/PageReady.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Paginator-dbg.js +34 -7
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Paginator.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Placeholder-dbg.js +5 -2
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Placeholder.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Routing-dbg.js +16 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Routing.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Share-dbg.js +19 -6
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Share.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/SideEffects-dbg.js +7 -7
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/SideEffects.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/SideEffects.ts +6 -5
- package/packages/sap.fe.core/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +2 -1
- package/packages/sap.fe.core/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler-dbg.js +6 -3
- package/packages/sap.fe.core/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controls/FieldWrapper-dbg.js +9 -3
- package/packages/sap.fe.core/src/sap/fe/core/controls/FieldWrapper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controls/FormElementWrapper-dbg.js +0 -5
- package/packages/sap.fe.core/src/sap/fe/core/controls/FormElementWrapper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +1 -1
- package/packages/{sap.fe.macros/src/sap/fe/macros/massedit → sap.fe.core/src/sap/fe/core/controls/massEdit}/MassEditDialog.fragment.xml +6 -6
- package/packages/{sap.fe.macros/src/sap/fe/macros/massedit/MassEditRuntime-dbg.js → sap.fe.core/src/sap/fe/core/controls/massEdit/MassEditHandlers-dbg.js} +2 -2
- package/packages/{sap.fe.macros/src/sap/fe/macros/massedit/MassEditRuntime.js → sap.fe.core/src/sap/fe/core/controls/massEdit/MassEditHandlers.js} +0 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/ConverterContext-dbg.js +13 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/ConverterContext.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/ConverterContext.ts +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings-dbg.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings.ts +3 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestWrapper-dbg.js +18 -7
- package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestWrapper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestWrapper.ts +15 -6
- package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter-dbg.js +62 -4
- package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter.ts +60 -4
- package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField-dbg.js +3 -3
- package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField.ts +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/common/AnnotationConverter-dbg.js +18 -10
- package/packages/sap.fe.core/src/sap/fe/core/converters/common/AnnotationConverter.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Action-dbg.js +10 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Action.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Action.ts +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form-dbg.js +17 -9
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form.ts +9 -3
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/KPI-dbg.js +69 -4
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/KPI.ts +72 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table-dbg.js +172 -284
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table.ts +228 -348
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/table/StandardActions-dbg.js +468 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +609 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/FilterBar-dbg.js +30 -13
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +31 -12
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/VisualFilters-dbg.js +2 -2
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ObjectPage/SubSection-dbg.js +14 -6
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +26 -5
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Aggregation-dbg.js +8 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Aggregation.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Aggregation.ts +9 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/IssueManager-dbg.js +4 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/IssueManager.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/IssueManager.ts +3 -0
- package/packages/sap.fe.core/src/sap/fe/core/designtime/AppComponent-dbg.designtime.js +8 -0
- package/packages/sap.fe.core/src/sap/fe/core/designtime/AppComponent.designtime.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/designtime/library-preload.designtime.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/designtime/library-preload.designtime.js.map +3 -3
- package/packages/sap.fe.core/src/sap/fe/core/formatters/ValueFormatter-dbg.js +30 -5
- package/packages/sap.fe.core/src/sap/fe/core/formatters/ValueFormatter.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/formatters/ValueFormatter.ts +25 -3
- package/packages/sap.fe.core/src/sap/fe/core/fpm/manifest.json +2 -2
- package/packages/sap.fe.core/src/sap/fe/core/helpers/AppStartupHelper-dbg.js +359 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/AppStartupHelper.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/AppStartupHelper.ts +388 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/BindingExpression-dbg.js +199 -111
- package/packages/sap.fe.core/src/sap/fe/core/helpers/BindingExpression.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/helpers/BindingExpression.ts +193 -102
- package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveHelper-dbg.js +2 -2
- package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveHelper.ts +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/helpers/MassEditHelper-dbg.js +679 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/MassEditHelper.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/library-dbg.js +27 -1
- package/packages/sap.fe.core/src/sap/fe/core/library-h2-preload.js +23 -14
- package/packages/sap.fe.core/src/sap/fe/core/library-h2-preload.js.map +2 -2
- package/packages/sap.fe.core/src/sap/fe/core/library-preload.js +477 -411
- package/packages/sap.fe.core/src/sap/fe/core/library-preload.js.map +4 -4
- package/packages/sap.fe.core/src/sap/fe/core/library-preload.support.js +47 -3
- package/packages/sap.fe.core/src/sap/fe/core/library-preload.support.js.map +3 -3
- package/packages/sap.fe.core/src/sap/fe/core/library.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/library.support.js +9 -3
- package/packages/sap.fe.core/src/sap/fe/core/manifest.json +10 -10
- package/packages/sap.fe.core/src/sap/fe/core/manifestMerger/ChangePageConfiguration-dbg.js +62 -0
- package/packages/sap.fe.core/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +68 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle.properties +40 -5
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ar.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_bg.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ca.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_cs.properties +25 -3
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_cy.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_da.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_de.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_el.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en.properties +23 -1
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_GB.properties +23 -1
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_sappsd.properties +27 -1
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_saprigi.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_saptrc.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_es.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_es_MX.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_et.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fi.properties +25 -3
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fr.properties +25 -3
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fr_CA.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hi.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hr.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hu.properties +25 -3
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_id.properties +26 -4
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_it.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_iw.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ja.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_kk.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ko.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_lt.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_lv.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ms.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_nl.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_no.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pl.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pt.properties +25 -3
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pt_PT.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ro.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ru.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sh.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sk.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sl.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sv.properties +25 -3
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_th.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_tr.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_uk.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_vi.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_zh_CN.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_zh_TW.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/resources.json +483 -235
- package/packages/sap.fe.core/src/sap/fe/core/services/AsyncComponentServiceFactory-dbg.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/AsyncComponentServiceFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/EnvironmentServiceFactory-dbg.js +4 -3
- package/packages/sap.fe.core/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/EnvironmentServiceFactory.ts +3 -0
- package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory-dbg.js +93 -346
- package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/ShellServicesFactory-dbg.js +31 -2
- package/packages/sap.fe.core/src/sap/fe/core/services/ShellServicesFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/ShellServicesFactory.ts +30 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/SideEffectsServiceFactory-dbg.js +8 -5
- package/packages/sap.fe.core/src/sap/fe/core/services/SideEffectsServiceFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/SideEffectsServiceFactory.ts +11 -6
- package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +12 -3
- package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +38 -0
- package/packages/sap.fe.core/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.ts +18 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/DataModelPathHelper-dbg.js +10 -48
- package/packages/sap.fe.core/src/sap/fe/core/templating/DataModelPathHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/templating/DataModelPathHelper.ts +14 -46
- package/packages/sap.fe.core/src/sap/fe/core/templating/DisplayModeFormatter-dbg.js +114 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/DisplayModeFormatter.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/DisplayModeFormatter.ts +86 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/FilterHelper-dbg.js +10 -7
- package/packages/sap.fe.core/src/sap/fe/core/templating/FilterHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/templating/FilterHelper.ts +8 -6
- package/packages/sap.fe.core/src/sap/fe/core/templating/PropertyHelper-dbg.js +2 -2
- package/packages/sap.fe.core/src/sap/fe/core/templating/PropertyHelper.ts +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/templating/UIFormatters-dbg.js +15 -110
- package/packages/sap.fe.core/src/sap/fe/core/templating/UIFormatters.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/templating/UIFormatters.ts +6 -73
- package/packages/sap.fe.core/test/sap/fe/core/designtime/api.json +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/designtime/apiref/api.json +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.jsmeta.json +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.jstemplates.json +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.xmlmeta.json +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/model/ControllerExtensionNavigationModel.js +5 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/model/CustomElementNavigationModel.js +105 -7
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/model/MacroNavigationModel.js +176 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/FCL/FclNavigationButtons/myViewTest.controller.js +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartDefault/ChartDefault.controller.js +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartDefault/ChartDefault.view.xml +0 -1
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartQualifier/ChartQualifier.controller.js +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartSelectionMode/ChartSelectionMode.controller.js +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldEdit/FieldEdit.controller.js +3 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldEvents/FieldEvents.controller.js +3 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldFormatOptions/FieldFormatOptions.controller.js +3 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldNavProp/FieldNavProp.controller.js +3 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarAnnotationDefaults/Component.js +36 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarAnnotationDefaults/FilterBarAnnotationDefaults.controller.js +35 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarAnnotationDefaults/FilterBarAnnotationDefaults.view.xml +58 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarAnnotationDefaults/localService/RootEntity.json +102 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarAnnotationDefaults/localService/ValueHelpEntity.js +11 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarAnnotationDefaults/localService/service.cds +97 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarAnnotationDefaults/manifest.json +72 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarCustoms/Component.js +36 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarCustoms/CustomFilter.js +36 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarCustoms/CustomRatingFilter.fragment.xml +8 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarCustoms/CustomRatingFilterOperator.fragment.xml +17 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarCustoms/CustomRatingRangeFilter.fragment.xml +8 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarCustoms/FilterBarCustoms.controller.js +42 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarCustoms/FilterBarCustoms.view.xml +70 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarCustoms/localService/RootEntity.json +107 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarCustoms/localService/ValueHelpEntity.js +11 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarCustoms/localService/service.cds +152 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarCustoms/manifest.json +72 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarDefault/FilterBarDefault.controller.js +13 -6
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarDefault/FilterBarDefault.view.xml +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarDefault/localService/ChildEntity.json +15 -674
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarDefault/localService/MultiChildEntity.json +92 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarDefault/localService/RootEntity.json +10 -5
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarDefault/localService/service.cds +72 -19
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarSVandAnnotationDefaults/Component.js +36 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarSVandAnnotationDefaults/FilterBarSVandAnnotationDefaults.controller.js +35 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarSVandAnnotationDefaults/FilterBarSVandAnnotationDefaults.view.xml +58 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarSVandAnnotationDefaults/localService/RootEntity.json +102 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarSVandAnnotationDefaults/localService/ValueHelpEntity.js +11 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarSVandAnnotationDefaults/localService/service.cds +115 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarSVandAnnotationDefaults/manifest.json +72 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBarAnnotationDefaults.html +37 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBarCustoms.html +37 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBarSVandAnnotationDefaults.html +37 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidance/guidanceFreestyle/Component.js +35 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidance/guidanceFreestyle/DetailPage.controller.js +5 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidance/guidanceFreestyle/DetailPage.view.xml +15 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidance/guidanceFreestyle/EntryPage.controller.js +43 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidance/guidanceFreestyle/EntryPage.view.xml +79 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidance/guidanceFreestyle/localService/ChildEntity.json +23 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidance/guidanceFreestyle/localService/RootEntity.json +41 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidance/guidanceFreestyle/localService/ValueHelpCurrencyEntity.json +5 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidance/guidanceFreestyle/localService/ValueHelpEntity.js +11 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidance/guidanceFreestyle/localService/service.cds +144 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidance/guidanceFreestyle/manifest.json +96 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidance/guidanceFreestyle/template/Component.js +9 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidance/guidanceFreestyle/template/EntryPage.controller.js +5 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidance/guidanceFreestyle/template/EntryPage.view.xml +14 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidanceFreestyle.html +69 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/i18n/i18n.properties +3 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartDefault/MicroChartDefault.controller.js +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartDynamicSize/MicroChartDynamicSize.controller.js +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartHideOnNoData/MicroChartHideOnNoData.controller.js +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartShowOnlyChart/MicroChartShowOnlyChart.controller.js +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/Page.controller.js +4 -3
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/Page.view.xml +36 -30
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableDefault/TableDefault.controller.js +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableEdit/TableEdit.controller.js +3 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableEdit/TableEdit.view.xml +30 -24
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/basicExtensibility/Component.js +3 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/basicExtensibility/OPExtend.controller.js +17 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/basicExtensibility/localService/ChildEntity.json +9 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/basicExtensibility/localService/service.cds +46 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/basicExtensibility/manifest.json +24 -1
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/basicExtensibility.html +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/CustomColumnAdaptation.fragment.xml +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/CustomColumnBuildingBlockField.fragment.xml +3 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/CustomColumnButton.fragment.xml +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/localService/service.cds +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/manifest.json +7 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customElementsOverview.md +4 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customFormElement/customFormElementContent/Component.js +35 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customFormElement/customFormElementContent/CustomFormElement1.fragment.xml +3 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customFormElement/customFormElementContent/CustomFormElement2.fragment.xml +3 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customFormElement/customFormElementContent/localService/RootEntity.json +9 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customFormElement/customFormElementContent/localService/service.cds +136 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customFormElement/customFormElementContent/manifest.json +90 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customFormElementContent.html +36 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customHeaderFacet/customHeaderFacetContent/{CustomHeaderFacetFormElement.fragment.xml → CustomHeaderFacetBuildingBlockFormElement.fragment.xml} +0 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customHeaderFacet/customHeaderFacetContent/{CustomHeaderFacetFormElementEdit.fragment.xml → CustomHeaderFacetBuildingBlockFormElementEdit.fragment.xml} +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customHeaderFacet/customHeaderFacetContent/CustomHeaderFacetBuildingBlockMicroChart.fragment.xml +10 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customHeaderFacet/customHeaderFacetContent/CustomHeaderFacetBuildingBlockMicroChartEdit.fragment.xml +5 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customHeaderFacet/customHeaderFacetContent/CustomHeaderFacetDataPointEdit.fragment.xml +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customHeaderFacet/customHeaderFacetContent/CustomHeaderFacetMicroChartEdit.fragment.xml +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customHeaderFacet/customHeaderFacetContent/localService/RootEntity.json +6 -1
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customHeaderFacet/customHeaderFacetContent/localService/service.cds +30 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customHeaderFacet/customHeaderFacetContent/manifest.json +13 -3
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customPage/customPageContent/CustomPage.view.xml +1 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSection/customSectionContent/CustomSection.fragment.xml +1 -7
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSection/customSectionContent/CustomSectionFormElementAndTable.fragment.xml +0 -1
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSection/customSectionContent/CustomSectionNavigation.fragment.xml +1 -7
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSectionContent.html +60 -27
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSubSection/customSubSectionContent/Component.js +35 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSubSection/customSubSectionContent/CustomSubSection1.fragment.xml +3 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSubSection/customSubSectionContent/CustomSubSection2.fragment.xml +3 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSubSection/customSubSectionContent/CustomSubSection3.fragment.xml +11 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSubSection/customSubSectionContent/localService/ChildEntity.json +42 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSubSection/customSubSectionContent/localService/RootEntity.json +9 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSubSection/customSubSectionContent/localService/service.cds +139 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSubSection/customSubSectionContent/manifest.json +104 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSubSectionContent.html +36 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/i18n/i18n.properties +3 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/BindingExpression-AnnotationExpression.spec.js +20 -6
- package/packages/sap.fe.core/test/sap/fe/core/jest/BindingExpression-AnnotationExpression.spec.ts +22 -6
- package/packages/sap.fe.core/test/sap/fe/core/jest/BindingExpression.spec.js +71 -23
- package/packages/sap.fe.core/test/sap/fe/core/jest/BindingExpression.spec.ts +97 -24
- package/packages/sap.fe.core/test/sap/fe/core/jest/TransactionHelper.spec.js +624 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/__snapshots__/TemplateConverter.spec.ts.snap +449 -140
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/EditFlow.spec.js +435 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/EditFlow.spec.ts +385 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/KPIManagement.spec.js +229 -2
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/KPIManagement.spec.ts +227 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandler.spec.js +235 -63
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandler.spec.ts +162 -40
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandling.spec.js +115 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandling.spec.ts +95 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/SideEffects.spec.js +1 -2
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/SideEffects.spec.ts +0 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/ViewState.spec.js +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/ViewState.spec.ts +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ConverterContext.spec.js +11 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ConverterContext.spec.ts +9 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/HeaderFacet.spec.js +18 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/HeaderFacet.spec.ts +25 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/KPI.spec.js +64 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/KPI.spec.ts +66 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ListReportConverter.spec.js +261 -20
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ListReportConverter.spec.ts +329 -19
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/MetaModelConverter.spec.js +79 -8
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/MetaModelConverter.spec.ts +128 -8
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ObjectPageConverter.spec.js +7 -7
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ObjectPageConverter.spec.ts +6 -6
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/SubSection.spec.js +22 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/SubSection.spec.ts +26 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Table.spec.js +136 -244
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Table.spec.ts +156 -376
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/TableStandardActions.spec.js +1267 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/TableStandardActions.spec.ts +2150 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/__snapshots__/KPI.spec.ts.snap +306 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/__snapshots__/MetaModelConverter.spec.ts.snap +57 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/__snapshots__/Table.spec.ts.snap +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/AnalyticalService.cds +137 -5
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/BindingExpression-AnnotationExpression.xml +13 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/HeaderFacets.cds +28 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/KPI.cds +191 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/MetaModelConverterContext.cds +20 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/ObjectPageConverter.cds +69 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/RoutingServiceFactory.cds +35 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/SideEffects.cds +26 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/Table.cds +98 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/TableNewActionOperationAvailableSticky.cds +22 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/TableTooltips.cds +43 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/ValueFormatters.spec.js +10 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/ValueFormatters.spec.ts +20 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/AppStartupHelper.spec.js +912 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/AppStartupHelper.spec.ts +981 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/__snapshots__/AppStartupHelper.spec.ts.snap +358 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/manifestmerger/ChangePageConfiguration.spec.js +242 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/manifestmerger/ChangePageConfiguration.spec.ts +297 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/manifestmerger/__snapshots__/ChangePageConfiguration.spec.ts.snap +289 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/services/RoutingServiceFactory.spec.js +292 -366
- package/packages/sap.fe.core/test/sap/fe/core/jest/services/RoutingServiceFactory.spec.ts +247 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/services/SideEffectsService.spec.js +14 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/services/SideEffectsService.spec.ts +19 -0
- package/packages/sap.fe.core/test/sap/fe/core/qunit/apps/generalTests.json +0 -12
- package/packages/sap.fe.core/test/sap/fe/core/relnotes/changes-1.98.json +363 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/.library +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/.theming +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/Chart.fragment.xml +5 -5
- package/packages/sap.fe.macros/src/sap/fe/macros/Chart.metadata-dbg.js +0 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/Chart.metadata.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/ChartAPI-dbg.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/ChartAPI.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/ChartDelegate-dbg.js +4 -4
- package/packages/sap.fe.macros/src/sap/fe/macros/ChartDelegate.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/CommonHelper-dbg.js +26 -24
- package/packages/sap.fe.macros/src/sap/fe/macros/CommonHelper.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI-dbg.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FieldBaseDelegate-dbg.js +90 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FieldBaseDelegate.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBar.fragment.xml +7 -6
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBar.metadata-dbg.js +63 -8
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBar.metadata.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI-dbg.js +42 -4
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI.ts +76 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarDelegate-dbg.js +49 -6
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarDelegate.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterField-dbg.designtime.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/Form.fragment.xml +21 -17
- package/packages/sap.fe.macros/src/sap/fe/macros/Form.metadata-dbg.js +8 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/Form.metadata.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/MacroAPI-dbg.js +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/MacroAPI.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/MacroMetadata-dbg.js +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/MacroMetadata.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/PhantomUtil-dbg.js +8 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/PhantomUtil.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/QuickViewForm.metadata-dbg.js +2 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/QuickViewForm.metadata.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/Share.metadata-dbg.js +11 -8
- package/packages/sap.fe.macros/src/sap/fe/macros/Share.metadata.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/SizeHelper-dbg.js +168 -35
- package/packages/sap.fe.macros/src/sap/fe/macros/SizeHelper.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/Table.fragment.xml +107 -109
- package/packages/sap.fe.macros/src/sap/fe/macros/Table.metadata-dbg.js +51 -65
- package/packages/sap.fe.macros/src/sap/fe/macros/Table.metadata.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI-dbg.js +9 -4
- package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI.ts +5 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/chart/ChartHelper-dbg.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/chart/ChartHelper.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/chart/ChartUtils-dbg.js +2 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/chart/ChartUtils.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldHelper-dbg.js +101 -16
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldHelper.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldRuntime-dbg.js +273 -71
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldRuntime.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating-dbg.js +128 -32
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating.ts +110 -16
- package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkContactContent.fragment.xml +11 -4
- package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkDelegate-dbg.js +65 -84
- package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkDelegate.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/CustomFilter.fragment.xml +5 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterUtils-dbg.js +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterUtils.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/form/DataFieldCollection.fragment.xml +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/fpm/CustomFormElement.fragment.xml +5 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.metadata-dbg.js +72 -12
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.metadata.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.metadata.ts +43 -14
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/DataPoint.fragment.xml +13 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/DataPoint.metadata-dbg.js +55 -8
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/DataPoint.metadata.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.fragment.xml +1 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.metadata-dbg.js +38 -65
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.metadata.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/{FilterField.fragment.xml → internal/FilterField.fragment.xml} +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/{FilterField.metadata-dbg.js → internal/FilterField.metadata-dbg.js} +5 -5
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/FilterField.metadata.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/SituationsIndicator-dbg.js +96 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/SituationsIndicator.js +5 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/SituationsIndicator.ts +116 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/collectionField/MultiValueFieldDelegate-dbg.js +7 -15
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/collectionField/MultiValueFieldDelegate.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/FieldStructure.fragment.xml +4 -5
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/AmountWithCurrency.fragment.xml +5 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/DataPoint.fragment.xml +5 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/ExpandableText.fragment.xml +1 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/File.fragment.xml +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/LabelSemanticKey.fragment.xml +5 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/Link.fragment.xml +11 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/LinkWithQuickViewForm.fragment.xml +1 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/LinkWrapper.fragment.xml +5 -4
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/MdcFieldWithValueHelp.fragment.xml +48 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/ObjectIdentifier.fragment.xml +140 -18
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/ObjectStatus.fragment.xml +1 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/SemanticKeyWithDraftIndicator.fragment.xml +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/Text.fragment.xml +6 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/CheckBox.fragment.xml +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/DatePicker.fragment.xml +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/DateTimePicker.fragment.xml +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/File.fragment.xml +14 -4
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/Input.fragment.xml +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/InputWithUnit.fragment.xml +3 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/InputWithValueHelp.fragment.xml +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/TextArea.fragment.xml +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/TimePicker.fragment.xml +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating-dbg.js +25 -9
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +30 -16
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Formatter-dbg.js +154 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Formatter.js +5 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Formatter.ts +146 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Runtime-dbg.js +204 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Runtime.js +5 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Runtime.ts +215 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/TableDelegate-dbg.js +29 -8
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueHelp-dbg.designtime.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueHelpContent.fragment.xml +0 -10
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListHelper-dbg.js +151 -131
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/library-dbg.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/library-h2-preload.js +24 -23
- package/packages/sap.fe.macros/src/sap/fe/macros/library-h2-preload.js.map +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/library-preload.js +209 -188
- package/packages/sap.fe.macros/src/sap/fe/macros/library-preload.js.map +4 -4
- package/packages/sap.fe.macros/src/sap/fe/macros/library.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/macroLibrary-dbg.js +7 -4
- package/packages/sap.fe.macros/src/sap/fe/macros/macroLibrary.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/manifest.json +9 -9
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle.properties +36 -10
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ar.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_bg.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ca.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_cs.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_cy.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_da.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_de.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_el.properties +13 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_GB.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_sappsd.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_saptrc.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_es.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_es_MX.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_et.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fi.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fr.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fr_CA.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hi.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hr.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hu.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_id.properties +14 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_it.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_iw.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ja.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_kk.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ko.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_lt.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_lv.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ms.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_nl.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_no.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pl.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pt.properties +13 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pt_PT.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ro.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ru.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sh.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sk.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sl.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sv.properties +13 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_th.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_tr.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_uk.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_vi.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_zh_CN.properties +13 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_zh_TW.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/resources.json +496 -354
- package/packages/sap.fe.macros/src/sap/fe/macros/table/Actions.fragment.xml +53 -57
- package/packages/sap.fe.macros/src/sap/fe/macros/table/Column.fragment.xml +1 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/ColumnContent.fragment.xml +38 -32
- package/packages/sap.fe.macros/src/sap/fe/macros/table/QuickFilterContainer-dbg.js +12 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/table/QuickFilterContainer.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/table/TableHelper-dbg.js +17 -91
- package/packages/sap.fe.macros/src/sap/fe/macros/table/TableHelper.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/table/TableRuntime-dbg.js +4 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/table/TableRuntime.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/table/Utils-dbg.js +9 -4
- package/packages/sap.fe.macros/src/sap/fe/macros/table/Utils.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/ALPTableDelegateBaseMixin-dbg.js +3 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/ALPTableDelegateBaseMixin.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/TableDelegate-dbg.js +198 -71
- package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/TableDelegate.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/valuehelp/ValueHelpFilterBar.fragment.xml +4 -4
- package/packages/sap.fe.macros/test/sap/fe/macros/designtime/api.json +58 -15
- package/packages/sap.fe.macros/test/sap/fe/macros/designtime/apiref/api.json +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/designtime/codeassistance/Library.jsmeta.json +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/designtime/codeassistance/Library.xmlmeta.json +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartDelegate.spec.js +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartDelegate.spec.ts +1 -2
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartHelper.spec.js +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartHelper.spec.ts +0 -2
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartMacro.spec.js +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartMacro.spec.ts +0 -2
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartUtils.spec.js +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartUtils.spec.ts +0 -2
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/CollectionField.spec.js +21 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/CollectionField.spec.ts +20 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/CommonUtils.spec.js +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/CommonUtils.spec.ts +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/DatapointMacro.spec.js +19 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/DatapointMacro.spec.ts +12 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/DelegateUtil.spec.js +2 -2
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldBaseDelegate.spec.js +111 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroWithSemanticKey.spec.js +67 -3
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroWithSemanticKey.spec.ts +81 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterBarDelegate.spec.js +4 -6
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterBarMacro.spec.js +52 -6
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterBarMacro.spec.ts +64 -7
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterField.spec.js +34 -4
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterField.spec.ts +46 -3
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/PhantomUtil.spec.js +43 -4
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/PhantomUtil.spec.ts +62 -3
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/QuickViewForm.spec.js +31 -5
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/QuickViewForm.spec.ts +25 -3
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/SimpleFieldMacro.spec.js +11 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/SimpleFieldMacro.spec.ts +9 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableMacro.spec.js +40 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableMacro.spec.ts +35 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/ChartMacro.spec.ts.snap +42 -42
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/CollectionField.spec.ts.snap +49 -7
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/DatapointMacro.spec.ts.snap +27 -11
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldMacroDataFieldTypes.spec.ts.snap +50 -44
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldMacroWithSemanticKey.spec.ts.snap +146 -56
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldMacroWithValueHelp.spec.ts.snap +16 -16
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FilterBarMacro.spec.ts.snap +774 -11
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FilterField.spec.ts.snap +70 -2
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/MicroChart.spec.ts.snap +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/PhantomUtil.spec.ts.snap +70 -165
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/QuickViewForm.spec.ts.snap +39 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/SimpleFieldMacro.spec.ts.snap +287 -170
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/TableFieldLabel.spec.ts.snap +369 -213
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/CollectionField.cds +11 -3
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/FieldMacroDataFieldTypes.cds +5 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/FieldMacroWithSemanticKey.cds +17 -12
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/FilterBarMacro.cds +18 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/FilterBarMacroWithDefaultAnnotation.cds +155 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/FilterBarMacroWithSVandAnnotation.cds +155 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/FilterFieldMacro.cds +13 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/QuickViewForm.cds +36 -11
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/TableFieldLabel.cds +22 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/simpleFieldMacro.cds +8 -3
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldRuntime.spec.js +252 -61
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldRuntime.spec.ts +277 -67
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldTemplating.cds +93 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldTemplating.spec.js +118 -16
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldTemplating.spec.ts +143 -16
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/__snapshots__/FieldTemplating.spec.ts.snap +31 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/fragments/MyTestFragment.xml +3 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/fragments/MyTestSubFragment.xml +10 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/Actions.spec.js +14 -2
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/Actions.spec.ts +13 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/__snapshots__/columnWidth.spec.ts.snap +131 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/columnWidth.spec.js +264 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/columnWidth.spec.ts +244 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/data/columnWidth.cds +238 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/TableDelegate.spec.js +33 -6
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/TableDelegate.spec.ts +40 -2
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/ValueHelpTableDelegate.spec.js +61 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/ValueHelpTableDelegate.spec.ts +64 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/__snapshots__/TableDelegate.spec.ts.snap +1287 -32
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/data/tabledelegate.cds +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/index.json +0 -5
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/CommonHelper.qunit.js +284 -159
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FieldHelper.qunit.js +9 -9
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FieldHelperTemplate.qunit.js +2 -2
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FormContainerTemplating.qunit.js +1 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FormElementTemplating.qunit.js +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FormTemplating.qunit.js +10 -5
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FormTemplatingTs.qunit.js +2 -2
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/MacroMetadata.qunit.js +5 -5
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/MicroChartContainer.qunit.js +29 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/TableHelper.qunit.js +6 -26
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/TableHelperTemplate.qunit.js +3 -8
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/ValueListHelper.qunit.js +402 -18
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/fragments/FilterFieldMacro.fragment.xml +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/fragments/FilterFieldMacroMissingID.fragment.xml +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/fragments/TableMacro.fragment.xml +0 -2
- package/packages/sap.fe.macros/test/sap/fe/macros/relnotes/changes-1.98.json +210 -0
- package/packages/sap.fe.navigation/src/sap/fe/navigation/.library +1 -1
- package/packages/sap.fe.navigation/src/sap/fe/navigation/.theming +1 -1
- package/packages/sap.fe.navigation/src/sap/fe/navigation/NavigationHandler-dbg.js +70 -29
- package/packages/sap.fe.navigation/src/sap/fe/navigation/NavigationHandler.js +1 -1
- package/packages/sap.fe.navigation/src/sap/fe/navigation/library-dbg.js +1 -1
- package/packages/sap.fe.navigation/src/sap/fe/navigation/library-h2-preload.js +2 -2
- package/packages/sap.fe.navigation/src/sap/fe/navigation/library-preload.js +6 -5
- package/packages/sap.fe.navigation/src/sap/fe/navigation/library-preload.js.map +3 -3
- package/packages/sap.fe.navigation/src/sap/fe/navigation/library.js +1 -1
- package/packages/sap.fe.navigation/src/sap/fe/navigation/manifest.json +3 -3
- package/packages/sap.fe.navigation/src/sap/fe/navigation/resources.json +5 -5
- package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/api.json +1 -1
- package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/apiref/api.json +1 -1
- package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/codeassistance/Library.xmlmeta.json +1 -1
- package/packages/sap.fe.navigation/test/sap/fe/navigation/qunit/navigation/NavigationHandlerTest.qunit.js +4 -12
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/.library +1 -1
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/.theming +1 -1
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-dbg.js +1 -1
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-h2-preload.js +2 -2
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-preload.js +2 -2
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library.js +1 -1
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/manifest.json +3 -3
- package/packages/sap.fe.placeholder/test/sap/fe/placeholder/designtime/api.json +1 -1
- package/packages/sap.fe.placeholder/test/sap/fe/placeholder/designtime/apiref/api.json +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/.library +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/.theming +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/AnalyticalListPage/chart/FEChartDelegate-dbg.js +2 -2
- package/packages/sap.fe.templates/src/sap/fe/templates/AnalyticalListPage/chart/FEChartDelegate.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/AnalyticalListPage/manifest.json +2 -2
- package/packages/sap.fe.templates/src/sap/fe/templates/AnalyticalListPage/resources.json +2 -2
- package/packages/sap.fe.templates/src/sap/fe/templates/ListComponent-dbg.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ListComponent.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ExtensionAPI-dbg.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ExtensionAPI.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReport.view.xml +2 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReportController-dbg.controller.js +85 -85
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReportController.controller.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/manifest.json +2 -2
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation-dbg.js +6 -2
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/MassEdit-dbg.js +96 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/MassEdit.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/Share-dbg.js +36 -21
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/Share.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/ViewState-dbg.js +53 -31
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/ViewState.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/resources.json +20 -11
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/AnnotationHelper-dbg.js +20 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/AnnotationHelper.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/Component-dbg.js +16 -14
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/Component.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ExtensionAPI-dbg.js +15 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ExtensionAPI.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +103 -88
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPageController-dbg.controller.js +99 -72
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/manifest.json +2 -2
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/overrides/Paginator-dbg.js +12 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/overrides/Paginator.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/overrides/Share-dbg.js +47 -43
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/overrides/Share.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/overrides/ViewState-dbg.js +0 -20
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/overrides/ViewState.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/resources.json +24 -24
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/Actions.fragment.xml +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/Section.fragment.xml +24 -5
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/SectionContent.fragment.xml +1 -4
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/SectionContentLazyLoader.fragment.xml +181 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/SectionFormContent.fragment.xml +1 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/SectionMoreFormContent.fragment.xml +1 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController-dbg.js +133 -123
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/controls/Table.fragment.xml +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/library-dbg.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/library-h2-preload.js +8 -7
- package/packages/sap.fe.templates/src/sap/fe/templates/library-h2-preload.js.map +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/library-preload.js +34 -32
- package/packages/sap.fe.templates/src/sap/fe/templates/library-preload.js.map +4 -4
- package/packages/sap.fe.templates/src/sap/fe/templates/library.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/manifest.json +13 -13
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle.properties +24 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_US_sappsd.properties +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_US_saprigi.properties +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_US_saptrc.properties +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_es.properties +8 -8
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_fr.properties +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ja.properties +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_tr.properties +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/resources.json +126 -66
- package/packages/sap.fe.templates/test/sap/fe/templates/demokit/apps/itelo/webapp/manifest.json +1 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/designtime/api.json +1 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/designtime/apiref/api.json +1 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/designtime/codeassistance/Library.jsmeta.json +1 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/designtime/codeassistance/Library.xmlmeta.json +1 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/ViewState.spec.js +262 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/HeaderFacet.spec.js +2 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/HeaderFacet.spec.ts +1 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/Sections.spec.js +132 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/Sections.spec.ts +131 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/__snapshots__/HeaderFacet.spec.ts.snap +1 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/__snapshots__/Sections.spec.ts.snap +52 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/RootContainer/RootContainerBaseController.spec.js +229 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/RootContainer/RootContainerBaseController.spec.ts +157 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/RootContainer/__snapshots__/RootContainerBaseController.spec.ts.snap +218 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/data/RootContainerBaseController.cds +64 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/relnotes/changes-1.98.json +201 -0
- package/packages/sap.fe.test/src/sap/fe/test/.library +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/.theming +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/JourneyRunner-dbg.js +8 -3
- package/packages/sap.fe.test/src/sap/fe/test/JourneyRunner.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/ListReport-dbg.js +8 -3
- package/packages/sap.fe.test/src/sap/fe/test/ListReport.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/ObjectPage-dbg.js +19 -11
- package/packages/sap.fe.test/src/sap/fe/test/ObjectPage.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/TemplatingTestUtils-dbg.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/TemplatingTestUtils.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper-dbg.js +211 -45
- package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper.ts +103 -8
- package/packages/sap.fe.test/src/sap/fe/test/Utils-dbg.js +0 -12
- package/packages/sap.fe.test/src/sap/fe/test/Utils.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/api/BaseAPI-dbg.js +1 -7
- package/packages/sap.fe.test/src/sap/fe/test/api/BaseAPI.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/api/ChartAssertions-dbg.js +4 -4
- package/packages/sap.fe.test/src/sap/fe/test/api/ChartAssertions.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/api/KPICardActions-dbg.js +43 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/KPICardActions.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/KPICardAssertions-dbg.js +19 -15
- package/packages/sap.fe.test/src/sap/fe/test/api/KPICardAssertions.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/api/TableAssertions-dbg.js +11 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/TableAssertions.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/builder/KPIBuilder-dbg.js +11 -2
- package/packages/sap.fe.test/src/sap/fe/test/builder/KPIBuilder.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/builder/MdcTableBuilder-dbg.js +22 -0
- package/packages/sap.fe.test/src/sap/fe/test/builder/MdcTableBuilder.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/library-dbg.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/library-h2-preload.js +5 -4
- package/packages/sap.fe.test/src/sap/fe/test/library-h2-preload.js.map +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/library-preload.js +37 -23
- package/packages/sap.fe.test/src/sap/fe/test/library-preload.js.map +4 -4
- package/packages/sap.fe.test/src/sap/fe/test/library.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/manifest.json +3 -3
- package/packages/sap.fe.test/src/sap/fe/test/resources.json +59 -34
- package/packages/sap.fe.test/test/sap/fe/test/designtime/api.json +1 -1
- package/packages/sap.fe.test/test/sap/fe/test/designtime/apiref/api.json +1 -1
- package/packages/sap.fe.test/test/sap/fe/test/designtime/codeassistance/Library.xmlmeta.json +1 -1
- package/packages/sap.fe.test/test/sap/fe/test/mockserver/MockServer.js +98965 -71474
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar.d-dbg.js +0 -8
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar.d.js +0 -5
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar.d.ts +0 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarDefault/localService/CreditLimitDetails.json +0 -154
- package/packages/sap.fe.core/test/sap/fe/core/qunit/TransactionHelper.qunit.js +0 -77
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarHelper-dbg.js +0 -48
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarHelper.js +0 -6
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterField.metadata.js +0 -6
- package/packages/sap.fe.macros/src/sap/fe/macros/FormWrapper.fragment.xml +0 -26
- package/packages/sap.fe.macros/src/sap/fe/macros/massedit/MassEditHandler-dbg.js +0 -718
- package/packages/sap.fe.macros/src/sap/fe/macros/massedit/MassEditHandler.js +0 -6
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FilterBarHelper.qunit.js +0 -223
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/HeaderImage.fragment.xml +0 -24
|
@@ -23,7 +23,8 @@ sap.ui.define(["sap/ui/core/mvc/ControllerExtension", "sap/ui/core/mvc/OverrideE
|
|
|
23
23
|
"onBeforeNavigation": { "public": true, "final": false, overrideExecution: OverrideExecution.After },
|
|
24
24
|
"navigate": { "public": true, "final": true },
|
|
25
25
|
"onBeforeBinding": { "public": true, "final": false, overrideExecution: OverrideExecution.After },
|
|
26
|
-
"onAfterBinding": { "public": true, "final": false, overrideExecution: OverrideExecution.After }
|
|
26
|
+
"onAfterBinding": { "public": true, "final": false, overrideExecution: OverrideExecution.After },
|
|
27
|
+
"navigateToRoute": { "public": true, "final": true }
|
|
27
28
|
}
|
|
28
29
|
},
|
|
29
30
|
|
|
@@ -104,6 +105,20 @@ sap.ui.define(["sap/ui/core/mvc/ControllerExtension", "sap/ui/core/mvc/OverrideE
|
|
|
104
105
|
|
|
105
106
|
onAfterBinding: function(oContext) {
|
|
106
107
|
// to be overriden by the application
|
|
108
|
+
},
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Navigate to another target.
|
|
112
|
+
*
|
|
113
|
+
* @alias sap.fe.core.controllerextensions.Routing#navigateToRoute
|
|
114
|
+
* @param {string} sTargetRouteName Name of the target route
|
|
115
|
+
* @param {object} [oParameters] Parameters to be used with route to create the target hash
|
|
116
|
+
* @returns {Promise} Promise that is resolved when the navigation is finalized
|
|
117
|
+
*
|
|
118
|
+
* @public
|
|
119
|
+
*/
|
|
120
|
+
navigateToRoute: function(sTargetRouteName, oParameters) {
|
|
121
|
+
return this.base._routing.navigateToRoute(sTargetRouteName, oParameters);
|
|
107
122
|
}
|
|
108
123
|
});
|
|
109
124
|
});
|
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
(c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
4
|
|
|
5
5
|
*/
|
|
6
|
-
sap.ui.define(["sap/ui/core/mvc/ControllerExtension","sap/ui/core/mvc/OverrideExecution"],function(C,O){"use strict";return C.extend("sap.fe.core.controllerextensions.Routing",{metadata:{methods:{"onBeforeNavigation":{"public":true,"final":false,overrideExecution:O.After},"navigate":{"public":true,"final":true},"onBeforeBinding":{"public":true,"final":false,overrideExecution:O.After},"onAfterBinding":{"public":true,"final":false,overrideExecution:O.After}}},onBeforeNavigation:function(n){return false;},navigate:function(c){this.base._routing.navigateToContext(c);},onBeforeBinding:function(c){},onAfterBinding:function(c){}});});
|
|
6
|
+
sap.ui.define(["sap/ui/core/mvc/ControllerExtension","sap/ui/core/mvc/OverrideExecution"],function(C,O){"use strict";return C.extend("sap.fe.core.controllerextensions.Routing",{metadata:{methods:{"onBeforeNavigation":{"public":true,"final":false,overrideExecution:O.After},"navigate":{"public":true,"final":true},"onBeforeBinding":{"public":true,"final":false,overrideExecution:O.After},"onAfterBinding":{"public":true,"final":false,overrideExecution:O.After},"navigateToRoute":{"public":true,"final":true}}},onBeforeNavigation:function(n){return false;},navigate:function(c){this.base._routing.navigateToContext(c);},onBeforeBinding:function(c){},onAfterBinding:function(c){},navigateToRoute:function(t,p){return this.base._routing.navigateToRoute(t,p);}});});
|
|
@@ -134,20 +134,26 @@ sap.ui.define(
|
|
|
134
134
|
}
|
|
135
135
|
};
|
|
136
136
|
oLastFocusedControl = by;
|
|
137
|
+
|
|
138
|
+
var setShareEmailData = function(oShareActionSheet, oModelData) {
|
|
139
|
+
var oShareMailModel = oShareActionSheet.getModel("shareData");
|
|
140
|
+
var oNewMailData = extend(oShareMailModel.getData(), oModelData);
|
|
141
|
+
oShareMailModel.setData(oNewMailData);
|
|
142
|
+
};
|
|
137
143
|
return Promise.resolve(that.adaptShareMetadata(oShareMetadata))
|
|
138
144
|
.then(function(oModelData) {
|
|
139
145
|
fragmentController = {
|
|
140
146
|
shareEmailPressed: function() {
|
|
147
|
+
var oMailData = oShareActionSheet.getModel("shareData");
|
|
148
|
+
oMailData = oMailData.getData();
|
|
141
149
|
var oResource = sap.ui.getCore().getLibraryResourceBundle("sap.fe.core");
|
|
142
|
-
var sEmailSubject =
|
|
143
|
-
?
|
|
144
|
-
: oResource.getText("T_SHARE_UTIL_HELPER_SAPFE_EMAIL_SUBJECT", [
|
|
150
|
+
var sEmailSubject = oMailData.email.title
|
|
151
|
+
? oMailData.email.title
|
|
152
|
+
: oResource.getText("T_SHARE_UTIL_HELPER_SAPFE_EMAIL_SUBJECT", [oMailData.title]);
|
|
145
153
|
library.URLHelper.triggerEmail(
|
|
146
154
|
null,
|
|
147
155
|
sEmailSubject,
|
|
148
|
-
|
|
149
|
-
window.location.pathname +
|
|
150
|
-
(oModelData.email.url ? oModelData.email.url : oModelData.url)
|
|
156
|
+
oMailData.email.url ? oMailData.email.url : oMailData.url
|
|
151
157
|
);
|
|
152
158
|
},
|
|
153
159
|
onSaveTilePress: function() {
|
|
@@ -197,10 +203,12 @@ sap.ui.define(
|
|
|
197
203
|
};
|
|
198
204
|
if (by.shareSheet) {
|
|
199
205
|
oShareActionSheet = by.shareSheet;
|
|
206
|
+
|
|
200
207
|
var oShareModel = oShareActionSheet.getModel("share");
|
|
201
208
|
that._setStaticShareData(oShareModel);
|
|
202
209
|
var oNewData = extend(oShareModel.getData(), oTileData);
|
|
203
210
|
oShareModel.setData(oNewData);
|
|
211
|
+
setShareEmailData(oShareActionSheet, oModelData);
|
|
204
212
|
oShareActionSheet.openBy(by);
|
|
205
213
|
} else {
|
|
206
214
|
var sFragmentName = "sap.fe.macros.share.ShareSheet",
|
|
@@ -212,11 +220,16 @@ sap.ui.define(
|
|
|
212
220
|
})
|
|
213
221
|
.then(function(oActionSheet) {
|
|
214
222
|
oShareActionSheet = oActionSheet;
|
|
223
|
+
|
|
215
224
|
oShareActionSheet.setModel(new JSONModel(oTileData || {}), "share");
|
|
216
225
|
var oShareModel = oShareActionSheet.getModel("share");
|
|
217
226
|
that._setStaticShareData(oShareModel);
|
|
218
227
|
var oNewData = extend(oShareModel.getData(), oTileData);
|
|
219
228
|
oShareModel.setData(oNewData);
|
|
229
|
+
|
|
230
|
+
oShareActionSheet.setModel(new JSONModel(oModelData || {}), "shareData");
|
|
231
|
+
setShareEmailData(oShareActionSheet, oModelData);
|
|
232
|
+
|
|
220
233
|
by.addDependent(oShareActionSheet);
|
|
221
234
|
oShareActionSheet.openBy(by);
|
|
222
235
|
fragmentController.setShareSheet(oShareActionSheet);
|
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
(c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
4
|
|
|
5
5
|
*/
|
|
6
|
-
sap.ui.define(["sap/base/util/ObjectPath","sap/base/util/extend","sap/base/Log","sap/ui/core/XMLTemplateProcessor","sap/ui/core/util/XMLPreprocessor","sap/ui/core/Fragment","sap/ui/model/json/JSONModel","sap/ui/core/mvc/ControllerExtension","sap/ui/core/mvc/OverrideExecution","sap/ui/core/routing/HashChanger","sap/m/library"],function(O,e,L,X,a,F,J,C,b,H,l){"use strict";var o;var S=C.extend("sap.fe.core.controllerextensions.Share",{metadata:{methods:{openShareSheet:{"public":true,"final":true},adaptShareMetadata:{"public":true,"final":false,overrideExecution:b.After}}},openShareSheet:function(c){this._openShareSheetImpl(c);},adaptShareMetadata:function(s){return s;},_openShareSheetImpl:function(c){var t=this,s,f,h=H.getInstance().getHash(),B=H.getInstance().hrefForAppSpecificHash?H.getInstance().hrefForAppSpecificHash(""):"",d={url:h?B+h:window.location.hash,title:document.title,email:{url:"",title:""},jam:{url:"",title:""},tile:{url:"",title:"",subtitle:"",icon:"",queryUrl:""}};o=c;return Promise.resolve(t.adaptShareMetadata(d)).then(function(m){f={shareEmailPressed:function(){var r=sap.ui.getCore().getLibraryResourceBundle("sap.fe.core");var E=
|
|
6
|
+
sap.ui.define(["sap/base/util/ObjectPath","sap/base/util/extend","sap/base/Log","sap/ui/core/XMLTemplateProcessor","sap/ui/core/util/XMLPreprocessor","sap/ui/core/Fragment","sap/ui/model/json/JSONModel","sap/ui/core/mvc/ControllerExtension","sap/ui/core/mvc/OverrideExecution","sap/ui/core/routing/HashChanger","sap/m/library"],function(O,e,L,X,a,F,J,C,b,H,l){"use strict";var o;var S=C.extend("sap.fe.core.controllerextensions.Share",{metadata:{methods:{openShareSheet:{"public":true,"final":true},adaptShareMetadata:{"public":true,"final":false,overrideExecution:b.After}}},openShareSheet:function(c){this._openShareSheetImpl(c);},adaptShareMetadata:function(s){return s;},_openShareSheetImpl:function(c){var t=this,s,f,h=H.getInstance().getHash(),B=H.getInstance().hrefForAppSpecificHash?H.getInstance().hrefForAppSpecificHash(""):"",d={url:h?B+h:window.location.hash,title:document.title,email:{url:"",title:""},jam:{url:"",title:""},tile:{url:"",title:"",subtitle:"",icon:"",queryUrl:""}};o=c;var g=function(s,m){var i=s.getModel("shareData");var n=e(i.getData(),m);i.setData(n);};return Promise.resolve(t.adaptShareMetadata(d)).then(function(m){f={shareEmailPressed:function(){var M=s.getModel("shareData");M=M.getData();var r=sap.ui.getCore().getLibraryResourceBundle("sap.fe.core");var E=M.email.title?M.email.title:r.getText("T_SHARE_UTIL_HELPER_SAPFE_EMAIL_SUBJECT",[M.title]);l.URLHelper.triggerEmail(null,E,M.email.url?M.email.url:M.url);},onSaveTilePress:function(){setTimeout(function(){sap.ui.getCore().byId("bookmarkDialog").attachAfterClose(function(){o.focus();});},0);},shareJamPressed:function(){t._doOpenJamShareDialog(m.jam.title?m.jam.title:m.title,m.jam.url?m.jam.url:window.location.origin+window.location.pathname+m.url);}};f.onCancelPressed=function(){s.close();};f.setShareSheet=function(q){c.shareSheet=q;};var T=new J({}),p={bindingContexts:{"this":T.createBindingContext("/")},models:{"this":T}};var i={title:m.tile.title?m.tile.title:m.title,subtitle:m.tile.subtitle,icon:m.tile.icon,url:m.tile.url?m.tile.url:m.url,queryUrl:m.tile.queryUrl};if(c.shareSheet){s=c.shareSheet;var j=s.getModel("share");t._setStaticShareData(j);var n=e(j.getData(),i);j.setData(n);g(s,m);s.openBy(c);}else{var k="sap.fe.macros.share.ShareSheet",P=X.loadTemplate(k,"fragment");Promise.resolve(a.process(P,{name:k},p)).then(function(q){return F.load({definition:q,controller:f});}).then(function(A){s=A;s.setModel(new J(i||{}),"share");var j=s.getModel("share");t._setStaticShareData(j);var n=e(j.getData(),i);j.setData(n);s.setModel(new J(m||{}),"shareData");g(s,m);c.addDependent(s);s.openBy(c);f.setShareSheet(s);}).catch(function(E){L.error("Error while opening the share fragment",E);});}}).catch(function(E){L.error("Error while fetching the share model data",E);});},_setStaticShareData:function(s){var r=sap.ui.getCore().getLibraryResourceBundle("sap.fe.core");s.setProperty("/jamButtonText",r.getText("T_COMMON_SAPFE_SHARE_JAM"));s.setProperty("/emailButtonText",r.getText("T_SEMANTIC_CONTROL_SEND_EMAIL"));var g=O.get("sap.ushell.Container.getUser");s.setProperty("/jamVisible",!!g&&g().isJamActive());s.setProperty("/saveAsTileVisible",!!(sap&&sap.ushell&&sap.ushell.Container));},_doOpenJamShareDialog:function(t,u){var s=sap.ui.getCore().createComponent({name:"sap.collaboration.components.fiori.sharing.dialog",settings:{object:{id:u,share:t}}});s.open();}});return S;});
|
|
@@ -25,7 +25,7 @@ sap.ui.define(["sap/ui/core/mvc/ControllerExtension", "sap/fe/core/controllerext
|
|
|
25
25
|
|
|
26
26
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
27
27
|
|
|
28
|
-
function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
|
|
28
|
+
function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
|
|
29
29
|
|
|
30
30
|
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
31
31
|
|
|
@@ -691,15 +691,15 @@ sap.ui.define(["sap/ui/core/mvc/ControllerExtension", "sap/fe/core/controllerext
|
|
|
691
691
|
}, {
|
|
692
692
|
key: "_getBindingForField",
|
|
693
693
|
value: function _getBindingForField(oField) {
|
|
694
|
-
var
|
|
694
|
+
var sBindingName = "value";
|
|
695
695
|
|
|
696
696
|
if (oField.isA("sap.m.CheckBox")) {
|
|
697
|
-
|
|
698
|
-
} else {
|
|
699
|
-
|
|
697
|
+
sBindingName = "selected";
|
|
698
|
+
} else if (oField.isA("sap.ui.unified.FileUploader")) {
|
|
699
|
+
sBindingName = "uploadUrl";
|
|
700
700
|
}
|
|
701
701
|
|
|
702
|
-
return
|
|
702
|
+
return oField.getBinding(sBindingName);
|
|
703
703
|
}
|
|
704
704
|
}]);
|
|
705
705
|
|
|
@@ -707,4 +707,4 @@ sap.ui.define(["sap/ui/core/mvc/ControllerExtension", "sap/fe/core/controllerext
|
|
|
707
707
|
}(ControllerExtension), (_applyDecoratedDescriptor(_class2.prototype, "onInit", [_dec2], Object.getOwnPropertyDescriptor(_class2.prototype, "onInit"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "clearPropertiesStatus", [Public, Final], Object.getOwnPropertyDescriptor(_class2.prototype, "clearPropertiesStatus"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "getRegisteredFailedRequests", [Public, Final], Object.getOwnPropertyDescriptor(_class2.prototype, "getRegisteredFailedRequests"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "handleFieldChange", [Public, Final], Object.getOwnPropertyDescriptor(_class2.prototype, "handleFieldChange"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "handleFieldGroupChange", [Public, Final], Object.getOwnPropertyDescriptor(_class2.prototype, "handleFieldGroupChange"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "addControlSideEffects", [Public, Final], Object.getOwnPropertyDescriptor(_class2.prototype, "addControlSideEffects"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "removeFailedSideEffects", [Public, Final], Object.getOwnPropertyDescriptor(_class2.prototype, "removeFailedSideEffects"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "requestSideEffects", [Public, Final], Object.getOwnPropertyDescriptor(_class2.prototype, "requestSideEffects"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "removeControlSideEffects", [Public, Final], Object.getOwnPropertyDescriptor(_class2.prototype, "removeControlSideEffects"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "_addFailedSideEffects", [Private, Final], Object.getOwnPropertyDescriptor(_class2.prototype, "_addFailedSideEffects"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "_getContextForSideEffects", [Private, Final], Object.getOwnPropertyDescriptor(_class2.prototype, "_getContextForSideEffects"), _class2.prototype)), _class2)) || _class);
|
|
708
708
|
return SideEffectsControllerExtension;
|
|
709
709
|
}, false);
|
|
710
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNpZGVFZmZlY3RzLnRzIl0sIm5hbWVzIjpbIlNpZGVFZmZlY3RzQ29udHJvbGxlckV4dGVuc2lvbiIsIlVJNUNsYXNzIiwiQ29udHJvbGxlckV4dGVuc2lvbk1ldGFkYXRhIiwiT3ZlcnJpZGUiLCJfb1ZpZXciLCJiYXNlIiwiZ2V0VmlldyIsIl9vQXBwQ29tcG9uZW50IiwiQ29tbW9uVXRpbHMiLCJnZXRBcHBDb21wb25lbnQiLCJfb1NpZGVFZmZlY3RzU2VydmljZSIsImdldFNpZGVFZmZlY3RzU2VydmljZSIsIl9tRmllbGRHcm91cFF1ZXVlIiwiX2FTb3VyY2VQcm9wZXJ0aWVzRmFpbHVyZSIsIlNldCIsIl9tRmFpbGVkU2lkZUVmZmVjdHMiLCJjbGVhciIsIm9FdmVudCIsIm9GaWVsZEdyb3VwUHJlUmVxdWlzaXRlIiwibUV2ZW50RmllbGRQcm9wZXJ0aWVzIiwiX2dldEZpZWxkUHJvcGVydGllcyIsImFJbW1lZGlhdGVTaWRlRWZmZWN0c1Byb3BlcnRpZXMiLCJfaW5pdGlhbGl6ZUZpZWxkU2lkZUVmZmVjdHMiLCJiSXNJbW1lZGlhdGVUcmlnZ2VyZWQiLCJfZ2VuZXJhdGVJbW1lZGlhdGVQcm9taXNlIiwidGhlbiIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJtU2lkZUVmZmVjdHNQcm9wZXJ0eSIsInJlcXVlc3RTaWRlRWZmZWN0cyIsInNpZGVFZmZlY3RzIiwiY29udGV4dCIsImNhdGNoIiwib0Vycm9yIiwiTG9nIiwiZGVidWciLCJmaWx0ZXIiLCJtSW1tZWRpYXRlU2lkZUVmZmVjdHMiLCJwcmV2aW91c2x5RmFpbGVkIiwiZm9yRWFjaCIsIl9hZGRGYWlsZWRTaWRlRWZmZWN0cyIsInRoYXQiLCJhRGVmZXJyZWRTaWRlRWZmZWN0cyIsImFGaWVsZEdyb3VwSWRzIiwiZ2V0UGFyYW1ldGVyIiwiZ2V0RmllbGRHcm91cFJlcXVlc3RQcm9taXNlIiwib0RlZmVycmVkU2lkZUVmZmVjdCIsImJJc1JlcXVlc3RzVHJpZ2dlcmVkIiwib1NpZGVFZmZlY3RQcm9wZXJ0eSIsInNpZGVFZmZlY3RQcm9wZXJ0eSIsIm9Db250ZXh0Iiwic0NvbnRleHRQYXRoIiwiZ2V0UGF0aCIsInNFbnRpdHlUeXBlIiwiZ2V0RW50aXR5VHlwZUZyb21Db250ZXh0IiwibUVudGl0eVR5cGUiLCJfZ2V0RW50aXR5VHlwZUZyb21GUU4iLCJwcm9taXNlcyIsIlNvdXJjZVByb3BlcnRpZXMiLCJldmVyeSIsInNvdXJjZVByb3BlcnR5IiwidHlwZSIsInNJZCIsIl9nZW5lcmF0ZVN0YXR1c0luZGV4IiwidmFsdWUiLCJoYXMiLCJmaW5hbGx5IiwibmFtZSIsInNGaWVsZEdyb3VwSWQiLCJzU2lkZUVmZmVjdE5hbWUiLCJyZXBsYWNlIiwibUNvbnRleHREZWZlcnJlZFNpZGVFZmZlY3RzIiwiT2JqZWN0Iiwia2V5cyIsInByb2Nlc3NTdGFydGVkIiwicHVzaCIsIm9TaWRlRWZmZWN0cyIsImFkZENvbnRyb2xTaWRlRWZmZWN0cyIsImZSZXNvbHZlciIsImZSZWplY3RvciIsIm9Qcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImFUYXJnZXRzIiwiVGFyZ2V0RW50aXRpZXMiLCJjb25jYXQiLCJUYXJnZXRQcm9wZXJ0aWVzIiwic1RyaWdnZXJBY3Rpb24iLCJUcmlnZ2VyQWN0aW9uIiwiZXhlY3V0ZUFjdGlvbiIsIm9Db250cm9sIiwic0NvbnRyb2xJZCIsImlzQSIsImdldElkIiwicmVtb3ZlQ29udHJvbFNpZGVFZmZlY3RzIiwiYklzTm90QWxyZWFkeUxpc3RlZCIsIm1GYWlsZWRTaWRlRWZmZWN0cyIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsImJQcm9taXNlU3VjY2VzcyIsInByb21pc2UiLCJfc2F2ZUZpZWxkUHJvcGVydGllc1N0YXR1cyIsImZpZWxkIiwib0ZpZWxkIiwic0ZpZWxkSGVscGVySWQiLCJnZXRGaWVsZEhlbHAiLCJvRmlsdGVySGVscCIsInNhcCIsInVpIiwiZ2V0Q29yZSIsImJ5SWQiLCJnZXRPdXRQYXJhbWV0ZXJzIiwib091dFBhcmFtZXRlciIsIm9CaW5kaW5nIiwiZ2V0QmluZGluZyIsInJlcXVlc3RWYWx1ZSIsInNQcm9wZXJ0eVBhdGgiLCJtUHJvcGVydHkiLCJyZXNvbHZlUGF0aCIsIl90eXBlIiwiam9pbiIsInVuZGVmaW5lZCIsIm9Tb3VyY2VGaWVsZCIsInNTaWRlRWZmZWN0RW50aXR5VHlwZSIsIm9CaW5kaW5nQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0Iiwib0NvbnRleHRGb3JTaWRlRWZmZWN0cyIsImdldENvbnRleHQiLCJzRnVsbHlRdWFsaWZpZWROYW1lIiwiZ2V0Q29udmVydGVkTWV0YU1vZGVsIiwiZW50aXR5VHlwZXMiLCJmaW5kIiwib0VudGl0eVR5cGUiLCJGaWVsZFJ1bnRpbWUiLCJnZXRGaWVsZFN0YXRlT25DaGFuZ2UiLCJzdGF0ZSIsInZhbGlkaXR5IiwiZ2V0U291cmNlIiwiX2dldEZpZWxkUHJvbWlzZSIsInNpZGVFZmZlY3RzTWFwIiwiX2dldEZpZWxkU2lkZUVmZmVjdHNNYXAiLCJtU2lkZUVmZmVjdHNNYXAiLCJnZXRGaWVsZEdyb3VwSWRzIiwic1ZpZXdFbnRpdHlTZXRTZXROYW1lIiwiZ2V0Vmlld0RhdGEiLCJlbnRpdHlTZXQiLCJvVmlld0VudGl0eVNldCIsImVudGl0eVNldHMiLCJvRW50aXR5U2V0IiwiYklzSW1tZWRpYXRlIiwiaW5kZXhPZiIsInNOYW1lIiwiYVNpZGVFZmZlY3RQYXJ0cyIsInNwbGl0Iiwic1NpZGVFZmZlY3RQYXRoIiwibGVuZ3RoIiwib1NpZGVFZmZlY3QiLCJnZXRPRGF0YUVudGl0eVNpZGVFZmZlY3RzIiwiX2dldENvbnRleHRGb3JTaWRlRWZmZWN0cyIsImltbWVkaWF0ZSIsInNWaWV3RW50aXR5VHlwZSIsImVudGl0eVR5cGUiLCJtRmllbGRQYXRoIiwiZ2V0QWdncmVnYXRpb24iLCJvQ3VzdG9tRGF0YSIsImdldEtleSIsInNGaWVsZFBhdGgiLCJnZXRWYWx1ZSIsIm1Db250cm9sRW50aXR5VHlwZSIsImdldENvbnRyb2xFbnRpdHlTaWRlRWZmZWN0cyIsInNDb250cm9sTmFtZSIsIm9Db250cm9sU2lkZUVmZmVjdHMiLCJpbmNsdWRlcyIsIm1GaWVsZFNpZGVFZmZlY3RzTWFwIiwib0ZpZWxkUHJvbWlzZUZvckZpZWxkR3JvdXAiLCJfZ2VuZXJhdGVGaWVsZEdyb3VwUHJvbWlzZSIsIm1GYWlsZWRTaWRlRWZmZWN0c05hbWUiLCJzU2lkZUVmZmVjdENvbnRleHRQYXRoIiwiYUZhaWxlZFNpZGVFZmZlY3RzIiwibVNpZGVFZmZlY3RDb250ZXh0UGF0aCIsImJTdWNjZXNzIiwib0ZpZWxkQmluZGluZyIsIl9nZXRCaW5kaW5nRm9yRmllbGQiLCJhRmllbGRQYXRocyIsImdldEJpbmRpbmdzIiwic1BhdGgiLCJDb250cm9sbGVyRXh0ZW5zaW9uIiwiUHVibGljIiwiRmluYWwiLCJQcml2YXRlIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BbURNQSw4QixXQURMQyxRQUFRLENBQUMsOENBQUQsRUFBaURDLDJCQUFqRCxDLFVBU1BDLFFBQVEsRTs7Ozs7Ozs7Ozs7OzthQUFULGtCQUNnQjtBQUNmLGFBQUtDLE1BQUwsR0FBZSxJQUFELENBQWNDLElBQWQsQ0FBbUJDLE9BQW5CLEVBQWQ7QUFDQSxhQUFLQyxjQUFMLEdBQXNCQyxXQUFXLENBQUNDLGVBQVosQ0FBNEIsS0FBS0wsTUFBakMsQ0FBdEI7QUFDQSxhQUFLTSxvQkFBTCxHQUE2QixLQUFLSCxjQUFOLENBQTZCSSxxQkFBN0IsRUFBNUI7QUFDQSxhQUFLQyxpQkFBTCxHQUF5QixFQUF6QjtBQUNBLGFBQUtDLHlCQUFMLEdBQWlDLElBQUlDLEdBQUosRUFBakM7QUFDQSxhQUFLQyxtQkFBTCxHQUEyQixFQUEzQjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O2FBQ0MsaUNBRXFDO0FBQ3BDLGFBQUtGLHlCQUFMLENBQStCRyxLQUEvQjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7YUFDQyx1Q0FFaUU7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O0lBNW5CMkN5RSxtQiw2TkF3QjNDQyxNLEVBQ0FDLEssaUxBWUFELE0sRUFDQUMsSyw2S0FpQkFELE0sRUFDQUMsSyx3S0E2Q0FELE0sRUFDQUMsSyw0S0FrRkFELE0sRUFDQUMsSyw2S0FXQUQsTSxFQUNBQyxLLDBLQWNBRCxNLEVBQ0FDLEssMktBZ0NBRCxNLEVBQ0FDLEssOEtBa0JBQyxPLEVBQ0FELEssK0tBOEdBQyxPLEVBQ0FELEs7U0F3UWE1TCw4QiIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udHJvbGxlckV4dGVuc2lvbiB9IGZyb20gXCJzYXAvdWkvY29yZS9tdmNcIjtcbmltcG9ydCB7IEJpbmRpbmcsIENvbnRleHQgfSBmcm9tIFwic2FwL3VpL21vZGVsXCI7XG5pbXBvcnQgeyBDaGVja0JveCB9IGZyb20gXCJzYXAvbVwiO1xuaW1wb3J0IHsgQ29udHJvbGxlckV4dGVuc2lvbk1ldGFkYXRhIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zXCI7XG5pbXBvcnQgeyBVSTVDbGFzcywgT3ZlcnJpZGUsIFB1YmxpYywgRmluYWwsIFByaXZhdGUgfSBmcm9tIFwiLi4vaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IEFwcENvbXBvbmVudCwgQ29tbW9uVXRpbHMgfSBmcm9tIFwic2FwL2ZlL2NvcmVcIjtcbmltcG9ydCB7IENvbnRyb2wgfSBmcm9tIFwic2FwL3VpL2NvcmVcIjtcbmltcG9ydCB7XG5cdFNpZGVFZmZlY3RzVHlwZSxcblx0Q29udHJvbFNpZGVFZmZlY3RzVHlwZSxcblx0T0RhdGFTaWRlRWZmZWN0c1R5cGUsXG5cdENvbnRyb2xTaWRlRWZmZWN0c0VudGl0eURpY3Rpb25hcnlcbn0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1NpZGVFZmZlY3RzU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB7IEZpZWxkUnVudGltZSB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpZWxkXCI7XG5pbXBvcnQgeyBDb252ZXJ0ZXJPdXRwdXQsIFByb3BlcnR5UGF0aCwgRW50aXR5VHlwZSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHsgTG9nIH0gZnJvbSBcInNhcC9iYXNlXCI7XG5cbnR5cGUgRmllbGRDb250cm9sID0gQ29udHJvbCAmIHtcblx0Z2V0RmllbGRIZWxwKCk6IHN0cmluZztcblx0Z2V0RmllbGRHcm91cElkcygpOiBzdHJpbmdbXTtcbn07XG5cbnR5cGUgRmllbGRFdmVudFByb3BlcnR5VHlwZSA9IHtcblx0cHJvbWlzZTogUHJvbWlzZTxhbnk+O1xuXHRmaWVsZDogRmllbGRDb250cm9sO1xuXHRzaWRlRWZmZWN0c01hcDogRmllbGRTaWRlRWZmZWN0RGljdGlvbmFyeTtcbn07XG5cbnR5cGUgRmllbGRTaWRlRWZmZWN0UHJvcGVydHlUeXBlID0ge1xuXHRuYW1lOiBzdHJpbmc7XG5cdGltbWVkaWF0ZT86IGJvb2xlYW47XG5cdGNvbnRleHQ6IENvbnRleHQ8YW55Pjtcblx0c2lkZUVmZmVjdHM6IFNpZGVFZmZlY3RzVHlwZTtcblx0cHJldmlvdXNseUZhaWxlZD86IGJvb2xlYW47XG59O1xuXG50eXBlIEZpZWxkU2lkZUVmZmVjdERpY3Rpb25hcnkgPSBSZWNvcmQ8c3RyaW5nLCBGaWVsZFNpZGVFZmZlY3RQcm9wZXJ0eVR5cGU+O1xuXG50eXBlIEZhaWxlZFNpZGVFZmZlY3REaWN0aW9uYXJ5ID0gUmVjb3JkPHN0cmluZywgU2lkZUVmZmVjdHNUeXBlW10+O1xuXG50eXBlIEZpZWxkR3JvdXBTaWRlRWZmZWN0VHlwZSA9IHtcblx0cHJvbWlzZXM6IFByb21pc2U8YW55PltdO1xuXHRzaWRlRWZmZWN0UHJvcGVydHk6IEZpZWxkU2lkZUVmZmVjdFByb3BlcnR5VHlwZTtcblx0cHJvY2Vzc1N0YXJ0ZWQ/OiBib29sZWFuO1xufTtcblxudHlwZSBGaWVsZEdyb3VwUXVldWVNYXBUeXBlID0ge1xuXHRbc2lkZUVmZmVjdE5hbWU6IHN0cmluZ106IHtcblx0XHRbY29udGV4dFBhdGg6IHN0cmluZ106IEZpZWxkR3JvdXBTaWRlRWZmZWN0VHlwZTtcblx0fTtcbn07XG5cbkBVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLlNpZGVFZmZlY3RzXCIsIENvbnRyb2xsZXJFeHRlbnNpb25NZXRhZGF0YSlcbmNsYXNzIFNpZGVFZmZlY3RzQ29udHJvbGxlckV4dGVuc2lvbiBleHRlbmRzIENvbnRyb2xsZXJFeHRlbnNpb24ge1xuXHRwcml2YXRlIF9vVmlldzogYW55O1xuXHRwcml2YXRlIF9vQXBwQ29tcG9uZW50ITogQXBwQ29tcG9uZW50O1xuXHRwcml2YXRlIF9tRmllbGRHcm91cFF1ZXVlITogRmllbGRHcm91cFF1ZXVlTWFwVHlwZTtcblx0cHJpdmF0ZSBfYVNvdXJjZVByb3BlcnRpZXNGYWlsdXJlITogU2V0PHN0cmluZz47XG5cdHByaXZhdGUgX29TaWRlRWZmZWN0c1NlcnZpY2UhOiBhbnk7XG5cdHByaXZhdGUgX21GYWlsZWRTaWRlRWZmZWN0cyE6IEZhaWxlZFNpZGVFZmZlY3REaWN0aW9uYXJ5O1xuXG5cdEBPdmVycmlkZSgpXG5cdHB1YmxpYyBvbkluaXQoKSB7XG5cdFx0dGhpcy5fb1ZpZXcgPSAodGhpcyBhcyBhbnkpLmJhc2UuZ2V0VmlldygpO1xuXHRcdHRoaXMuX29BcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodGhpcy5fb1ZpZXcpO1xuXHRcdHRoaXMuX29TaWRlRWZmZWN0c1NlcnZpY2UgPSAodGhpcy5fb0FwcENvbXBvbmVudCBhcyBhbnkpLmdldFNpZGVFZmZlY3RzU2VydmljZSgpO1xuXHRcdHRoaXMuX21GaWVsZEdyb3VwUXVldWUgPSB7fTtcblx0XHR0aGlzLl9hU291cmNlUHJvcGVydGllc0ZhaWx1cmUgPSBuZXcgU2V0KCk7XG5cdFx0dGhpcy5fbUZhaWxlZFNpZGVFZmZlY3RzID0ge307XG5cdH1cblxuXHQvKipcblx0ICogQ2xlYXIgcmVjb3JkZWQgdmFsaWRhdGlvbiBzdGF0dXMgZm9yIGFsbCBwcm9wZXJ0aWVzLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgY2xlYXJQcm9wZXJ0aWVzU3RhdHVzXG5cdCAqL1xuXHRAUHVibGljXG5cdEBGaW5hbFxuXHRwdWJsaWMgY2xlYXJQcm9wZXJ0aWVzU3RhdHVzKCk6IHZvaWQge1xuXHRcdHRoaXMuX2FTb3VyY2VQcm9wZXJ0aWVzRmFpbHVyZS5jbGVhcigpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgZmFpbGVkIFNpZGVFZmZlY3RzLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgZ2V0UmVnaXN0ZXJlZEZhaWxlZFJlcXVlc3RzXG5cdCAqIEByZXR1cm5zIHtvYmplY3R9IFJlZ2lzdGVyZWQgU2lkZUVmZmVjdHMgcmVxdWVzdHMgdGhhdCBoYXZlIGZhaWxlZFxuXHQgKi9cblx0QFB1YmxpY1xuXHRARmluYWxcblx0cHVibGljIGdldFJlZ2lzdGVyZWRGYWlsZWRSZXF1ZXN0cygpOiBGYWlsZWRTaWRlRWZmZWN0RGljdGlvbmFyeSB7XG5cdFx0cmV0dXJuIHRoaXMuX21GYWlsZWRTaWRlRWZmZWN0cztcblx0fVxuXG5cdC8qKlxuXHQgKiBNYW5hZ2VzIHRoZSB3b3JrZmxvdyBmb3IgU2lkZUVmZmVjdHMgd2l0aCByZWxhdGVkIGNoYW5nZXMgdG8gYSBmaWVsZFxuXHQgKiBUaGUgZm9sbG93aW5nIHNjZW5hcmlvcyBhcmUgbWFuYWdlZDpcblx0ICogIC0gRXhlY3V0ZTogdHJpZ2dlcnMgaW1tZWRpYXRlIFNpZGVFZmZlY3RzIHJlcXVlc3RzIGlmIHRoZSBwcm9taXNlIGZvciB0aGUgZmllbGQgZXZlbnQgaXMgZnVsZmlsbGVkXG5cdCAqICAtIFJlZ2lzdGVyOiBjYWNoZXMgZGVmZXJyZWQgU2lkZUVmZmVjdHMgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIHdoZW4gdGhlIEZpZWxkR3JvdXAgaXMgdW5mb2N1c2VkLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgaGFuZGxlRmllbGRDaGFuZ2Vcblx0ICogQHBhcmFtIHtvYmplY3R9IG9FdmVudCBTQVBVSTUgZXZlbnQgdGhhdCBjb21lcyBmcm9tIGEgZmllbGQgY2hhbmdlXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBvRmllbGRHcm91cFByZVJlcXVpc2l0ZSBQcm9taXNlIHRvIGJlIGZ1bGZpbGxlZCBiZWZvcmUgZXhlY3V0aW5nIGRlZmVycmVkIFNpZGVFZmZlY3RzXG5cdCAqIEByZXR1cm5zIHtvYmplY3R9ICBQcm9taXNlIG9uIFNpZGVFZmZlY3RzIHJlcXVlc3Qocylcblx0ICovXG5cdEBQdWJsaWNcblx0QEZpbmFsXG5cdHB1YmxpYyBoYW5kbGVGaWVsZENoYW5nZShvRXZlbnQ6IFVJNUV2ZW50LCBvRmllbGRHcm91cFByZVJlcXVpc2l0ZT86IFByb21pc2U8YW55Pik6IFByb21pc2U8YW55PiB7XG5cdFx0Y29uc3QgbUV2ZW50RmllbGRQcm9wZXJ0aWVzID0gdGhpcy5fZ2V0RmllbGRQcm9wZXJ0aWVzKG9FdmVudCksXG5cdFx0XHRhSW1tZWRpYXRlU2lkZUVmZmVjdHNQcm9wZXJ0aWVzOiBGaWVsZFNpZGVFZmZlY3RQcm9wZXJ0eVR5cGVbXSA9IHRoaXMuX2luaXRpYWxpemVGaWVsZFNpZGVFZmZlY3RzKFxuXHRcdFx0XHRtRXZlbnRGaWVsZFByb3BlcnRpZXMsXG5cdFx0XHRcdG9GaWVsZEdyb3VwUHJlUmVxdWlzaXRlXG5cdFx0XHQpO1xuXG5cdFx0bGV0IGJJc0ltbWVkaWF0ZVRyaWdnZXJlZCA9IGZhbHNlO1xuXG5cdFx0cmV0dXJuIHRoaXMuX2dlbmVyYXRlSW1tZWRpYXRlUHJvbWlzZShtRXZlbnRGaWVsZFByb3BlcnRpZXMpXG5cdFx0XHQudGhlbigoKSA9PiB7XG5cdFx0XHRcdGJJc0ltbWVkaWF0ZVRyaWdnZXJlZCA9IHRydWU7XG5cdFx0XHRcdHJldHVybiBQcm9taXNlLmFsbChcblx0XHRcdFx0XHRhSW1tZWRpYXRlU2lkZUVmZmVjdHNQcm9wZXJ0aWVzLm1hcChtU2lkZUVmZmVjdHNQcm9wZXJ0eSA9PiB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5yZXF1ZXN0U2lkZUVmZmVjdHMobVNpZGVFZmZlY3RzUHJvcGVydHkuc2lkZUVmZmVjdHMsIG1TaWRlRWZmZWN0c1Byb3BlcnR5LmNvbnRleHQpO1xuXHRcdFx0XHRcdH0pIHx8IFtdXG5cdFx0XHRcdCk7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKG9FcnJvciA9PiB7XG5cdFx0XHRcdGlmIChiSXNJbW1lZGlhdGVUcmlnZ2VyZWQpIHtcblx0XHRcdFx0XHRMb2cuZGVidWcoXCJFcnJvciB3aGlsZSBwcm9jZXNzaW5nIEZpZWxkIFNpZGVFZmZlY3RzXCIsIG9FcnJvcik7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0LyoqXG5cdFx0XHRcdFx0ICogU2lkZUVmZmVjdHMgaGF2ZSBub3QgYmVlbiB0cmlnZ2VyZWQgc2luY2UgcHJlUmVxdWlzaXRlIHZhbGlkYXRpb24gZmFpbHMgc28gd2UgbmVlZFxuXHRcdFx0XHRcdCAqIHRvIGtlZXAgcHJldmlvdXNseSBmYWlsZWQgcmVxdWVzdCBhcyBGYWlsZWQgcmVxdWVzdCAodG8gYmUgcmV0cmlnZ2VyIG9uIG5leHQgY2hhbmdlKVxuXHRcdFx0XHRcdCAqL1xuXG5cdFx0XHRcdFx0YUltbWVkaWF0ZVNpZGVFZmZlY3RzUHJvcGVydGllc1xuXHRcdFx0XHRcdFx0LmZpbHRlcihtSW1tZWRpYXRlU2lkZUVmZmVjdHMgPT4gbUltbWVkaWF0ZVNpZGVFZmZlY3RzLnByZXZpb3VzbHlGYWlsZWQgPT09IHRydWUpXG5cdFx0XHRcdFx0XHQuZm9yRWFjaChtSW1tZWRpYXRlU2lkZUVmZmVjdHMgPT5cblx0XHRcdFx0XHRcdFx0dGhpcy5fYWRkRmFpbGVkU2lkZUVmZmVjdHMobUltbWVkaWF0ZVNpZGVFZmZlY3RzLnNpZGVFZmZlY3RzLCBtSW1tZWRpYXRlU2lkZUVmZmVjdHMuY29udGV4dClcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1hbmFnZXMgU2lkZUVmZmVjdHMgd2l0aCBhIHJlbGF0ZWQgJ2ZvY3VzIG91dCcgdG8gYSBmaWVsZCBncm91cC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIGhhbmRsZUZpZWxkR3JvdXBDaGFuZ2Vcblx0ICogQHBhcmFtIHtvYmplY3R9IG9FdmVudCBTQVBVSTUgRXZlbnRcblx0ICogQHJldHVybnMge29iamVjdH0gUHJvbWlzZSBvbiBTaWRlRWZmZWN0cyByZXF1ZXN0KHMpXG5cdCAqL1xuXHRAUHVibGljXG5cdEBGaW5hbFxuXHRwdWJsaWMgaGFuZGxlRmllbGRHcm91cENoYW5nZShvRXZlbnQ6IFVJNUV2ZW50KTogUHJvbWlzZTxhbnk+IHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXNcblx0XHRjb25zdCB0aGF0ID0gdGhpcyxcblx0XHRcdGFEZWZlcnJlZFNpZGVFZmZlY3RzOiBGaWVsZEdyb3VwU2lkZUVmZmVjdFR5cGVbXSA9IFtdLFxuXHRcdFx0YUZpZWxkR3JvdXBJZHM6IHN0cmluZ1tdID0gb0V2ZW50LmdldFBhcmFtZXRlcihcImZpZWxkR3JvdXBJZHNcIik7XG5cblx0XHRjb25zdCBnZXRGaWVsZEdyb3VwUmVxdWVzdFByb21pc2UgPSBmdW5jdGlvbihvRGVmZXJyZWRTaWRlRWZmZWN0OiBGaWVsZEdyb3VwU2lkZUVmZmVjdFR5cGUpIHtcblx0XHRcdGxldCBiSXNSZXF1ZXN0c1RyaWdnZXJlZCA9IGZhbHNlO1xuXHRcdFx0Y29uc3Qgb1NpZGVFZmZlY3RQcm9wZXJ0eSA9IG9EZWZlcnJlZFNpZGVFZmZlY3Quc2lkZUVmZmVjdFByb3BlcnR5O1xuXHRcdFx0Y29uc3Qgb0NvbnRleHQgPSBvU2lkZUVmZmVjdFByb3BlcnR5LmNvbnRleHQ7XG5cdFx0XHRjb25zdCBzQ29udGV4dFBhdGggPSBvQ29udGV4dC5nZXRQYXRoKCk7XG5cdFx0XHRjb25zdCBzRW50aXR5VHlwZSA9IHRoYXQuX29TaWRlRWZmZWN0c1NlcnZpY2UuZ2V0RW50aXR5VHlwZUZyb21Db250ZXh0KG9Db250ZXh0KTtcblx0XHRcdGNvbnN0IG1FbnRpdHlUeXBlID0gdGhhdC5fZ2V0RW50aXR5VHlwZUZyb21GUU4oc0VudGl0eVR5cGUpO1xuXG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5hbGwob0RlZmVycmVkU2lkZUVmZmVjdC5wcm9taXNlcylcblx0XHRcdFx0LnRoZW4oZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0YklzUmVxdWVzdHNUcmlnZ2VyZWQgPSB0cnVlO1xuXG5cdFx0XHRcdFx0Ly9EZWZlcnJlZCBTaWRlRWZmZWN0cyBhcmUgZXhlY3V0ZWQgb25seSBpZiBhbGwgc291cmNlUHJvcGVydGllcyBoYXZlIG5vIHJlZ2lzdGVyZWQgZmFpbHVyZS5cblx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRtRW50aXR5VHlwZSAmJlxuXHRcdFx0XHRcdFx0KG9TaWRlRWZmZWN0UHJvcGVydHkuc2lkZUVmZmVjdHMuU291cmNlUHJvcGVydGllcyBhcyBQcm9wZXJ0eVBhdGhbXSkuZXZlcnkoc291cmNlUHJvcGVydHkgPT4ge1xuXHRcdFx0XHRcdFx0XHRpZiAoc291cmNlUHJvcGVydHkudHlwZSA9PT0gXCJQcm9wZXJ0eVBhdGhcIikge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IHNJZCA9IHRoYXQuX2dlbmVyYXRlU3RhdHVzSW5kZXgobUVudGl0eVR5cGUsIHNvdXJjZVByb3BlcnR5LnZhbHVlLCBvQ29udGV4dCk7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHNJZCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuICF0aGF0Ll9hU291cmNlUHJvcGVydGllc0ZhaWx1cmUuaGFzKHNJZCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiB0aGF0LnJlcXVlc3RTaWRlRWZmZWN0cyhvU2lkZUVmZmVjdFByb3BlcnR5LnNpZGVFZmZlY3RzLCBvU2lkZUVmZmVjdFByb3BlcnR5LmNvbnRleHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKG9FcnJvciA9PiB7XG5cdFx0XHRcdFx0aWYgKGJJc1JlcXVlc3RzVHJpZ2dlcmVkKSB7XG5cdFx0XHRcdFx0XHRMb2cuZGVidWcoXCJFcnJvciB3aGlsZSBwcm9jZXNzaW5nIEZpZWxkR3JvdXAgU2lkZUVmZmVjdHMgb24gY29udGV4dCBcIiArIHNDb250ZXh0UGF0aCwgb0Vycm9yKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5maW5hbGx5KCgpID0+IHtcblx0XHRcdFx0XHRkZWxldGUgdGhhdC5fbUZpZWxkR3JvdXBRdWV1ZVtvU2lkZUVmZmVjdFByb3BlcnR5Lm5hbWVdW3NDb250ZXh0UGF0aF07XG5cdFx0XHRcdH0pO1xuXHRcdH07XG5cblx0XHRhRmllbGRHcm91cElkcy5mb3JFYWNoKHNGaWVsZEdyb3VwSWQgPT4ge1xuXHRcdFx0LyoqXG5cdFx0XHQgKiBzdHJpbmcgXCIkJEltbWVkaWF0ZVJlcXVlc3RcIiBpcyBhZGRlZCB0byB0aGUgU2lkZUVmZmVjdHMgbmFtZSBkdXJpbmcgdGVtcGxhdGluZyB0byBrbm93XG5cdFx0XHQgKiBpZiB0aGlzIFNpZGVFZmZlY3RzIG11c3QgYmUgaW1tZWRpYXRlbHkgZXhlY3V0ZWQgcmVxdWVzdGVkIChvbiBmaWVsZCBjaGFuZ2UpIG9yIG11c3Rcblx0XHRcdCAqIGJlIGRlZmVycmVkIChvbiBmaWVsZCBncm91cCBmb2N1cyBvdXQpXG5cdFx0XHQgKlxuXHRcdFx0ICovXG5cdFx0XHRjb25zdCBzU2lkZUVmZmVjdE5hbWU6IHN0cmluZyA9IHNGaWVsZEdyb3VwSWQucmVwbGFjZShcIiQkSW1tZWRpYXRlUmVxdWVzdFwiLCBcIlwiKTtcblx0XHRcdGNvbnN0IG1Db250ZXh0RGVmZXJyZWRTaWRlRWZmZWN0cyA9IHRoYXQuX21GaWVsZEdyb3VwUXVldWU/LltzU2lkZUVmZmVjdE5hbWVdO1xuXHRcdFx0aWYgKG1Db250ZXh0RGVmZXJyZWRTaWRlRWZmZWN0cykge1xuXHRcdFx0XHRPYmplY3Qua2V5cyhtQ29udGV4dERlZmVycmVkU2lkZUVmZmVjdHMpLmZvckVhY2goc0NvbnRleHRQYXRoID0+IHtcblx0XHRcdFx0XHRjb25zdCBvRGVmZXJyZWRTaWRlRWZmZWN0ID0gbUNvbnRleHREZWZlcnJlZFNpZGVFZmZlY3RzW3NDb250ZXh0UGF0aF07XG5cdFx0XHRcdFx0aWYgKCFvRGVmZXJyZWRTaWRlRWZmZWN0LnByb2Nlc3NTdGFydGVkKSB7XG5cdFx0XHRcdFx0XHRvRGVmZXJyZWRTaWRlRWZmZWN0LnByb2Nlc3NTdGFydGVkID0gdHJ1ZTtcblx0XHRcdFx0XHRcdGFEZWZlcnJlZFNpZGVFZmZlY3RzLnB1c2gob0RlZmVycmVkU2lkZUVmZmVjdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdHJldHVybiBQcm9taXNlLmFsbChcblx0XHRcdGFEZWZlcnJlZFNpZGVFZmZlY3RzLm1hcChvRGVmZXJyZWRTaWRlRWZmZWN0ID0+IHtcblx0XHRcdFx0cmV0dXJuIGdldEZpZWxkR3JvdXBSZXF1ZXN0UHJvbWlzZShvRGVmZXJyZWRTaWRlRWZmZWN0KTtcblx0XHRcdH0pXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGRzIGEgU2lkZUVmZmVjdHMgY29udHJvbC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIGFkZENvbnRyb2xTaWRlRWZmZWN0c1xuXHQgKiBAcGFyYW0ge3N0cmluZ30gc0VudGl0eVR5cGUgTmFtZSBvZiB0aGUgZW50aXR5IHdoZXJlIHRoZSBTaWRlRWZmZWN0cyBjb250cm9sIHdpbGwgYmUgcmVnaXN0ZXJlZFxuXHQgKiBAcGFyYW0ge29iamVjdH0gb1NpZGVFZmZlY3RzIFNpZGVFZmZlY3RzIHRvIHJlZ2lzdGVyLiBFbnN1cmUgdGhlIHNvdXJjZUNvbnRyb2xJZCBtYXRjaGVzIHRoZSBhc3NvY2lhdGVkIFNBUFVJNSBjb250cm9sIElELlxuXHQgKlxuXHQgKi9cblx0QFB1YmxpY1xuXHRARmluYWxcblx0cHVibGljIGFkZENvbnRyb2xTaWRlRWZmZWN0cyhzRW50aXR5VHlwZTogc3RyaW5nLCBvU2lkZUVmZmVjdHM6IE9taXQ8Q29udHJvbFNpZGVFZmZlY3RzVHlwZSwgXCJmdWxseVF1YWxpZmllZE5hbWVcIj4pOiB2b2lkIHtcblx0XHR0aGlzLl9vU2lkZUVmZmVjdHNTZXJ2aWNlLmFkZENvbnRyb2xTaWRlRWZmZWN0cyhzRW50aXR5VHlwZSwgb1NpZGVFZmZlY3RzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW1vdmVzIHRoZSBxdWV1ZSBjb250YWluaW5nIHRoZSBmYWlsZWQgU2lkZUVmZmVjdHMuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSByZW1vdmVGYWlsZWRTaWRlRWZmZWN0c1xuXHQgKi9cblx0QFB1YmxpY1xuXHRARmluYWxcblx0cHVibGljIHJlbW92ZUZhaWxlZFNpZGVFZmZlY3RzKCk6IHZvaWQge1xuXHRcdHRoaXMuX21GYWlsZWRTaWRlRWZmZWN0cyA9IHt9O1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlcXVlc3QgU2lkZUVmZmVjdHMgb24gYSBzcGVjaWZpYyBjb250ZXh0LlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgcmVxdWVzdFNpZGVFZmZlY3RzXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBvU2lkZUVmZmVjdHMgU2lkZUVmZmVjdHMgdG8gYmUgZXhlY3V0ZWRcblx0ICogQHBhcmFtIHtvYmplY3R9IG9Db250ZXh0IENvbnRleHQgd2hlcmUgU2lkZUVmZmVjdHMgbmVlZCB0byBiZSBleGVjdXRlZFxuXHQgKiBAcmV0dXJucyB7b2JqZWN0fSBTaWRlRWZmZWN0cyByZXF1ZXN0IG9uIFNBUFVJNSBjb250ZXh0XG5cdCAqL1xuXHRAUHVibGljXG5cdEBGaW5hbFxuXHRwdWJsaWMgcmVxdWVzdFNpZGVFZmZlY3RzKG9TaWRlRWZmZWN0czogU2lkZUVmZmVjdHNUeXBlLCBvQ29udGV4dDogQ29udGV4dDxhbnk+KTogUHJvbWlzZTxhbnk+IHtcblx0XHRsZXQgZlJlc29sdmVyOiBhbnksIGZSZWplY3RvcjogYW55O1xuXHRcdGNvbnN0IG9Qcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG5cdFx0XHRmUmVzb2x2ZXIgPSByZXNvbHZlO1xuXHRcdFx0ZlJlamVjdG9yID0gcmVqZWN0O1xuXHRcdH0pO1xuXHRcdGNvbnN0IGFUYXJnZXRzOiBhbnlbXSA9ICgob1NpZGVFZmZlY3RzLlRhcmdldEVudGl0aWVzIGFzIGFueVtdKSB8fCBbXSkuY29uY2F0KChvU2lkZUVmZmVjdHMuVGFyZ2V0UHJvcGVydGllcyBhcyBhbnlbXSkgfHwgW10pLFxuXHRcdFx0c1RyaWdnZXJBY3Rpb246IFN0cmluZyB8IHVuZGVmaW5lZCA9IChvU2lkZUVmZmVjdHMgYXMgT0RhdGFTaWRlRWZmZWN0c1R5cGUpLlRyaWdnZXJBY3Rpb247XG5cblx0XHRpZiAoc1RyaWdnZXJBY3Rpb24pIHtcblx0XHRcdHRoaXMuX29TaWRlRWZmZWN0c1NlcnZpY2UuZXhlY3V0ZUFjdGlvbihzVHJpZ2dlckFjdGlvbiwgb0NvbnRleHQpO1xuXHRcdH1cblxuXHRcdHRoaXMuX29TaWRlRWZmZWN0c1NlcnZpY2Vcblx0XHRcdC5yZXF1ZXN0U2lkZUVmZmVjdHMoYVRhcmdldHMsIG9Db250ZXh0KVxuXHRcdFx0LnRoZW4oKCkgPT4gZlJlc29sdmVyKCkpXG5cdFx0XHQuY2F0Y2goKG9FcnJvcjogYW55KSA9PiB7XG5cdFx0XHRcdHRoaXMuX2FkZEZhaWxlZFNpZGVFZmZlY3RzKG9TaWRlRWZmZWN0cywgb0NvbnRleHQpO1xuXHRcdFx0XHRmUmVqZWN0b3Iob0Vycm9yKTtcblx0XHRcdH0pO1xuXG5cdFx0cmV0dXJuIG9Qcm9taXNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZXMgU2lkZUVmZmVjdHMgY3JlYXRlZCBieSBhIGNvbnRyb2wuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSByZW1vdmVDb250cm9sU2lkZUVmZmVjdHNcblx0ICogQHBhcmFtIHtvYmplY3R9IG9Db250cm9sIFNBUFVJNSBDb250cm9sXG5cdCAqL1xuXHRAUHVibGljXG5cdEBGaW5hbFxuXHRwdWJsaWMgcmVtb3ZlQ29udHJvbFNpZGVFZmZlY3RzKG9Db250cm9sOiBDb250cm9sKTogdm9pZCB7XG5cdFx0Y29uc3Qgc0NvbnRyb2xJZCA9IG9Db250cm9sICYmIG9Db250cm9sLmlzQSAmJiBvQ29udHJvbC5pc0EoXCJzYXAudWkuYmFzZS5NYW5hZ2VkT2JqZWN0XCIpICYmIG9Db250cm9sLmdldElkKCk7XG5cblx0XHRpZiAoc0NvbnRyb2xJZCkge1xuXHRcdFx0dGhpcy5fb1NpZGVFZmZlY3RzU2VydmljZS5yZW1vdmVDb250cm9sU2lkZUVmZmVjdHMoc0NvbnRyb2xJZCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgU2lkZUVmZmVjdHMgdG8gdGhlIHF1ZXVlIG9mIHRoZSBmYWlsZWQgU2lkZUVmZmVjdHNcblx0ICogVGhlIFNpZGVFZmZlY3RzIHdpbGwgYmUgcmV0cmlnZ2VyZWQgb24gdGhlIG5leHQgY2hhbmdlIG9uIHRoZSBzYW1lIGNvbnRleHQuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBfYWRkRmFpbGVkU2lkZUVmZmVjdHNcblx0ICogQHBhcmFtIHtvYmplY3R9IG9TaWRlRWZmZWN0cyBTaWRlRWZmZWN0cyB0aGF0IG5lZWQgdG8gYmUgcmV0cmlnZ2VyZWRcblx0ICogQHBhcmFtIHtvYmplY3R9IG9Db250ZXh0IENvbnRleHQgd2hlcmUgU2lkZUVmZmVjdHMgaGF2ZSBmYWlsZWRcblx0ICovXG5cdEBQcml2YXRlXG5cdEBGaW5hbFxuXHRwcml2YXRlIF9hZGRGYWlsZWRTaWRlRWZmZWN0cyhvU2lkZUVmZmVjdHM6IFNpZGVFZmZlY3RzVHlwZSwgb0NvbnRleHQ6IENvbnRleHQ8YW55Pik6IHZvaWQge1xuXHRcdGNvbnN0IHNDb250ZXh0UGF0aDogc3RyaW5nID0gb0NvbnRleHQuZ2V0UGF0aCgpO1xuXHRcdHRoaXMuX21GYWlsZWRTaWRlRWZmZWN0c1tzQ29udGV4dFBhdGhdID0gdGhpcy5fbUZhaWxlZFNpZGVFZmZlY3RzW3NDb250ZXh0UGF0aF0gfHwgW107XG5cdFx0Y29uc3QgYklzTm90QWxyZWFkeUxpc3RlZCA9IHRoaXMuX21GYWlsZWRTaWRlRWZmZWN0c1tzQ29udGV4dFBhdGhdLmV2ZXJ5KFxuXHRcdFx0bUZhaWxlZFNpZGVFZmZlY3RzID0+IG9TaWRlRWZmZWN0cy5mdWxseVF1YWxpZmllZE5hbWUgIT09IG1GYWlsZWRTaWRlRWZmZWN0cy5mdWxseVF1YWxpZmllZE5hbWVcblx0XHQpO1xuXHRcdGlmIChiSXNOb3RBbHJlYWR5TGlzdGVkKSB7XG5cdFx0XHR0aGlzLl9tRmFpbGVkU2lkZUVmZmVjdHNbc0NvbnRleHRQYXRoXS5wdXNoKG9TaWRlRWZmZWN0cyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyB0aGUgcHJvbWlzZSBmb3IgdGhlIGZpZWxkIGdyb3VwIHRoYXQgaXMgcmVxdWlyZWQgYmVmb3JlIHJlcXVlc3RpbmcgU2lkZUVmZmVjdHMuXG5cdCAqIElmIHRoZSBwcm9taXNlIGlzIHJlamVjdGVkIGFuZCBvbmx5IHRoZSBmaWVsZCByZXF1aXJlcyB0aGUgU2lkZUVmZmVjdHMgb24gdGhpcyBjb250ZXh0LCB0aGUgU2lkZUVmZmVjdHMgYXJlIHJlbW92ZWQgZnJvbSB0aGVcblx0ICogU2lkZUVmZmVjdHMgcXVldWUuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBfZ2VuZXJhdGVGaWVsZEdyb3VwUHJvbWlzZVxuXHQgKiBAcGFyYW0ge29iamVjdH0gbUV2ZW50RmllbGRQcm9wZXJ0aWVzIEZpZWxkIHByb3BlcnRpZXNcblx0ICogQHJldHVybnMge29iamVjdH0gUHJvbWlzZSB0byBiZSB1c2VkIGZvciB0aGUgdmFsaWRhdGlvbiBvZiB0aGUgZmllbGRcblx0ICovXG5cdHByaXZhdGUgX2dlbmVyYXRlRmllbGRHcm91cFByb21pc2UobUV2ZW50RmllbGRQcm9wZXJ0aWVzOiBGaWVsZEV2ZW50UHJvcGVydHlUeXBlKTogUHJvbWlzZTxhbnk+IHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXNcblx0XHRjb25zdCB0aGF0ID0gdGhpcztcblxuXHRcdGxldCBiUHJvbWlzZVN1Y2Nlc3MgPSB0cnVlO1xuXHRcdHJldHVybiBtRXZlbnRGaWVsZFByb3BlcnRpZXMucHJvbWlzZVxuXHRcdFx0LnRoZW4oZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiBiUHJvbWlzZVN1Y2Nlc3M7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRiUHJvbWlzZVN1Y2Nlc3MgPSBmYWxzZTtcblx0XHRcdFx0cmV0dXJuIGJQcm9taXNlU3VjY2Vzcztcblx0XHRcdH0pXG5cdFx0XHQuZmluYWxseSgoKSA9PiB7XG5cdFx0XHRcdC8qKlxuXHRcdFx0XHQgKiBOZWVkIHRvIHN0b3JlIHRoZSBzdGF0dXMgb2YgcHJvcGVydGllcyByZWxhdGVkIHRvIHRoaXMgZmllbGQgZm9yIGRlZmVycmVkIFNpZGVFZmZlY3RzXG5cdFx0XHRcdCAqIHNpbmNlIGFsbCBTb3VyY2VQcm9wZXJ0aWVzIGZvciB0aGlzIGtpbmQgb2YgU2lkZUVmZmVjdHMgbXVzdCBiZSB2YWxpZFxuXHRcdFx0XHQgKi9cblx0XHRcdFx0dGhhdC5fc2F2ZUZpZWxkUHJvcGVydGllc1N0YXR1cyhtRXZlbnRGaWVsZFByb3BlcnRpZXMuZmllbGQsIGJQcm9taXNlU3VjY2Vzcyk7XG5cdFx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgdGhlIHByb21pc2UgZm9yIHRoZSBmaWVsZCB0aGF0IGlzIHJlcXVpcmVkIGJlZm9yZSByZXF1ZXN0aW5nIGltbWVkaWF0ZSBTaWRlRWZmZWN0cy5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIF9nZW5lcmF0ZUltbWVkaWF0ZVByb21pc2Vcblx0ICogQHBhcmFtIHtvYmplY3R9IG1FdmVudEZpZWxkUHJvcGVydGllcyBGaWVsZCBwcm9wZXJ0aWVzXG5cdCAqIEByZXR1cm5zIHtvYmplY3R9IFByb21pc2UgdG8gYmUgdXNlZCBmb3IgdGhlIHZhbGlkYXRpb24gb2YgdGhlIGZpZWxkXG5cdCAqL1xuXHRwcml2YXRlIF9nZW5lcmF0ZUltbWVkaWF0ZVByb21pc2UobUV2ZW50RmllbGRQcm9wZXJ0aWVzOiBGaWVsZEV2ZW50UHJvcGVydHlUeXBlKTogUHJvbWlzZTxhbnk+IHtcblx0XHRjb25zdCBvUHJvbWlzZSA9IG1FdmVudEZpZWxkUHJvcGVydGllcy5wcm9taXNlO1xuXHRcdHJldHVybiBvUHJvbWlzZS50aGVuKGZ1bmN0aW9uKCkge1xuXHRcdFx0LyoqXG5cdFx0XHQgKiBJZiB0aGUgZmllbGQgZ2V0cyBhIEZpZWxkSGVscGVyLCB3ZSBuZWVkIHRvIHdhaXQgdW50aWwgYWxsIGZpZWxkcyBjaGFuZ2VkIGJ5IHRoaXMgRmllbGRIZWxwZXIgaGF2ZSBiZWVuIHNldC5cblx0XHRcdCAqIFRvIGFjaGlldmUgdGhpcywgd2UgZW5zdXJlIHRoYXQgYWxsIHJlbGF0ZWQgYmluZGluZ3MgaGF2ZSBiZWVuIHJlc29sdmVkLlxuXHRcdFx0ICpcblx0XHRcdCAqIFRoaXMgcmVzb2x1dGlvbiBwcm9jZXNzIGlzIG5vdCBtYW5hZ2VkIGJ5IHRoZSBGaWVsZCBFdmVudCBQcm9taXNlLCBzbyBmb3IgZmFzdCB1c2VyIGFjdGlvbnMgKGxpa2UgYXV0b21hdGlvbikgaXQgY2FuIGxvY2sgdGhlIG1vZGVsXG5cdFx0XHQgKiBhbmQgbm8gcmVxdWVzdCBjYW4gYmUgZXhlY3V0ZWQuXG5cdFx0XHQgKi9cblx0XHRcdGNvbnN0IG9GaWVsZCA9IG1FdmVudEZpZWxkUHJvcGVydGllcy5maWVsZDtcblx0XHRcdGNvbnN0IHNGaWVsZEhlbHBlcklkID0gb0ZpZWxkLmdldEZpZWxkSGVscCAmJiBvRmllbGQuZ2V0RmllbGRIZWxwKCk7XG5cdFx0XHRpZiAoc0ZpZWxkSGVscGVySWQpIHtcblx0XHRcdFx0Y29uc3Qgb0ZpbHRlckhlbHA6IGFueSA9IHNhcC51aS5nZXRDb3JlKCkuYnlJZChzRmllbGRIZWxwZXJJZCk7XG5cdFx0XHRcdGlmIChvRmlsdGVySGVscCkge1xuXHRcdFx0XHRcdHJldHVybiBQcm9taXNlLmFsbChcblx0XHRcdFx0XHRcdChvRmlsdGVySGVscC5nZXRPdXRQYXJhbWV0ZXJzKCkgYXMgYW55W10pLm1hcChvT3V0UGFyYW1ldGVyID0+IHtcblx0XHRcdFx0XHRcdFx0Y29uc3Qgb0JpbmRpbmcgPSBvT3V0UGFyYW1ldGVyLmdldEJpbmRpbmcoXCJ2YWx1ZVwiKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG9CaW5kaW5nID8gb0JpbmRpbmcucmVxdWVzdFZhbHVlKCkgOiBQcm9taXNlLnJlc29sdmUoKTtcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIFByb21pc2UuYWxsKFtdKTtcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBzdGF0dXMgaW5kZXguXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBfZ2VuZXJhdGVTdGF0dXNJbmRleFxuXHQgKiBAcGFyYW0ge29iamVjdH0gbUVudGl0eVR5cGUgVGhlIGVudGl0eSB0eXBlXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzUHJvcGVydHlQYXRoIFRoZSBwcm9wZXJ0eSBwYXRoXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBvQ29udGV4dCBTQVBVSTUgQ29udGV4dFxuXHQgKiBAcmV0dXJucyB7c3RyaW5nIHwgdW5kZWZpbmVkfSBJbmRleFxuXHQgKi9cblx0cHJpdmF0ZSBfZ2VuZXJhdGVTdGF0dXNJbmRleChtRW50aXR5VHlwZTogRW50aXR5VHlwZSwgc1Byb3BlcnR5UGF0aDogc3RyaW5nLCBvQ29udGV4dDogQ29udGV4dDxhbnk+KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBzQ29udGV4dFBhdGggPSBvQ29udGV4dC5nZXRQYXRoKCk7XG5cdFx0Y29uc3QgbVByb3BlcnR5ID0gbUVudGl0eVR5cGUucmVzb2x2ZVBhdGgoc1Byb3BlcnR5UGF0aCk7XG5cdFx0aWYgKG1Qcm9wZXJ0eSkge1xuXHRcdFx0aWYgKG1Qcm9wZXJ0eSAmJiBtUHJvcGVydHkuX3R5cGUgPT09IFwiUHJvcGVydHlcIikge1xuXHRcdFx0XHRyZXR1cm4gW21Qcm9wZXJ0eS5mdWxseVF1YWxpZmllZE5hbWUsIHNDb250ZXh0UGF0aF0uam9pbihcIl9fXCIpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGFwcHJvcHJpYXRlIGNvbnRleHQgb24gd2hpY2ggU2lkZUVmZmVjdHMgY2FuIGJlIHJlcXVlc3RlZC5cblx0ICogVGhlIGNvcnJlY3Qgb25lIG11c3QgaGF2ZSB0aGUgYmluZGluZyBwYXJhbWV0ZXIgJCRwYXRjaFdpdGhvdXRTaWRlRWZmZWN0cy5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIF9nZXRDb250ZXh0Rm9yU2lkZUVmZmVjdHNcblx0ICogQHBhcmFtIHtvYmplY3R9IG9Tb3VyY2VGaWVsZCBGaWVsZFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc1NpZGVFZmZlY3RFbnRpdHlUeXBlIFRhcmdldCBlbnRpdHkgdHlwZSBvZiB0aGUgU2lkZUVmZmVjdHMgYW5ub3RhdGlvblxuXHQgKiBAcmV0dXJucyB7b2JqZWN0fSBTQVBVSTUgQ29udGV4dFxuXHQgKi9cblx0QFByaXZhdGVcblx0QEZpbmFsXG5cdHByaXZhdGUgX2dldENvbnRleHRGb3JTaWRlRWZmZWN0cyhvU291cmNlRmllbGQ6IEZpZWxkQ29udHJvbCwgc1NpZGVFZmZlY3RFbnRpdHlUeXBlOiBzdHJpbmcpOiBDb250ZXh0PGFueT4gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG9CaW5kaW5nQ29udGV4dCA9IG9Tb3VyY2VGaWVsZC5nZXRCaW5kaW5nQ29udGV4dCgpO1xuXHRcdGxldCBvQ29udGV4dEZvclNpZGVFZmZlY3RzID0gb0JpbmRpbmdDb250ZXh0LFxuXHRcdFx0c0VudGl0eVR5cGUgPSB0aGlzLl9vU2lkZUVmZmVjdHNTZXJ2aWNlLmdldEVudGl0eVR5cGVGcm9tQ29udGV4dChvQmluZGluZ0NvbnRleHQpO1xuXG5cdFx0aWYgKHNTaWRlRWZmZWN0RW50aXR5VHlwZSAhPT0gc0VudGl0eVR5cGUpIHtcblx0XHRcdG9Db250ZXh0Rm9yU2lkZUVmZmVjdHMgPSAob0JpbmRpbmdDb250ZXh0IGFzIGFueSkuZ2V0QmluZGluZygpLmdldENvbnRleHQoKTtcblx0XHRcdGlmIChvQ29udGV4dEZvclNpZGVFZmZlY3RzKSB7XG5cdFx0XHRcdHNFbnRpdHlUeXBlID0gdGhpcy5fb1NpZGVFZmZlY3RzU2VydmljZS5nZXRFbnRpdHlUeXBlRnJvbUNvbnRleHQob0NvbnRleHRGb3JTaWRlRWZmZWN0cyk7XG5cdFx0XHRcdGlmIChzU2lkZUVmZmVjdEVudGl0eVR5cGUgIT09IHNFbnRpdHlUeXBlKSB7XG5cdFx0XHRcdFx0b0NvbnRleHRGb3JTaWRlRWZmZWN0cyA9IChvQ29udGV4dEZvclNpZGVFZmZlY3RzIGFzIGFueSkuZ2V0QmluZGluZygpLmdldENvbnRleHQoKTtcblx0XHRcdFx0XHRpZiAob0NvbnRleHRGb3JTaWRlRWZmZWN0cykge1xuXHRcdFx0XHRcdFx0c0VudGl0eVR5cGUgPSB0aGlzLl9vU2lkZUVmZmVjdHNTZXJ2aWNlLmdldEVudGl0eVR5cGVGcm9tQ29udGV4dChvQ29udGV4dEZvclNpZGVFZmZlY3RzKTtcblx0XHRcdFx0XHRcdGlmIChzU2lkZUVmZmVjdEVudGl0eVR5cGUgIT09IHNFbnRpdHlUeXBlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG9Db250ZXh0Rm9yU2lkZUVmZmVjdHMgfHwgdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgRW50aXR5VHlwZSBiYXNlZCBvbiBpdHMgZnVsbHktcXVhbGlmaWVkIG5hbWUuXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzRnVsbHlRdWFsaWZpZWROYW1lIFRoZSBmdWxseS1xdWFsaWZpZWQgbmFtZVxuXHQgKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgZW50aXR5IHR5cGVcblx0ICovXG5cdHByaXZhdGUgX2dldEVudGl0eVR5cGVGcm9tRlFOKHNGdWxseVF1YWxpZmllZE5hbWU6IHN0cmluZyk6IEVudGl0eVR5cGUgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG1FbnRpdHlUeXBlID0gKHRoaXMuX29TaWRlRWZmZWN0c1NlcnZpY2UuZ2V0Q29udmVydGVkTWV0YU1vZGVsKCkgYXMgQ29udmVydGVyT3V0cHV0KS5lbnRpdHlUeXBlcy5maW5kKG9FbnRpdHlUeXBlID0+IHtcblx0XHRcdHJldHVybiBvRW50aXR5VHlwZS5mdWxseVF1YWxpZmllZE5hbWUgPT09IHNGdWxseVF1YWxpZmllZE5hbWU7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIG1FbnRpdHlUeXBlO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHByb21pc2Ugb2YgdGhlIGZpZWxkIHZhbGlkYXRpb24gdGhhdCBpcyByZXF1aXJlZCBmb3IgdGhlIFNpZGVFZmZlY3RzIHByb2Nlc3MuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBfZ2V0RmllbGRQcm9taXNlXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBvRXZlbnQgRmllbGQgY2hhbmdlIGV2ZW50XG5cdCAqIEByZXR1cm5zIHtvYmplY3R9IEZpZWxkIHByb21pc2Vcblx0ICovXG5cdHByaXZhdGUgX2dldEZpZWxkUHJvbWlzZShvRXZlbnQ6IFVJNUV2ZW50KTogUHJvbWlzZTxhbnk+IHtcblx0XHRjb25zdCBwcm9taXNlID0gb0V2ZW50LmdldFBhcmFtZXRlcihcInByb21pc2VcIikgfHwgUHJvbWlzZS5yZXNvbHZlKCk7XG5cblx0XHRyZXR1cm4gcHJvbWlzZS50aGVuKCgpID0+IHtcblx0XHRcdGNvbnN0IG9Qcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG5cdFx0XHRcdGlmICghRmllbGRSdW50aW1lLmdldEZpZWxkU3RhdGVPbkNoYW5nZShvRXZlbnQpLnN0YXRlLnZhbGlkaXR5KSB7XG5cdFx0XHRcdFx0cmVqZWN0KCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmVzb2x2ZSh0cnVlKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gb1Byb21pc2U7XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgcHJvcGVydGllcyBvZiB0aGUgZmllbGQgdGhhdCBhcmUgcmVxdWlyZWQgZm9yIHRoZSBTaWRlRWZmZWN0cyBwcm9jZXNzLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgX2dldEZpZWxkUHJvcGVydGllc1xuXHQgKiBAcGFyYW0ge29iamVjdH0gb0V2ZW50IEZpZWxkIGNoYW5nZSBldmVudFxuXHQgKiBAcmV0dXJucyB7b2JqZWN0fSBGaWVsZCBwcm9wZXJ0aWVzIChldmVudCBjaGFuZ2UgcHJvbWlzZSwgZmllbGQsIFNpZGVFZmZlY3RzIHJlbGF0ZWQgdG8gdGhpcyBmaWVsZClcblx0ICovXG5cdHByaXZhdGUgX2dldEZpZWxkUHJvcGVydGllcyhvRXZlbnQ6IFVJNUV2ZW50KTogRmllbGRFdmVudFByb3BlcnR5VHlwZSB7XG5cdFx0Y29uc3Qgb0ZpZWxkOiBGaWVsZENvbnRyb2wgPSBvRXZlbnQuZ2V0U291cmNlKCk7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0cHJvbWlzZTogdGhpcy5fZ2V0RmllbGRQcm9taXNlKG9FdmVudCksXG5cdFx0XHRmaWVsZDogb0ZpZWxkLFxuXHRcdFx0c2lkZUVmZmVjdHNNYXA6IHRoaXMuX2dldEZpZWxkU2lkZUVmZmVjdHNNYXAob0ZpZWxkKVxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgU2lkZUVmZmVjdHMgbWFwXG5cdCAqIFRoZXNlIFNpZGVFZmZlY3RzIGFyZVxuXHQgKiAtIGxpc3RlZCBpbnRvIEZpZWxkR3JvdXBJZHMgKGNvbWluZyBmcm9tIGFuIE9EYXRhIFNlcnZpY2UpXG5cdCAqIC0gZ2VuZXJhdGVkIGJ5IGEgY29udHJvbCBvciBjb250cm9scyBhbmQgdGhhdCBjb25maWd1cmUgdGhpcyBmaWVsZCBhcyBTb3VyY2VQcm9wZXJ0aWVzLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgX2dldEZpZWxkU2lkZUVmZmVjdHNNYXBcblx0ICogQHBhcmFtIHtvYmplY3R9IG9GaWVsZCBGaWVsZFxuXHQgKiBAcmV0dXJucyB7b2JqZWN0fSBTaWRlRWZmZWN0cyBtYXBcblx0ICovXG5cdHByaXZhdGUgX2dldEZpZWxkU2lkZUVmZmVjdHNNYXAob0ZpZWxkOiBGaWVsZENvbnRyb2wpOiBGaWVsZFNpZGVFZmZlY3REaWN0aW9uYXJ5IHtcblx0XHRjb25zdCBtU2lkZUVmZmVjdHNNYXA6IEZpZWxkU2lkZUVmZmVjdERpY3Rpb25hcnkgPSB7fSxcblx0XHRcdGFGaWVsZEdyb3VwSWRzOiBzdHJpbmdbXSA9IG9GaWVsZC5nZXRGaWVsZEdyb3VwSWRzKCksXG5cdFx0XHRzVmlld0VudGl0eVNldFNldE5hbWUgPSB0aGlzLl9vVmlldy5nZXRWaWV3RGF0YSgpLmVudGl0eVNldCxcblx0XHRcdG9WaWV3RW50aXR5U2V0ID0gKHRoaXMuX29TaWRlRWZmZWN0c1NlcnZpY2UuZ2V0Q29udmVydGVkTWV0YU1vZGVsKCkgYXMgQ29udmVydGVyT3V0cHV0KS5lbnRpdHlTZXRzLmZpbmQob0VudGl0eVNldCA9PiB7XG5cdFx0XHRcdHJldHVybiBvRW50aXR5U2V0Lm5hbWUgPT09IHNWaWV3RW50aXR5U2V0U2V0TmFtZTtcblx0XHRcdH0pO1xuXG5cdFx0Ly8gU2lkZUVmZmVjdHMgY29taW5nIGZyb20gYW4gT0RhdGEgU2VydmljZVxuXHRcdGFGaWVsZEdyb3VwSWRzLmZvckVhY2goc0ZpZWxkR3JvdXBJZCA9PiB7XG5cdFx0XHRjb25zdCBiSXNJbW1lZGlhdGU6IGJvb2xlYW4gPSBzRmllbGRHcm91cElkLmluZGV4T2YoXCIkJEltbWVkaWF0ZVJlcXVlc3RcIikgIT09IC0xLFxuXHRcdFx0XHRzTmFtZTogc3RyaW5nID0gc0ZpZWxkR3JvdXBJZC5yZXBsYWNlKFwiJCRJbW1lZGlhdGVSZXF1ZXN0XCIsIFwiXCIpLFxuXHRcdFx0XHRhU2lkZUVmZmVjdFBhcnRzOiBzdHJpbmdbXSA9IHNOYW1lLnNwbGl0KFwiI1wiKSxcblx0XHRcdFx0c1NpZGVFZmZlY3RFbnRpdHlUeXBlOiBzdHJpbmcgPSBhU2lkZUVmZmVjdFBhcnRzWzBdLFxuXHRcdFx0XHRzU2lkZUVmZmVjdFBhdGg6IHN0cmluZyA9XG5cdFx0XHRcdFx0c1NpZGVFZmZlY3RFbnRpdHlUeXBlICtcblx0XHRcdFx0XHRcIkBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuU2lkZUVmZmVjdHNcIiArXG5cdFx0XHRcdFx0KGFTaWRlRWZmZWN0UGFydHMubGVuZ3RoID09PSAyID8gXCIjXCIgKyBhU2lkZUVmZmVjdFBhcnRzWzFdIDogXCJcIiksXG5cdFx0XHRcdG9TaWRlRWZmZWN0OiBTaWRlRWZmZWN0c1R5cGUgfCB1bmRlZmluZWQgPSB0aGlzLl9vU2lkZUVmZmVjdHNTZXJ2aWNlLmdldE9EYXRhRW50aXR5U2lkZUVmZmVjdHMoc1NpZGVFZmZlY3RFbnRpdHlUeXBlKT8uW1xuXHRcdFx0XHRcdHNTaWRlRWZmZWN0UGF0aFxuXHRcdFx0XHRdLFxuXHRcdFx0XHRvQ29udGV4dDogQ29udGV4dDxhbnk+IHwgdW5kZWZpbmVkID0gdGhpcy5fZ2V0Q29udGV4dEZvclNpZGVFZmZlY3RzKG9GaWVsZCwgc1NpZGVFZmZlY3RFbnRpdHlUeXBlKTtcblx0XHRcdGlmIChvU2lkZUVmZmVjdCAmJiBvQ29udGV4dCkge1xuXHRcdFx0XHRtU2lkZUVmZmVjdHNNYXBbc05hbWVdID0ge1xuXHRcdFx0XHRcdG5hbWU6IHNOYW1lLFxuXHRcdFx0XHRcdGltbWVkaWF0ZTogYklzSW1tZWRpYXRlLFxuXHRcdFx0XHRcdHNpZGVFZmZlY3RzOiBvU2lkZUVmZmVjdCxcblx0XHRcdFx0XHRjb250ZXh0OiBvQ29udGV4dFxuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0Ly9TaWRlRWZmZWN0cyBjb21pbmcgZnJvbSBjb250cm9sKHMpXG5cdFx0aWYgKHNWaWV3RW50aXR5U2V0U2V0TmFtZSAmJiBvVmlld0VudGl0eVNldCkge1xuXHRcdFx0Y29uc3Qgc1ZpZXdFbnRpdHlUeXBlID0gb1ZpZXdFbnRpdHlTZXQuZW50aXR5VHlwZS5mdWxseVF1YWxpZmllZE5hbWUsXG5cdFx0XHRcdG1GaWVsZFBhdGg6IGFueSA9IChvRmllbGQuZ2V0QWdncmVnYXRpb24oXCJjdXN0b21EYXRhXCIpIGFzIGFueVtdKS5maW5kKG9DdXN0b21EYXRhID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gb0N1c3RvbURhdGEuZ2V0S2V5KCkgPT09IFwic291cmNlUGF0aFwiO1xuXHRcdFx0XHR9KSxcblx0XHRcdFx0b0NvbnRleHQ6IENvbnRleHQ8YW55PiB8IHVuZGVmaW5lZCA9IHRoaXMuX2dldENvbnRleHRGb3JTaWRlRWZmZWN0cyhvRmllbGQsIHNWaWV3RW50aXR5VHlwZSk7XG5cblx0XHRcdGlmIChtRmllbGRQYXRoICYmIG9Db250ZXh0KSB7XG5cdFx0XHRcdGNvbnN0IHNGaWVsZFBhdGggPSBtRmllbGRQYXRoLmdldFZhbHVlKCkucmVwbGFjZShcIi9cIiArIHNWaWV3RW50aXR5U2V0U2V0TmFtZSArIFwiL1wiLCBcIlwiKSxcblx0XHRcdFx0XHRtQ29udHJvbEVudGl0eVR5cGUgPSB0aGlzLl9vU2lkZUVmZmVjdHNTZXJ2aWNlLmdldENvbnRyb2xFbnRpdHlTaWRlRWZmZWN0cyhcblx0XHRcdFx0XHRcdHNWaWV3RW50aXR5VHlwZVxuXHRcdFx0XHRcdCkgYXMgQ29udHJvbFNpZGVFZmZlY3RzRW50aXR5RGljdGlvbmFyeTtcblx0XHRcdFx0T2JqZWN0LmtleXMobUNvbnRyb2xFbnRpdHlUeXBlKS5mb3JFYWNoKHNDb250cm9sTmFtZSA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qgb0NvbnRyb2xTaWRlRWZmZWN0czogU2lkZUVmZmVjdHNUeXBlID0gbUNvbnRyb2xFbnRpdHlUeXBlW3NDb250cm9sTmFtZV07XG5cdFx0XHRcdFx0aWYgKChvQ29udHJvbFNpZGVFZmZlY3RzLlNvdXJjZVByb3BlcnRpZXMgYXMgc3RyaW5nW10pLmluY2x1ZGVzKHNGaWVsZFBhdGgpKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBzTmFtZSA9IHNDb250cm9sTmFtZSArIFwiOjpcIiArIHNWaWV3RW50aXR5VHlwZTtcblx0XHRcdFx0XHRcdG1TaWRlRWZmZWN0c01hcFtzTmFtZV0gPSB7XG5cdFx0XHRcdFx0XHRcdG5hbWU6IHNOYW1lLFxuXHRcdFx0XHRcdFx0XHRpbW1lZGlhdGU6IHRydWUsXG5cdFx0XHRcdFx0XHRcdHNpZGVFZmZlY3RzOiBvQ29udHJvbFNpZGVFZmZlY3RzLFxuXHRcdFx0XHRcdFx0XHRjb250ZXh0OiBvQ29udGV4dFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gbVNpZGVFZmZlY3RzTWFwO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1hbmFnZXMgdGhlIFNpZGVFZmZlY3RzIHdpdGggcmVsYXRlZCBjaGFuZ2VzIHRvIGEgZmllbGRcblx0ICogTGlzdDogZ2V0cyBpbW1lZGlhdGUgU2lkZUVmZmVjdHMgcmVxdWVzdHNcblx0ICogUmVnaXN0ZXI6IGNhY2hlcyBkZWZlcnJlZCBTaWRlRWZmZWN0cyB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgd2hlbiB0aGUgRmllbGRHcm91cCBpcyB1bmZvY3VzZWQuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBfaW5pdGlhbGl6ZUZpZWxkU2lkZUVmZmVjdHNcblx0ICogQHBhcmFtIHtvYmplY3R9IG1FdmVudEZpZWxkUHJvcGVydGllcyBGaWVsZCBldmVudCBwcm9wZXJ0aWVzXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBvRmllbGRHcm91cFByZVJlcXVpc2l0ZSBQcm9taXNlIHRvIGJlIGZ1bGZpbGxlZCBiZWZvcmUgZXhlY3V0aW5nIGRlZmVycmVkIFNpZGVFZmZlY3RzXG5cdCAqIEByZXR1cm5zIHtBcnJheX0gIEFycmF5IG9mIGltbWVkaWF0ZSBTaWRlRWZmZWN0c1xuXHQgKi9cblx0cHJpdmF0ZSBfaW5pdGlhbGl6ZUZpZWxkU2lkZUVmZmVjdHMoXG5cdFx0bUV2ZW50RmllbGRQcm9wZXJ0aWVzOiBGaWVsZEV2ZW50UHJvcGVydHlUeXBlLFxuXHRcdG9GaWVsZEdyb3VwUHJlUmVxdWlzaXRlPzogUHJvbWlzZTxhbnk+XG5cdCk6IEZpZWxkU2lkZUVmZmVjdFByb3BlcnR5VHlwZVtdIHtcblx0XHRjb25zdCBtRmllbGRTaWRlRWZmZWN0c01hcCA9IG1FdmVudEZpZWxkUHJvcGVydGllcy5zaWRlRWZmZWN0c01hcCxcblx0XHRcdG9GaWVsZFByb21pc2VGb3JGaWVsZEdyb3VwID0gdGhpcy5fZ2VuZXJhdGVGaWVsZEdyb3VwUHJvbWlzZShtRXZlbnRGaWVsZFByb3BlcnRpZXMpLCAvLyBQcm9taXNlIG1hbmFnaW5nIEZpZWxkR3JvdXAgcmVxdWVzdHMgaWYgRmllbGQgcHJvbWlzZSBmYWlsc1xuXHRcdFx0bUZhaWxlZFNpZGVFZmZlY3RzTmFtZTogYW55ID0ge30sXG5cdFx0XHRhSW1tZWRpYXRlU2lkZUVmZmVjdHNQcm9wZXJ0aWVzOiBGaWVsZFNpZGVFZmZlY3RQcm9wZXJ0eVR5cGVbXSA9IFtdO1xuXG5cdFx0b0ZpZWxkR3JvdXBQcmVSZXF1aXNpdGUgPSBvRmllbGRHcm91cFByZVJlcXVpc2l0ZSB8fCBQcm9taXNlLnJlc29sdmUoKTtcblxuXHRcdE9iamVjdC5rZXlzKG1GaWVsZFNpZGVFZmZlY3RzTWFwKS5mb3JFYWNoKHNTaWRlRWZmZWN0TmFtZSA9PiB7XG5cdFx0XHRjb25zdCBvU2lkZUVmZmVjdFByb3BlcnR5OiBGaWVsZFNpZGVFZmZlY3RQcm9wZXJ0eVR5cGUgPSBtRmllbGRTaWRlRWZmZWN0c01hcFtzU2lkZUVmZmVjdE5hbWVdLFxuXHRcdFx0XHRzU2lkZUVmZmVjdENvbnRleHRQYXRoID0gb1NpZGVFZmZlY3RQcm9wZXJ0eS5jb250ZXh0LmdldFBhdGgoKSxcblx0XHRcdFx0YUZhaWxlZFNpZGVFZmZlY3RzID0gdGhpcy5fbUZhaWxlZFNpZGVFZmZlY3RzW3NTaWRlRWZmZWN0Q29udGV4dFBhdGhdO1xuXG5cdFx0XHQvLyBDaGVjayBpZiB0aGVyZSBpcyBhbnkgcHJldmlvdXNseSBmYWlsZWQgcmVxdWVzdCBmb3IgdGhpcyBjb250ZXh0XG5cdFx0XHRpZiAoYUZhaWxlZFNpZGVFZmZlY3RzKSB7XG5cdFx0XHRcdGRlbGV0ZSB0aGlzLl9tRmFpbGVkU2lkZUVmZmVjdHNbc1NpZGVFZmZlY3RDb250ZXh0UGF0aF07XG5cdFx0XHRcdG1GYWlsZWRTaWRlRWZmZWN0c05hbWVbc1NpZGVFZmZlY3RDb250ZXh0UGF0aF0gPSB7fTtcblx0XHRcdFx0YUZhaWxlZFNpZGVFZmZlY3RzLmZvckVhY2gobUZhaWxlZFNpZGVFZmZlY3RzID0+IHtcblx0XHRcdFx0XHRtRmFpbGVkU2lkZUVmZmVjdHNOYW1lW3NTaWRlRWZmZWN0Q29udGV4dFBhdGhdW21GYWlsZWRTaWRlRWZmZWN0cy5mdWxseVF1YWxpZmllZE5hbWVdID0gdHJ1ZTtcblx0XHRcdFx0XHRhSW1tZWRpYXRlU2lkZUVmZmVjdHNQcm9wZXJ0aWVzLnB1c2goe1xuXHRcdFx0XHRcdFx0bmFtZTogc1NpZGVFZmZlY3ROYW1lLFxuXHRcdFx0XHRcdFx0cHJldmlvdXNseUZhaWxlZDogdHJ1ZSxcblx0XHRcdFx0XHRcdHNpZGVFZmZlY3RzOiBtRmFpbGVkU2lkZUVmZmVjdHMsXG5cdFx0XHRcdFx0XHRjb250ZXh0OiBvU2lkZUVmZmVjdFByb3BlcnR5LmNvbnRleHRcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAob1NpZGVFZmZlY3RQcm9wZXJ0eS5pbW1lZGlhdGUpIHtcblx0XHRcdFx0Ly8gU2lkZUVmZmVjdHMgd2lsbCBiZSBleGVjdXRlZCBpbW1lZGlhdGVseSBhZnRlciBldmVudCBwcm9taXNlIHZhbGlkYXRpb25cblx0XHRcdFx0aWYgKCFtRmFpbGVkU2lkZUVmZmVjdHNOYW1lW3NTaWRlRWZmZWN0Q29udGV4dFBhdGhdPy5bb1NpZGVFZmZlY3RQcm9wZXJ0eS5zaWRlRWZmZWN0cy5mdWxseVF1YWxpZmllZE5hbWVdKSB7XG5cdFx0XHRcdFx0YUltbWVkaWF0ZVNpZGVFZmZlY3RzUHJvcGVydGllcy5wdXNoKHtcblx0XHRcdFx0XHRcdG5hbWU6IHNTaWRlRWZmZWN0TmFtZSxcblx0XHRcdFx0XHRcdHNpZGVFZmZlY3RzOiBvU2lkZUVmZmVjdFByb3BlcnR5LnNpZGVFZmZlY3RzLFxuXHRcdFx0XHRcdFx0Y29udGV4dDogb1NpZGVFZmZlY3RQcm9wZXJ0eS5jb250ZXh0XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIEFkZCBkZWZlcnJlZCBTaWRlRWZmZWN0cyB0byB0aGUgcmVsYXRlZCBkaWN0aW9uYXJ5XG5cdFx0XHRcdHRoaXMuX21GaWVsZEdyb3VwUXVldWVbc1NpZGVFZmZlY3ROYW1lXSA9IHRoaXMuX21GaWVsZEdyb3VwUXVldWVbc1NpZGVFZmZlY3ROYW1lXSB8fCB7fTtcblx0XHRcdFx0Y29uc3QgbVNpZGVFZmZlY3RDb250ZXh0UGF0aCA9IHRoaXMuX21GaWVsZEdyb3VwUXVldWVbc1NpZGVFZmZlY3ROYW1lXVtzU2lkZUVmZmVjdENvbnRleHRQYXRoXSB8fCB7XG5cdFx0XHRcdFx0cHJvbWlzZXM6IFtdLFxuXHRcdFx0XHRcdHNpZGVFZmZlY3RQcm9wZXJ0eTogb1NpZGVFZmZlY3RQcm9wZXJ0eSxcblx0XHRcdFx0XHRwcm9jZXNzU3RhcnRlZDogZmFsc2Vcblx0XHRcdFx0fTtcblx0XHRcdFx0bVNpZGVFZmZlY3RDb250ZXh0UGF0aC5wcm9taXNlcyA9IG1TaWRlRWZmZWN0Q29udGV4dFBhdGgucHJvbWlzZXMuY29uY2F0KFtcblx0XHRcdFx0XHRvRmllbGRQcm9taXNlRm9yRmllbGRHcm91cCxcblx0XHRcdFx0XHRvRmllbGRHcm91cFByZVJlcXVpc2l0ZSBhcyBQcm9taXNlPGFueT5cblx0XHRcdFx0XSk7XG5cdFx0XHRcdHRoaXMuX21GaWVsZEdyb3VwUXVldWVbc1NpZGVFZmZlY3ROYW1lXVtzU2lkZUVmZmVjdENvbnRleHRQYXRoXSA9IG1TaWRlRWZmZWN0Q29udGV4dFBhdGg7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIGFJbW1lZGlhdGVTaWRlRWZmZWN0c1Byb3BlcnRpZXM7XG5cdH1cblxuXHQvKipcblx0ICogU2F2ZXMgdGhlIHZhbGlkYXRpb24gc3RhdHVzIG9mIHByb3BlcnRpZXMgcmVsYXRlZCB0byBhIGZpZWxkIGNvbnRyb2wuXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBvRmllbGQgRmllbGRcblx0ICogQHBhcmFtIHtib29sZWFufSBiU3VjY2VzcyBTdGF0dXMgb2YgdGhlIGZpZWxkIHZhbGlkYXRpb25cblx0ICovXG5cdHByaXZhdGUgX3NhdmVGaWVsZFByb3BlcnRpZXNTdGF0dXMob0ZpZWxkOiBGaWVsZENvbnRyb2wsIGJTdWNjZXNzOiBib29sZWFuKTogdm9pZCB7XG5cdFx0Y29uc3Qgb0JpbmRpbmdDb250ZXh0ID0gb0ZpZWxkLmdldEJpbmRpbmdDb250ZXh0KCk7XG5cdFx0Y29uc3Qgc0VudGl0eVR5cGUgPSB0aGlzLl9vU2lkZUVmZmVjdHNTZXJ2aWNlLmdldEVudGl0eVR5cGVGcm9tQ29udGV4dChvQmluZGluZ0NvbnRleHQpO1xuXHRcdGNvbnN0IG1FbnRpdHlUeXBlID0gdGhpcy5fZ2V0RW50aXR5VHlwZUZyb21GUU4oc0VudGl0eVR5cGUpO1xuXHRcdGlmIChtRW50aXR5VHlwZSkge1xuXHRcdFx0Ly8gUmV0cmlldmVzIGFsbCBwcm9wZXJ0aWVzIHVzZWQgYnkgdGhlIGZpZWxkXG5cdFx0XHRjb25zdCBvRmllbGRCaW5kaW5nOiBhbnkgPSB0aGlzLl9nZXRCaW5kaW5nRm9yRmllbGQob0ZpZWxkKTtcblx0XHRcdGNvbnN0IGFGaWVsZFBhdGhzID0gb0ZpZWxkQmluZGluZy5pc0EoXCJzYXAudWkubW9kZWwuQ29tcG9zaXRlQmluZGluZ1wiKVxuXHRcdFx0XHQ/ICgob0ZpZWxkQmluZGluZyBhcyBhbnkpLmdldEJpbmRpbmdzKCkgfHwgW10pLm1hcCgob0JpbmRpbmc6IGFueSkgPT4gb0JpbmRpbmcuc1BhdGgpXG5cdFx0XHRcdDogW29GaWVsZEJpbmRpbmcuZ2V0UGF0aCgpXTtcblxuXHRcdFx0Ly8gU3RvcmVzIHN0YXR1cyBmb3IgYWxsIHByb3BlcnRpZXNcblx0XHRcdGFGaWVsZFBhdGhzLmZvckVhY2goKHNGaWVsZFBhdGg6IHN0cmluZykgPT4ge1xuXHRcdFx0XHRjb25zdCBzSWQgPSB0aGlzLl9nZW5lcmF0ZVN0YXR1c0luZGV4KG1FbnRpdHlUeXBlLCBzRmllbGRQYXRoLCBvQmluZGluZ0NvbnRleHQpO1xuXHRcdFx0XHRpZiAoc0lkKSB7XG5cdFx0XHRcdFx0dGhpcy5fYVNvdXJjZVByb3BlcnRpZXNGYWlsdXJlW2JTdWNjZXNzID8gXCJkZWxldGVcIiA6IFwiYWRkXCJdKHNJZCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIHByb3BlcnR5IGJpbmRpbmcgdG8gdGhlIHZhbHVlIG9mIHRoZSBmaWVsZC5cblx0ICpcblx0ICogQHBhcmFtIG9GaWVsZCBGaWVsZFxuXHQgKiBAcmV0dXJucyB7QmluZGluZ30gIEJpbmRpbmcgdG8gdGhlIHZhbHVlXG5cdCAqL1xuXHRwcml2YXRlIF9nZXRCaW5kaW5nRm9yRmllbGQob0ZpZWxkOiBGaWVsZENvbnRyb2wpOiBCaW5kaW5nIHtcblx0XHRsZXQgb0JpbmRpbmc6IEJpbmRpbmc7XG5cdFx0aWYgKG9GaWVsZC5pc0E8Q2hlY2tCb3g+KFwic2FwLm0uQ2hlY2tCb3hcIikpIHtcblx0XHRcdG9CaW5kaW5nID0gb0ZpZWxkLmdldEJpbmRpbmcoXCJzZWxlY3RlZFwiKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b0JpbmRpbmcgPSBvRmllbGQuZ2V0QmluZGluZyhcInZhbHVlXCIpO1xuXHRcdH1cblx0XHRyZXR1cm4gb0JpbmRpbmc7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgU2lkZUVmZmVjdHNDb250cm9sbGVyRXh0ZW5zaW9uO1xuIl19
|
|
710
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNpZGVFZmZlY3RzLnRzIl0sIm5hbWVzIjpbIlNpZGVFZmZlY3RzQ29udHJvbGxlckV4dGVuc2lvbiIsIlVJNUNsYXNzIiwiQ29udHJvbGxlckV4dGVuc2lvbk1ldGFkYXRhIiwiT3ZlcnJpZGUiLCJfb1ZpZXciLCJiYXNlIiwiZ2V0VmlldyIsIl9vQXBwQ29tcG9uZW50IiwiQ29tbW9uVXRpbHMiLCJnZXRBcHBDb21wb25lbnQiLCJfb1NpZGVFZmZlY3RzU2VydmljZSIsImdldFNpZGVFZmZlY3RzU2VydmljZSIsIl9tRmllbGRHcm91cFF1ZXVlIiwiX2FTb3VyY2VQcm9wZXJ0aWVzRmFpbHVyZSIsIlNldCIsIl9tRmFpbGVkU2lkZUVmZmVjdHMiLCJjbGVhciIsIm9FdmVudCIsIm9GaWVsZEdyb3VwUHJlUmVxdWlzaXRlIiwibUV2ZW50RmllbGRQcm9wZXJ0aWVzIiwiX2dldEZpZWxkUHJvcGVydGllcyIsImFJbW1lZGlhdGVTaWRlRWZmZWN0c1Byb3BlcnRpZXMiLCJfaW5pdGlhbGl6ZUZpZWxkU2lkZUVmZmVjdHMiLCJiSXNJbW1lZGlhdGVUcmlnZ2VyZWQiLCJfZ2VuZXJhdGVJbW1lZGlhdGVQcm9taXNlIiwidGhlbiIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJtU2lkZUVmZmVjdHNQcm9wZXJ0eSIsInJlcXVlc3RTaWRlRWZmZWN0cyIsInNpZGVFZmZlY3RzIiwiY29udGV4dCIsImNhdGNoIiwib0Vycm9yIiwiTG9nIiwiZGVidWciLCJmaWx0ZXIiLCJtSW1tZWRpYXRlU2lkZUVmZmVjdHMiLCJwcmV2aW91c2x5RmFpbGVkIiwiZm9yRWFjaCIsIl9hZGRGYWlsZWRTaWRlRWZmZWN0cyIsInRoYXQiLCJhRGVmZXJyZWRTaWRlRWZmZWN0cyIsImFGaWVsZEdyb3VwSWRzIiwiZ2V0UGFyYW1ldGVyIiwiZ2V0RmllbGRHcm91cFJlcXVlc3RQcm9taXNlIiwib0RlZmVycmVkU2lkZUVmZmVjdCIsImJJc1JlcXVlc3RzVHJpZ2dlcmVkIiwib1NpZGVFZmZlY3RQcm9wZXJ0eSIsInNpZGVFZmZlY3RQcm9wZXJ0eSIsIm9Db250ZXh0Iiwic0NvbnRleHRQYXRoIiwiZ2V0UGF0aCIsInNFbnRpdHlUeXBlIiwiZ2V0RW50aXR5VHlwZUZyb21Db250ZXh0IiwibUVudGl0eVR5cGUiLCJfZ2V0RW50aXR5VHlwZUZyb21GUU4iLCJwcm9taXNlcyIsIlNvdXJjZVByb3BlcnRpZXMiLCJldmVyeSIsInNvdXJjZVByb3BlcnR5IiwidHlwZSIsInNJZCIsIl9nZW5lcmF0ZVN0YXR1c0luZGV4IiwidmFsdWUiLCJoYXMiLCJmaW5hbGx5IiwibmFtZSIsInNGaWVsZEdyb3VwSWQiLCJzU2lkZUVmZmVjdE5hbWUiLCJyZXBsYWNlIiwibUNvbnRleHREZWZlcnJlZFNpZGVFZmZlY3RzIiwiT2JqZWN0Iiwia2V5cyIsInByb2Nlc3NTdGFydGVkIiwicHVzaCIsIm9TaWRlRWZmZWN0cyIsImFkZENvbnRyb2xTaWRlRWZmZWN0cyIsImZSZXNvbHZlciIsImZSZWplY3RvciIsIm9Qcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImFUYXJnZXRzIiwiVGFyZ2V0RW50aXRpZXMiLCJjb25jYXQiLCJUYXJnZXRQcm9wZXJ0aWVzIiwic1RyaWdnZXJBY3Rpb24iLCJUcmlnZ2VyQWN0aW9uIiwiZXhlY3V0ZUFjdGlvbiIsIm9Db250cm9sIiwic0NvbnRyb2xJZCIsImlzQSIsImdldElkIiwicmVtb3ZlQ29udHJvbFNpZGVFZmZlY3RzIiwiYklzTm90QWxyZWFkeUxpc3RlZCIsIm1GYWlsZWRTaWRlRWZmZWN0cyIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsImJQcm9taXNlU3VjY2VzcyIsInByb21pc2UiLCJfc2F2ZUZpZWxkUHJvcGVydGllc1N0YXR1cyIsImZpZWxkIiwib0ZpZWxkIiwic0ZpZWxkSGVscGVySWQiLCJnZXRGaWVsZEhlbHAiLCJvRmlsdGVySGVscCIsInNhcCIsInVpIiwiZ2V0Q29yZSIsImJ5SWQiLCJnZXRPdXRQYXJhbWV0ZXJzIiwib091dFBhcmFtZXRlciIsIm9CaW5kaW5nIiwiZ2V0QmluZGluZyIsInJlcXVlc3RWYWx1ZSIsInNQcm9wZXJ0eVBhdGgiLCJtUHJvcGVydHkiLCJyZXNvbHZlUGF0aCIsIl90eXBlIiwiam9pbiIsInVuZGVmaW5lZCIsIm9Tb3VyY2VGaWVsZCIsInNTaWRlRWZmZWN0RW50aXR5VHlwZSIsIm9CaW5kaW5nQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0Iiwib0NvbnRleHRGb3JTaWRlRWZmZWN0cyIsImdldENvbnRleHQiLCJzRnVsbHlRdWFsaWZpZWROYW1lIiwiZ2V0Q29udmVydGVkTWV0YU1vZGVsIiwiZW50aXR5VHlwZXMiLCJmaW5kIiwib0VudGl0eVR5cGUiLCJGaWVsZFJ1bnRpbWUiLCJnZXRGaWVsZFN0YXRlT25DaGFuZ2UiLCJzdGF0ZSIsInZhbGlkaXR5IiwiZ2V0U291cmNlIiwiX2dldEZpZWxkUHJvbWlzZSIsInNpZGVFZmZlY3RzTWFwIiwiX2dldEZpZWxkU2lkZUVmZmVjdHNNYXAiLCJtU2lkZUVmZmVjdHNNYXAiLCJnZXRGaWVsZEdyb3VwSWRzIiwic1ZpZXdFbnRpdHlTZXRTZXROYW1lIiwiZ2V0Vmlld0RhdGEiLCJlbnRpdHlTZXQiLCJvVmlld0VudGl0eVNldCIsImVudGl0eVNldHMiLCJvRW50aXR5U2V0IiwiYklzSW1tZWRpYXRlIiwiaW5kZXhPZiIsInNOYW1lIiwiYVNpZGVFZmZlY3RQYXJ0cyIsInNwbGl0Iiwic1NpZGVFZmZlY3RQYXRoIiwibGVuZ3RoIiwib1NpZGVFZmZlY3QiLCJnZXRPRGF0YUVudGl0eVNpZGVFZmZlY3RzIiwiX2dldENvbnRleHRGb3JTaWRlRWZmZWN0cyIsImltbWVkaWF0ZSIsInNWaWV3RW50aXR5VHlwZSIsImVudGl0eVR5cGUiLCJtRmllbGRQYXRoIiwiZ2V0QWdncmVnYXRpb24iLCJvQ3VzdG9tRGF0YSIsImdldEtleSIsInNGaWVsZFBhdGgiLCJnZXRWYWx1ZSIsIm1Db250cm9sRW50aXR5VHlwZSIsImdldENvbnRyb2xFbnRpdHlTaWRlRWZmZWN0cyIsInNDb250cm9sTmFtZSIsIm9Db250cm9sU2lkZUVmZmVjdHMiLCJpbmNsdWRlcyIsIm1GaWVsZFNpZGVFZmZlY3RzTWFwIiwib0ZpZWxkUHJvbWlzZUZvckZpZWxkR3JvdXAiLCJfZ2VuZXJhdGVGaWVsZEdyb3VwUHJvbWlzZSIsIm1GYWlsZWRTaWRlRWZmZWN0c05hbWUiLCJzU2lkZUVmZmVjdENvbnRleHRQYXRoIiwiYUZhaWxlZFNpZGVFZmZlY3RzIiwibVNpZGVFZmZlY3RDb250ZXh0UGF0aCIsImJTdWNjZXNzIiwib0ZpZWxkQmluZGluZyIsIl9nZXRCaW5kaW5nRm9yRmllbGQiLCJhRmllbGRQYXRocyIsImdldEJpbmRpbmdzIiwic1BhdGgiLCJzQmluZGluZ05hbWUiLCJDb250cm9sbGVyRXh0ZW5zaW9uIiwiUHVibGljIiwiRmluYWwiLCJQcml2YXRlIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01Bb0RNQSw4QixXQURMQyxRQUFRLENBQUMsOENBQUQsRUFBaURDLDJCQUFqRCxDLFVBU1BDLFFBQVEsRTs7Ozs7Ozs7Ozs7OzthQUFULGtCQUNnQjtBQUNmLGFBQUtDLE1BQUwsR0FBZSxJQUFELENBQWNDLElBQWQsQ0FBbUJDLE9BQW5CLEVBQWQ7QUFDQSxhQUFLQyxjQUFMLEdBQXNCQyxXQUFXLENBQUNDLGVBQVosQ0FBNEIsS0FBS0wsTUFBakMsQ0FBdEI7QUFDQSxhQUFLTSxvQkFBTCxHQUE2QixLQUFLSCxjQUFOLENBQTZCSSxxQkFBN0IsRUFBNUI7QUFDQSxhQUFLQyxpQkFBTCxHQUF5QixFQUF6QjtBQUNBLGFBQUtDLHlCQUFMLEdBQWlDLElBQUlDLEdBQUosRUFBakM7QUFDQSxhQUFLQyxtQkFBTCxHQUEyQixFQUEzQjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O2FBQ0MsaUNBRXFDO0FBQ3BDLGFBQUtGLHlCQUFMLENBQStCRyxLQUEvQjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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LGVBQU9uRixNQUFNLENBQUNXLFVBQVAsQ0FBa0J3RSxZQUFsQixDQUFQO0FBQ0E7Ozs7SUE1bkIyQ0MsbUIsNk5Bd0IzQ0MsTSxFQUNBQyxLLGlMQVlBRCxNLEVBQ0FDLEssNktBaUJBRCxNLEVBQ0FDLEssd0tBNkNBRCxNLEVBQ0FDLEssNEtBa0ZBRCxNLEVBQ0FDLEssNktBV0FELE0sRUFDQUMsSywwS0FjQUQsTSxFQUNBQyxLLDJLQWdDQUQsTSxFQUNBQyxLLDhLQWtCQUMsTyxFQUNBRCxLLCtLQThHQUMsTyxFQUNBRCxLO1NBd1FhN0wsOEIiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRyb2xsZXJFeHRlbnNpb24gfSBmcm9tIFwic2FwL3VpL2NvcmUvbXZjXCI7XG5pbXBvcnQgeyBCaW5kaW5nLCBDb250ZXh0IH0gZnJvbSBcInNhcC91aS9tb2RlbFwiO1xuaW1wb3J0IHsgQ2hlY2tCb3ggfSBmcm9tIFwic2FwL21cIjtcbmltcG9ydCB7IEZpbGVVcGxvYWRlciB9IGZyb20gXCJzYXAvdWkvdW5pZmllZFwiO1xuaW1wb3J0IHsgQ29udHJvbGxlckV4dGVuc2lvbk1ldGFkYXRhIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zXCI7XG5pbXBvcnQgeyBVSTVDbGFzcywgT3ZlcnJpZGUsIFB1YmxpYywgRmluYWwsIFByaXZhdGUgfSBmcm9tIFwiLi4vaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IEFwcENvbXBvbmVudCwgQ29tbW9uVXRpbHMgfSBmcm9tIFwic2FwL2ZlL2NvcmVcIjtcbmltcG9ydCB7IENvbnRyb2wgfSBmcm9tIFwic2FwL3VpL2NvcmVcIjtcbmltcG9ydCB7XG5cdFNpZGVFZmZlY3RzVHlwZSxcblx0Q29udHJvbFNpZGVFZmZlY3RzVHlwZSxcblx0T0RhdGFTaWRlRWZmZWN0c1R5cGUsXG5cdENvbnRyb2xTaWRlRWZmZWN0c0VudGl0eURpY3Rpb25hcnlcbn0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1NpZGVFZmZlY3RzU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB7IEZpZWxkUnVudGltZSB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpZWxkXCI7XG5pbXBvcnQgeyBDb252ZXJ0ZXJPdXRwdXQsIFByb3BlcnR5UGF0aCwgRW50aXR5VHlwZSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHsgTG9nIH0gZnJvbSBcInNhcC9iYXNlXCI7XG5cbnR5cGUgRmllbGRDb250cm9sID0gQ29udHJvbCAmIHtcblx0Z2V0RmllbGRIZWxwKCk6IHN0cmluZztcblx0Z2V0RmllbGRHcm91cElkcygpOiBzdHJpbmdbXTtcbn07XG5cbnR5cGUgRmllbGRFdmVudFByb3BlcnR5VHlwZSA9IHtcblx0cHJvbWlzZTogUHJvbWlzZTxhbnk+O1xuXHRmaWVsZDogRmllbGRDb250cm9sO1xuXHRzaWRlRWZmZWN0c01hcDogRmllbGRTaWRlRWZmZWN0RGljdGlvbmFyeTtcbn07XG5cbnR5cGUgRmllbGRTaWRlRWZmZWN0UHJvcGVydHlUeXBlID0ge1xuXHRuYW1lOiBzdHJpbmc7XG5cdGltbWVkaWF0ZT86IGJvb2xlYW47XG5cdGNvbnRleHQ6IENvbnRleHQ8YW55Pjtcblx0c2lkZUVmZmVjdHM6IFNpZGVFZmZlY3RzVHlwZTtcblx0cHJldmlvdXNseUZhaWxlZD86IGJvb2xlYW47XG59O1xuXG50eXBlIEZpZWxkU2lkZUVmZmVjdERpY3Rpb25hcnkgPSBSZWNvcmQ8c3RyaW5nLCBGaWVsZFNpZGVFZmZlY3RQcm9wZXJ0eVR5cGU+O1xuXG50eXBlIEZhaWxlZFNpZGVFZmZlY3REaWN0aW9uYXJ5ID0gUmVjb3JkPHN0cmluZywgU2lkZUVmZmVjdHNUeXBlW10+O1xuXG50eXBlIEZpZWxkR3JvdXBTaWRlRWZmZWN0VHlwZSA9IHtcblx0cHJvbWlzZXM6IFByb21pc2U8YW55PltdO1xuXHRzaWRlRWZmZWN0UHJvcGVydHk6IEZpZWxkU2lkZUVmZmVjdFByb3BlcnR5VHlwZTtcblx0cHJvY2Vzc1N0YXJ0ZWQ/OiBib29sZWFuO1xufTtcblxudHlwZSBGaWVsZEdyb3VwUXVldWVNYXBUeXBlID0ge1xuXHRbc2lkZUVmZmVjdE5hbWU6IHN0cmluZ106IHtcblx0XHRbY29udGV4dFBhdGg6IHN0cmluZ106IEZpZWxkR3JvdXBTaWRlRWZmZWN0VHlwZTtcblx0fTtcbn07XG5cbkBVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLlNpZGVFZmZlY3RzXCIsIENvbnRyb2xsZXJFeHRlbnNpb25NZXRhZGF0YSlcbmNsYXNzIFNpZGVFZmZlY3RzQ29udHJvbGxlckV4dGVuc2lvbiBleHRlbmRzIENvbnRyb2xsZXJFeHRlbnNpb24ge1xuXHRwcml2YXRlIF9vVmlldzogYW55O1xuXHRwcml2YXRlIF9vQXBwQ29tcG9uZW50ITogQXBwQ29tcG9uZW50O1xuXHRwcml2YXRlIF9tRmllbGRHcm91cFF1ZXVlITogRmllbGRHcm91cFF1ZXVlTWFwVHlwZTtcblx0cHJpdmF0ZSBfYVNvdXJjZVByb3BlcnRpZXNGYWlsdXJlITogU2V0PHN0cmluZz47XG5cdHByaXZhdGUgX29TaWRlRWZmZWN0c1NlcnZpY2UhOiBhbnk7XG5cdHByaXZhdGUgX21GYWlsZWRTaWRlRWZmZWN0cyE6IEZhaWxlZFNpZGVFZmZlY3REaWN0aW9uYXJ5O1xuXG5cdEBPdmVycmlkZSgpXG5cdHB1YmxpYyBvbkluaXQoKSB7XG5cdFx0dGhpcy5fb1ZpZXcgPSAodGhpcyBhcyBhbnkpLmJhc2UuZ2V0VmlldygpO1xuXHRcdHRoaXMuX29BcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodGhpcy5fb1ZpZXcpO1xuXHRcdHRoaXMuX29TaWRlRWZmZWN0c1NlcnZpY2UgPSAodGhpcy5fb0FwcENvbXBvbmVudCBhcyBhbnkpLmdldFNpZGVFZmZlY3RzU2VydmljZSgpO1xuXHRcdHRoaXMuX21GaWVsZEdyb3VwUXVldWUgPSB7fTtcblx0XHR0aGlzLl9hU291cmNlUHJvcGVydGllc0ZhaWx1cmUgPSBuZXcgU2V0KCk7XG5cdFx0dGhpcy5fbUZhaWxlZFNpZGVFZmZlY3RzID0ge307XG5cdH1cblxuXHQvKipcblx0ICogQ2xlYXIgcmVjb3JkZWQgdmFsaWRhdGlvbiBzdGF0dXMgZm9yIGFsbCBwcm9wZXJ0aWVzLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgY2xlYXJQcm9wZXJ0aWVzU3RhdHVzXG5cdCAqL1xuXHRAUHVibGljXG5cdEBGaW5hbFxuXHRwdWJsaWMgY2xlYXJQcm9wZXJ0aWVzU3RhdHVzKCk6IHZvaWQge1xuXHRcdHRoaXMuX2FTb3VyY2VQcm9wZXJ0aWVzRmFpbHVyZS5jbGVhcigpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgZmFpbGVkIFNpZGVFZmZlY3RzLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgZ2V0UmVnaXN0ZXJlZEZhaWxlZFJlcXVlc3RzXG5cdCAqIEByZXR1cm5zIHtvYmplY3R9IFJlZ2lzdGVyZWQgU2lkZUVmZmVjdHMgcmVxdWVzdHMgdGhhdCBoYXZlIGZhaWxlZFxuXHQgKi9cblx0QFB1YmxpY1xuXHRARmluYWxcblx0cHVibGljIGdldFJlZ2lzdGVyZWRGYWlsZWRSZXF1ZXN0cygpOiBGYWlsZWRTaWRlRWZmZWN0RGljdGlvbmFyeSB7XG5cdFx0cmV0dXJuIHRoaXMuX21GYWlsZWRTaWRlRWZmZWN0cztcblx0fVxuXG5cdC8qKlxuXHQgKiBNYW5hZ2VzIHRoZSB3b3JrZmxvdyBmb3IgU2lkZUVmZmVjdHMgd2l0aCByZWxhdGVkIGNoYW5nZXMgdG8gYSBmaWVsZFxuXHQgKiBUaGUgZm9sbG93aW5nIHNjZW5hcmlvcyBhcmUgbWFuYWdlZDpcblx0ICogIC0gRXhlY3V0ZTogdHJpZ2dlcnMgaW1tZWRpYXRlIFNpZGVFZmZlY3RzIHJlcXVlc3RzIGlmIHRoZSBwcm9taXNlIGZvciB0aGUgZmllbGQgZXZlbnQgaXMgZnVsZmlsbGVkXG5cdCAqICAtIFJlZ2lzdGVyOiBjYWNoZXMgZGVmZXJyZWQgU2lkZUVmZmVjdHMgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIHdoZW4gdGhlIEZpZWxkR3JvdXAgaXMgdW5mb2N1c2VkLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgaGFuZGxlRmllbGRDaGFuZ2Vcblx0ICogQHBhcmFtIHtvYmplY3R9IG9FdmVudCBTQVBVSTUgZXZlbnQgdGhhdCBjb21lcyBmcm9tIGEgZmllbGQgY2hhbmdlXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBvRmllbGRHcm91cFByZVJlcXVpc2l0ZSBQcm9taXNlIHRvIGJlIGZ1bGZpbGxlZCBiZWZvcmUgZXhlY3V0aW5nIGRlZmVycmVkIFNpZGVFZmZlY3RzXG5cdCAqIEByZXR1cm5zIHtvYmplY3R9ICBQcm9taXNlIG9uIFNpZGVFZmZlY3RzIHJlcXVlc3Qocylcblx0ICovXG5cdEBQdWJsaWNcblx0QEZpbmFsXG5cdHB1YmxpYyBoYW5kbGVGaWVsZENoYW5nZShvRXZlbnQ6IFVJNUV2ZW50LCBvRmllbGRHcm91cFByZVJlcXVpc2l0ZT86IFByb21pc2U8YW55Pik6IFByb21pc2U8YW55PiB7XG5cdFx0Y29uc3QgbUV2ZW50RmllbGRQcm9wZXJ0aWVzID0gdGhpcy5fZ2V0RmllbGRQcm9wZXJ0aWVzKG9FdmVudCksXG5cdFx0XHRhSW1tZWRpYXRlU2lkZUVmZmVjdHNQcm9wZXJ0aWVzOiBGaWVsZFNpZGVFZmZlY3RQcm9wZXJ0eVR5cGVbXSA9IHRoaXMuX2luaXRpYWxpemVGaWVsZFNpZGVFZmZlY3RzKFxuXHRcdFx0XHRtRXZlbnRGaWVsZFByb3BlcnRpZXMsXG5cdFx0XHRcdG9GaWVsZEdyb3VwUHJlUmVxdWlzaXRlXG5cdFx0XHQpO1xuXG5cdFx0bGV0IGJJc0ltbWVkaWF0ZVRyaWdnZXJlZCA9IGZhbHNlO1xuXG5cdFx0cmV0dXJuIHRoaXMuX2dlbmVyYXRlSW1tZWRpYXRlUHJvbWlzZShtRXZlbnRGaWVsZFByb3BlcnRpZXMpXG5cdFx0XHQudGhlbigoKSA9PiB7XG5cdFx0XHRcdGJJc0ltbWVkaWF0ZVRyaWdnZXJlZCA9IHRydWU7XG5cdFx0XHRcdHJldHVybiBQcm9taXNlLmFsbChcblx0XHRcdFx0XHRhSW1tZWRpYXRlU2lkZUVmZmVjdHNQcm9wZXJ0aWVzLm1hcChtU2lkZUVmZmVjdHNQcm9wZXJ0eSA9PiB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5yZXF1ZXN0U2lkZUVmZmVjdHMobVNpZGVFZmZlY3RzUHJvcGVydHkuc2lkZUVmZmVjdHMsIG1TaWRlRWZmZWN0c1Byb3BlcnR5LmNvbnRleHQpO1xuXHRcdFx0XHRcdH0pIHx8IFtdXG5cdFx0XHRcdCk7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKG9FcnJvciA9PiB7XG5cdFx0XHRcdGlmIChiSXNJbW1lZGlhdGVUcmlnZ2VyZWQpIHtcblx0XHRcdFx0XHRMb2cuZGVidWcoXCJFcnJvciB3aGlsZSBwcm9jZXNzaW5nIEZpZWxkIFNpZGVFZmZlY3RzXCIsIG9FcnJvcik7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0LyoqXG5cdFx0XHRcdFx0ICogU2lkZUVmZmVjdHMgaGF2ZSBub3QgYmVlbiB0cmlnZ2VyZWQgc2luY2UgcHJlUmVxdWlzaXRlIHZhbGlkYXRpb24gZmFpbHMgc28gd2UgbmVlZFxuXHRcdFx0XHRcdCAqIHRvIGtlZXAgcHJldmlvdXNseSBmYWlsZWQgcmVxdWVzdCBhcyBGYWlsZWQgcmVxdWVzdCAodG8gYmUgcmV0cmlnZ2VyIG9uIG5leHQgY2hhbmdlKVxuXHRcdFx0XHRcdCAqL1xuXG5cdFx0XHRcdFx0YUltbWVkaWF0ZVNpZGVFZmZlY3RzUHJvcGVydGllc1xuXHRcdFx0XHRcdFx0LmZpbHRlcihtSW1tZWRpYXRlU2lkZUVmZmVjdHMgPT4gbUltbWVkaWF0ZVNpZGVFZmZlY3RzLnByZXZpb3VzbHlGYWlsZWQgPT09IHRydWUpXG5cdFx0XHRcdFx0XHQuZm9yRWFjaChtSW1tZWRpYXRlU2lkZUVmZmVjdHMgPT5cblx0XHRcdFx0XHRcdFx0dGhpcy5fYWRkRmFpbGVkU2lkZUVmZmVjdHMobUltbWVkaWF0ZVNpZGVFZmZlY3RzLnNpZGVFZmZlY3RzLCBtSW1tZWRpYXRlU2lkZUVmZmVjdHMuY29udGV4dClcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1hbmFnZXMgU2lkZUVmZmVjdHMgd2l0aCBhIHJlbGF0ZWQgJ2ZvY3VzIG91dCcgdG8gYSBmaWVsZCBncm91cC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIGhhbmRsZUZpZWxkR3JvdXBDaGFuZ2Vcblx0ICogQHBhcmFtIHtvYmplY3R9IG9FdmVudCBTQVBVSTUgRXZlbnRcblx0ICogQHJldHVybnMge29iamVjdH0gUHJvbWlzZSBvbiBTaWRlRWZmZWN0cyByZXF1ZXN0KHMpXG5cdCAqL1xuXHRAUHVibGljXG5cdEBGaW5hbFxuXHRwdWJsaWMgaGFuZGxlRmllbGRHcm91cENoYW5nZShvRXZlbnQ6IFVJNUV2ZW50KTogUHJvbWlzZTxhbnk+IHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXNcblx0XHRjb25zdCB0aGF0ID0gdGhpcyxcblx0XHRcdGFEZWZlcnJlZFNpZGVFZmZlY3RzOiBGaWVsZEdyb3VwU2lkZUVmZmVjdFR5cGVbXSA9IFtdLFxuXHRcdFx0YUZpZWxkR3JvdXBJZHM6IHN0cmluZ1tdID0gb0V2ZW50LmdldFBhcmFtZXRlcihcImZpZWxkR3JvdXBJZHNcIik7XG5cblx0XHRjb25zdCBnZXRGaWVsZEdyb3VwUmVxdWVzdFByb21pc2UgPSBmdW5jdGlvbihvRGVmZXJyZWRTaWRlRWZmZWN0OiBGaWVsZEdyb3VwU2lkZUVmZmVjdFR5cGUpIHtcblx0XHRcdGxldCBiSXNSZXF1ZXN0c1RyaWdnZXJlZCA9IGZhbHNlO1xuXHRcdFx0Y29uc3Qgb1NpZGVFZmZlY3RQcm9wZXJ0eSA9IG9EZWZlcnJlZFNpZGVFZmZlY3Quc2lkZUVmZmVjdFByb3BlcnR5O1xuXHRcdFx0Y29uc3Qgb0NvbnRleHQgPSBvU2lkZUVmZmVjdFByb3BlcnR5LmNvbnRleHQ7XG5cdFx0XHRjb25zdCBzQ29udGV4dFBhdGggPSBvQ29udGV4dC5nZXRQYXRoKCk7XG5cdFx0XHRjb25zdCBzRW50aXR5VHlwZSA9IHRoYXQuX29TaWRlRWZmZWN0c1NlcnZpY2UuZ2V0RW50aXR5VHlwZUZyb21Db250ZXh0KG9Db250ZXh0KTtcblx0XHRcdGNvbnN0IG1FbnRpdHlUeXBlID0gdGhhdC5fZ2V0RW50aXR5VHlwZUZyb21GUU4oc0VudGl0eVR5cGUpO1xuXG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5hbGwob0RlZmVycmVkU2lkZUVmZmVjdC5wcm9taXNlcylcblx0XHRcdFx0LnRoZW4oZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0YklzUmVxdWVzdHNUcmlnZ2VyZWQgPSB0cnVlO1xuXG5cdFx0XHRcdFx0Ly9EZWZlcnJlZCBTaWRlRWZmZWN0cyBhcmUgZXhlY3V0ZWQgb25seSBpZiBhbGwgc291cmNlUHJvcGVydGllcyBoYXZlIG5vIHJlZ2lzdGVyZWQgZmFpbHVyZS5cblx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRtRW50aXR5VHlwZSAmJlxuXHRcdFx0XHRcdFx0KG9TaWRlRWZmZWN0UHJvcGVydHkuc2lkZUVmZmVjdHMuU291cmNlUHJvcGVydGllcyBhcyBQcm9wZXJ0eVBhdGhbXSkuZXZlcnkoc291cmNlUHJvcGVydHkgPT4ge1xuXHRcdFx0XHRcdFx0XHRpZiAoc291cmNlUHJvcGVydHkudHlwZSA9PT0gXCJQcm9wZXJ0eVBhdGhcIikge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IHNJZCA9IHRoYXQuX2dlbmVyYXRlU3RhdHVzSW5kZXgobUVudGl0eVR5cGUsIHNvdXJjZVByb3BlcnR5LnZhbHVlLCBvQ29udGV4dCk7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHNJZCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuICF0aGF0Ll9hU291cmNlUHJvcGVydGllc0ZhaWx1cmUuaGFzKHNJZCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiB0aGF0LnJlcXVlc3RTaWRlRWZmZWN0cyhvU2lkZUVmZmVjdFByb3BlcnR5LnNpZGVFZmZlY3RzLCBvU2lkZUVmZmVjdFByb3BlcnR5LmNvbnRleHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKG9FcnJvciA9PiB7XG5cdFx0XHRcdFx0aWYgKGJJc1JlcXVlc3RzVHJpZ2dlcmVkKSB7XG5cdFx0XHRcdFx0XHRMb2cuZGVidWcoXCJFcnJvciB3aGlsZSBwcm9jZXNzaW5nIEZpZWxkR3JvdXAgU2lkZUVmZmVjdHMgb24gY29udGV4dCBcIiArIHNDb250ZXh0UGF0aCwgb0Vycm9yKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5maW5hbGx5KCgpID0+IHtcblx0XHRcdFx0XHRkZWxldGUgdGhhdC5fbUZpZWxkR3JvdXBRdWV1ZVtvU2lkZUVmZmVjdFByb3BlcnR5Lm5hbWVdW3NDb250ZXh0UGF0aF07XG5cdFx0XHRcdH0pO1xuXHRcdH07XG5cblx0XHRhRmllbGRHcm91cElkcy5mb3JFYWNoKHNGaWVsZEdyb3VwSWQgPT4ge1xuXHRcdFx0LyoqXG5cdFx0XHQgKiBzdHJpbmcgXCIkJEltbWVkaWF0ZVJlcXVlc3RcIiBpcyBhZGRlZCB0byB0aGUgU2lkZUVmZmVjdHMgbmFtZSBkdXJpbmcgdGVtcGxhdGluZyB0byBrbm93XG5cdFx0XHQgKiBpZiB0aGlzIFNpZGVFZmZlY3RzIG11c3QgYmUgaW1tZWRpYXRlbHkgZXhlY3V0ZWQgcmVxdWVzdGVkIChvbiBmaWVsZCBjaGFuZ2UpIG9yIG11c3Rcblx0XHRcdCAqIGJlIGRlZmVycmVkIChvbiBmaWVsZCBncm91cCBmb2N1cyBvdXQpXG5cdFx0XHQgKlxuXHRcdFx0ICovXG5cdFx0XHRjb25zdCBzU2lkZUVmZmVjdE5hbWU6IHN0cmluZyA9IHNGaWVsZEdyb3VwSWQucmVwbGFjZShcIiQkSW1tZWRpYXRlUmVxdWVzdFwiLCBcIlwiKTtcblx0XHRcdGNvbnN0IG1Db250ZXh0RGVmZXJyZWRTaWRlRWZmZWN0cyA9IHRoYXQuX21GaWVsZEdyb3VwUXVldWU/LltzU2lkZUVmZmVjdE5hbWVdO1xuXHRcdFx0aWYgKG1Db250ZXh0RGVmZXJyZWRTaWRlRWZmZWN0cykge1xuXHRcdFx0XHRPYmplY3Qua2V5cyhtQ29udGV4dERlZmVycmVkU2lkZUVmZmVjdHMpLmZvckVhY2goc0NvbnRleHRQYXRoID0+IHtcblx0XHRcdFx0XHRjb25zdCBvRGVmZXJyZWRTaWRlRWZmZWN0ID0gbUNvbnRleHREZWZlcnJlZFNpZGVFZmZlY3RzW3NDb250ZXh0UGF0aF07XG5cdFx0XHRcdFx0aWYgKCFvRGVmZXJyZWRTaWRlRWZmZWN0LnByb2Nlc3NTdGFydGVkKSB7XG5cdFx0XHRcdFx0XHRvRGVmZXJyZWRTaWRlRWZmZWN0LnByb2Nlc3NTdGFydGVkID0gdHJ1ZTtcblx0XHRcdFx0XHRcdGFEZWZlcnJlZFNpZGVFZmZlY3RzLnB1c2gob0RlZmVycmVkU2lkZUVmZmVjdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdHJldHVybiBQcm9taXNlLmFsbChcblx0XHRcdGFEZWZlcnJlZFNpZGVFZmZlY3RzLm1hcChvRGVmZXJyZWRTaWRlRWZmZWN0ID0+IHtcblx0XHRcdFx0cmV0dXJuIGdldEZpZWxkR3JvdXBSZXF1ZXN0UHJvbWlzZShvRGVmZXJyZWRTaWRlRWZmZWN0KTtcblx0XHRcdH0pXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGRzIGEgU2lkZUVmZmVjdHMgY29udHJvbC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIGFkZENvbnRyb2xTaWRlRWZmZWN0c1xuXHQgKiBAcGFyYW0ge3N0cmluZ30gc0VudGl0eVR5cGUgTmFtZSBvZiB0aGUgZW50aXR5IHdoZXJlIHRoZSBTaWRlRWZmZWN0cyBjb250cm9sIHdpbGwgYmUgcmVnaXN0ZXJlZFxuXHQgKiBAcGFyYW0ge29iamVjdH0gb1NpZGVFZmZlY3RzIFNpZGVFZmZlY3RzIHRvIHJlZ2lzdGVyLiBFbnN1cmUgdGhlIHNvdXJjZUNvbnRyb2xJZCBtYXRjaGVzIHRoZSBhc3NvY2lhdGVkIFNBUFVJNSBjb250cm9sIElELlxuXHQgKlxuXHQgKi9cblx0QFB1YmxpY1xuXHRARmluYWxcblx0cHVibGljIGFkZENvbnRyb2xTaWRlRWZmZWN0cyhzRW50aXR5VHlwZTogc3RyaW5nLCBvU2lkZUVmZmVjdHM6IE9taXQ8Q29udHJvbFNpZGVFZmZlY3RzVHlwZSwgXCJmdWxseVF1YWxpZmllZE5hbWVcIj4pOiB2b2lkIHtcblx0XHR0aGlzLl9vU2lkZUVmZmVjdHNTZXJ2aWNlLmFkZENvbnRyb2xTaWRlRWZmZWN0cyhzRW50aXR5VHlwZSwgb1NpZGVFZmZlY3RzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW1vdmVzIHRoZSBxdWV1ZSBjb250YWluaW5nIHRoZSBmYWlsZWQgU2lkZUVmZmVjdHMuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSByZW1vdmVGYWlsZWRTaWRlRWZmZWN0c1xuXHQgKi9cblx0QFB1YmxpY1xuXHRARmluYWxcblx0cHVibGljIHJlbW92ZUZhaWxlZFNpZGVFZmZlY3RzKCk6IHZvaWQge1xuXHRcdHRoaXMuX21GYWlsZWRTaWRlRWZmZWN0cyA9IHt9O1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlcXVlc3QgU2lkZUVmZmVjdHMgb24gYSBzcGVjaWZpYyBjb250ZXh0LlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgcmVxdWVzdFNpZGVFZmZlY3RzXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBvU2lkZUVmZmVjdHMgU2lkZUVmZmVjdHMgdG8gYmUgZXhlY3V0ZWRcblx0ICogQHBhcmFtIHtvYmplY3R9IG9Db250ZXh0IENvbnRleHQgd2hlcmUgU2lkZUVmZmVjdHMgbmVlZCB0byBiZSBleGVjdXRlZFxuXHQgKiBAcmV0dXJucyB7b2JqZWN0fSBTaWRlRWZmZWN0cyByZXF1ZXN0IG9uIFNBUFVJNSBjb250ZXh0XG5cdCAqL1xuXHRAUHVibGljXG5cdEBGaW5hbFxuXHRwdWJsaWMgcmVxdWVzdFNpZGVFZmZlY3RzKG9TaWRlRWZmZWN0czogU2lkZUVmZmVjdHNUeXBlLCBvQ29udGV4dDogQ29udGV4dDxhbnk+KTogUHJvbWlzZTxhbnk+IHtcblx0XHRsZXQgZlJlc29sdmVyOiBhbnksIGZSZWplY3RvcjogYW55O1xuXHRcdGNvbnN0IG9Qcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG5cdFx0XHRmUmVzb2x2ZXIgPSByZXNvbHZlO1xuXHRcdFx0ZlJlamVjdG9yID0gcmVqZWN0O1xuXHRcdH0pO1xuXHRcdGNvbnN0IGFUYXJnZXRzOiBhbnlbXSA9ICgob1NpZGVFZmZlY3RzLlRhcmdldEVudGl0aWVzIGFzIGFueVtdKSB8fCBbXSkuY29uY2F0KChvU2lkZUVmZmVjdHMuVGFyZ2V0UHJvcGVydGllcyBhcyBhbnlbXSkgfHwgW10pLFxuXHRcdFx0c1RyaWdnZXJBY3Rpb246IFN0cmluZyB8IHVuZGVmaW5lZCA9IChvU2lkZUVmZmVjdHMgYXMgT0RhdGFTaWRlRWZmZWN0c1R5cGUpLlRyaWdnZXJBY3Rpb247XG5cblx0XHRpZiAoc1RyaWdnZXJBY3Rpb24pIHtcblx0XHRcdHRoaXMuX29TaWRlRWZmZWN0c1NlcnZpY2UuZXhlY3V0ZUFjdGlvbihzVHJpZ2dlckFjdGlvbiwgb0NvbnRleHQpO1xuXHRcdH1cblxuXHRcdHRoaXMuX29TaWRlRWZmZWN0c1NlcnZpY2Vcblx0XHRcdC5yZXF1ZXN0U2lkZUVmZmVjdHMoYVRhcmdldHMsIG9Db250ZXh0KVxuXHRcdFx0LnRoZW4oKCkgPT4gZlJlc29sdmVyKCkpXG5cdFx0XHQuY2F0Y2goKG9FcnJvcjogYW55KSA9PiB7XG5cdFx0XHRcdHRoaXMuX2FkZEZhaWxlZFNpZGVFZmZlY3RzKG9TaWRlRWZmZWN0cywgb0NvbnRleHQpO1xuXHRcdFx0XHRmUmVqZWN0b3Iob0Vycm9yKTtcblx0XHRcdH0pO1xuXG5cdFx0cmV0dXJuIG9Qcm9taXNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZXMgU2lkZUVmZmVjdHMgY3JlYXRlZCBieSBhIGNvbnRyb2wuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSByZW1vdmVDb250cm9sU2lkZUVmZmVjdHNcblx0ICogQHBhcmFtIHtvYmplY3R9IG9Db250cm9sIFNBUFVJNSBDb250cm9sXG5cdCAqL1xuXHRAUHVibGljXG5cdEBGaW5hbFxuXHRwdWJsaWMgcmVtb3ZlQ29udHJvbFNpZGVFZmZlY3RzKG9Db250cm9sOiBDb250cm9sKTogdm9pZCB7XG5cdFx0Y29uc3Qgc0NvbnRyb2xJZCA9IG9Db250cm9sICYmIG9Db250cm9sLmlzQSAmJiBvQ29udHJvbC5pc0EoXCJzYXAudWkuYmFzZS5NYW5hZ2VkT2JqZWN0XCIpICYmIG9Db250cm9sLmdldElkKCk7XG5cblx0XHRpZiAoc0NvbnRyb2xJZCkge1xuXHRcdFx0dGhpcy5fb1NpZGVFZmZlY3RzU2VydmljZS5yZW1vdmVDb250cm9sU2lkZUVmZmVjdHMoc0NvbnRyb2xJZCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgU2lkZUVmZmVjdHMgdG8gdGhlIHF1ZXVlIG9mIHRoZSBmYWlsZWQgU2lkZUVmZmVjdHNcblx0ICogVGhlIFNpZGVFZmZlY3RzIHdpbGwgYmUgcmV0cmlnZ2VyZWQgb24gdGhlIG5leHQgY2hhbmdlIG9uIHRoZSBzYW1lIGNvbnRleHQuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBfYWRkRmFpbGVkU2lkZUVmZmVjdHNcblx0ICogQHBhcmFtIHtvYmplY3R9IG9TaWRlRWZmZWN0cyBTaWRlRWZmZWN0cyB0aGF0IG5lZWQgdG8gYmUgcmV0cmlnZ2VyZWRcblx0ICogQHBhcmFtIHtvYmplY3R9IG9Db250ZXh0IENvbnRleHQgd2hlcmUgU2lkZUVmZmVjdHMgaGF2ZSBmYWlsZWRcblx0ICovXG5cdEBQcml2YXRlXG5cdEBGaW5hbFxuXHRwcml2YXRlIF9hZGRGYWlsZWRTaWRlRWZmZWN0cyhvU2lkZUVmZmVjdHM6IFNpZGVFZmZlY3RzVHlwZSwgb0NvbnRleHQ6IENvbnRleHQ8YW55Pik6IHZvaWQge1xuXHRcdGNvbnN0IHNDb250ZXh0UGF0aDogc3RyaW5nID0gb0NvbnRleHQuZ2V0UGF0aCgpO1xuXHRcdHRoaXMuX21GYWlsZWRTaWRlRWZmZWN0c1tzQ29udGV4dFBhdGhdID0gdGhpcy5fbUZhaWxlZFNpZGVFZmZlY3RzW3NDb250ZXh0UGF0aF0gfHwgW107XG5cdFx0Y29uc3QgYklzTm90QWxyZWFkeUxpc3RlZCA9IHRoaXMuX21GYWlsZWRTaWRlRWZmZWN0c1tzQ29udGV4dFBhdGhdLmV2ZXJ5KFxuXHRcdFx0bUZhaWxlZFNpZGVFZmZlY3RzID0+IG9TaWRlRWZmZWN0cy5mdWxseVF1YWxpZmllZE5hbWUgIT09IG1GYWlsZWRTaWRlRWZmZWN0cy5mdWxseVF1YWxpZmllZE5hbWVcblx0XHQpO1xuXHRcdGlmIChiSXNOb3RBbHJlYWR5TGlzdGVkKSB7XG5cdFx0XHR0aGlzLl9tRmFpbGVkU2lkZUVmZmVjdHNbc0NvbnRleHRQYXRoXS5wdXNoKG9TaWRlRWZmZWN0cyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyB0aGUgcHJvbWlzZSBmb3IgdGhlIGZpZWxkIGdyb3VwIHRoYXQgaXMgcmVxdWlyZWQgYmVmb3JlIHJlcXVlc3RpbmcgU2lkZUVmZmVjdHMuXG5cdCAqIElmIHRoZSBwcm9taXNlIGlzIHJlamVjdGVkIGFuZCBvbmx5IHRoZSBmaWVsZCByZXF1aXJlcyB0aGUgU2lkZUVmZmVjdHMgb24gdGhpcyBjb250ZXh0LCB0aGUgU2lkZUVmZmVjdHMgYXJlIHJlbW92ZWQgZnJvbSB0aGVcblx0ICogU2lkZUVmZmVjdHMgcXVldWUuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBfZ2VuZXJhdGVGaWVsZEdyb3VwUHJvbWlzZVxuXHQgKiBAcGFyYW0ge29iamVjdH0gbUV2ZW50RmllbGRQcm9wZXJ0aWVzIEZpZWxkIHByb3BlcnRpZXNcblx0ICogQHJldHVybnMge29iamVjdH0gUHJvbWlzZSB0byBiZSB1c2VkIGZvciB0aGUgdmFsaWRhdGlvbiBvZiB0aGUgZmllbGRcblx0ICovXG5cdHByaXZhdGUgX2dlbmVyYXRlRmllbGRHcm91cFByb21pc2UobUV2ZW50RmllbGRQcm9wZXJ0aWVzOiBGaWVsZEV2ZW50UHJvcGVydHlUeXBlKTogUHJvbWlzZTxhbnk+IHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXNcblx0XHRjb25zdCB0aGF0ID0gdGhpcztcblxuXHRcdGxldCBiUHJvbWlzZVN1Y2Nlc3MgPSB0cnVlO1xuXHRcdHJldHVybiBtRXZlbnRGaWVsZFByb3BlcnRpZXMucHJvbWlzZVxuXHRcdFx0LnRoZW4oZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiBiUHJvbWlzZVN1Y2Nlc3M7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRiUHJvbWlzZVN1Y2Nlc3MgPSBmYWxzZTtcblx0XHRcdFx0cmV0dXJuIGJQcm9taXNlU3VjY2Vzcztcblx0XHRcdH0pXG5cdFx0XHQuZmluYWxseSgoKSA9PiB7XG5cdFx0XHRcdC8qKlxuXHRcdFx0XHQgKiBOZWVkIHRvIHN0b3JlIHRoZSBzdGF0dXMgb2YgcHJvcGVydGllcyByZWxhdGVkIHRvIHRoaXMgZmllbGQgZm9yIGRlZmVycmVkIFNpZGVFZmZlY3RzXG5cdFx0XHRcdCAqIHNpbmNlIGFsbCBTb3VyY2VQcm9wZXJ0aWVzIGZvciB0aGlzIGtpbmQgb2YgU2lkZUVmZmVjdHMgbXVzdCBiZSB2YWxpZFxuXHRcdFx0XHQgKi9cblx0XHRcdFx0dGhhdC5fc2F2ZUZpZWxkUHJvcGVydGllc1N0YXR1cyhtRXZlbnRGaWVsZFByb3BlcnRpZXMuZmllbGQsIGJQcm9taXNlU3VjY2Vzcyk7XG5cdFx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgdGhlIHByb21pc2UgZm9yIHRoZSBmaWVsZCB0aGF0IGlzIHJlcXVpcmVkIGJlZm9yZSByZXF1ZXN0aW5nIGltbWVkaWF0ZSBTaWRlRWZmZWN0cy5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIF9nZW5lcmF0ZUltbWVkaWF0ZVByb21pc2Vcblx0ICogQHBhcmFtIHtvYmplY3R9IG1FdmVudEZpZWxkUHJvcGVydGllcyBGaWVsZCBwcm9wZXJ0aWVzXG5cdCAqIEByZXR1cm5zIHtvYmplY3R9IFByb21pc2UgdG8gYmUgdXNlZCBmb3IgdGhlIHZhbGlkYXRpb24gb2YgdGhlIGZpZWxkXG5cdCAqL1xuXHRwcml2YXRlIF9nZW5lcmF0ZUltbWVkaWF0ZVByb21pc2UobUV2ZW50RmllbGRQcm9wZXJ0aWVzOiBGaWVsZEV2ZW50UHJvcGVydHlUeXBlKTogUHJvbWlzZTxhbnk+IHtcblx0XHRjb25zdCBvUHJvbWlzZSA9IG1FdmVudEZpZWxkUHJvcGVydGllcy5wcm9taXNlO1xuXHRcdHJldHVybiBvUHJvbWlzZS50aGVuKGZ1bmN0aW9uKCkge1xuXHRcdFx0LyoqXG5cdFx0XHQgKiBJZiB0aGUgZmllbGQgZ2V0cyBhIEZpZWxkSGVscGVyLCB3ZSBuZWVkIHRvIHdhaXQgdW50aWwgYWxsIGZpZWxkcyBjaGFuZ2VkIGJ5IHRoaXMgRmllbGRIZWxwZXIgaGF2ZSBiZWVuIHNldC5cblx0XHRcdCAqIFRvIGFjaGlldmUgdGhpcywgd2UgZW5zdXJlIHRoYXQgYWxsIHJlbGF0ZWQgYmluZGluZ3MgaGF2ZSBiZWVuIHJlc29sdmVkLlxuXHRcdFx0ICpcblx0XHRcdCAqIFRoaXMgcmVzb2x1dGlvbiBwcm9jZXNzIGlzIG5vdCBtYW5hZ2VkIGJ5IHRoZSBGaWVsZCBFdmVudCBQcm9taXNlLCBzbyBmb3IgZmFzdCB1c2VyIGFjdGlvbnMgKGxpa2UgYXV0b21hdGlvbikgaXQgY2FuIGxvY2sgdGhlIG1vZGVsXG5cdFx0XHQgKiBhbmQgbm8gcmVxdWVzdCBjYW4gYmUgZXhlY3V0ZWQuXG5cdFx0XHQgKi9cblx0XHRcdGNvbnN0IG9GaWVsZCA9IG1FdmVudEZpZWxkUHJvcGVydGllcy5maWVsZDtcblx0XHRcdGNvbnN0IHNGaWVsZEhlbHBlcklkID0gb0ZpZWxkLmdldEZpZWxkSGVscCAmJiBvRmllbGQuZ2V0RmllbGRIZWxwKCk7XG5cdFx0XHRpZiAoc0ZpZWxkSGVscGVySWQpIHtcblx0XHRcdFx0Y29uc3Qgb0ZpbHRlckhlbHA6IGFueSA9IHNhcC51aS5nZXRDb3JlKCkuYnlJZChzRmllbGRIZWxwZXJJZCk7XG5cdFx0XHRcdGlmIChvRmlsdGVySGVscCkge1xuXHRcdFx0XHRcdHJldHVybiBQcm9taXNlLmFsbChcblx0XHRcdFx0XHRcdChvRmlsdGVySGVscC5nZXRPdXRQYXJhbWV0ZXJzKCkgYXMgYW55W10pLm1hcChvT3V0UGFyYW1ldGVyID0+IHtcblx0XHRcdFx0XHRcdFx0Y29uc3Qgb0JpbmRpbmcgPSBvT3V0UGFyYW1ldGVyLmdldEJpbmRpbmcoXCJ2YWx1ZVwiKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG9CaW5kaW5nID8gb0JpbmRpbmcucmVxdWVzdFZhbHVlKCkgOiBQcm9taXNlLnJlc29sdmUoKTtcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIFByb21pc2UuYWxsKFtdKTtcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBzdGF0dXMgaW5kZXguXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBfZ2VuZXJhdGVTdGF0dXNJbmRleFxuXHQgKiBAcGFyYW0ge29iamVjdH0gbUVudGl0eVR5cGUgVGhlIGVudGl0eSB0eXBlXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzUHJvcGVydHlQYXRoIFRoZSBwcm9wZXJ0eSBwYXRoXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBvQ29udGV4dCBTQVBVSTUgQ29udGV4dFxuXHQgKiBAcmV0dXJucyB7c3RyaW5nIHwgdW5kZWZpbmVkfSBJbmRleFxuXHQgKi9cblx0cHJpdmF0ZSBfZ2VuZXJhdGVTdGF0dXNJbmRleChtRW50aXR5VHlwZTogRW50aXR5VHlwZSwgc1Byb3BlcnR5UGF0aDogc3RyaW5nLCBvQ29udGV4dDogQ29udGV4dDxhbnk+KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBzQ29udGV4dFBhdGggPSBvQ29udGV4dC5nZXRQYXRoKCk7XG5cdFx0Y29uc3QgbVByb3BlcnR5ID0gbUVudGl0eVR5cGUucmVzb2x2ZVBhdGgoc1Byb3BlcnR5UGF0aCk7XG5cdFx0aWYgKG1Qcm9wZXJ0eSkge1xuXHRcdFx0aWYgKG1Qcm9wZXJ0eSAmJiBtUHJvcGVydHkuX3R5cGUgPT09IFwiUHJvcGVydHlcIikge1xuXHRcdFx0XHRyZXR1cm4gW21Qcm9wZXJ0eS5mdWxseVF1YWxpZmllZE5hbWUsIHNDb250ZXh0UGF0aF0uam9pbihcIl9fXCIpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGFwcHJvcHJpYXRlIGNvbnRleHQgb24gd2hpY2ggU2lkZUVmZmVjdHMgY2FuIGJlIHJlcXVlc3RlZC5cblx0ICogVGhlIGNvcnJlY3Qgb25lIG11c3QgaGF2ZSB0aGUgYmluZGluZyBwYXJhbWV0ZXIgJCRwYXRjaFdpdGhvdXRTaWRlRWZmZWN0cy5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIF9nZXRDb250ZXh0Rm9yU2lkZUVmZmVjdHNcblx0ICogQHBhcmFtIHtvYmplY3R9IG9Tb3VyY2VGaWVsZCBGaWVsZFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc1NpZGVFZmZlY3RFbnRpdHlUeXBlIFRhcmdldCBlbnRpdHkgdHlwZSBvZiB0aGUgU2lkZUVmZmVjdHMgYW5ub3RhdGlvblxuXHQgKiBAcmV0dXJucyB7b2JqZWN0fSBTQVBVSTUgQ29udGV4dFxuXHQgKi9cblx0QFByaXZhdGVcblx0QEZpbmFsXG5cdHByaXZhdGUgX2dldENvbnRleHRGb3JTaWRlRWZmZWN0cyhvU291cmNlRmllbGQ6IEZpZWxkQ29udHJvbCwgc1NpZGVFZmZlY3RFbnRpdHlUeXBlOiBzdHJpbmcpOiBDb250ZXh0PGFueT4gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG9CaW5kaW5nQ29udGV4dCA9IG9Tb3VyY2VGaWVsZC5nZXRCaW5kaW5nQ29udGV4dCgpO1xuXHRcdGxldCBvQ29udGV4dEZvclNpZGVFZmZlY3RzID0gb0JpbmRpbmdDb250ZXh0LFxuXHRcdFx0c0VudGl0eVR5cGUgPSB0aGlzLl9vU2lkZUVmZmVjdHNTZXJ2aWNlLmdldEVudGl0eVR5cGVGcm9tQ29udGV4dChvQmluZGluZ0NvbnRleHQpO1xuXG5cdFx0aWYgKHNTaWRlRWZmZWN0RW50aXR5VHlwZSAhPT0gc0VudGl0eVR5cGUpIHtcblx0XHRcdG9Db250ZXh0Rm9yU2lkZUVmZmVjdHMgPSAob0JpbmRpbmdDb250ZXh0IGFzIGFueSkuZ2V0QmluZGluZygpLmdldENvbnRleHQoKTtcblx0XHRcdGlmIChvQ29udGV4dEZvclNpZGVFZmZlY3RzKSB7XG5cdFx0XHRcdHNFbnRpdHlUeXBlID0gdGhpcy5fb1NpZGVFZmZlY3RzU2VydmljZS5nZXRFbnRpdHlUeXBlRnJvbUNvbnRleHQob0NvbnRleHRGb3JTaWRlRWZmZWN0cyk7XG5cdFx0XHRcdGlmIChzU2lkZUVmZmVjdEVudGl0eVR5cGUgIT09IHNFbnRpdHlUeXBlKSB7XG5cdFx0XHRcdFx0b0NvbnRleHRGb3JTaWRlRWZmZWN0cyA9IChvQ29udGV4dEZvclNpZGVFZmZlY3RzIGFzIGFueSkuZ2V0QmluZGluZygpLmdldENvbnRleHQoKTtcblx0XHRcdFx0XHRpZiAob0NvbnRleHRGb3JTaWRlRWZmZWN0cykge1xuXHRcdFx0XHRcdFx0c0VudGl0eVR5cGUgPSB0aGlzLl9vU2lkZUVmZmVjdHNTZXJ2aWNlLmdldEVudGl0eVR5cGVGcm9tQ29udGV4dChvQ29udGV4dEZvclNpZGVFZmZlY3RzKTtcblx0XHRcdFx0XHRcdGlmIChzU2lkZUVmZmVjdEVudGl0eVR5cGUgIT09IHNFbnRpdHlUeXBlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG9Db250ZXh0Rm9yU2lkZUVmZmVjdHMgfHwgdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgRW50aXR5VHlwZSBiYXNlZCBvbiBpdHMgZnVsbHktcXVhbGlmaWVkIG5hbWUuXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzRnVsbHlRdWFsaWZpZWROYW1lIFRoZSBmdWxseS1xdWFsaWZpZWQgbmFtZVxuXHQgKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgZW50aXR5IHR5cGVcblx0ICovXG5cdHByaXZhdGUgX2dldEVudGl0eVR5cGVGcm9tRlFOKHNGdWxseVF1YWxpZmllZE5hbWU6IHN0cmluZyk6IEVudGl0eVR5cGUgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG1FbnRpdHlUeXBlID0gKHRoaXMuX29TaWRlRWZmZWN0c1NlcnZpY2UuZ2V0Q29udmVydGVkTWV0YU1vZGVsKCkgYXMgQ29udmVydGVyT3V0cHV0KS5lbnRpdHlUeXBlcy5maW5kKG9FbnRpdHlUeXBlID0+IHtcblx0XHRcdHJldHVybiBvRW50aXR5VHlwZS5mdWxseVF1YWxpZmllZE5hbWUgPT09IHNGdWxseVF1YWxpZmllZE5hbWU7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIG1FbnRpdHlUeXBlO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHByb21pc2Ugb2YgdGhlIGZpZWxkIHZhbGlkYXRpb24gdGhhdCBpcyByZXF1aXJlZCBmb3IgdGhlIFNpZGVFZmZlY3RzIHByb2Nlc3MuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBfZ2V0RmllbGRQcm9taXNlXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBvRXZlbnQgRmllbGQgY2hhbmdlIGV2ZW50XG5cdCAqIEByZXR1cm5zIHtvYmplY3R9IEZpZWxkIHByb21pc2Vcblx0ICovXG5cdHByaXZhdGUgX2dldEZpZWxkUHJvbWlzZShvRXZlbnQ6IFVJNUV2ZW50KTogUHJvbWlzZTxhbnk+IHtcblx0XHRjb25zdCBwcm9taXNlID0gb0V2ZW50LmdldFBhcmFtZXRlcihcInByb21pc2VcIikgfHwgUHJvbWlzZS5yZXNvbHZlKCk7XG5cblx0XHRyZXR1cm4gcHJvbWlzZS50aGVuKCgpID0+IHtcblx0XHRcdGNvbnN0IG9Qcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG5cdFx0XHRcdGlmICghRmllbGRSdW50aW1lLmdldEZpZWxkU3RhdGVPbkNoYW5nZShvRXZlbnQpLnN0YXRlLnZhbGlkaXR5KSB7XG5cdFx0XHRcdFx0cmVqZWN0KCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmVzb2x2ZSh0cnVlKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gb1Byb21pc2U7XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgcHJvcGVydGllcyBvZiB0aGUgZmllbGQgdGhhdCBhcmUgcmVxdWlyZWQgZm9yIHRoZSBTaWRlRWZmZWN0cyBwcm9jZXNzLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgX2dldEZpZWxkUHJvcGVydGllc1xuXHQgKiBAcGFyYW0ge29iamVjdH0gb0V2ZW50IEZpZWxkIGNoYW5nZSBldmVudFxuXHQgKiBAcmV0dXJucyB7b2JqZWN0fSBGaWVsZCBwcm9wZXJ0aWVzIChldmVudCBjaGFuZ2UgcHJvbWlzZSwgZmllbGQsIFNpZGVFZmZlY3RzIHJlbGF0ZWQgdG8gdGhpcyBmaWVsZClcblx0ICovXG5cdHByaXZhdGUgX2dldEZpZWxkUHJvcGVydGllcyhvRXZlbnQ6IFVJNUV2ZW50KTogRmllbGRFdmVudFByb3BlcnR5VHlwZSB7XG5cdFx0Y29uc3Qgb0ZpZWxkOiBGaWVsZENvbnRyb2wgPSBvRXZlbnQuZ2V0U291cmNlKCk7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0cHJvbWlzZTogdGhpcy5fZ2V0RmllbGRQcm9taXNlKG9FdmVudCksXG5cdFx0XHRmaWVsZDogb0ZpZWxkLFxuXHRcdFx0c2lkZUVmZmVjdHNNYXA6IHRoaXMuX2dldEZpZWxkU2lkZUVmZmVjdHNNYXAob0ZpZWxkKVxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgU2lkZUVmZmVjdHMgbWFwXG5cdCAqIFRoZXNlIFNpZGVFZmZlY3RzIGFyZVxuXHQgKiAtIGxpc3RlZCBpbnRvIEZpZWxkR3JvdXBJZHMgKGNvbWluZyBmcm9tIGFuIE9EYXRhIFNlcnZpY2UpXG5cdCAqIC0gZ2VuZXJhdGVkIGJ5IGEgY29udHJvbCBvciBjb250cm9scyBhbmQgdGhhdCBjb25maWd1cmUgdGhpcyBmaWVsZCBhcyBTb3VyY2VQcm9wZXJ0aWVzLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgX2dldEZpZWxkU2lkZUVmZmVjdHNNYXBcblx0ICogQHBhcmFtIHtvYmplY3R9IG9GaWVsZCBGaWVsZFxuXHQgKiBAcmV0dXJucyB7b2JqZWN0fSBTaWRlRWZmZWN0cyBtYXBcblx0ICovXG5cdHByaXZhdGUgX2dldEZpZWxkU2lkZUVmZmVjdHNNYXAob0ZpZWxkOiBGaWVsZENvbnRyb2wpOiBGaWVsZFNpZGVFZmZlY3REaWN0aW9uYXJ5IHtcblx0XHRjb25zdCBtU2lkZUVmZmVjdHNNYXA6IEZpZWxkU2lkZUVmZmVjdERpY3Rpb25hcnkgPSB7fSxcblx0XHRcdGFGaWVsZEdyb3VwSWRzOiBzdHJpbmdbXSA9IG9GaWVsZC5nZXRGaWVsZEdyb3VwSWRzKCksXG5cdFx0XHRzVmlld0VudGl0eVNldFNldE5hbWUgPSB0aGlzLl9vVmlldy5nZXRWaWV3RGF0YSgpLmVudGl0eVNldCxcblx0XHRcdG9WaWV3RW50aXR5U2V0ID0gKHRoaXMuX29TaWRlRWZmZWN0c1NlcnZpY2UuZ2V0Q29udmVydGVkTWV0YU1vZGVsKCkgYXMgQ29udmVydGVyT3V0cHV0KS5lbnRpdHlTZXRzLmZpbmQob0VudGl0eVNldCA9PiB7XG5cdFx0XHRcdHJldHVybiBvRW50aXR5U2V0Lm5hbWUgPT09IHNWaWV3RW50aXR5U2V0U2V0TmFtZTtcblx0XHRcdH0pO1xuXG5cdFx0Ly8gU2lkZUVmZmVjdHMgY29taW5nIGZyb20gYW4gT0RhdGEgU2VydmljZVxuXHRcdGFGaWVsZEdyb3VwSWRzLmZvckVhY2goc0ZpZWxkR3JvdXBJZCA9PiB7XG5cdFx0XHRjb25zdCBiSXNJbW1lZGlhdGU6IGJvb2xlYW4gPSBzRmllbGRHcm91cElkLmluZGV4T2YoXCIkJEltbWVkaWF0ZVJlcXVlc3RcIikgIT09IC0xLFxuXHRcdFx0XHRzTmFtZTogc3RyaW5nID0gc0ZpZWxkR3JvdXBJZC5yZXBsYWNlKFwiJCRJbW1lZGlhdGVSZXF1ZXN0XCIsIFwiXCIpLFxuXHRcdFx0XHRhU2lkZUVmZmVjdFBhcnRzOiBzdHJpbmdbXSA9IHNOYW1lLnNwbGl0KFwiI1wiKSxcblx0XHRcdFx0c1NpZGVFZmZlY3RFbnRpdHlUeXBlOiBzdHJpbmcgPSBhU2lkZUVmZmVjdFBhcnRzWzBdLFxuXHRcdFx0XHRzU2lkZUVmZmVjdFBhdGg6IHN0cmluZyA9XG5cdFx0XHRcdFx0c1NpZGVFZmZlY3RFbnRpdHlUeXBlICtcblx0XHRcdFx0XHRcIkBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuU2lkZUVmZmVjdHNcIiArXG5cdFx0XHRcdFx0KGFTaWRlRWZmZWN0UGFydHMubGVuZ3RoID09PSAyID8gXCIjXCIgKyBhU2lkZUVmZmVjdFBhcnRzWzFdIDogXCJcIiksXG5cdFx0XHRcdG9TaWRlRWZmZWN0OiBTaWRlRWZmZWN0c1R5cGUgfCB1bmRlZmluZWQgPSB0aGlzLl9vU2lkZUVmZmVjdHNTZXJ2aWNlLmdldE9EYXRhRW50aXR5U2lkZUVmZmVjdHMoc1NpZGVFZmZlY3RFbnRpdHlUeXBlKT8uW1xuXHRcdFx0XHRcdHNTaWRlRWZmZWN0UGF0aFxuXHRcdFx0XHRdLFxuXHRcdFx0XHRvQ29udGV4dDogQ29udGV4dDxhbnk+IHwgdW5kZWZpbmVkID0gdGhpcy5fZ2V0Q29udGV4dEZvclNpZGVFZmZlY3RzKG9GaWVsZCwgc1NpZGVFZmZlY3RFbnRpdHlUeXBlKTtcblx0XHRcdGlmIChvU2lkZUVmZmVjdCAmJiBvQ29udGV4dCkge1xuXHRcdFx0XHRtU2lkZUVmZmVjdHNNYXBbc05hbWVdID0ge1xuXHRcdFx0XHRcdG5hbWU6IHNOYW1lLFxuXHRcdFx0XHRcdGltbWVkaWF0ZTogYklzSW1tZWRpYXRlLFxuXHRcdFx0XHRcdHNpZGVFZmZlY3RzOiBvU2lkZUVmZmVjdCxcblx0XHRcdFx0XHRjb250ZXh0OiBvQ29udGV4dFxuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0Ly9TaWRlRWZmZWN0cyBjb21pbmcgZnJvbSBjb250cm9sKHMpXG5cdFx0aWYgKHNWaWV3RW50aXR5U2V0U2V0TmFtZSAmJiBvVmlld0VudGl0eVNldCkge1xuXHRcdFx0Y29uc3Qgc1ZpZXdFbnRpdHlUeXBlID0gb1ZpZXdFbnRpdHlTZXQuZW50aXR5VHlwZS5mdWxseVF1YWxpZmllZE5hbWUsXG5cdFx0XHRcdG1GaWVsZFBhdGg6IGFueSA9IChvRmllbGQuZ2V0QWdncmVnYXRpb24oXCJjdXN0b21EYXRhXCIpIGFzIGFueVtdKS5maW5kKG9DdXN0b21EYXRhID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gb0N1c3RvbURhdGEuZ2V0S2V5KCkgPT09IFwic291cmNlUGF0aFwiO1xuXHRcdFx0XHR9KSxcblx0XHRcdFx0b0NvbnRleHQ6IENvbnRleHQ8YW55PiB8IHVuZGVmaW5lZCA9IHRoaXMuX2dldENvbnRleHRGb3JTaWRlRWZmZWN0cyhvRmllbGQsIHNWaWV3RW50aXR5VHlwZSk7XG5cblx0XHRcdGlmIChtRmllbGRQYXRoICYmIG9Db250ZXh0KSB7XG5cdFx0XHRcdGNvbnN0IHNGaWVsZFBhdGggPSBtRmllbGRQYXRoLmdldFZhbHVlKCkucmVwbGFjZShcIi9cIiArIHNWaWV3RW50aXR5U2V0U2V0TmFtZSArIFwiL1wiLCBcIlwiKSxcblx0XHRcdFx0XHRtQ29udHJvbEVudGl0eVR5cGUgPSB0aGlzLl9vU2lkZUVmZmVjdHNTZXJ2aWNlLmdldENvbnRyb2xFbnRpdHlTaWRlRWZmZWN0cyhcblx0XHRcdFx0XHRcdHNWaWV3RW50aXR5VHlwZVxuXHRcdFx0XHRcdCkgYXMgQ29udHJvbFNpZGVFZmZlY3RzRW50aXR5RGljdGlvbmFyeTtcblx0XHRcdFx0T2JqZWN0LmtleXMobUNvbnRyb2xFbnRpdHlUeXBlKS5mb3JFYWNoKHNDb250cm9sTmFtZSA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qgb0NvbnRyb2xTaWRlRWZmZWN0czogU2lkZUVmZmVjdHNUeXBlID0gbUNvbnRyb2xFbnRpdHlUeXBlW3NDb250cm9sTmFtZV07XG5cdFx0XHRcdFx0aWYgKChvQ29udHJvbFNpZGVFZmZlY3RzLlNvdXJjZVByb3BlcnRpZXMgYXMgc3RyaW5nW10pLmluY2x1ZGVzKHNGaWVsZFBhdGgpKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBzTmFtZSA9IHNDb250cm9sTmFtZSArIFwiOjpcIiArIHNWaWV3RW50aXR5VHlwZTtcblx0XHRcdFx0XHRcdG1TaWRlRWZmZWN0c01hcFtzTmFtZV0gPSB7XG5cdFx0XHRcdFx0XHRcdG5hbWU6IHNOYW1lLFxuXHRcdFx0XHRcdFx0XHRpbW1lZGlhdGU6IHRydWUsXG5cdFx0XHRcdFx0XHRcdHNpZGVFZmZlY3RzOiBvQ29udHJvbFNpZGVFZmZlY3RzLFxuXHRcdFx0XHRcdFx0XHRjb250ZXh0OiBvQ29udGV4dFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gbVNpZGVFZmZlY3RzTWFwO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1hbmFnZXMgdGhlIFNpZGVFZmZlY3RzIHdpdGggcmVsYXRlZCBjaGFuZ2VzIHRvIGEgZmllbGRcblx0ICogTGlzdDogZ2V0cyBpbW1lZGlhdGUgU2lkZUVmZmVjdHMgcmVxdWVzdHNcblx0ICogUmVnaXN0ZXI6IGNhY2hlcyBkZWZlcnJlZCBTaWRlRWZmZWN0cyB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgd2hlbiB0aGUgRmllbGRHcm91cCBpcyB1bmZvY3VzZWQuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBfaW5pdGlhbGl6ZUZpZWxkU2lkZUVmZmVjdHNcblx0ICogQHBhcmFtIHtvYmplY3R9IG1FdmVudEZpZWxkUHJvcGVydGllcyBGaWVsZCBldmVudCBwcm9wZXJ0aWVzXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBvRmllbGRHcm91cFByZVJlcXVpc2l0ZSBQcm9taXNlIHRvIGJlIGZ1bGZpbGxlZCBiZWZvcmUgZXhlY3V0aW5nIGRlZmVycmVkIFNpZGVFZmZlY3RzXG5cdCAqIEByZXR1cm5zIHtBcnJheX0gIEFycmF5IG9mIGltbWVkaWF0ZSBTaWRlRWZmZWN0c1xuXHQgKi9cblx0cHJpdmF0ZSBfaW5pdGlhbGl6ZUZpZWxkU2lkZUVmZmVjdHMoXG5cdFx0bUV2ZW50RmllbGRQcm9wZXJ0aWVzOiBGaWVsZEV2ZW50UHJvcGVydHlUeXBlLFxuXHRcdG9GaWVsZEdyb3VwUHJlUmVxdWlzaXRlPzogUHJvbWlzZTxhbnk+XG5cdCk6IEZpZWxkU2lkZUVmZmVjdFByb3BlcnR5VHlwZVtdIHtcblx0XHRjb25zdCBtRmllbGRTaWRlRWZmZWN0c01hcCA9IG1FdmVudEZpZWxkUHJvcGVydGllcy5zaWRlRWZmZWN0c01hcCxcblx0XHRcdG9GaWVsZFByb21pc2VGb3JGaWVsZEdyb3VwID0gdGhpcy5fZ2VuZXJhdGVGaWVsZEdyb3VwUHJvbWlzZShtRXZlbnRGaWVsZFByb3BlcnRpZXMpLCAvLyBQcm9taXNlIG1hbmFnaW5nIEZpZWxkR3JvdXAgcmVxdWVzdHMgaWYgRmllbGQgcHJvbWlzZSBmYWlsc1xuXHRcdFx0bUZhaWxlZFNpZGVFZmZlY3RzTmFtZTogYW55ID0ge30sXG5cdFx0XHRhSW1tZWRpYXRlU2lkZUVmZmVjdHNQcm9wZXJ0aWVzOiBGaWVsZFNpZGVFZmZlY3RQcm9wZXJ0eVR5cGVbXSA9IFtdO1xuXG5cdFx0b0ZpZWxkR3JvdXBQcmVSZXF1aXNpdGUgPSBvRmllbGRHcm91cFByZVJlcXVpc2l0ZSB8fCBQcm9taXNlLnJlc29sdmUoKTtcblxuXHRcdE9iamVjdC5rZXlzKG1GaWVsZFNpZGVFZmZlY3RzTWFwKS5mb3JFYWNoKHNTaWRlRWZmZWN0TmFtZSA9PiB7XG5cdFx0XHRjb25zdCBvU2lkZUVmZmVjdFByb3BlcnR5OiBGaWVsZFNpZGVFZmZlY3RQcm9wZXJ0eVR5cGUgPSBtRmllbGRTaWRlRWZmZWN0c01hcFtzU2lkZUVmZmVjdE5hbWVdLFxuXHRcdFx0XHRzU2lkZUVmZmVjdENvbnRleHRQYXRoID0gb1NpZGVFZmZlY3RQcm9wZXJ0eS5jb250ZXh0LmdldFBhdGgoKSxcblx0XHRcdFx0YUZhaWxlZFNpZGVFZmZlY3RzID0gdGhpcy5fbUZhaWxlZFNpZGVFZmZlY3RzW3NTaWRlRWZmZWN0Q29udGV4dFBhdGhdO1xuXG5cdFx0XHQvLyBDaGVjayBpZiB0aGVyZSBpcyBhbnkgcHJldmlvdXNseSBmYWlsZWQgcmVxdWVzdCBmb3IgdGhpcyBjb250ZXh0XG5cdFx0XHRpZiAoYUZhaWxlZFNpZGVFZmZlY3RzKSB7XG5cdFx0XHRcdGRlbGV0ZSB0aGlzLl9tRmFpbGVkU2lkZUVmZmVjdHNbc1NpZGVFZmZlY3RDb250ZXh0UGF0aF07XG5cdFx0XHRcdG1GYWlsZWRTaWRlRWZmZWN0c05hbWVbc1NpZGVFZmZlY3RDb250ZXh0UGF0aF0gPSB7fTtcblx0XHRcdFx0YUZhaWxlZFNpZGVFZmZlY3RzLmZvckVhY2gobUZhaWxlZFNpZGVFZmZlY3RzID0+IHtcblx0XHRcdFx0XHRtRmFpbGVkU2lkZUVmZmVjdHNOYW1lW3NTaWRlRWZmZWN0Q29udGV4dFBhdGhdW21GYWlsZWRTaWRlRWZmZWN0cy5mdWxseVF1YWxpZmllZE5hbWVdID0gdHJ1ZTtcblx0XHRcdFx0XHRhSW1tZWRpYXRlU2lkZUVmZmVjdHNQcm9wZXJ0aWVzLnB1c2goe1xuXHRcdFx0XHRcdFx0bmFtZTogc1NpZGVFZmZlY3ROYW1lLFxuXHRcdFx0XHRcdFx0cHJldmlvdXNseUZhaWxlZDogdHJ1ZSxcblx0XHRcdFx0XHRcdHNpZGVFZmZlY3RzOiBtRmFpbGVkU2lkZUVmZmVjdHMsXG5cdFx0XHRcdFx0XHRjb250ZXh0OiBvU2lkZUVmZmVjdFByb3BlcnR5LmNvbnRleHRcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAob1NpZGVFZmZlY3RQcm9wZXJ0eS5pbW1lZGlhdGUpIHtcblx0XHRcdFx0Ly8gU2lkZUVmZmVjdHMgd2lsbCBiZSBleGVjdXRlZCBpbW1lZGlhdGVseSBhZnRlciBldmVudCBwcm9taXNlIHZhbGlkYXRpb25cblx0XHRcdFx0aWYgKCFtRmFpbGVkU2lkZUVmZmVjdHNOYW1lW3NTaWRlRWZmZWN0Q29udGV4dFBhdGhdPy5bb1NpZGVFZmZlY3RQcm9wZXJ0eS5zaWRlRWZmZWN0cy5mdWxseVF1YWxpZmllZE5hbWVdKSB7XG5cdFx0XHRcdFx0YUltbWVkaWF0ZVNpZGVFZmZlY3RzUHJvcGVydGllcy5wdXNoKHtcblx0XHRcdFx0XHRcdG5hbWU6IHNTaWRlRWZmZWN0TmFtZSxcblx0XHRcdFx0XHRcdHNpZGVFZmZlY3RzOiBvU2lkZUVmZmVjdFByb3BlcnR5LnNpZGVFZmZlY3RzLFxuXHRcdFx0XHRcdFx0Y29udGV4dDogb1NpZGVFZmZlY3RQcm9wZXJ0eS5jb250ZXh0XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIEFkZCBkZWZlcnJlZCBTaWRlRWZmZWN0cyB0byB0aGUgcmVsYXRlZCBkaWN0aW9uYXJ5XG5cdFx0XHRcdHRoaXMuX21GaWVsZEdyb3VwUXVldWVbc1NpZGVFZmZlY3ROYW1lXSA9IHRoaXMuX21GaWVsZEdyb3VwUXVldWVbc1NpZGVFZmZlY3ROYW1lXSB8fCB7fTtcblx0XHRcdFx0Y29uc3QgbVNpZGVFZmZlY3RDb250ZXh0UGF0aCA9IHRoaXMuX21GaWVsZEdyb3VwUXVldWVbc1NpZGVFZmZlY3ROYW1lXVtzU2lkZUVmZmVjdENvbnRleHRQYXRoXSB8fCB7XG5cdFx0XHRcdFx0cHJvbWlzZXM6IFtdLFxuXHRcdFx0XHRcdHNpZGVFZmZlY3RQcm9wZXJ0eTogb1NpZGVFZmZlY3RQcm9wZXJ0eSxcblx0XHRcdFx0XHRwcm9jZXNzU3RhcnRlZDogZmFsc2Vcblx0XHRcdFx0fTtcblx0XHRcdFx0bVNpZGVFZmZlY3RDb250ZXh0UGF0aC5wcm9taXNlcyA9IG1TaWRlRWZmZWN0Q29udGV4dFBhdGgucHJvbWlzZXMuY29uY2F0KFtcblx0XHRcdFx0XHRvRmllbGRQcm9taXNlRm9yRmllbGRHcm91cCxcblx0XHRcdFx0XHRvRmllbGRHcm91cFByZVJlcXVpc2l0ZSBhcyBQcm9taXNlPGFueT5cblx0XHRcdFx0XSk7XG5cdFx0XHRcdHRoaXMuX21GaWVsZEdyb3VwUXVldWVbc1NpZGVFZmZlY3ROYW1lXVtzU2lkZUVmZmVjdENvbnRleHRQYXRoXSA9IG1TaWRlRWZmZWN0Q29udGV4dFBhdGg7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIGFJbW1lZGlhdGVTaWRlRWZmZWN0c1Byb3BlcnRpZXM7XG5cdH1cblxuXHQvKipcblx0ICogU2F2ZXMgdGhlIHZhbGlkYXRpb24gc3RhdHVzIG9mIHByb3BlcnRpZXMgcmVsYXRlZCB0byBhIGZpZWxkIGNvbnRyb2wuXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBvRmllbGQgRmllbGRcblx0ICogQHBhcmFtIHtib29sZWFufSBiU3VjY2VzcyBTdGF0dXMgb2YgdGhlIGZpZWxkIHZhbGlkYXRpb25cblx0ICovXG5cdHByaXZhdGUgX3NhdmVGaWVsZFByb3BlcnRpZXNTdGF0dXMob0ZpZWxkOiBGaWVsZENvbnRyb2wsIGJTdWNjZXNzOiBib29sZWFuKTogdm9pZCB7XG5cdFx0Y29uc3Qgb0JpbmRpbmdDb250ZXh0ID0gb0ZpZWxkLmdldEJpbmRpbmdDb250ZXh0KCk7XG5cdFx0Y29uc3Qgc0VudGl0eVR5cGUgPSB0aGlzLl9vU2lkZUVmZmVjdHNTZXJ2aWNlLmdldEVudGl0eVR5cGVGcm9tQ29udGV4dChvQmluZGluZ0NvbnRleHQpO1xuXHRcdGNvbnN0IG1FbnRpdHlUeXBlID0gdGhpcy5fZ2V0RW50aXR5VHlwZUZyb21GUU4oc0VudGl0eVR5cGUpO1xuXHRcdGlmIChtRW50aXR5VHlwZSkge1xuXHRcdFx0Ly8gUmV0cmlldmVzIGFsbCBwcm9wZXJ0aWVzIHVzZWQgYnkgdGhlIGZpZWxkXG5cdFx0XHRjb25zdCBvRmllbGRCaW5kaW5nOiBhbnkgPSB0aGlzLl9nZXRCaW5kaW5nRm9yRmllbGQob0ZpZWxkKTtcblx0XHRcdGNvbnN0IGFGaWVsZFBhdGhzID0gb0ZpZWxkQmluZGluZy5pc0EoXCJzYXAudWkubW9kZWwuQ29tcG9zaXRlQmluZGluZ1wiKVxuXHRcdFx0XHQ/ICgob0ZpZWxkQmluZGluZyBhcyBhbnkpLmdldEJpbmRpbmdzKCkgfHwgW10pLm1hcCgob0JpbmRpbmc6IGFueSkgPT4gb0JpbmRpbmcuc1BhdGgpXG5cdFx0XHRcdDogW29GaWVsZEJpbmRpbmcuZ2V0UGF0aCgpXTtcblxuXHRcdFx0Ly8gU3RvcmVzIHN0YXR1cyBmb3IgYWxsIHByb3BlcnRpZXNcblx0XHRcdGFGaWVsZFBhdGhzLmZvckVhY2goKHNGaWVsZFBhdGg6IHN0cmluZykgPT4ge1xuXHRcdFx0XHRjb25zdCBzSWQgPSB0aGlzLl9nZW5lcmF0ZVN0YXR1c0luZGV4KG1FbnRpdHlUeXBlLCBzRmllbGRQYXRoLCBvQmluZGluZ0NvbnRleHQpO1xuXHRcdFx0XHRpZiAoc0lkKSB7XG5cdFx0XHRcdFx0dGhpcy5fYVNvdXJjZVByb3BlcnRpZXNGYWlsdXJlW2JTdWNjZXNzID8gXCJkZWxldGVcIiA6IFwiYWRkXCJdKHNJZCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIHByb3BlcnR5IGJpbmRpbmcgdG8gdGhlIHZhbHVlIG9mIHRoZSBmaWVsZC5cblx0ICpcblx0ICogQHBhcmFtIG9GaWVsZCBGaWVsZFxuXHQgKiBAcmV0dXJucyB7QmluZGluZ30gIEJpbmRpbmcgdG8gdGhlIHZhbHVlXG5cdCAqL1xuXHRwcml2YXRlIF9nZXRCaW5kaW5nRm9yRmllbGQob0ZpZWxkOiBGaWVsZENvbnRyb2wpOiBCaW5kaW5nIHtcblx0XHRsZXQgc0JpbmRpbmdOYW1lID0gXCJ2YWx1ZVwiO1xuXHRcdGlmIChvRmllbGQuaXNBPENoZWNrQm94PihcInNhcC5tLkNoZWNrQm94XCIpKSB7XG5cdFx0XHRzQmluZGluZ05hbWUgPSBcInNlbGVjdGVkXCI7XG5cdFx0fSBlbHNlIGlmIChvRmllbGQuaXNBPEZpbGVVcGxvYWRlcj4oXCJzYXAudWkudW5pZmllZC5GaWxlVXBsb2FkZXJcIikpIHtcblx0XHRcdHNCaW5kaW5nTmFtZSA9IFwidXBsb2FkVXJsXCI7XG5cdFx0fVxuXHRcdHJldHVybiBvRmllbGQuZ2V0QmluZGluZyhzQmluZGluZ05hbWUpO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNpZGVFZmZlY3RzQ29udHJvbGxlckV4dGVuc2lvbjtcbiJdfQ==
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/ui/core/mvc/ControllerExtension","sap/fe/core/controllerextensions/ControllerExtensionMetadata","../helpers/ClassSupport","sap/fe/core/CommonUtils","sap/fe/macros/field/FieldRuntime","sap/base/Log"],function(C,a,b,c,F,L){"use strict";var _,d,f,g;var P=b.Private;var h=b.Final;var j=b.Public;var O=b.Override;var U=b.UI5Class;function k(i,e){if(!(i instanceof e)){throw new TypeError("Cannot call a class as a function");}}function l(e,p){for(var i=0;i<p.length;i++){var o=p[i];o.enumerable=o.enumerable||false;o.configurable=true;if("value"in o)o.writable=true;Object.defineProperty(e,o.key,o);}}function m(e,p,i){if(p)l(e.prototype,p);if(i)l(e,i);return e;}function n(e,i){if(typeof i!=="function"&&i!==null){throw new TypeError("Super expression must either be null or a function");}e.prototype=Object.create(i&&i.prototype,{constructor:{value:e,writable:true,configurable:true}});if(i)q(e,i);}function q(o,p){q=Object.setPrototypeOf||function q(o,p){o.__proto__=p;return o;};return q(o,p);}function r(D){var e=u();return function p(){var i=v(D),o;if(e){var N=v(this).constructor;o=Reflect.construct(i,arguments,N);}else{o=i.apply(this,arguments);}return s(this,o);};}function s(e,i){if(i&&(typeof i==="object"||typeof i==="function")){return i;}return t(e);}function t(e){if(e===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return e;}function u(){if(typeof Reflect==="undefined"||!Reflect.construct)return false;if(Reflect.construct.sham)return false;if(typeof Proxy==="function")return true;try{Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));return true;}catch(e){return false;}}function v(o){v=Object.setPrototypeOf?Object.getPrototypeOf:function v(o){return o.__proto__||Object.getPrototypeOf(o);};return v(o);}function w(e,p,i,o,x){var y={};Object.keys(o).forEach(function(z){y[z]=o[z];});y.enumerable=!!y.enumerable;y.configurable=!!y.configurable;if('value'in y||y.initializer){y.writable=true;}y=i.slice().reverse().reduce(function(y,z){return z(e,p,y)||y;},y);if(x&&y.initializer!==void 0){y.value=y.initializer?y.initializer.call(x):void 0;y.initializer=undefined;}if(y.initializer===void 0){Object.defineProperty(e,p,y);y=null;}return y;}var S=(_=U("sap.fe.core.controllerextensions.SideEffects",a),d=O(),_(f=(g=function(e){n(S,e);var i=r(S);function S(){k(this,S);return i.apply(this,arguments);}m(S,[{key:"onInit",value:function o(){this._oView=this.base.getView();this._oAppComponent=c.getAppComponent(this._oView);this._oSideEffectsService=this._oAppComponent.getSideEffectsService();this._mFieldGroupQueue={};this._aSourcePropertiesFailure=new Set();this._mFailedSideEffects={};}},{key:"clearPropertiesStatus",value:function o(){this._aSourcePropertiesFailure.clear();}},{key:"getRegisteredFailedRequests",value:function o(){return this._mFailedSideEffects;}},{key:"handleFieldChange",value:function z(E,o){var p=this;var x=this._getFieldProperties(E),I=this._initializeFieldSideEffects(x,o);var y=false;return this._generateImmediatePromise(x).then(function(){y=true;return Promise.all(I.map(function(A){return p.requestSideEffects(A.sideEffects,A.context);})||[]);}).catch(function(A){if(y){L.debug("Error while processing Field SideEffects",A);}else{I.filter(function(B){return B.previouslyFailed===true;}).forEach(function(B){return p._addFailedSideEffects(B.sideEffects,B.context);});}});}},{key:"handleFieldGroupChange",value:function y(E){var o=this,D=[],p=E.getParameter("fieldGroupIds");var x=function(z){var I=false;var A=z.sideEffectProperty;var B=A.context;var G=B.getPath();var H=o._oSideEffectsService.getEntityTypeFromContext(B);var J=o._getEntityTypeFromFQN(H);return Promise.all(z.promises).then(function(){I=true;if(J&&A.sideEffects.SourceProperties.every(function(K){if(K.type==="PropertyPath"){var M=o._generateStatusIndex(J,K.value,B);if(M){return!o._aSourcePropertiesFailure.has(M);}}return true;})){return o.requestSideEffects(A.sideEffects,A.context);}return null;}).catch(function(K){if(I){L.debug("Error while processing FieldGroup SideEffects on context "+G,K);}}).finally(function(){delete o._mFieldGroupQueue[A.name][G];});};p.forEach(function(z){var A;var B=z.replace("$$ImmediateRequest","");var G=(A=o._mFieldGroupQueue)===null||A===void 0?void 0:A[B];if(G){Object.keys(G).forEach(function(H){var I=G[H];if(!I.processStarted){I.processStarted=true;D.push(I);}});}});return Promise.all(D.map(function(z){return x(z);}));}},{key:"addControlSideEffects",value:function p(E,o){this._oSideEffectsService.addControlSideEffects(E,o);}},{key:"removeFailedSideEffects",value:function o(){this._mFailedSideEffects={};}},{key:"requestSideEffects",value:function B(o,p){var x=this;var R,y;var z=new Promise(function(D,E){R=D;y=E;});var T=(o.TargetEntities||[]).concat(o.TargetProperties||[]),A=o.TriggerAction;if(A){this._oSideEffectsService.executeAction(A,p);}this._oSideEffectsService.requestSideEffects(T,p).then(function(){return R();}).catch(function(E){x._addFailedSideEffects(o,p);y(E);});return z;}},{key:"removeControlSideEffects",value:function x(o){var p=o&&o.isA&&o.isA("sap.ui.base.ManagedObject")&&o.getId();if(p){this._oSideEffectsService.removeControlSideEffects(p);}}},{key:"_addFailedSideEffects",value:function y(o,p){var x=p.getPath();this._mFailedSideEffects[x]=this._mFailedSideEffects[x]||[];var I=this._mFailedSideEffects[x].every(function(z){return o.fullyQualifiedName!==z.fullyQualifiedName;});if(I){this._mFailedSideEffects[x].push(o);}}},{key:"_generateFieldGroupPromise",value:function x(E){var o=this;var p=true;return E.promise.then(function(){return p;}).catch(function(){p=false;return p;}).finally(function(){o._saveFieldPropertiesStatus(E.field,p);});}},{key:"_generateImmediatePromise",value:function o(E){var p=E.promise;return p.then(function(){var x=E.field;var y=x.getFieldHelp&&x.getFieldHelp();if(y){var z=sap.ui.getCore().byId(y);if(z){return Promise.all(z.getOutParameters().map(function(A){var B=A.getBinding("value");return B?B.requestValue():Promise.resolve();}));}}return Promise.all([]);});}},{key:"_generateStatusIndex",value:function z(E,p,o){var x=o.getPath();var y=E.resolvePath(p);if(y){if(y&&y._type==="Property"){return[y.fullyQualifiedName,x].join("__");}}return undefined;}},{key:"_getContextForSideEffects",value:function y(o,p){var B=o.getBindingContext();var x=B,E=this._oSideEffectsService.getEntityTypeFromContext(B);if(p!==E){x=B.getBinding().getContext();if(x){E=this._oSideEffectsService.getEntityTypeFromContext(x);if(p!==E){x=x.getBinding().getContext();if(x){E=this._oSideEffectsService.getEntityTypeFromContext(x);if(p!==E){return undefined;}}}}}return x||undefined;}},{key:"_getEntityTypeFromFQN",value:function p(o){var E=this._oSideEffectsService.getConvertedMetaModel().entityTypes.find(function(x){return x.fullyQualifiedName===o;});return E;}},{key:"_getFieldPromise",value:function o(E){var p=E.getParameter("promise")||Promise.resolve();return p.then(function(){var x=new Promise(function(y,z){if(!F.getFieldStateOnChange(E).state.validity){z();}else{y(true);}});return x;});}},{key:"_getFieldProperties",value:function p(E){var o=E.getSource();return{promise:this._getFieldPromise(E),field:o,sideEffectsMap:this._getFieldSideEffectsMap(o)};}},{key:"_getFieldSideEffectsMap",value:function H(o){var p=this;var x={},y=o.getFieldGroupIds(),V=this._oView.getViewData().entitySet,z=this._oSideEffectsService.getConvertedMetaModel().entitySets.find(function(I){return I.name===V;});y.forEach(function(I){var J;var K=I.indexOf("$$ImmediateRequest")!==-1,N=I.replace("$$ImmediateRequest",""),M=N.split("#"),Q=M[0],R=Q+"@com.sap.vocabularies.Common.v1.SideEffects"+(M.length===2?"#"+M[1]:""),T=(J=p._oSideEffectsService.getODataEntitySideEffects(Q))===null||J===void 0?void 0:J[R],D=p._getContextForSideEffects(o,Q);if(T&&D){x[N]={name:N,immediate:K,sideEffects:T,context:D};}});if(V&&z){var A=z.entityType.fullyQualifiedName,B=o.getAggregation("customData").find(function(I){return I.getKey()==="sourcePath";}),D=this._getContextForSideEffects(o,A);if(B&&D){var E=B.getValue().replace("/"+V+"/",""),G=this._oSideEffectsService.getControlEntitySideEffects(A);Object.keys(G).forEach(function(I){var J=G[I];if(J.SourceProperties.includes(E)){var N=I+"::"+A;x[N]={name:N,immediate:true,sideEffects:J,context:D};}});}}return x;}},{key:"_initializeFieldSideEffects",value:function A(E,o){var p=this;var x=E.sideEffectsMap,y=this._generateFieldGroupPromise(E),z={},I=[];o=o||Promise.resolve();Object.keys(x).forEach(function(B){var D=x[B],G=D.context.getPath(),H=p._mFailedSideEffects[G];if(H){delete p._mFailedSideEffects[G];z[G]={};H.forEach(function(M){z[G][M.fullyQualifiedName]=true;I.push({name:B,previouslyFailed:true,sideEffects:M,context:D.context});});}if(D.immediate){var J;if(!((J=z[G])!==null&&J!==void 0&&J[D.sideEffects.fullyQualifiedName])){I.push({name:B,sideEffects:D.sideEffects,context:D.context});}}else{p._mFieldGroupQueue[B]=p._mFieldGroupQueue[B]||{};var K=p._mFieldGroupQueue[B][G]||{promises:[],sideEffectProperty:D,processStarted:false};K.promises=K.promises.concat([y,o]);p._mFieldGroupQueue[B][G]=K;}});return I;}},{key:"_saveFieldPropertiesStatus",value:function D(o,p){var x=this;var B=o.getBindingContext();var E=this._oSideEffectsService.getEntityTypeFromContext(B);var y=this._getEntityTypeFromFQN(E);if(y){var z=this._getBindingForField(o);var A=z.isA("sap.ui.model.CompositeBinding")?(z.getBindings()||[]).map(function(G){return G.sPath;}):[z.getPath()];A.forEach(function(G){var I=x._generateStatusIndex(y,G,B);if(I){x._aSourcePropertiesFailure[p?"delete":"add"](I);}});}}},{key:"_getBindingForField",value:function p(o){var B;if(o.isA("sap.m.CheckBox")){B=o.getBinding("selected");}else{B=o.getBinding("value");}return B;}}]);return S;}(C),(w(g.prototype,"onInit",[d],Object.getOwnPropertyDescriptor(g.prototype,"onInit"),g.prototype),w(g.prototype,"clearPropertiesStatus",[j,h],Object.getOwnPropertyDescriptor(g.prototype,"clearPropertiesStatus"),g.prototype),w(g.prototype,"getRegisteredFailedRequests",[j,h],Object.getOwnPropertyDescriptor(g.prototype,"getRegisteredFailedRequests"),g.prototype),w(g.prototype,"handleFieldChange",[j,h],Object.getOwnPropertyDescriptor(g.prototype,"handleFieldChange"),g.prototype),w(g.prototype,"handleFieldGroupChange",[j,h],Object.getOwnPropertyDescriptor(g.prototype,"handleFieldGroupChange"),g.prototype),w(g.prototype,"addControlSideEffects",[j,h],Object.getOwnPropertyDescriptor(g.prototype,"addControlSideEffects"),g.prototype),w(g.prototype,"removeFailedSideEffects",[j,h],Object.getOwnPropertyDescriptor(g.prototype,"removeFailedSideEffects"),g.prototype),w(g.prototype,"requestSideEffects",[j,h],Object.getOwnPropertyDescriptor(g.prototype,"requestSideEffects"),g.prototype),w(g.prototype,"removeControlSideEffects",[j,h],Object.getOwnPropertyDescriptor(g.prototype,"removeControlSideEffects"),g.prototype),w(g.prototype,"_addFailedSideEffects",[P,h],Object.getOwnPropertyDescriptor(g.prototype,"_addFailedSideEffects"),g.prototype),w(g.prototype,"_getContextForSideEffects",[P,h],Object.getOwnPropertyDescriptor(g.prototype,"_getContextForSideEffects"),g.prototype)),g))||f);return S;},false);
|
|
5
|
+
sap.ui.define(["sap/ui/core/mvc/ControllerExtension","sap/fe/core/controllerextensions/ControllerExtensionMetadata","../helpers/ClassSupport","sap/fe/core/CommonUtils","sap/fe/macros/field/FieldRuntime","sap/base/Log"],function(C,a,b,c,F,L){"use strict";var _,d,f,g;var P=b.Private;var h=b.Final;var j=b.Public;var O=b.Override;var U=b.UI5Class;function k(i,e){if(!(i instanceof e)){throw new TypeError("Cannot call a class as a function");}}function l(e,p){for(var i=0;i<p.length;i++){var o=p[i];o.enumerable=o.enumerable||false;o.configurable=true;if("value"in o)o.writable=true;Object.defineProperty(e,o.key,o);}}function m(e,p,i){if(p)l(e.prototype,p);if(i)l(e,i);return e;}function n(e,i){if(typeof i!=="function"&&i!==null){throw new TypeError("Super expression must either be null or a function");}e.prototype=Object.create(i&&i.prototype,{constructor:{value:e,writable:true,configurable:true}});if(i)q(e,i);}function q(o,p){q=Object.setPrototypeOf||function q(o,p){o.__proto__=p;return o;};return q(o,p);}function r(D){var e=u();return function p(){var i=v(D),o;if(e){var N=v(this).constructor;o=Reflect.construct(i,arguments,N);}else{o=i.apply(this,arguments);}return s(this,o);};}function s(e,i){if(i&&(typeof i==="object"||typeof i==="function")){return i;}else if(i!==void 0){throw new TypeError("Derived constructors may only return object or undefined");}return t(e);}function t(e){if(e===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return e;}function u(){if(typeof Reflect==="undefined"||!Reflect.construct)return false;if(Reflect.construct.sham)return false;if(typeof Proxy==="function")return true;try{Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));return true;}catch(e){return false;}}function v(o){v=Object.setPrototypeOf?Object.getPrototypeOf:function v(o){return o.__proto__||Object.getPrototypeOf(o);};return v(o);}function w(e,p,i,o,x){var y={};Object.keys(o).forEach(function(z){y[z]=o[z];});y.enumerable=!!y.enumerable;y.configurable=!!y.configurable;if('value'in y||y.initializer){y.writable=true;}y=i.slice().reverse().reduce(function(y,z){return z(e,p,y)||y;},y);if(x&&y.initializer!==void 0){y.value=y.initializer?y.initializer.call(x):void 0;y.initializer=undefined;}if(y.initializer===void 0){Object.defineProperty(e,p,y);y=null;}return y;}var S=(_=U("sap.fe.core.controllerextensions.SideEffects",a),d=O(),_(f=(g=function(e){n(S,e);var i=r(S);function S(){k(this,S);return i.apply(this,arguments);}m(S,[{key:"onInit",value:function o(){this._oView=this.base.getView();this._oAppComponent=c.getAppComponent(this._oView);this._oSideEffectsService=this._oAppComponent.getSideEffectsService();this._mFieldGroupQueue={};this._aSourcePropertiesFailure=new Set();this._mFailedSideEffects={};}},{key:"clearPropertiesStatus",value:function o(){this._aSourcePropertiesFailure.clear();}},{key:"getRegisteredFailedRequests",value:function o(){return this._mFailedSideEffects;}},{key:"handleFieldChange",value:function z(E,o){var p=this;var x=this._getFieldProperties(E),I=this._initializeFieldSideEffects(x,o);var y=false;return this._generateImmediatePromise(x).then(function(){y=true;return Promise.all(I.map(function(A){return p.requestSideEffects(A.sideEffects,A.context);})||[]);}).catch(function(A){if(y){L.debug("Error while processing Field SideEffects",A);}else{I.filter(function(B){return B.previouslyFailed===true;}).forEach(function(B){return p._addFailedSideEffects(B.sideEffects,B.context);});}});}},{key:"handleFieldGroupChange",value:function y(E){var o=this,D=[],p=E.getParameter("fieldGroupIds");var x=function(z){var I=false;var A=z.sideEffectProperty;var B=A.context;var G=B.getPath();var H=o._oSideEffectsService.getEntityTypeFromContext(B);var J=o._getEntityTypeFromFQN(H);return Promise.all(z.promises).then(function(){I=true;if(J&&A.sideEffects.SourceProperties.every(function(K){if(K.type==="PropertyPath"){var M=o._generateStatusIndex(J,K.value,B);if(M){return!o._aSourcePropertiesFailure.has(M);}}return true;})){return o.requestSideEffects(A.sideEffects,A.context);}return null;}).catch(function(K){if(I){L.debug("Error while processing FieldGroup SideEffects on context "+G,K);}}).finally(function(){delete o._mFieldGroupQueue[A.name][G];});};p.forEach(function(z){var A;var B=z.replace("$$ImmediateRequest","");var G=(A=o._mFieldGroupQueue)===null||A===void 0?void 0:A[B];if(G){Object.keys(G).forEach(function(H){var I=G[H];if(!I.processStarted){I.processStarted=true;D.push(I);}});}});return Promise.all(D.map(function(z){return x(z);}));}},{key:"addControlSideEffects",value:function p(E,o){this._oSideEffectsService.addControlSideEffects(E,o);}},{key:"removeFailedSideEffects",value:function o(){this._mFailedSideEffects={};}},{key:"requestSideEffects",value:function B(o,p){var x=this;var R,y;var z=new Promise(function(D,E){R=D;y=E;});var T=(o.TargetEntities||[]).concat(o.TargetProperties||[]),A=o.TriggerAction;if(A){this._oSideEffectsService.executeAction(A,p);}this._oSideEffectsService.requestSideEffects(T,p).then(function(){return R();}).catch(function(E){x._addFailedSideEffects(o,p);y(E);});return z;}},{key:"removeControlSideEffects",value:function x(o){var p=o&&o.isA&&o.isA("sap.ui.base.ManagedObject")&&o.getId();if(p){this._oSideEffectsService.removeControlSideEffects(p);}}},{key:"_addFailedSideEffects",value:function y(o,p){var x=p.getPath();this._mFailedSideEffects[x]=this._mFailedSideEffects[x]||[];var I=this._mFailedSideEffects[x].every(function(z){return o.fullyQualifiedName!==z.fullyQualifiedName;});if(I){this._mFailedSideEffects[x].push(o);}}},{key:"_generateFieldGroupPromise",value:function x(E){var o=this;var p=true;return E.promise.then(function(){return p;}).catch(function(){p=false;return p;}).finally(function(){o._saveFieldPropertiesStatus(E.field,p);});}},{key:"_generateImmediatePromise",value:function o(E){var p=E.promise;return p.then(function(){var x=E.field;var y=x.getFieldHelp&&x.getFieldHelp();if(y){var z=sap.ui.getCore().byId(y);if(z){return Promise.all(z.getOutParameters().map(function(A){var B=A.getBinding("value");return B?B.requestValue():Promise.resolve();}));}}return Promise.all([]);});}},{key:"_generateStatusIndex",value:function z(E,p,o){var x=o.getPath();var y=E.resolvePath(p);if(y){if(y&&y._type==="Property"){return[y.fullyQualifiedName,x].join("__");}}return undefined;}},{key:"_getContextForSideEffects",value:function y(o,p){var B=o.getBindingContext();var x=B,E=this._oSideEffectsService.getEntityTypeFromContext(B);if(p!==E){x=B.getBinding().getContext();if(x){E=this._oSideEffectsService.getEntityTypeFromContext(x);if(p!==E){x=x.getBinding().getContext();if(x){E=this._oSideEffectsService.getEntityTypeFromContext(x);if(p!==E){return undefined;}}}}}return x||undefined;}},{key:"_getEntityTypeFromFQN",value:function p(o){var E=this._oSideEffectsService.getConvertedMetaModel().entityTypes.find(function(x){return x.fullyQualifiedName===o;});return E;}},{key:"_getFieldPromise",value:function o(E){var p=E.getParameter("promise")||Promise.resolve();return p.then(function(){var x=new Promise(function(y,z){if(!F.getFieldStateOnChange(E).state.validity){z();}else{y(true);}});return x;});}},{key:"_getFieldProperties",value:function p(E){var o=E.getSource();return{promise:this._getFieldPromise(E),field:o,sideEffectsMap:this._getFieldSideEffectsMap(o)};}},{key:"_getFieldSideEffectsMap",value:function H(o){var p=this;var x={},y=o.getFieldGroupIds(),V=this._oView.getViewData().entitySet,z=this._oSideEffectsService.getConvertedMetaModel().entitySets.find(function(I){return I.name===V;});y.forEach(function(I){var J;var K=I.indexOf("$$ImmediateRequest")!==-1,N=I.replace("$$ImmediateRequest",""),M=N.split("#"),Q=M[0],R=Q+"@com.sap.vocabularies.Common.v1.SideEffects"+(M.length===2?"#"+M[1]:""),T=(J=p._oSideEffectsService.getODataEntitySideEffects(Q))===null||J===void 0?void 0:J[R],D=p._getContextForSideEffects(o,Q);if(T&&D){x[N]={name:N,immediate:K,sideEffects:T,context:D};}});if(V&&z){var A=z.entityType.fullyQualifiedName,B=o.getAggregation("customData").find(function(I){return I.getKey()==="sourcePath";}),D=this._getContextForSideEffects(o,A);if(B&&D){var E=B.getValue().replace("/"+V+"/",""),G=this._oSideEffectsService.getControlEntitySideEffects(A);Object.keys(G).forEach(function(I){var J=G[I];if(J.SourceProperties.includes(E)){var N=I+"::"+A;x[N]={name:N,immediate:true,sideEffects:J,context:D};}});}}return x;}},{key:"_initializeFieldSideEffects",value:function A(E,o){var p=this;var x=E.sideEffectsMap,y=this._generateFieldGroupPromise(E),z={},I=[];o=o||Promise.resolve();Object.keys(x).forEach(function(B){var D=x[B],G=D.context.getPath(),H=p._mFailedSideEffects[G];if(H){delete p._mFailedSideEffects[G];z[G]={};H.forEach(function(M){z[G][M.fullyQualifiedName]=true;I.push({name:B,previouslyFailed:true,sideEffects:M,context:D.context});});}if(D.immediate){var J;if(!((J=z[G])!==null&&J!==void 0&&J[D.sideEffects.fullyQualifiedName])){I.push({name:B,sideEffects:D.sideEffects,context:D.context});}}else{p._mFieldGroupQueue[B]=p._mFieldGroupQueue[B]||{};var K=p._mFieldGroupQueue[B][G]||{promises:[],sideEffectProperty:D,processStarted:false};K.promises=K.promises.concat([y,o]);p._mFieldGroupQueue[B][G]=K;}});return I;}},{key:"_saveFieldPropertiesStatus",value:function D(o,p){var x=this;var B=o.getBindingContext();var E=this._oSideEffectsService.getEntityTypeFromContext(B);var y=this._getEntityTypeFromFQN(E);if(y){var z=this._getBindingForField(o);var A=z.isA("sap.ui.model.CompositeBinding")?(z.getBindings()||[]).map(function(G){return G.sPath;}):[z.getPath()];A.forEach(function(G){var I=x._generateStatusIndex(y,G,B);if(I){x._aSourcePropertiesFailure[p?"delete":"add"](I);}});}}},{key:"_getBindingForField",value:function p(o){var B="value";if(o.isA("sap.m.CheckBox")){B="selected";}else if(o.isA("sap.ui.unified.FileUploader")){B="uploadUrl";}return o.getBinding(B);}}]);return S;}(C),(w(g.prototype,"onInit",[d],Object.getOwnPropertyDescriptor(g.prototype,"onInit"),g.prototype),w(g.prototype,"clearPropertiesStatus",[j,h],Object.getOwnPropertyDescriptor(g.prototype,"clearPropertiesStatus"),g.prototype),w(g.prototype,"getRegisteredFailedRequests",[j,h],Object.getOwnPropertyDescriptor(g.prototype,"getRegisteredFailedRequests"),g.prototype),w(g.prototype,"handleFieldChange",[j,h],Object.getOwnPropertyDescriptor(g.prototype,"handleFieldChange"),g.prototype),w(g.prototype,"handleFieldGroupChange",[j,h],Object.getOwnPropertyDescriptor(g.prototype,"handleFieldGroupChange"),g.prototype),w(g.prototype,"addControlSideEffects",[j,h],Object.getOwnPropertyDescriptor(g.prototype,"addControlSideEffects"),g.prototype),w(g.prototype,"removeFailedSideEffects",[j,h],Object.getOwnPropertyDescriptor(g.prototype,"removeFailedSideEffects"),g.prototype),w(g.prototype,"requestSideEffects",[j,h],Object.getOwnPropertyDescriptor(g.prototype,"requestSideEffects"),g.prototype),w(g.prototype,"removeControlSideEffects",[j,h],Object.getOwnPropertyDescriptor(g.prototype,"removeControlSideEffects"),g.prototype),w(g.prototype,"_addFailedSideEffects",[P,h],Object.getOwnPropertyDescriptor(g.prototype,"_addFailedSideEffects"),g.prototype),w(g.prototype,"_getContextForSideEffects",[P,h],Object.getOwnPropertyDescriptor(g.prototype,"_getContextForSideEffects"),g.prototype)),g))||f);return S;},false);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ControllerExtension } from "sap/ui/core/mvc";
|
|
2
2
|
import { Binding, Context } from "sap/ui/model";
|
|
3
3
|
import { CheckBox } from "sap/m";
|
|
4
|
+
import { FileUploader } from "sap/ui/unified";
|
|
4
5
|
import { ControllerExtensionMetadata } from "sap/fe/core/controllerextensions";
|
|
5
6
|
import { UI5Class, Override, Public, Final, Private } from "../helpers/ClassSupport";
|
|
6
7
|
import { AppComponent, CommonUtils } from "sap/fe/core";
|
|
@@ -680,13 +681,13 @@ class SideEffectsControllerExtension extends ControllerExtension {
|
|
|
680
681
|
* @returns {Binding} Binding to the value
|
|
681
682
|
*/
|
|
682
683
|
private _getBindingForField(oField: FieldControl): Binding {
|
|
683
|
-
let
|
|
684
|
+
let sBindingName = "value";
|
|
684
685
|
if (oField.isA<CheckBox>("sap.m.CheckBox")) {
|
|
685
|
-
|
|
686
|
-
} else {
|
|
687
|
-
|
|
686
|
+
sBindingName = "selected";
|
|
687
|
+
} else if (oField.isA<FileUploader>("sap.ui.unified.FileUploader")) {
|
|
688
|
+
sBindingName = "uploadUrl";
|
|
688
689
|
}
|
|
689
|
-
return
|
|
690
|
+
return oField.getBinding(sBindingName);
|
|
690
691
|
}
|
|
691
692
|
}
|
|
692
693
|
|
|
@@ -38,8 +38,9 @@
|
|
|
38
38
|
|
|
39
39
|
<template:if test="{= !${parameter>$isCollection} }">
|
|
40
40
|
<template:then>
|
|
41
|
+
<!--The payload of FieldBaseDelegate is used to control the fallback feature 'retrieveTextFromValueList' -->
|
|
41
42
|
<mdc:Field
|
|
42
|
-
delegate="{name:
|
|
43
|
+
delegate="{name:'sap/fe/macros/FieldBaseDelegate', payload:{retrieveTextFromValueList:true}}"
|
|
43
44
|
unittest:id="ActionParameterDialogFieldExpressionTest"
|
|
44
45
|
id="{= ID.generate(['APD_', ${parameter>$Name}]) }"
|
|
45
46
|
value="{parameter>@@MODEL.format}"
|
|
@@ -111,9 +111,12 @@ sap.ui.define(
|
|
|
111
111
|
|
|
112
112
|
DataLossOrDraftDiscardHandler.discardDraft = function(oController, bSkipBindingToView) {
|
|
113
113
|
var oParamsContext = oController.getView().getBindingContext();
|
|
114
|
-
var mParams = {
|
|
115
|
-
|
|
116
|
-
|
|
114
|
+
var mParams = {
|
|
115
|
+
skipBackNavigation: true,
|
|
116
|
+
skipDiscardPopover: true,
|
|
117
|
+
skipBindingToView: bSkipBindingToView !== undefined ? bSkipBindingToView : true
|
|
118
|
+
};
|
|
119
|
+
|
|
117
120
|
return oController.editFlow.cancelDocument(oParamsContext, mParams);
|
|
118
121
|
};
|
|
119
122
|
|
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
(c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
4
|
|
|
5
5
|
*/
|
|
6
|
-
sap.ui.define(["sap/base/Log","sap/ui/model/json/JSONModel","sap/ui/core/XMLTemplateProcessor","sap/ui/core/util/XMLPreprocessor","sap/ui/core/Fragment"],function(L,J,X,a,F){"use strict";var D={};var o;var O;function d(b,c,C,s){var e;o=b;O=c;var f="sap.fe.core.controls.DataLossOrDraftDiscard.DataLossDraft";var v=C.getView();var g={onDataLossKeepDraft:function(){e.close();o();},onDataLossDiscardDraft:function(){e.close();D.discardDraft(C,s).then(o).catch(function(E){L.error("Error while discarding draft",E);});},onDataLossCancel:function(){e.close();O();}};g.setDataLossPopup=function(e){C.dataLossPopup=e;};var t=new J({id:v.getId()}),P={bindingContexts:{"this":t.createBindingContext("/")},models:{"this":t,"this.i18n":v.getModel("sap.fe.i18n")}};var h=X.loadTemplate(f,"fragment");if(C.dataLossPopup){e=C.dataLossPopup;e.open();}else{Promise.resolve(a.process(h,{name:f},P)).then(function(i){return F.load({definition:i,controller:g});}).then(function(i){e=i;v.addDependent(e);var m=new J();e.setModel(m,"dataLoss");var j=C.getView().getModel("sap.fe.i18n");e.setModel(j,"i18n");e.open();g.setDataLossPopup(e);}).catch(function(E){L.error("Error while opening the Discard Dialog fragment",E);});}}function p(P,n,c,s){d(P,n,c,s);}D.performAfterDiscardorKeepDraft=function(P,c,C,s){var r=new Promise(function(b,e){var f=function(g){var r=P(g);b(r);};var n=function(){c();e();};p(f,n,C,s);});return r;};D.discardDraft=function(c,s){var P=c.getView().getBindingContext();var m={
|
|
6
|
+
sap.ui.define(["sap/base/Log","sap/ui/model/json/JSONModel","sap/ui/core/XMLTemplateProcessor","sap/ui/core/util/XMLPreprocessor","sap/ui/core/Fragment"],function(L,J,X,a,F){"use strict";var D={};var o;var O;function d(b,c,C,s){var e;o=b;O=c;var f="sap.fe.core.controls.DataLossOrDraftDiscard.DataLossDraft";var v=C.getView();var g={onDataLossKeepDraft:function(){e.close();o();},onDataLossDiscardDraft:function(){e.close();D.discardDraft(C,s).then(o).catch(function(E){L.error("Error while discarding draft",E);});},onDataLossCancel:function(){e.close();O();}};g.setDataLossPopup=function(e){C.dataLossPopup=e;};var t=new J({id:v.getId()}),P={bindingContexts:{"this":t.createBindingContext("/")},models:{"this":t,"this.i18n":v.getModel("sap.fe.i18n")}};var h=X.loadTemplate(f,"fragment");if(C.dataLossPopup){e=C.dataLossPopup;e.open();}else{Promise.resolve(a.process(h,{name:f},P)).then(function(i){return F.load({definition:i,controller:g});}).then(function(i){e=i;v.addDependent(e);var m=new J();e.setModel(m,"dataLoss");var j=C.getView().getModel("sap.fe.i18n");e.setModel(j,"i18n");e.open();g.setDataLossPopup(e);}).catch(function(E){L.error("Error while opening the Discard Dialog fragment",E);});}}function p(P,n,c,s){d(P,n,c,s);}D.performAfterDiscardorKeepDraft=function(P,c,C,s){var r=new Promise(function(b,e){var f=function(g){var r=P(g);b(r);};var n=function(){c();e();};p(f,n,C,s);});return r;};D.discardDraft=function(c,s){var P=c.getView().getBindingContext();var m={skipBackNavigation:true,skipDiscardPopover:true,skipBindingToView:s!==undefined?s:true};return c.editFlow.cancelDocument(P,m);};return D;});
|