@sap/open.fe 1.94.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/LICENSE.txt +23 -0
- package/README.md +10 -0
- package/package.json +21 -0
- package/packages/sap.fe.common/src/sap/fe/common/.library +36 -0
- package/packages/sap.fe.common/src/sap/fe/common/.theming +6 -0
- package/packages/sap.fe.common/src/sap/fe/common/MessageButton-dbg.js +1378 -0
- package/packages/sap.fe.common/src/sap/fe/common/MessageButton.js +6 -0
- package/packages/sap.fe.common/src/sap/fe/common/MessageFilter-dbg.js +36 -0
- package/packages/sap.fe.common/src/sap/fe/common/MessageFilter.js +6 -0
- package/packages/sap.fe.common/src/sap/fe/common/MessagePopover-dbg.js +56 -0
- package/packages/sap.fe.common/src/sap/fe/common/MessagePopover.js +6 -0
- package/packages/sap.fe.common/src/sap/fe/common/library-dbg.js +41 -0
- package/packages/sap.fe.common/src/sap/fe/common/library-h2-preload.js +18 -0
- package/packages/sap.fe.common/src/sap/fe/common/library-h2-preload.js.map +9 -0
- package/packages/sap.fe.common/src/sap/fe/common/library-preload.js +68 -0
- package/packages/sap.fe.common/src/sap/fe/common/library-preload.js.map +9 -0
- package/packages/sap.fe.common/src/sap/fe/common/library.js +6 -0
- package/packages/sap.fe.common/src/sap/fe/common/manifest.json +40 -0
- package/packages/sap.fe.common/src/sap/fe/common/resources.json +186 -0
- package/packages/sap.fe.common/test/sap/fe/common/designtime/api.json +1 -0
- package/packages/sap.fe.common/test/sap/fe/common/designtime/apiref/api.json +1 -0
- package/packages/sap.fe.common/test/sap/fe/common/designtime/codeassistance/Library.jsmeta.json +1 -0
- package/packages/sap.fe.common/test/sap/fe/common/designtime/codeassistance/Library.jstemplates.json +1 -0
- package/packages/sap.fe.common/test/sap/fe/common/designtime/codeassistance/Library.xmlmeta.json +1 -0
- package/packages/sap.fe.common/test/sap/fe/common/designtime/codeassistance/Library.xmltemplates.json +1 -0
- package/packages/sap.fe.common/test/sap/fe/common/relnotes/changes-1.91.json +23 -0
- package/packages/sap.fe.common/test/sap/fe/common/relnotes/changes-1.94.json +23 -0
- package/packages/sap.fe.core/src/sap/fe/core/.library +60 -0
- package/packages/sap.fe.core/src/sap/fe/core/.supportrc +4 -0
- package/packages/sap.fe.core/src/sap/fe/core/.theming +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper-dbg.js +409 -0
- package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/AppComponent-dbg.js +433 -0
- package/packages/sap.fe.core/src/sap/fe/core/AppComponent.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/AppStateHandler-dbg.js +184 -0
- package/packages/sap.fe.core/src/sap/fe/core/AppStateHandler.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/BaseController-dbg.js +65 -0
- package/packages/sap.fe.core/src/sap/fe/core/BaseController.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/BusyLocker-dbg.js +112 -0
- package/packages/sap.fe.core/src/sap/fe/core/BusyLocker.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/CommonUtils-dbg.js +2246 -0
- package/packages/sap.fe.core/src/sap/fe/core/CommonUtils.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/ExtensionAPI-dbg.js +269 -0
- package/packages/sap.fe.core/src/sap/fe/core/ExtensionAPI.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/PageController-dbg.js +120 -0
- package/packages/sap.fe.core/src/sap/fe/core/PageController.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/RouterProxy-dbg.js +822 -0
- package/packages/sap.fe.core/src/sap/fe/core/RouterProxy.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/Synchronization-dbg.js +38 -0
- package/packages/sap.fe.core/src/sap/fe/core/Synchronization.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/TemplateComponent-dbg.js +152 -0
- package/packages/sap.fe.core/src/sap/fe/core/TemplateComponent.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/TemplateModel-dbg.js +57 -0
- package/packages/sap.fe.core/src/sap/fe/core/TemplateModel.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper-dbg.js +1584 -0
- package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/actions/draft-dbg.js +584 -0
- package/packages/sap.fe.core/src/sap/fe/core/actions/draft.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling-dbg.js +439 -0
- package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/actions/nonDraft-dbg.js +23 -0
- package/packages/sap.fe.core/src/sap/fe/core/actions/nonDraft.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/actions/operations-dbg.js +1174 -0
- package/packages/sap.fe.core/src/sap/fe/core/actions/operations.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/actions/sticky-dbg.js +121 -0
- package/packages/sap.fe.core/src/sap/fe/core/actions/sticky.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata-dbg.js +75 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow-dbg.js +1667 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/IntentBasedNavigation-dbg.js +57 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalEditFlow-dbg.js +501 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalEditFlow.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +707 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting-dbg.js +989 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/KPIManagement-dbg.js +417 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/KPIManagement.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/KPIManagement.ts +399 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler-dbg.js +116 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/PageReady-dbg.js +403 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/PageReady.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/PageReady.ts +350 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Paginator-dbg.js +135 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Paginator.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Placeholder-dbg.js +287 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Placeholder.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Routing-dbg.js +109 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Routing.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/RoutingListener-dbg.js +9 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/RoutingListener.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Share-dbg.js +258 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Share.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/SideEffects-dbg.js +711 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/SideEffects.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/SideEffects.ts +692 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ViewState-dbg.js +615 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ViewState.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +76 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/ActionPartial.fragment.xml +91 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/CommandExecution-dbg.js +71 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/CommandExecution.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/ConditionalWrapper-dbg.js +82 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/ConditionalWrapper.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/CustomQuickViewPage-dbg.js +127 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/CustomQuickViewPage.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossDraft.fragment.xml +12 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler-dbg.js +122 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/FieldWrapper-dbg.js +150 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/FieldWrapper.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/FilterBar-dbg.js +162 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/FilterBar.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/FormElementWrapper-dbg.js +47 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/FormElementWrapper.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +61 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/FilterContainer-dbg.js +122 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/FilterContainer.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilter-dbg.js +209 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilter.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilterContainer-dbg.js +148 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils-dbg.js +319 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/ConverterContext-dbg.js +500 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/ConverterContext.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/ConverterContext.ts +460 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings-dbg.js +90 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings.ts +431 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestWrapper-dbg.js +404 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestWrapper.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestWrapper.ts +322 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter-dbg.js +1294 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter.ts +1172 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/TemplateConverter-dbg.js +100 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/TemplateConverter.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/TemplateConverter.ts +126 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField-dbg.js +335 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField.ts +306 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/common/AnnotationConverter-dbg.js +1692 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/common/AnnotationConverter.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Action-dbg.js +349 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Action.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Action.ts +353 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Chart-dbg.js +206 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Chart.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Chart.ts +202 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Criticality-dbg.js +50 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Criticality.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Criticality.ts +33 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/DataVisualization-dbg.js +276 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/DataVisualization.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +296 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form-dbg.js +222 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form.ts +241 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/KPI-dbg.js +181 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/KPI.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/KPI.ts +220 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table-dbg.js +2100 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table.ts +2446 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/FilterBar-dbg.js +499 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +545 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/VisualFilters-dbg.js +335 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +316 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet-dbg.js +495 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +502 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ObjectPage/SubSection-dbg.js +674 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +711 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Aggregation-dbg.js +204 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Aggregation.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Aggregation.ts +176 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/BindingHelper-dbg.js +96 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/BindingHelper.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/BindingHelper.ts +76 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ConfigurableObject-dbg.js +217 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ConfigurableObject.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +211 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ID-dbg.js +90 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ID.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ID.ts +45 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/IssueManager-dbg.js +61 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/IssueManager.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/IssueManager.ts +41 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Key-dbg.js +86 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Key.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Key.ts +49 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/SelectionVariantHelper-dbg.js +93 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +92 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/objectPage/FormMenuActions-dbg.js +164 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/objectPage/FormMenuActions.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +160 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction-dbg.js +427 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +414 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter-dbg.js +552 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter.ts +601 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ObjectPageConverter-dbg.js +320 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ObjectPageConverter.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +314 -0
- package/packages/sap.fe.core/src/sap/fe/core/designtime/AppComponent-dbg.designtime.js +93 -0
- package/packages/sap.fe.core/src/sap/fe/core/designtime/AppComponent.designtime.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/designtime/library-preload.designtime.js +8 -0
- package/packages/sap.fe.core/src/sap/fe/core/designtime/library-preload.designtime.js.map +9 -0
- package/packages/sap.fe.core/src/sap/fe/core/formatters/CriticalityFormatter-dbg.js +77 -0
- package/packages/sap.fe.core/src/sap/fe/core/formatters/CriticalityFormatter.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/formatters/CriticalityFormatter.ts +58 -0
- package/packages/sap.fe.core/src/sap/fe/core/formatters/FPMFormatter-dbg.js +51 -0
- package/packages/sap.fe.core/src/sap/fe/core/formatters/FPMFormatter.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/formatters/FPMFormatter.ts +41 -0
- package/packages/sap.fe.core/src/sap/fe/core/formatters/KPIFormatter-dbg.js +103 -0
- package/packages/sap.fe.core/src/sap/fe/core/formatters/KPIFormatter.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/formatters/KPIFormatter.ts +88 -0
- package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter-dbg.js +100 -0
- package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter.ts +80 -0
- package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatterTypes-dbg.js +23 -0
- package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatterTypes.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatterTypes.ts +7 -0
- package/packages/sap.fe.core/src/sap/fe/core/formatters/ValueFormatter-dbg.js +162 -0
- package/packages/sap.fe.core/src/sap/fe/core/formatters/ValueFormatter.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/formatters/ValueFormatter.ts +130 -0
- package/packages/sap.fe.core/src/sap/fe/core/fpm/Component-dbg.js +58 -0
- package/packages/sap.fe.core/src/sap/fe/core/fpm/Component.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/fpm/manifest.json +64 -0
- package/packages/sap.fe.core/src/sap/fe/core/fpm/resources.json +18 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/AnnotationEnum-dbg.js +49 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/AnnotationEnum.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/AnnotationEnum.ts +18 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/BindingExpression-dbg.js +1667 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/BindingExpression.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/BindingExpression.ts +1765 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/ClassSupport-dbg.js +314 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/ClassSupport.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/ClassSupport.ts +232 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/DynamicAnnotationPathHelper-dbg.js +62 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/EditState-dbg.js +92 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/EditState.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/ExcelFormatHelper-dbg.js +53 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/ExcelFormatHelper.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/FPMHelper-dbg.js +64 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/FPMHelper.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper-dbg.js +150 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/PasteHelper-dbg.js +130 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/PasteHelper.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/SemanticDateOperators-dbg.js +327 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/SemanticDateOperators.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/SemanticKeyHelper-dbg.js +78 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/SemanticKeyHelper.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/StableIdHelper-dbg.js +267 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/StableIdHelper.js +9 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/StableIdHelper.ts +228 -0
- package/packages/sap.fe.core/src/sap/fe/core/jsx-runtime/jsx-dbg.js +75 -0
- package/packages/sap.fe.core/src/sap/fe/core/jsx-runtime/jsx.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/jsx-runtime/jsx.ts +83 -0
- package/packages/sap.fe.core/src/sap/fe/core/jsx-runtime/jsxs-dbg.js +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/jsx-runtime/jsxs.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/jsx-runtime/jsxs.ts +3 -0
- package/packages/sap.fe.core/src/sap/fe/core/library-dbg.js +429 -0
- package/packages/sap.fe.core/src/sap/fe/core/library-h2-preload.js +123 -0
- package/packages/sap.fe.core/src/sap/fe/core/library-h2-preload.js.map +9 -0
- package/packages/sap.fe.core/src/sap/fe/core/library-preload.js +1201 -0
- package/packages/sap.fe.core/src/sap/fe/core/library-preload.js.map +9 -0
- package/packages/sap.fe.core/src/sap/fe/core/library-preload.support.js +148 -0
- package/packages/sap.fe.core/src/sap/fe/core/library-preload.support.js.map +9 -0
- package/packages/sap.fe.core/src/sap/fe/core/library.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/library.support.js +32 -0
- package/packages/sap.fe.core/src/sap/fe/core/manifest.json +121 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle.properties +417 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ar.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_bg.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ca.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_cs.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_cy.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_da.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_de.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_el.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_GB.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_sappsd.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_saprigi.properties +275 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_saptrc.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_es.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_es_MX.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_et.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fi.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fr.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fr_CA.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hi.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hr.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hu.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_id.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_it.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_iw.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ja.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_kk.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ko.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_lt.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_lv.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ms.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_nl.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_no.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pl.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pt.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pt_PT.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ro.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ru.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sh.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sk.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sl.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sv.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_th.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_tr.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_uk.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_vi.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_zh_CN.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_zh_TW.properties +273 -0
- package/packages/sap.fe.core/src/sap/fe/core/resources.json +4087 -0
- package/packages/sap.fe.core/src/sap/fe/core/services/AsyncComponentServiceFactory-dbg.js +106 -0
- package/packages/sap.fe.core/src/sap/fe/core/services/AsyncComponentServiceFactory.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +58 -0
- package/packages/sap.fe.core/src/sap/fe/core/services/CacheHandlerServiceFactory-dbg.js +205 -0
- package/packages/sap.fe.core/src/sap/fe/core/services/CacheHandlerServiceFactory.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/services/EnvironmentServiceFactory-dbg.js +128 -0
- package/packages/sap.fe.core/src/sap/fe/core/services/EnvironmentServiceFactory.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/services/EnvironmentServiceFactory.ts +71 -0
- package/packages/sap.fe.core/src/sap/fe/core/services/NavigationServiceFactory-dbg.js +303 -0
- package/packages/sap.fe.core/src/sap/fe/core/services/NavigationServiceFactory.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/services/ResourceModelServiceFactory-dbg.js +84 -0
- package/packages/sap.fe.core/src/sap/fe/core/services/ResourceModelServiceFactory.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory-dbg.js +1099 -0
- package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/services/ShellServicesFactory-dbg.js +819 -0
- package/packages/sap.fe.core/src/sap/fe/core/services/ShellServicesFactory.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/services/ShellServicesFactory.ts +720 -0
- package/packages/sap.fe.core/src/sap/fe/core/services/SideEffectsServiceFactory-dbg.js +731 -0
- package/packages/sap.fe.core/src/sap/fe/core/services/SideEffectsServiceFactory.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/services/SideEffectsServiceFactory.ts +668 -0
- package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +471 -0
- package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/services/view/TemplatingErrorPage-dbg.controller.js +12 -0
- package/packages/sap.fe.core/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/services/view/TemplatingErrorPage.view.xml +8 -0
- package/packages/sap.fe.core/src/sap/fe/core/support/AnnotationIssue.support.js +38 -0
- package/packages/sap.fe.core/src/sap/fe/core/support/AnnotationIssue.support.ts +20 -0
- package/packages/sap.fe.core/src/sap/fe/core/support/CollectionFacetMissingID.support.js +38 -0
- package/packages/sap.fe.core/src/sap/fe/core/support/CollectionFacetMissingID.support.ts +18 -0
- package/packages/sap.fe.core/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +38 -0
- package/packages/sap.fe.core/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.ts +18 -0
- package/packages/sap.fe.core/src/sap/fe/core/support/CommonHelper-dbg.js +71 -0
- package/packages/sap.fe.core/src/sap/fe/core/support/CommonHelper.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/support/CommonHelper.ts +67 -0
- package/packages/sap.fe.core/src/sap/fe/core/support/Diagnostics-dbg.js +73 -0
- package/packages/sap.fe.core/src/sap/fe/core/support/Diagnostics.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/support/Diagnostics.ts +66 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/CriticalityFormatters-dbg.js +156 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/CriticalityFormatters.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/CriticalityFormatters.ts +226 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/DataFieldFormatters-dbg.js +77 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/DataFieldFormatters.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/DataFieldFormatters.ts +54 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/DataModelPathHelper-dbg.js +444 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/DataModelPathHelper.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/DataModelPathHelper.ts +428 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/EntitySetHelper-dbg.js +33 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/EntitySetHelper.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/EntitySetHelper.ts +13 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/FieldControlHelper-dbg.js +89 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/FieldControlHelper.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/FieldControlHelper.ts +53 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/FilterHelper-dbg.js +331 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/FilterHelper.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/FilterHelper.ts +310 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/FilterTemplating-dbg.js +66 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/FilterTemplating.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/FilterTemplating.ts +39 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/PropertyFormatters-dbg.js +126 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/PropertyFormatters.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/PropertyFormatters.ts +86 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/PropertyHelper-dbg.js +303 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/PropertyHelper.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/PropertyHelper.ts +209 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/UIFormatters-dbg.js +525 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/UIFormatters.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/UIFormatters.ts +489 -0
- package/packages/sap.fe.core/src/sap/fe/core/type/Email-dbg.js +20 -0
- package/packages/sap.fe.core/src/sap/fe/core/type/Email.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/type/Email.ts +18 -0
- package/packages/sap.fe.core/test/sap/fe/core/designtime/api.json +1 -0
- package/packages/sap.fe.core/test/sap/fe/core/designtime/apiref/api.json +1 -0
- package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.jsmeta.json +1 -0
- package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.jstemplates.json +1 -0
- package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.xmlmeta.json +1 -0
- package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.xmltemplates.json +1 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/Component.js +56 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/controller/App.controller.js +252 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/controller/BaseController.js +46 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/controller/ControllerExtensions.controller.js +380 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/controller/CustomElements.controller.js +380 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/controller/MacrosPage.controller.js +382 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/controller/Overview.controller.js +99 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/controller/Topic.controller.js +71 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/controls/FileEditor.js +401 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/css/FileEditor.css +8 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/css/codesample.css +172 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/css/markdown-styles.css +3 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/css/style.css +48 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/css/topic.css +176 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/index.html +62 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/manifest.json +132 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/model/ControllerExtensionNavigationModel.js +174 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/model/CustomElementNavigationModel.js +327 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/model/ExploreSettingsModel.js +12 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/model/MacroNavigationModel.js +709 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/model/OverviewNavigationModel.js +15 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/scripts/boot.js +68 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/service-worker.js +100 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/template/.gitignore.tmpl +0 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/template/.npmrc.tmpl +0 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/template/README.md +43 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/template/package.json +31 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/template/ui5-local.yaml +25 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/template/ui5.yaml +25 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/template/webapp/Component.js +9 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/template/webapp/i18n/i18n.properties +9 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/template/webapp/index.html +28 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/template/webapp/manifest.json +165 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/FCL/FclNavigationButtons/Component.js +31 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/FCL/FclNavigationButtons/localService/Incidents.json +56 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/FCL/FclNavigationButtons/localService/service.cds +32 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/FCL/FclNavigationButtons/manifest.json +109 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/FCL/FclNavigationButtons/myViewTest.controller.js +6 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/FCL/FclNavigationButtons/myViewTest.view.xml +30 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/FclNavigationButtons.html +37 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/buildingBlockOverview.html +24 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/buildingBlockOverview.md +23 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartDefault/ChartDefault.controller.js +5 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartDefault/ChartDefault.view.xml +21 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartDefault/Component.js +36 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartDefault/localService/ChildEntity.json +686 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartDefault/localService/CreditLimitDetails.json +154 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartDefault/localService/RootEntity.json +252 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartDefault/localService/service.cds +122 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartDefault/manifest.json +69 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartQualifier/ChartQualifier.controller.js +5 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartQualifier/ChartQualifier.view.xml +20 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartQualifier/Component.js +36 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartQualifier/localService/ChildEntity.json +686 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartQualifier/localService/CreditLimitDetails.json +154 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartQualifier/localService/RootEntity.json +252 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartQualifier/localService/service.cds +122 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartQualifier/manifest.json +69 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartSelectionMode/ChartSelectionMode.controller.js +5 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartSelectionMode/ChartSelectionMode.view.xml +36 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartSelectionMode/Component.js +36 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartSelectionMode/localService/ChildEntity.json +686 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartSelectionMode/localService/CreditLimitDetails.json +154 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartSelectionMode/localService/RootEntity.json +277 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartSelectionMode/localService/service.cds +122 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartSelectionMode/manifest.json +69 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chartDefault.html +37 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chartQualifier.html +37 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chartSelectionMode.html +37 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldDisplay/Component.js +34 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldDisplay/FieldDisplay.view.xml +64 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldDisplay/localService/ChildEntity.json +14 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldDisplay/localService/FieldDisplay.cds +94 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldDisplay/localService/RootEntity.json +23 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldDisplay/localService/ValueHelpEntity.js +11 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldDisplay/manifest.json +68 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldEdit/Component.js +33 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldEdit/FieldEdit.controller.js +10 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldEdit/FieldEdit.view.xml +101 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldEdit/localService/ChildEntity.json +14 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldEdit/localService/FieldControlValueHelpEntity.json +14 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldEdit/localService/FieldEdit.cds +77 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldEdit/localService/RootEntity.json +14 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldEdit/localService/localAnnotations.xml +38 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldEdit/manifest.json +75 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldEvents/Component.js +33 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldEvents/FieldEvents.controller.js +23 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldEvents/FieldEvents.view.xml +20 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldEvents/localService/Entities.json +6 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldEvents/localService/service.cds +6 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldEvents/manifest.json +68 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldFormatOptions/Component.js +33 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldFormatOptions/FieldFormatOptions.controller.js +10 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldFormatOptions/FieldFormatOptions.view.xml +132 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldFormatOptions/localService/Currencies.json +29 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldFormatOptions/localService/Currencies_texts.json +38 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldFormatOptions/localService/FieldFormatOptions.cds +58 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldFormatOptions/localService/Languages.json +17 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldFormatOptions/localService/Languages_texts.json +38 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldFormatOptions/localService/RootEntity.json +13 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldFormatOptions/localService/UnitOfMeasure.json +12 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldFormatOptions/manifest.json +68 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldNavProp/Component.js +33 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldNavProp/FieldNavProp.controller.js +10 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldNavProp/FieldNavProp.view.xml +114 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldNavProp/localService/FieldNavProp.cds +161 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldNavProp/localService/NavProp1.json +25 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldNavProp/localService/NavProp2.json +7 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldNavProp/localService/RootEntity.json +14 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldNavProp/localService/ValueHelpEntity.json +14 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldNavProp/manifest.json +68 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/fieldDisplay.html +37 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/fieldEdit.html +37 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/fieldEvents.html +37 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/fieldFormatOptions.html +37 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/fieldNavProp.html +37 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarDefault/Component.js +36 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarDefault/FilterBarDefault.controller.js +35 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarDefault/FilterBarDefault.view.xml +58 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarDefault/localService/ChildEntity.json +686 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarDefault/localService/CreditLimitDetails.json +154 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarDefault/localService/RootEntity.json +102 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarDefault/localService/ValueHelpEntity.js +11 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarDefault/localService/service.cds +96 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarDefault/manifest.json +68 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBarDefault.html +37 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/formElement/formElementCustomField/Component.js +33 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/formElement/formElementCustomField/FormElementCustomField.view.xml +49 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/formElement/formElementCustomField/localService/FormElementCustomField.cds +19 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/formElement/formElementCustomField/localService/RootEntity.json +13 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/formElement/formElementCustomField/manifest.json +68 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/formElement/formElementLabel/Component.js +33 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/formElement/formElementLabel/FormElementLabel.view.xml +32 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/formElement/formElementLabel/localService/FormElementLabel.cds +19 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/formElement/formElementLabel/localService/RootEntity.json +13 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/formElement/formElementLabel/manifest.json +68 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/formElementCustomField.html +37 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/formElementLabel.html +37 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/i18n/i18n.properties +19 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microChartDefault.html +37 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microChartDynamicSize.html +37 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microChartHideOnNoData.html +37 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microChartShowOnlyChart.html +37 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartDefault/Component.js +36 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartDefault/MicroChartDefault.controller.js +5 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartDefault/MicroChartDefault.view.xml +83 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartDefault/localService/ChildEntity.json +686 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartDefault/localService/CreditLimitDetails.json +154 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartDefault/localService/RootEntity.json +34 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartDefault/localService/service.cds +308 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartDefault/manifest.json +69 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartDynamicSize/Component.js +36 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartDynamicSize/MicroChartDynamicSize.controller.js +5 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartDynamicSize/MicroChartDynamicSize.view.xml +93 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartDynamicSize/localService/ChildEntity.json +686 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartDynamicSize/localService/CreditLimitDetails.json +154 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartDynamicSize/localService/RootEntity.json +34 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartDynamicSize/localService/service.cds +308 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartDynamicSize/manifest.json +69 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartHideOnNoData/Component.js +36 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartHideOnNoData/MicroChartHideOnNoData.controller.js +5 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartHideOnNoData/MicroChartHideOnNoData.view.xml +91 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartHideOnNoData/localService/ChildEntity.json +686 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartHideOnNoData/localService/CreditLimitDetails.json +154 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartHideOnNoData/localService/RootEntity.json +34 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartHideOnNoData/localService/service.cds +308 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartHideOnNoData/manifest.json +69 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartShowOnlyChart/Component.js +36 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartShowOnlyChart/MicroChartShowOnlyChart.controller.js +5 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartShowOnlyChart/MicroChartShowOnlyChart.view.xml +93 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartShowOnlyChart/localService/ChildEntity.json +686 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartShowOnlyChart/localService/CreditLimitDetails.json +154 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartShowOnlyChart/localService/RootEntity.json +34 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartShowOnlyChart/localService/service.cds +308 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartShowOnlyChart/manifest.json +69 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/paginator/paginatorDefault/Component.js +36 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/paginator/paginatorDefault/PaginatorDefault.controller.js +27 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/paginator/paginatorDefault/PaginatorDefault.view.xml +45 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/paginator/paginatorDefault/localService/RootEntity.json +102 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/paginator/paginatorDefault/localService/ValueHelpEntity.js +11 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/paginator/paginatorDefault/localService/service.cds +90 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/paginator/paginatorDefault/manifest.json +79 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/paginatorDefault.html +37 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/share/Component.js +34 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/share/Share.controller.js +5 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/share/Share.view.xml +23 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/share/localService/RootEntity.json +5 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/share/localService/Share.cds +11 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/share/manifest.json +68 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/shareDefault.html +37 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/Component.js +40 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/Page.controller.js +32 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/Page.view.xml +32 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/localService/RootEntity.json +82 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/localService/service.cds +82 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/manifest.json +78 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableDefault/Component.js +36 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableDefault/TableDefault.controller.js +5 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableDefault/TableDefault.view.xml +10 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableDefault/localService/RootEntity.json +102 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableDefault/localService/ValueHelpEntity.js +11 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableDefault/localService/service.cds +90 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableDefault/manifest.json +79 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableEdit/Component.js +35 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableEdit/TableEdit.controller.js +19 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableEdit/TableEdit.view.xml +31 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableEdit/localService/RootEntity.json +78 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableEdit/localService/ValueHelpCurrencyEntity.json +5 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableEdit/localService/ValueHelpEntity.js +11 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableEdit/localService/service.cds +119 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableEdit/manifest.json +82 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/tableCustoms.html +37 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/tableDefault.html +37 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/tableEdit.html +37 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/basicExtensibility/Component.js +35 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/basicExtensibility/OPExtend.controller.js +41 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/basicExtensibility/localService/RootEntity.json +12 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/basicExtensibility/localService/service.cds +52 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/basicExtensibility/manifest.json +76 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/basicExtensibility.html +37 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/controllerExtensionsOverview.html +24 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/controllerExtensionsOverview.md +18 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/intentBasedNavigation/Component.js +35 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/intentBasedNavigation/IntentBasedNavigation.controller.js +21 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/intentBasedNavigation/IntentBasedNavigation.view.xml +23 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/intentBasedNavigation/localService/RootEntity.json +12 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/intentBasedNavigation/localService/service.cds +40 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/intentBasedNavigation/manifest.json +76 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/intentBasedNavigation.html +70 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/routingExtensibility/Component.js +35 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/routingExtensibility/extendLR.controller.js +63 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/routingExtensibility/extendOP.controller.js +13 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/routingExtensibility/localService/RootEntity.json +18 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/routingExtensibility/localService/service.cds +64 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/routingExtensibility/manifest.json +103 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/routingExtensibility.html +70 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/share/Component.js +35 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/share/Share.controller.js +11 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/share/Share.view.xml +21 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/share/ShareExtend.js +15 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/share/localService/RootEntity.json +5 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/share/localService/service.cds +11 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/share/manifest.json +68 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/shareExtensibility.html +37 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/viewState/Component.js +35 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/viewState/CustomSection.fragment.xml +15 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/viewState/OPExtend.controller.js +57 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/viewState/localService/RootEntity.json +12 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/viewState/localService/service.cds +40 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/viewState/manifest.json +86 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/viewState.html +70 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customAction/customActionContent/Component.js +35 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customAction/customActionContent/CustomAction.js +41 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customAction/customActionContent/extendOP.controller.js +9 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customAction/customActionContent/localService/ChildEntity.json +22 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customAction/customActionContent/localService/RootEntity.json +10 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customAction/customActionContent/localService/service.cds +73 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customAction/customActionContent/manifest.json +133 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customActionContent.html +36 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/Component.js +35 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/CustomColumn.js +25 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/CustomColumnAdaptation.fragment.xml +11 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/CustomColumnButton.fragment.xml +5 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/localService/ChildEntity.json +26 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/localService/RootEntity.json +9 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/localService/service.cds +55 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/manifest.json +98 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumnContent.html +36 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customElementsOverview.html +24 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customElementsOverview.md +21 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customFilter/customFilterContent/Component.js +35 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customFilter/customFilterContent/CustomFilter.js +28 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customFilter/customFilterContent/CustomRatingFilter.fragment.xml +8 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customFilter/customFilterContent/CustomRatingFilterOperator.fragment.xml +17 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customFilter/customFilterContent/localService/RootEntity.json +37 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customFilter/customFilterContent/localService/service.cds +75 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customFilter/customFilterContent/manifest.json +87 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customFilterContent.html +36 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customHeaderFacet/customHeaderFacetContent/Component.js +35 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customHeaderFacet/customHeaderFacetContent/CustomHeaderFacetColumnChart.fragment.xml +19 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customHeaderFacet/customHeaderFacetContent/CustomHeaderFacetDataPoint.fragment.xml +11 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customHeaderFacet/customHeaderFacetContent/CustomHeaderFacetMicroChartAndFormElement.fragment.xml +42 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customHeaderFacet/customHeaderFacetContent/localService/RootEntity.json +12 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customHeaderFacet/customHeaderFacetContent/localService/service.cds +54 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customHeaderFacet/customHeaderFacetContent/manifest.json +127 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customHeaderFacetContent.html +36 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customPage/customPageContent/Component.js +35 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customPage/customPageContent/CustomDetailPage.controller.js +12 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customPage/customPageContent/CustomDetailPage.view.xml +64 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customPage/customPageContent/CustomPage.controller.js +10 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customPage/customPageContent/CustomPage.view.xml +39 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customPage/customPageContent/localService/ChildEntity.json +23 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customPage/customPageContent/localService/RootEntity.json +41 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customPage/customPageContent/localService/ValueHelpCurrencyEntity.json +5 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customPage/customPageContent/localService/ValueHelpEntity.js +11 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customPage/customPageContent/localService/resources/275081.jpg +0 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customPage/customPageContent/localService/resources/275472.jpg +0 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customPage/customPageContent/localService/service.cds +144 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customPage/customPageContent/manifest.json +119 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customPageContent.html +70 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSection/customSectionContent/Component.js +36 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSection/customSectionContent/CustomSection.fragment.xml +13 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSection/customSectionContent/CustomSectionFormElementAndTable.fragment.xml +36 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSection/customSectionContent/CustomSectionNavigation.fragment.xml +44 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSection/customSectionContent/CustomSectionNavigation.js +11 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSection/customSectionContent/extendOP.controller.js +13 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSection/customSectionContent/localService/ChildEntity.json +82 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSection/customSectionContent/localService/RootEntity.json +9 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSection/customSectionContent/localService/ValueHelpCurrencyEntity.json +5 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSection/customSectionContent/localService/ValueHelpEntity.js +11 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSection/customSectionContent/localService/service.cds +177 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSection/customSectionContent/manifest.json +129 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSectionContent.html +36 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customViewInLR/customViewInLRContent/Component.js +35 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customViewInLR/customViewInLRContent/CustomButton.js +12 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customViewInLR/customViewInLRContent/CustomViewWithButton.fragment.xml +12 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customViewInLR/customViewInLRContent/CustomViewWithTable.fragment.xml +46 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customViewInLR/customViewInLRContent/LRExtend.controller.js +31 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customViewInLR/customViewInLRContent/localService/RootEntity.json +37 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customViewInLR/customViewInLRContent/localService/service.cds +70 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customViewInLR/customViewInLRContent/manifest.json +100 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customViewInLRContent.html +36 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/i18n/i18n.properties +61 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/overview/introduction.html +24 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/overview/introduction.md +6 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/util/FileUtils.js +124 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/view/App.view.xml +60 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/view/ControllerExtensions.view.xml +97 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/view/CustomElements.view.xml +97 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/view/MacrosPage.view.xml +97 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/view/Overview.view.xml +13 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/BindingExpression-AnnotationExpression.spec.js +140 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/BindingExpression-AnnotationExpression.spec.ts +142 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/BindingExpression.spec.js +504 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/BindingExpression.spec.ts +751 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/TemplateConverter.spec.js +74 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/TemplateConverter.spec.ts +75 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/__snapshots__/BindingExpression-AnnotationExpression.spec.ts.snap +7 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/__snapshots__/TemplateConverter.spec.ts.snap +17450 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/KPIManagement.spec.js +582 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/KPIManagement.spec.ts +515 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/SideEffects.spec.js +636 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/SideEffects.spec.ts +547 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ConverterContext.spec.js +60 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ConverterContext.spec.ts +57 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/HeaderFacet.spec.js +436 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/HeaderFacet.spec.ts +469 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/KPITag.spec.js +346 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/KPITag.spec.ts +357 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ListReportConverter.spec.js +255 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ListReportConverter.spec.ts +254 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/MetaModelConverter.spec.js +67 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/MetaModelConverter.spec.ts +43 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ObjectPageConverter.spec.js +577 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ObjectPageConverter.spec.ts +593 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Table.spec.js +1206 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Table.spec.ts +1361 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/__snapshots__/Table.spec.ts.snap +21 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/AnalyticalService.cds +16 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/BindingExpression-AnnotationExpression.xml +248 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/ConverterContext.cds +34 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/HeaderFacets.cds +199 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/KPI.cds +320 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/KPINone.cds +78 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/ListReportConverter.cds +164 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/MetaModelConverter.cds +43 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/MetaModelConverterBoundAction.cds +31 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/ObjectPageConverter.cds +161 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/PropertyHelper.cds +14 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/SideEffects.cds +285 -0
- 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/TableGetSelectionMode.cds +242 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/TableNewActionNoOperationAvailable.cds +22 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/TableNewActionOperationAvailableFalse.cds +25 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/TableNewActionOperationAvailableTrue.cds +24 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/salesOrderMetadata.xml +4824 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/ValueFormatters.spec.js +54 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/ValueFormatters.spec.ts +70 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/services/SideEffectsService.spec.js +607 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/services/SideEffectsService.spec.ts +540 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/templating/PropertyHelper.spec.js +62 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/templating/PropertyHelper.spec.ts +45 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/type/Email.spec.js +34 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/type/Email.spec.ts +21 -0
- package/packages/sap.fe.core/test/sap/fe/core/qunit/TemplatingExpressions.qunit.js +1328 -0
- package/packages/sap.fe.core/test/sap/fe/core/qunit/apps/generalTests.js +18 -0
- package/packages/sap.fe.core/test/sap/fe/core/qunit/apps/generalTests.json +233 -0
- package/packages/sap.fe.core/test/sap/fe/core/qunit/apps/index.js +33 -0
- package/packages/sap.fe.core/test/sap/fe/core/qunit/common/testHelper.js +81 -0
- package/packages/sap.fe.core/test/sap/fe/core/qunit/common/utility.js +28 -0
- package/packages/sap.fe.core/test/sap/fe/core/qunit/helpers/ExcelFormatHelper.qunit.js +19 -0
- package/packages/sap.fe.core/test/sap/fe/core/qunit/helpers/SemanticDateOperators.qunit.js +253 -0
- package/packages/sap.fe.core/test/sap/fe/core/qunit/helpers/SemanticKeyHelper.qunit.js +211 -0
- package/packages/sap.fe.core/test/sap/fe/core/qunit/helpers/StableIdHelper.qunit.js +301 -0
- package/packages/sap.fe.core/test/sap/fe/core/qunit/services/CacheHandlerTest.qunit.js +924 -0
- package/packages/sap.fe.core/test/sap/fe/core/qunit/test/iteloMetadata.js +2752 -0
- package/packages/sap.fe.core/test/sap/fe/core/qunit/test/musicDraftMetadata.js +2301 -0
- package/packages/sap.fe.core/test/sap/fe/core/qunit/test/simpleMetadata.js +1186 -0
- package/packages/sap.fe.core/test/sap/fe/core/qunit/test/techServiceMetadata.js +3993 -0
- package/packages/sap.fe.core/test/sap/fe/core/qunit/testsuite.qunit.html +14 -0
- package/packages/sap.fe.core/test/sap/fe/core/qunit/testsuite.qunit.js +33 -0
- package/packages/sap.fe.core/test/sap/fe/core/relnotes/changes-1.91.json +96 -0
- package/packages/sap.fe.core/test/sap/fe/core/relnotes/changes-1.94.json +40 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/.library +54 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/.theming +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/Chart.fragment.xml +171 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/Chart.metadata-dbg.js +200 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/Chart.metadata.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/ChartDelegate-dbg.js +530 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/ChartDelegate.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/CommonHelper-dbg.js +1256 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/CommonHelper.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/Contact-dbg.designtime.js +93 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/Contact.designtime.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/Contact.fragment.xml +38 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/Contact.metadata-dbg.js +91 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/Contact.metadata.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/ContactHelper-dbg.js +96 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/ContactHelper.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/DelegateUtil-dbg.js +286 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/DelegateUtil.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/DraftIndicator.fragment.xml +37 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/DraftIndicator.metadata-dbg.js +91 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/DraftIndicator.metadata.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/DraftIndicatorRuntime-dbg.js +138 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/DraftIndicatorRuntime.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/Field.fragment.xml +37 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/Field.metadata-dbg.js +144 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/Field.metadata.js +5 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/Field.metadata.ts +136 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI-dbg.js +234 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI.js +5 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI.ts +177 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FieldValueHelpDelegate-dbg.js +55 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FieldValueHelpDelegate.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBar-dbg.designtime.js +83 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBar.designtime.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBar.fragment.xml +109 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBar.metadata-dbg.js +243 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBar.metadata.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI-dbg.js +130 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI.js +5 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI.ts +62 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarDelegate-dbg.js +568 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarDelegate.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarHelper-dbg.js +48 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarHelper.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterField-dbg.designtime.js +339 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterField.designtime.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterField.fragment.xml +57 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterField.metadata-dbg.js +130 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterField.metadata.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FlexibleColumnLayoutActions.fragment.xml +24 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FlexibleColumnLayoutActions.metadata-dbg.js +68 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FlexibleColumnLayoutActions.metadata.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/Form-dbg.designtime.js +188 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/Form.designtime.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/Form.fragment.xml +94 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/Form.metadata-dbg.js +209 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/Form.metadata.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FormContainer-dbg.designtime.js +42 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FormContainer.designtime.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FormContainer.fragment.xml +196 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FormContainer.metadata-dbg.js +132 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FormContainer.metadata.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FormElement.fragment.xml +25 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FormElement.metadata-dbg.js +123 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FormElement.metadata.js +5 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FormElement.metadata.ts +113 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FormWrapper.fragment.xml +26 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/KPITag.fragment.xml +33 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/KPITag.metadata-dbg.js +103 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/KPITag.metadata.js +5 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/KPITag.metadata.ts +106 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/MacroAPI-dbg.js +197 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/MacroAPI.js +5 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/MacroAPI.ts +120 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/MacroMetadata-dbg.js +92 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/MacroMetadata.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/MacroRuntime-dbg.js +33 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/MacroRuntime.js +5 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/MacroRuntime.ts +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/MacroTemplating-dbg.js +22 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/MacroTemplating.js +5 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/MacroTemplating.ts +9 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/MicroChart-dbg.designtime.js +361 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/MicroChart.designtime.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/MicroChart.fragment.xml +36 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/MicroChart.metadata-dbg.js +149 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/MicroChart.metadata.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/ODataMetaModelUtil-dbg.js +600 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/ODataMetaModelUtil.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/Paginator.fragment.xml +32 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/Paginator.metadata-dbg.js +61 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/Paginator.metadata.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/PhantomUtil-dbg.js +615 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/PhantomUtil.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/QuickViewForm-dbg.designtime.js +215 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/QuickViewForm.designtime.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/QuickViewForm.fragment.xml +66 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/QuickViewForm.metadata-dbg.js +84 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/QuickViewForm.metadata.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/ResourceModel-dbg.js +56 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/ResourceModel.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/Share.fragment.xml +21 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/Share.metadata-dbg.js +90 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/Share.metadata.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/SizeHelper-dbg.js +41 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/SizeHelper.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/Table.fragment.xml +236 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/Table.metadata-dbg.js +489 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/Table.metadata.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI-dbg.js +469 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI.js +5 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI.ts +487 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/TraceInfo-dbg.js +462 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/TraceInfo.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/ValueHelp.metadata-dbg.js +135 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/ValueHelp.metadata.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/VisualFilter.fragment.xml +87 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/VisualFilter.metadata-dbg.js +217 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/VisualFilter.metadata.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/chart/ChartHelper-dbg.js +468 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/chart/ChartHelper.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/chart/ChartRuntime-dbg.js +118 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/chart/ChartRuntime.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/chart/ChartUtils-dbg.js +221 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/chart/ChartUtils.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/designtime/library-preload.designtime.js +17 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/designtime/library-preload.designtime.js.map +9 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/field/DraftPopOverAdminData.fragment.xml +53 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldHelper-dbg.js +1670 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldHelper.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldRuntime-dbg.js +400 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldRuntime.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating-dbg.js +538 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating.js +5 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating.ts +541 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkContactContent.fragment.xml +95 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkDelegate-dbg.js +1136 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkDelegate.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkForContact.fragment.xml +26 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkForDataField.fragment.xml +95 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkForEntity.fragment.xml +76 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkWithFacets.fragment.xml +40 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/CustomFilter.fragment.xml +38 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/DraftEditState-dbg.js +179 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/DraftEditState.fragment.xml +36 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/DraftEditState.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterFieldHelper-dbg.js +149 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterFieldHelper.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterFieldTemplating-dbg.js +23 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterFieldTemplating.js +5 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterFieldTemplating.ts +11 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterUtils-dbg.js +363 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterUtils.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/MultiValue-dbg.js +53 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/MultiValue.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Range-dbg.js +38 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Range.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Value-dbg.js +219 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Value.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/flexibility/FormDelegate-dbg.js +152 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/flexibility/FormDelegate.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/flexibility/ValueHelpWrapper.fragment.xml +3 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/form/AddressSection.fragment.xml +35 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/form/DataFieldCollection.fragment.xml +44 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/form/FormElement.fragment.xml +42 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/form/FormHelper-dbg.js +118 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/form/FormHelper.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/fpm/CustomFormElement.fragment.xml +10 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/fpm/CustomFragment.fragment.xml +13 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/fpm/CustomFragment.metadata-dbg.js +73 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/fpm/CustomFragment.metadata.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/fpm/CustomHeaderFieldElement.fragment.xml +17 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/fpm/CustomSection.fragment.xml +13 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/fpm/CustomSection.metadata-dbg.js +82 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/fpm/CustomSection.metadata.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/fpm/fpm-dbg.js +15 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/fpm/fpm.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.fragment.xml +33 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.metadata-dbg.js +167 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.metadata.js +5 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.metadata.ts +179 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/DataPoint.fragment.xml +123 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/DataPoint.metadata-dbg.js +162 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/DataPoint.metadata.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field-dbg.designtime.js +811 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.designtime.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.fragment.xml +20 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.metadata-dbg.js +534 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.metadata.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/collectionField/MultiValueFieldDelegate-dbg.js +76 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/collectionField/MultiValueFieldDelegate.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/ConnectedDataField.fragment.xml +39 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/FieldContent.fragment.xml +94 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/FieldStructure.fragment.xml +55 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/AmountWithCurrency.fragment.xml +41 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/Avatar.fragment.xml +57 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/Button.fragment.xml +56 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/Contact.fragment.xml +38 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/DataPoint.fragment.xml +45 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/ExpandableText.fragment.xml +18 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/File.fragment.xml +31 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/LabelSemanticKey.fragment.xml +65 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/Link.fragment.xml +30 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/LinkWithQuickViewForm.fragment.xml +45 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/LinkWrapper.fragment.xml +56 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/ObjectIdentifier.fragment.xml +37 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/ObjectStatus.fragment.xml +16 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/SemanticKeyWithDraftIndicator.fragment.xml +35 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/Text.fragment.xml +33 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/CheckBox.fragment.xml +28 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/DatePicker.fragment.xml +32 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/DateTimePicker.fragment.xml +33 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/File.fragment.xml +55 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/Input.fragment.xml +33 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/InputWithUnit.fragment.xml +77 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/InputWithValueHelp.fragment.xml +73 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/RatingIndicator.fragment.xml +23 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/TextArea.fragment.xml +34 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/TimePicker.fragment.xml +33 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/form/FormTemplating-dbg.js +65 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/form/FormTemplating.js +5 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/form/FormTemplating.ts +40 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating-dbg.js +244 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +5 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +229 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/TableDelegate-dbg.js +215 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueHelp-dbg.designtime.js +466 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueHelp.designtime.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueHelp.fragment.xml +23 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueHelpContent.fragment.xml +62 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueHelpTemplating-dbg.js +155 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueHelpTemplating.js +5 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueHelpTemplating.ts +133 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +57 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListFilterBar.fragment.xml +20 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListHelper-dbg.js +1286 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListTable.fragment.xml +67 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListTableColumnHeader.fragment.xml +25 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/library-dbg.js +144 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/library-h2-preload.js +190 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/library-h2-preload.js.map +9 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/library-preload.js +696 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/library-preload.js.map +9 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/library.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/macroLibrary-dbg.js +126 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/macroLibrary.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/manifest.json +115 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/massedit/MassEditDialog.fragment.xml +106 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/massedit/MassEditHandler-dbg.js +708 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/massedit/MassEditHandler.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/massedit/MassEditRuntime-dbg.js +115 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/massedit/MassEditRuntime.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle.properties +215 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ar.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_bg.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ca.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_cs.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_cy.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_da.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_de.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_el.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_GB.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_sappsd.properties +129 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +129 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_saptrc.properties +129 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_es.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_es_MX.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_et.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fi.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fr.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fr_CA.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hi.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hr.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hu.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_id.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_it.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_iw.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ja.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_kk.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ko.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_lt.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_lv.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ms.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_nl.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_no.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pl.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pt.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pt_PT.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ro.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ru.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sh.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sk.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sl.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sv.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_th.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_tr.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_uk.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_vi.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_zh_CN.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_zh_TW.properties +140 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/microchart/MicroChartContainer-dbg.js +620 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/microchart/MicroChartContainer.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/microchart/MicroChartHelper-dbg.js +491 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/microchart/MicroChartHelper.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/microchart/fragments/AreaMicroChart.fragment.xml +180 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/microchart/fragments/BulletMicroChart.fragment.xml +111 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/microchart/fragments/ColumnMicroChart.fragment.xml +99 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/microchart/fragments/ComparisonMicroChart.fragment.xml +64 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/microchart/fragments/HarveyBallMicroChart.fragment.xml +64 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/microchart/fragments/LineMicroChart.fragment.xml +67 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/microchart/fragments/MicroChartContent.fragment.xml +41 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/microchart/fragments/MicroChartTitle.fragment.xml +52 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/microchart/fragments/RadialMicroChart.fragment.xml +58 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/microchart/fragments/StackedBarMicroChart.fragment.xml +54 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/resources.json +4885 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/share/ShareSheet.fragment.xml +26 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/Actions.fragment.xml +215 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/BasicSearch-dbg.js +73 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/BasicSearch.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/Column.fragment.xml +27 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/ColumnContent.fragment.xml +133 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/ColumnProperty.fragment.xml +43 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/Columns.fragment.xml +37 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/CreationRow.fragment.xml +33 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/CustomColumn.fragment.xml +16 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/QuickFilterContainer-dbg.js +298 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/QuickFilterContainer.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/TableFullScreenUtil-dbg.js +194 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/TableFullScreenUtil.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/TableHelper-dbg.js +1399 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/TableHelper.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/TableRuntime-dbg.js +231 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/TableRuntime.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/Utils-dbg.js +468 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/Utils.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/ValueHelp.fragment.xml +34 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/ALPTableDelegate-dbg.js +32 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/ALPTableDelegate.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/ALPTableDelegateBaseMixin-dbg.js +100 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/ALPTableDelegateBaseMixin.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/AnalyticalALPTableDelegate-dbg.js +36 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/AnalyticalALPTableDelegate.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/AnalyticalTableDelegate-dbg.js +147 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/AnalyticalTableDelegate.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/TableDelegate-dbg.js +818 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/TableDelegate.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/valuehelp/ValueHelpFilterBar-dbg.designtime.js +83 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/valuehelp/ValueHelpFilterBar.designtime.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/valuehelp/ValueHelpFilterBar.fragment.xml +115 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/valuehelp/ValueHelpFilterBar.metadata-dbg.js +204 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/valuehelp/ValueHelpFilterBar.metadata.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/visualfilters/InteractiveChartHelper-dbg.js +476 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/visualfilters/InteractiveChartHelper.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/visualfilters/VisualFilterRuntime-dbg.js +286 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/visualfilters/fragments/InteractiveBarChart.fragment.xml +70 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/visualfilters/fragments/InteractiveDonutChart.fragment.xml +69 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/visualfilters/fragments/InteractiveLineChart.fragment.xml +70 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/designtime/api.json +1001 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/designtime/apiref/api.json +1 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/designtime/codeassistance/Library.jsmeta.json +1 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/designtime/codeassistance/Library.jstemplates.json +1 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/designtime/codeassistance/Library.xmlmeta.json +1 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/designtime/codeassistance/Library.xmltemplates.json +1 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/CollectionField.spec.js +64 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/CollectionField.spec.ts +67 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/DatapointMacro.spec.js +326 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/DatapointMacro.spec.ts +349 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroDataFieldTypes.spec.js +127 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroDataFieldTypes.spec.ts +127 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroWithSemanticKey.spec.js +184 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroWithSemanticKey.spec.ts +263 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroWithValueHelp.spec.js +63 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroWithValueHelp.spec.ts +72 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterField.spec.js +32 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterField.spec.ts +28 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/MacroComponent.spec.js +39 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/MacroComponent.spec.ts +26 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/MicroChart.spec.js +53 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/MicroChart.spec.ts +54 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/PhantomUtil.spec.js +142 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/PhantomUtil.spec.ts +178 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/QuickViewForm.spec.js +401 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/QuickViewForm.spec.ts +662 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/SimpleFieldMacro.spec.js +571 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/SimpleFieldMacro.spec.ts +778 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableAPI.spec.js +712 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableAPI.spec.ts +800 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ValueHelpMacro.spec.js +192 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ValueHelpMacro.spec.ts +194 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FilterField.spec.ts.snap +37 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/MacroComponent.spec.ts.snap +7 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/PhantomUtil.spec.ts.snap +184 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/QuickViewForm.spec.ts.snap +820 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/ValueHelpMacro.spec.ts.snap +279 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/addTemplatingTest.md +51 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/AdminDataPopOver.cds +8 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/CollectionField.cds +48 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/FieldMacroDataFieldTypes.cds +295 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/FieldMacroWithSemanticKey.cds +62 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/FieldMacroWithValueHelp.cds +131 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/FilterFieldMacro.cds +124 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/MicroChart.cds +47 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/PhantomUtil.cds +20 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/QuickViewForm.cds +248 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/Table.cds +113 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/ValueHelpMacro.cds +163 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/simpleFieldMacro.cds +129 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldTemplating.cds +115 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldTemplating.spec.js +180 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldTemplating.spec.ts +215 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/__snapshots__/FieldTemplating.spec.ts.snap +160 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/fragments/MyTestFragment.xml +15 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/fragments/MyTestFragmentRepeat.xml +27 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/tsx/TestTSX.spec.tsx +49 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/tsx/__snapshots__/TestTSX.spec.tsx.snap +33 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/common/testHelper.js +24 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/index.json +154 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/AnalyticalTableDelegate.qunit.js +158 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/ChartDelegate.qunit.js +275 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/ChartHelper.qunit.js +601 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/ChartHelperTemplate.qunit.js +67 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/CommonHelper.qunit.js +1607 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FieldHelper.qunit.js +2478 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FieldHelperTemplate.qunit.js +383 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FilterBarDelegate.qunit.js +89 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FilterBarHelper.qunit.js +223 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FilterFieldHelper.qunit.js +712 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FormContainerTemplating.qunit.js +245 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FormElementTemplating.qunit.js +83 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FormHelper.qunit.js +209 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FormTemplating.qunit.js +577 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FormTemplatingTs.qunit.js +271 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/InteractiveChartHelper.qunit.js +1227 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/MacroMetadata.qunit.js +123 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/MicroChartContainer.qunit.js +1637 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/MicroChartHelper.qunit.js +619 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/MicroChartHelperForTemplate.qunit.js +360 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/PhantomUtil.qunit.js +307 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/QuickViewLinkDelegate.qunit.js +81 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/TableDelegate.qunit.js +734 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/TableHelper.qunit.js +2630 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/TableHelperTemplate.qunit.js +201 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/TableRuntime.qunit.js +861 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/ValueHelpTemplating.qunit.js +176 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/ValueListHelper.qunit.js +1133 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/chartMetadata/metadata.xml +461 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/flexibility/FormDelegate.qunit.js +408 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/fragments/FilterFieldMacro.fragment.xml +9 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/fragments/FilterFieldMacroMissingID.fragment.xml +9 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/fragments/TableMacro.fragment.xml +22 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/metadata/simpleMetadata.js +1415 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/teststarter.qunit.html +13 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/testsuite.qunit.html +14 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/testsuite.qunit.js +41 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/relnotes/changes-1.91.json +76 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/relnotes/changes-1.94.json +29 -0
- package/packages/sap.fe.navigation/src/sap/fe/navigation/.library +36 -0
- package/packages/sap.fe.navigation/src/sap/fe/navigation/.theming +6 -0
- package/packages/sap.fe.navigation/src/sap/fe/navigation/NavError-dbg.js +49 -0
- package/packages/sap.fe.navigation/src/sap/fe/navigation/NavError.js +6 -0
- package/packages/sap.fe.navigation/src/sap/fe/navigation/NavigationHandler-dbg.js +2215 -0
- package/packages/sap.fe.navigation/src/sap/fe/navigation/NavigationHandler.js +6 -0
- package/packages/sap.fe.navigation/src/sap/fe/navigation/PresentationVariant-dbg.js +347 -0
- package/packages/sap.fe.navigation/src/sap/fe/navigation/PresentationVariant.js +6 -0
- package/packages/sap.fe.navigation/src/sap/fe/navigation/SelectionVariant-dbg.js +774 -0
- package/packages/sap.fe.navigation/src/sap/fe/navigation/SelectionVariant.js +6 -0
- package/packages/sap.fe.navigation/src/sap/fe/navigation/library-dbg.js +170 -0
- package/packages/sap.fe.navigation/src/sap/fe/navigation/library-h2-preload.js +19 -0
- package/packages/sap.fe.navigation/src/sap/fe/navigation/library-h2-preload.js.map +9 -0
- package/packages/sap.fe.navigation/src/sap/fe/navigation/library-preload.js +129 -0
- package/packages/sap.fe.navigation/src/sap/fe/navigation/library-preload.js.map +9 -0
- package/packages/sap.fe.navigation/src/sap/fe/navigation/library.js +6 -0
- package/packages/sap.fe.navigation/src/sap/fe/navigation/manifest.json +44 -0
- package/packages/sap.fe.navigation/src/sap/fe/navigation/resources.json +215 -0
- package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/api.json +1 -0
- package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/apiref/api.json +1 -0
- package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/codeassistance/Library.jsmeta.json +1 -0
- package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/codeassistance/Library.jstemplates.json +1 -0
- package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/codeassistance/Library.xmlmeta.json +1 -0
- package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/codeassistance/Library.xmltemplates.json +1 -0
- package/packages/sap.fe.navigation/test/sap/fe/navigation/qunit/index.json +17 -0
- package/packages/sap.fe.navigation/test/sap/fe/navigation/qunit/navigation/CrossAppNavigationServiceMock.js +110 -0
- package/packages/sap.fe.navigation/test/sap/fe/navigation/qunit/navigation/NavigationHandlerTest.qunit.js +8625 -0
- package/packages/sap.fe.navigation/test/sap/fe/navigation/qunit/navigation/PresentationVariantTest.qunit.js +179 -0
- package/packages/sap.fe.navigation/test/sap/fe/navigation/qunit/navigation/SelectionVariantTest.qunit.js +1366 -0
- package/packages/sap.fe.navigation/test/sap/fe/navigation/qunit/teststarter.qunit.html +13 -0
- package/packages/sap.fe.navigation/test/sap/fe/navigation/qunit/testsuite.qunit.html +14 -0
- package/packages/sap.fe.navigation/test/sap/fe/navigation/qunit/testsuite.qunit.js +41 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/.library +35 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/.theming +5 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/controller/Placeholder-dbg.controller.js +60 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/controller/Placeholder.controller.js +6 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-dbg.js +41 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-h2-preload.js +20 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-h2-preload.js.map +9 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-preload.js +21 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-preload.js.map +9 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library.js +6 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/manifest.json +49 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/resources.json +725 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/base/.theming +5 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/base/Placeholder.less +504 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/base/css_variables.css +3 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/base/css_variables.less +4 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/base/css_variables.source.less +1439 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/base/library-RTL.css +3 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/base/library-parameters.json +1 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/base/library.css +3 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/base/library.less +511 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/base/library.source.less +3 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/base/library_skeleton-RTL.css +1 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/base/library_skeleton.css +1 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/base/resources.json +70 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize/.theming +27 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize/css_variables.css +4 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize/css_variables.less +1497 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize/css_variables.source.less +1487 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize/library-RTL.css +4 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize/library-parameters.json +1 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize/library.css +4 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize/library.less +6 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize/library.source.less +3 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize/library_skeleton-RTL.css +1 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize/library_skeleton.css +1 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize/resources.json +64 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcb/.theming +6 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcb/css_variables.css +3 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcb/css_variables.less +1463 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcb/css_variables.source.less +1453 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcb/library-RTL.css +3 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcb/library-parameters.json +1 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcb/library.css +3 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcb/library.less +6 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcb/library.source.less +3 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcb/library_skeleton-RTL.css +1 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcb/library_skeleton.css +1 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcb/resources.json +64 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcw/.theming +6 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcw/css_variables.css +3 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcw/css_variables.less +1463 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcw/css_variables.source.less +1453 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcw/library-RTL.css +3 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcw/library-parameters.json +1 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcw/library.css +3 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcw/library.less +6 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcw/library.source.less +3 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcw/library_skeleton-RTL.css +1 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcw/library_skeleton.css +1 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcw/resources.json +64 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_plus/.theming +26 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_plus/css_variables.css +4 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_plus/css_variables.less +1497 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_plus/css_variables.source.less +1487 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_plus/library-RTL.css +4 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_plus/library-parameters.json +1 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_plus/library.css +4 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_plus/library.less +6 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_plus/library.source.less +3 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_plus/library_skeleton-RTL.css +1 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_plus/library_skeleton.css +1 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_plus/resources.json +64 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3/.theming +6 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3/css_variables.css +3 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3/css_variables.less +1468 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3/css_variables.source.less +1458 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3/library-RTL.css +3 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3/library-parameters.json +1 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3/library.css +3 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3/library.less +6 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3/library.source.less +3 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3/library_skeleton-RTL.css +1 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3/library_skeleton.css +1 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3/resources.json +64 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_dark/.theming +6 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_dark/css_variables.css +3 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_dark/css_variables.less +1468 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_dark/css_variables.source.less +1458 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_dark/library-RTL.css +3 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_dark/library-parameters.json +1 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_dark/library.css +3 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_dark/library.less +6 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_dark/library.source.less +3 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_dark/library_skeleton-RTL.css +1 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_dark/library_skeleton.css +1 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_dark/resources.json +64 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcb/.theming +6 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcb/css_variables.css +3 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcb/css_variables.less +1464 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcb/css_variables.source.less +1454 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcb/library-RTL.css +3 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcb/library-parameters.json +1 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcb/library.css +3 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcb/library.less +6 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcb/library.source.less +3 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcb/library_skeleton-RTL.css +1 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcb/library_skeleton.css +1 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcb/resources.json +64 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcw/.theming +6 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcw/css_variables.css +3 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcw/css_variables.less +1464 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcw/css_variables.source.less +1454 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcw/library-RTL.css +3 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcw/library-parameters.json +1 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcw/library.css +3 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcw/library.less +6 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcw/library.source.less +3 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcw/library_skeleton-RTL.css +1 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcw/library_skeleton.css +1 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcw/resources.json +64 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/view/PlaceholderALP.fragment.html +10 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/view/PlaceholderALP.view.xml +11 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/view/PlaceholderLR.fragment.html +8 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/view/PlaceholderLR.view.xml +11 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/view/PlaceholderOP.fragment.html +8 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/view/PlaceholderOP.view.xml +11 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/view/PlaceholderOVP.fragment.html +8 -0
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/view/PlaceholderOVP.view.xml +11 -0
- package/packages/sap.fe.placeholder/test/sap/fe/placeholder/designtime/api.json +1 -0
- package/packages/sap.fe.placeholder/test/sap/fe/placeholder/designtime/apiref/api.json +1 -0
- package/packages/sap.fe.placeholder/test/sap/fe/placeholder/designtime/codeassistance/Library.jsmeta.json +1 -0
- package/packages/sap.fe.placeholder/test/sap/fe/placeholder/designtime/codeassistance/Library.jstemplates.json +1 -0
- package/packages/sap.fe.placeholder/test/sap/fe/placeholder/designtime/codeassistance/Library.xmlmeta.json +1 -0
- package/packages/sap.fe.placeholder/test/sap/fe/placeholder/designtime/codeassistance/Library.xmltemplates.json +1 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/.library +74 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/.theming +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/AnalyticalListPage/Component-dbg.js +15 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/AnalyticalListPage/Component.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/AnalyticalListPage/chart/FEChartDelegate-dbg.js +37 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/AnalyticalListPage/chart/FEChartDelegate.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/AnalyticalListPage/manifest.json +27 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/AnalyticalListPage/resources.json +27 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ListComponent-dbg.js +121 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ListComponent.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/Component-dbg.js +42 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/Component.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ExtensionAPI-dbg.js +95 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ExtensionAPI.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReport.view.xml +199 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReportController-dbg.controller.js +954 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReportController.controller.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/manifest.json +28 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation-dbg.js +52 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/Share-dbg.js +124 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/Share.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/ViewState-dbg.js +264 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/ViewState.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/resources.json +79 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/view/fragments/CollectionVisualization.fragment.xml +32 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/view/fragments/CustomView.fragment.xml +10 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.xml +49 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/AnnotationHelper-dbg.js +457 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/AnnotationHelper.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/Component-dbg.js +139 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/Component.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ExtensionAPI-dbg.js +130 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ExtensionAPI.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +184 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPageController-dbg.controller.js +1460 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/controls/StashableHBox-dbg.js +90 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/controls/StashableHBox.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/controls/StashableVBox-dbg.js +27 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/controls/StashableVBox.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/controls/SubSectionBlock-dbg.js +57 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/controls/SubSectionBlock.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/designtime/FlexBox-dbg.designtime.js +19 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/designtime/FlexBox.designtime.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/designtime/StashableHBox-dbg.designtime.js +51 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/designtime/StashableHBox.designtime.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/designtime/StashableVBox-dbg.designtime.js +38 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/designtime/StashableVBox.designtime.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/flexibility/StashableHBox.flexibility-dbg.js +19 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/flexibility/StashableHBox.flexibility.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/flexibility/StashableVBox.flexibility-dbg.js +15 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/flexibility/StashableVBox.flexibility.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/manifest.json +122 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation-dbg.js +55 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/overrides/InternalRouting-dbg.js +20 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/overrides/InternalRouting.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/overrides/MessageHandler-dbg.js +20 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/overrides/MessageHandler.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/overrides/Routing-dbg.js +21 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/overrides/Routing.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/overrides/Share-dbg.js +303 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/overrides/Share.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/overrides/ViewState-dbg.js +45 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/overrides/ViewState.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/resources.json +282 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/templating/ObjectPageTemplating-dbg.js +117 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/templating/ObjectPageTemplating.js +5 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/templating/ObjectPageTemplating.ts +124 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/Actions.fragment.xml +183 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/EditableHeaderFacet.fragment.xml +160 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/FooterContent.fragment.xml +117 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/FormActionButtons.fragment.xml +79 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/FormActions.fragment.xml +24 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/HeaderContent.fragment.xml +54 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/HeaderDataPoint.fragment.xml +26 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/HeaderDataPointTitle.fragment.xml +69 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/HeaderFacet.fragment.xml +90 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/HeaderFacetCustomContainer.fragment.xml +41 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/HeaderImage.fragment.xml +24 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderAddress.fragment.xml +20 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderForm.fragment.xml +72 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/RelatedApps.fragment.xml +22 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/Section.fragment.xml +71 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/SectionContent.fragment.xml +175 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/SectionCustomSection.fragment.xml +18 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/SectionFormContent.fragment.xml +18 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/SectionMoreFormContent.fragment.xml +18 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/SectionPresentationVisualization.fragment.xml +17 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/SideContentCustomContainer.fragment.xml +19 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/TitleAndSubtitle.fragment.xml +24 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/Fcl-dbg.controller.js +816 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/Fcl.controller.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/NavContainer-dbg.controller.js +176 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController-dbg.js +441 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/overrides/EditFlow-dbg.js +18 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/overrides/EditFlow.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/view/Fcl.view.xml +15 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/view/NavContainer.view.xml +9 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/view/PlaceholderLR.view.xml +617 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/view/PlaceholderOP.view.xml +588 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/controls/Chart.fragment.xml +20 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/controls/OverflowToolbarButtonHover-dbg.js +26 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/controls/OverflowToolbarButtonHover.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/controls/Paginator-dbg.js +174 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/controls/Paginator.control.xml +24 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/controls/Paginator.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/controls/Table.fragment.xml +23 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/designtime/library-preload.designtime.js +10 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/designtime/library-preload.designtime.js.map +9 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/library-dbg.js +72 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/library-h2-preload.js +77 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/library-h2-preload.js.map +9 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/library-preload.js +154 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/library-preload.js.map +9 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/library.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/manifest.json +136 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle.properties +210 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ar.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_bg.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ca.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_cs.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_cy.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_da.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_de.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_el.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_GB.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_US_sappsd.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_US_saprigi.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_US_saptrc.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_es.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_es_MX.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_et.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_fi.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_fr.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_fr_CA.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_hi.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_hr.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_hu.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_id.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_it.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_iw.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ja.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_kk.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ko.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_lt.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_lv.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ms.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_nl.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_no.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_pl.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_pt.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_pt_PT.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ro.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ru.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sh.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sk.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sl.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sv.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_th.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_tr.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_uk.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_vi.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_zh_CN.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_zh_TW.properties +135 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/resources.json +2103 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/demokit/apps/itelo/webapp/Component.js +9 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/demokit/apps/itelo/webapp/WEB-INF/web.xml +120 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/demokit/apps/itelo/webapp/annotations/annotations.xml +43 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/demokit/apps/itelo/webapp/i18n/i18n.properties +13 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/demokit/apps/itelo/webapp/manifest.json +176 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/demokit/apps/itelo/webapp/test/manifestCreateDialogWithFCL.json +87 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/demokit/apps/itelo/webapp/test/testFLP.html +71 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/demokit/apps/itelo/webapp/test/testFLPService.html +82 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/demokit/flpSandbox.html +24 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/demokit/flpSandbox.js +225 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/demokit/mockServer.js +780 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/demokit/mockServerHelper.js +195 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/designtime/api.json +1 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/designtime/apiref/api.json +1 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/designtime/codeassistance/Library.jsmeta.json +1 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/designtime/codeassistance/Library.jstemplates.json +1 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/designtime/codeassistance/Library.xmlmeta.json +1 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/designtime/codeassistance/Library.xmltemplates.json +1 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/qunit/common/testHelper.js +80 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/qunit/common/utility.js +28 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/qunit/testsuite.qunit.html +14 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/qunit/testsuite.qunit.js +33 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/relnotes/changes-1.91.json +134 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/relnotes/changes-1.94.json +34 -0
- package/packages/sap.fe.test/src/sap/fe/test/.library +30 -0
- package/packages/sap.fe.test/src/sap/fe/test/.theming +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/BaseActions-dbg.js +107 -0
- package/packages/sap.fe.test/src/sap/fe/test/BaseActions.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/BaseArrangements-dbg.js +199 -0
- package/packages/sap.fe.test/src/sap/fe/test/BaseArrangements.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/BaseAssertions-dbg.js +56 -0
- package/packages/sap.fe.test/src/sap/fe/test/BaseAssertions.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/ConfirmDialog-dbg.js +72 -0
- package/packages/sap.fe.test/src/sap/fe/test/ConfirmDialog.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/FCLView-dbg.js +86 -0
- package/packages/sap.fe.test/src/sap/fe/test/FCLView.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/Flexibility-dbg.js +743 -0
- package/packages/sap.fe.test/src/sap/fe/test/Flexibility.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/FlexibleColumnLayout-dbg.js +149 -0
- package/packages/sap.fe.test/src/sap/fe/test/FlexibleColumnLayout.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper-dbg.js +284 -0
- package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper.js +5 -0
- package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper.ts +242 -0
- package/packages/sap.fe.test/src/sap/fe/test/JourneyRunner-dbg.js +314 -0
- package/packages/sap.fe.test/src/sap/fe/test/JourneyRunner.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/ListReport-dbg.js +525 -0
- package/packages/sap.fe.test/src/sap/fe/test/ListReport.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/LocationUtil-dbg.js +54 -0
- package/packages/sap.fe.test/src/sap/fe/test/LocationUtil.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/ObjectPage-dbg.js +857 -0
- package/packages/sap.fe.test/src/sap/fe/test/ObjectPage.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/Shell-dbg.js +226 -0
- package/packages/sap.fe.test/src/sap/fe/test/Shell.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/Stubs-dbg.js +97 -0
- package/packages/sap.fe.test/src/sap/fe/test/Stubs.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/TemplatePage-dbg.js +447 -0
- package/packages/sap.fe.test/src/sap/fe/test/TemplatePage.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/TemplatingTestUtils-dbg.js +243 -0
- package/packages/sap.fe.test/src/sap/fe/test/TemplatingTestUtils.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/Utils-dbg.js +301 -0
- package/packages/sap.fe.test/src/sap/fe/test/Utils.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/APIHelper-dbg.js +117 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/APIHelper.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/BaseAPI-dbg.js +285 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/BaseAPI.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/ChartActions-dbg.js +131 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/ChartActions.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/ChartAssertions-dbg.js +114 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/ChartAssertions.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogAPI-dbg.js +93 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogAPI.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogActions-dbg.js +101 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogActions.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogAssertions-dbg.js +123 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogAssertions.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogCreateActions-dbg.js +44 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogCreateActions.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogCreateAssertions-dbg.js +55 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogCreateAssertions.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogMessageActions-dbg.js +59 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogMessageActions.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogMessageAssertions-dbg.js +87 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogMessageAssertions.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogType-dbg.js +76 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogType.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogValueHelpActions-dbg.js +317 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogValueHelpActions.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogValueHelpAssertions-dbg.js +263 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogValueHelpAssertions.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/EditState-dbg.js +67 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/EditState.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/FilterBarAPI-dbg.js +197 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/FilterBarAPI.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/FilterBarActions-dbg.js +310 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/FilterBarActions.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/FilterBarAssertions-dbg.js +413 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/FilterBarAssertions.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/FooterAPI-dbg.js +37 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/FooterAPI.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/FooterActionsBase-dbg.js +47 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/FooterActionsBase.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/FooterActionsOP-dbg.js +83 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/FooterActionsOP.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/FooterAssertionsBase-dbg.js +66 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/FooterAssertionsBase.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/FooterAssertionsOP-dbg.js +98 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/FooterAssertionsOP.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/FormAPI-dbg.js +82 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/FormAPI.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/FormActions-dbg.js +180 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/FormActions.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/FormAssertions-dbg.js +182 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/FormAssertions.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/HeaderAPI-dbg.js +152 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/HeaderAPI.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/HeaderActions-dbg.js +232 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/HeaderActions.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/HeaderActionsLR-dbg.js +94 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/HeaderActionsLR.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/HeaderAssertions-dbg.js +495 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/HeaderAssertions.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/HeaderAssertionsLR-dbg.js +110 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/HeaderAssertionsLR.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/HeaderLR-dbg.js +74 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/HeaderLR.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/TableAPI-dbg.js +452 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/TableAPI.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/TableActions-dbg.js +958 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/TableActions.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/TableAssertions-dbg.js +697 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/TableAssertions.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/builder/DialogBuilder-dbg.js +118 -0
- package/packages/sap.fe.test/src/sap/fe/test/builder/DialogBuilder.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/builder/FEBuilder-dbg.js +428 -0
- package/packages/sap.fe.test/src/sap/fe/test/builder/FEBuilder.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/builder/KPIBuilder-dbg.js +56 -0
- package/packages/sap.fe.test/src/sap/fe/test/builder/KPIBuilder.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/builder/MacroFieldBuilder-dbg.js +174 -0
- package/packages/sap.fe.test/src/sap/fe/test/builder/MacroFieldBuilder.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/builder/MdcFieldBuilder-dbg.js +254 -0
- package/packages/sap.fe.test/src/sap/fe/test/builder/MdcFieldBuilder.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/builder/MdcFilterBarBuilder-dbg.js +112 -0
- package/packages/sap.fe.test/src/sap/fe/test/builder/MdcFilterBarBuilder.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/builder/MdcFilterFieldBuilder-dbg.js +54 -0
- package/packages/sap.fe.test/src/sap/fe/test/builder/MdcFilterFieldBuilder.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/builder/MdcTableBuilder-dbg.js +1069 -0
- package/packages/sap.fe.test/src/sap/fe/test/builder/MdcTableBuilder.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/builder/OverflowToolbarBuilder-dbg.js +89 -0
- package/packages/sap.fe.test/src/sap/fe/test/builder/OverflowToolbarBuilder.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/builder/VMBuilder-dbg.js +268 -0
- package/packages/sap.fe.test/src/sap/fe/test/builder/VMBuilder.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/internal/FEArrangements-dbg.js +66 -0
- package/packages/sap.fe.test/src/sap/fe/test/internal/FEArrangements.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/internal/FEJourneyRunner-dbg.js +55 -0
- package/packages/sap.fe.test/src/sap/fe/test/internal/FEJourneyRunner.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/library-dbg.js +37 -0
- package/packages/sap.fe.test/src/sap/fe/test/library-h2-preload.js +78 -0
- package/packages/sap.fe.test/src/sap/fe/test/library-h2-preload.js.map +9 -0
- package/packages/sap.fe.test/src/sap/fe/test/library-preload.js +587 -0
- package/packages/sap.fe.test/src/sap/fe/test/library-preload.js.map +9 -0
- package/packages/sap.fe.test/src/sap/fe/test/library.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/manifest.json +39 -0
- package/packages/sap.fe.test/src/sap/fe/test/massEdit-dbg.js +99 -0
- package/packages/sap.fe.test/src/sap/fe/test/massEdit.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/resources.json +1972 -0
- package/packages/sap.fe.test/test/sap/fe/test/designtime/api.json +1 -0
- package/packages/sap.fe.test/test/sap/fe/test/designtime/apiref/api.json +1 -0
- package/packages/sap.fe.test/test/sap/fe/test/designtime/codeassistance/Library.jsmeta.json +1 -0
- package/packages/sap.fe.test/test/sap/fe/test/designtime/codeassistance/Library.jstemplates.json +1 -0
- package/packages/sap.fe.test/test/sap/fe/test/designtime/codeassistance/Library.xmlmeta.json +1 -0
- package/packages/sap.fe.test/test/sap/fe/test/designtime/codeassistance/Library.xmltemplates.json +1 -0
- package/packages/sap.fe.test/test/sap/fe/test/mockserver/MockServer.js +134870 -0
- package/src/LICENSE.txt +23 -0
- package/ui5.yaml +66 -0
|
@@ -0,0 +1,1667 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
|
+
* (c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
|
+
*/
|
|
5
|
+
sap.ui.define(["./AnnotationEnum"], function (AnnotationEnum) {
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
var _exports = {};
|
|
9
|
+
var resolveEnumValue = AnnotationEnum.resolveEnumValue;
|
|
10
|
+
|
|
11
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
12
|
+
|
|
13
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
14
|
+
|
|
15
|
+
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
16
|
+
|
|
17
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
18
|
+
|
|
19
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
20
|
+
|
|
21
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
22
|
+
|
|
23
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
24
|
+
|
|
25
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
26
|
+
|
|
27
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
28
|
+
|
|
29
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
30
|
+
|
|
31
|
+
var unresolveableExpression = {
|
|
32
|
+
_type: "Unresolveable"
|
|
33
|
+
};
|
|
34
|
+
_exports.unresolveableExpression = unresolveableExpression;
|
|
35
|
+
|
|
36
|
+
function hasUnresolveableExpression() {
|
|
37
|
+
for (var _len = arguments.length, expressions = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
38
|
+
expressions[_key] = arguments[_key];
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return expressions.find(function (expr) {
|
|
42
|
+
return expr._type === "Unresolveable";
|
|
43
|
+
}) !== undefined;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Check two expressions for (deep) equality.
|
|
47
|
+
*
|
|
48
|
+
* @param a
|
|
49
|
+
* @param b
|
|
50
|
+
* @returns {boolean} `true` if the two expressions are equal
|
|
51
|
+
*/
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
_exports.hasUnresolveableExpression = hasUnresolveableExpression;
|
|
55
|
+
|
|
56
|
+
function _checkExpressionsAreEqual(a, b) {
|
|
57
|
+
if (a._type !== b._type) {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
switch (a._type) {
|
|
62
|
+
case "Unresolveable":
|
|
63
|
+
return false;
|
|
64
|
+
// Unresolveable is never equal to anything even itself
|
|
65
|
+
|
|
66
|
+
case "Constant":
|
|
67
|
+
case "EmbeddedBinding":
|
|
68
|
+
case "EmbeddedExpressionBinding":
|
|
69
|
+
return a.value === b.value;
|
|
70
|
+
|
|
71
|
+
case "Not":
|
|
72
|
+
return _checkExpressionsAreEqual(a.operand, b.operand);
|
|
73
|
+
|
|
74
|
+
case "Truthy":
|
|
75
|
+
return _checkExpressionsAreEqual(a.operand, b.operand);
|
|
76
|
+
|
|
77
|
+
case "Set":
|
|
78
|
+
return a.operator === b.operator && a.operands.length === b.operands.length && a.operands.every(function (expression) {
|
|
79
|
+
return b.operands.some(function (otherExpression) {
|
|
80
|
+
return _checkExpressionsAreEqual(expression, otherExpression);
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
case "IfElse":
|
|
85
|
+
return _checkExpressionsAreEqual(a.condition, b.condition) && _checkExpressionsAreEqual(a.onTrue, b.onTrue) && _checkExpressionsAreEqual(a.onFalse, b.onFalse);
|
|
86
|
+
|
|
87
|
+
case "Comparison":
|
|
88
|
+
return a.operator == b.operator && _checkExpressionsAreEqual(a.operand1, b.operand1) && _checkExpressionsAreEqual(a.operand2, b.operand2);
|
|
89
|
+
|
|
90
|
+
case "Concat":
|
|
91
|
+
var aExpressions = a.expressions;
|
|
92
|
+
var bExpressions = b.expressions;
|
|
93
|
+
|
|
94
|
+
if (aExpressions.length !== bExpressions.length) {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
return aExpressions.every(function (expression, index) {
|
|
99
|
+
return _checkExpressionsAreEqual(expression, bExpressions[index]);
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
case "Binding":
|
|
103
|
+
return a.modelName === b.modelName && a.path === b.path && a.targetEntitySet === b.targetEntitySet;
|
|
104
|
+
|
|
105
|
+
case "DefaultBinding":
|
|
106
|
+
return a.modelName === b.modelName && a.path === b.path;
|
|
107
|
+
|
|
108
|
+
case "Formatter":
|
|
109
|
+
return a.fn === b.fn && a.parameters.length === b.parameters.length && a.parameters.every(function (value, index) {
|
|
110
|
+
return _checkExpressionsAreEqual(b.parameters[index], value);
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
case "ComplexType":
|
|
114
|
+
return a.type === b.type && a.bindingParameters.length === b.bindingParameters.length && a.bindingParameters.every(function (value, index) {
|
|
115
|
+
return _checkExpressionsAreEqual(b.bindingParameters[index], value);
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
case "Function":
|
|
119
|
+
var otherFunction = b;
|
|
120
|
+
|
|
121
|
+
if (a.obj === undefined || otherFunction.obj === undefined) {
|
|
122
|
+
return a.obj === otherFunction;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
return a.fn === otherFunction.fn && _checkExpressionsAreEqual(a.obj, otherFunction.obj) && a.parameters.length === otherFunction.parameters.length && a.parameters.every(function (value, index) {
|
|
126
|
+
return _checkExpressionsAreEqual(otherFunction.parameters[index], value);
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
case "Ref":
|
|
130
|
+
return a.ref === b.ref;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Converts a nested SetExpression by inlining operands of type SetExpression with the same operator.
|
|
135
|
+
*
|
|
136
|
+
* @param expression The expression to flatten
|
|
137
|
+
* @returns {SetExpression} A new SetExpression with the same operator
|
|
138
|
+
*/
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
_exports._checkExpressionsAreEqual = _checkExpressionsAreEqual;
|
|
142
|
+
|
|
143
|
+
function flattenSetExpression(expression) {
|
|
144
|
+
return expression.operands.reduce(function (result, operand) {
|
|
145
|
+
var candidatesForFlattening = operand._type === "Set" && operand.operator === expression.operator ? operand.operands : [operand];
|
|
146
|
+
candidatesForFlattening.forEach(function (candidate) {
|
|
147
|
+
if (result.operands.every(function (e) {
|
|
148
|
+
return !_checkExpressionsAreEqual(e, candidate);
|
|
149
|
+
})) {
|
|
150
|
+
result.operands.push(candidate);
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
return result;
|
|
154
|
+
}, {
|
|
155
|
+
_type: "Set",
|
|
156
|
+
operator: expression.operator,
|
|
157
|
+
operands: []
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Detects whether an array of boolean expressions contains an expression and its negation.
|
|
162
|
+
*
|
|
163
|
+
* @param expressions Array of expressions
|
|
164
|
+
* @returns {boolean} `true` if the set of expressions contains an expression and its negation
|
|
165
|
+
*/
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
function hasOppositeExpressions(expressions) {
|
|
169
|
+
if (expressions.length < 2) {
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
var i = expressions.length;
|
|
174
|
+
|
|
175
|
+
while (i--) {
|
|
176
|
+
var expression = expressions[i];
|
|
177
|
+
var negatedExpression = not(expression);
|
|
178
|
+
|
|
179
|
+
for (var j = 0; j < i; j++) {
|
|
180
|
+
if (_checkExpressionsAreEqual(expressions[j], negatedExpression)) {
|
|
181
|
+
return true;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
return false;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Logical `and` expression.
|
|
190
|
+
*
|
|
191
|
+
* The expression is simplified to false if this can be decided statically (that is, if one operand is a constant
|
|
192
|
+
* false or if the expression contains an operand and its negation).
|
|
193
|
+
*
|
|
194
|
+
* @param operands Expressions to connect by `and`
|
|
195
|
+
* @returns {Expression<boolean>} Expression evaluating to boolean
|
|
196
|
+
*/
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
function and() {
|
|
200
|
+
for (var _len2 = arguments.length, operands = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
201
|
+
operands[_key2] = arguments[_key2];
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
var expressions = flattenSetExpression({
|
|
205
|
+
_type: "Set",
|
|
206
|
+
operator: "&&",
|
|
207
|
+
operands: operands.map(wrapPrimitive)
|
|
208
|
+
}).operands;
|
|
209
|
+
|
|
210
|
+
if (hasUnresolveableExpression.apply(void 0, _toConsumableArray(expressions))) {
|
|
211
|
+
return unresolveableExpression;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
var isStaticFalse = false;
|
|
215
|
+
var nonTrivialExpression = expressions.filter(function (expression) {
|
|
216
|
+
if (isConstant(expression) && !expression.value) {
|
|
217
|
+
isStaticFalse = true;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
return !isConstant(expression);
|
|
221
|
+
});
|
|
222
|
+
|
|
223
|
+
if (isStaticFalse) {
|
|
224
|
+
return constant(false);
|
|
225
|
+
} else if (nonTrivialExpression.length === 0) {
|
|
226
|
+
// Resolve the constant then
|
|
227
|
+
var isValid = expressions.reduce(function (isValid, expression) {
|
|
228
|
+
return isValid && isConstant(expression) && expression.value;
|
|
229
|
+
}, true);
|
|
230
|
+
return constant(isValid);
|
|
231
|
+
} else if (nonTrivialExpression.length === 1) {
|
|
232
|
+
return nonTrivialExpression[0];
|
|
233
|
+
} else if (hasOppositeExpressions(nonTrivialExpression)) {
|
|
234
|
+
return constant(false);
|
|
235
|
+
} else {
|
|
236
|
+
return {
|
|
237
|
+
_type: "Set",
|
|
238
|
+
operator: "&&",
|
|
239
|
+
operands: nonTrivialExpression
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Logical `or` expression.
|
|
245
|
+
*
|
|
246
|
+
* The expression is simplified to true if this can be decided statically (that is, if one operand is a constant
|
|
247
|
+
* true or if the expression contains an operand and its negation).
|
|
248
|
+
*
|
|
249
|
+
* @param operands Expressions to connect by `or`
|
|
250
|
+
* @returns {Expression<boolean>} Expression evaluating to boolean
|
|
251
|
+
*/
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
_exports.and = and;
|
|
255
|
+
|
|
256
|
+
function or() {
|
|
257
|
+
for (var _len3 = arguments.length, operands = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
|
258
|
+
operands[_key3] = arguments[_key3];
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
var expressions = flattenSetExpression({
|
|
262
|
+
_type: "Set",
|
|
263
|
+
operator: "||",
|
|
264
|
+
operands: operands.map(wrapPrimitive)
|
|
265
|
+
}).operands;
|
|
266
|
+
|
|
267
|
+
if (hasUnresolveableExpression.apply(void 0, _toConsumableArray(expressions))) {
|
|
268
|
+
return unresolveableExpression;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
var isStaticTrue = false;
|
|
272
|
+
var nonTrivialExpression = expressions.filter(function (expression) {
|
|
273
|
+
if (isConstant(expression) && expression.value) {
|
|
274
|
+
isStaticTrue = true;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
return !isConstant(expression) || expression.value;
|
|
278
|
+
});
|
|
279
|
+
|
|
280
|
+
if (isStaticTrue) {
|
|
281
|
+
return constant(true);
|
|
282
|
+
} else if (nonTrivialExpression.length === 0) {
|
|
283
|
+
// Resolve the constant then
|
|
284
|
+
var isValid = expressions.reduce(function (isValid, expression) {
|
|
285
|
+
return isValid && isConstant(expression) && expression.value;
|
|
286
|
+
}, true);
|
|
287
|
+
return constant(isValid);
|
|
288
|
+
} else if (nonTrivialExpression.length === 1) {
|
|
289
|
+
return nonTrivialExpression[0];
|
|
290
|
+
} else if (hasOppositeExpressions(nonTrivialExpression)) {
|
|
291
|
+
return constant(true);
|
|
292
|
+
} else {
|
|
293
|
+
return {
|
|
294
|
+
_type: "Set",
|
|
295
|
+
operator: "||",
|
|
296
|
+
operands: nonTrivialExpression
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Logical `not` operator.
|
|
302
|
+
*
|
|
303
|
+
* @param operand The expression to reverse
|
|
304
|
+
* @returns {Expression<boolean>} The resulting expression that evaluates to boolean
|
|
305
|
+
*/
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
_exports.or = or;
|
|
309
|
+
|
|
310
|
+
function not(operand) {
|
|
311
|
+
operand = wrapPrimitive(operand);
|
|
312
|
+
|
|
313
|
+
if (hasUnresolveableExpression(operand)) {
|
|
314
|
+
return unresolveableExpression;
|
|
315
|
+
} else if (isConstant(operand)) {
|
|
316
|
+
return constant(!operand.value);
|
|
317
|
+
} else if (typeof operand === "object" && operand._type === "Set" && operand.operator === "||" && operand.operands.every(function (expression) {
|
|
318
|
+
return isConstant(expression) || isComparison(expression);
|
|
319
|
+
})) {
|
|
320
|
+
return and.apply(void 0, _toConsumableArray(operand.operands.map(function (expression) {
|
|
321
|
+
return not(expression);
|
|
322
|
+
})));
|
|
323
|
+
} else if (typeof operand === "object" && operand._type === "Set" && operand.operator === "&&" && operand.operands.every(function (expression) {
|
|
324
|
+
return isConstant(expression) || isComparison(expression);
|
|
325
|
+
})) {
|
|
326
|
+
return or.apply(void 0, _toConsumableArray(operand.operands.map(function (expression) {
|
|
327
|
+
return not(expression);
|
|
328
|
+
})));
|
|
329
|
+
} else if (isComparison(operand)) {
|
|
330
|
+
// Create the reverse comparison
|
|
331
|
+
switch (operand.operator) {
|
|
332
|
+
case "!==":
|
|
333
|
+
return equal(operand.operand1, operand.operand2);
|
|
334
|
+
|
|
335
|
+
case "<":
|
|
336
|
+
return greaterOrEqual(operand.operand1, operand.operand2);
|
|
337
|
+
|
|
338
|
+
case "<=":
|
|
339
|
+
return greaterThan(operand.operand1, operand.operand2);
|
|
340
|
+
|
|
341
|
+
case "===":
|
|
342
|
+
return notEqual(operand.operand1, operand.operand2);
|
|
343
|
+
|
|
344
|
+
case ">":
|
|
345
|
+
return lessOrEqual(operand.operand1, operand.operand2);
|
|
346
|
+
|
|
347
|
+
case ">=":
|
|
348
|
+
return lessThan(operand.operand1, operand.operand2);
|
|
349
|
+
}
|
|
350
|
+
} else if (operand._type === "Not") {
|
|
351
|
+
return operand.operand;
|
|
352
|
+
} else {
|
|
353
|
+
return {
|
|
354
|
+
_type: "Not",
|
|
355
|
+
operand: operand
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* Evaluates whether a binding expression is equal to true with a loose equality.
|
|
361
|
+
*
|
|
362
|
+
* @param operand The expression to check
|
|
363
|
+
* @returns {Expression<boolean>} The resulting expression that evaluates to boolean
|
|
364
|
+
*/
|
|
365
|
+
|
|
366
|
+
|
|
367
|
+
_exports.not = not;
|
|
368
|
+
|
|
369
|
+
function isTruthy(operand) {
|
|
370
|
+
if (isConstant(operand)) {
|
|
371
|
+
return constant(!!operand.value);
|
|
372
|
+
} else {
|
|
373
|
+
return {
|
|
374
|
+
_type: "Truthy",
|
|
375
|
+
operand: operand
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* Creates a binding expression that will be evaluated by the corresponding model.
|
|
381
|
+
*
|
|
382
|
+
* @template TargetType
|
|
383
|
+
* @param path The path on the model
|
|
384
|
+
* @param [modelName] The name of the model
|
|
385
|
+
* @param [visitedNavigationPaths] The paths from the root entitySet
|
|
386
|
+
* @param [pathVisitor] A function to modify the resulting path
|
|
387
|
+
* @returns {BindingExpressionExpression<TargetType>} The default binding expression
|
|
388
|
+
*/
|
|
389
|
+
|
|
390
|
+
|
|
391
|
+
_exports.isTruthy = isTruthy;
|
|
392
|
+
|
|
393
|
+
function bindingExpression(path, modelName) {
|
|
394
|
+
var visitedNavigationPaths = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
395
|
+
var pathVisitor = arguments.length > 3 ? arguments[3] : undefined;
|
|
396
|
+
|
|
397
|
+
if (path === undefined) {
|
|
398
|
+
return unresolveableExpression;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
var targetPath;
|
|
402
|
+
|
|
403
|
+
if (pathVisitor) {
|
|
404
|
+
targetPath = pathVisitor(path);
|
|
405
|
+
|
|
406
|
+
if (targetPath === undefined) {
|
|
407
|
+
return unresolveableExpression;
|
|
408
|
+
}
|
|
409
|
+
} else {
|
|
410
|
+
var localPath = visitedNavigationPaths.concat();
|
|
411
|
+
localPath.push(path);
|
|
412
|
+
targetPath = localPath.join("/");
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
return {
|
|
416
|
+
_type: "Binding",
|
|
417
|
+
modelName: modelName,
|
|
418
|
+
path: targetPath
|
|
419
|
+
};
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
_exports.bindingExpression = bindingExpression;
|
|
423
|
+
|
|
424
|
+
/**
|
|
425
|
+
* Creates a constant expression based on a primitive value.
|
|
426
|
+
*
|
|
427
|
+
* @template T
|
|
428
|
+
* @param value The constant to wrap in an expression
|
|
429
|
+
* @returns {ConstantExpression<T>} The constant expression
|
|
430
|
+
*/
|
|
431
|
+
function constant(value) {
|
|
432
|
+
var constantValue;
|
|
433
|
+
|
|
434
|
+
if (typeof value === "object" && value !== null && value !== undefined) {
|
|
435
|
+
if (Array.isArray(value)) {
|
|
436
|
+
constantValue = value.map(wrapPrimitive);
|
|
437
|
+
} else if (isPrimitiveObject(value)) {
|
|
438
|
+
constantValue = value.valueOf();
|
|
439
|
+
} else {
|
|
440
|
+
var val = value;
|
|
441
|
+
var obj = Object.keys(val).reduce(function (obj, key) {
|
|
442
|
+
var value = wrapPrimitive(val[key]);
|
|
443
|
+
|
|
444
|
+
if (value._type !== "Constant" || value.value !== undefined) {
|
|
445
|
+
obj[key] = value;
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
return obj;
|
|
449
|
+
}, {});
|
|
450
|
+
constantValue = obj;
|
|
451
|
+
}
|
|
452
|
+
} else {
|
|
453
|
+
constantValue = value;
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
return {
|
|
457
|
+
_type: "Constant",
|
|
458
|
+
value: constantValue
|
|
459
|
+
};
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
_exports.constant = constant;
|
|
463
|
+
|
|
464
|
+
function resolveBindingString(value, targetType) {
|
|
465
|
+
if (value !== undefined && typeof value === "string" && value.startsWith("{")) {
|
|
466
|
+
if (value.startsWith("{=")) {
|
|
467
|
+
// Expression binding, we can just remove the outer binding things
|
|
468
|
+
return {
|
|
469
|
+
_type: "EmbeddedExpressionBinding",
|
|
470
|
+
value: value
|
|
471
|
+
};
|
|
472
|
+
} else {
|
|
473
|
+
return {
|
|
474
|
+
_type: "EmbeddedBinding",
|
|
475
|
+
value: value
|
|
476
|
+
};
|
|
477
|
+
}
|
|
478
|
+
} else {
|
|
479
|
+
switch (targetType) {
|
|
480
|
+
case "boolean":
|
|
481
|
+
if (typeof value === "string" && (value === "true" || value === "false")) {
|
|
482
|
+
return constant(value === "true");
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
return constant(value);
|
|
486
|
+
|
|
487
|
+
default:
|
|
488
|
+
return constant(value);
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
/**
|
|
493
|
+
* A named reference.
|
|
494
|
+
*
|
|
495
|
+
* @see fn
|
|
496
|
+
*
|
|
497
|
+
* @param ref Reference
|
|
498
|
+
* @returns {ReferenceExpression} The object reference binding part
|
|
499
|
+
*/
|
|
500
|
+
|
|
501
|
+
|
|
502
|
+
_exports.resolveBindingString = resolveBindingString;
|
|
503
|
+
|
|
504
|
+
function ref(ref) {
|
|
505
|
+
return {
|
|
506
|
+
_type: "Ref",
|
|
507
|
+
ref: ref
|
|
508
|
+
};
|
|
509
|
+
}
|
|
510
|
+
/**
|
|
511
|
+
* Determine whether the type is an expression.
|
|
512
|
+
*
|
|
513
|
+
* Every object having a property named `_type` of some value is considered an expression, even if there is actually
|
|
514
|
+
* no such expression type supported.
|
|
515
|
+
*
|
|
516
|
+
* @param something Type to check
|
|
517
|
+
* @returns {boolean} `true` if the type is considered to be an expression
|
|
518
|
+
*/
|
|
519
|
+
|
|
520
|
+
|
|
521
|
+
_exports.ref = ref;
|
|
522
|
+
|
|
523
|
+
function isExpression(something) {
|
|
524
|
+
return something !== null && typeof something === "object" && something._type !== undefined;
|
|
525
|
+
}
|
|
526
|
+
/**
|
|
527
|
+
* Wrap a primitive into a constant expression if it is not already an expression.
|
|
528
|
+
*
|
|
529
|
+
* @template T
|
|
530
|
+
* @param something The object to wrap in a Constant expression
|
|
531
|
+
* @returns {Expression<T>} Either the original object or the wrapped one depending on the case
|
|
532
|
+
*/
|
|
533
|
+
|
|
534
|
+
|
|
535
|
+
function wrapPrimitive(something) {
|
|
536
|
+
if (isExpression(something)) {
|
|
537
|
+
return something;
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
return constant(something);
|
|
541
|
+
}
|
|
542
|
+
/**
|
|
543
|
+
* Checks if the expression or value provided is constant or not.
|
|
544
|
+
*
|
|
545
|
+
* @template T The target type
|
|
546
|
+
* @param maybeConstant The expression or primitive value that is to be checked
|
|
547
|
+
* @returns {boolean} `true` if it is constant
|
|
548
|
+
*/
|
|
549
|
+
|
|
550
|
+
|
|
551
|
+
function isConstant(maybeConstant) {
|
|
552
|
+
return typeof maybeConstant !== "object" || maybeConstant._type === "Constant";
|
|
553
|
+
}
|
|
554
|
+
/**
|
|
555
|
+
* Checks if the expression or value provided is binding or not.
|
|
556
|
+
*
|
|
557
|
+
* @template T The target type
|
|
558
|
+
* @param maybeBinding The expression or primitive value that is to be checked
|
|
559
|
+
* @returns {boolean} `true` if it is binding
|
|
560
|
+
*/
|
|
561
|
+
|
|
562
|
+
|
|
563
|
+
_exports.isConstant = isConstant;
|
|
564
|
+
|
|
565
|
+
function isBinding(maybeBinding) {
|
|
566
|
+
return typeof maybeBinding === "object" && maybeBinding._type === "Binding";
|
|
567
|
+
}
|
|
568
|
+
/**
|
|
569
|
+
* Checks if the expression provided is a comparison or not.
|
|
570
|
+
*
|
|
571
|
+
* @template T The target type
|
|
572
|
+
* @param expression The expression
|
|
573
|
+
* @returns {boolean} `true` if the expression is a ComparisonExpression
|
|
574
|
+
*/
|
|
575
|
+
|
|
576
|
+
|
|
577
|
+
_exports.isBinding = isBinding;
|
|
578
|
+
|
|
579
|
+
function isComparison(expression) {
|
|
580
|
+
return expression._type === "Comparison";
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
function isPrimitiveObject(objectType) {
|
|
584
|
+
switch (objectType.constructor.name) {
|
|
585
|
+
case "String":
|
|
586
|
+
case "Number":
|
|
587
|
+
case "Boolean":
|
|
588
|
+
return true;
|
|
589
|
+
|
|
590
|
+
default:
|
|
591
|
+
return false;
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
/**
|
|
595
|
+
* Check if the passed annotation expression is a ComplexAnnotationExpression.
|
|
596
|
+
*
|
|
597
|
+
* @template T The target type
|
|
598
|
+
* @param annotationExpression The annotation expression to evaluate
|
|
599
|
+
* @returns {boolean} `true` if the object is a {ComplexAnnotationExpression}
|
|
600
|
+
*/
|
|
601
|
+
|
|
602
|
+
|
|
603
|
+
function isComplexAnnotationExpression(annotationExpression) {
|
|
604
|
+
return typeof annotationExpression === "object" && !isPrimitiveObject(annotationExpression);
|
|
605
|
+
}
|
|
606
|
+
/**
|
|
607
|
+
* Generate the corresponding expression for a given annotation expression.
|
|
608
|
+
*
|
|
609
|
+
* @template T The target type
|
|
610
|
+
* @param annotationExpression The source annotation expression
|
|
611
|
+
* @param visitedNavigationPaths The path from the root entity set
|
|
612
|
+
* @param defaultValue Default value if the annotationExpression is undefined
|
|
613
|
+
* @param pathVisitor A function to modify the resulting path
|
|
614
|
+
* @returns {Expression<T>} The expression equivalent to that annotation expression
|
|
615
|
+
*/
|
|
616
|
+
|
|
617
|
+
|
|
618
|
+
function annotationExpression(annotationExpression) {
|
|
619
|
+
var visitedNavigationPaths = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
620
|
+
var defaultValue = arguments.length > 2 ? arguments[2] : undefined;
|
|
621
|
+
var pathVisitor = arguments.length > 3 ? arguments[3] : undefined;
|
|
622
|
+
|
|
623
|
+
if (annotationExpression === undefined) {
|
|
624
|
+
return wrapPrimitive(defaultValue);
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
if (!isComplexAnnotationExpression(annotationExpression)) {
|
|
628
|
+
return constant(annotationExpression);
|
|
629
|
+
} else {
|
|
630
|
+
switch (annotationExpression.type) {
|
|
631
|
+
case "Path":
|
|
632
|
+
return bindingExpression(annotationExpression.path, undefined, visitedNavigationPaths, pathVisitor);
|
|
633
|
+
|
|
634
|
+
case "If":
|
|
635
|
+
return annotationIfExpression(annotationExpression.If, visitedNavigationPaths, pathVisitor);
|
|
636
|
+
|
|
637
|
+
case "Not":
|
|
638
|
+
return not(parseAnnotationCondition(annotationExpression.Not, visitedNavigationPaths, pathVisitor));
|
|
639
|
+
|
|
640
|
+
case "Eq":
|
|
641
|
+
return equal(parseAnnotationCondition(annotationExpression.Eq[0], visitedNavigationPaths, pathVisitor), parseAnnotationCondition(annotationExpression.Eq[1], visitedNavigationPaths, pathVisitor));
|
|
642
|
+
|
|
643
|
+
case "Ne":
|
|
644
|
+
return notEqual(parseAnnotationCondition(annotationExpression.Ne[0], visitedNavigationPaths, pathVisitor), parseAnnotationCondition(annotationExpression.Ne[1], visitedNavigationPaths, pathVisitor));
|
|
645
|
+
|
|
646
|
+
case "Gt":
|
|
647
|
+
return greaterThan(parseAnnotationCondition(annotationExpression.Gt[0], visitedNavigationPaths, pathVisitor), parseAnnotationCondition(annotationExpression.Gt[1], visitedNavigationPaths, pathVisitor));
|
|
648
|
+
|
|
649
|
+
case "Ge":
|
|
650
|
+
return greaterOrEqual(parseAnnotationCondition(annotationExpression.Ge[0], visitedNavigationPaths, pathVisitor), parseAnnotationCondition(annotationExpression.Ge[1], visitedNavigationPaths, pathVisitor));
|
|
651
|
+
|
|
652
|
+
case "Lt":
|
|
653
|
+
return lessThan(parseAnnotationCondition(annotationExpression.Lt[0], visitedNavigationPaths, pathVisitor), parseAnnotationCondition(annotationExpression.Lt[1], visitedNavigationPaths, pathVisitor));
|
|
654
|
+
|
|
655
|
+
case "Le":
|
|
656
|
+
return lessOrEqual(parseAnnotationCondition(annotationExpression.Le[0], visitedNavigationPaths, pathVisitor), parseAnnotationCondition(annotationExpression.Le[1], visitedNavigationPaths, pathVisitor));
|
|
657
|
+
|
|
658
|
+
case "Or":
|
|
659
|
+
return or.apply(void 0, _toConsumableArray(annotationExpression.Or.map(function (orCondition) {
|
|
660
|
+
return parseAnnotationCondition(orCondition, visitedNavigationPaths, pathVisitor);
|
|
661
|
+
})));
|
|
662
|
+
|
|
663
|
+
case "And":
|
|
664
|
+
return and.apply(void 0, _toConsumableArray(annotationExpression.And.map(function (andCondition) {
|
|
665
|
+
return parseAnnotationCondition(andCondition, visitedNavigationPaths, pathVisitor);
|
|
666
|
+
})));
|
|
667
|
+
|
|
668
|
+
case "Apply":
|
|
669
|
+
return annotationApplyExpression(annotationExpression, visitedNavigationPaths, pathVisitor);
|
|
670
|
+
}
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
/**
|
|
674
|
+
* Parse the annotation condition into an expression.
|
|
675
|
+
*
|
|
676
|
+
* @template T The target type
|
|
677
|
+
* @param annotationValue The condition or value from the annotation
|
|
678
|
+
* @param visitedNavigationPaths The path from the root entity set
|
|
679
|
+
* @param pathVisitor A function to modify the resulting path
|
|
680
|
+
* @returns {Expression<T>} An equivalent expression
|
|
681
|
+
*/
|
|
682
|
+
|
|
683
|
+
|
|
684
|
+
_exports.annotationExpression = annotationExpression;
|
|
685
|
+
|
|
686
|
+
function parseAnnotationCondition(annotationValue) {
|
|
687
|
+
var visitedNavigationPaths = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
688
|
+
var pathVisitor = arguments.length > 2 ? arguments[2] : undefined;
|
|
689
|
+
|
|
690
|
+
if (annotationValue === null || typeof annotationValue !== "object") {
|
|
691
|
+
return constant(annotationValue);
|
|
692
|
+
} else if (annotationValue.hasOwnProperty("$Or")) {
|
|
693
|
+
return or.apply(void 0, _toConsumableArray(annotationValue.$Or.map(function (orCondition) {
|
|
694
|
+
return parseAnnotationCondition(orCondition, visitedNavigationPaths, pathVisitor);
|
|
695
|
+
})));
|
|
696
|
+
} else if (annotationValue.hasOwnProperty("$And")) {
|
|
697
|
+
return and.apply(void 0, _toConsumableArray(annotationValue.$And.map(function (andCondition) {
|
|
698
|
+
return parseAnnotationCondition(andCondition, visitedNavigationPaths, pathVisitor);
|
|
699
|
+
})));
|
|
700
|
+
} else if (annotationValue.hasOwnProperty("$Not")) {
|
|
701
|
+
return not(parseAnnotationCondition(annotationValue.$Not[0], visitedNavigationPaths, pathVisitor));
|
|
702
|
+
} else if (annotationValue.hasOwnProperty("$Eq")) {
|
|
703
|
+
return equal(parseAnnotationCondition(annotationValue.$Eq[0], visitedNavigationPaths, pathVisitor), parseAnnotationCondition(annotationValue.$Eq[1], visitedNavigationPaths, pathVisitor));
|
|
704
|
+
} else if (annotationValue.hasOwnProperty("$Ne")) {
|
|
705
|
+
return notEqual(parseAnnotationCondition(annotationValue.$Ne[0], visitedNavigationPaths, pathVisitor), parseAnnotationCondition(annotationValue.$Ne[1], visitedNavigationPaths, pathVisitor));
|
|
706
|
+
} else if (annotationValue.hasOwnProperty("$Gt")) {
|
|
707
|
+
return greaterThan(parseAnnotationCondition(annotationValue.$Gt[0], visitedNavigationPaths, pathVisitor), parseAnnotationCondition(annotationValue.$Gt[1], visitedNavigationPaths, pathVisitor));
|
|
708
|
+
} else if (annotationValue.hasOwnProperty("$Ge")) {
|
|
709
|
+
return greaterOrEqual(parseAnnotationCondition(annotationValue.$Ge[0], visitedNavigationPaths, pathVisitor), parseAnnotationCondition(annotationValue.$Ge[1], visitedNavigationPaths, pathVisitor));
|
|
710
|
+
} else if (annotationValue.hasOwnProperty("$Lt")) {
|
|
711
|
+
return lessThan(parseAnnotationCondition(annotationValue.$Lt[0], visitedNavigationPaths, pathVisitor), parseAnnotationCondition(annotationValue.$Lt[1], visitedNavigationPaths, pathVisitor));
|
|
712
|
+
} else if (annotationValue.hasOwnProperty("$Le")) {
|
|
713
|
+
return lessOrEqual(parseAnnotationCondition(annotationValue.$Le[0], visitedNavigationPaths, pathVisitor), parseAnnotationCondition(annotationValue.$Le[1], visitedNavigationPaths, pathVisitor));
|
|
714
|
+
} else if (annotationValue.hasOwnProperty("$Path")) {
|
|
715
|
+
return bindingExpression(annotationValue.$Path, undefined, visitedNavigationPaths, pathVisitor);
|
|
716
|
+
} else if (annotationValue.hasOwnProperty("$Apply")) {
|
|
717
|
+
return annotationExpression({
|
|
718
|
+
type: "Apply",
|
|
719
|
+
Function: annotationValue.$Function,
|
|
720
|
+
Apply: annotationValue.$Apply
|
|
721
|
+
}, visitedNavigationPaths, undefined, pathVisitor);
|
|
722
|
+
} else if (annotationValue.hasOwnProperty("$If")) {
|
|
723
|
+
return annotationExpression({
|
|
724
|
+
type: "If",
|
|
725
|
+
If: annotationValue.$If
|
|
726
|
+
}, visitedNavigationPaths, undefined, pathVisitor);
|
|
727
|
+
} else if (annotationValue.hasOwnProperty("$EnumMember")) {
|
|
728
|
+
return constant(resolveEnumValue(annotationValue.$EnumMember));
|
|
729
|
+
} else {
|
|
730
|
+
return constant(false);
|
|
731
|
+
}
|
|
732
|
+
}
|
|
733
|
+
/**
|
|
734
|
+
* Process the {IfAnnotationExpressionValue} into an expression.
|
|
735
|
+
*
|
|
736
|
+
* @template T The target type
|
|
737
|
+
* @param annotationIfExpression An If expression returning the type T
|
|
738
|
+
* @param visitedNavigationPaths The path from the root entity set
|
|
739
|
+
* @param pathVisitor A function to modify the resulting path
|
|
740
|
+
* @returns {Expression<T>} The equivalent ifElse expression
|
|
741
|
+
*/
|
|
742
|
+
|
|
743
|
+
|
|
744
|
+
function annotationIfExpression(annotationIfExpression) {
|
|
745
|
+
var visitedNavigationPaths = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
746
|
+
var pathVisitor = arguments.length > 2 ? arguments[2] : undefined;
|
|
747
|
+
return ifElse(parseAnnotationCondition(annotationIfExpression[0], visitedNavigationPaths, pathVisitor), parseAnnotationCondition(annotationIfExpression[1], visitedNavigationPaths, pathVisitor), parseAnnotationCondition(annotationIfExpression[2], visitedNavigationPaths, pathVisitor));
|
|
748
|
+
}
|
|
749
|
+
|
|
750
|
+
_exports.annotationIfExpression = annotationIfExpression;
|
|
751
|
+
|
|
752
|
+
function annotationApplyExpression(annotationApplyExpression) {
|
|
753
|
+
var visitedNavigationPaths = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
754
|
+
var pathVisitor = arguments.length > 2 ? arguments[2] : undefined;
|
|
755
|
+
|
|
756
|
+
switch (annotationApplyExpression.Function) {
|
|
757
|
+
case "odata.concat":
|
|
758
|
+
return concat.apply(void 0, _toConsumableArray(annotationApplyExpression.Apply.map(function (applyParam) {
|
|
759
|
+
var applyParamConverted = applyParam;
|
|
760
|
+
|
|
761
|
+
if (applyParam.hasOwnProperty("$Path")) {
|
|
762
|
+
applyParamConverted = {
|
|
763
|
+
type: "Path",
|
|
764
|
+
path: applyParam.$Path
|
|
765
|
+
};
|
|
766
|
+
} else if (applyParam.hasOwnProperty("$If")) {
|
|
767
|
+
applyParamConverted = {
|
|
768
|
+
type: "If",
|
|
769
|
+
If: applyParam.$If
|
|
770
|
+
};
|
|
771
|
+
} else if (applyParam.hasOwnProperty("$Apply")) {
|
|
772
|
+
applyParamConverted = {
|
|
773
|
+
type: "Apply",
|
|
774
|
+
Function: applyParam.$Function,
|
|
775
|
+
Apply: applyParam.$Apply
|
|
776
|
+
};
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
return annotationExpression(applyParamConverted, visitedNavigationPaths, undefined, pathVisitor);
|
|
780
|
+
})));
|
|
781
|
+
break;
|
|
782
|
+
}
|
|
783
|
+
}
|
|
784
|
+
/**
|
|
785
|
+
* Generic helper for the comparison operations (equal, notEqual, ...).
|
|
786
|
+
*
|
|
787
|
+
* @template T The target type
|
|
788
|
+
* @param operator The operator to apply
|
|
789
|
+
* @param leftOperand The operand on the left side of the operator
|
|
790
|
+
* @param rightOperand The operand on the right side of the operator
|
|
791
|
+
* @returns {Expression<boolean>} An expression representing the comparison
|
|
792
|
+
*/
|
|
793
|
+
|
|
794
|
+
|
|
795
|
+
_exports.annotationApplyExpression = annotationApplyExpression;
|
|
796
|
+
|
|
797
|
+
function comparison(operator, leftOperand, rightOperand) {
|
|
798
|
+
var leftExpression = wrapPrimitive(leftOperand);
|
|
799
|
+
var rightExpression = wrapPrimitive(rightOperand);
|
|
800
|
+
|
|
801
|
+
if (hasUnresolveableExpression(leftExpression, rightExpression)) {
|
|
802
|
+
return unresolveableExpression;
|
|
803
|
+
}
|
|
804
|
+
|
|
805
|
+
if (isConstant(leftExpression) && isConstant(rightExpression)) {
|
|
806
|
+
if (leftExpression.value === undefined || rightExpression.value === undefined) {
|
|
807
|
+
return constant(leftExpression.value === rightExpression.value);
|
|
808
|
+
}
|
|
809
|
+
|
|
810
|
+
switch (operator) {
|
|
811
|
+
case "!==":
|
|
812
|
+
return constant(leftExpression.value !== rightExpression.value);
|
|
813
|
+
|
|
814
|
+
case "<":
|
|
815
|
+
return constant(leftExpression.value < rightExpression.value);
|
|
816
|
+
|
|
817
|
+
case "<=":
|
|
818
|
+
return constant(leftExpression.value <= rightExpression.value);
|
|
819
|
+
|
|
820
|
+
case ">":
|
|
821
|
+
return constant(leftExpression.value > rightExpression.value);
|
|
822
|
+
|
|
823
|
+
case ">=":
|
|
824
|
+
return constant(leftExpression.value >= rightExpression.value);
|
|
825
|
+
|
|
826
|
+
case "===":
|
|
827
|
+
default:
|
|
828
|
+
return constant(leftExpression.value === rightExpression.value);
|
|
829
|
+
}
|
|
830
|
+
} else {
|
|
831
|
+
return {
|
|
832
|
+
_type: "Comparison",
|
|
833
|
+
operator: operator,
|
|
834
|
+
operand1: leftExpression,
|
|
835
|
+
operand2: rightExpression
|
|
836
|
+
};
|
|
837
|
+
}
|
|
838
|
+
}
|
|
839
|
+
/**
|
|
840
|
+
* Comparison: "equal" (===).
|
|
841
|
+
*
|
|
842
|
+
* @template T The target type
|
|
843
|
+
* @param leftOperand The operand on the left side
|
|
844
|
+
* @param rightOperand The operand on the right side of the comparison
|
|
845
|
+
* @returns {Expression<boolean>} An expression representing the comparison
|
|
846
|
+
*/
|
|
847
|
+
|
|
848
|
+
|
|
849
|
+
function equal(leftOperand, rightOperand) {
|
|
850
|
+
var leftExpression = wrapPrimitive(leftOperand);
|
|
851
|
+
var rightExpression = wrapPrimitive(rightOperand);
|
|
852
|
+
|
|
853
|
+
if (hasUnresolveableExpression(leftExpression, rightExpression)) {
|
|
854
|
+
return unresolveableExpression;
|
|
855
|
+
}
|
|
856
|
+
|
|
857
|
+
if (_checkExpressionsAreEqual(leftExpression, rightExpression)) {
|
|
858
|
+
return constant(true);
|
|
859
|
+
} // ((a === c) === true) => (a === c)
|
|
860
|
+
|
|
861
|
+
|
|
862
|
+
if (leftExpression._type === "Comparison" && isConstant(rightExpression) && rightExpression.value === true) {
|
|
863
|
+
return leftExpression;
|
|
864
|
+
} else if (leftExpression._type === "Comparison" && isConstant(rightExpression) && rightExpression.value === true) {
|
|
865
|
+
// ((a === c) === false) => !(a === c)
|
|
866
|
+
return not(leftExpression);
|
|
867
|
+
} else if (leftExpression._type === "IfElse" && _checkExpressionsAreEqual(leftExpression.onTrue, rightExpression)) {
|
|
868
|
+
// (if(xxxx) { aaa } else { bbb } ) === aaa )
|
|
869
|
+
return or(leftExpression.condition, equal(leftExpression.onFalse, rightExpression));
|
|
870
|
+
} else if (leftExpression._type === "IfElse" && _checkExpressionsAreEqual(leftExpression.onFalse, rightExpression)) {
|
|
871
|
+
return or(not(leftExpression.condition), equal(leftExpression.onTrue, rightExpression));
|
|
872
|
+
} else if (leftExpression._type === "IfElse" && isConstant(leftExpression.onTrue) && isConstant(rightExpression) && isConstant(leftExpression.onFalse) && !_checkExpressionsAreEqual(leftExpression.onTrue, rightExpression) && !_checkExpressionsAreEqual(leftExpression.onFalse, rightExpression)) {
|
|
873
|
+
return constant(false);
|
|
874
|
+
}
|
|
875
|
+
|
|
876
|
+
return comparison("===", leftExpression, rightExpression);
|
|
877
|
+
}
|
|
878
|
+
/**
|
|
879
|
+
* Comparison: "not equal" (!==).
|
|
880
|
+
*
|
|
881
|
+
* @template T The target type
|
|
882
|
+
* @param leftOperand The operand on the left side
|
|
883
|
+
* @param rightOperand The operand on the right side of the comparison
|
|
884
|
+
* @returns {Expression<boolean>} An expression representing the comparison
|
|
885
|
+
*/
|
|
886
|
+
|
|
887
|
+
|
|
888
|
+
_exports.equal = equal;
|
|
889
|
+
|
|
890
|
+
function notEqual(leftOperand, rightOperand) {
|
|
891
|
+
var leftExpression = wrapPrimitive(leftOperand);
|
|
892
|
+
var rightExpression = wrapPrimitive(rightOperand);
|
|
893
|
+
|
|
894
|
+
if (_checkExpressionsAreEqual(leftExpression, rightExpression)) {
|
|
895
|
+
return constant(false);
|
|
896
|
+
} // ((a === c) !== true) => !(a === c)
|
|
897
|
+
|
|
898
|
+
|
|
899
|
+
if (leftExpression._type === "Comparison" && isConstant(rightExpression) && rightExpression.value === true) {
|
|
900
|
+
return not(leftExpression);
|
|
901
|
+
} else if (leftExpression._type === "Comparison" && isConstant(rightExpression) && rightExpression.value === true) {
|
|
902
|
+
// ((a === c) !== false) => (a === c)
|
|
903
|
+
return leftExpression;
|
|
904
|
+
} else if (leftExpression._type === "IfElse" && _checkExpressionsAreEqual(leftExpression.onTrue, rightExpression)) {
|
|
905
|
+
return and(not(leftExpression.condition), notEqual(leftExpression.onFalse, rightExpression));
|
|
906
|
+
} else if (leftExpression._type === "IfElse" && _checkExpressionsAreEqual(leftExpression.onFalse, rightExpression)) {
|
|
907
|
+
return and(leftExpression.condition, notEqual(leftExpression.onTrue, rightExpression));
|
|
908
|
+
} else if (leftExpression._type === "IfElse" && isConstant(leftExpression.onTrue) && isConstant(rightExpression) && isConstant(leftExpression.onFalse) && !_checkExpressionsAreEqual(leftExpression.onTrue, rightExpression) && !_checkExpressionsAreEqual(leftExpression.onFalse, rightExpression)) {
|
|
909
|
+
// If the left expression is an if else where both onTrue and onFalse are not equals to the right expression -> simplify as true
|
|
910
|
+
return constant(true);
|
|
911
|
+
}
|
|
912
|
+
|
|
913
|
+
return comparison("!==", leftExpression, rightExpression);
|
|
914
|
+
}
|
|
915
|
+
/**
|
|
916
|
+
* Comparison: "greater or equal" (>=).
|
|
917
|
+
*
|
|
918
|
+
* @template T The target type
|
|
919
|
+
* @param leftOperand The operand on the left side
|
|
920
|
+
* @param rightOperand The operand on the right side of the comparison
|
|
921
|
+
* @returns {Expression<boolean>} An expression representing the comparison
|
|
922
|
+
*/
|
|
923
|
+
|
|
924
|
+
|
|
925
|
+
_exports.notEqual = notEqual;
|
|
926
|
+
|
|
927
|
+
function greaterOrEqual(leftOperand, rightOperand) {
|
|
928
|
+
return comparison(">=", leftOperand, rightOperand);
|
|
929
|
+
}
|
|
930
|
+
/**
|
|
931
|
+
* Comparison: "greater than" (>).
|
|
932
|
+
*
|
|
933
|
+
* @template T The target type
|
|
934
|
+
* @param leftOperand The operand on the left side
|
|
935
|
+
* @param rightOperand The operand on the right side of the comparison
|
|
936
|
+
* @returns {Expression<boolean>} An expression representing the comparison
|
|
937
|
+
*/
|
|
938
|
+
|
|
939
|
+
|
|
940
|
+
_exports.greaterOrEqual = greaterOrEqual;
|
|
941
|
+
|
|
942
|
+
function greaterThan(leftOperand, rightOperand) {
|
|
943
|
+
return comparison(">", leftOperand, rightOperand);
|
|
944
|
+
}
|
|
945
|
+
/**
|
|
946
|
+
* Comparison: "less or equal" (<=).
|
|
947
|
+
*
|
|
948
|
+
* @template T The target type
|
|
949
|
+
* @param leftOperand The operand on the left side
|
|
950
|
+
* @param rightOperand The operand on the right side of the comparison
|
|
951
|
+
* @returns {Expression<boolean>} An expression representing the comparison
|
|
952
|
+
*/
|
|
953
|
+
|
|
954
|
+
|
|
955
|
+
_exports.greaterThan = greaterThan;
|
|
956
|
+
|
|
957
|
+
function lessOrEqual(leftOperand, rightOperand) {
|
|
958
|
+
return comparison("<=", leftOperand, rightOperand);
|
|
959
|
+
}
|
|
960
|
+
/**
|
|
961
|
+
* Comparison: "less than" (<).
|
|
962
|
+
*
|
|
963
|
+
* @template T The target type
|
|
964
|
+
* @param leftOperand The operand on the left side
|
|
965
|
+
* @param rightOperand The operand on the right side of the comparison
|
|
966
|
+
* @returns {Expression<boolean>} An expression representing the comparison
|
|
967
|
+
*/
|
|
968
|
+
|
|
969
|
+
|
|
970
|
+
_exports.lessOrEqual = lessOrEqual;
|
|
971
|
+
|
|
972
|
+
function lessThan(leftOperand, rightOperand) {
|
|
973
|
+
return comparison("<", leftOperand, rightOperand);
|
|
974
|
+
}
|
|
975
|
+
/**
|
|
976
|
+
* If-then-else expression.
|
|
977
|
+
*
|
|
978
|
+
* Evaluates to onTrue if the condition evaluates to true, else evaluates to onFalse.
|
|
979
|
+
*
|
|
980
|
+
* @template T The target type
|
|
981
|
+
* @param condition The condition to evaluate
|
|
982
|
+
* @param onTrue Expression result if the condition evaluates to true
|
|
983
|
+
* @param onFalse Expression result if the condition evaluates to false
|
|
984
|
+
* @returns {Expression<T>} The expression that represents this conditional check
|
|
985
|
+
*/
|
|
986
|
+
|
|
987
|
+
|
|
988
|
+
_exports.lessThan = lessThan;
|
|
989
|
+
|
|
990
|
+
function ifElse(condition, onTrue, onFalse) {
|
|
991
|
+
var conditionExpression = wrapPrimitive(condition);
|
|
992
|
+
var onTrueExpression = wrapPrimitive(onTrue);
|
|
993
|
+
var onFalseExpression = wrapPrimitive(onFalse);
|
|
994
|
+
|
|
995
|
+
if (hasUnresolveableExpression(conditionExpression, onTrueExpression, onFalseExpression)) {
|
|
996
|
+
return unresolveableExpression;
|
|
997
|
+
} // swap branches if the condition is a negation
|
|
998
|
+
|
|
999
|
+
|
|
1000
|
+
if (conditionExpression._type === "Not") {
|
|
1001
|
+
// ifElse(not(X), a, b) --> ifElse(X, b, a)
|
|
1002
|
+
var _ref = [onFalseExpression, onTrueExpression];
|
|
1003
|
+
onTrueExpression = _ref[0];
|
|
1004
|
+
onFalseExpression = _ref[1];
|
|
1005
|
+
conditionExpression = not(conditionExpression);
|
|
1006
|
+
} // inline nested if-else expressions: onTrue branch
|
|
1007
|
+
// ifElse(X, ifElse(X, a, b), c) ==> ifElse(X, a, c)
|
|
1008
|
+
|
|
1009
|
+
|
|
1010
|
+
if (onTrueExpression._type === "IfElse" && _checkExpressionsAreEqual(conditionExpression, onTrueExpression.condition)) {
|
|
1011
|
+
onTrueExpression = onTrueExpression.onTrue;
|
|
1012
|
+
} // inline nested if-else expressions: onFalse branch
|
|
1013
|
+
// ifElse(X, a, ifElse(X, b, c)) ==> ifElse(X, a, c)
|
|
1014
|
+
|
|
1015
|
+
|
|
1016
|
+
if (onFalseExpression._type === "IfElse" && _checkExpressionsAreEqual(conditionExpression, onFalseExpression.condition)) {
|
|
1017
|
+
onFalseExpression = onFalseExpression.onFalse;
|
|
1018
|
+
} // inline nested if-else expressions: condition
|
|
1019
|
+
|
|
1020
|
+
|
|
1021
|
+
if (conditionExpression._type === "IfElse") {
|
|
1022
|
+
if (isConstant(conditionExpression.onFalse) && !conditionExpression.onFalse.value && isConstant(conditionExpression.onTrue) && conditionExpression.onTrue.value) {
|
|
1023
|
+
// ifElse(ifElse(X, true, false), a, b) ==> ifElse(X, a, b)
|
|
1024
|
+
conditionExpression = conditionExpression.condition;
|
|
1025
|
+
} else if (isConstant(conditionExpression.onFalse) && conditionExpression.onFalse.value && isConstant(conditionExpression.onTrue) && !conditionExpression.onTrue.value) {
|
|
1026
|
+
// ifElse(ifElse(X, false, true), a, b) ==> ifElse(not(X), a, b)
|
|
1027
|
+
conditionExpression = not(conditionExpression.condition);
|
|
1028
|
+
} else if (isConstant(conditionExpression.onTrue) && !conditionExpression.onTrue.value && !isConstant(conditionExpression.onFalse)) {
|
|
1029
|
+
// ifElse(ifElse(X, false, a), b, c) ==> ifElse(and(not(X), a), b, c)
|
|
1030
|
+
conditionExpression = and(not(conditionExpression.condition), conditionExpression.onFalse);
|
|
1031
|
+
}
|
|
1032
|
+
} // again swap branches if needed (in case one of the optimizations above led to a negated condition)
|
|
1033
|
+
|
|
1034
|
+
|
|
1035
|
+
if (conditionExpression._type === "Not") {
|
|
1036
|
+
// ifElse(not(X), a, b) --> ifElse(X, b, a)
|
|
1037
|
+
var _ref2 = [onFalseExpression, onTrueExpression];
|
|
1038
|
+
onTrueExpression = _ref2[0];
|
|
1039
|
+
onFalseExpression = _ref2[1];
|
|
1040
|
+
conditionExpression = not(conditionExpression);
|
|
1041
|
+
} // compute expression result for constant conditions
|
|
1042
|
+
|
|
1043
|
+
|
|
1044
|
+
if (isConstant(conditionExpression)) {
|
|
1045
|
+
return conditionExpression.value ? onTrueExpression : onFalseExpression;
|
|
1046
|
+
} // compute expression result if onTrue and onFalse branches are equal
|
|
1047
|
+
|
|
1048
|
+
|
|
1049
|
+
if (_checkExpressionsAreEqual(onTrueExpression, onFalseExpression)) {
|
|
1050
|
+
return onTrueExpression;
|
|
1051
|
+
} // If either trueExpression or falseExpression is a value equals to false the expression can be simplified
|
|
1052
|
+
// If(Condition) Then XXX Else False -> Condition && XXX
|
|
1053
|
+
|
|
1054
|
+
|
|
1055
|
+
if (isConstant(onFalseExpression) && onFalseExpression.value === false) {
|
|
1056
|
+
return and(conditionExpression, onTrueExpression);
|
|
1057
|
+
} // If(Condition) Then False Else XXX -> !Condition && XXX
|
|
1058
|
+
|
|
1059
|
+
|
|
1060
|
+
if (isConstant(onTrueExpression) && onTrueExpression.value === false) {
|
|
1061
|
+
return and(not(conditionExpression), onFalseExpression);
|
|
1062
|
+
}
|
|
1063
|
+
|
|
1064
|
+
return {
|
|
1065
|
+
_type: "IfElse",
|
|
1066
|
+
condition: conditionExpression,
|
|
1067
|
+
onTrue: onTrueExpression,
|
|
1068
|
+
onFalse: onFalseExpression
|
|
1069
|
+
};
|
|
1070
|
+
}
|
|
1071
|
+
/**
|
|
1072
|
+
* Checks whether the current expression has a reference to the default model (undefined).
|
|
1073
|
+
*
|
|
1074
|
+
* @param expression The expression to evaluate
|
|
1075
|
+
* @returns {boolean} `true` if there is a reference to the default context
|
|
1076
|
+
*/
|
|
1077
|
+
|
|
1078
|
+
|
|
1079
|
+
_exports.ifElse = ifElse;
|
|
1080
|
+
|
|
1081
|
+
function hasReferenceToDefaultContext(expression) {
|
|
1082
|
+
switch (expression._type) {
|
|
1083
|
+
case "Constant":
|
|
1084
|
+
case "Formatter":
|
|
1085
|
+
case "ComplexType":
|
|
1086
|
+
return false;
|
|
1087
|
+
|
|
1088
|
+
case "Set":
|
|
1089
|
+
return expression.operands.some(hasReferenceToDefaultContext);
|
|
1090
|
+
|
|
1091
|
+
case "Binding":
|
|
1092
|
+
return expression.modelName === undefined;
|
|
1093
|
+
|
|
1094
|
+
case "Comparison":
|
|
1095
|
+
return hasReferenceToDefaultContext(expression.operand1) || hasReferenceToDefaultContext(expression.operand2);
|
|
1096
|
+
|
|
1097
|
+
case "DefaultBinding":
|
|
1098
|
+
return true;
|
|
1099
|
+
|
|
1100
|
+
case "IfElse":
|
|
1101
|
+
return hasReferenceToDefaultContext(expression.condition) || hasReferenceToDefaultContext(expression.onTrue) || hasReferenceToDefaultContext(expression.onFalse);
|
|
1102
|
+
|
|
1103
|
+
case "Not":
|
|
1104
|
+
case "Truthy":
|
|
1105
|
+
return hasReferenceToDefaultContext(expression.operand);
|
|
1106
|
+
|
|
1107
|
+
default:
|
|
1108
|
+
return false;
|
|
1109
|
+
}
|
|
1110
|
+
}
|
|
1111
|
+
|
|
1112
|
+
/**
|
|
1113
|
+
* Calls a formatter function to process the parameters.
|
|
1114
|
+
* If requireContext is set to true and no context is passed a default context will be added automatically.
|
|
1115
|
+
*
|
|
1116
|
+
* @template T
|
|
1117
|
+
* @template U
|
|
1118
|
+
* @param parameters The list of parameter that should match the type and number of the formatter function
|
|
1119
|
+
* @param formatterFunction The function to call
|
|
1120
|
+
* @param [contextEntityType] The context entity type to consider
|
|
1121
|
+
* @returns {Expression<T>} The corresponding expression
|
|
1122
|
+
*/
|
|
1123
|
+
function formatResult(parameters, formatterFunction, contextEntityType) {
|
|
1124
|
+
var parameterExpressions = parameters.map(wrapPrimitive);
|
|
1125
|
+
|
|
1126
|
+
if (hasUnresolveableExpression.apply(void 0, _toConsumableArray(parameterExpressions))) {
|
|
1127
|
+
return unresolveableExpression;
|
|
1128
|
+
}
|
|
1129
|
+
|
|
1130
|
+
if (!!contextEntityType) {
|
|
1131
|
+
// Otherwise, if the context is required and no context is provided make sure to add the default binding
|
|
1132
|
+
if (!parameterExpressions.some(hasReferenceToDefaultContext)) {
|
|
1133
|
+
contextEntityType.keys.forEach(function (key) {
|
|
1134
|
+
return parameterExpressions.push(bindingExpression(key.name, ""));
|
|
1135
|
+
});
|
|
1136
|
+
}
|
|
1137
|
+
} // FormatterName can be of format sap.fe.core.xxx#methodName to have multiple formatter in one class
|
|
1138
|
+
|
|
1139
|
+
|
|
1140
|
+
var _formatterFunction$__ = formatterFunction.__functionName.split("#"),
|
|
1141
|
+
_formatterFunction$__2 = _slicedToArray(_formatterFunction$__, 2),
|
|
1142
|
+
formatterClass = _formatterFunction$__2[0],
|
|
1143
|
+
formatterName = _formatterFunction$__2[1];
|
|
1144
|
+
|
|
1145
|
+
if (!!formatterName && formatterName.length > 0) {
|
|
1146
|
+
parameterExpressions.unshift(constant(formatterName));
|
|
1147
|
+
}
|
|
1148
|
+
|
|
1149
|
+
return {
|
|
1150
|
+
_type: "Formatter",
|
|
1151
|
+
fn: formatterClass,
|
|
1152
|
+
parameters: parameterExpressions
|
|
1153
|
+
};
|
|
1154
|
+
}
|
|
1155
|
+
/**
|
|
1156
|
+
* Calls a complex type to process the parameters.
|
|
1157
|
+
* If requireContext is set to true and no context is passed a default context will be added automatically.
|
|
1158
|
+
*
|
|
1159
|
+
* @template T
|
|
1160
|
+
* @template U
|
|
1161
|
+
* @param parameters The list of parameter that should match the type for the compplex type
|
|
1162
|
+
* @param type The complex type to use
|
|
1163
|
+
* @param [contextEntityType] The context entity type to consider
|
|
1164
|
+
* @returns {Expression<T>} The corresponding expression
|
|
1165
|
+
*/
|
|
1166
|
+
|
|
1167
|
+
|
|
1168
|
+
_exports.formatResult = formatResult;
|
|
1169
|
+
|
|
1170
|
+
function addTypeInformation(parameters, type, contextEntityType) {
|
|
1171
|
+
var _parameters$, _parameters$$type;
|
|
1172
|
+
|
|
1173
|
+
var parameterExpressions = parameters.map(wrapPrimitive);
|
|
1174
|
+
|
|
1175
|
+
if (hasUnresolveableExpression.apply(void 0, _toConsumableArray(parameterExpressions))) {
|
|
1176
|
+
return unresolveableExpression;
|
|
1177
|
+
} // If there is only one parameter and it is a constant and we don't expect the context then return the constant
|
|
1178
|
+
|
|
1179
|
+
|
|
1180
|
+
if (parameterExpressions.length === 1 && isConstant(parameterExpressions[0]) && !contextEntityType) {
|
|
1181
|
+
return parameterExpressions[0];
|
|
1182
|
+
} else if (!!contextEntityType) {
|
|
1183
|
+
// Otherwise, if the context is required and no context is provided make sure to add the default binding
|
|
1184
|
+
if (!parameterExpressions.some(hasReferenceToDefaultContext)) {
|
|
1185
|
+
contextEntityType.keys.forEach(function (key) {
|
|
1186
|
+
return parameterExpressions.push(bindingExpression(key.name, ""));
|
|
1187
|
+
});
|
|
1188
|
+
}
|
|
1189
|
+
}
|
|
1190
|
+
|
|
1191
|
+
var oFormatOptions = ((_parameters$ = parameters[0]) === null || _parameters$ === void 0 ? void 0 : (_parameters$$type = _parameters$.type) === null || _parameters$$type === void 0 ? void 0 : _parameters$$type.indexOf("sap.ui.model.odata.type.Int")) === 0 ? {
|
|
1192
|
+
parseAsString: false,
|
|
1193
|
+
emptyString: ""
|
|
1194
|
+
} : {};
|
|
1195
|
+
return {
|
|
1196
|
+
_type: "ComplexType",
|
|
1197
|
+
type: type,
|
|
1198
|
+
formatOptions: oFormatOptions,
|
|
1199
|
+
parameters: {},
|
|
1200
|
+
bindingParameters: parameterExpressions
|
|
1201
|
+
};
|
|
1202
|
+
}
|
|
1203
|
+
/**
|
|
1204
|
+
* Function call, optionally with arguments.
|
|
1205
|
+
*
|
|
1206
|
+
* @param fn Function name or reference to function
|
|
1207
|
+
* @param parameters Arguments
|
|
1208
|
+
* @param on Object to call the function on
|
|
1209
|
+
* @returns {FunctionExpression<T>} Expression representing the function call (not the result of the function call!)
|
|
1210
|
+
*/
|
|
1211
|
+
|
|
1212
|
+
|
|
1213
|
+
_exports.addTypeInformation = addTypeInformation;
|
|
1214
|
+
|
|
1215
|
+
function fn(fn, parameters, on) {
|
|
1216
|
+
var functionName = typeof fn === "string" ? fn : fn.__functionName;
|
|
1217
|
+
return {
|
|
1218
|
+
_type: "Function",
|
|
1219
|
+
obj: on !== undefined ? wrapPrimitive(on) : undefined,
|
|
1220
|
+
fn: functionName,
|
|
1221
|
+
parameters: parameters.map(wrapPrimitive)
|
|
1222
|
+
};
|
|
1223
|
+
}
|
|
1224
|
+
/**
|
|
1225
|
+
* Shortcut function to determine if a binding value is null, undefined or empty.
|
|
1226
|
+
*
|
|
1227
|
+
* @param expression
|
|
1228
|
+
* @returns A boolean expression evaluating the fact that the current element is empty
|
|
1229
|
+
*/
|
|
1230
|
+
|
|
1231
|
+
|
|
1232
|
+
_exports.fn = fn;
|
|
1233
|
+
|
|
1234
|
+
function isEmpty(expression) {
|
|
1235
|
+
if (expression._type === "Concat") {
|
|
1236
|
+
return or.apply(void 0, _toConsumableArray(expression.expressions.map(isEmpty)));
|
|
1237
|
+
}
|
|
1238
|
+
|
|
1239
|
+
return or(equal(expression, ""), equal(expression, undefined), equal(expression, null));
|
|
1240
|
+
}
|
|
1241
|
+
|
|
1242
|
+
_exports.isEmpty = isEmpty;
|
|
1243
|
+
|
|
1244
|
+
function concat() {
|
|
1245
|
+
for (var _len4 = arguments.length, inExpressions = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
|
|
1246
|
+
inExpressions[_key4] = arguments[_key4];
|
|
1247
|
+
}
|
|
1248
|
+
|
|
1249
|
+
var expressions = inExpressions.map(wrapPrimitive);
|
|
1250
|
+
|
|
1251
|
+
if (hasUnresolveableExpression.apply(void 0, _toConsumableArray(expressions))) {
|
|
1252
|
+
return unresolveableExpression;
|
|
1253
|
+
}
|
|
1254
|
+
|
|
1255
|
+
if (expressions.every(isConstant)) {
|
|
1256
|
+
return constant(expressions.reduce(function (concatenated, value) {
|
|
1257
|
+
return concatenated + value.value.toString();
|
|
1258
|
+
}, ""));
|
|
1259
|
+
}
|
|
1260
|
+
|
|
1261
|
+
return {
|
|
1262
|
+
_type: "Concat",
|
|
1263
|
+
expressions: expressions
|
|
1264
|
+
};
|
|
1265
|
+
}
|
|
1266
|
+
|
|
1267
|
+
_exports.concat = concat;
|
|
1268
|
+
|
|
1269
|
+
function transformRecursively(inExpression, expressionType, transformFunction) {
|
|
1270
|
+
var includeAllExpression = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
1271
|
+
var expression = inExpression;
|
|
1272
|
+
|
|
1273
|
+
switch (expression._type) {
|
|
1274
|
+
case "Function":
|
|
1275
|
+
expression.parameters = expression.parameters.map(function (expression) {
|
|
1276
|
+
return transformRecursively(expression, expressionType, transformFunction, includeAllExpression);
|
|
1277
|
+
});
|
|
1278
|
+
break;
|
|
1279
|
+
|
|
1280
|
+
case "Concat":
|
|
1281
|
+
expression.expressions = expression.expressions.map(function (expression) {
|
|
1282
|
+
return transformRecursively(expression, expressionType, transformFunction, includeAllExpression);
|
|
1283
|
+
});
|
|
1284
|
+
break;
|
|
1285
|
+
|
|
1286
|
+
case "ComplexType":
|
|
1287
|
+
expression.bindingParameters = expression.bindingParameters.map(function (expression) {
|
|
1288
|
+
return transformRecursively(expression, expressionType, transformFunction, includeAllExpression);
|
|
1289
|
+
});
|
|
1290
|
+
break;
|
|
1291
|
+
|
|
1292
|
+
case "Formatter":
|
|
1293
|
+
expression.parameters = expression.parameters.map(function (expression) {
|
|
1294
|
+
return transformRecursively(expression, expressionType, transformFunction, includeAllExpression);
|
|
1295
|
+
});
|
|
1296
|
+
break;
|
|
1297
|
+
|
|
1298
|
+
case "IfElse":
|
|
1299
|
+
var onTrue = transformRecursively(expression.onTrue, expressionType, transformFunction, includeAllExpression);
|
|
1300
|
+
var onFalse = transformRecursively(expression.onFalse, expressionType, transformFunction, includeAllExpression);
|
|
1301
|
+
var condition = expression.condition;
|
|
1302
|
+
|
|
1303
|
+
if (includeAllExpression) {
|
|
1304
|
+
condition = transformRecursively(expression.condition, expressionType, transformFunction, includeAllExpression);
|
|
1305
|
+
}
|
|
1306
|
+
|
|
1307
|
+
expression = ifElse(condition, onTrue, onFalse);
|
|
1308
|
+
break;
|
|
1309
|
+
|
|
1310
|
+
case "Not":
|
|
1311
|
+
if (includeAllExpression) {
|
|
1312
|
+
var operand = transformRecursively(expression.operand, expressionType, transformFunction, includeAllExpression);
|
|
1313
|
+
expression = not(operand);
|
|
1314
|
+
}
|
|
1315
|
+
|
|
1316
|
+
break;
|
|
1317
|
+
|
|
1318
|
+
case "Truthy":
|
|
1319
|
+
break;
|
|
1320
|
+
|
|
1321
|
+
case "Set":
|
|
1322
|
+
if (includeAllExpression) {
|
|
1323
|
+
expression.operands = expression.operands.map(function (expression) {
|
|
1324
|
+
return transformRecursively(expression, expressionType, transformFunction, includeAllExpression);
|
|
1325
|
+
});
|
|
1326
|
+
}
|
|
1327
|
+
|
|
1328
|
+
break;
|
|
1329
|
+
|
|
1330
|
+
case "Comparison":
|
|
1331
|
+
if (includeAllExpression) {
|
|
1332
|
+
var operand1 = transformRecursively(expression.operand1, expressionType, transformFunction, includeAllExpression);
|
|
1333
|
+
var operand2 = transformRecursively(expression.operand2, expressionType, transformFunction, includeAllExpression);
|
|
1334
|
+
expression = comparison(expression.operator, operand1, operand2);
|
|
1335
|
+
}
|
|
1336
|
+
|
|
1337
|
+
break;
|
|
1338
|
+
|
|
1339
|
+
case "DefaultBinding":
|
|
1340
|
+
case "Ref":
|
|
1341
|
+
case "Binding":
|
|
1342
|
+
case "Constant":
|
|
1343
|
+
// Do nothing
|
|
1344
|
+
break;
|
|
1345
|
+
}
|
|
1346
|
+
|
|
1347
|
+
if (expressionType === expression._type) {
|
|
1348
|
+
expression = transformFunction(inExpression);
|
|
1349
|
+
}
|
|
1350
|
+
|
|
1351
|
+
return expression;
|
|
1352
|
+
}
|
|
1353
|
+
|
|
1354
|
+
_exports.transformRecursively = transformRecursively;
|
|
1355
|
+
|
|
1356
|
+
/**
|
|
1357
|
+
* Compile an expression into an expression binding.
|
|
1358
|
+
*
|
|
1359
|
+
* @template T The target type
|
|
1360
|
+
* @param expression The expression to compile
|
|
1361
|
+
* @param embeddedInBinding Whether the expression to compile is embedded into another expression
|
|
1362
|
+
* @param keepTargetType Keep the target type of the embedded bindings instead of casting them to any
|
|
1363
|
+
* @returns {BindingExpression<T>} The corresponding expression binding
|
|
1364
|
+
*/
|
|
1365
|
+
function compileBinding(expression) {
|
|
1366
|
+
var embeddedInBinding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
1367
|
+
var keepTargetType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
1368
|
+
var expr = wrapPrimitive(expression);
|
|
1369
|
+
var embeddedSeparator = keepTargetType ? "$" : "%";
|
|
1370
|
+
var outProperty = "";
|
|
1371
|
+
|
|
1372
|
+
switch (expr._type) {
|
|
1373
|
+
case "Unresolveable":
|
|
1374
|
+
return undefined;
|
|
1375
|
+
|
|
1376
|
+
case "Constant":
|
|
1377
|
+
if (expr.value === null) {
|
|
1378
|
+
return "null";
|
|
1379
|
+
}
|
|
1380
|
+
|
|
1381
|
+
if (expr.value === undefined) {
|
|
1382
|
+
return "undefined";
|
|
1383
|
+
}
|
|
1384
|
+
|
|
1385
|
+
if (typeof expr.value === "object") {
|
|
1386
|
+
if (Array.isArray(expr.value)) {
|
|
1387
|
+
var entries = expr.value.map(function (expression) {
|
|
1388
|
+
return compileBinding(expression, true);
|
|
1389
|
+
});
|
|
1390
|
+
return "[".concat(entries.join(", "), "]");
|
|
1391
|
+
} else {
|
|
1392
|
+
// Objects
|
|
1393
|
+
var o = expr.value;
|
|
1394
|
+
var properties = Object.keys(o).map(function (key) {
|
|
1395
|
+
var value = o[key];
|
|
1396
|
+
return "".concat(key, ": ").concat(compileBinding(value, true));
|
|
1397
|
+
});
|
|
1398
|
+
return "{".concat(properties.join(", "), "}");
|
|
1399
|
+
}
|
|
1400
|
+
}
|
|
1401
|
+
|
|
1402
|
+
if (embeddedInBinding) {
|
|
1403
|
+
switch (typeof expr.value) {
|
|
1404
|
+
case "number":
|
|
1405
|
+
case "bigint":
|
|
1406
|
+
case "boolean":
|
|
1407
|
+
return expr.value.toString();
|
|
1408
|
+
|
|
1409
|
+
case "string":
|
|
1410
|
+
return "'".concat(expr.value.toString(), "'");
|
|
1411
|
+
|
|
1412
|
+
default:
|
|
1413
|
+
return "";
|
|
1414
|
+
}
|
|
1415
|
+
} else {
|
|
1416
|
+
return expr.value.toString();
|
|
1417
|
+
}
|
|
1418
|
+
|
|
1419
|
+
case "Ref":
|
|
1420
|
+
return expr.ref || "null";
|
|
1421
|
+
|
|
1422
|
+
case "Function":
|
|
1423
|
+
var argumentString = "".concat(expr.parameters.map(function (arg) {
|
|
1424
|
+
return compileBinding(arg, true);
|
|
1425
|
+
}).join(", "));
|
|
1426
|
+
return expr.obj === undefined ? "".concat(expr.fn, "(").concat(argumentString, ")") : "".concat(compileBinding(expr.obj, true), ".").concat(expr.fn, "(").concat(argumentString, ")");
|
|
1427
|
+
|
|
1428
|
+
case "EmbeddedExpressionBinding":
|
|
1429
|
+
if (embeddedInBinding) {
|
|
1430
|
+
return "(".concat(expr.value.substr(2, expr.value.length - 3), ")");
|
|
1431
|
+
} else {
|
|
1432
|
+
return "".concat(expr.value);
|
|
1433
|
+
}
|
|
1434
|
+
|
|
1435
|
+
case "EmbeddedBinding":
|
|
1436
|
+
if (embeddedInBinding) {
|
|
1437
|
+
return "".concat(embeddedSeparator).concat(expr.value);
|
|
1438
|
+
} else {
|
|
1439
|
+
return "".concat(expr.value);
|
|
1440
|
+
}
|
|
1441
|
+
|
|
1442
|
+
case "DefaultBinding":
|
|
1443
|
+
case "Binding":
|
|
1444
|
+
if (expr.type || expr.parameters || expr.targetType) {
|
|
1445
|
+
var outBinding = "";
|
|
1446
|
+
|
|
1447
|
+
if (embeddedInBinding) {
|
|
1448
|
+
outBinding += "".concat(embeddedSeparator);
|
|
1449
|
+
}
|
|
1450
|
+
|
|
1451
|
+
outBinding += "{path:'".concat(expr.modelName ? "".concat(expr.modelName, ">") : "").concat(expr.path, "'");
|
|
1452
|
+
|
|
1453
|
+
if (expr.type) {
|
|
1454
|
+
outBinding += ", type: '".concat(expr.type, "'");
|
|
1455
|
+
}
|
|
1456
|
+
|
|
1457
|
+
if (expr.constraints && Object.keys(expr.constraints).length > 0) {
|
|
1458
|
+
outBinding += ", constraints: ".concat(compileBinding(expr.constraints));
|
|
1459
|
+
}
|
|
1460
|
+
|
|
1461
|
+
if (expr.formatOptions) {
|
|
1462
|
+
outBinding += ", formatOptions: ".concat(compileBinding(expr.formatOptions));
|
|
1463
|
+
}
|
|
1464
|
+
|
|
1465
|
+
if (expr.parameters && Object.keys(expr.parameters).length > 0) {
|
|
1466
|
+
outBinding += ", parameters: ".concat(compileBinding(expr.parameters));
|
|
1467
|
+
}
|
|
1468
|
+
|
|
1469
|
+
if (expr.targetType) {
|
|
1470
|
+
outBinding += ", targetType: '".concat(expr.targetType, "'");
|
|
1471
|
+
}
|
|
1472
|
+
|
|
1473
|
+
outBinding += "}";
|
|
1474
|
+
return outBinding;
|
|
1475
|
+
} else {
|
|
1476
|
+
if (embeddedInBinding) {
|
|
1477
|
+
return "".concat(embeddedSeparator, "{").concat(expr.modelName ? "".concat(expr.modelName, ">") : "").concat(expr.path, "}");
|
|
1478
|
+
} else {
|
|
1479
|
+
return "{".concat(expr.modelName ? "".concat(expr.modelName, ">") : "").concat(expr.path, "}");
|
|
1480
|
+
}
|
|
1481
|
+
}
|
|
1482
|
+
|
|
1483
|
+
case "Comparison":
|
|
1484
|
+
var comparisonPart = "".concat(compileBinding(expr.operand1, true), " ").concat(expr.operator, " ").concat(compileBinding(expr.operand2, true));
|
|
1485
|
+
|
|
1486
|
+
if (embeddedInBinding) {
|
|
1487
|
+
return comparisonPart;
|
|
1488
|
+
}
|
|
1489
|
+
|
|
1490
|
+
return "{= ".concat(comparisonPart, "}");
|
|
1491
|
+
|
|
1492
|
+
case "IfElse":
|
|
1493
|
+
if (embeddedInBinding) {
|
|
1494
|
+
return "(".concat(compileBinding(expr.condition, true), " ? ").concat(compileBinding(expr.onTrue, true), " : ").concat(compileBinding(expr.onFalse, true), ")");
|
|
1495
|
+
} else {
|
|
1496
|
+
return "{= ".concat(compileBinding(expr.condition, true), " ? ").concat(compileBinding(expr.onTrue, true), " : ").concat(compileBinding(expr.onFalse, true), "}");
|
|
1497
|
+
}
|
|
1498
|
+
|
|
1499
|
+
case "Set":
|
|
1500
|
+
if (embeddedInBinding) {
|
|
1501
|
+
return "(".concat(expr.operands.map(function (expression) {
|
|
1502
|
+
return compileBinding(expression, true);
|
|
1503
|
+
}).join(" ".concat(expr.operator, " ")), ")");
|
|
1504
|
+
} else {
|
|
1505
|
+
return "{= (".concat(expr.operands.map(function (expression) {
|
|
1506
|
+
return compileBinding(expression, true);
|
|
1507
|
+
}).join(" ".concat(expr.operator, " ")), ")}");
|
|
1508
|
+
}
|
|
1509
|
+
|
|
1510
|
+
case "Concat":
|
|
1511
|
+
if (embeddedInBinding) {
|
|
1512
|
+
return "".concat(expr.expressions.map(function (expression) {
|
|
1513
|
+
return compileBinding(expression, true, true);
|
|
1514
|
+
}).join(" + "));
|
|
1515
|
+
} else {
|
|
1516
|
+
return "{= ".concat(expr.expressions.map(function (expression) {
|
|
1517
|
+
return compileBinding(expression, true, true);
|
|
1518
|
+
}).join(" + "), " }");
|
|
1519
|
+
}
|
|
1520
|
+
|
|
1521
|
+
case "Not":
|
|
1522
|
+
if (embeddedInBinding) {
|
|
1523
|
+
return "!".concat(compileBinding(expr.operand, true));
|
|
1524
|
+
} else {
|
|
1525
|
+
return "{= !".concat(compileBinding(expr.operand, true), "}");
|
|
1526
|
+
}
|
|
1527
|
+
|
|
1528
|
+
case "Truthy":
|
|
1529
|
+
if (embeddedInBinding) {
|
|
1530
|
+
return "!!".concat(compileBinding(expr.operand, true));
|
|
1531
|
+
} else {
|
|
1532
|
+
return "{= !!".concat(compileBinding(expr.operand, true), "}");
|
|
1533
|
+
}
|
|
1534
|
+
|
|
1535
|
+
case "Formatter":
|
|
1536
|
+
if (expr.parameters.length === 1) {
|
|
1537
|
+
outProperty += "{".concat(compilePathParameter(expr.parameters[0], true), ", formatter: '").concat(expr.fn, "'}");
|
|
1538
|
+
} else {
|
|
1539
|
+
outProperty += "{parts:[".concat(expr.parameters.map(function (param) {
|
|
1540
|
+
return compilePathParameter(param);
|
|
1541
|
+
}).join(","), "], formatter: '").concat(expr.fn, "'}");
|
|
1542
|
+
}
|
|
1543
|
+
|
|
1544
|
+
if (embeddedInBinding) {
|
|
1545
|
+
outProperty = "$".concat(outProperty);
|
|
1546
|
+
}
|
|
1547
|
+
|
|
1548
|
+
return outProperty;
|
|
1549
|
+
|
|
1550
|
+
case "ComplexType":
|
|
1551
|
+
if (expr.bindingParameters.length === 1) {
|
|
1552
|
+
outProperty += "{".concat(compilePathParameter(expr.bindingParameters[0], true), ", type: '").concat(expr.type, "'}");
|
|
1553
|
+
} else {
|
|
1554
|
+
var outputEnd; // this code is based on sap.ui.model.odata.v4._AnnotationHelperExpression.fetchCurrencyOrUnit
|
|
1555
|
+
|
|
1556
|
+
switch (expr.type) {
|
|
1557
|
+
case "sap.ui.model.odata.type.Unit":
|
|
1558
|
+
outputEnd = ",{mode:'OneTime',path:'/##@@requestUnitsOfMeasure',targetType:'any'}],type:'sap.ui.model.odata.type.Unit'";
|
|
1559
|
+
break;
|
|
1560
|
+
|
|
1561
|
+
case "sap.ui.model.odata.type.Currency":
|
|
1562
|
+
outputEnd = ",{mode:'OneTime',path:'/##@@requestCurrencyCodes',targetType:'any'}],type:'sap.ui.model.odata.type.Currency'";
|
|
1563
|
+
break;
|
|
1564
|
+
|
|
1565
|
+
default:
|
|
1566
|
+
outputEnd = "], type: '".concat(expr.type, "'");
|
|
1567
|
+
}
|
|
1568
|
+
|
|
1569
|
+
if (expr.formatOptions && Object.keys(expr.formatOptions).length > 0) {
|
|
1570
|
+
outputEnd += ", formatOptions: ".concat(compileBinding(expr.formatOptions));
|
|
1571
|
+
}
|
|
1572
|
+
|
|
1573
|
+
if (expr.parameters && Object.keys(expr.parameters).length > 0) {
|
|
1574
|
+
outputEnd += ", parameters: ".concat(compileBinding(expr.parameters));
|
|
1575
|
+
}
|
|
1576
|
+
|
|
1577
|
+
outputEnd += "}";
|
|
1578
|
+
outProperty += "{mode:'TwoWay', parts:[".concat(expr.bindingParameters.map(function (param) {
|
|
1579
|
+
return compilePathParameter(param);
|
|
1580
|
+
}).join(",")).concat(outputEnd);
|
|
1581
|
+
}
|
|
1582
|
+
|
|
1583
|
+
if (embeddedInBinding) {
|
|
1584
|
+
outProperty = "$".concat(outProperty);
|
|
1585
|
+
}
|
|
1586
|
+
|
|
1587
|
+
return outProperty;
|
|
1588
|
+
|
|
1589
|
+
default:
|
|
1590
|
+
return "";
|
|
1591
|
+
}
|
|
1592
|
+
}
|
|
1593
|
+
/**
|
|
1594
|
+
* Compile the path parameter of a formatter call.
|
|
1595
|
+
*
|
|
1596
|
+
* @param expression The binding part to evaluate
|
|
1597
|
+
* @param singlePath Whether there is one or multiple path to consider
|
|
1598
|
+
* @returns {string} The string snippet to include in the overall binding definition
|
|
1599
|
+
*/
|
|
1600
|
+
|
|
1601
|
+
|
|
1602
|
+
_exports.compileBinding = compileBinding;
|
|
1603
|
+
|
|
1604
|
+
function compilePathParameter(expression) {
|
|
1605
|
+
var singlePath = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
1606
|
+
var outValue = "";
|
|
1607
|
+
|
|
1608
|
+
switch (expression._type) {
|
|
1609
|
+
case "Constant":
|
|
1610
|
+
switch (typeof expression.value) {
|
|
1611
|
+
case "number":
|
|
1612
|
+
case "bigint":
|
|
1613
|
+
outValue = "value: ".concat(expression.value.toString());
|
|
1614
|
+
break;
|
|
1615
|
+
|
|
1616
|
+
case "string":
|
|
1617
|
+
case "boolean":
|
|
1618
|
+
outValue = "value: '".concat(expression.value.toString(), "'");
|
|
1619
|
+
break;
|
|
1620
|
+
|
|
1621
|
+
default:
|
|
1622
|
+
outValue = "value: ''";
|
|
1623
|
+
break;
|
|
1624
|
+
}
|
|
1625
|
+
|
|
1626
|
+
if (singlePath) {
|
|
1627
|
+
return outValue;
|
|
1628
|
+
}
|
|
1629
|
+
|
|
1630
|
+
return "{".concat(outValue, "}");
|
|
1631
|
+
|
|
1632
|
+
case "DefaultBinding":
|
|
1633
|
+
case "Binding":
|
|
1634
|
+
outValue = "path:'".concat(expression.modelName ? "".concat(expression.modelName, ">") : "").concat(expression.path, "'");
|
|
1635
|
+
|
|
1636
|
+
if (expression.type) {
|
|
1637
|
+
outValue += ", type : '".concat(expression.type, "'");
|
|
1638
|
+
} else {
|
|
1639
|
+
outValue += ", targetType : 'any'";
|
|
1640
|
+
}
|
|
1641
|
+
|
|
1642
|
+
if (expression.constraints && Object.keys(expression.constraints).length > 0) {
|
|
1643
|
+
outValue += ", constraints: ".concat(compileBinding(expression.constraints));
|
|
1644
|
+
}
|
|
1645
|
+
|
|
1646
|
+
if (expression.formatOptions && Object.keys(expression.formatOptions).length > 0) {
|
|
1647
|
+
outValue += ", formatOptions: ".concat(compileBinding(expression.formatOptions));
|
|
1648
|
+
}
|
|
1649
|
+
|
|
1650
|
+
if (expression.parameters && Object.keys(expression.parameters).length > 0) {
|
|
1651
|
+
outValue += ", parameters: ".concat(compileBinding(expression.parameters));
|
|
1652
|
+
}
|
|
1653
|
+
|
|
1654
|
+
if (singlePath) {
|
|
1655
|
+
return outValue;
|
|
1656
|
+
}
|
|
1657
|
+
|
|
1658
|
+
return "{".concat(outValue, "}");
|
|
1659
|
+
|
|
1660
|
+
default:
|
|
1661
|
+
return "";
|
|
1662
|
+
}
|
|
1663
|
+
}
|
|
1664
|
+
|
|
1665
|
+
return _exports;
|
|
1666
|
+
}, false);
|
|
1667
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkJpbmRpbmdFeHByZXNzaW9uLnRzIl0sIm5hbWVzIjpbInVucmVzb2x2ZWFibGVFeHByZXNzaW9uIiwiX3R5cGUiLCJoYXNVbnJlc29sdmVhYmxlRXhwcmVzc2lvbiIsImV4cHJlc3Npb25zIiwiZmluZCIsImV4cHIiLCJ1bmRlZmluZWQiLCJfY2hlY2tFeHByZXNzaW9uc0FyZUVxdWFsIiwiYSIsImIiLCJ2YWx1ZSIsIm9wZXJhbmQiLCJvcGVyYXRvciIsIm9wZXJhbmRzIiwibGVuZ3RoIiwiZXZlcnkiLCJleHByZXNzaW9uIiwic29tZSIsIm90aGVyRXhwcmVzc2lvbiIsImNvbmRpdGlvbiIsIm9uVHJ1ZSIsIm9uRmFsc2UiLCJvcGVyYW5kMSIsIm9wZXJhbmQyIiwiYUV4cHJlc3Npb25zIiwiYkV4cHJlc3Npb25zIiwiaW5kZXgiLCJtb2RlbE5hbWUiLCJwYXRoIiwidGFyZ2V0RW50aXR5U2V0IiwiZm4iLCJwYXJhbWV0ZXJzIiwidHlwZSIsImJpbmRpbmdQYXJhbWV0ZXJzIiwib3RoZXJGdW5jdGlvbiIsIm9iaiIsInJlZiIsImZsYXR0ZW5TZXRFeHByZXNzaW9uIiwicmVkdWNlIiwicmVzdWx0IiwiY2FuZGlkYXRlc0ZvckZsYXR0ZW5pbmciLCJmb3JFYWNoIiwiY2FuZGlkYXRlIiwiZSIsInB1c2giLCJoYXNPcHBvc2l0ZUV4cHJlc3Npb25zIiwiaSIsIm5lZ2F0ZWRFeHByZXNzaW9uIiwibm90IiwiaiIsImFuZCIsIm1hcCIsIndyYXBQcmltaXRpdmUiLCJpc1N0YXRpY0ZhbHNlIiwibm9uVHJpdmlhbEV4cHJlc3Npb24iLCJmaWx0ZXIiLCJpc0NvbnN0YW50IiwiY29uc3RhbnQiLCJpc1ZhbGlkIiwib3IiLCJpc1N0YXRpY1RydWUiLCJpc0NvbXBhcmlzb24iLCJlcXVhbCIsImdyZWF0ZXJPckVxdWFsIiwiZ3JlYXRlclRoYW4iLCJub3RFcXVhbCIsImxlc3NPckVxdWFsIiwibGVzc1RoYW4iLCJpc1RydXRoeSIsImJpbmRpbmdFeHByZXNzaW9uIiwidmlzaXRlZE5hdmlnYXRpb25QYXRocyIsInBhdGhWaXNpdG9yIiwidGFyZ2V0UGF0aCIsImxvY2FsUGF0aCIsImNvbmNhdCIsImpvaW4iLCJjb25zdGFudFZhbHVlIiwiQXJyYXkiLCJpc0FycmF5IiwiaXNQcmltaXRpdmVPYmplY3QiLCJ2YWx1ZU9mIiwidmFsIiwiT2JqZWN0Iiwia2V5cyIsImtleSIsInJlc29sdmVCaW5kaW5nU3RyaW5nIiwidGFyZ2V0VHlwZSIsInN0YXJ0c1dpdGgiLCJpc0V4cHJlc3Npb24iLCJzb21ldGhpbmciLCJtYXliZUNvbnN0YW50IiwiaXNCaW5kaW5nIiwibWF5YmVCaW5kaW5nIiwib2JqZWN0VHlwZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsImlzQ29tcGxleEFubm90YXRpb25FeHByZXNzaW9uIiwiYW5ub3RhdGlvbkV4cHJlc3Npb24iLCJkZWZhdWx0VmFsdWUiLCJhbm5vdGF0aW9uSWZFeHByZXNzaW9uIiwiSWYiLCJwYXJzZUFubm90YXRpb25Db25kaXRpb24iLCJOb3QiLCJFcSIsIk5lIiwiR3QiLCJHZSIsIkx0IiwiTGUiLCJPciIsIm9yQ29uZGl0aW9uIiwiQW5kIiwiYW5kQ29uZGl0aW9uIiwiYW5ub3RhdGlvbkFwcGx5RXhwcmVzc2lvbiIsImFubm90YXRpb25WYWx1ZSIsImhhc093blByb3BlcnR5IiwiJE9yIiwiJEFuZCIsIiROb3QiLCIkRXEiLCIkTmUiLCIkR3QiLCIkR2UiLCIkTHQiLCIkTGUiLCIkUGF0aCIsIkZ1bmN0aW9uIiwiJEZ1bmN0aW9uIiwiQXBwbHkiLCIkQXBwbHkiLCIkSWYiLCJyZXNvbHZlRW51bVZhbHVlIiwiJEVudW1NZW1iZXIiLCJpZkVsc2UiLCJhcHBseVBhcmFtIiwiYXBwbHlQYXJhbUNvbnZlcnRlZCIsImNvbXBhcmlzb24iLCJsZWZ0T3BlcmFuZCIsInJpZ2h0T3BlcmFuZCIsImxlZnRFeHByZXNzaW9uIiwicmlnaHRFeHByZXNzaW9uIiwiY29uZGl0aW9uRXhwcmVzc2lvbiIsIm9uVHJ1ZUV4cHJlc3Npb24iLCJvbkZhbHNlRXhwcmVzc2lvbiIsImhhc1JlZmVyZW5jZVRvRGVmYXVsdENvbnRleHQiLCJmb3JtYXRSZXN1bHQiLCJmb3JtYXR0ZXJGdW5jdGlvbiIsImNvbnRleHRFbnRpdHlUeXBlIiwicGFyYW1ldGVyRXhwcmVzc2lvbnMiLCJfX2Z1bmN0aW9uTmFtZSIsInNwbGl0IiwiZm9ybWF0dGVyQ2xhc3MiLCJmb3JtYXR0ZXJOYW1lIiwidW5zaGlmdCIsImFkZFR5cGVJbmZvcm1hdGlvbiIsIm9Gb3JtYXRPcHRpb25zIiwiaW5kZXhPZiIsInBhcnNlQXNTdHJpbmciLCJlbXB0eVN0cmluZyIsImZvcm1hdE9wdGlvbnMiLCJvbiIsImZ1bmN0aW9uTmFtZSIsImlzRW1wdHkiLCJpbkV4cHJlc3Npb25zIiwiY29uY2F0ZW5hdGVkIiwidG9TdHJpbmciLCJ0cmFuc2Zvcm1SZWN1cnNpdmVseSIsImluRXhwcmVzc2lvbiIsImV4cHJlc3Npb25UeXBlIiwidHJhbnNmb3JtRnVuY3Rpb24iLCJpbmNsdWRlQWxsRXhwcmVzc2lvbiIsImNvbXBpbGVCaW5kaW5nIiwiZW1iZWRkZWRJbkJpbmRpbmciLCJrZWVwVGFyZ2V0VHlwZSIsImVtYmVkZGVkU2VwYXJhdG9yIiwib3V0UHJvcGVydHkiLCJlbnRyaWVzIiwibyIsInByb3BlcnRpZXMiLCJhcmd1bWVudFN0cmluZyIsImFyZyIsInN1YnN0ciIsIm91dEJpbmRpbmciLCJjb25zdHJhaW50cyIsImNvbXBhcmlzb25QYXJ0IiwiY29tcGlsZVBhdGhQYXJhbWV0ZXIiLCJwYXJhbSIsIm91dHB1dEVuZCIsInNpbmdsZVBhdGgiLCJvdXRWYWx1ZSJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMEtPLE1BQU1BLHVCQUF1RCxHQUFHO0FBQ3RFQyxJQUFBQSxLQUFLLEVBQUU7QUFEK0QsR0FBaEU7OztBQUlBLFdBQVNDLDBCQUFULEdBQWdGO0FBQUEsc0NBQXpDQyxXQUF5QztBQUF6Q0EsTUFBQUEsV0FBeUM7QUFBQTs7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LFVBQXZCLEVBQW1DakIsTUFBbkMsR0FBNEMsQ0FBekUsRUFBNEU7QUFDM0UrSyxVQUFBQSxRQUFRLDRCQUFxQmxCLGNBQWMsQ0FBQzNKLFVBQVUsQ0FBQ2UsVUFBWixDQUFuQyxDQUFSO0FBQ0E7O0FBQ0QsWUFBSTZKLFVBQUosRUFBZ0I7QUFDZixpQkFBT0MsUUFBUDtBQUNBOztBQUNELDBCQUFXQSxRQUFYOztBQUNEO0FBQ0MsZUFBTyxFQUFQO0FBM0NGO0FBNkNBIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRBbmRBbm5vdGF0aW9uRXhwcmVzc2lvbixcblx0QW5kQ29uZGl0aW9uYWxFeHByZXNzaW9uLFxuXHRDb25kaXRpb25hbENoZWNrT3JWYWx1ZSxcblx0RW50aXR5VHlwZSxcblx0RXFBbm5vdGF0aW9uRXhwcmVzc2lvbixcblx0RXFDb25kaXRpb25hbEV4cHJlc3Npb24sXG5cdEdlQW5ub3RhdGlvbkV4cHJlc3Npb24sXG5cdEdlQ29uZGl0aW9uYWxFeHByZXNzaW9uLFxuXHRHdEFubm90YXRpb25FeHByZXNzaW9uLFxuXHRHdENvbmRpdGlvbmFsRXhwcmVzc2lvbixcblx0SWZBbm5vdGF0aW9uRXhwcmVzc2lvbixcblx0SWZBbm5vdGF0aW9uRXhwcmVzc2lvblZhbHVlLFxuXHRMZUFubm90YXRpb25FeHByZXNzaW9uLFxuXHRMZUNvbmRpdGlvbmFsRXhwcmVzc2lvbixcblx0THRBbm5vdGF0aW9uRXhwcmVzc2lvbixcblx0THRDb25kaXRpb25hbEV4cHJlc3Npb24sXG5cdE5lQW5ub3RhdGlvbkV4cHJlc3Npb24sXG5cdE5lQ29uZGl0aW9uYWxFeHByZXNzaW9uLFxuXHROb3RBbm5vdGF0aW9uRXhwcmVzc2lvbixcblx0Tm90Q29uZGl0aW9uYWxFeHByZXNzaW9uLFxuXHRPckFubm90YXRpb25FeHByZXNzaW9uLFxuXHRPckNvbmRpdGlvbmFsRXhwcmVzc2lvbixcblx0UGF0aENvbmRpdGlvbkV4cHJlc3Npb24sXG5cdFByb3BlcnR5QW5ub3RhdGlvblZhbHVlXG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHsgQXBwbHlBbm5vdGF0aW9uRXhwcmVzc2lvbiwgUGF0aEFubm90YXRpb25FeHByZXNzaW9uIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3R5cGVzL0VkbVwiO1xuaW1wb3J0IHsgRW50aXR5U2V0IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL2Rpc3QvQ29udmVydGVyXCI7XG5pbXBvcnQgeyByZXNvbHZlRW51bVZhbHVlIH0gZnJvbSBcIi4vQW5ub3RhdGlvbkVudW1cIjtcblxudHlwZSBQcmltaXRpdmVUeXBlID0gc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG9iamVjdCB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbnR5cGUgQmFzZUV4cHJlc3Npb248VD4gPSB7XG5cdF90eXBlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBDb25zdGFudEV4cHJlc3Npb248VD4gPSBCYXNlRXhwcmVzc2lvbjxUPiAmIHtcblx0X3R5cGU6IFwiQ29uc3RhbnRcIjtcblx0dmFsdWU6IFQ7XG59O1xuXG50eXBlIFNldE9wZXJhdG9yID0gXCImJlwiIHwgXCJ8fFwiO1xuZXhwb3J0IHR5cGUgU2V0RXhwcmVzc2lvbiA9IEJhc2VFeHByZXNzaW9uPGJvb2xlYW4+ICYge1xuXHRfdHlwZTogXCJTZXRcIjtcblx0b3BlcmF0b3I6IFNldE9wZXJhdG9yO1xuXHRvcGVyYW5kczogRXhwcmVzc2lvbjxib29sZWFuPltdO1xufTtcblxuZXhwb3J0IHR5cGUgTm90RXhwcmVzc2lvbiA9IEJhc2VFeHByZXNzaW9uPGJvb2xlYW4+ICYge1xuXHRfdHlwZTogXCJOb3RcIjtcblx0b3BlcmFuZDogRXhwcmVzc2lvbjxib29sZWFuPjtcbn07XG5cbmV4cG9ydCB0eXBlIFRydXRoeUV4cHJlc3Npb24gPSBCYXNlRXhwcmVzc2lvbjxib29sZWFuPiAmIHtcblx0X3R5cGU6IFwiVHJ1dGh5XCI7XG5cdG9wZXJhbmQ6IEV4cHJlc3Npb248c3RyaW5nPjtcbn07XG5cbmV4cG9ydCB0eXBlIFJlZmVyZW5jZUV4cHJlc3Npb24gPSBCYXNlRXhwcmVzc2lvbjxvYmplY3Q+ICYge1xuXHRfdHlwZTogXCJSZWZcIjtcblx0cmVmOiBzdHJpbmcgfCBudWxsO1xufTtcblxuZXhwb3J0IHR5cGUgRm9ybWF0dGVyRXhwcmVzc2lvbjxUPiA9IEJhc2VFeHByZXNzaW9uPFQ+ICYge1xuXHRfdHlwZTogXCJGb3JtYXR0ZXJcIjtcblx0Zm46IHN0cmluZztcblx0cGFyYW1ldGVyczogRXhwcmVzc2lvbjxhbnk+W107XG59O1xuXG5leHBvcnQgdHlwZSBDb21wbGV4VHlwZUV4cHJlc3Npb248VD4gPSBCYXNlRXhwcmVzc2lvbjxUPiAmIHtcblx0X3R5cGU6IFwiQ29tcGxleFR5cGVcIjtcblx0dHlwZTogc3RyaW5nO1xuXHRmb3JtYXRPcHRpb25zOiBvYmplY3Q7XG5cdHBhcmFtZXRlcnM6IG9iamVjdDtcblx0YmluZGluZ1BhcmFtZXRlcnM6IEV4cHJlc3Npb248YW55PltdO1xufTtcblxuZXhwb3J0IHR5cGUgRnVuY3Rpb25FeHByZXNzaW9uPFQ+ID0gQmFzZUV4cHJlc3Npb248VD4gJiB7XG5cdF90eXBlOiBcIkZ1bmN0aW9uXCI7XG5cdG9iaj86IEV4cHJlc3Npb248b2JqZWN0Pjtcblx0Zm46IHN0cmluZztcblx0cGFyYW1ldGVyczogRXhwcmVzc2lvbjxhbnk+W107XG59O1xuXG5leHBvcnQgdHlwZSBDb25jYXRFeHByZXNzaW9uID0gQmFzZUV4cHJlc3Npb248c3RyaW5nPiAmIHtcblx0X3R5cGU6IFwiQ29uY2F0XCI7XG5cdGV4cHJlc3Npb25zOiBFeHByZXNzaW9uPHN0cmluZz5bXTtcbn07XG5cbmV4cG9ydCB0eXBlIFVucmVzb2x2ZWFibGVCaW5kaW5nRXhwcmVzc2lvbiA9IEJhc2VFeHByZXNzaW9uPHN0cmluZz4gJiB7XG5cdF90eXBlOiBcIlVucmVzb2x2ZWFibGVcIjtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYgQmluZGluZ0V4cHJlc3Npb25FeHByZXNzaW9uXG4gKi9cbmV4cG9ydCB0eXBlIEJpbmRpbmdFeHByZXNzaW9uRXhwcmVzc2lvbjxUPiA9IEJhc2VFeHByZXNzaW9uPFQ+ICYge1xuXHRfdHlwZTogXCJCaW5kaW5nXCI7XG5cdG1vZGVsTmFtZT86IHN0cmluZztcblx0cGF0aDogc3RyaW5nO1xuXHR0YXJnZXRFbnRpdHlTZXQ/OiBFbnRpdHlTZXQ7XG5cdHR5cGU/OiBzdHJpbmc7XG5cdGNvbnN0cmFpbnRzPzogYW55O1xuXHRwYXJhbWV0ZXJzPzogYW55O1xuXHR0YXJnZXRUeXBlPzogc3RyaW5nO1xuXHRmb3JtYXRPcHRpb25zPzogYW55O1xufTtcblxuZXhwb3J0IHR5cGUgRGVmYXVsdEJpbmRpbmdFeHByZXNzaW9uRXhwcmVzc2lvbjxUPiA9IEJhc2VFeHByZXNzaW9uPFQ+ICYge1xuXHRfdHlwZTogXCJEZWZhdWx0QmluZGluZ1wiO1xuXHRtb2RlbE5hbWU/OiBzdHJpbmc7XG5cdHBhdGg6IHN0cmluZztcblx0dHlwZT86IHN0cmluZztcblx0Y29uc3RyYWludHM/OiBvYmplY3Q7XG5cdHBhcmFtZXRlcnM/OiBhbnk7XG5cdHRhcmdldFR5cGU/OiBzdHJpbmc7XG5cdGZvcm1hdE9wdGlvbnM/OiBvYmplY3Q7XG59O1xuXG5leHBvcnQgdHlwZSBFbWJlZGRlZEJpbmRpbmdFeHByZXNzaW9uPFQ+ID0gQmFzZUV4cHJlc3Npb248VD4gJiB7XG5cdF90eXBlOiBcIkVtYmVkZGVkQmluZGluZ1wiO1xuXHR2YWx1ZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgRW1iZWRkZWRFeHByZXNzaW9uQmluZGluZ0V4cHJlc3Npb248VD4gPSBCYXNlRXhwcmVzc2lvbjxUPiAmIHtcblx0X3R5cGU6IFwiRW1iZWRkZWRFeHByZXNzaW9uQmluZGluZ1wiO1xuXHR2YWx1ZTogc3RyaW5nO1xufTtcblxudHlwZSBDb21wYXJpc29uT3BlcmF0b3IgPSBcIj09PVwiIHwgXCIhPT1cIiB8IFwiPj1cIiB8IFwiPlwiIHwgXCI8PVwiIHwgXCI8XCI7XG5leHBvcnQgdHlwZSBDb21wYXJpc29uRXhwcmVzc2lvbiA9IEJhc2VFeHByZXNzaW9uPGJvb2xlYW4+ICYge1xuXHRfdHlwZTogXCJDb21wYXJpc29uXCI7XG5cdG9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3I7XG5cdG9wZXJhbmQxOiBFeHByZXNzaW9uPGFueT47XG5cdG9wZXJhbmQyOiBFeHByZXNzaW9uPGFueT47XG59O1xuXG5leHBvcnQgdHlwZSBJZkVsc2VFeHByZXNzaW9uPFQ+ID0gQmFzZUV4cHJlc3Npb248VD4gJiB7XG5cdF90eXBlOiBcIklmRWxzZVwiO1xuXHRjb25kaXRpb246IEV4cHJlc3Npb248Ym9vbGVhbj47XG5cdG9uVHJ1ZTogRXhwcmVzc2lvbjxUPjtcblx0b25GYWxzZTogRXhwcmVzc2lvbjxUPjtcbn07XG5cbi8qKlxuICogQW4gZXhwcmVzc2lvbiB0aGF0IGV2YWx1YXRlcyB0byB0eXBlIFQuXG4gKlxuICogQHR5cGVkZWYgRXhwcmVzc2lvblxuICovXG5leHBvcnQgdHlwZSBFeHByZXNzaW9uPFQ+ID1cblx0fCBVbnJlc29sdmVhYmxlQmluZGluZ0V4cHJlc3Npb25cblx0fCBDb25zdGFudEV4cHJlc3Npb248VD5cblx0fCBTZXRFeHByZXNzaW9uXG5cdHwgTm90RXhwcmVzc2lvblxuXHR8IFRydXRoeUV4cHJlc3Npb25cblx0fCBDb25jYXRFeHByZXNzaW9uXG5cdHwgQmluZGluZ0V4cHJlc3Npb25FeHByZXNzaW9uPFQ+XG5cdHwgRW1iZWRkZWRCaW5kaW5nRXhwcmVzc2lvbjxUPlxuXHR8IEVtYmVkZGVkRXhwcmVzc2lvbkJpbmRpbmdFeHByZXNzaW9uPFQ+XG5cdHwgRGVmYXVsdEJpbmRpbmdFeHByZXNzaW9uRXhwcmVzc2lvbjxUPlxuXHR8IENvbXBhcmlzb25FeHByZXNzaW9uXG5cdHwgSWZFbHNlRXhwcmVzc2lvbjxUPlxuXHR8IEZvcm1hdHRlckV4cHJlc3Npb248VD5cblx0fCBDb21wbGV4VHlwZUV4cHJlc3Npb248VD5cblx0fCBSZWZlcmVuY2VFeHByZXNzaW9uXG5cdHwgRnVuY3Rpb25FeHByZXNzaW9uPFQ+O1xuXG4vKipcbiAqIEFuIGV4cHJlc3Npb24gdGhhdCBldmFsdWF0ZXMgdG8gdHlwZSBULCBvciBhIGNvbnN0YW50IHZhbHVlIG9mIHR5cGUgVFxuICovXG5leHBvcnQgdHlwZSBFeHByZXNzaW9uT3JQcmltaXRpdmU8VCBleHRlbmRzIFByaW1pdGl2ZVR5cGU+ID0gRXhwcmVzc2lvbjxUPiB8IFQ7XG5cbmV4cG9ydCBjb25zdCB1bnJlc29sdmVhYmxlRXhwcmVzc2lvbjogVW5yZXNvbHZlYWJsZUJpbmRpbmdFeHByZXNzaW9uID0ge1xuXHRfdHlwZTogXCJVbnJlc29sdmVhYmxlXCJcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNVbnJlc29sdmVhYmxlRXhwcmVzc2lvbiguLi5leHByZXNzaW9uczogRXhwcmVzc2lvbjxhbnk+W10pOiBib29sZWFuIHtcblx0cmV0dXJuIGV4cHJlc3Npb25zLmZpbmQoZXhwciA9PiBleHByLl90eXBlID09PSBcIlVucmVzb2x2ZWFibGVcIikgIT09IHVuZGVmaW5lZDtcbn1cbi8qKlxuICogQ2hlY2sgdHdvIGV4cHJlc3Npb25zIGZvciAoZGVlcCkgZXF1YWxpdHkuXG4gKlxuICogQHBhcmFtIGFcbiAqIEBwYXJhbSBiXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHRoZSB0d28gZXhwcmVzc2lvbnMgYXJlIGVxdWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBfY2hlY2tFeHByZXNzaW9uc0FyZUVxdWFsPFQ+KGE6IEV4cHJlc3Npb248VD4sIGI6IEV4cHJlc3Npb248VD4pOiBib29sZWFuIHtcblx0aWYgKGEuX3R5cGUgIT09IGIuX3R5cGUpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRzd2l0Y2ggKGEuX3R5cGUpIHtcblx0XHRjYXNlIFwiVW5yZXNvbHZlYWJsZVwiOlxuXHRcdFx0cmV0dXJuIGZhbHNlOyAvLyBVbnJlc29sdmVhYmxlIGlzIG5ldmVyIGVxdWFsIHRvIGFueXRoaW5nIGV2ZW4gaXRzZWxmXG5cdFx0Y2FzZSBcIkNvbnN0YW50XCI6XG5cdFx0Y2FzZSBcIkVtYmVkZGVkQmluZGluZ1wiOlxuXHRcdGNhc2UgXCJFbWJlZGRlZEV4cHJlc3Npb25CaW5kaW5nXCI6XG5cdFx0XHRyZXR1cm4gYS52YWx1ZSA9PT0gKGIgYXMgQ29uc3RhbnRFeHByZXNzaW9uPFQ+KS52YWx1ZTtcblxuXHRcdGNhc2UgXCJOb3RcIjpcblx0XHRcdHJldHVybiBfY2hlY2tFeHByZXNzaW9uc0FyZUVxdWFsKGEub3BlcmFuZCwgKGIgYXMgTm90RXhwcmVzc2lvbikub3BlcmFuZCk7XG5cdFx0Y2FzZSBcIlRydXRoeVwiOlxuXHRcdFx0cmV0dXJuIF9jaGVja0V4cHJlc3Npb25zQXJlRXF1YWwoYS5vcGVyYW5kLCAoYiBhcyBUcnV0aHlFeHByZXNzaW9uKS5vcGVyYW5kKTtcblx0XHRjYXNlIFwiU2V0XCI6XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRhLm9wZXJhdG9yID09PSAoYiBhcyBTZXRFeHByZXNzaW9uKS5vcGVyYXRvciAmJlxuXHRcdFx0XHRhLm9wZXJhbmRzLmxlbmd0aCA9PT0gKGIgYXMgU2V0RXhwcmVzc2lvbikub3BlcmFuZHMubGVuZ3RoICYmXG5cdFx0XHRcdGEub3BlcmFuZHMuZXZlcnkoZXhwcmVzc2lvbiA9PlxuXHRcdFx0XHRcdChiIGFzIFNldEV4cHJlc3Npb24pLm9wZXJhbmRzLnNvbWUob3RoZXJFeHByZXNzaW9uID0+IF9jaGVja0V4cHJlc3Npb25zQXJlRXF1YWwoZXhwcmVzc2lvbiwgb3RoZXJFeHByZXNzaW9uKSlcblx0XHRcdFx0KVxuXHRcdFx0KTtcblxuXHRcdGNhc2UgXCJJZkVsc2VcIjpcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdF9jaGVja0V4cHJlc3Npb25zQXJlRXF1YWwoYS5jb25kaXRpb24sIChiIGFzIElmRWxzZUV4cHJlc3Npb248VD4pLmNvbmRpdGlvbikgJiZcblx0XHRcdFx0X2NoZWNrRXhwcmVzc2lvbnNBcmVFcXVhbChhLm9uVHJ1ZSwgKGIgYXMgSWZFbHNlRXhwcmVzc2lvbjxUPikub25UcnVlKSAmJlxuXHRcdFx0XHRfY2hlY2tFeHByZXNzaW9uc0FyZUVxdWFsKGEub25GYWxzZSwgKGIgYXMgSWZFbHNlRXhwcmVzc2lvbjxUPikub25GYWxzZSlcblx0XHRcdCk7XG5cblx0XHRjYXNlIFwiQ29tcGFyaXNvblwiOlxuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0YS5vcGVyYXRvciA9PSAoYiBhcyBDb21wYXJpc29uRXhwcmVzc2lvbikub3BlcmF0b3IgJiZcblx0XHRcdFx0X2NoZWNrRXhwcmVzc2lvbnNBcmVFcXVhbChhLm9wZXJhbmQxLCAoYiBhcyBDb21wYXJpc29uRXhwcmVzc2lvbikub3BlcmFuZDEpICYmXG5cdFx0XHRcdF9jaGVja0V4cHJlc3Npb25zQXJlRXF1YWwoYS5vcGVyYW5kMiwgKGIgYXMgQ29tcGFyaXNvbkV4cHJlc3Npb24pLm9wZXJhbmQyKVxuXHRcdFx0KTtcblxuXHRcdGNhc2UgXCJDb25jYXRcIjpcblx0XHRcdGNvbnN0IGFFeHByZXNzaW9ucyA9IGEuZXhwcmVzc2lvbnM7XG5cdFx0XHRjb25zdCBiRXhwcmVzc2lvbnMgPSAoYiBhcyBDb25jYXRFeHByZXNzaW9uKS5leHByZXNzaW9ucztcblx0XHRcdGlmIChhRXhwcmVzc2lvbnMubGVuZ3RoICE9PSBiRXhwcmVzc2lvbnMubGVuZ3RoKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBhRXhwcmVzc2lvbnMuZXZlcnkoKGV4cHJlc3Npb24sIGluZGV4KSA9PiB7XG5cdFx0XHRcdHJldHVybiBfY2hlY2tFeHByZXNzaW9uc0FyZUVxdWFsKGV4cHJlc3Npb24sIGJFeHByZXNzaW9uc1tpbmRleF0pO1xuXHRcdFx0fSk7XG5cblx0XHRjYXNlIFwiQmluZGluZ1wiOlxuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0YS5tb2RlbE5hbWUgPT09IChiIGFzIEJpbmRpbmdFeHByZXNzaW9uRXhwcmVzc2lvbjxUPikubW9kZWxOYW1lICYmXG5cdFx0XHRcdGEucGF0aCA9PT0gKGIgYXMgQmluZGluZ0V4cHJlc3Npb25FeHByZXNzaW9uPFQ+KS5wYXRoICYmXG5cdFx0XHRcdGEudGFyZ2V0RW50aXR5U2V0ID09PSAoYiBhcyBCaW5kaW5nRXhwcmVzc2lvbkV4cHJlc3Npb248VD4pLnRhcmdldEVudGl0eVNldFxuXHRcdFx0KTtcblxuXHRcdGNhc2UgXCJEZWZhdWx0QmluZGluZ1wiOlxuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0YS5tb2RlbE5hbWUgPT09IChiIGFzIERlZmF1bHRCaW5kaW5nRXhwcmVzc2lvbkV4cHJlc3Npb248VD4pLm1vZGVsTmFtZSAmJlxuXHRcdFx0XHRhLnBhdGggPT09IChiIGFzIERlZmF1bHRCaW5kaW5nRXhwcmVzc2lvbkV4cHJlc3Npb248VD4pLnBhdGhcblx0XHRcdCk7XG5cblx0XHRjYXNlIFwiRm9ybWF0dGVyXCI6XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRhLmZuID09PSAoYiBhcyBGb3JtYXR0ZXJFeHByZXNzaW9uPFQ+KS5mbiAmJlxuXHRcdFx0XHRhLnBhcmFtZXRlcnMubGVuZ3RoID09PSAoYiBhcyBGb3JtYXR0ZXJFeHByZXNzaW9uPFQ+KS5wYXJhbWV0ZXJzLmxlbmd0aCAmJlxuXHRcdFx0XHRhLnBhcmFtZXRlcnMuZXZlcnkoKHZhbHVlLCBpbmRleCkgPT4gX2NoZWNrRXhwcmVzc2lvbnNBcmVFcXVhbCgoYiBhcyBGb3JtYXR0ZXJFeHByZXNzaW9uPFQ+KS5wYXJhbWV0ZXJzW2luZGV4XSwgdmFsdWUpKVxuXHRcdFx0KTtcblx0XHRjYXNlIFwiQ29tcGxleFR5cGVcIjpcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdGEudHlwZSA9PT0gKGIgYXMgQ29tcGxleFR5cGVFeHByZXNzaW9uPFQ+KS50eXBlICYmXG5cdFx0XHRcdGEuYmluZGluZ1BhcmFtZXRlcnMubGVuZ3RoID09PSAoYiBhcyBDb21wbGV4VHlwZUV4cHJlc3Npb248VD4pLmJpbmRpbmdQYXJhbWV0ZXJzLmxlbmd0aCAmJlxuXHRcdFx0XHRhLmJpbmRpbmdQYXJhbWV0ZXJzLmV2ZXJ5KCh2YWx1ZSwgaW5kZXgpID0+XG5cdFx0XHRcdFx0X2NoZWNrRXhwcmVzc2lvbnNBcmVFcXVhbCgoYiBhcyBDb21wbGV4VHlwZUV4cHJlc3Npb248VD4pLmJpbmRpbmdQYXJhbWV0ZXJzW2luZGV4XSwgdmFsdWUpXG5cdFx0XHRcdClcblx0XHRcdCk7XG5cdFx0Y2FzZSBcIkZ1bmN0aW9uXCI6XG5cdFx0XHRjb25zdCBvdGhlckZ1bmN0aW9uID0gYiBhcyBGdW5jdGlvbkV4cHJlc3Npb248VD47XG5cdFx0XHRpZiAoYS5vYmogPT09IHVuZGVmaW5lZCB8fCBvdGhlckZ1bmN0aW9uLm9iaiA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdHJldHVybiBhLm9iaiA9PT0gb3RoZXJGdW5jdGlvbjtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0YS5mbiA9PT0gb3RoZXJGdW5jdGlvbi5mbiAmJlxuXHRcdFx0XHRfY2hlY2tFeHByZXNzaW9uc0FyZUVxdWFsKGEub2JqLCBvdGhlckZ1bmN0aW9uLm9iaikgJiZcblx0XHRcdFx0YS5wYXJhbWV0ZXJzLmxlbmd0aCA9PT0gb3RoZXJGdW5jdGlvbi5wYXJhbWV0ZXJzLmxlbmd0aCAmJlxuXHRcdFx0XHRhLnBhcmFtZXRlcnMuZXZlcnkoKHZhbHVlLCBpbmRleCkgPT4gX2NoZWNrRXhwcmVzc2lvbnNBcmVFcXVhbChvdGhlckZ1bmN0aW9uLnBhcmFtZXRlcnNbaW5kZXhdLCB2YWx1ZSkpXG5cdFx0XHQpO1xuXG5cdFx0Y2FzZSBcIlJlZlwiOlxuXHRcdFx0cmV0dXJuIGEucmVmID09PSAoYiBhcyBSZWZlcmVuY2VFeHByZXNzaW9uKS5yZWY7XG5cdH1cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIG5lc3RlZCBTZXRFeHByZXNzaW9uIGJ5IGlubGluaW5nIG9wZXJhbmRzIG9mIHR5cGUgU2V0RXhwcmVzc2lvbiB3aXRoIHRoZSBzYW1lIG9wZXJhdG9yLlxuICpcbiAqIEBwYXJhbSBleHByZXNzaW9uIFRoZSBleHByZXNzaW9uIHRvIGZsYXR0ZW5cbiAqIEByZXR1cm5zIHtTZXRFeHByZXNzaW9ufSBBIG5ldyBTZXRFeHByZXNzaW9uIHdpdGggdGhlIHNhbWUgb3BlcmF0b3JcbiAqL1xuZnVuY3Rpb24gZmxhdHRlblNldEV4cHJlc3Npb24oZXhwcmVzc2lvbjogU2V0RXhwcmVzc2lvbik6IFNldEV4cHJlc3Npb24ge1xuXHRyZXR1cm4gZXhwcmVzc2lvbi5vcGVyYW5kcy5yZWR1Y2UoXG5cdFx0KHJlc3VsdDogU2V0RXhwcmVzc2lvbiwgb3BlcmFuZCkgPT4ge1xuXHRcdFx0Y29uc3QgY2FuZGlkYXRlc0ZvckZsYXR0ZW5pbmcgPVxuXHRcdFx0XHRvcGVyYW5kLl90eXBlID09PSBcIlNldFwiICYmIG9wZXJhbmQub3BlcmF0b3IgPT09IGV4cHJlc3Npb24ub3BlcmF0b3IgPyBvcGVyYW5kLm9wZXJhbmRzIDogW29wZXJhbmRdO1xuXHRcdFx0Y2FuZGlkYXRlc0ZvckZsYXR0ZW5pbmcuZm9yRWFjaChjYW5kaWRhdGUgPT4ge1xuXHRcdFx0XHRpZiAocmVzdWx0Lm9wZXJhbmRzLmV2ZXJ5KGUgPT4gIV9jaGVja0V4cHJlc3Npb25zQXJlRXF1YWwoZSwgY2FuZGlkYXRlKSkpIHtcblx0XHRcdFx0XHRyZXN1bHQub3BlcmFuZHMucHVzaChjYW5kaWRhdGUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fSxcblx0XHR7IF90eXBlOiBcIlNldFwiLCBvcGVyYXRvcjogZXhwcmVzc2lvbi5vcGVyYXRvciwgb3BlcmFuZHM6IFtdIH1cblx0KTtcbn1cblxuLyoqXG4gKiBEZXRlY3RzIHdoZXRoZXIgYW4gYXJyYXkgb2YgYm9vbGVhbiBleHByZXNzaW9ucyBjb250YWlucyBhbiBleHByZXNzaW9uIGFuZCBpdHMgbmVnYXRpb24uXG4gKlxuICogQHBhcmFtIGV4cHJlc3Npb25zIEFycmF5IG9mIGV4cHJlc3Npb25zXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHRoZSBzZXQgb2YgZXhwcmVzc2lvbnMgY29udGFpbnMgYW4gZXhwcmVzc2lvbiBhbmQgaXRzIG5lZ2F0aW9uXG4gKi9cbmZ1bmN0aW9uIGhhc09wcG9zaXRlRXhwcmVzc2lvbnMoZXhwcmVzc2lvbnM6IEV4cHJlc3Npb248Ym9vbGVhbj5bXSk6IGJvb2xlYW4ge1xuXHRpZiAoZXhwcmVzc2lvbnMubGVuZ3RoIDwgMikge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdGxldCBpID0gZXhwcmVzc2lvbnMubGVuZ3RoO1xuXHR3aGlsZSAoaS0tKSB7XG5cdFx0Y29uc3QgZXhwcmVzc2lvbiA9IGV4cHJlc3Npb25zW2ldO1xuXHRcdGNvbnN0IG5lZ2F0ZWRFeHByZXNzaW9uID0gbm90KGV4cHJlc3Npb24pO1xuXHRcdGZvciAobGV0IGogPSAwOyBqIDwgaTsgaisrKSB7XG5cdFx0XHRpZiAoX2NoZWNrRXhwcmVzc2lvbnNBcmVFcXVhbChleHByZXNzaW9uc1tqXSwgbmVnYXRlZEV4cHJlc3Npb24pKSB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRyZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogTG9naWNhbCBgYW5kYCBleHByZXNzaW9uLlxuICpcbiAqIFRoZSBleHByZXNzaW9uIGlzIHNpbXBsaWZpZWQgdG8gZmFsc2UgaWYgdGhpcyBjYW4gYmUgZGVjaWRlZCBzdGF0aWNhbGx5ICh0aGF0IGlzLCBpZiBvbmUgb3BlcmFuZCBpcyBhIGNvbnN0YW50XG4gKiBmYWxzZSBvciBpZiB0aGUgZXhwcmVzc2lvbiBjb250YWlucyBhbiBvcGVyYW5kIGFuZCBpdHMgbmVnYXRpb24pLlxuICpcbiAqIEBwYXJhbSBvcGVyYW5kcyBFeHByZXNzaW9ucyB0byBjb25uZWN0IGJ5IGBhbmRgXG4gKiBAcmV0dXJucyB7RXhwcmVzc2lvbjxib29sZWFuPn0gRXhwcmVzc2lvbiBldmFsdWF0aW5nIHRvIGJvb2xlYW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFuZCguLi5vcGVyYW5kczogRXhwcmVzc2lvbk9yUHJpbWl0aXZlPGJvb2xlYW4+W10pOiBFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0Y29uc3QgZXhwcmVzc2lvbnMgPSBmbGF0dGVuU2V0RXhwcmVzc2lvbih7XG5cdFx0X3R5cGU6IFwiU2V0XCIsXG5cdFx0b3BlcmF0b3I6IFwiJiZcIixcblx0XHRvcGVyYW5kczogb3BlcmFuZHMubWFwKHdyYXBQcmltaXRpdmUpXG5cdH0pLm9wZXJhbmRzO1xuXG5cdGlmIChoYXNVbnJlc29sdmVhYmxlRXhwcmVzc2lvbiguLi5leHByZXNzaW9ucykpIHtcblx0XHRyZXR1cm4gdW5yZXNvbHZlYWJsZUV4cHJlc3Npb247XG5cdH1cblx0bGV0IGlzU3RhdGljRmFsc2U6IGJvb2xlYW4gPSBmYWxzZTtcblx0Y29uc3Qgbm9uVHJpdmlhbEV4cHJlc3Npb24gPSBleHByZXNzaW9ucy5maWx0ZXIoZXhwcmVzc2lvbiA9PiB7XG5cdFx0aWYgKGlzQ29uc3RhbnQoZXhwcmVzc2lvbikgJiYgIWV4cHJlc3Npb24udmFsdWUpIHtcblx0XHRcdGlzU3RhdGljRmFsc2UgPSB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4gIWlzQ29uc3RhbnQoZXhwcmVzc2lvbik7XG5cdH0pO1xuXHRpZiAoaXNTdGF0aWNGYWxzZSkge1xuXHRcdHJldHVybiBjb25zdGFudChmYWxzZSk7XG5cdH0gZWxzZSBpZiAobm9uVHJpdmlhbEV4cHJlc3Npb24ubGVuZ3RoID09PSAwKSB7XG5cdFx0Ly8gUmVzb2x2ZSB0aGUgY29uc3RhbnQgdGhlblxuXHRcdGNvbnN0IGlzVmFsaWQgPSBleHByZXNzaW9ucy5yZWR1Y2UoKGlzVmFsaWQsIGV4cHJlc3Npb24pID0+IHtcblx0XHRcdHJldHVybiBpc1ZhbGlkICYmIGlzQ29uc3RhbnQoZXhwcmVzc2lvbikgJiYgZXhwcmVzc2lvbi52YWx1ZTtcblx0XHR9LCB0cnVlKTtcblx0XHRyZXR1cm4gY29uc3RhbnQoaXNWYWxpZCk7XG5cdH0gZWxzZSBpZiAobm9uVHJpdmlhbEV4cHJlc3Npb24ubGVuZ3RoID09PSAxKSB7XG5cdFx0cmV0dXJuIG5vblRyaXZpYWxFeHByZXNzaW9uWzBdO1xuXHR9IGVsc2UgaWYgKGhhc09wcG9zaXRlRXhwcmVzc2lvbnMobm9uVHJpdmlhbEV4cHJlc3Npb24pKSB7XG5cdFx0cmV0dXJuIGNvbnN0YW50KGZhbHNlKTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0X3R5cGU6IFwiU2V0XCIsXG5cdFx0XHRvcGVyYXRvcjogXCImJlwiLFxuXHRcdFx0b3BlcmFuZHM6IG5vblRyaXZpYWxFeHByZXNzaW9uXG5cdFx0fTtcblx0fVxufVxuXG4vKipcbiAqIExvZ2ljYWwgYG9yYCBleHByZXNzaW9uLlxuICpcbiAqIFRoZSBleHByZXNzaW9uIGlzIHNpbXBsaWZpZWQgdG8gdHJ1ZSBpZiB0aGlzIGNhbiBiZSBkZWNpZGVkIHN0YXRpY2FsbHkgKHRoYXQgaXMsIGlmIG9uZSBvcGVyYW5kIGlzIGEgY29uc3RhbnRcbiAqIHRydWUgb3IgaWYgdGhlIGV4cHJlc3Npb24gY29udGFpbnMgYW4gb3BlcmFuZCBhbmQgaXRzIG5lZ2F0aW9uKS5cbiAqXG4gKiBAcGFyYW0gb3BlcmFuZHMgRXhwcmVzc2lvbnMgdG8gY29ubmVjdCBieSBgb3JgXG4gKiBAcmV0dXJucyB7RXhwcmVzc2lvbjxib29sZWFuPn0gRXhwcmVzc2lvbiBldmFsdWF0aW5nIHRvIGJvb2xlYW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9yKC4uLm9wZXJhbmRzOiBFeHByZXNzaW9uT3JQcmltaXRpdmU8Ym9vbGVhbj5bXSk6IEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRjb25zdCBleHByZXNzaW9ucyA9IGZsYXR0ZW5TZXRFeHByZXNzaW9uKHtcblx0XHRfdHlwZTogXCJTZXRcIixcblx0XHRvcGVyYXRvcjogXCJ8fFwiLFxuXHRcdG9wZXJhbmRzOiBvcGVyYW5kcy5tYXAod3JhcFByaW1pdGl2ZSlcblx0fSkub3BlcmFuZHM7XG5cdGlmIChoYXNVbnJlc29sdmVhYmxlRXhwcmVzc2lvbiguLi5leHByZXNzaW9ucykpIHtcblx0XHRyZXR1cm4gdW5yZXNvbHZlYWJsZUV4cHJlc3Npb247XG5cdH1cblx0bGV0IGlzU3RhdGljVHJ1ZTogYm9vbGVhbiA9IGZhbHNlO1xuXHRjb25zdCBub25Ucml2aWFsRXhwcmVzc2lvbiA9IGV4cHJlc3Npb25zLmZpbHRlcihleHByZXNzaW9uID0+IHtcblx0XHRpZiAoaXNDb25zdGFudChleHByZXNzaW9uKSAmJiBleHByZXNzaW9uLnZhbHVlKSB7XG5cdFx0XHRpc1N0YXRpY1RydWUgPSB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4gIWlzQ29uc3RhbnQoZXhwcmVzc2lvbikgfHwgZXhwcmVzc2lvbi52YWx1ZTtcblx0fSk7XG5cdGlmIChpc1N0YXRpY1RydWUpIHtcblx0XHRyZXR1cm4gY29uc3RhbnQodHJ1ZSk7XG5cdH0gZWxzZSBpZiAobm9uVHJpdmlhbEV4cHJlc3Npb24ubGVuZ3RoID09PSAwKSB7XG5cdFx0Ly8gUmVzb2x2ZSB0aGUgY29uc3RhbnQgdGhlblxuXHRcdGNvbnN0IGlzVmFsaWQgPSBleHByZXNzaW9ucy5yZWR1Y2UoKGlzVmFsaWQsIGV4cHJlc3Npb24pID0+IHtcblx0XHRcdHJldHVybiBpc1ZhbGlkICYmIGlzQ29uc3RhbnQoZXhwcmVzc2lvbikgJiYgZXhwcmVzc2lvbi52YWx1ZTtcblx0XHR9LCB0cnVlKTtcblx0XHRyZXR1cm4gY29uc3RhbnQoaXNWYWxpZCk7XG5cdH0gZWxzZSBpZiAobm9uVHJpdmlhbEV4cHJlc3Npb24ubGVuZ3RoID09PSAxKSB7XG5cdFx0cmV0dXJuIG5vblRyaXZpYWxFeHByZXNzaW9uWzBdO1xuXHR9IGVsc2UgaWYgKGhhc09wcG9zaXRlRXhwcmVzc2lvbnMobm9uVHJpdmlhbEV4cHJlc3Npb24pKSB7XG5cdFx0cmV0dXJuIGNvbnN0YW50KHRydWUpO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiB7XG5cdFx0XHRfdHlwZTogXCJTZXRcIixcblx0XHRcdG9wZXJhdG9yOiBcInx8XCIsXG5cdFx0XHRvcGVyYW5kczogbm9uVHJpdmlhbEV4cHJlc3Npb25cblx0XHR9O1xuXHR9XG59XG5cbi8qKlxuICogTG9naWNhbCBgbm90YCBvcGVyYXRvci5cbiAqXG4gKiBAcGFyYW0gb3BlcmFuZCBUaGUgZXhwcmVzc2lvbiB0byByZXZlcnNlXG4gKiBAcmV0dXJucyB7RXhwcmVzc2lvbjxib29sZWFuPn0gVGhlIHJlc3VsdGluZyBleHByZXNzaW9uIHRoYXQgZXZhbHVhdGVzIHRvIGJvb2xlYW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vdChvcGVyYW5kOiBFeHByZXNzaW9uT3JQcmltaXRpdmU8Ym9vbGVhbj4pOiBFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0b3BlcmFuZCA9IHdyYXBQcmltaXRpdmUob3BlcmFuZCk7XG5cdGlmIChoYXNVbnJlc29sdmVhYmxlRXhwcmVzc2lvbihvcGVyYW5kKSkge1xuXHRcdHJldHVybiB1bnJlc29sdmVhYmxlRXhwcmVzc2lvbjtcblx0fSBlbHNlIGlmIChpc0NvbnN0YW50KG9wZXJhbmQpKSB7XG5cdFx0cmV0dXJuIGNvbnN0YW50KCFvcGVyYW5kLnZhbHVlKTtcblx0fSBlbHNlIGlmIChcblx0XHR0eXBlb2Ygb3BlcmFuZCA9PT0gXCJvYmplY3RcIiAmJlxuXHRcdG9wZXJhbmQuX3R5cGUgPT09IFwiU2V0XCIgJiZcblx0XHRvcGVyYW5kLm9wZXJhdG9yID09PSBcInx8XCIgJiZcblx0XHRvcGVyYW5kLm9wZXJhbmRzLmV2ZXJ5KGV4cHJlc3Npb24gPT4gaXNDb25zdGFudChleHByZXNzaW9uKSB8fCBpc0NvbXBhcmlzb24oZXhwcmVzc2lvbikpXG5cdCkge1xuXHRcdHJldHVybiBhbmQoLi4ub3BlcmFuZC5vcGVyYW5kcy5tYXAoZXhwcmVzc2lvbiA9PiBub3QoZXhwcmVzc2lvbikpKTtcblx0fSBlbHNlIGlmIChcblx0XHR0eXBlb2Ygb3BlcmFuZCA9PT0gXCJvYmplY3RcIiAmJlxuXHRcdG9wZXJhbmQuX3R5cGUgPT09IFwiU2V0XCIgJiZcblx0XHRvcGVyYW5kLm9wZXJhdG9yID09PSBcIiYmXCIgJiZcblx0XHRvcGVyYW5kLm9wZXJhbmRzLmV2ZXJ5KGV4cHJlc3Npb24gPT4gaXNDb25zdGFudChleHByZXNzaW9uKSB8fCBpc0NvbXBhcmlzb24oZXhwcmVzc2lvbikpXG5cdCkge1xuXHRcdHJldHVybiBvciguLi5vcGVyYW5kLm9wZXJhbmRzLm1hcChleHByZXNzaW9uID0+IG5vdChleHByZXNzaW9uKSkpO1xuXHR9IGVsc2UgaWYgKGlzQ29tcGFyaXNvbihvcGVyYW5kKSkge1xuXHRcdC8vIENyZWF0ZSB0aGUgcmV2ZXJzZSBjb21wYXJpc29uXG5cdFx0c3dpdGNoIChvcGVyYW5kLm9wZXJhdG9yKSB7XG5cdFx0XHRjYXNlIFwiIT09XCI6XG5cdFx0XHRcdHJldHVybiBlcXVhbChvcGVyYW5kLm9wZXJhbmQxLCBvcGVyYW5kLm9wZXJhbmQyKTtcblx0XHRcdGNhc2UgXCI8XCI6XG5cdFx0XHRcdHJldHVybiBncmVhdGVyT3JFcXVhbChvcGVyYW5kLm9wZXJhbmQxLCBvcGVyYW5kLm9wZXJhbmQyKTtcblx0XHRcdGNhc2UgXCI8PVwiOlxuXHRcdFx0XHRyZXR1cm4gZ3JlYXRlclRoYW4ob3BlcmFuZC5vcGVyYW5kMSwgb3BlcmFuZC5vcGVyYW5kMik7XG5cdFx0XHRjYXNlIFwiPT09XCI6XG5cdFx0XHRcdHJldHVybiBub3RFcXVhbChvcGVyYW5kLm9wZXJhbmQxLCBvcGVyYW5kLm9wZXJhbmQyKTtcblx0XHRcdGNhc2UgXCI+XCI6XG5cdFx0XHRcdHJldHVybiBsZXNzT3JFcXVhbChvcGVyYW5kLm9wZXJhbmQxLCBvcGVyYW5kLm9wZXJhbmQyKTtcblx0XHRcdGNhc2UgXCI+PVwiOlxuXHRcdFx0XHRyZXR1cm4gbGVzc1RoYW4ob3BlcmFuZC5vcGVyYW5kMSwgb3BlcmFuZC5vcGVyYW5kMik7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKG9wZXJhbmQuX3R5cGUgPT09IFwiTm90XCIpIHtcblx0XHRyZXR1cm4gb3BlcmFuZC5vcGVyYW5kO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiB7XG5cdFx0XHRfdHlwZTogXCJOb3RcIixcblx0XHRcdG9wZXJhbmQ6IG9wZXJhbmRcblx0XHR9O1xuXHR9XG59XG5cbi8qKlxuICogRXZhbHVhdGVzIHdoZXRoZXIgYSBiaW5kaW5nIGV4cHJlc3Npb24gaXMgZXF1YWwgdG8gdHJ1ZSB3aXRoIGEgbG9vc2UgZXF1YWxpdHkuXG4gKlxuICogQHBhcmFtIG9wZXJhbmQgVGhlIGV4cHJlc3Npb24gdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtFeHByZXNzaW9uPGJvb2xlYW4+fSBUaGUgcmVzdWx0aW5nIGV4cHJlc3Npb24gdGhhdCBldmFsdWF0ZXMgdG8gYm9vbGVhblxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNUcnV0aHkob3BlcmFuZDogRXhwcmVzc2lvbjxzdHJpbmc+KTogRXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGlmIChpc0NvbnN0YW50KG9wZXJhbmQpKSB7XG5cdFx0cmV0dXJuIGNvbnN0YW50KCEhb3BlcmFuZC52YWx1ZSk7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdF90eXBlOiBcIlRydXRoeVwiLFxuXHRcdFx0b3BlcmFuZDogb3BlcmFuZFxuXHRcdH07XG5cdH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgYmluZGluZyBleHByZXNzaW9uIHRoYXQgd2lsbCBiZSBldmFsdWF0ZWQgYnkgdGhlIGNvcnJlc3BvbmRpbmcgbW9kZWwuXG4gKlxuICogQHRlbXBsYXRlIFRhcmdldFR5cGVcbiAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIG9uIHRoZSBtb2RlbFxuICogQHBhcmFtIFttb2RlbE5hbWVdIFRoZSBuYW1lIG9mIHRoZSBtb2RlbFxuICogQHBhcmFtIFt2aXNpdGVkTmF2aWdhdGlvblBhdGhzXSBUaGUgcGF0aHMgZnJvbSB0aGUgcm9vdCBlbnRpdHlTZXRcbiAqIEBwYXJhbSBbcGF0aFZpc2l0b3JdIEEgZnVuY3Rpb24gdG8gbW9kaWZ5IHRoZSByZXN1bHRpbmcgcGF0aFxuICogQHJldHVybnMge0JpbmRpbmdFeHByZXNzaW9uRXhwcmVzc2lvbjxUYXJnZXRUeXBlPn0gVGhlIGRlZmF1bHQgYmluZGluZyBleHByZXNzaW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiaW5kaW5nRXhwcmVzc2lvbjxUYXJnZXRUeXBlIGV4dGVuZHMgUHJpbWl0aXZlVHlwZT4oXG5cdHBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZCxcblx0bW9kZWxOYW1lPzogc3RyaW5nLFxuXHR2aXNpdGVkTmF2aWdhdGlvblBhdGhzOiBzdHJpbmdbXSA9IFtdLFxuXHRwYXRoVmlzaXRvcj86IEZ1bmN0aW9uXG4pOiBCaW5kaW5nRXhwcmVzc2lvbkV4cHJlc3Npb248VGFyZ2V0VHlwZT4gfCBVbnJlc29sdmVhYmxlQmluZGluZ0V4cHJlc3Npb24ge1xuXHRpZiAocGF0aCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIHVucmVzb2x2ZWFibGVFeHByZXNzaW9uO1xuXHR9XG5cdGxldCB0YXJnZXRQYXRoO1xuXHRpZiAocGF0aFZpc2l0b3IpIHtcblx0XHR0YXJnZXRQYXRoID0gcGF0aFZpc2l0b3IocGF0aCk7XG5cdFx0aWYgKHRhcmdldFBhdGggPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cmV0dXJuIHVucmVzb2x2ZWFibGVFeHByZXNzaW9uO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRjb25zdCBsb2NhbFBhdGggPSB2aXNpdGVkTmF2aWdhdGlvblBhdGhzLmNvbmNhdCgpO1xuXHRcdGxvY2FsUGF0aC5wdXNoKHBhdGgpO1xuXHRcdHRhcmdldFBhdGggPSBsb2NhbFBhdGguam9pbihcIi9cIik7XG5cdH1cblx0cmV0dXJuIHtcblx0XHRfdHlwZTogXCJCaW5kaW5nXCIsXG5cdFx0bW9kZWxOYW1lOiBtb2RlbE5hbWUsXG5cdFx0cGF0aDogdGFyZ2V0UGF0aFxuXHR9O1xufVxuXG50eXBlIFBsYWluRXhwcmVzc2lvbk9iamVjdCA9IHsgW2luZGV4OiBzdHJpbmddOiBFeHByZXNzaW9uPGFueT4gfTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY29uc3RhbnQgZXhwcmVzc2lvbiBiYXNlZCBvbiBhIHByaW1pdGl2ZSB2YWx1ZS5cbiAqXG4gKiBAdGVtcGxhdGUgVFxuICogQHBhcmFtIHZhbHVlIFRoZSBjb25zdGFudCB0byB3cmFwIGluIGFuIGV4cHJlc3Npb25cbiAqIEByZXR1cm5zIHtDb25zdGFudEV4cHJlc3Npb248VD59IFRoZSBjb25zdGFudCBleHByZXNzaW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25zdGFudDxUIGV4dGVuZHMgUHJpbWl0aXZlVHlwZT4odmFsdWU6IFQpOiBDb25zdGFudEV4cHJlc3Npb248VD4ge1xuXHRsZXQgY29uc3RhbnRWYWx1ZTogVDtcblxuXHRpZiAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcblx0XHRcdGNvbnN0YW50VmFsdWUgPSB2YWx1ZS5tYXAod3JhcFByaW1pdGl2ZSkgYXMgVDtcblx0XHR9IGVsc2UgaWYgKGlzUHJpbWl0aXZlT2JqZWN0KHZhbHVlIGFzIG9iamVjdCkpIHtcblx0XHRcdGNvbnN0YW50VmFsdWUgPSB2YWx1ZS52YWx1ZU9mKCkgYXMgVDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgdmFsID0gdmFsdWUgYXMgeyBbbmFtZTogc3RyaW5nXTogRXhwcmVzc2lvbk9yUHJpbWl0aXZlPGFueT4gfTtcblx0XHRcdGNvbnN0IG9iaiA9IE9iamVjdC5rZXlzKHZhbCkucmVkdWNlKChvYmosIGtleSkgPT4ge1xuXHRcdFx0XHRjb25zdCB2YWx1ZSA9IHdyYXBQcmltaXRpdmUodmFsW2tleV0pO1xuXHRcdFx0XHRpZiAodmFsdWUuX3R5cGUgIT09IFwiQ29uc3RhbnRcIiB8fCB2YWx1ZS52YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0b2JqW2tleV0gPSB2YWx1ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gb2JqO1xuXHRcdFx0fSwge30gYXMgUGxhaW5FeHByZXNzaW9uT2JqZWN0KTtcblxuXHRcdFx0Y29uc3RhbnRWYWx1ZSA9IG9iaiBhcyBUO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRjb25zdGFudFZhbHVlID0gdmFsdWU7XG5cdH1cblxuXHRyZXR1cm4geyBfdHlwZTogXCJDb25zdGFudFwiLCB2YWx1ZTogY29uc3RhbnRWYWx1ZSB9O1xufVxuXG50eXBlIEV2YWx1YXRpb25UeXBlID0gXCJib29sZWFuXCI7XG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUJpbmRpbmdTdHJpbmc8VCBleHRlbmRzIFByaW1pdGl2ZVR5cGU+KFxuXHR2YWx1ZTogc3RyaW5nIHwgYm9vbGVhbiB8IG51bWJlcixcblx0dGFyZ2V0VHlwZT86IEV2YWx1YXRpb25UeXBlXG4pOiBDb25zdGFudEV4cHJlc3Npb248VD4gfCBFbWJlZGRlZEJpbmRpbmdFeHByZXNzaW9uPFQ+IHwgRW1iZWRkZWRFeHByZXNzaW9uQmluZGluZ0V4cHJlc3Npb248VD4ge1xuXHRpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgdmFsdWUuc3RhcnRzV2l0aChcIntcIikpIHtcblx0XHRpZiAodmFsdWUuc3RhcnRzV2l0aChcIns9XCIpKSB7XG5cdFx0XHQvLyBFeHByZXNzaW9uIGJpbmRpbmcsIHdlIGNhbiBqdXN0IHJlbW92ZSB0aGUgb3V0ZXIgYmluZGluZyB0aGluZ3Ncblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdF90eXBlOiBcIkVtYmVkZGVkRXhwcmVzc2lvbkJpbmRpbmdcIixcblx0XHRcdFx0dmFsdWU6IHZhbHVlXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRfdHlwZTogXCJFbWJlZGRlZEJpbmRpbmdcIixcblx0XHRcdFx0dmFsdWU6IHZhbHVlXG5cdFx0XHR9O1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRzd2l0Y2ggKHRhcmdldFR5cGUpIHtcblx0XHRcdGNhc2UgXCJib29sZWFuXCI6XG5cdFx0XHRcdGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgKHZhbHVlID09PSBcInRydWVcIiB8fCB2YWx1ZSA9PT0gXCJmYWxzZVwiKSkge1xuXHRcdFx0XHRcdHJldHVybiBjb25zdGFudCh2YWx1ZSA9PT0gXCJ0cnVlXCIpIGFzIENvbnN0YW50RXhwcmVzc2lvbjxUPjtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gY29uc3RhbnQodmFsdWUpIGFzIENvbnN0YW50RXhwcmVzc2lvbjxUPjtcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHJldHVybiBjb25zdGFudCh2YWx1ZSkgYXMgQ29uc3RhbnRFeHByZXNzaW9uPFQ+O1xuXHRcdH1cblx0fVxufVxuXG4vKipcbiAqIEEgbmFtZWQgcmVmZXJlbmNlLlxuICpcbiAqIEBzZWUgZm5cbiAqXG4gKiBAcGFyYW0gcmVmIFJlZmVyZW5jZVxuICogQHJldHVybnMge1JlZmVyZW5jZUV4cHJlc3Npb259IFRoZSBvYmplY3QgcmVmZXJlbmNlIGJpbmRpbmcgcGFydFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVmKHJlZjogc3RyaW5nIHwgbnVsbCk6IFJlZmVyZW5jZUV4cHJlc3Npb24ge1xuXHRyZXR1cm4geyBfdHlwZTogXCJSZWZcIiwgcmVmIH07XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHR5cGUgaXMgYW4gZXhwcmVzc2lvbi5cbiAqXG4gKiBFdmVyeSBvYmplY3QgaGF2aW5nIGEgcHJvcGVydHkgbmFtZWQgYF90eXBlYCBvZiBzb21lIHZhbHVlIGlzIGNvbnNpZGVyZWQgYW4gZXhwcmVzc2lvbiwgZXZlbiBpZiB0aGVyZSBpcyBhY3R1YWxseVxuICogbm8gc3VjaCBleHByZXNzaW9uIHR5cGUgc3VwcG9ydGVkLlxuICpcbiAqIEBwYXJhbSBzb21ldGhpbmcgVHlwZSB0byBjaGVja1xuICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiB0aGUgdHlwZSBpcyBjb25zaWRlcmVkIHRvIGJlIGFuIGV4cHJlc3Npb25cbiAqL1xuZnVuY3Rpb24gaXNFeHByZXNzaW9uPFQgZXh0ZW5kcyBQcmltaXRpdmVUeXBlPihzb21ldGhpbmc6IEV4cHJlc3Npb25PclByaW1pdGl2ZTxUPik6IHNvbWV0aGluZyBpcyBFeHByZXNzaW9uPFQ+IHtcblx0cmV0dXJuIHNvbWV0aGluZyAhPT0gbnVsbCAmJiB0eXBlb2Ygc29tZXRoaW5nID09PSBcIm9iamVjdFwiICYmIChzb21ldGhpbmcgYXMgQmFzZUV4cHJlc3Npb248VD4pLl90eXBlICE9PSB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogV3JhcCBhIHByaW1pdGl2ZSBpbnRvIGEgY29uc3RhbnQgZXhwcmVzc2lvbiBpZiBpdCBpcyBub3QgYWxyZWFkeSBhbiBleHByZXNzaW9uLlxuICpcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAcGFyYW0gc29tZXRoaW5nIFRoZSBvYmplY3QgdG8gd3JhcCBpbiBhIENvbnN0YW50IGV4cHJlc3Npb25cbiAqIEByZXR1cm5zIHtFeHByZXNzaW9uPFQ+fSBFaXRoZXIgdGhlIG9yaWdpbmFsIG9iamVjdCBvciB0aGUgd3JhcHBlZCBvbmUgZGVwZW5kaW5nIG9uIHRoZSBjYXNlXG4gKi9cbmZ1bmN0aW9uIHdyYXBQcmltaXRpdmU8VCBleHRlbmRzIFByaW1pdGl2ZVR5cGU+KHNvbWV0aGluZzogRXhwcmVzc2lvbk9yUHJpbWl0aXZlPFQ+KTogRXhwcmVzc2lvbjxUPiB7XG5cdGlmIChpc0V4cHJlc3Npb24oc29tZXRoaW5nKSkge1xuXHRcdHJldHVybiBzb21ldGhpbmc7XG5cdH1cblxuXHRyZXR1cm4gY29uc3RhbnQoc29tZXRoaW5nKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGV4cHJlc3Npb24gb3IgdmFsdWUgcHJvdmlkZWQgaXMgY29uc3RhbnQgb3Igbm90LlxuICpcbiAqIEB0ZW1wbGF0ZSBUIFRoZSB0YXJnZXQgdHlwZVxuICogQHBhcmFtICBtYXliZUNvbnN0YW50IFRoZSBleHByZXNzaW9uIG9yIHByaW1pdGl2ZSB2YWx1ZSB0aGF0IGlzIHRvIGJlIGNoZWNrZWRcbiAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgaXQgaXMgY29uc3RhbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ29uc3RhbnQ8VCBleHRlbmRzIFByaW1pdGl2ZVR5cGU+KG1heWJlQ29uc3RhbnQ6IEV4cHJlc3Npb25PclByaW1pdGl2ZTxUPik6IG1heWJlQ29uc3RhbnQgaXMgQ29uc3RhbnRFeHByZXNzaW9uPFQ+IHtcblx0cmV0dXJuIHR5cGVvZiBtYXliZUNvbnN0YW50ICE9PSBcIm9iamVjdFwiIHx8IChtYXliZUNvbnN0YW50IGFzIEJhc2VFeHByZXNzaW9uPFQ+KS5fdHlwZSA9PT0gXCJDb25zdGFudFwiO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZXhwcmVzc2lvbiBvciB2YWx1ZSBwcm92aWRlZCBpcyBiaW5kaW5nIG9yIG5vdC5cbiAqXG4gKiBAdGVtcGxhdGUgVCBUaGUgdGFyZ2V0IHR5cGVcbiAqIEBwYXJhbSAgbWF5YmVCaW5kaW5nIFRoZSBleHByZXNzaW9uIG9yIHByaW1pdGl2ZSB2YWx1ZSB0aGF0IGlzIHRvIGJlIGNoZWNrZWRcbiAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgaXQgaXMgYmluZGluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNCaW5kaW5nPFQgZXh0ZW5kcyBQcmltaXRpdmVUeXBlPihtYXliZUJpbmRpbmc6IEV4cHJlc3Npb25PclByaW1pdGl2ZTxUPik6IG1heWJlQmluZGluZyBpcyBCaW5kaW5nRXhwcmVzc2lvbkV4cHJlc3Npb248VD4ge1xuXHRyZXR1cm4gdHlwZW9mIG1heWJlQmluZGluZyA9PT0gXCJvYmplY3RcIiAmJiAobWF5YmVCaW5kaW5nIGFzIEJhc2VFeHByZXNzaW9uPFQ+KS5fdHlwZSA9PT0gXCJCaW5kaW5nXCI7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBleHByZXNzaW9uIHByb3ZpZGVkIGlzIGEgY29tcGFyaXNvbiBvciBub3QuXG4gKlxuICogQHRlbXBsYXRlIFQgVGhlIHRhcmdldCB0eXBlXG4gKiBAcGFyYW0gZXhwcmVzc2lvbiBUaGUgZXhwcmVzc2lvblxuICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiB0aGUgZXhwcmVzc2lvbiBpcyBhIENvbXBhcmlzb25FeHByZXNzaW9uXG4gKi9cbmZ1bmN0aW9uIGlzQ29tcGFyaXNvbjxUIGV4dGVuZHMgUHJpbWl0aXZlVHlwZT4oZXhwcmVzc2lvbjogRXhwcmVzc2lvbjxUPik6IGV4cHJlc3Npb24gaXMgQ29tcGFyaXNvbkV4cHJlc3Npb24ge1xuXHRyZXR1cm4gZXhwcmVzc2lvbi5fdHlwZSA9PT0gXCJDb21wYXJpc29uXCI7XG59XG5cbnR5cGUgQ29tcGxleEFubm90YXRpb25FeHByZXNzaW9uPFA+ID1cblx0fCBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb248UD5cblx0fCBBcHBseUFubm90YXRpb25FeHByZXNzaW9uPFA+XG5cdHwgSWZBbm5vdGF0aW9uRXhwcmVzc2lvbjxQPlxuXHR8IE9yQW5ub3RhdGlvbkV4cHJlc3Npb248UD5cblx0fCBBbmRBbm5vdGF0aW9uRXhwcmVzc2lvbjxQPlxuXHR8IE5lQW5ub3RhdGlvbkV4cHJlc3Npb248UD5cblx0fCBFcUFubm90YXRpb25FeHByZXNzaW9uPFA+XG5cdHwgTm90QW5ub3RhdGlvbkV4cHJlc3Npb248UD5cblx0fCBHdEFubm90YXRpb25FeHByZXNzaW9uPFA+XG5cdHwgR2VBbm5vdGF0aW9uRXhwcmVzc2lvbjxQPlxuXHR8IExlQW5ub3RhdGlvbkV4cHJlc3Npb248UD5cblx0fCBMdEFubm90YXRpb25FeHByZXNzaW9uPFA+O1xuXG5mdW5jdGlvbiBpc1ByaW1pdGl2ZU9iamVjdChvYmplY3RUeXBlOiBvYmplY3QpOiBib29sZWFuIHtcblx0c3dpdGNoIChvYmplY3RUeXBlLmNvbnN0cnVjdG9yLm5hbWUpIHtcblx0XHRjYXNlIFwiU3RyaW5nXCI6XG5cdFx0Y2FzZSBcIk51bWJlclwiOlxuXHRcdGNhc2UgXCJCb29sZWFuXCI6XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRkZWZhdWx0OlxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59XG4vKipcbiAqIENoZWNrIGlmIHRoZSBwYXNzZWQgYW5ub3RhdGlvbiBleHByZXNzaW9uIGlzIGEgQ29tcGxleEFubm90YXRpb25FeHByZXNzaW9uLlxuICpcbiAqIEB0ZW1wbGF0ZSBUIFRoZSB0YXJnZXQgdHlwZVxuICogQHBhcmFtICBhbm5vdGF0aW9uRXhwcmVzc2lvbiBUaGUgYW5ub3RhdGlvbiBleHByZXNzaW9uIHRvIGV2YWx1YXRlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHRoZSBvYmplY3QgaXMgYSB7Q29tcGxleEFubm90YXRpb25FeHByZXNzaW9ufVxuICovXG5mdW5jdGlvbiBpc0NvbXBsZXhBbm5vdGF0aW9uRXhwcmVzc2lvbjxUPihcblx0YW5ub3RhdGlvbkV4cHJlc3Npb246IFByb3BlcnR5QW5ub3RhdGlvblZhbHVlPFQ+XG4pOiBhbm5vdGF0aW9uRXhwcmVzc2lvbiBpcyBDb21wbGV4QW5ub3RhdGlvbkV4cHJlc3Npb248VD4ge1xuXHRyZXR1cm4gdHlwZW9mIGFubm90YXRpb25FeHByZXNzaW9uID09PSBcIm9iamVjdFwiICYmICFpc1ByaW1pdGl2ZU9iamVjdChhbm5vdGF0aW9uRXhwcmVzc2lvbiBhcyBvYmplY3QpO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIHRoZSBjb3JyZXNwb25kaW5nIGV4cHJlc3Npb24gZm9yIGEgZ2l2ZW4gYW5ub3RhdGlvbiBleHByZXNzaW9uLlxuICpcbiAqIEB0ZW1wbGF0ZSBUIFRoZSB0YXJnZXQgdHlwZVxuICogQHBhcmFtIGFubm90YXRpb25FeHByZXNzaW9uIFRoZSBzb3VyY2UgYW5ub3RhdGlvbiBleHByZXNzaW9uXG4gKiBAcGFyYW0gdmlzaXRlZE5hdmlnYXRpb25QYXRocyBUaGUgcGF0aCBmcm9tIHRoZSByb290IGVudGl0eSBzZXRcbiAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgRGVmYXVsdCB2YWx1ZSBpZiB0aGUgYW5ub3RhdGlvbkV4cHJlc3Npb24gaXMgdW5kZWZpbmVkXG4gKiBAcGFyYW0gcGF0aFZpc2l0b3IgQSBmdW5jdGlvbiB0byBtb2RpZnkgdGhlIHJlc3VsdGluZyBwYXRoXG4gKiBAcmV0dXJucyB7RXhwcmVzc2lvbjxUPn0gVGhlIGV4cHJlc3Npb24gZXF1aXZhbGVudCB0byB0aGF0IGFubm90YXRpb24gZXhwcmVzc2lvblxuICovXG5leHBvcnQgZnVuY3Rpb24gYW5ub3RhdGlvbkV4cHJlc3Npb248VCBleHRlbmRzIFByaW1pdGl2ZVR5cGU+KFxuXHRhbm5vdGF0aW9uRXhwcmVzc2lvbjogUHJvcGVydHlBbm5vdGF0aW9uVmFsdWU8VD4sXG5cdHZpc2l0ZWROYXZpZ2F0aW9uUGF0aHM6IHN0cmluZ1tdID0gW10sXG5cdGRlZmF1bHRWYWx1ZT86IEV4cHJlc3Npb25PclByaW1pdGl2ZTxUPixcblx0cGF0aFZpc2l0b3I/OiBGdW5jdGlvblxuKTogRXhwcmVzc2lvbjxUPiB7XG5cdGlmIChhbm5vdGF0aW9uRXhwcmVzc2lvbiA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIHdyYXBQcmltaXRpdmUoZGVmYXVsdFZhbHVlIGFzIFQpO1xuXHR9XG5cdGlmICghaXNDb21wbGV4QW5ub3RhdGlvbkV4cHJlc3Npb24oYW5ub3RhdGlvbkV4cHJlc3Npb24pKSB7XG5cdFx0cmV0dXJuIGNvbnN0YW50KGFubm90YXRpb25FeHByZXNzaW9uKTtcblx0fSBlbHNlIHtcblx0XHRzd2l0Y2ggKGFubm90YXRpb25FeHByZXNzaW9uLnR5cGUpIHtcblx0XHRcdGNhc2UgXCJQYXRoXCI6XG5cdFx0XHRcdHJldHVybiBiaW5kaW5nRXhwcmVzc2lvbihhbm5vdGF0aW9uRXhwcmVzc2lvbi5wYXRoLCB1bmRlZmluZWQsIHZpc2l0ZWROYXZpZ2F0aW9uUGF0aHMsIHBhdGhWaXNpdG9yKTtcblx0XHRcdGNhc2UgXCJJZlwiOlxuXHRcdFx0XHRyZXR1cm4gYW5ub3RhdGlvbklmRXhwcmVzc2lvbihhbm5vdGF0aW9uRXhwcmVzc2lvbi5JZiwgdmlzaXRlZE5hdmlnYXRpb25QYXRocywgcGF0aFZpc2l0b3IpO1xuXHRcdFx0Y2FzZSBcIk5vdFwiOlxuXHRcdFx0XHRyZXR1cm4gbm90KHBhcnNlQW5ub3RhdGlvbkNvbmRpdGlvbihhbm5vdGF0aW9uRXhwcmVzc2lvbi5Ob3QsIHZpc2l0ZWROYXZpZ2F0aW9uUGF0aHMsIHBhdGhWaXNpdG9yKSkgYXMgRXhwcmVzc2lvbjxUPjtcblx0XHRcdGNhc2UgXCJFcVwiOlxuXHRcdFx0XHRyZXR1cm4gZXF1YWwoXG5cdFx0XHRcdFx0cGFyc2VBbm5vdGF0aW9uQ29uZGl0aW9uKGFubm90YXRpb25FeHByZXNzaW9uLkVxWzBdLCB2aXNpdGVkTmF2aWdhdGlvblBhdGhzLCBwYXRoVmlzaXRvciksXG5cdFx0XHRcdFx0cGFyc2VBbm5vdGF0aW9uQ29uZGl0aW9uKGFubm90YXRpb25FeHByZXNzaW9uLkVxWzFdLCB2aXNpdGVkTmF2aWdhdGlvblBhdGhzLCBwYXRoVmlzaXRvcilcblx0XHRcdFx0KSBhcyBFeHByZXNzaW9uPFQ+O1xuXHRcdFx0Y2FzZSBcIk5lXCI6XG5cdFx0XHRcdHJldHVybiBub3RFcXVhbChcblx0XHRcdFx0XHRwYXJzZUFubm90YXRpb25Db25kaXRpb24oYW5ub3RhdGlvbkV4cHJlc3Npb24uTmVbMF0sIHZpc2l0ZWROYXZpZ2F0aW9uUGF0aHMsIHBhdGhWaXNpdG9yKSxcblx0XHRcdFx0XHRwYXJzZUFubm90YXRpb25Db25kaXRpb24oYW5ub3RhdGlvbkV4cHJlc3Npb24uTmVbMV0sIHZpc2l0ZWROYXZpZ2F0aW9uUGF0aHMsIHBhdGhWaXNpdG9yKVxuXHRcdFx0XHQpIGFzIEV4cHJlc3Npb248VD47XG5cdFx0XHRjYXNlIFwiR3RcIjpcblx0XHRcdFx0cmV0dXJuIGdyZWF0ZXJUaGFuKFxuXHRcdFx0XHRcdHBhcnNlQW5ub3RhdGlvbkNvbmRpdGlvbihhbm5vdGF0aW9uRXhwcmVzc2lvbi5HdFswXSwgdmlzaXRlZE5hdmlnYXRpb25QYXRocywgcGF0aFZpc2l0b3IpLFxuXHRcdFx0XHRcdHBhcnNlQW5ub3RhdGlvbkNvbmRpdGlvbihhbm5vdGF0aW9uRXhwcmVzc2lvbi5HdFsxXSwgdmlzaXRlZE5hdmlnYXRpb25QYXRocywgcGF0aFZpc2l0b3IpXG5cdFx0XHRcdCkgYXMgRXhwcmVzc2lvbjxUPjtcblx0XHRcdGNhc2UgXCJHZVwiOlxuXHRcdFx0XHRyZXR1cm4gZ3JlYXRlck9yRXF1YWwoXG5cdFx0XHRcdFx0cGFyc2VBbm5vdGF0aW9uQ29uZGl0aW9uKGFubm90YXRpb25FeHByZXNzaW9uLkdlWzBdLCB2aXNpdGVkTmF2aWdhdGlvblBhdGhzLCBwYXRoVmlzaXRvciksXG5cdFx0XHRcdFx0cGFyc2VBbm5vdGF0aW9uQ29uZGl0aW9uKGFubm90YXRpb25FeHByZXNzaW9uLkdlWzFdLCB2aXNpdGVkTmF2aWdhdGlvblBhdGhzLCBwYXRoVmlzaXRvcilcblx0XHRcdFx0KSBhcyBFeHByZXNzaW9uPFQ+O1xuXHRcdFx0Y2FzZSBcIkx0XCI6XG5cdFx0XHRcdHJldHVybiBsZXNzVGhhbihcblx0XHRcdFx0XHRwYXJzZUFubm90YXRpb25Db25kaXRpb24oYW5ub3RhdGlvbkV4cHJlc3Npb24uTHRbMF0sIHZpc2l0ZWROYXZpZ2F0aW9uUGF0aHMsIHBhdGhWaXNpdG9yKSxcblx0XHRcdFx0XHRwYXJzZUFubm90YXRpb25Db25kaXRpb24oYW5ub3RhdGlvbkV4cHJlc3Npb24uTHRbMV0sIHZpc2l0ZWROYXZpZ2F0aW9uUGF0aHMsIHBhdGhWaXNpdG9yKVxuXHRcdFx0XHQpIGFzIEV4cHJlc3Npb248VD47XG5cdFx0XHRjYXNlIFwiTGVcIjpcblx0XHRcdFx0cmV0dXJuIGxlc3NPckVxdWFsKFxuXHRcdFx0XHRcdHBhcnNlQW5ub3RhdGlvbkNvbmRpdGlvbihhbm5vdGF0aW9uRXhwcmVzc2lvbi5MZVswXSwgdmlzaXRlZE5hdmlnYXRpb25QYXRocywgcGF0aFZpc2l0b3IpLFxuXHRcdFx0XHRcdHBhcnNlQW5ub3RhdGlvbkNvbmRpdGlvbihhbm5vdGF0aW9uRXhwcmVzc2lvbi5MZVsxXSwgdmlzaXRlZE5hdmlnYXRpb25QYXRocywgcGF0aFZpc2l0b3IpXG5cdFx0XHRcdCkgYXMgRXhwcmVzc2lvbjxUPjtcblx0XHRcdGNhc2UgXCJPclwiOlxuXHRcdFx0XHRyZXR1cm4gb3IoXG5cdFx0XHRcdFx0Li4uKGFubm90YXRpb25FeHByZXNzaW9uLk9yLm1hcChmdW5jdGlvbihvckNvbmRpdGlvbikge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHBhcnNlQW5ub3RhdGlvbkNvbmRpdGlvbihvckNvbmRpdGlvbiwgdmlzaXRlZE5hdmlnYXRpb25QYXRocywgcGF0aFZpc2l0b3IpO1xuXHRcdFx0XHRcdH0pIGFzIEV4cHJlc3Npb248Ym9vbGVhbj5bXSlcblx0XHRcdFx0KSBhcyBFeHByZXNzaW9uPFQ+O1xuXHRcdFx0Y2FzZSBcIkFuZFwiOlxuXHRcdFx0XHRyZXR1cm4gYW5kKFxuXHRcdFx0XHRcdC4uLihhbm5vdGF0aW9uRXhwcmVzc2lvbi5BbmQubWFwKGZ1bmN0aW9uKGFuZENvbmRpdGlvbikge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHBhcnNlQW5ub3RhdGlvbkNvbmRpdGlvbihhbmRDb25kaXRpb24sIHZpc2l0ZWROYXZpZ2F0aW9uUGF0aHMsIHBhdGhWaXNpdG9yKTtcblx0XHRcdFx0XHR9KSBhcyBFeHByZXNzaW9uPGJvb2xlYW4+W10pXG5cdFx0XHRcdCkgYXMgRXhwcmVzc2lvbjxUPjtcblx0XHRcdGNhc2UgXCJBcHBseVwiOlxuXHRcdFx0XHRyZXR1cm4gYW5ub3RhdGlvbkFwcGx5RXhwcmVzc2lvbihcblx0XHRcdFx0XHRhbm5vdGF0aW9uRXhwcmVzc2lvbiBhcyBBcHBseUFubm90YXRpb25FeHByZXNzaW9uPHN0cmluZz4sXG5cdFx0XHRcdFx0dmlzaXRlZE5hdmlnYXRpb25QYXRocyxcblx0XHRcdFx0XHRwYXRoVmlzaXRvclxuXHRcdFx0XHQpIGFzIEV4cHJlc3Npb248VD47XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogUGFyc2UgdGhlIGFubm90YXRpb24gY29uZGl0aW9uIGludG8gYW4gZXhwcmVzc2lvbi5cbiAqXG4gKiBAdGVtcGxhdGUgVCBUaGUgdGFyZ2V0IHR5cGVcbiAqIEBwYXJhbSBhbm5vdGF0aW9uVmFsdWUgVGhlIGNvbmRpdGlvbiBvciB2YWx1ZSBmcm9tIHRoZSBhbm5vdGF0aW9uXG4gKiBAcGFyYW0gdmlzaXRlZE5hdmlnYXRpb25QYXRocyBUaGUgcGF0aCBmcm9tIHRoZSByb290IGVudGl0eSBzZXRcbiAqIEBwYXJhbSBwYXRoVmlzaXRvciBBIGZ1bmN0aW9uIHRvIG1vZGlmeSB0aGUgcmVzdWx0aW5nIHBhdGhcbiAqIEByZXR1cm5zIHtFeHByZXNzaW9uPFQ+fSBBbiBlcXVpdmFsZW50IGV4cHJlc3Npb25cbiAqL1xuZnVuY3Rpb24gcGFyc2VBbm5vdGF0aW9uQ29uZGl0aW9uPFQgZXh0ZW5kcyBQcmltaXRpdmVUeXBlPihcblx0YW5ub3RhdGlvblZhbHVlOiBDb25kaXRpb25hbENoZWNrT3JWYWx1ZSxcblx0dmlzaXRlZE5hdmlnYXRpb25QYXRoczogc3RyaW5nW10gPSBbXSxcblx0cGF0aFZpc2l0b3I/OiBGdW5jdGlvblxuKTogRXhwcmVzc2lvbjxUPiB7XG5cdGlmIChhbm5vdGF0aW9uVmFsdWUgPT09IG51bGwgfHwgdHlwZW9mIGFubm90YXRpb25WYWx1ZSAhPT0gXCJvYmplY3RcIikge1xuXHRcdHJldHVybiBjb25zdGFudChhbm5vdGF0aW9uVmFsdWUgYXMgVCk7XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvblZhbHVlLmhhc093blByb3BlcnR5KFwiJE9yXCIpKSB7XG5cdFx0cmV0dXJuIG9yKFxuXHRcdFx0Li4uKCgoYW5ub3RhdGlvblZhbHVlIGFzIE9yQ29uZGl0aW9uYWxFeHByZXNzaW9uKS4kT3IubWFwKGZ1bmN0aW9uKG9yQ29uZGl0aW9uKSB7XG5cdFx0XHRcdHJldHVybiBwYXJzZUFubm90YXRpb25Db25kaXRpb24ob3JDb25kaXRpb24sIHZpc2l0ZWROYXZpZ2F0aW9uUGF0aHMsIHBhdGhWaXNpdG9yKTtcblx0XHRcdH0pIGFzIHVua25vd24pIGFzIEV4cHJlc3Npb248Ym9vbGVhbj5bXSlcblx0XHQpIGFzIEV4cHJlc3Npb248VD47XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvblZhbHVlLmhhc093blByb3BlcnR5KFwiJEFuZFwiKSkge1xuXHRcdHJldHVybiBhbmQoXG5cdFx0XHQuLi4oKChhbm5vdGF0aW9uVmFsdWUgYXMgQW5kQ29uZGl0aW9uYWxFeHByZXNzaW9uKS4kQW5kLm1hcChmdW5jdGlvbihhbmRDb25kaXRpb24pIHtcblx0XHRcdFx0cmV0dXJuIHBhcnNlQW5ub3RhdGlvbkNvbmRpdGlvbihhbmRDb25kaXRpb24sIHZpc2l0ZWROYXZpZ2F0aW9uUGF0aHMsIHBhdGhWaXNpdG9yKTtcblx0XHRcdH0pIGFzIHVua25vd24pIGFzIEV4cHJlc3Npb248Ym9vbGVhbj5bXSlcblx0XHQpIGFzIEV4cHJlc3Npb248VD47XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvblZhbHVlLmhhc093blByb3BlcnR5KFwiJE5vdFwiKSkge1xuXHRcdHJldHVybiBub3QoXG5cdFx0XHRwYXJzZUFubm90YXRpb25Db25kaXRpb24oKGFubm90YXRpb25WYWx1ZSBhcyBOb3RDb25kaXRpb25hbEV4cHJlc3Npb24pLiROb3RbMF0sIHZpc2l0ZWROYXZpZ2F0aW9uUGF0aHMsIHBhdGhWaXNpdG9yKVxuXHRcdCkgYXMgRXhwcmVzc2lvbjxUPjtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uVmFsdWUuaGFzT3duUHJvcGVydHkoXCIkRXFcIikpIHtcblx0XHRyZXR1cm4gZXF1YWwoXG5cdFx0XHRwYXJzZUFubm90YXRpb25Db25kaXRpb24oKGFubm90YXRpb25WYWx1ZSBhcyBFcUNvbmRpdGlvbmFsRXhwcmVzc2lvbikuJEVxWzBdLCB2aXNpdGVkTmF2aWdhdGlvblBhdGhzLCBwYXRoVmlzaXRvciksXG5cdFx0XHRwYXJzZUFubm90YXRpb25Db25kaXRpb24oKGFubm90YXRpb25WYWx1ZSBhcyBFcUNvbmRpdGlvbmFsRXhwcmVzc2lvbikuJEVxWzFdLCB2aXNpdGVkTmF2aWdhdGlvblBhdGhzLCBwYXRoVmlzaXRvcilcblx0XHQpIGFzIEV4cHJlc3Npb248VD47XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvblZhbHVlLmhhc093blByb3BlcnR5KFwiJE5lXCIpKSB7XG5cdFx0cmV0dXJuIG5vdEVxdWFsKFxuXHRcdFx0cGFyc2VBbm5vdGF0aW9uQ29uZGl0aW9uKChhbm5vdGF0aW9uVmFsdWUgYXMgTmVDb25kaXRpb25hbEV4cHJlc3Npb24pLiROZVswXSwgdmlzaXRlZE5hdmlnYXRpb25QYXRocywgcGF0aFZpc2l0b3IpLFxuXHRcdFx0cGFyc2VBbm5vdGF0aW9uQ29uZGl0aW9uKChhbm5vdGF0aW9uVmFsdWUgYXMgTmVDb25kaXRpb25hbEV4cHJlc3Npb24pLiROZVsxXSwgdmlzaXRlZE5hdmlnYXRpb25QYXRocywgcGF0aFZpc2l0b3IpXG5cdFx0KSBhcyBFeHByZXNzaW9uPFQ+O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25WYWx1ZS5oYXNPd25Qcm9wZXJ0eShcIiRHdFwiKSkge1xuXHRcdHJldHVybiBncmVhdGVyVGhhbihcblx0XHRcdHBhcnNlQW5ub3RhdGlvbkNvbmRpdGlvbigoYW5ub3RhdGlvblZhbHVlIGFzIEd0Q29uZGl0aW9uYWxFeHByZXNzaW9uKS4kR3RbMF0sIHZpc2l0ZWROYXZpZ2F0aW9uUGF0aHMsIHBhdGhWaXNpdG9yKSxcblx0XHRcdHBhcnNlQW5ub3RhdGlvbkNvbmRpdGlvbigoYW5ub3RhdGlvblZhbHVlIGFzIEd0Q29uZGl0aW9uYWxFeHByZXNzaW9uKS4kR3RbMV0sIHZpc2l0ZWROYXZpZ2F0aW9uUGF0aHMsIHBhdGhWaXNpdG9yKVxuXHRcdCkgYXMgRXhwcmVzc2lvbjxUPjtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uVmFsdWUuaGFzT3duUHJvcGVydHkoXCIkR2VcIikpIHtcblx0XHRyZXR1cm4gZ3JlYXRlck9yRXF1YWwoXG5cdFx0XHRwYXJzZUFubm90YXRpb25Db25kaXRpb24oKGFubm90YXRpb25WYWx1ZSBhcyBHZUNvbmRpdGlvbmFsRXhwcmVzc2lvbikuJEdlWzBdLCB2aXNpdGVkTmF2aWdhdGlvblBhdGhzLCBwYXRoVmlzaXRvciksXG5cdFx0XHRwYXJzZUFubm90YXRpb25Db25kaXRpb24oKGFubm90YXRpb25WYWx1ZSBhcyBHZUNvbmRpdGlvbmFsRXhwcmVzc2lvbikuJEdlWzFdLCB2aXNpdGVkTmF2aWdhdGlvblBhdGhzLCBwYXRoVmlzaXRvcilcblx0XHQpIGFzIEV4cHJlc3Npb248VD47XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvblZhbHVlLmhhc093blByb3BlcnR5KFwiJEx0XCIpKSB7XG5cdFx0cmV0dXJuIGxlc3NUaGFuKFxuXHRcdFx0cGFyc2VBbm5vdGF0aW9uQ29uZGl0aW9uKChhbm5vdGF0aW9uVmFsdWUgYXMgTHRDb25kaXRpb25hbEV4cHJlc3Npb24pLiRMdFswXSwgdmlzaXRlZE5hdmlnYXRpb25QYXRocywgcGF0aFZpc2l0b3IpLFxuXHRcdFx0cGFyc2VBbm5vdGF0aW9uQ29uZGl0aW9uKChhbm5vdGF0aW9uVmFsdWUgYXMgTHRDb25kaXRpb25hbEV4cHJlc3Npb24pLiRMdFsxXSwgdmlzaXRlZE5hdmlnYXRpb25QYXRocywgcGF0aFZpc2l0b3IpXG5cdFx0KSBhcyBFeHByZXNzaW9uPFQ+O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25WYWx1ZS5oYXNPd25Qcm9wZXJ0eShcIiRMZVwiKSkge1xuXHRcdHJldHVybiBsZXNzT3JFcXVhbChcblx0XHRcdHBhcnNlQW5ub3RhdGlvbkNvbmRpdGlvbigoYW5ub3RhdGlvblZhbHVlIGFzIExlQ29uZGl0aW9uYWxFeHByZXNzaW9uKS4kTGVbMF0sIHZpc2l0ZWROYXZpZ2F0aW9uUGF0aHMsIHBhdGhWaXNpdG9yKSxcblx0XHRcdHBhcnNlQW5ub3RhdGlvbkNvbmRpdGlvbigoYW5ub3RhdGlvblZhbHVlIGFzIExlQ29uZGl0aW9uYWxFeHByZXNzaW9uKS4kTGVbMV0sIHZpc2l0ZWROYXZpZ2F0aW9uUGF0aHMsIHBhdGhWaXNpdG9yKVxuXHRcdCkgYXMgRXhwcmVzc2lvbjxUPjtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uVmFsdWUuaGFzT3duUHJvcGVydHkoXCIkUGF0aFwiKSkge1xuXHRcdHJldHVybiBiaW5kaW5nRXhwcmVzc2lvbigoYW5ub3RhdGlvblZhbHVlIGFzIFBhdGhDb25kaXRpb25FeHByZXNzaW9uPFQ+KS4kUGF0aCwgdW5kZWZpbmVkLCB2aXNpdGVkTmF2aWdhdGlvblBhdGhzLCBwYXRoVmlzaXRvcik7XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvblZhbHVlLmhhc093blByb3BlcnR5KFwiJEFwcGx5XCIpKSB7XG5cdFx0cmV0dXJuIGFubm90YXRpb25FeHByZXNzaW9uKFxuXHRcdFx0e1xuXHRcdFx0XHR0eXBlOiBcIkFwcGx5XCIsXG5cdFx0XHRcdEZ1bmN0aW9uOiAoYW5ub3RhdGlvblZhbHVlIGFzIGFueSkuJEZ1bmN0aW9uLFxuXHRcdFx0XHRBcHBseTogKGFubm90YXRpb25WYWx1ZSBhcyBhbnkpLiRBcHBseVxuXHRcdFx0fSBhcyBULFxuXHRcdFx0dmlzaXRlZE5hdmlnYXRpb25QYXRocyxcblx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdHBhdGhWaXNpdG9yXG5cdFx0KTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uVmFsdWUuaGFzT3duUHJvcGVydHkoXCIkSWZcIikpIHtcblx0XHRyZXR1cm4gYW5ub3RhdGlvbkV4cHJlc3Npb24oXG5cdFx0XHR7XG5cdFx0XHRcdHR5cGU6IFwiSWZcIixcblx0XHRcdFx0SWY6IChhbm5vdGF0aW9uVmFsdWUgYXMgYW55KS4kSWZcblx0XHRcdH0gYXMgVCxcblx0XHRcdHZpc2l0ZWROYXZpZ2F0aW9uUGF0aHMsXG5cdFx0XHR1bmRlZmluZWQsXG5cdFx0XHRwYXRoVmlzaXRvclxuXHRcdCk7XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvblZhbHVlLmhhc093blByb3BlcnR5KFwiJEVudW1NZW1iZXJcIikpIHtcblx0XHRyZXR1cm4gY29uc3RhbnQocmVzb2x2ZUVudW1WYWx1ZSgoYW5ub3RhdGlvblZhbHVlIGFzIGFueSkuJEVudW1NZW1iZXIpIGFzIFQpO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBjb25zdGFudChmYWxzZSBhcyBUKTtcblx0fVxufVxuXG4vKipcbiAqIFByb2Nlc3MgdGhlIHtJZkFubm90YXRpb25FeHByZXNzaW9uVmFsdWV9IGludG8gYW4gZXhwcmVzc2lvbi5cbiAqXG4gKiBAdGVtcGxhdGUgVCBUaGUgdGFyZ2V0IHR5cGVcbiAqIEBwYXJhbSBhbm5vdGF0aW9uSWZFeHByZXNzaW9uIEFuIElmIGV4cHJlc3Npb24gcmV0dXJuaW5nIHRoZSB0eXBlIFRcbiAqIEBwYXJhbSB2aXNpdGVkTmF2aWdhdGlvblBhdGhzIFRoZSBwYXRoIGZyb20gdGhlIHJvb3QgZW50aXR5IHNldFxuICogQHBhcmFtIHBhdGhWaXNpdG9yIEEgZnVuY3Rpb24gdG8gbW9kaWZ5IHRoZSByZXN1bHRpbmcgcGF0aFxuICogQHJldHVybnMge0V4cHJlc3Npb248VD59IFRoZSBlcXVpdmFsZW50IGlmRWxzZSBleHByZXNzaW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhbm5vdGF0aW9uSWZFeHByZXNzaW9uPFQgZXh0ZW5kcyBQcmltaXRpdmVUeXBlPihcblx0YW5ub3RhdGlvbklmRXhwcmVzc2lvbjogSWZBbm5vdGF0aW9uRXhwcmVzc2lvblZhbHVlPFQ+LFxuXHR2aXNpdGVkTmF2aWdhdGlvblBhdGhzOiBzdHJpbmdbXSA9IFtdLFxuXHRwYXRoVmlzaXRvcj86IEZ1bmN0aW9uXG4pOiBFeHByZXNzaW9uPFQ+IHtcblx0cmV0dXJuIGlmRWxzZShcblx0XHRwYXJzZUFubm90YXRpb25Db25kaXRpb24oYW5ub3RhdGlvbklmRXhwcmVzc2lvblswXSwgdmlzaXRlZE5hdmlnYXRpb25QYXRocywgcGF0aFZpc2l0b3IpLFxuXHRcdHBhcnNlQW5ub3RhdGlvbkNvbmRpdGlvbihhbm5vdGF0aW9uSWZFeHByZXNzaW9uWzFdIGFzIGFueSwgdmlzaXRlZE5hdmlnYXRpb25QYXRocywgcGF0aFZpc2l0b3IpLFxuXHRcdHBhcnNlQW5ub3RhdGlvbkNvbmRpdGlvbihhbm5vdGF0aW9uSWZFeHByZXNzaW9uWzJdIGFzIGFueSwgdmlzaXRlZE5hdmlnYXRpb25QYXRocywgcGF0aFZpc2l0b3IpXG5cdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbm5vdGF0aW9uQXBwbHlFeHByZXNzaW9uKFxuXHRhbm5vdGF0aW9uQXBwbHlFeHByZXNzaW9uOiBBcHBseUFubm90YXRpb25FeHByZXNzaW9uPHN0cmluZz4sXG5cdHZpc2l0ZWROYXZpZ2F0aW9uUGF0aHM6IHN0cmluZ1tdID0gW10sXG5cdHBhdGhWaXNpdG9yPzogRnVuY3Rpb25cbik6IEV4cHJlc3Npb248c3RyaW5nPiB7XG5cdHN3aXRjaCAoYW5ub3RhdGlvbkFwcGx5RXhwcmVzc2lvbi5GdW5jdGlvbikge1xuXHRcdGNhc2UgXCJvZGF0YS5jb25jYXRcIjpcblx0XHRcdHJldHVybiBjb25jYXQoXG5cdFx0XHRcdC4uLmFubm90YXRpb25BcHBseUV4cHJlc3Npb24uQXBwbHkubWFwKChhcHBseVBhcmFtOiBhbnkpID0+IHtcblx0XHRcdFx0XHRsZXQgYXBwbHlQYXJhbUNvbnZlcnRlZCA9IGFwcGx5UGFyYW07XG5cdFx0XHRcdFx0aWYgKGFwcGx5UGFyYW0uaGFzT3duUHJvcGVydHkoXCIkUGF0aFwiKSkge1xuXHRcdFx0XHRcdFx0YXBwbHlQYXJhbUNvbnZlcnRlZCA9IHtcblx0XHRcdFx0XHRcdFx0dHlwZTogXCJQYXRoXCIsXG5cdFx0XHRcdFx0XHRcdHBhdGg6IGFwcGx5UGFyYW0uJFBhdGhcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChhcHBseVBhcmFtLmhhc093blByb3BlcnR5KFwiJElmXCIpKSB7XG5cdFx0XHRcdFx0XHRhcHBseVBhcmFtQ29udmVydGVkID0ge1xuXHRcdFx0XHRcdFx0XHR0eXBlOiBcIklmXCIsXG5cdFx0XHRcdFx0XHRcdElmOiBhcHBseVBhcmFtLiRJZlxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKGFwcGx5UGFyYW0uaGFzT3duUHJvcGVydHkoXCIkQXBwbHlcIikpIHtcblx0XHRcdFx0XHRcdGFwcGx5UGFyYW1Db252ZXJ0ZWQgPSB7XG5cdFx0XHRcdFx0XHRcdHR5cGU6IFwiQXBwbHlcIixcblx0XHRcdFx0XHRcdFx0RnVuY3Rpb246IGFwcGx5UGFyYW0uJEZ1bmN0aW9uLFxuXHRcdFx0XHRcdFx0XHRBcHBseTogYXBwbHlQYXJhbS4kQXBwbHlcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiBhbm5vdGF0aW9uRXhwcmVzc2lvbihhcHBseVBhcmFtQ29udmVydGVkLCB2aXNpdGVkTmF2aWdhdGlvblBhdGhzLCB1bmRlZmluZWQsIHBhdGhWaXNpdG9yKTtcblx0XHRcdFx0fSlcblx0XHRcdCk7XG5cdFx0XHRicmVhaztcblx0fVxufVxuXG4vKipcbiAqIEdlbmVyaWMgaGVscGVyIGZvciB0aGUgY29tcGFyaXNvbiBvcGVyYXRpb25zIChlcXVhbCwgbm90RXF1YWwsIC4uLikuXG4gKlxuICogQHRlbXBsYXRlIFQgVGhlIHRhcmdldCB0eXBlXG4gKiBAcGFyYW0gb3BlcmF0b3IgVGhlIG9wZXJhdG9yIHRvIGFwcGx5XG4gKiBAcGFyYW0gbGVmdE9wZXJhbmQgVGhlIG9wZXJhbmQgb24gdGhlIGxlZnQgc2lkZSBvZiB0aGUgb3BlcmF0b3JcbiAqIEBwYXJhbSByaWdodE9wZXJhbmQgVGhlIG9wZXJhbmQgb24gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIG9wZXJhdG9yXG4gKiBAcmV0dXJucyB7RXhwcmVzc2lvbjxib29sZWFuPn0gQW4gZXhwcmVzc2lvbiByZXByZXNlbnRpbmcgdGhlIGNvbXBhcmlzb25cbiAqL1xuZnVuY3Rpb24gY29tcGFyaXNvbjxUIGV4dGVuZHMgUHJpbWl0aXZlVHlwZT4oXG5cdG9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IsXG5cdGxlZnRPcGVyYW5kOiBFeHByZXNzaW9uT3JQcmltaXRpdmU8VD4sXG5cdHJpZ2h0T3BlcmFuZDogRXhwcmVzc2lvbk9yUHJpbWl0aXZlPFQ+XG4pOiBFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0Y29uc3QgbGVmdEV4cHJlc3Npb24gPSB3cmFwUHJpbWl0aXZlKGxlZnRPcGVyYW5kKTtcblx0Y29uc3QgcmlnaHRFeHByZXNzaW9uID0gd3JhcFByaW1pdGl2ZShyaWdodE9wZXJhbmQpO1xuXHRpZiAoaGFzVW5yZXNvbHZlYWJsZUV4cHJlc3Npb24obGVmdEV4cHJlc3Npb24sIHJpZ2h0RXhwcmVzc2lvbikpIHtcblx0XHRyZXR1cm4gdW5yZXNvbHZlYWJsZUV4cHJlc3Npb247XG5cdH1cblx0aWYgKGlzQ29uc3RhbnQobGVmdEV4cHJlc3Npb24pICYmIGlzQ29uc3RhbnQocmlnaHRFeHByZXNzaW9uKSkge1xuXHRcdGlmIChsZWZ0RXhwcmVzc2lvbi52YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHJpZ2h0RXhwcmVzc2lvbi52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRyZXR1cm4gY29uc3RhbnQobGVmdEV4cHJlc3Npb24udmFsdWUgPT09IHJpZ2h0RXhwcmVzc2lvbi52YWx1ZSk7XG5cdFx0fVxuXG5cdFx0c3dpdGNoIChvcGVyYXRvcikge1xuXHRcdFx0Y2FzZSBcIiE9PVwiOlxuXHRcdFx0XHRyZXR1cm4gY29uc3RhbnQobGVmdEV4cHJlc3Npb24udmFsdWUgIT09IHJpZ2h0RXhwcmVzc2lvbi52YWx1ZSk7XG5cdFx0XHRjYXNlIFwiPFwiOlxuXHRcdFx0XHRyZXR1cm4gY29uc3RhbnQobGVmdEV4cHJlc3Npb24udmFsdWUgPCByaWdodEV4cHJlc3Npb24udmFsdWUpO1xuXHRcdFx0Y2FzZSBcIjw9XCI6XG5cdFx0XHRcdHJldHVybiBjb25zdGFudChsZWZ0RXhwcmVzc2lvbi52YWx1ZSA8PSByaWdodEV4cHJlc3Npb24udmFsdWUpO1xuXHRcdFx0Y2FzZSBcIj5cIjpcblx0XHRcdFx0cmV0dXJuIGNvbnN0YW50KGxlZnRFeHByZXNzaW9uLnZhbHVlID4gcmlnaHRFeHByZXNzaW9uLnZhbHVlKTtcblx0XHRcdGNhc2UgXCI+PVwiOlxuXHRcdFx0XHRyZXR1cm4gY29uc3RhbnQobGVmdEV4cHJlc3Npb24udmFsdWUgPj0gcmlnaHRFeHByZXNzaW9uLnZhbHVlKTtcblx0XHRcdGNhc2UgXCI9PT1cIjpcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHJldHVybiBjb25zdGFudChsZWZ0RXhwcmVzc2lvbi52YWx1ZSA9PT0gcmlnaHRFeHByZXNzaW9uLnZhbHVlKTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdF90eXBlOiBcIkNvbXBhcmlzb25cIixcblx0XHRcdG9wZXJhdG9yOiBvcGVyYXRvcixcblx0XHRcdG9wZXJhbmQxOiBsZWZ0RXhwcmVzc2lvbixcblx0XHRcdG9wZXJhbmQyOiByaWdodEV4cHJlc3Npb25cblx0XHR9O1xuXHR9XG59XG5cbi8qKlxuICogQ29tcGFyaXNvbjogXCJlcXVhbFwiICg9PT0pLlxuICpcbiAqIEB0ZW1wbGF0ZSBUIFRoZSB0YXJnZXQgdHlwZVxuICogQHBhcmFtIGxlZnRPcGVyYW5kIFRoZSBvcGVyYW5kIG9uIHRoZSBsZWZ0IHNpZGVcbiAqIEBwYXJhbSByaWdodE9wZXJhbmQgVGhlIG9wZXJhbmQgb24gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGNvbXBhcmlzb25cbiAqIEByZXR1cm5zIHtFeHByZXNzaW9uPGJvb2xlYW4+fSBBbiBleHByZXNzaW9uIHJlcHJlc2VudGluZyB0aGUgY29tcGFyaXNvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZXF1YWw8VCBleHRlbmRzIFByaW1pdGl2ZVR5cGU+KFxuXHRsZWZ0T3BlcmFuZDogRXhwcmVzc2lvbk9yUHJpbWl0aXZlPFQ+LFxuXHRyaWdodE9wZXJhbmQ6IEV4cHJlc3Npb25PclByaW1pdGl2ZTxUPlxuKTogRXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGNvbnN0IGxlZnRFeHByZXNzaW9uID0gd3JhcFByaW1pdGl2ZShsZWZ0T3BlcmFuZCk7XG5cdGNvbnN0IHJpZ2h0RXhwcmVzc2lvbiA9IHdyYXBQcmltaXRpdmUocmlnaHRPcGVyYW5kKTtcblx0aWYgKGhhc1VucmVzb2x2ZWFibGVFeHByZXNzaW9uKGxlZnRFeHByZXNzaW9uLCByaWdodEV4cHJlc3Npb24pKSB7XG5cdFx0cmV0dXJuIHVucmVzb2x2ZWFibGVFeHByZXNzaW9uO1xuXHR9XG5cdGlmIChfY2hlY2tFeHByZXNzaW9uc0FyZUVxdWFsKGxlZnRFeHByZXNzaW9uLCByaWdodEV4cHJlc3Npb24pKSB7XG5cdFx0cmV0dXJuIGNvbnN0YW50KHRydWUpO1xuXHR9XG5cblx0Ly8gKChhID09PSBjKSA9PT0gdHJ1ZSkgPT4gKGEgPT09IGMpXG5cdGlmIChsZWZ0RXhwcmVzc2lvbi5fdHlwZSA9PT0gXCJDb21wYXJpc29uXCIgJiYgaXNDb25zdGFudChyaWdodEV4cHJlc3Npb24pICYmIHJpZ2h0RXhwcmVzc2lvbi52YWx1ZSA9PT0gdHJ1ZSkge1xuXHRcdHJldHVybiBsZWZ0RXhwcmVzc2lvbjtcblx0fSBlbHNlIGlmIChsZWZ0RXhwcmVzc2lvbi5fdHlwZSA9PT0gXCJDb21wYXJpc29uXCIgJiYgaXNDb25zdGFudChyaWdodEV4cHJlc3Npb24pICYmIHJpZ2h0RXhwcmVzc2lvbi52YWx1ZSA9PT0gdHJ1ZSkge1xuXHRcdC8vICgoYSA9PT0gYykgPT09IGZhbHNlKSA9PiAhKGEgPT09IGMpXG5cdFx0cmV0dXJuIG5vdChsZWZ0RXhwcmVzc2lvbik7XG5cdH0gZWxzZSBpZiAobGVmdEV4cHJlc3Npb24uX3R5cGUgPT09IFwiSWZFbHNlXCIgJiYgX2NoZWNrRXhwcmVzc2lvbnNBcmVFcXVhbChsZWZ0RXhwcmVzc2lvbi5vblRydWUsIHJpZ2h0RXhwcmVzc2lvbikpIHtcblx0XHQvLyAoaWYoeHh4eCkgeyBhYWEgfSBlbHNlIHsgYmJiIH0gKSA9PT0gYWFhIClcblx0XHRyZXR1cm4gb3IobGVmdEV4cHJlc3Npb24uY29uZGl0aW9uLCBlcXVhbChsZWZ0RXhwcmVzc2lvbi5vbkZhbHNlLCByaWdodEV4cHJlc3Npb24pKTtcblx0fSBlbHNlIGlmIChsZWZ0RXhwcmVzc2lvbi5fdHlwZSA9PT0gXCJJZkVsc2VcIiAmJiBfY2hlY2tFeHByZXNzaW9uc0FyZUVxdWFsKGxlZnRFeHByZXNzaW9uLm9uRmFsc2UsIHJpZ2h0RXhwcmVzc2lvbikpIHtcblx0XHRyZXR1cm4gb3Iobm90KGxlZnRFeHByZXNzaW9uLmNvbmRpdGlvbiksIGVxdWFsKGxlZnRFeHByZXNzaW9uLm9uVHJ1ZSwgcmlnaHRFeHByZXNzaW9uKSk7XG5cdH0gZWxzZSBpZiAoXG5cdFx0bGVmdEV4cHJlc3Npb24uX3R5cGUgPT09IFwiSWZFbHNlXCIgJiZcblx0XHRpc0NvbnN0YW50KGxlZnRFeHByZXNzaW9uLm9uVHJ1ZSkgJiZcblx0XHRpc0NvbnN0YW50KHJpZ2h0RXhwcmVzc2lvbikgJiZcblx0XHRpc0NvbnN0YW50KGxlZnRFeHByZXNzaW9uLm9uRmFsc2UpICYmXG5cdFx0IV9jaGVja0V4cHJlc3Npb25zQXJlRXF1YWwobGVmdEV4cHJlc3Npb24ub25UcnVlLCByaWdodEV4cHJlc3Npb24pICYmXG5cdFx0IV9jaGVja0V4cHJlc3Npb25zQXJlRXF1YWwobGVmdEV4cHJlc3Npb24ub25GYWxzZSwgcmlnaHRFeHByZXNzaW9uKVxuXHQpIHtcblx0XHRyZXR1cm4gY29uc3RhbnQoZmFsc2UpO1xuXHR9XG5cblx0cmV0dXJuIGNvbXBhcmlzb24oXCI9PT1cIiwgbGVmdEV4cHJlc3Npb24sIHJpZ2h0RXhwcmVzc2lvbik7XG59XG5cbi8qKlxuICogQ29tcGFyaXNvbjogXCJub3QgZXF1YWxcIiAoIT09KS5cbiAqXG4gKiBAdGVtcGxhdGUgVCBUaGUgdGFyZ2V0IHR5cGVcbiAqIEBwYXJhbSBsZWZ0T3BlcmFuZCBUaGUgb3BlcmFuZCBvbiB0aGUgbGVmdCBzaWRlXG4gKiBAcGFyYW0gcmlnaHRPcGVyYW5kIFRoZSBvcGVyYW5kIG9uIHRoZSByaWdodCBzaWRlIG9mIHRoZSBjb21wYXJpc29uXG4gKiBAcmV0dXJucyB7RXhwcmVzc2lvbjxib29sZWFuPn0gQW4gZXhwcmVzc2lvbiByZXByZXNlbnRpbmcgdGhlIGNvbXBhcmlzb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vdEVxdWFsPFQgZXh0ZW5kcyBQcmltaXRpdmVUeXBlPihcblx0bGVmdE9wZXJhbmQ6IEV4cHJlc3Npb25PclByaW1pdGl2ZTxUPixcblx0cmlnaHRPcGVyYW5kOiBFeHByZXNzaW9uT3JQcmltaXRpdmU8VD5cbik6IEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRjb25zdCBsZWZ0RXhwcmVzc2lvbiA9IHdyYXBQcmltaXRpdmUobGVmdE9wZXJhbmQpO1xuXHRjb25zdCByaWdodEV4cHJlc3Npb24gPSB3cmFwUHJpbWl0aXZlKHJpZ2h0T3BlcmFuZCk7XG5cblx0aWYgKF9jaGVja0V4cHJlc3Npb25zQXJlRXF1YWwobGVmdEV4cHJlc3Npb24sIHJpZ2h0RXhwcmVzc2lvbikpIHtcblx0XHRyZXR1cm4gY29uc3RhbnQoZmFsc2UpO1xuXHR9XG5cblx0Ly8gKChhID09PSBjKSAhPT0gdHJ1ZSkgPT4gIShhID09PSBjKVxuXHRpZiAobGVmdEV4cHJlc3Npb24uX3R5cGUgPT09IFwiQ29tcGFyaXNvblwiICYmIGlzQ29uc3RhbnQocmlnaHRFeHByZXNzaW9uKSAmJiByaWdodEV4cHJlc3Npb24udmFsdWUgPT09IHRydWUpIHtcblx0XHRyZXR1cm4gbm90KGxlZnRFeHByZXNzaW9uKTtcblx0fSBlbHNlIGlmIChsZWZ0RXhwcmVzc2lvbi5fdHlwZSA9PT0gXCJDb21wYXJpc29uXCIgJiYgaXNDb25zdGFudChyaWdodEV4cHJlc3Npb24pICYmIHJpZ2h0RXhwcmVzc2lvbi52YWx1ZSA9PT0gdHJ1ZSkge1xuXHRcdC8vICgoYSA9PT0gYykgIT09IGZhbHNlKSA9PiAoYSA9PT0gYylcblx0XHRyZXR1cm4gbGVmdEV4cHJlc3Npb247XG5cdH0gZWxzZSBpZiAobGVmdEV4cHJlc3Npb24uX3R5cGUgPT09IFwiSWZFbHNlXCIgJiYgX2NoZWNrRXhwcmVzc2lvbnNBcmVFcXVhbChsZWZ0RXhwcmVzc2lvbi5vblRydWUsIHJpZ2h0RXhwcmVzc2lvbikpIHtcblx0XHRyZXR1cm4gYW5kKG5vdChsZWZ0RXhwcmVzc2lvbi5jb25kaXRpb24pLCBub3RFcXVhbChsZWZ0RXhwcmVzc2lvbi5vbkZhbHNlLCByaWdodEV4cHJlc3Npb24pKTtcblx0fSBlbHNlIGlmIChsZWZ0RXhwcmVzc2lvbi5fdHlwZSA9PT0gXCJJZkVsc2VcIiAmJiBfY2hlY2tFeHByZXNzaW9uc0FyZUVxdWFsKGxlZnRFeHByZXNzaW9uLm9uRmFsc2UsIHJpZ2h0RXhwcmVzc2lvbikpIHtcblx0XHRyZXR1cm4gYW5kKGxlZnRFeHByZXNzaW9uLmNvbmRpdGlvbiwgbm90RXF1YWwobGVmdEV4cHJlc3Npb24ub25UcnVlLCByaWdodEV4cHJlc3Npb24pKTtcblx0fSBlbHNlIGlmIChcblx0XHRsZWZ0RXhwcmVzc2lvbi5fdHlwZSA9PT0gXCJJZkVsc2VcIiAmJlxuXHRcdGlzQ29uc3RhbnQobGVmdEV4cHJlc3Npb24ub25UcnVlKSAmJlxuXHRcdGlzQ29uc3RhbnQocmlnaHRFeHByZXNzaW9uKSAmJlxuXHRcdGlzQ29uc3RhbnQobGVmdEV4cHJlc3Npb24ub25GYWxzZSkgJiZcblx0XHQhX2NoZWNrRXhwcmVzc2lvbnNBcmVFcXVhbChsZWZ0RXhwcmVzc2lvbi5vblRydWUsIHJpZ2h0RXhwcmVzc2lvbikgJiZcblx0XHQhX2NoZWNrRXhwcmVzc2lvbnNBcmVFcXVhbChsZWZ0RXhwcmVzc2lvbi5vbkZhbHNlLCByaWdodEV4cHJlc3Npb24pXG5cdCkge1xuXHRcdC8vIElmIHRoZSBsZWZ0IGV4cHJlc3Npb24gaXMgYW4gaWYgZWxzZSB3aGVyZSBib3RoIG9uVHJ1ZSBhbmQgb25GYWxzZSBhcmUgbm90IGVxdWFscyB0byB0aGUgcmlnaHQgZXhwcmVzc2lvbiAtPiBzaW1wbGlmeSBhcyB0cnVlXG5cdFx0cmV0dXJuIGNvbnN0YW50KHRydWUpO1xuXHR9XG5cblx0cmV0dXJuIGNvbXBhcmlzb24oXCIhPT1cIiwgbGVmdEV4cHJlc3Npb24sIHJpZ2h0RXhwcmVzc2lvbik7XG59XG5cbi8qKlxuICogQ29tcGFyaXNvbjogXCJncmVhdGVyIG9yIGVxdWFsXCIgKD49KS5cbiAqXG4gKiBAdGVtcGxhdGUgVCBUaGUgdGFyZ2V0IHR5cGVcbiAqIEBwYXJhbSBsZWZ0T3BlcmFuZCBUaGUgb3BlcmFuZCBvbiB0aGUgbGVmdCBzaWRlXG4gKiBAcGFyYW0gcmlnaHRPcGVyYW5kIFRoZSBvcGVyYW5kIG9uIHRoZSByaWdodCBzaWRlIG9mIHRoZSBjb21wYXJpc29uXG4gKiBAcmV0dXJucyB7RXhwcmVzc2lvbjxib29sZWFuPn0gQW4gZXhwcmVzc2lvbiByZXByZXNlbnRpbmcgdGhlIGNvbXBhcmlzb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdyZWF0ZXJPckVxdWFsPFQgZXh0ZW5kcyBQcmltaXRpdmVUeXBlPihcblx0bGVmdE9wZXJhbmQ6IEV4cHJlc3Npb25PclByaW1pdGl2ZTxUPixcblx0cmlnaHRPcGVyYW5kOiBFeHByZXNzaW9uT3JQcmltaXRpdmU8VD5cbik6IEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRyZXR1cm4gY29tcGFyaXNvbihcIj49XCIsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpO1xufVxuXG4vKipcbiAqIENvbXBhcmlzb246IFwiZ3JlYXRlciB0aGFuXCIgKD4pLlxuICpcbiAqIEB0ZW1wbGF0ZSBUIFRoZSB0YXJnZXQgdHlwZVxuICogQHBhcmFtIGxlZnRPcGVyYW5kIFRoZSBvcGVyYW5kIG9uIHRoZSBsZWZ0IHNpZGVcbiAqIEBwYXJhbSByaWdodE9wZXJhbmQgVGhlIG9wZXJhbmQgb24gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGNvbXBhcmlzb25cbiAqIEByZXR1cm5zIHtFeHByZXNzaW9uPGJvb2xlYW4+fSBBbiBleHByZXNzaW9uIHJlcHJlc2VudGluZyB0aGUgY29tcGFyaXNvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3JlYXRlclRoYW48VCBleHRlbmRzIFByaW1pdGl2ZVR5cGU+KFxuXHRsZWZ0T3BlcmFuZDogRXhwcmVzc2lvbk9yUHJpbWl0aXZlPFQ+LFxuXHRyaWdodE9wZXJhbmQ6IEV4cHJlc3Npb25PclByaW1pdGl2ZTxUPlxuKTogRXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdHJldHVybiBjb21wYXJpc29uKFwiPlwiLCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTtcbn1cblxuLyoqXG4gKiBDb21wYXJpc29uOiBcImxlc3Mgb3IgZXF1YWxcIiAoPD0pLlxuICpcbiAqIEB0ZW1wbGF0ZSBUIFRoZSB0YXJnZXQgdHlwZVxuICogQHBhcmFtIGxlZnRPcGVyYW5kIFRoZSBvcGVyYW5kIG9uIHRoZSBsZWZ0IHNpZGVcbiAqIEBwYXJhbSByaWdodE9wZXJhbmQgVGhlIG9wZXJhbmQgb24gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGNvbXBhcmlzb25cbiAqIEByZXR1cm5zIHtFeHByZXNzaW9uPGJvb2xlYW4+fSBBbiBleHByZXNzaW9uIHJlcHJlc2VudGluZyB0aGUgY29tcGFyaXNvblxuICovXG5leHBvcnQgZnVuY3Rpb24gbGVzc09yRXF1YWw8VCBleHRlbmRzIFByaW1pdGl2ZVR5cGU+KFxuXHRsZWZ0T3BlcmFuZDogRXhwcmVzc2lvbk9yUHJpbWl0aXZlPFQ+LFxuXHRyaWdodE9wZXJhbmQ6IEV4cHJlc3Npb25PclByaW1pdGl2ZTxUPlxuKTogRXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdHJldHVybiBjb21wYXJpc29uKFwiPD1cIiwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7XG59XG5cbi8qKlxuICogQ29tcGFyaXNvbjogXCJsZXNzIHRoYW5cIiAoPCkuXG4gKlxuICogQHRlbXBsYXRlIFQgVGhlIHRhcmdldCB0eXBlXG4gKiBAcGFyYW0gbGVmdE9wZXJhbmQgVGhlIG9wZXJhbmQgb24gdGhlIGxlZnQgc2lkZVxuICogQHBhcmFtIHJpZ2h0T3BlcmFuZCBUaGUgb3BlcmFuZCBvbiB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgY29tcGFyaXNvblxuICogQHJldHVybnMge0V4cHJlc3Npb248Ym9vbGVhbj59IEFuIGV4cHJlc3Npb24gcmVwcmVzZW50aW5nIHRoZSBjb21wYXJpc29uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsZXNzVGhhbjxUIGV4dGVuZHMgUHJpbWl0aXZlVHlwZT4oXG5cdGxlZnRPcGVyYW5kOiBFeHByZXNzaW9uT3JQcmltaXRpdmU8VD4sXG5cdHJpZ2h0T3BlcmFuZDogRXhwcmVzc2lvbk9yUHJpbWl0aXZlPFQ+XG4pOiBFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0cmV0dXJuIGNvbXBhcmlzb24oXCI8XCIsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpO1xufVxuXG4vKipcbiAqIElmLXRoZW4tZWxzZSBleHByZXNzaW9uLlxuICpcbiAqIEV2YWx1YXRlcyB0byBvblRydWUgaWYgdGhlIGNvbmRpdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZSwgZWxzZSBldmFsdWF0ZXMgdG8gb25GYWxzZS5cbiAqXG4gKiBAdGVtcGxhdGUgVCBUaGUgdGFyZ2V0IHR5cGVcbiAqIEBwYXJhbSBjb25kaXRpb24gVGhlIGNvbmRpdGlvbiB0byBldmFsdWF0ZVxuICogQHBhcmFtIG9uVHJ1ZSBFeHByZXNzaW9uIHJlc3VsdCBpZiB0aGUgY29uZGl0aW9uIGV2YWx1YXRlcyB0byB0cnVlXG4gKiBAcGFyYW0gb25GYWxzZSBFeHByZXNzaW9uIHJlc3VsdCBpZiB0aGUgY29uZGl0aW9uIGV2YWx1YXRlcyB0byBmYWxzZVxuICogQHJldHVybnMge0V4cHJlc3Npb248VD59IFRoZSBleHByZXNzaW9uIHRoYXQgcmVwcmVzZW50cyB0aGlzIGNvbmRpdGlvbmFsIGNoZWNrXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpZkVsc2U8VCBleHRlbmRzIFByaW1pdGl2ZVR5cGU+KFxuXHRjb25kaXRpb246IEV4cHJlc3Npb25PclByaW1pdGl2ZTxib29sZWFuPixcblx0b25UcnVlOiBFeHByZXNzaW9uT3JQcmltaXRpdmU8VD4sXG5cdG9uRmFsc2U6IEV4cHJlc3Npb25PclByaW1pdGl2ZTxUPlxuKTogRXhwcmVzc2lvbjxUPiB7XG5cdGxldCBjb25kaXRpb25FeHByZXNzaW9uID0gd3JhcFByaW1pdGl2ZShjb25kaXRpb24pO1xuXHRsZXQgb25UcnVlRXhwcmVzc2lvbiA9IHdyYXBQcmltaXRpdmUob25UcnVlKTtcblx0bGV0IG9uRmFsc2VFeHByZXNzaW9uID0gd3JhcFByaW1pdGl2ZShvbkZhbHNlKTtcblxuXHRpZiAoaGFzVW5yZXNvbHZlYWJsZUV4cHJlc3Npb24oY29uZGl0aW9uRXhwcmVzc2lvbiwgb25UcnVlRXhwcmVzc2lvbiwgb25GYWxzZUV4cHJlc3Npb24pKSB7XG5cdFx0cmV0dXJuIHVucmVzb2x2ZWFibGVFeHByZXNzaW9uO1xuXHR9XG5cdC8vIHN3YXAgYnJhbmNoZXMgaWYgdGhlIGNvbmRpdGlvbiBpcyBhIG5lZ2F0aW9uXG5cdGlmIChjb25kaXRpb25FeHByZXNzaW9uLl90eXBlID09PSBcIk5vdFwiKSB7XG5cdFx0Ly8gaWZFbHNlKG5vdChYKSwgYSwgYikgLS0+IGlmRWxzZShYLCBiLCBhKVxuXHRcdFtvblRydWVFeHByZXNzaW9uLCBvbkZhbHNlRXhwcmVzc2lvbl0gPSBbb25GYWxzZUV4cHJlc3Npb24sIG9uVHJ1ZUV4cHJlc3Npb25dO1xuXHRcdGNvbmRpdGlvbkV4cHJlc3Npb24gPSBub3QoY29uZGl0aW9uRXhwcmVzc2lvbik7XG5cdH1cblxuXHQvLyBpbmxpbmUgbmVzdGVkIGlmLWVsc2UgZXhwcmVzc2lvbnM6IG9uVHJ1ZSBicmFuY2hcblx0Ly8gaWZFbHNlKFgsIGlmRWxzZShYLCBhLCBiKSwgYykgPT0+IGlmRWxzZShYLCBhLCBjKVxuXHRpZiAob25UcnVlRXhwcmVzc2lvbi5fdHlwZSA9PT0gXCJJZkVsc2VcIiAmJiBfY2hlY2tFeHByZXNzaW9uc0FyZUVxdWFsKGNvbmRpdGlvbkV4cHJlc3Npb24sIG9uVHJ1ZUV4cHJlc3Npb24uY29uZGl0aW9uKSkge1xuXHRcdG9uVHJ1ZUV4cHJlc3Npb24gPSBvblRydWVFeHByZXNzaW9uLm9uVHJ1ZTtcblx0fVxuXG5cdC8vIGlubGluZSBuZXN0ZWQgaWYtZWxzZSBleHByZXNzaW9uczogb25GYWxzZSBicmFuY2hcblx0Ly8gaWZFbHNlKFgsIGEsIGlmRWxzZShYLCBiLCBjKSkgPT0+IGlmRWxzZShYLCBhLCBjKVxuXHRpZiAob25GYWxzZUV4cHJlc3Npb24uX3R5cGUgPT09IFwiSWZFbHNlXCIgJiYgX2NoZWNrRXhwcmVzc2lvbnNBcmVFcXVhbChjb25kaXRpb25FeHByZXNzaW9uLCBvbkZhbHNlRXhwcmVzc2lvbi5jb25kaXRpb24pKSB7XG5cdFx0b25GYWxzZUV4cHJlc3Npb24gPSBvbkZhbHNlRXhwcmVzc2lvbi5vbkZhbHNlO1xuXHR9XG5cblx0Ly8gaW5saW5lIG5lc3RlZCBpZi1lbHNlIGV4cHJlc3Npb25zOiBjb25kaXRpb25cblx0aWYgKGNvbmRpdGlvbkV4cHJlc3Npb24uX3R5cGUgPT09IFwiSWZFbHNlXCIpIHtcblx0XHRpZiAoXG5cdFx0XHRpc0NvbnN0YW50KGNvbmRpdGlvbkV4cHJlc3Npb24ub25GYWxzZSkgJiZcblx0XHRcdCFjb25kaXRpb25FeHByZXNzaW9uLm9uRmFsc2UudmFsdWUgJiZcblx0XHRcdGlzQ29uc3RhbnQoY29uZGl0aW9uRXhwcmVzc2lvbi5vblRydWUpICYmXG5cdFx0XHRjb25kaXRpb25FeHByZXNzaW9uLm9uVHJ1ZS52YWx1ZVxuXHRcdCkge1xuXHRcdFx0Ly8gaWZFbHNlKGlmRWxzZShYLCB0cnVlLCBmYWxzZSksIGEsIGIpID09PiBpZkVsc2UoWCwgYSwgYilcblx0XHRcdGNvbmRpdGlvbkV4cHJlc3Npb24gPSBjb25kaXRpb25FeHByZXNzaW9uLmNvbmRpdGlvbjtcblx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0aXNDb25zdGFudChjb25kaXRpb25FeHByZXNzaW9uLm9uRmFsc2UpICYmXG5cdFx0XHRjb25kaXRpb25FeHByZXNzaW9uLm9uRmFsc2UudmFsdWUgJiZcblx0XHRcdGlzQ29uc3RhbnQoY29uZGl0aW9uRXhwcmVzc2lvbi5vblRydWUpICYmXG5cdFx0XHQhY29uZGl0aW9uRXhwcmVzc2lvbi5vblRydWUudmFsdWVcblx0XHQpIHtcblx0XHRcdC8vIGlmRWxzZShpZkVsc2UoWCwgZmFsc2UsIHRydWUpLCBhLCBiKSA9PT4gaWZFbHNlKG5vdChYKSwgYSwgYilcblx0XHRcdGNvbmRpdGlvbkV4cHJlc3Npb24gPSBub3QoY29uZGl0aW9uRXhwcmVzc2lvbi5jb25kaXRpb24pO1xuXHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRpc0NvbnN0YW50KGNvbmRpdGlvbkV4cHJlc3Npb24ub25UcnVlKSAmJlxuXHRcdFx0IWNvbmRpdGlvbkV4cHJlc3Npb24ub25UcnVlLnZhbHVlICYmXG5cdFx0XHQhaXNDb25zdGFudChjb25kaXRpb25FeHByZXNzaW9uLm9uRmFsc2UpXG5cdFx0KSB7XG5cdFx0XHQvLyBpZkVsc2UoaWZFbHNlKFgsIGZhbHNlLCBhKSwgYiwgYykgPT0+IGlmRWxzZShhbmQobm90KFgpLCBhKSwgYiwgYylcblx0XHRcdGNvbmRpdGlvbkV4cHJlc3Npb24gPSBhbmQobm90KGNvbmRpdGlvbkV4cHJlc3Npb24uY29uZGl0aW9uKSwgY29uZGl0aW9uRXhwcmVzc2lvbi5vbkZhbHNlKTtcblx0XHR9XG5cdH1cblxuXHQvLyBhZ2FpbiBzd2FwIGJyYW5jaGVzIGlmIG5lZWRlZCAoaW4gY2FzZSBvbmUgb2YgdGhlIG9wdGltaXphdGlvbnMgYWJvdmUgbGVkIHRvIGEgbmVnYXRlZCBjb25kaXRpb24pXG5cdGlmIChjb25kaXRpb25FeHByZXNzaW9uLl90eXBlID09PSBcIk5vdFwiKSB7XG5cdFx0Ly8gaWZFbHNlKG5vdChYKSwgYSwgYikgLS0+IGlmRWxzZShYLCBiLCBhKVxuXHRcdFtvblRydWVFeHByZXNzaW9uLCBvbkZhbHNlRXhwcmVzc2lvbl0gPSBbb25GYWxzZUV4cHJlc3Npb24sIG9uVHJ1ZUV4cHJlc3Npb25dO1xuXHRcdGNvbmRpdGlvbkV4cHJlc3Npb24gPSBub3QoY29uZGl0aW9uRXhwcmVzc2lvbik7XG5cdH1cblxuXHQvLyBjb21wdXRlIGV4cHJlc3Npb24gcmVzdWx0IGZvciBjb25zdGFudCBjb25kaXRpb25zXG5cdGlmIChpc0NvbnN0YW50KGNvbmRpdGlvbkV4cHJlc3Npb24pKSB7XG5cdFx0cmV0dXJuIGNvbmRpdGlvbkV4cHJlc3Npb24udmFsdWUgPyBvblRydWVFeHByZXNzaW9uIDogb25GYWxzZUV4cHJlc3Npb247XG5cdH1cblxuXHQvLyBjb21wdXRlIGV4cHJlc3Npb24gcmVzdWx0IGlmIG9uVHJ1ZSBhbmQgb25GYWxzZSBicmFuY2hlcyBhcmUgZXF1YWxcblx0aWYgKF9jaGVja0V4cHJlc3Npb25zQXJlRXF1YWwob25UcnVlRXhwcmVzc2lvbiwgb25GYWxzZUV4cHJlc3Npb24pKSB7XG5cdFx0cmV0dXJuIG9uVHJ1ZUV4cHJlc3Npb247XG5cdH1cblxuXHQvLyBJZiBlaXRoZXIgdHJ1ZUV4cHJlc3Npb24gb3IgZmFsc2VFeHByZXNzaW9uIGlzIGEgdmFsdWUgZXF1YWxzIHRvIGZhbHNlIHRoZSBleHByZXNzaW9uIGNhbiBiZSBzaW1wbGlmaWVkXG5cdC8vIElmKENvbmRpdGlvbikgVGhlbiBYWFggRWxzZSBGYWxzZSAtPiBDb25kaXRpb24gJiYgWFhYXG5cdGlmIChpc0NvbnN0YW50KG9uRmFsc2VFeHByZXNzaW9uKSAmJiBvbkZhbHNlRXhwcmVzc2lvbi52YWx1ZSA9PT0gZmFsc2UpIHtcblx0XHRyZXR1cm4gYW5kKGNvbmRpdGlvbkV4cHJlc3Npb24sIG9uVHJ1ZUV4cHJlc3Npb24gYXMgRXhwcmVzc2lvbjxib29sZWFuPikgYXMgRXhwcmVzc2lvbjxUPjtcblx0fVxuXHQvLyBJZihDb25kaXRpb24pIFRoZW4gRmFsc2UgRWxzZSBYWFggLT4gIUNvbmRpdGlvbiAmJiBYWFhcblx0aWYgKGlzQ29uc3RhbnQob25UcnVlRXhwcmVzc2lvbikgJiYgb25UcnVlRXhwcmVzc2lvbi52YWx1ZSA9PT0gZmFsc2UpIHtcblx0XHRyZXR1cm4gYW5kKG5vdChjb25kaXRpb25FeHByZXNzaW9uKSwgb25GYWxzZUV4cHJlc3Npb24gYXMgRXhwcmVzc2lvbjxib29sZWFuPikgYXMgRXhwcmVzc2lvbjxUPjtcblx0fVxuXG5cdHJldHVybiB7XG5cdFx0X3R5cGU6IFwiSWZFbHNlXCIsXG5cdFx0Y29uZGl0aW9uOiBjb25kaXRpb25FeHByZXNzaW9uLFxuXHRcdG9uVHJ1ZTogb25UcnVlRXhwcmVzc2lvbixcblx0XHRvbkZhbHNlOiBvbkZhbHNlRXhwcmVzc2lvblxuXHR9O1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBjdXJyZW50IGV4cHJlc3Npb24gaGFzIGEgcmVmZXJlbmNlIHRvIHRoZSBkZWZhdWx0IG1vZGVsICh1bmRlZmluZWQpLlxuICpcbiAqIEBwYXJhbSBleHByZXNzaW9uIFRoZSBleHByZXNzaW9uIHRvIGV2YWx1YXRlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHRoZXJlIGlzIGEgcmVmZXJlbmNlIHRvIHRoZSBkZWZhdWx0IGNvbnRleHRcbiAqL1xuZnVuY3Rpb24gaGFzUmVmZXJlbmNlVG9EZWZhdWx0Q29udGV4dChleHByZXNzaW9uOiBFeHByZXNzaW9uPGFueT4pOiBib29sZWFuIHtcblx0c3dpdGNoIChleHByZXNzaW9uLl90eXBlKSB7XG5cdFx0Y2FzZSBcIkNvbnN0YW50XCI6XG5cdFx0Y2FzZSBcIkZvcm1hdHRlclwiOlxuXHRcdGNhc2UgXCJDb21wbGV4VHlwZVwiOlxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdGNhc2UgXCJTZXRcIjpcblx0XHRcdHJldHVybiBleHByZXNzaW9uLm9wZXJhbmRzLnNvbWUoaGFzUmVmZXJlbmNlVG9EZWZhdWx0Q29udGV4dCk7XG5cdFx0Y2FzZSBcIkJpbmRpbmdcIjpcblx0XHRcdHJldHVybiBleHByZXNzaW9uLm1vZGVsTmFtZSA9PT0gdW5kZWZpbmVkO1xuXHRcdGNhc2UgXCJDb21wYXJpc29uXCI6XG5cdFx0XHRyZXR1cm4gaGFzUmVmZXJlbmNlVG9EZWZhdWx0Q29udGV4dChleHByZXNzaW9uLm9wZXJhbmQxKSB8fCBoYXNSZWZlcmVuY2VUb0RlZmF1bHRDb250ZXh0KGV4cHJlc3Npb24ub3BlcmFuZDIpO1xuXHRcdGNhc2UgXCJEZWZhdWx0QmluZGluZ1wiOlxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0Y2FzZSBcIklmRWxzZVwiOlxuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0aGFzUmVmZXJlbmNlVG9EZWZhdWx0Q29udGV4dChleHByZXNzaW9uLmNvbmRpdGlvbikgfHxcblx0XHRcdFx0aGFzUmVmZXJlbmNlVG9EZWZhdWx0Q29udGV4dChleHByZXNzaW9uLm9uVHJ1ZSkgfHxcblx0XHRcdFx0aGFzUmVmZXJlbmNlVG9EZWZhdWx0Q29udGV4dChleHByZXNzaW9uLm9uRmFsc2UpXG5cdFx0XHQpO1xuXHRcdGNhc2UgXCJOb3RcIjpcblx0XHRjYXNlIFwiVHJ1dGh5XCI6XG5cdFx0XHRyZXR1cm4gaGFzUmVmZXJlbmNlVG9EZWZhdWx0Q29udGV4dChleHByZXNzaW9uLm9wZXJhbmQpO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn1cblxudHlwZSBGbjxUPiA9ICgoLi4ucGFyYW1zOiBhbnkpID0+IFQpICYge1xuXHRfX2Z1bmN0aW9uTmFtZTogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiBXcmFwcGVkVHVwbGVcbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLWlnbm9yZVxudHlwZSBXcmFwcGVkVHVwbGU8VD4gPSB7IFtLIGluIGtleW9mIFRdOiBXcmFwcGVkVHVwbGU8VFtLXT4gfCBFeHByZXNzaW9uT3JQcmltaXRpdmU8VFtLXT4gfTtcblxuLy8gU28sIHRoaXMgd29ya3MgYnV0IEkgY2Fubm90IGdldCBpdCB0byBjb21waWxlIDpELCBidXQgaXQgc3RpbGwgZG9lcyB3aGF0IGlzIGV4cGVjdGVkLi4uXG5cbi8qKlxuICogQSBmdW5jdGlvbiByZWZlcmVuY2Ugb3IgYSBmdW5jdGlvbiBuYW1lLlxuICovXG50eXBlIEZ1bmN0aW9uT3JOYW1lPFQ+ID0gRm48VD4gfCBzdHJpbmc7XG5cbi8qKlxuICogRnVuY3Rpb24gcGFyYW1ldGVycywgZWl0aGVyIGRlcml2ZWQgZnJvbSB0aGUgZnVuY3Rpb24gb3IgYW4gdW50eXBlZCBhcnJheS5cbiAqL1xudHlwZSBGdW5jdGlvblBhcmFtZXRlcnM8VCwgRiBleHRlbmRzIEZ1bmN0aW9uT3JOYW1lPFQ+PiA9IEYgZXh0ZW5kcyBGbjxUPiA/IFBhcmFtZXRlcnM8Rj4gOiBhbnlbXTtcblxuLyoqXG4gKiBDYWxscyBhIGZvcm1hdHRlciBmdW5jdGlvbiB0byBwcm9jZXNzIHRoZSBwYXJhbWV0ZXJzLlxuICogSWYgcmVxdWlyZUNvbnRleHQgaXMgc2V0IHRvIHRydWUgYW5kIG5vIGNvbnRleHQgaXMgcGFzc2VkIGEgZGVmYXVsdCBjb250ZXh0IHdpbGwgYmUgYWRkZWQgYXV0b21hdGljYWxseS5cbiAqXG4gKiBAdGVtcGxhdGUgVFxuICogQHRlbXBsYXRlIFVcbiAqIEBwYXJhbSBwYXJhbWV0ZXJzIFRoZSBsaXN0IG9mIHBhcmFtZXRlciB0aGF0IHNob3VsZCBtYXRjaCB0aGUgdHlwZSBhbmQgbnVtYmVyIG9mIHRoZSBmb3JtYXR0ZXIgZnVuY3Rpb25cbiAqIEBwYXJhbSBmb3JtYXR0ZXJGdW5jdGlvbiBUaGUgZnVuY3Rpb24gdG8gY2FsbFxuICogQHBhcmFtIFtjb250ZXh0RW50aXR5VHlwZV0gVGhlIGNvbnRleHQgZW50aXR5IHR5cGUgdG8gY29uc2lkZXJcbiAqIEByZXR1cm5zIHtFeHByZXNzaW9uPFQ+fSBUaGUgY29ycmVzcG9uZGluZyBleHByZXNzaW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRSZXN1bHQ8VCwgVSBleHRlbmRzIEZuPFQ+Pihcblx0cGFyYW1ldGVyczogV3JhcHBlZFR1cGxlPFBhcmFtZXRlcnM8VT4+LFxuXHRmb3JtYXR0ZXJGdW5jdGlvbjogVSxcblx0Y29udGV4dEVudGl0eVR5cGU/OiBFbnRpdHlUeXBlXG4pOiBFeHByZXNzaW9uPFQ+IHtcblx0Y29uc3QgcGFyYW1ldGVyRXhwcmVzc2lvbnMgPSAocGFyYW1ldGVycyBhcyBhbnlbXSkubWFwKHdyYXBQcmltaXRpdmUpO1xuXG5cdGlmIChoYXNVbnJlc29sdmVhYmxlRXhwcmVzc2lvbiguLi5wYXJhbWV0ZXJFeHByZXNzaW9ucykpIHtcblx0XHRyZXR1cm4gdW5yZXNvbHZlYWJsZUV4cHJlc3Npb247XG5cdH1cblx0aWYgKCEhY29udGV4dEVudGl0eVR5cGUpIHtcblx0XHQvLyBPdGhlcndpc2UsIGlmIHRoZSBjb250ZXh0IGlzIHJlcXVpcmVkIGFuZCBubyBjb250ZXh0IGlzIHByb3ZpZGVkIG1ha2Ugc3VyZSB0byBhZGQgdGhlIGRlZmF1bHQgYmluZGluZ1xuXHRcdGlmICghcGFyYW1ldGVyRXhwcmVzc2lvbnMuc29tZShoYXNSZWZlcmVuY2VUb0RlZmF1bHRDb250ZXh0KSkge1xuXHRcdFx0Y29udGV4dEVudGl0eVR5cGUua2V5cy5mb3JFYWNoKGtleSA9PiBwYXJhbWV0ZXJFeHByZXNzaW9ucy5wdXNoKGJpbmRpbmdFeHByZXNzaW9uKGtleS5uYW1lLCBcIlwiKSkpO1xuXHRcdH1cblx0fVxuXG5cdC8vIEZvcm1hdHRlck5hbWUgY2FuIGJlIG9mIGZvcm1hdCBzYXAuZmUuY29yZS54eHgjbWV0aG9kTmFtZSB0byBoYXZlIG11bHRpcGxlIGZvcm1hdHRlciBpbiBvbmUgY2xhc3Ncblx0Y29uc3QgW2Zvcm1hdHRlckNsYXNzLCBmb3JtYXR0ZXJOYW1lXSA9IGZvcm1hdHRlckZ1bmN0aW9uLl9fZnVuY3Rpb25OYW1lLnNwbGl0KFwiI1wiKTtcblxuXHRpZiAoISFmb3JtYXR0ZXJOYW1lICYmIGZvcm1hdHRlck5hbWUubGVuZ3RoID4gMCkge1xuXHRcdHBhcmFtZXRlckV4cHJlc3Npb25zLnVuc2hpZnQoY29uc3RhbnQoZm9ybWF0dGVyTmFtZSkpO1xuXHR9XG5cblx0cmV0dXJuIHtcblx0XHRfdHlwZTogXCJGb3JtYXR0ZXJcIixcblx0XHRmbjogZm9ybWF0dGVyQ2xhc3MsXG5cdFx0cGFyYW1ldGVyczogcGFyYW1ldGVyRXhwcmVzc2lvbnNcblx0fTtcbn1cblxuLyoqXG4gKiBDYWxscyBhIGNvbXBsZXggdHlwZSAgdG8gcHJvY2VzcyB0aGUgcGFyYW1ldGVycy5cbiAqIElmIHJlcXVpcmVDb250ZXh0IGlzIHNldCB0byB0cnVlIGFuZCBubyBjb250ZXh0IGlzIHBhc3NlZCBhIGRlZmF1bHQgY29udGV4dCB3aWxsIGJlIGFkZGVkIGF1dG9tYXRpY2FsbHkuXG4gKlxuICogQHRlbXBsYXRlIFRcbiAqIEB0ZW1wbGF0ZSBVXG4gKiBAcGFyYW0gcGFyYW1ldGVycyBUaGUgbGlzdCBvZiBwYXJhbWV0ZXIgdGhhdCBzaG91bGQgbWF0Y2ggdGhlIHR5cGUgZm9yIHRoZSBjb21wcGxleCB0eXBlXG4gKiBAcGFyYW0gdHlwZSBUaGUgY29tcGxleCB0eXBlIHRvIHVzZVxuICogQHBhcmFtIFtjb250ZXh0RW50aXR5VHlwZV0gVGhlIGNvbnRleHQgZW50aXR5IHR5cGUgdG8gY29uc2lkZXJcbiAqIEByZXR1cm5zIHtFeHByZXNzaW9uPFQ+fSBUaGUgY29ycmVzcG9uZGluZyBleHByZXNzaW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRUeXBlSW5mb3JtYXRpb248VCwgVSBleHRlbmRzIEZuPFQ+Pihcblx0cGFyYW1ldGVyczogV3JhcHBlZFR1cGxlPFBhcmFtZXRlcnM8VT4+LFxuXHR0eXBlOiBzdHJpbmcsXG5cdGNvbnRleHRFbnRpdHlUeXBlPzogRW50aXR5VHlwZVxuKTogRXhwcmVzc2lvbjxUPiB7XG5cdGNvbnN0IHBhcmFtZXRlckV4cHJlc3Npb25zID0gKHBhcmFtZXRlcnMgYXMgYW55W10pLm1hcCh3cmFwUHJpbWl0aXZlKTtcblx0aWYgKGhhc1VucmVzb2x2ZWFibGVFeHByZXNzaW9uKC4uLnBhcmFtZXRlckV4cHJlc3Npb25zKSkge1xuXHRcdHJldHVybiB1bnJlc29sdmVhYmxlRXhwcmVzc2lvbjtcblx0fVxuXHQvLyBJZiB0aGVyZSBpcyBvbmx5IG9uZSBwYXJhbWV0ZXIgYW5kIGl0IGlzIGEgY29uc3RhbnQgYW5kIHdlIGRvbid0IGV4cGVjdCB0aGUgY29udGV4dCB0aGVuIHJldHVybiB0aGUgY29uc3RhbnRcblx0aWYgKHBhcmFtZXRlckV4cHJlc3Npb25zLmxlbmd0aCA9PT0gMSAmJiBpc0NvbnN0YW50KHBhcmFtZXRlckV4cHJlc3Npb25zWzBdKSAmJiAhY29udGV4dEVudGl0eVR5cGUpIHtcblx0XHRyZXR1cm4gcGFyYW1ldGVyRXhwcmVzc2lvbnNbMF07XG5cdH0gZWxzZSBpZiAoISFjb250ZXh0RW50aXR5VHlwZSkge1xuXHRcdC8vIE90aGVyd2lzZSwgaWYgdGhlIGNvbnRleHQgaXMgcmVxdWlyZWQgYW5kIG5vIGNvbnRleHQgaXMgcHJvdmlkZWQgbWFrZSBzdXJlIHRvIGFkZCB0aGUgZGVmYXVsdCBiaW5kaW5nXG5cdFx0aWYgKCFwYXJhbWV0ZXJFeHByZXNzaW9ucy5zb21lKGhhc1JlZmVyZW5jZVRvRGVmYXVsdENvbnRleHQpKSB7XG5cdFx0XHRjb250ZXh0RW50aXR5VHlwZS5rZXlzLmZvckVhY2goa2V5ID0+IHBhcmFtZXRlckV4cHJlc3Npb25zLnB1c2goYmluZGluZ0V4cHJlc3Npb24oa2V5Lm5hbWUsIFwiXCIpKSk7XG5cdFx0fVxuXHR9XG5cblx0Y29uc3Qgb0Zvcm1hdE9wdGlvbnMgPVxuXHRcdChwYXJhbWV0ZXJzWzBdIGFzIGFueSk/LnR5cGU/LmluZGV4T2YoXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5JbnRcIikgPT09IDAgPyB7IHBhcnNlQXNTdHJpbmc6IGZhbHNlLCBlbXB0eVN0cmluZzogXCJcIiB9IDoge307XG5cdHJldHVybiB7XG5cdFx0X3R5cGU6IFwiQ29tcGxleFR5cGVcIixcblx0XHR0eXBlOiB0eXBlLFxuXHRcdGZvcm1hdE9wdGlvbnM6IG9Gb3JtYXRPcHRpb25zLFxuXHRcdHBhcmFtZXRlcnM6IHt9LFxuXHRcdGJpbmRpbmdQYXJhbWV0ZXJzOiBwYXJhbWV0ZXJFeHByZXNzaW9uc1xuXHR9O1xufVxuLyoqXG4gKiBGdW5jdGlvbiBjYWxsLCBvcHRpb25hbGx5IHdpdGggYXJndW1lbnRzLlxuICpcbiAqIEBwYXJhbSBmbiBGdW5jdGlvbiBuYW1lIG9yIHJlZmVyZW5jZSB0byBmdW5jdGlvblxuICogQHBhcmFtIHBhcmFtZXRlcnMgQXJndW1lbnRzXG4gKiBAcGFyYW0gb24gT2JqZWN0IHRvIGNhbGwgdGhlIGZ1bmN0aW9uIG9uXG4gKiBAcmV0dXJucyB7RnVuY3Rpb25FeHByZXNzaW9uPFQ+fSBFeHByZXNzaW9uIHJlcHJlc2VudGluZyB0aGUgZnVuY3Rpb24gY2FsbCAobm90IHRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uIGNhbGwhKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZm48VCwgVSBleHRlbmRzIEZ1bmN0aW9uT3JOYW1lPFQ+Pihcblx0Zm46IFUsXG5cdHBhcmFtZXRlcnM6IFdyYXBwZWRUdXBsZTxGdW5jdGlvblBhcmFtZXRlcnM8VCwgVT4+LFxuXHRvbj86IEV4cHJlc3Npb25PclByaW1pdGl2ZTxvYmplY3Q+XG4pOiBGdW5jdGlvbkV4cHJlc3Npb248VD4ge1xuXHRjb25zdCBmdW5jdGlvbk5hbWUgPSB0eXBlb2YgZm4gPT09IFwic3RyaW5nXCIgPyBmbiA6IChmbiBhcyBGbjxUPikuX19mdW5jdGlvbk5hbWU7XG5cdHJldHVybiB7XG5cdFx0X3R5cGU6IFwiRnVuY3Rpb25cIixcblx0XHRvYmo6IG9uICE9PSB1bmRlZmluZWQgPyB3cmFwUHJpbWl0aXZlKG9uKSA6IHVuZGVmaW5lZCxcblx0XHRmbjogZnVuY3Rpb25OYW1lLFxuXHRcdHBhcmFtZXRlcnM6IChwYXJhbWV0ZXJzIGFzIGFueVtdKS5tYXAod3JhcFByaW1pdGl2ZSlcblx0fTtcbn1cblxuLyoqXG4gKiBTaG9ydGN1dCBmdW5jdGlvbiB0byBkZXRlcm1pbmUgaWYgYSBiaW5kaW5nIHZhbHVlIGlzIG51bGwsIHVuZGVmaW5lZCBvciBlbXB0eS5cbiAqXG4gKiBAcGFyYW0gZXhwcmVzc2lvblxuICogQHJldHVybnMgQSBib29sZWFuIGV4cHJlc3Npb24gZXZhbHVhdGluZyB0aGUgZmFjdCB0aGF0IHRoZSBjdXJyZW50IGVsZW1lbnQgaXMgZW1wdHlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRW1wdHkoZXhwcmVzc2lvbjogRXhwcmVzc2lvbjxzdHJpbmc+KTogRXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGlmIChleHByZXNzaW9uLl90eXBlID09PSBcIkNvbmNhdFwiKSB7XG5cdFx0cmV0dXJuIG9yKC4uLmV4cHJlc3Npb24uZXhwcmVzc2lvbnMubWFwKGlzRW1wdHkpKTtcblx0fVxuXHRyZXR1cm4gb3IoZXF1YWwoZXhwcmVzc2lvbiwgXCJcIiksIGVxdWFsKGV4cHJlc3Npb24sIHVuZGVmaW5lZCksIGVxdWFsKGV4cHJlc3Npb24sIG51bGwpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmNhdCguLi5pbkV4cHJlc3Npb25zOiBFeHByZXNzaW9uT3JQcmltaXRpdmU8c3RyaW5nPltdKTogRXhwcmVzc2lvbjxzdHJpbmc+IHtcblx0Y29uc3QgZXhwcmVzc2lvbnMgPSBpbkV4cHJlc3Npb25zLm1hcCh3cmFwUHJpbWl0aXZlKTtcblx0aWYgKGhhc1VucmVzb2x2ZWFibGVFeHByZXNzaW9uKC4uLmV4cHJlc3Npb25zKSkge1xuXHRcdHJldHVybiB1bnJlc29sdmVhYmxlRXhwcmVzc2lvbjtcblx0fVxuXHRpZiAoZXhwcmVzc2lvbnMuZXZlcnkoaXNDb25zdGFudCkpIHtcblx0XHRyZXR1cm4gY29uc3RhbnQoXG5cdFx0XHRleHByZXNzaW9ucy5yZWR1Y2UoKGNvbmNhdGVuYXRlZDogc3RyaW5nLCB2YWx1ZSkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gY29uY2F0ZW5hdGVkICsgKHZhbHVlIGFzIENvbnN0YW50RXhwcmVzc2lvbjxhbnk+KS52YWx1ZS50b1N0cmluZygpO1xuXHRcdFx0fSwgXCJcIilcblx0XHQpO1xuXHR9XG5cdHJldHVybiB7XG5cdFx0X3R5cGU6IFwiQ29uY2F0XCIsXG5cdFx0ZXhwcmVzc2lvbnM6IGV4cHJlc3Npb25zXG5cdH07XG59XG5cbmV4cG9ydCB0eXBlIFRyYW5zZm9ybUZ1bmN0aW9uID0gPFQgZXh0ZW5kcyBQcmltaXRpdmVUeXBlIHwgdW5rbm93bj4oZXhwcmVzc2lvblBhcnQ6IGFueSkgPT4gRXhwcmVzc2lvbjxUPjtcbmV4cG9ydCB0eXBlIEV4cHJlc3Npb25UeXBlID0gUGljazxFeHByZXNzaW9uPGFueT4sIFwiX3R5cGVcIj5bXCJfdHlwZVwiXTtcbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1SZWN1cnNpdmVseTxUIGV4dGVuZHMgUHJpbWl0aXZlVHlwZSB8IHVua25vd24+KFxuXHRpbkV4cHJlc3Npb246IEV4cHJlc3Npb248VD4sXG5cdGV4cHJlc3Npb25UeXBlOiBFeHByZXNzaW9uVHlwZSxcblx0dHJhbnNmb3JtRnVuY3Rpb246IFRyYW5zZm9ybUZ1bmN0aW9uLFxuXHRpbmNsdWRlQWxsRXhwcmVzc2lvbjogYm9vbGVhbiA9IGZhbHNlXG4pOiBFeHByZXNzaW9uPFQ+IHtcblx0bGV0IGV4cHJlc3Npb24gPSBpbkV4cHJlc3Npb247XG5cdHN3aXRjaCAoZXhwcmVzc2lvbi5fdHlwZSkge1xuXHRcdGNhc2UgXCJGdW5jdGlvblwiOlxuXHRcdFx0ZXhwcmVzc2lvbi5wYXJhbWV0ZXJzID0gZXhwcmVzc2lvbi5wYXJhbWV0ZXJzLm1hcChleHByZXNzaW9uID0+XG5cdFx0XHRcdHRyYW5zZm9ybVJlY3Vyc2l2ZWx5KGV4cHJlc3Npb24sIGV4cHJlc3Npb25UeXBlLCB0cmFuc2Zvcm1GdW5jdGlvbiwgaW5jbHVkZUFsbEV4cHJlc3Npb24pXG5cdFx0XHQpO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcIkNvbmNhdFwiOlxuXHRcdFx0ZXhwcmVzc2lvbi5leHByZXNzaW9ucyA9IGV4cHJlc3Npb24uZXhwcmVzc2lvbnMubWFwKGV4cHJlc3Npb24gPT5cblx0XHRcdFx0dHJhbnNmb3JtUmVjdXJzaXZlbHkoZXhwcmVzc2lvbiwgZXhwcmVzc2lvblR5cGUsIHRyYW5zZm9ybUZ1bmN0aW9uLCBpbmNsdWRlQWxsRXhwcmVzc2lvbilcblx0XHRcdCk7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwiQ29tcGxleFR5cGVcIjpcblx0XHRcdGV4cHJlc3Npb24uYmluZGluZ1BhcmFtZXRlcnMgPSBleHByZXNzaW9uLmJpbmRpbmdQYXJhbWV0ZXJzLm1hcChleHByZXNzaW9uID0+XG5cdFx0XHRcdHRyYW5zZm9ybVJlY3Vyc2l2ZWx5KGV4cHJlc3Npb24sIGV4cHJlc3Npb25UeXBlLCB0cmFuc2Zvcm1GdW5jdGlvbiwgaW5jbHVkZUFsbEV4cHJlc3Npb24pXG5cdFx0XHQpO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcIkZvcm1hdHRlclwiOlxuXHRcdFx0ZXhwcmVzc2lvbi5wYXJhbWV0ZXJzID0gZXhwcmVzc2lvbi5wYXJhbWV0ZXJzLm1hcChleHByZXNzaW9uID0+XG5cdFx0XHRcdHRyYW5zZm9ybVJlY3Vyc2l2ZWx5KGV4cHJlc3Npb24sIGV4cHJlc3Npb25UeXBlLCB0cmFuc2Zvcm1GdW5jdGlvbiwgaW5jbHVkZUFsbEV4cHJlc3Npb24pXG5cdFx0XHQpO1xuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlIFwiSWZFbHNlXCI6XG5cdFx0XHRjb25zdCBvblRydWUgPSB0cmFuc2Zvcm1SZWN1cnNpdmVseShleHByZXNzaW9uLm9uVHJ1ZSwgZXhwcmVzc2lvblR5cGUsIHRyYW5zZm9ybUZ1bmN0aW9uLCBpbmNsdWRlQWxsRXhwcmVzc2lvbik7XG5cdFx0XHRjb25zdCBvbkZhbHNlID0gdHJhbnNmb3JtUmVjdXJzaXZlbHkoZXhwcmVzc2lvbi5vbkZhbHNlLCBleHByZXNzaW9uVHlwZSwgdHJhbnNmb3JtRnVuY3Rpb24sIGluY2x1ZGVBbGxFeHByZXNzaW9uKTtcblx0XHRcdGxldCBjb25kaXRpb24gPSBleHByZXNzaW9uLmNvbmRpdGlvbjtcblx0XHRcdGlmIChpbmNsdWRlQWxsRXhwcmVzc2lvbikge1xuXHRcdFx0XHRjb25kaXRpb24gPSB0cmFuc2Zvcm1SZWN1cnNpdmVseShleHByZXNzaW9uLmNvbmRpdGlvbiwgZXhwcmVzc2lvblR5cGUsIHRyYW5zZm9ybUZ1bmN0aW9uLCBpbmNsdWRlQWxsRXhwcmVzc2lvbik7XG5cdFx0XHR9XG5cdFx0XHRleHByZXNzaW9uID0gaWZFbHNlKGNvbmRpdGlvbiwgb25UcnVlLCBvbkZhbHNlKSBhcyBFeHByZXNzaW9uPFQ+O1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcIk5vdFwiOlxuXHRcdFx0aWYgKGluY2x1ZGVBbGxFeHByZXNzaW9uKSB7XG5cdFx0XHRcdGNvbnN0IG9wZXJhbmQgPSB0cmFuc2Zvcm1SZWN1cnNpdmVseShleHByZXNzaW9uLm9wZXJhbmQsIGV4cHJlc3Npb25UeXBlLCB0cmFuc2Zvcm1GdW5jdGlvbiwgaW5jbHVkZUFsbEV4cHJlc3Npb24pO1xuXHRcdFx0XHRleHByZXNzaW9uID0gbm90KG9wZXJhbmQpIGFzIEV4cHJlc3Npb248VD47XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwiVHJ1dGh5XCI6XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwiU2V0XCI6XG5cdFx0XHRpZiAoaW5jbHVkZUFsbEV4cHJlc3Npb24pIHtcblx0XHRcdFx0ZXhwcmVzc2lvbi5vcGVyYW5kcyA9IGV4cHJlc3Npb24ub3BlcmFuZHMubWFwKGV4cHJlc3Npb24gPT5cblx0XHRcdFx0XHR0cmFuc2Zvcm1SZWN1cnNpdmVseShleHByZXNzaW9uLCBleHByZXNzaW9uVHlwZSwgdHJhbnNmb3JtRnVuY3Rpb24sIGluY2x1ZGVBbGxFeHByZXNzaW9uKVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcIkNvbXBhcmlzb25cIjpcblx0XHRcdGlmIChpbmNsdWRlQWxsRXhwcmVzc2lvbikge1xuXHRcdFx0XHRjb25zdCBvcGVyYW5kMSA9IHRyYW5zZm9ybVJlY3Vyc2l2ZWx5KGV4cHJlc3Npb24ub3BlcmFuZDEsIGV4cHJlc3Npb25UeXBlLCB0cmFuc2Zvcm1GdW5jdGlvbiwgaW5jbHVkZUFsbEV4cHJlc3Npb24pO1xuXHRcdFx0XHRjb25zdCBvcGVyYW5kMiA9IHRyYW5zZm9ybVJlY3Vyc2l2ZWx5KGV4cHJlc3Npb24ub3BlcmFuZDIsIGV4cHJlc3Npb25UeXBlLCB0cmFuc2Zvcm1GdW5jdGlvbiwgaW5jbHVkZUFsbEV4cHJlc3Npb24pO1xuXHRcdFx0XHRleHByZXNzaW9uID0gY29tcGFyaXNvbihleHByZXNzaW9uLm9wZXJhdG9yLCBvcGVyYW5kMSwgb3BlcmFuZDIpIGFzIEV4cHJlc3Npb248VD47XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwiRGVmYXVsdEJpbmRpbmdcIjpcblx0XHRjYXNlIFwiUmVmXCI6XG5cdFx0Y2FzZSBcIkJpbmRpbmdcIjpcblx0XHRjYXNlIFwiQ29uc3RhbnRcIjpcblx0XHRcdC8vIERvIG5vdGhpbmdcblx0XHRcdGJyZWFrO1xuXHR9XG5cdGlmIChleHByZXNzaW9uVHlwZSA9PT0gZXhwcmVzc2lvbi5fdHlwZSkge1xuXHRcdGV4cHJlc3Npb24gPSB0cmFuc2Zvcm1GdW5jdGlvbihpbkV4cHJlc3Npb24pO1xuXHR9XG5cdHJldHVybiBleHByZXNzaW9uO1xufVxuXG5leHBvcnQgdHlwZSBCaW5kaW5nRXhwcmVzc2lvbjxUPiA9IFQgfCBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ29tcGlsZSBhbiBleHByZXNzaW9uIGludG8gYW4gZXhwcmVzc2lvbiBiaW5kaW5nLlxuICpcbiAqIEB0ZW1wbGF0ZSBUIFRoZSB0YXJnZXQgdHlwZVxuICogQHBhcmFtIGV4cHJlc3Npb24gVGhlIGV4cHJlc3Npb24gdG8gY29tcGlsZVxuICogQHBhcmFtIGVtYmVkZGVkSW5CaW5kaW5nIFdoZXRoZXIgdGhlIGV4cHJlc3Npb24gdG8gY29tcGlsZSBpcyBlbWJlZGRlZCBpbnRvIGFub3RoZXIgZXhwcmVzc2lvblxuICogQHBhcmFtIGtlZXBUYXJnZXRUeXBlIEtlZXAgdGhlIHRhcmdldCB0eXBlIG9mIHRoZSBlbWJlZGRlZCBiaW5kaW5ncyBpbnN0ZWFkIG9mIGNhc3RpbmcgdGhlbSB0byBhbnlcbiAqIEByZXR1cm5zIHtCaW5kaW5nRXhwcmVzc2lvbjxUPn0gVGhlIGNvcnJlc3BvbmRpbmcgZXhwcmVzc2lvbiBiaW5kaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21waWxlQmluZGluZzxUIGV4dGVuZHMgUHJpbWl0aXZlVHlwZT4oXG5cdGV4cHJlc3Npb246IEV4cHJlc3Npb25PclByaW1pdGl2ZTxUPixcblx0ZW1iZWRkZWRJbkJpbmRpbmc6IGJvb2xlYW4gPSBmYWxzZSxcblx0a2VlcFRhcmdldFR5cGU6IGJvb2xlYW4gPSBmYWxzZVxuKTogQmluZGluZ0V4cHJlc3Npb248c3RyaW5nPiB7XG5cdGNvbnN0IGV4cHIgPSB3cmFwUHJpbWl0aXZlKGV4cHJlc3Npb24pO1xuXHRjb25zdCBlbWJlZGRlZFNlcGFyYXRvciA9IGtlZXBUYXJnZXRUeXBlID8gXCIkXCIgOiBcIiVcIjtcblx0bGV0IG91dFByb3BlcnR5ID0gXCJcIjtcblx0c3dpdGNoIChleHByLl90eXBlKSB7XG5cdFx0Y2FzZSBcIlVucmVzb2x2ZWFibGVcIjpcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0Y2FzZSBcIkNvbnN0YW50XCI6XG5cdFx0XHRpZiAoZXhwci52YWx1ZSA9PT0gbnVsbCkge1xuXHRcdFx0XHRyZXR1cm4gXCJudWxsXCI7XG5cdFx0XHR9XG5cdFx0XHRpZiAoZXhwci52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdHJldHVybiBcInVuZGVmaW5lZFwiO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHR5cGVvZiBleHByLnZhbHVlID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRcdGlmIChBcnJheS5pc0FycmF5KGV4cHIudmFsdWUpKSB7XG5cdFx0XHRcdFx0Y29uc3QgZW50cmllcyA9IGV4cHIudmFsdWUubWFwKGV4cHJlc3Npb24gPT4gY29tcGlsZUJpbmRpbmcoZXhwcmVzc2lvbiwgdHJ1ZSkpO1xuXHRcdFx0XHRcdHJldHVybiBgWyR7ZW50cmllcy5qb2luKFwiLCBcIil9XWA7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gT2JqZWN0c1xuXHRcdFx0XHRcdGNvbnN0IG8gPSBleHByLnZhbHVlIGFzIFBsYWluRXhwcmVzc2lvbk9iamVjdDtcblx0XHRcdFx0XHRjb25zdCBwcm9wZXJ0aWVzID0gT2JqZWN0LmtleXMobykubWFwKGtleSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zdCB2YWx1ZSA9IG9ba2V5XTtcblx0XHRcdFx0XHRcdHJldHVybiBgJHtrZXl9OiAke2NvbXBpbGVCaW5kaW5nKHZhbHVlLCB0cnVlKX1gO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdHJldHVybiBgeyR7cHJvcGVydGllcy5qb2luKFwiLCBcIil9fWA7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYgKGVtYmVkZGVkSW5CaW5kaW5nKSB7XG5cdFx0XHRcdHN3aXRjaCAodHlwZW9mIGV4cHIudmFsdWUpIHtcblx0XHRcdFx0XHRjYXNlIFwibnVtYmVyXCI6XG5cdFx0XHRcdFx0Y2FzZSBcImJpZ2ludFwiOlxuXHRcdFx0XHRcdGNhc2UgXCJib29sZWFuXCI6XG5cdFx0XHRcdFx0XHRyZXR1cm4gZXhwci52YWx1ZS50b1N0cmluZygpO1xuXHRcdFx0XHRcdGNhc2UgXCJzdHJpbmdcIjpcblx0XHRcdFx0XHRcdHJldHVybiBgJyR7ZXhwci52YWx1ZS50b1N0cmluZygpfSdgO1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRyZXR1cm4gXCJcIjtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIGV4cHIudmFsdWUudG9TdHJpbmcoKTtcblx0XHRcdH1cblxuXHRcdGNhc2UgXCJSZWZcIjpcblx0XHRcdHJldHVybiBleHByLnJlZiB8fCBcIm51bGxcIjtcblxuXHRcdGNhc2UgXCJGdW5jdGlvblwiOlxuXHRcdFx0Y29uc3QgYXJndW1lbnRTdHJpbmcgPSBgJHtleHByLnBhcmFtZXRlcnMubWFwKGFyZyA9PiBjb21waWxlQmluZGluZyhhcmcsIHRydWUpKS5qb2luKFwiLCBcIil9YDtcblx0XHRcdHJldHVybiBleHByLm9iaiA9PT0gdW5kZWZpbmVkXG5cdFx0XHRcdD8gYCR7ZXhwci5mbn0oJHthcmd1bWVudFN0cmluZ30pYFxuXHRcdFx0XHQ6IGAke2NvbXBpbGVCaW5kaW5nKGV4cHIub2JqLCB0cnVlKX0uJHtleHByLmZufSgke2FyZ3VtZW50U3RyaW5nfSlgO1xuXHRcdGNhc2UgXCJFbWJlZGRlZEV4cHJlc3Npb25CaW5kaW5nXCI6XG5cdFx0XHRpZiAoZW1iZWRkZWRJbkJpbmRpbmcpIHtcblx0XHRcdFx0cmV0dXJuIGAoJHtleHByLnZhbHVlLnN1YnN0cigyLCBleHByLnZhbHVlLmxlbmd0aCAtIDMpfSlgO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIGAke2V4cHIudmFsdWV9YDtcblx0XHRcdH1cblx0XHRjYXNlIFwiRW1iZWRkZWRCaW5kaW5nXCI6XG5cdFx0XHRpZiAoZW1iZWRkZWRJbkJpbmRpbmcpIHtcblx0XHRcdFx0cmV0dXJuIGAke2VtYmVkZGVkU2VwYXJhdG9yfSR7ZXhwci52YWx1ZX1gO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIGAke2V4cHIudmFsdWV9YDtcblx0XHRcdH1cblx0XHRjYXNlIFwiRGVmYXVsdEJpbmRpbmdcIjpcblx0XHRjYXNlIFwiQmluZGluZ1wiOlxuXHRcdFx0aWYgKGV4cHIudHlwZSB8fCBleHByLnBhcmFtZXRlcnMgfHwgZXhwci50YXJnZXRUeXBlKSB7XG5cdFx0XHRcdGxldCBvdXRCaW5kaW5nID0gXCJcIjtcblx0XHRcdFx0aWYgKGVtYmVkZGVkSW5CaW5kaW5nKSB7XG5cdFx0XHRcdFx0b3V0QmluZGluZyArPSBgJHtlbWJlZGRlZFNlcGFyYXRvcn1gO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG91dEJpbmRpbmcgKz0gYHtwYXRoOicke2V4cHIubW9kZWxOYW1lID8gYCR7ZXhwci5tb2RlbE5hbWV9PmAgOiBcIlwifSR7ZXhwci5wYXRofSdgO1xuXHRcdFx0XHRpZiAoZXhwci50eXBlKSB7XG5cdFx0XHRcdFx0b3V0QmluZGluZyArPSBgLCB0eXBlOiAnJHtleHByLnR5cGV9J2A7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGV4cHIuY29uc3RyYWludHMgJiYgT2JqZWN0LmtleXMoZXhwci5jb25zdHJhaW50cykubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdG91dEJpbmRpbmcgKz0gYCwgY29uc3RyYWludHM6ICR7Y29tcGlsZUJpbmRpbmcoZXhwci5jb25zdHJhaW50cyl9YDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoZXhwci5mb3JtYXRPcHRpb25zKSB7XG5cdFx0XHRcdFx0b3V0QmluZGluZyArPSBgLCBmb3JtYXRPcHRpb25zOiAke2NvbXBpbGVCaW5kaW5nKGV4cHIuZm9ybWF0T3B0aW9ucyl9YDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoZXhwci5wYXJhbWV0ZXJzICYmIE9iamVjdC5rZXlzKGV4cHIucGFyYW1ldGVycykubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdG91dEJpbmRpbmcgKz0gYCwgcGFyYW1ldGVyczogJHtjb21waWxlQmluZGluZyhleHByLnBhcmFtZXRlcnMpfWA7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGV4cHIudGFyZ2V0VHlwZSkge1xuXHRcdFx0XHRcdG91dEJpbmRpbmcgKz0gYCwgdGFyZ2V0VHlwZTogJyR7ZXhwci50YXJnZXRUeXBlfSdgO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG91dEJpbmRpbmcgKz0gXCJ9XCI7XG5cdFx0XHRcdHJldHVybiBvdXRCaW5kaW5nO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aWYgKGVtYmVkZGVkSW5CaW5kaW5nKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGAke2VtYmVkZGVkU2VwYXJhdG9yfXske2V4cHIubW9kZWxOYW1lID8gYCR7ZXhwci5tb2RlbE5hbWV9PmAgOiBcIlwifSR7ZXhwci5wYXRofX1gO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJldHVybiBgeyR7ZXhwci5tb2RlbE5hbWUgPyBgJHtleHByLm1vZGVsTmFtZX0+YCA6IFwiXCJ9JHtleHByLnBhdGh9fWA7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdGNhc2UgXCJDb21wYXJpc29uXCI6XG5cdFx0XHRjb25zdCBjb21wYXJpc29uUGFydCA9IGAke2NvbXBpbGVCaW5kaW5nKGV4cHIub3BlcmFuZDEsIHRydWUpfSAke2V4cHIub3BlcmF0b3J9ICR7Y29tcGlsZUJpbmRpbmcoZXhwci5vcGVyYW5kMiwgdHJ1ZSl9YDtcblx0XHRcdGlmIChlbWJlZGRlZEluQmluZGluZykge1xuXHRcdFx0XHRyZXR1cm4gY29tcGFyaXNvblBhcnQ7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gYHs9ICR7Y29tcGFyaXNvblBhcnR9fWA7XG5cblx0XHRjYXNlIFwiSWZFbHNlXCI6XG5cdFx0XHRpZiAoZW1iZWRkZWRJbkJpbmRpbmcpIHtcblx0XHRcdFx0cmV0dXJuIGAoJHtjb21waWxlQmluZGluZyhleHByLmNvbmRpdGlvbiwgdHJ1ZSl9ID8gJHtjb21waWxlQmluZGluZyhleHByLm9uVHJ1ZSwgdHJ1ZSl9IDogJHtjb21waWxlQmluZGluZyhcblx0XHRcdFx0XHRleHByLm9uRmFsc2UsXG5cdFx0XHRcdFx0dHJ1ZVxuXHRcdFx0XHQpfSlgO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIGB7PSAke2NvbXBpbGVCaW5kaW5nKGV4cHIuY29uZGl0aW9uLCB0cnVlKX0gPyAke2NvbXBpbGVCaW5kaW5nKGV4cHIub25UcnVlLCB0cnVlKX0gOiAke2NvbXBpbGVCaW5kaW5nKFxuXHRcdFx0XHRcdGV4cHIub25GYWxzZSxcblx0XHRcdFx0XHR0cnVlXG5cdFx0XHRcdCl9fWA7XG5cdFx0XHR9XG5cblx0XHRjYXNlIFwiU2V0XCI6XG5cdFx0XHRpZiAoZW1iZWRkZWRJbkJpbmRpbmcpIHtcblx0XHRcdFx0cmV0dXJuIGAoJHtleHByLm9wZXJhbmRzLm1hcChleHByZXNzaW9uID0+IGNvbXBpbGVCaW5kaW5nKGV4cHJlc3Npb24sIHRydWUpKS5qb2luKGAgJHtleHByLm9wZXJhdG9yfSBgKX0pYDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiBgez0gKCR7ZXhwci5vcGVyYW5kcy5tYXAoZXhwcmVzc2lvbiA9PiBjb21waWxlQmluZGluZyhleHByZXNzaW9uLCB0cnVlKSkuam9pbihgICR7ZXhwci5vcGVyYXRvcn0gYCl9KX1gO1xuXHRcdFx0fVxuXG5cdFx0Y2FzZSBcIkNvbmNhdFwiOlxuXHRcdFx0aWYgKGVtYmVkZGVkSW5CaW5kaW5nKSB7XG5cdFx0XHRcdHJldHVybiBgJHtleHByLmV4cHJlc3Npb25zLm1hcChleHByZXNzaW9uID0+IGNvbXBpbGVCaW5kaW5nKGV4cHJlc3Npb24sIHRydWUsIHRydWUpKS5qb2luKGAgKyBgKX1gO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIGB7PSAke2V4cHIuZXhwcmVzc2lvbnMubWFwKGV4cHJlc3Npb24gPT4gY29tcGlsZUJpbmRpbmcoZXhwcmVzc2lvbiwgdHJ1ZSwgdHJ1ZSkpLmpvaW4oYCArIGApfSB9YDtcblx0XHRcdH1cblxuXHRcdGNhc2UgXCJOb3RcIjpcblx0XHRcdGlmIChlbWJlZGRlZEluQmluZGluZykge1xuXHRcdFx0XHRyZXR1cm4gYCEke2NvbXBpbGVCaW5kaW5nKGV4cHIub3BlcmFuZCwgdHJ1ZSl9YDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiBgez0gISR7Y29tcGlsZUJpbmRpbmcoZXhwci5vcGVyYW5kLCB0cnVlKX19YDtcblx0XHRcdH1cblxuXHRcdGNhc2UgXCJUcnV0aHlcIjpcblx0XHRcdGlmIChlbWJlZGRlZEluQmluZGluZykge1xuXHRcdFx0XHRyZXR1cm4gYCEhJHtjb21waWxlQmluZGluZyhleHByLm9wZXJhbmQsIHRydWUpfWA7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gYHs9ICEhJHtjb21waWxlQmluZGluZyhleHByLm9wZXJhbmQsIHRydWUpfX1gO1xuXHRcdFx0fVxuXG5cdFx0Y2FzZSBcIkZvcm1hdHRlclwiOlxuXHRcdFx0aWYgKGV4cHIucGFyYW1ldGVycy5sZW5ndGggPT09IDEpIHtcblx0XHRcdFx0b3V0UHJvcGVydHkgKz0gYHske2NvbXBpbGVQYXRoUGFyYW1ldGVyKGV4cHIucGFyYW1ldGVyc1swXSwgdHJ1ZSl9LCBmb3JtYXR0ZXI6ICcke2V4cHIuZm59J31gO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0b3V0UHJvcGVydHkgKz0gYHtwYXJ0czpbJHtleHByLnBhcmFtZXRlcnMubWFwKChwYXJhbTogYW55KSA9PiBjb21waWxlUGF0aFBhcmFtZXRlcihwYXJhbSkpLmpvaW4oXCIsXCIpfV0sIGZvcm1hdHRlcjogJyR7XG5cdFx0XHRcdFx0ZXhwci5mblxuXHRcdFx0XHR9J31gO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGVtYmVkZGVkSW5CaW5kaW5nKSB7XG5cdFx0XHRcdG91dFByb3BlcnR5ID0gYFxcJCR7b3V0UHJvcGVydHl9YDtcblx0XHRcdH1cblx0XHRcdHJldHVybiBvdXRQcm9wZXJ0eTtcblx0XHRjYXNlIFwiQ29tcGxleFR5cGVcIjpcblx0XHRcdGlmIChleHByLmJpbmRpbmdQYXJhbWV0ZXJzLmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0XHRvdXRQcm9wZXJ0eSArPSBgeyR7Y29tcGlsZVBhdGhQYXJhbWV0ZXIoZXhwci5iaW5kaW5nUGFyYW1ldGVyc1swXSwgdHJ1ZSl9LCB0eXBlOiAnJHtleHByLnR5cGV9J31gO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bGV0IG91dHB1dEVuZDtcblx0XHRcdFx0Ly8gdGhpcyBjb2RlIGlzIGJhc2VkIG9uIHNhcC51aS5tb2RlbC5vZGF0YS52NC5fQW5ub3RhdGlvbkhlbHBlckV4cHJlc3Npb24uZmV0Y2hDdXJyZW5jeU9yVW5pdFxuXHRcdFx0XHRzd2l0Y2ggKGV4cHIudHlwZSkge1xuXHRcdFx0XHRcdGNhc2UgXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5Vbml0XCI6XG5cdFx0XHRcdFx0XHRvdXRwdXRFbmQgPSBgLHttb2RlOidPbmVUaW1lJyxwYXRoOicvIyNAQHJlcXVlc3RVbml0c09mTWVhc3VyZScsdGFyZ2V0VHlwZTonYW55J31dLHR5cGU6J3NhcC51aS5tb2RlbC5vZGF0YS50eXBlLlVuaXQnYDtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5DdXJyZW5jeVwiOlxuXHRcdFx0XHRcdFx0b3V0cHV0RW5kID0gYCx7bW9kZTonT25lVGltZScscGF0aDonLyMjQEByZXF1ZXN0Q3VycmVuY3lDb2RlcycsdGFyZ2V0VHlwZTonYW55J31dLHR5cGU6J3NhcC51aS5tb2RlbC5vZGF0YS50eXBlLkN1cnJlbmN5J2A7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0b3V0cHV0RW5kID0gYF0sIHR5cGU6ICcke2V4cHIudHlwZX0nYDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoZXhwci5mb3JtYXRPcHRpb25zICYmIE9iamVjdC5rZXlzKGV4cHIuZm9ybWF0T3B0aW9ucykubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdG91dHB1dEVuZCArPSBgLCBmb3JtYXRPcHRpb25zOiAke2NvbXBpbGVCaW5kaW5nKGV4cHIuZm9ybWF0T3B0aW9ucyl9YDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoZXhwci5wYXJhbWV0ZXJzICYmIE9iamVjdC5rZXlzKGV4cHIucGFyYW1ldGVycykubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdG91dHB1dEVuZCArPSBgLCBwYXJhbWV0ZXJzOiAke2NvbXBpbGVCaW5kaW5nKGV4cHIucGFyYW1ldGVycyl9YDtcblx0XHRcdFx0fVxuXHRcdFx0XHRvdXRwdXRFbmQgKz0gXCJ9XCI7XG5cdFx0XHRcdG91dFByb3BlcnR5ICs9IGB7bW9kZTonVHdvV2F5JywgcGFydHM6WyR7ZXhwci5iaW5kaW5nUGFyYW1ldGVyc1xuXHRcdFx0XHRcdC5tYXAoKHBhcmFtOiBhbnkpID0+IGNvbXBpbGVQYXRoUGFyYW1ldGVyKHBhcmFtKSlcblx0XHRcdFx0XHQuam9pbihcIixcIil9JHtvdXRwdXRFbmR9YDtcblx0XHRcdH1cblx0XHRcdGlmIChlbWJlZGRlZEluQmluZGluZykge1xuXHRcdFx0XHRvdXRQcm9wZXJ0eSA9IGBcXCQke291dFByb3BlcnR5fWA7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gb3V0UHJvcGVydHk7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdHJldHVybiBcIlwiO1xuXHR9XG59XG5cbi8qKlxuICogQ29tcGlsZSB0aGUgcGF0aCBwYXJhbWV0ZXIgb2YgYSBmb3JtYXR0ZXIgY2FsbC5cbiAqXG4gKiBAcGFyYW0gZXhwcmVzc2lvbiBUaGUgYmluZGluZyBwYXJ0IHRvIGV2YWx1YXRlXG4gKiBAcGFyYW0gc2luZ2xlUGF0aCBXaGV0aGVyIHRoZXJlIGlzIG9uZSBvciBtdWx0aXBsZSBwYXRoIHRvIGNvbnNpZGVyXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgc3RyaW5nIHNuaXBwZXQgdG8gaW5jbHVkZSBpbiB0aGUgb3ZlcmFsbCBiaW5kaW5nIGRlZmluaXRpb25cbiAqL1xuZnVuY3Rpb24gY29tcGlsZVBhdGhQYXJhbWV0ZXIoZXhwcmVzc2lvbjogRXhwcmVzc2lvbjxhbnk+LCBzaW5nbGVQYXRoOiBib29sZWFuID0gZmFsc2UpOiBzdHJpbmcge1xuXHRsZXQgb3V0VmFsdWUgPSBcIlwiO1xuXHRzd2l0Y2ggKGV4cHJlc3Npb24uX3R5cGUpIHtcblx0XHRjYXNlIFwiQ29uc3RhbnRcIjpcblx0XHRcdHN3aXRjaCAodHlwZW9mIGV4cHJlc3Npb24udmFsdWUpIHtcblx0XHRcdFx0Y2FzZSBcIm51bWJlclwiOlxuXHRcdFx0XHRjYXNlIFwiYmlnaW50XCI6XG5cdFx0XHRcdFx0b3V0VmFsdWUgPSBgdmFsdWU6ICR7ZXhwcmVzc2lvbi52YWx1ZS50b1N0cmluZygpfWA7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgXCJzdHJpbmdcIjpcblx0XHRcdFx0Y2FzZSBcImJvb2xlYW5cIjpcblx0XHRcdFx0XHRvdXRWYWx1ZSA9IGB2YWx1ZTogJyR7ZXhwcmVzc2lvbi52YWx1ZS50b1N0cmluZygpfSdgO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdG91dFZhbHVlID0gXCJ2YWx1ZTogJydcIjtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGlmIChzaW5nbGVQYXRoKSB7XG5cdFx0XHRcdHJldHVybiBvdXRWYWx1ZTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBgeyR7b3V0VmFsdWV9fWA7XG5cblx0XHRjYXNlIFwiRGVmYXVsdEJpbmRpbmdcIjpcblx0XHRjYXNlIFwiQmluZGluZ1wiOlxuXHRcdFx0b3V0VmFsdWUgPSBgcGF0aDonJHtleHByZXNzaW9uLm1vZGVsTmFtZSA/IGAke2V4cHJlc3Npb24ubW9kZWxOYW1lfT5gIDogXCJcIn0ke2V4cHJlc3Npb24ucGF0aH0nYDtcblxuXHRcdFx0aWYgKGV4cHJlc3Npb24udHlwZSkge1xuXHRcdFx0XHRvdXRWYWx1ZSArPSBgLCB0eXBlIDogJyR7ZXhwcmVzc2lvbi50eXBlfSdgO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0b3V0VmFsdWUgKz0gYCwgdGFyZ2V0VHlwZSA6ICdhbnknYDtcblx0XHRcdH1cblx0XHRcdGlmIChleHByZXNzaW9uLmNvbnN0cmFpbnRzICYmIE9iamVjdC5rZXlzKGV4cHJlc3Npb24uY29uc3RyYWludHMpLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0b3V0VmFsdWUgKz0gYCwgY29uc3RyYWludHM6ICR7Y29tcGlsZUJpbmRpbmcoZXhwcmVzc2lvbi5jb25zdHJhaW50cyl9YDtcblx0XHRcdH1cblx0XHRcdGlmIChleHByZXNzaW9uLmZvcm1hdE9wdGlvbnMgJiYgT2JqZWN0LmtleXMoZXhwcmVzc2lvbi5mb3JtYXRPcHRpb25zKS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdG91dFZhbHVlICs9IGAsIGZvcm1hdE9wdGlvbnM6ICR7Y29tcGlsZUJpbmRpbmcoZXhwcmVzc2lvbi5mb3JtYXRPcHRpb25zKX1gO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGV4cHJlc3Npb24ucGFyYW1ldGVycyAmJiBPYmplY3Qua2V5cyhleHByZXNzaW9uLnBhcmFtZXRlcnMpLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0b3V0VmFsdWUgKz0gYCwgcGFyYW1ldGVyczogJHtjb21waWxlQmluZGluZyhleHByZXNzaW9uLnBhcmFtZXRlcnMpfWA7XG5cdFx0XHR9XG5cdFx0XHRpZiAoc2luZ2xlUGF0aCkge1xuXHRcdFx0XHRyZXR1cm4gb3V0VmFsdWU7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gYHske291dFZhbHVlfX1gO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRyZXR1cm4gXCJcIjtcblx0fVxufVxuIl19
|