@sapui5/sap.fe.core 1.99.0 → 1.101.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +6 -4
- package/src/sap/fe/core/.library +2 -3
- package/src/sap/fe/core/AnnotationHelper.js +43 -92
- package/src/sap/fe/core/AnnotationHelper.ts +43 -107
- package/src/sap/fe/core/AppComponent.js +381 -399
- package/src/sap/fe/core/AppComponent.ts +397 -0
- package/src/sap/fe/core/AppStateHandler.js +131 -162
- package/src/sap/fe/core/AppStateHandler.ts +2 -2
- package/src/sap/fe/core/BaseController.js +82 -58
- package/src/sap/fe/core/BaseController.ts +67 -0
- package/src/sap/fe/core/CommonUtils.js +179 -31
- package/src/sap/fe/core/CommonUtils.ts +295 -125
- package/src/sap/fe/core/ExtensionAPI.js +279 -274
- package/src/sap/fe/core/ExtensionAPI.ts +242 -0
- package/src/sap/fe/core/PageController.js +158 -29
- package/src/sap/fe/core/PageController.ts +65 -37
- package/src/sap/fe/core/RouterProxy.js +700 -750
- package/src/sap/fe/core/RouterProxy.ts +47 -31
- package/src/sap/fe/core/Synchronization.js +21 -31
- package/src/sap/fe/core/TemplateComponent.js +193 -118
- package/src/sap/fe/core/TemplateComponent.ts +104 -109
- package/src/sap/fe/core/TemplateModel.js +24 -44
- package/src/sap/fe/core/TemplateModel.ts +3 -3
- package/src/sap/fe/core/TransactionHelper.js +1368 -1369
- package/src/sap/fe/core/TransactionHelper.ts +201 -171
- package/src/sap/fe/core/actions/collaboration/ActivitySync.js +406 -0
- package/src/sap/fe/core/actions/collaboration/ActivitySync.ts +362 -0
- package/src/sap/fe/core/actions/collaboration/CollaborationCommon.js +146 -0
- package/src/sap/fe/core/actions/collaboration/CollaborationCommon.ts +129 -0
- package/src/sap/fe/core/actions/collaboration/Manage.js +264 -0
- package/src/sap/fe/core/actions/collaboration/Manage.ts +246 -0
- package/src/sap/fe/core/actions/collaboration/ManageDialog.fragment.xml +100 -0
- package/src/sap/fe/core/actions/collaboration/UserDetails.fragment.xml +13 -0
- package/src/sap/fe/core/actions/draft.js +324 -220
- package/src/sap/fe/core/actions/draft.ts +209 -133
- package/src/sap/fe/core/actions/messageHandling.js +79 -48
- package/src/sap/fe/core/actions/messageHandling.ts +113 -83
- package/src/sap/fe/core/actions/operations.js +37 -18
- package/src/sap/fe/core/actions/operations.ts +51 -20
- package/src/sap/fe/core/actions/sticky.js +17 -4
- package/src/sap/fe/core/actions/sticky.ts +21 -4
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js +60 -0
- package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +37 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +165 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +178 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +707 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +628 -0
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +436 -0
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +431 -0
- package/src/sap/fe/core/controllerextensions/EditFlow.js +1854 -1669
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +1792 -0
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +79 -54
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +60 -0
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +716 -779
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +785 -0
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +796 -816
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +810 -0
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +1056 -1005
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +1001 -0
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +498 -532
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +13 -12
- package/src/sap/fe/core/controllerextensions/MassEdit.js +141 -169
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +155 -0
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +221 -244
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +215 -0
- package/src/sap/fe/core/controllerextensions/PageReady.js +312 -345
- package/src/sap/fe/core/controllerextensions/PageReady.ts +57 -53
- package/src/sap/fe/core/controllerextensions/Paginator.js +188 -175
- package/src/sap/fe/core/controllerextensions/Paginator.ts +169 -0
- package/src/sap/fe/core/controllerextensions/Placeholder.js +157 -149
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +149 -0
- package/src/sap/fe/core/controllerextensions/Routing.js +144 -125
- package/src/sap/fe/core/controllerextensions/Routing.ts +131 -0
- package/src/sap/fe/core/controllerextensions/RoutingListener.js +7 -6
- package/src/sap/fe/core/controllerextensions/RoutingListener.ts +3 -0
- package/src/sap/fe/core/controllerextensions/Share.js +230 -268
- package/src/sap/fe/core/controllerextensions/Share.ts +231 -0
- package/src/sap/fe/core/controllerextensions/SideEffects.js +603 -644
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +68 -68
- package/src/sap/fe/core/controllerextensions/ViewState.js +774 -806
- package/src/sap/fe/core/controllerextensions/ViewState.ts +796 -0
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +2 -2
- package/src/sap/fe/core/controls/ActionPartial.fragment.xml +2 -2
- package/src/sap/fe/core/controls/Any.js +28 -0
- package/src/sap/fe/core/controls/Any.ts +30 -0
- package/src/sap/fe/core/controls/CommandExecution.js +92 -68
- package/src/sap/fe/core/controls/CommandExecution.ts +72 -0
- package/src/sap/fe/core/controls/ConditionalWrapper.js +165 -79
- package/src/sap/fe/core/controls/ConditionalWrapper.ts +74 -0
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +366 -0
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +278 -0
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +167 -125
- package/src/sap/fe/core/controls/CustomQuickViewPage.ts +116 -0
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossDraft.fragment.xml +44 -5
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +163 -122
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +155 -0
- package/src/sap/fe/core/controls/FieldWrapper.js +212 -141
- package/src/sap/fe/core/controls/FieldWrapper.ts +104 -0
- package/src/sap/fe/core/controls/FileWrapper.js +313 -0
- package/src/sap/fe/core/controls/FileWrapper.ts +169 -0
- package/src/sap/fe/core/controls/FilterBar.js +197 -159
- package/src/sap/fe/core/controls/FilterBar.ts +148 -0
- package/src/sap/fe/core/controls/FormElementWrapper.js +100 -39
- package/src/sap/fe/core/controls/FormElementWrapper.ts +37 -0
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +37 -42
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.ts +31 -0
- package/src/sap/fe/core/controls/filterbar/FilterContainer.js +147 -115
- package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +102 -0
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +300 -265
- package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +252 -0
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +185 -140
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +125 -0
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +335 -322
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +337 -0
- package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +37 -42
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +75 -74
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +71 -0
- package/src/sap/fe/core/converters/ConverterContext.js +348 -379
- package/src/sap/fe/core/converters/ConverterContext.ts +19 -16
- package/src/sap/fe/core/converters/ManifestSettings.js +13 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +17 -2
- package/src/sap/fe/core/converters/ManifestWrapper.js +354 -378
- package/src/sap/fe/core/converters/ManifestWrapper.ts +10 -0
- package/src/sap/fe/core/converters/MetaModelConverter.js +6 -4
- package/src/sap/fe/core/converters/MetaModelConverter.ts +5 -2
- package/src/sap/fe/core/converters/TemplateConverter.js +1 -1
- package/src/sap/fe/core/converters/TemplateConverter.ts +2 -1
- package/src/sap/fe/core/converters/annotations/DataField.js +26 -13
- package/src/sap/fe/core/converters/annotations/DataField.ts +40 -17
- package/src/sap/fe/core/converters/controls/Common/Action.js +10 -10
- package/src/sap/fe/core/converters/controls/Common/Action.ts +20 -19
- package/src/sap/fe/core/converters/controls/Common/Chart.js +8 -8
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +12 -11
- package/src/sap/fe/core/converters/controls/Common/Form.js +6 -6
- package/src/sap/fe/core/converters/controls/Common/Form.ts +7 -3
- package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +2 -2
- package/src/sap/fe/core/converters/controls/Common/Table.js +326 -86
- package/src/sap/fe/core/converters/controls/Common/Table.ts +384 -167
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +120 -55
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +158 -98
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +206 -223
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +263 -287
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +6 -6
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +20 -18
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +5 -2
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +4 -1
- package/src/sap/fe/core/converters/helpers/Aggregation.js +115 -133
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +20 -6
- package/src/sap/fe/core/converters/helpers/BindingHelper.ts +16 -4
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +12 -1
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +11 -0
- package/src/sap/fe/core/converters/helpers/Key.js +42 -57
- package/src/sap/fe/core/converters/helpers/Key.ts +1 -1
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +1 -1
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +0 -4
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +51 -27
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +69 -43
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +42 -25
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +91 -65
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +11 -9
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +8 -8
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +92 -98
- package/src/sap/fe/core/designtime/AppComponent.designtime.ts +91 -0
- package/src/sap/fe/core/formatters/CollaborationFormatter.js +104 -0
- package/src/sap/fe/core/formatters/CollaborationFormatter.ts +60 -0
- package/src/sap/fe/core/formatters/KPIFormatter.js +3 -12
- package/src/sap/fe/core/formatters/KPIFormatter.ts +3 -2
- package/src/sap/fe/core/formatters/TableFormatter.js +53 -2
- package/src/sap/fe/core/formatters/TableFormatter.ts +51 -0
- package/src/sap/fe/core/formatters/ValueFormatter.js +4 -4
- package/src/sap/fe/core/formatters/ValueFormatter.ts +4 -7
- package/src/sap/fe/core/fpm/Component.js +80 -55
- package/src/sap/fe/core/fpm/Component.ts +43 -0
- package/src/sap/fe/core/helpers/AppStartupHelper.js +323 -309
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +363 -337
- package/src/sap/fe/core/helpers/BindingExpression.js +7 -7
- package/src/sap/fe/core/helpers/BindingExpression.ts +7 -7
- package/src/sap/fe/core/helpers/ClassSupport.js +307 -166
- package/src/sap/fe/core/helpers/ClassSupport.ts +348 -155
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +5 -4
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -5
- package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
- package/src/sap/fe/core/helpers/FPMHelper.ts +1 -1
- package/src/sap/fe/core/helpers/MassEditHelper.js +735 -684
- package/src/sap/fe/core/helpers/MassEditHelper.ts +803 -0
- package/src/sap/fe/core/helpers/ModelHelper.js +53 -1
- package/src/sap/fe/core/helpers/ModelHelper.ts +46 -0
- package/src/sap/fe/core/helpers/PasteHelper.js +4 -4
- package/src/sap/fe/core/helpers/PasteHelper.ts +4 -3
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +7 -3
- package/src/sap/fe/core/helpers/SemanticDateOperators.ts +7 -1
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -1
- package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +1 -1
- package/src/sap/fe/core/helpers/StableIdHelper.js +1 -7
- package/src/sap/fe/core/helpers/StableIdHelper.ts +0 -4
- package/src/sap/fe/core/jsx-runtime/jsx.js +35 -5
- package/src/sap/fe/core/jsx-runtime/jsx.ts +22 -8
- package/src/sap/fe/core/library.js +425 -451
- package/src/sap/fe/core/library.support.js +22 -33
- package/src/sap/fe/core/library.support.ts +23 -0
- package/src/sap/fe/core/library.ts +420 -0
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +5 -3
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +4 -4
- package/src/sap/fe/core/messagebundle.properties +45 -13
- package/src/sap/fe/core/messagebundle_ar.properties +29 -7
- package/src/sap/fe/core/messagebundle_bg.properties +29 -7
- package/src/sap/fe/core/messagebundle_ca.properties +29 -7
- package/src/sap/fe/core/messagebundle_cs.properties +29 -7
- package/src/sap/fe/core/messagebundle_cy.properties +29 -7
- package/src/sap/fe/core/messagebundle_da.properties +29 -7
- package/src/sap/fe/core/messagebundle_de.properties +29 -7
- package/src/sap/fe/core/messagebundle_el.properties +29 -7
- package/src/sap/fe/core/messagebundle_en.properties +29 -7
- package/src/sap/fe/core/messagebundle_en_GB.properties +29 -7
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +29 -7
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +29 -7
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +29 -7
- package/src/sap/fe/core/messagebundle_es.properties +29 -7
- package/src/sap/fe/core/messagebundle_es_MX.properties +29 -7
- package/src/sap/fe/core/messagebundle_et.properties +29 -7
- package/src/sap/fe/core/messagebundle_fi.properties +30 -8
- package/src/sap/fe/core/messagebundle_fr.properties +31 -9
- package/src/sap/fe/core/messagebundle_fr_CA.properties +31 -9
- package/src/sap/fe/core/messagebundle_hi.properties +29 -7
- package/src/sap/fe/core/messagebundle_hr.properties +29 -7
- package/src/sap/fe/core/messagebundle_hu.properties +29 -7
- package/src/sap/fe/core/messagebundle_id.properties +29 -7
- package/src/sap/fe/core/messagebundle_it.properties +29 -7
- package/src/sap/fe/core/messagebundle_iw.properties +29 -7
- package/src/sap/fe/core/messagebundle_ja.properties +28 -6
- package/src/sap/fe/core/messagebundle_kk.properties +29 -7
- package/src/sap/fe/core/messagebundle_ko.properties +29 -7
- package/src/sap/fe/core/messagebundle_lt.properties +29 -7
- package/src/sap/fe/core/messagebundle_lv.properties +30 -8
- package/src/sap/fe/core/messagebundle_ms.properties +29 -7
- package/src/sap/fe/core/messagebundle_nl.properties +29 -7
- package/src/sap/fe/core/messagebundle_no.properties +29 -7
- package/src/sap/fe/core/messagebundle_pl.properties +29 -7
- package/src/sap/fe/core/messagebundle_pt.properties +30 -8
- package/src/sap/fe/core/messagebundle_pt_PT.properties +29 -7
- package/src/sap/fe/core/messagebundle_ro.properties +29 -7
- package/src/sap/fe/core/messagebundle_ru.properties +29 -7
- package/src/sap/fe/core/messagebundle_sh.properties +29 -7
- package/src/sap/fe/core/messagebundle_sk.properties +29 -7
- package/src/sap/fe/core/messagebundle_sl.properties +29 -7
- package/src/sap/fe/core/messagebundle_sv.properties +30 -8
- package/src/sap/fe/core/messagebundle_th.properties +28 -6
- package/src/sap/fe/core/messagebundle_tr.properties +32 -10
- package/src/sap/fe/core/messagebundle_uk.properties +29 -7
- package/src/sap/fe/core/messagebundle_vi.properties +29 -7
- package/src/sap/fe/core/messagebundle_zh_CN.properties +29 -7
- package/src/sap/fe/core/messagebundle_zh_TW.properties +29 -7
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +47 -73
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +1 -1
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +158 -196
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +5 -6
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +70 -96
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +7 -6
- package/src/sap/fe/core/services/NavigationServiceFactory.js +287 -342
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +11 -14
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +70 -105
- package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +6 -3
- package/src/sap/fe/core/services/RoutingServiceFactory.js +796 -820
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +62 -53
- package/src/sap/fe/core/services/ShellServicesFactory.js +694 -741
- package/src/sap/fe/core/services/ShellServicesFactory.ts +33 -33
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +570 -595
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +23 -4
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +357 -389
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +25 -29
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +43 -5
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +7 -4
- package/src/sap/fe/core/support/CommonHelper.js +1 -1
- package/src/sap/fe/core/support/CommonHelper.ts +1 -4
- package/src/sap/fe/core/support/Diagnostics.js +36 -48
- package/src/sap/fe/core/templating/DataModelPathHelper.js +91 -90
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +126 -123
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +23 -3
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +26 -5
- package/src/sap/fe/core/templating/FilterHelper.js +25 -32
- package/src/sap/fe/core/templating/FilterHelper.ts +36 -35
- package/src/sap/fe/core/templating/PropertyHelper.js +16 -2
- package/src/sap/fe/core/templating/PropertyHelper.ts +31 -24
- package/src/sap/fe/core/templating/UIFormatters.js +150 -44
- package/src/sap/fe/core/templating/UIFormatters.ts +165 -67
- package/src/sap/fe/core/type/Email.js +26 -8
- package/src/sap/fe/core/type/Email.ts +8 -7
- package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +0 -75
|
@@ -2,27 +2,35 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/base/util/ObjectPath", "sap/base/util/
|
|
5
|
+
sap.ui.define(["sap/base/util/merge", "sap/base/util/ObjectPath", "sap/base/util/uid", "sap/ui/base/Metadata", "sap/ui/core/mvc/ControllerMetadata"], function (merge, ObjectPath, uid, Metadata, ControllerMetadata) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _exports = {};
|
|
9
9
|
|
|
10
10
|
var ensureMetadata = function (target) {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}
|
|
21
|
-
|
|
11
|
+
target.metadata = merge({
|
|
12
|
+
controllerExtensions: {},
|
|
13
|
+
properties: {},
|
|
14
|
+
macroContexts: {},
|
|
15
|
+
aggregations: {},
|
|
16
|
+
associations: {},
|
|
17
|
+
methods: {},
|
|
18
|
+
events: {},
|
|
19
|
+
interfaces: []
|
|
20
|
+
}, target.metadata || {});
|
|
22
21
|
return target.metadata;
|
|
23
22
|
};
|
|
23
|
+
/* #region CONTROLLER EXTENSIONS */
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Defines that the following method is an override for the method name with the same name in the specific controller extension or base implementation.
|
|
27
|
+
*
|
|
28
|
+
* @param extensionName The name of the extension that will be overriden
|
|
29
|
+
* @returns The decorated method
|
|
30
|
+
*/
|
|
31
|
+
|
|
24
32
|
|
|
25
|
-
function
|
|
33
|
+
function methodOverride(extensionName) {
|
|
26
34
|
return function (target, propertyKey) {
|
|
27
35
|
if (!target.override) {
|
|
28
36
|
target.override = {};
|
|
@@ -30,297 +38,430 @@ sap.ui.define(["sap/base/util/ObjectPath", "sap/base/util/deepClone", "sap/ui/co
|
|
|
30
38
|
|
|
31
39
|
var currentTarget = target.override;
|
|
32
40
|
|
|
33
|
-
if (
|
|
41
|
+
if (extensionName) {
|
|
34
42
|
if (!currentTarget.extension) {
|
|
35
43
|
currentTarget.extension = {};
|
|
36
44
|
}
|
|
37
45
|
|
|
38
|
-
if (!currentTarget.extension[
|
|
39
|
-
currentTarget.extension[
|
|
46
|
+
if (!currentTarget.extension[extensionName]) {
|
|
47
|
+
currentTarget.extension[extensionName] = {};
|
|
40
48
|
}
|
|
41
49
|
|
|
42
|
-
currentTarget = currentTarget.extension[
|
|
50
|
+
currentTarget = currentTarget.extension[extensionName];
|
|
43
51
|
}
|
|
44
52
|
|
|
45
|
-
currentTarget[propertyKey] = target[propertyKey];
|
|
53
|
+
currentTarget[propertyKey.toString()] = target[propertyKey.toString()];
|
|
46
54
|
};
|
|
47
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Defines that the method can be extended by other controller extension based on the defined overrideExecutionType.
|
|
58
|
+
*
|
|
59
|
+
* @param overrideExecutionType The OverrideExecution defining when the override should run (Before / After / Instead)
|
|
60
|
+
* @returns The decorated method
|
|
61
|
+
*/
|
|
62
|
+
|
|
48
63
|
|
|
49
|
-
_exports.
|
|
64
|
+
_exports.methodOverride = methodOverride;
|
|
50
65
|
|
|
51
|
-
function
|
|
66
|
+
function extensible(overrideExecutionType) {
|
|
52
67
|
return function (target, propertyKey) {
|
|
53
68
|
var metadata = ensureMetadata(target);
|
|
54
69
|
|
|
55
|
-
if (!metadata.methods[propertyKey]) {
|
|
56
|
-
metadata.methods[propertyKey] = {};
|
|
70
|
+
if (!metadata.methods[propertyKey.toString()]) {
|
|
71
|
+
metadata.methods[propertyKey.toString()] = {};
|
|
57
72
|
}
|
|
58
73
|
|
|
59
|
-
metadata.methods[propertyKey].overrideExecution =
|
|
74
|
+
metadata.methods[propertyKey.toString()].overrideExecution = overrideExecutionType;
|
|
60
75
|
};
|
|
61
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* Defines that the method will be publicly available for controller extension usage.
|
|
79
|
+
*
|
|
80
|
+
* @returns The decorated method
|
|
81
|
+
*/
|
|
62
82
|
|
|
63
|
-
_exports.Extensible = Extensible;
|
|
64
83
|
|
|
65
|
-
|
|
66
|
-
var metadata = ensureMetadata(target);
|
|
84
|
+
_exports.extensible = extensible;
|
|
67
85
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
86
|
+
function publicExtension() {
|
|
87
|
+
return function (target, propertyKey, descriptor) {
|
|
88
|
+
var metadata = ensureMetadata(target);
|
|
89
|
+
descriptor.enumerable = true;
|
|
71
90
|
|
|
72
|
-
|
|
91
|
+
if (!metadata.methods[propertyKey.toString()]) {
|
|
92
|
+
metadata.methods[propertyKey.toString()] = {};
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
metadata.methods[propertyKey.toString()].public = true;
|
|
96
|
+
};
|
|
73
97
|
}
|
|
98
|
+
/**
|
|
99
|
+
* Defines that the method will be only available for internal usage of the controller extension.
|
|
100
|
+
*
|
|
101
|
+
* @returns The decorated method
|
|
102
|
+
*/
|
|
74
103
|
|
|
75
|
-
_exports.Public = Public;
|
|
76
104
|
|
|
77
|
-
|
|
78
|
-
var metadata = ensureMetadata(target);
|
|
105
|
+
_exports.publicExtension = publicExtension;
|
|
79
106
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
107
|
+
function privateExtension() {
|
|
108
|
+
return function (target, propertyKey, descriptor) {
|
|
109
|
+
var metadata = ensureMetadata(target);
|
|
110
|
+
descriptor.enumerable = true;
|
|
83
111
|
|
|
84
|
-
|
|
112
|
+
if (!metadata.methods[propertyKey.toString()]) {
|
|
113
|
+
metadata.methods[propertyKey.toString()] = {};
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
metadata.methods[propertyKey.toString()].public = false;
|
|
117
|
+
};
|
|
85
118
|
}
|
|
119
|
+
/**
|
|
120
|
+
* Defines that the method cannot be further extended by other controller extension.
|
|
121
|
+
*
|
|
122
|
+
* @returns The decorated method
|
|
123
|
+
*/
|
|
86
124
|
|
|
87
|
-
_exports.Private = Private;
|
|
88
125
|
|
|
89
|
-
|
|
90
|
-
var metadata = ensureMetadata(target);
|
|
126
|
+
_exports.privateExtension = privateExtension;
|
|
91
127
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
128
|
+
function finalExtension() {
|
|
129
|
+
return function (target, propertyKey, descriptor) {
|
|
130
|
+
var metadata = ensureMetadata(target);
|
|
131
|
+
descriptor.enumerable = true;
|
|
132
|
+
|
|
133
|
+
if (!metadata.methods[propertyKey.toString()]) {
|
|
134
|
+
metadata.methods[propertyKey.toString()] = {};
|
|
135
|
+
}
|
|
95
136
|
|
|
96
|
-
|
|
137
|
+
metadata.methods[propertyKey.toString()].final = true;
|
|
138
|
+
};
|
|
97
139
|
}
|
|
140
|
+
/**
|
|
141
|
+
* Defines that we are going to use instantiate a controller extension under the following variable name.
|
|
142
|
+
*
|
|
143
|
+
* @param extensionClass The controller extension that will be instantiated
|
|
144
|
+
* @returns The decorated property
|
|
145
|
+
*/
|
|
98
146
|
|
|
99
|
-
_exports.Final = Final;
|
|
100
147
|
|
|
101
|
-
|
|
102
|
-
var metadata = ensureMetadata(target);
|
|
148
|
+
_exports.finalExtension = finalExtension;
|
|
103
149
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
150
|
+
function usingExtension(extensionClass) {
|
|
151
|
+
return function (target, propertyKey, propertyDescriptor) {
|
|
152
|
+
var metadata = ensureMetadata(target);
|
|
153
|
+
delete propertyDescriptor.initializer;
|
|
154
|
+
metadata.controllerExtensions[propertyKey.toString()] = extensionClass;
|
|
155
|
+
return propertyDescriptor;
|
|
156
|
+
}; // This is technically an accessor decorator, but somehow the compiler doesn't like it if i declare it as such.
|
|
107
157
|
}
|
|
158
|
+
/* #endregion */
|
|
108
159
|
|
|
109
|
-
|
|
160
|
+
/* #region CONTROL */
|
|
110
161
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
}
|
|
162
|
+
/**
|
|
163
|
+
* Indicates that the property shall be declared as an event on the control metadata.
|
|
164
|
+
*
|
|
165
|
+
* @returns The decorated property
|
|
166
|
+
*/
|
|
117
167
|
|
|
118
|
-
_exports.EventHandler = EventHandler;
|
|
119
168
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
169
|
+
_exports.usingExtension = usingExtension;
|
|
170
|
+
|
|
171
|
+
function event() {
|
|
172
|
+
return function (target, eventKey) {
|
|
173
|
+
var metadata = ensureMetadata(target);
|
|
174
|
+
|
|
175
|
+
if (!metadata.events[eventKey.toString()]) {
|
|
176
|
+
metadata.events[eventKey.toString()] = {};
|
|
177
|
+
}
|
|
178
|
+
};
|
|
127
179
|
}
|
|
180
|
+
/**
|
|
181
|
+
* Defines the following property in the control metatada.
|
|
182
|
+
*
|
|
183
|
+
* @param ui5PropertyMetadata The property definition
|
|
184
|
+
* @returns The decorated property.
|
|
185
|
+
*/
|
|
128
186
|
|
|
129
|
-
_exports.MacroContext = MacroContext;
|
|
130
187
|
|
|
131
|
-
|
|
188
|
+
_exports.event = event;
|
|
189
|
+
|
|
190
|
+
function property(ui5PropertyMetadata) {
|
|
132
191
|
return function (target, propertyKey, propertyDescriptor) {
|
|
133
192
|
var metadata = ensureMetadata(target);
|
|
134
193
|
|
|
135
|
-
if (oPropertyParams !== null && oPropertyParams !== void 0 && oPropertyParams.macroContext) {
|
|
136
|
-
if (!metadata.macroContexts[propertyKey]) {
|
|
137
|
-
metadata.macroContexts[propertyKey] = oPropertyParams;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
|
|
141
194
|
if (!metadata.properties[propertyKey]) {
|
|
142
|
-
metadata.properties[propertyKey] =
|
|
195
|
+
metadata.properties[propertyKey] = ui5PropertyMetadata;
|
|
143
196
|
}
|
|
144
197
|
|
|
145
198
|
delete propertyDescriptor.writable;
|
|
146
199
|
delete propertyDescriptor.initializer;
|
|
147
|
-
|
|
148
|
-
propertyDescriptor.set = function (v) {
|
|
149
|
-
return this.setProperty(propertyKey, v);
|
|
150
|
-
};
|
|
151
|
-
|
|
152
|
-
propertyDescriptor.get = function () {
|
|
153
|
-
return this.getProperty(propertyKey);
|
|
154
|
-
};
|
|
155
|
-
|
|
156
200
|
return propertyDescriptor;
|
|
157
|
-
};
|
|
201
|
+
}; // This is technically an accessor decorator, but somehow the compiler doesn't like it if i declare it as such.;
|
|
158
202
|
}
|
|
203
|
+
/**
|
|
204
|
+
* Defines and configure the following aggregation in the control metatada.
|
|
205
|
+
*
|
|
206
|
+
* @param ui5AggregationMetadata The aggregation definition
|
|
207
|
+
* @returns The decorated property.
|
|
208
|
+
*/
|
|
209
|
+
|
|
159
210
|
|
|
160
|
-
_exports.
|
|
211
|
+
_exports.property = property;
|
|
161
212
|
|
|
162
|
-
function
|
|
213
|
+
function aggregation(ui5AggregationMetadata) {
|
|
163
214
|
return function (target, propertyKey, propertyDescriptor) {
|
|
164
215
|
var metadata = ensureMetadata(target);
|
|
165
216
|
|
|
217
|
+
if (ui5AggregationMetadata.multiple === undefined) {
|
|
218
|
+
// UI5 defaults this to true but this is just weird...
|
|
219
|
+
ui5AggregationMetadata.multiple = false;
|
|
220
|
+
}
|
|
221
|
+
|
|
166
222
|
if (!metadata.aggregations[propertyKey]) {
|
|
167
|
-
metadata.aggregations[propertyKey] =
|
|
223
|
+
metadata.aggregations[propertyKey] = ui5AggregationMetadata;
|
|
168
224
|
}
|
|
169
225
|
|
|
170
|
-
if (
|
|
226
|
+
if (ui5AggregationMetadata.isDefault) {
|
|
171
227
|
metadata.defaultAggregation = propertyKey;
|
|
172
228
|
}
|
|
173
229
|
|
|
174
230
|
delete propertyDescriptor.writable;
|
|
175
231
|
delete propertyDescriptor.initializer;
|
|
176
|
-
|
|
177
|
-
propertyDescriptor.set = function (v) {
|
|
178
|
-
return this.setAggregation(propertyKey, v);
|
|
179
|
-
};
|
|
180
|
-
|
|
181
|
-
propertyDescriptor.get = function () {
|
|
182
|
-
return this.getAggregation(propertyKey);
|
|
183
|
-
};
|
|
184
|
-
|
|
185
232
|
return propertyDescriptor;
|
|
186
|
-
};
|
|
233
|
+
}; // This is technically an accessor decorator, but somehow the compiler doesn't like it if i declare it as such.;
|
|
187
234
|
}
|
|
235
|
+
/**
|
|
236
|
+
* Defines and configure the following association in the control metatada.
|
|
237
|
+
*
|
|
238
|
+
* @param ui5AssociationMetadata The definition of the association.
|
|
239
|
+
* @returns The decorated property
|
|
240
|
+
*/
|
|
241
|
+
|
|
188
242
|
|
|
189
|
-
_exports.
|
|
243
|
+
_exports.aggregation = aggregation;
|
|
190
244
|
|
|
191
|
-
function
|
|
245
|
+
function association(ui5AssociationMetadata) {
|
|
192
246
|
return function (target, propertyKey, propertyDescriptor) {
|
|
193
247
|
var metadata = ensureMetadata(target);
|
|
194
248
|
|
|
195
249
|
if (!metadata.associations[propertyKey]) {
|
|
196
|
-
metadata.associations[propertyKey] =
|
|
250
|
+
metadata.associations[propertyKey] = ui5AssociationMetadata;
|
|
197
251
|
}
|
|
198
252
|
|
|
199
253
|
delete propertyDescriptor.writable;
|
|
200
254
|
delete propertyDescriptor.initializer;
|
|
255
|
+
return propertyDescriptor;
|
|
256
|
+
}; // This is technically an accessor decorator, but somehow the compiler doesn't like it if i declare it as such.;
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Defines in the metadata that this control implements a specific interface.
|
|
260
|
+
*
|
|
261
|
+
* @param interfaceName The name of the implemented interface
|
|
262
|
+
* @returns The decorated method
|
|
263
|
+
*/
|
|
201
264
|
|
|
202
|
-
propertyDescriptor.set = function (v) {
|
|
203
|
-
return this.setAggregation(propertyKey, v);
|
|
204
|
-
};
|
|
205
265
|
|
|
206
|
-
|
|
207
|
-
return this.getAggregation(propertyKey);
|
|
208
|
-
};
|
|
266
|
+
_exports.association = association;
|
|
209
267
|
|
|
210
|
-
|
|
268
|
+
function implementInterface(interfaceName) {
|
|
269
|
+
return function (target) {
|
|
270
|
+
var metadata = ensureMetadata(target);
|
|
271
|
+
metadata.interfaces.push(interfaceName);
|
|
211
272
|
};
|
|
212
273
|
}
|
|
213
|
-
|
|
214
|
-
_exports.Association = Association;
|
|
215
|
-
|
|
216
274
|
/**
|
|
217
|
-
*
|
|
275
|
+
* Indicates that the following method should also be exposed statically so we can call it from the XML.
|
|
218
276
|
*
|
|
219
|
-
* @
|
|
220
|
-
* @param isDependentBound Whether this API will be used as a dependent or not
|
|
221
|
-
* @class
|
|
277
|
+
* @returns The decorated method
|
|
222
278
|
*/
|
|
223
|
-
function APIClass(sTarget) {
|
|
224
|
-
var isDependentBound = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
225
|
-
return function (constructor) {
|
|
226
|
-
if (!constructor.prototype.metadata) {
|
|
227
|
-
constructor.prototype.metadata = {};
|
|
228
|
-
}
|
|
229
279
|
|
|
230
|
-
if (!constructor.prototype.metadata.interfaces) {
|
|
231
|
-
constructor.prototype.metadata.interfaces = [];
|
|
232
|
-
}
|
|
233
280
|
|
|
234
|
-
|
|
235
|
-
constructor.isDependentBound = isDependentBound;
|
|
281
|
+
_exports.implementInterface = implementInterface;
|
|
236
282
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
render: function (oRm, oControl) {
|
|
241
|
-
oRm.renderControl(oControl.getContent());
|
|
242
|
-
}
|
|
243
|
-
};
|
|
244
|
-
}
|
|
283
|
+
function xmlEventHandler() {
|
|
284
|
+
return function (target, propertykey) {
|
|
285
|
+
var currentConstructor = target.constructor;
|
|
245
286
|
|
|
246
|
-
|
|
287
|
+
currentConstructor[propertykey.toString()] = function () {
|
|
288
|
+
var currentTarget = currentConstructor.getAPI(arguments.length <= 0 ? undefined : arguments[0]);
|
|
289
|
+
currentTarget[propertykey.toString()].apply(currentTarget, arguments);
|
|
290
|
+
};
|
|
247
291
|
};
|
|
248
292
|
}
|
|
293
|
+
/**
|
|
294
|
+
* Indicates that the following class should define a ui5 control of the specified name.
|
|
295
|
+
*
|
|
296
|
+
* @param sTarget The fully qualified name of the macro API
|
|
297
|
+
* @param metadataDefinition Inline metadata definition
|
|
298
|
+
* @class
|
|
299
|
+
*/
|
|
249
300
|
|
|
250
|
-
_exports.APIClass = APIClass;
|
|
251
301
|
|
|
252
|
-
|
|
302
|
+
_exports.xmlEventHandler = xmlEventHandler;
|
|
303
|
+
|
|
304
|
+
function defineUI5Class(sTarget, metadataDefinition) {
|
|
253
305
|
return function (constructor) {
|
|
254
306
|
if (!constructor.prototype.metadata) {
|
|
255
307
|
constructor.prototype.metadata = {};
|
|
256
308
|
}
|
|
257
309
|
|
|
258
|
-
if (metadataDefinition
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
if (metadataDefinition !== null && metadataDefinition !== void 0 && metadataDefinition.events) {
|
|
263
|
-
constructor.prototype.metadata.events = metadataDefinition.events;
|
|
310
|
+
if (metadataDefinition) {
|
|
311
|
+
for (var key in metadataDefinition) {
|
|
312
|
+
constructor.prototype.metadata[key] = metadataDefinition[key];
|
|
313
|
+
}
|
|
264
314
|
}
|
|
265
315
|
|
|
266
|
-
|
|
316
|
+
return registerUI5Metadata(constructor, sTarget, constructor.prototype);
|
|
267
317
|
};
|
|
268
318
|
}
|
|
319
|
+
/**
|
|
320
|
+
* Internal heavy lifting that will take care of creating the class property for ui5 to use.
|
|
321
|
+
*
|
|
322
|
+
* @param clazz The class prototype
|
|
323
|
+
* @param name The name of the class to create
|
|
324
|
+
* @param inObj The metadata object
|
|
325
|
+
* @returns The metadata class
|
|
326
|
+
*/
|
|
327
|
+
|
|
328
|
+
|
|
329
|
+
_exports.defineUI5Class = defineUI5Class;
|
|
269
330
|
|
|
270
|
-
|
|
331
|
+
function registerUI5Metadata(clazz, name, inObj) {
|
|
332
|
+
var _clazz$getMetadata, _inObj$metadata, _clazz$metadata, _obj$metadata;
|
|
271
333
|
|
|
272
|
-
|
|
273
|
-
|
|
334
|
+
if (clazz.getMetadata && clazz.getMetadata().isA("sap.ui.core.mvc.ControllerExtension")) {
|
|
335
|
+
Object.getOwnPropertyNames(inObj).forEach(function (objName) {
|
|
336
|
+
var descriptor = Object.getOwnPropertyDescriptor(inObj, objName);
|
|
337
|
+
|
|
338
|
+
if (descriptor && !descriptor.enumerable) {
|
|
339
|
+
descriptor.enumerable = true; // Log.error(`Property ${objName} from ${name} should be decorated as public`);
|
|
340
|
+
}
|
|
341
|
+
});
|
|
342
|
+
}
|
|
274
343
|
|
|
275
344
|
var obj = {};
|
|
276
345
|
obj.metadata = inObj.metadata || {};
|
|
277
346
|
obj.override = inObj.override;
|
|
278
347
|
obj.constructor = clazz;
|
|
279
348
|
obj.metadata.baseType = Object.getPrototypeOf(clazz.prototype).getMetadata().getName();
|
|
280
|
-
|
|
349
|
+
|
|
350
|
+
if ((clazz === null || clazz === void 0 ? void 0 : (_clazz$getMetadata = clazz.getMetadata()) === null || _clazz$getMetadata === void 0 ? void 0 : _clazz$getMetadata.getStereotype()) === "control") {
|
|
351
|
+
var rendererDefinition = inObj.renderer || clazz.renderer || clazz.render;
|
|
352
|
+
obj.renderer = {
|
|
353
|
+
apiVersion: 2
|
|
354
|
+
};
|
|
355
|
+
|
|
356
|
+
if (typeof rendererDefinition === "function") {
|
|
357
|
+
obj.renderer.render = rendererDefinition;
|
|
358
|
+
} else if (rendererDefinition != undefined) {
|
|
359
|
+
obj.renderer = rendererDefinition;
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
|
|
281
363
|
obj.metadata.interfaces = ((_inObj$metadata = inObj.metadata) === null || _inObj$metadata === void 0 ? void 0 : _inObj$metadata.interfaces) || ((_clazz$metadata = clazz.metadata) === null || _clazz$metadata === void 0 ? void 0 : _clazz$metadata.interfaces);
|
|
282
|
-
|
|
364
|
+
Object.keys(clazz.prototype).forEach(function (key) {
|
|
365
|
+
if (key !== "metadata") {
|
|
366
|
+
try {
|
|
367
|
+
obj[key] = clazz.prototype[key];
|
|
368
|
+
} catch (e) {//console.log(e);
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
});
|
|
283
372
|
|
|
284
|
-
if (
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
373
|
+
if ((_obj$metadata = obj.metadata) !== null && _obj$metadata !== void 0 && _obj$metadata.controllerExtensions && Object.keys(obj.metadata.controllerExtensions).length > 0) {
|
|
374
|
+
for (var cExtName in obj.metadata.controllerExtensions) {
|
|
375
|
+
obj[cExtName] = obj.metadata.controllerExtensions[cExtName];
|
|
376
|
+
}
|
|
288
377
|
}
|
|
289
378
|
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
};
|
|
379
|
+
var output = clazz.extend(name, obj);
|
|
380
|
+
var fnInit = output.prototype.init;
|
|
293
381
|
|
|
294
|
-
|
|
382
|
+
output.prototype.init = function () {
|
|
383
|
+
var _this = this;
|
|
295
384
|
|
|
296
|
-
clazz.prototype.init = function () {
|
|
297
385
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
298
386
|
args[_key] = arguments[_key];
|
|
299
387
|
}
|
|
300
388
|
|
|
301
389
|
fnInit && fnInit.apply(this, args);
|
|
390
|
+
this.metadata = obj.metadata;
|
|
302
391
|
|
|
303
392
|
if (obj.metadata.properties) {
|
|
304
|
-
var aPropertyKeys = Object.keys(obj.metadata.properties);
|
|
305
|
-
|
|
306
|
-
var that = this;
|
|
393
|
+
var aPropertyKeys = Object.keys(obj.metadata.properties);
|
|
307
394
|
aPropertyKeys.forEach(function (propertyKey) {
|
|
308
|
-
Object.defineProperty(
|
|
395
|
+
Object.defineProperty(_this, propertyKey, {
|
|
309
396
|
configurable: true,
|
|
310
397
|
set: function (v) {
|
|
311
|
-
return
|
|
398
|
+
return _this.setProperty(propertyKey, v);
|
|
312
399
|
},
|
|
313
400
|
get: function () {
|
|
314
|
-
return
|
|
401
|
+
return _this.getProperty(propertyKey);
|
|
402
|
+
}
|
|
403
|
+
});
|
|
404
|
+
});
|
|
405
|
+
var aAggregationKeys = Object.keys(obj.metadata.aggregations);
|
|
406
|
+
aAggregationKeys.forEach(function (aggregationKey) {
|
|
407
|
+
Object.defineProperty(_this, aggregationKey, {
|
|
408
|
+
configurable: true,
|
|
409
|
+
set: function (v) {
|
|
410
|
+
return _this.setAggregation(aggregationKey, v);
|
|
411
|
+
},
|
|
412
|
+
get: function () {
|
|
413
|
+
var aggregationContent = _this.getAggregation(aggregationKey);
|
|
414
|
+
|
|
415
|
+
if (obj.metadata.aggregations[aggregationKey].multiple) {
|
|
416
|
+
return aggregationContent || [];
|
|
417
|
+
} else {
|
|
418
|
+
return aggregationContent;
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
});
|
|
422
|
+
});
|
|
423
|
+
var aAssociationKeys = Object.keys(obj.metadata.associations);
|
|
424
|
+
aAssociationKeys.forEach(function (associationKey) {
|
|
425
|
+
Object.defineProperty(_this, associationKey, {
|
|
426
|
+
configurable: true,
|
|
427
|
+
set: function (v) {
|
|
428
|
+
return _this.setAssociation(associationKey, v);
|
|
429
|
+
},
|
|
430
|
+
get: function () {
|
|
431
|
+
var aggregationContent = _this.getAssociation(associationKey);
|
|
432
|
+
|
|
433
|
+
if (obj.metadata.associations[associationKey].multiple) {
|
|
434
|
+
return aggregationContent || [];
|
|
435
|
+
} else {
|
|
436
|
+
return aggregationContent;
|
|
437
|
+
}
|
|
315
438
|
}
|
|
316
439
|
});
|
|
317
440
|
});
|
|
318
441
|
}
|
|
319
442
|
};
|
|
320
443
|
|
|
321
|
-
|
|
444
|
+
clazz.override = function (oExtension) {
|
|
445
|
+
var pol = {};
|
|
446
|
+
|
|
447
|
+
pol.constructor = function () {
|
|
448
|
+
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
449
|
+
args[_key2] = arguments[_key2];
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
return clazz.apply(this, args);
|
|
453
|
+
};
|
|
454
|
+
|
|
455
|
+
var oClass = Metadata.createClass(clazz, "anonymousExtension~" + uid(), pol, ControllerMetadata);
|
|
456
|
+
oClass.getMetadata()._staticOverride = oExtension;
|
|
457
|
+
oClass.getMetadata()._override = clazz.getMetadata()._override;
|
|
458
|
+
return oClass;
|
|
459
|
+
};
|
|
460
|
+
|
|
461
|
+
ObjectPath.set(name, output);
|
|
462
|
+
return output;
|
|
322
463
|
}
|
|
323
464
|
|
|
324
465
|
return _exports;
|
|
325
466
|
}, false);
|
|
326
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNsYXNzU3VwcG9ydC50cyJdLCJuYW1lcyI6WyJlbnN1cmVNZXRhZGF0YSIsInRhcmdldCIsImhhc093blByb3BlcnR5IiwibWV0YWRhdGEiLCJkZWVwQ2xvbmUiLCJwcm9wZXJ0aWVzIiwibWFjcm9Db250ZXh0cyIsImFnZ3JlZ2F0aW9ucyIsImFzc29jaWF0aW9ucyIsIm1ldGhvZHMiLCJldmVudHMiLCJPdmVycmlkZSIsInNUYXJnZXQiLCJwcm9wZXJ0eUtleSIsIm92ZXJyaWRlIiwiY3VycmVudFRhcmdldCIsImV4dGVuc2lvbiIsIkV4dGVuc2libGUiLCJvT3ZlcnJpZGVFeGVjdXRpb24iLCJvdmVycmlkZUV4ZWN1dGlvbiIsIlB1YmxpYyIsInB1YmxpYyIsIlByaXZhdGUiLCJGaW5hbCIsImZpbmFsIiwiRXZlbnQiLCJldmVudEtleSIsIkV2ZW50SGFuZGxlciIsInByb3BlcnR5a2V5IiwiY29uc3RydWN0b3IiLCJnZXRBUEkiLCJNYWNyb0NvbnRleHQiLCJiTWV0YU1vZGVsT2JqZWN0IiwiUHJvcGVydHkiLCJ0eXBlIiwibWFjcm9Db250ZXh0IiwibWV0YU1vZGVsT2JqZWN0Iiwib1Byb3BlcnR5UGFyYW1zIiwicHJvcGVydHlEZXNjcmlwdG9yIiwid3JpdGFibGUiLCJpbml0aWFsaXplciIsInNldCIsInYiLCJzZXRQcm9wZXJ0eSIsImdldCIsImdldFByb3BlcnR5IiwiQWdncmVnYXRpb24iLCJvQWdncmVnYXRpb25EZXNjcmlwdG9yIiwiaXNEZWZhdWx0IiwiZGVmYXVsdEFnZ3JlZ2F0aW9uIiwic2V0QWdncmVnYXRpb24iLCJnZXRBZ2dyZWdhdGlvbiIsIkFzc29jaWF0aW9uIiwib0Fzc29jaWF0aW9uRGVzY3JpcHRpb24iLCJBUElDbGFzcyIsImlzRGVwZW5kZW50Qm91bmQiLCJwcm90b3R5cGUiLCJpbnRlcmZhY2VzIiwicHVzaCIsInJlbmRlcmVyIiwiYXBpVmVyc2lvbiIsInJlbmRlciIsIm9SbSIsIm9Db250cm9sIiwicmVuZGVyQ29udHJvbCIsImdldENvbnRlbnQiLCJkZXNjcmliZSIsIkVsZW1lbnRNZXRhZGF0YSIsIlVJNUNsYXNzIiwibWV0YWRhdGFDbGFzcyIsIm1ldGFkYXRhRGVmaW5pdGlvbiIsImNsYXp6IiwibmFtZSIsImluT2JqIiwib2JqIiwiYmFzZVR5cGUiLCJPYmplY3QiLCJnZXRQcm90b3R5cGVPZiIsImdldE1ldGFkYXRhIiwiZ2V0TmFtZSIsImZuSW5pdCIsImluaXQiLCJhcmdzIiwiYXBwbHkiLCJhUHJvcGVydHlLZXlzIiwia2V5cyIsInRoYXQiLCJmb3JFYWNoIiwiZGVmaW5lUHJvcGVydHkiLCJjb25maWd1cmFibGUiLCJPYmplY3RQYXRoIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7QUFJQSxNQUFNQSxjQUFjLEdBQUcsVUFBU0MsTUFBVCxFQUFzQjtBQUM1QyxRQUFJLENBQUNBLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQixVQUF0QixDQUFMLEVBQXdDO0FBQ3ZDRCxNQUFBQSxNQUFNLENBQUNFLFFBQVAsR0FBa0JDLFNBQVMsQ0FDMUJILE1BQU0sQ0FBQ0UsUUFBUCxJQUFtQjtBQUNsQkUsUUFBQUEsVUFBVSxFQUFFLEVBRE07QUFFbEJDLFFBQUFBLGFBQWEsRUFBRSxFQUZHO0FBR2xCQyxRQUFBQSxZQUFZLEVBQUUsRUFISTtBQUlsQkMsUUFBQUEsWUFBWSxFQUFFLEVBSkk7QUFLbEJDLFFBQUFBLE9BQU8sRUFBRSxFQUxTO0FBTWxCQyxRQUFBQSxNQUFNLEVBQUU7QUFOVSxPQURPLENBQTNCO0FBVUE7O0FBQ0QsV0FBT1QsTUFBTSxDQUFDRSxRQUFkO0FBQ0EsR0FkRDs7QUFlTyxXQUFTUSxRQUFULENBQWtCQyxPQUFsQixFQUFvQztBQUMxQyxXQUFPLFVBQVNYLE1BQVQsRUFBc0JZLFdBQXRCLEVBQTJDO0FBQ2pELFVBQUksQ0FBQ1osTUFBTSxDQUFDYSxRQUFaLEVBQXNCO0FBQ3JCYixRQUFBQSxNQUFNLENBQUNhLFFBQVAsR0FBa0IsRUFBbEI7QUFDQTs7QUFDRCxVQUFJQyxhQUFh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LElBQUksQ0FBQzNDLFdBQUwsQ0FBaUI5QixXQUFqQixFQUE4QjZCLENBQTlCLENBQVA7QUFDQSxhQUp1QztBQUt4Q0UsWUFBQUEsR0FBRyxFQUFFLFlBQU07QUFDVixxQkFBTzBDLElBQUksQ0FBQ3pDLFdBQUwsQ0FBaUJoQyxXQUFqQixDQUFQO0FBQ0E7QUFQdUMsV0FBekM7QUFTQSxTQVZEO0FBV0E7QUFDRCxLQWxCRDs7QUFtQkE2RSxJQUFBQSxVQUFVLENBQUNqRCxHQUFYLENBQWUrQixJQUFmLEVBQXFCRCxLQUFyQjtBQUNBIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgT3ZlcnJpZGVFeGVjdXRpb24gZnJvbSBcInNhcC91aS9jb3JlL212Yy9PdmVycmlkZUV4ZWN1dGlvblwiO1xuaW1wb3J0IE9iamVjdFBhdGggZnJvbSBcInNhcC9iYXNlL3V0aWwvT2JqZWN0UGF0aFwiO1xuaW1wb3J0IGRlZXBDbG9uZSBmcm9tIFwic2FwL2Jhc2UvdXRpbC9kZWVwQ2xvbmVcIjtcbmltcG9ydCBFbGVtZW50TWV0YWRhdGEgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRNZXRhZGF0YVwiO1xuaW1wb3J0IFJlbmRlck1hbmFnZXIgZnJvbSBcInNhcC91aS9jb3JlL1JlbmRlck1hbmFnZXJcIjtcblxuY29uc3QgZW5zdXJlTWV0YWRhdGEgPSBmdW5jdGlvbih0YXJnZXQ6IGFueSkge1xuXHRpZiAoIXRhcmdldC5oYXNPd25Qcm9wZXJ0eShcIm1ldGFkYXRhXCIpKSB7XG5cdFx0dGFyZ2V0Lm1ldGFkYXRhID0gZGVlcENsb25lKFxuXHRcdFx0dGFyZ2V0Lm1ldGFkYXRhIHx8IHtcblx0XHRcdFx0cHJvcGVydGllczoge30sXG5cdFx0XHRcdG1hY3JvQ29udGV4dHM6IHt9LFxuXHRcdFx0XHRhZ2dyZWdhdGlvbnM6IHt9LFxuXHRcdFx0XHRhc3NvY2lhdGlvbnM6IHt9LFxuXHRcdFx0XHRtZXRob2RzOiB7fSxcblx0XHRcdFx0ZXZlbnRzOiB7fVxuXHRcdFx0fVxuXHRcdCk7XG5cdH1cblx0cmV0dXJuIHRhcmdldC5tZXRhZGF0YTtcbn07XG5leHBvcnQgZnVuY3Rpb24gT3ZlcnJpZGUoc1RhcmdldD86IHN0cmluZykge1xuXHRyZXR1cm4gZnVuY3Rpb24odGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcblx0XHRpZiAoIXRhcmdldC5vdmVycmlkZSkge1xuXHRcdFx0dGFyZ2V0Lm92ZXJyaWRlID0ge307XG5cdFx0fVxuXHRcdGxldCBjdXJyZW50VGFyZ2V0ID0gdGFyZ2V0Lm92ZXJyaWRlO1xuXHRcdGlmIChzVGFyZ2V0KSB7XG5cdFx0XHRpZiAoIWN1cnJlbnRUYXJnZXQuZXh0ZW5zaW9uKSB7XG5cdFx0XHRcdGN1cnJlbnRUYXJnZXQuZXh0ZW5zaW9uID0ge307XG5cdFx0XHR9XG5cdFx0XHRpZiAoIWN1cnJlbnRUYXJnZXQuZXh0ZW5zaW9uW3NUYXJnZXRdKSB7XG5cdFx0XHRcdGN1cnJlbnRUYXJnZXQuZXh0ZW5zaW9uW3NUYXJnZXRdID0ge307XG5cdFx0XHR9XG5cdFx0XHRjdXJyZW50VGFyZ2V0ID0gY3VycmVudFRhcmdldC5leHRlbnNpb25bc1RhcmdldF07XG5cdFx0fVxuXHRcdGN1cnJlbnRUYXJnZXRbcHJvcGVydHlLZXldID0gdGFyZ2V0W3Byb3BlcnR5S2V5XTtcblx0fTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBFeHRlbnNpYmxlKG9PdmVycmlkZUV4ZWN1dGlvbj86IE92ZXJyaWRlRXhlY3V0aW9uKSB7XG5cdHJldHVybiBmdW5jdGlvbih0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZykge1xuXHRcdGNvbnN0IG1ldGFkYXRhID0gZW5zdXJlTWV0YWRhdGEodGFyZ2V0KTtcblx0XHRpZiAoIW1ldGFkYXRhLm1ldGhvZHNbcHJvcGVydHlLZXldKSB7XG5cdFx0XHRtZXRhZGF0YS5tZXRob2RzW3Byb3BlcnR5S2V5XSA9IHt9O1xuXHRcdH1cblx0XHRtZXRhZGF0YS5tZXRob2RzW3Byb3BlcnR5S2V5XS5vdmVycmlkZUV4ZWN1dGlvbiA9IG9PdmVycmlkZUV4ZWN1dGlvbjtcblx0fTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBQdWJsaWModGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcblx0Y29uc3QgbWV0YWRhdGEgPSBlbnN1cmVNZXRhZGF0YSh0YXJnZXQpO1xuXHRpZiAoIW1ldGFkYXRhLm1ldGhvZHNbcHJvcGVydHlLZXldKSB7XG5cdFx0bWV0YWRhdGEubWV0aG9kc1twcm9wZXJ0eUtleV0gPSB7fTtcblx0fVxuXHRtZXRhZGF0YS5tZXRob2RzW3Byb3BlcnR5S2V5XS5wdWJsaWMgPSB0cnVlO1xufVxuZXhwb3J0IGZ1bmN0aW9uIFByaXZhdGUodGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcblx0Y29uc3QgbWV0YWRhdGEgPSBlbnN1cmVNZXRhZGF0YSh0YXJnZXQpO1xuXHRpZiAoIW1ldGFkYXRhLm1ldGhvZHNbcHJvcGVydHlLZXldKSB7XG5cdFx0bWV0YWRhdGEubWV0aG9kc1twcm9wZXJ0eUtleV0gPSB7fTtcblx0fVxuXHRtZXRhZGF0YS5tZXRob2RzW3Byb3BlcnR5S2V5XS5wdWJsaWMgPSBmYWxzZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBGaW5hbCh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZykge1xuXHRjb25zdCBtZXRhZGF0YSA9IGVuc3VyZU1ldGFkYXRhKHRhcmdldCk7XG5cdGlmICghbWV0YWRhdGEubWV0aG9kc1twcm9wZXJ0eUtleV0pIHtcblx0XHRtZXRhZGF0YS5tZXRob2RzW3Byb3BlcnR5S2V5XSA9IHt9O1xuXHR9XG5cdG1ldGFkYXRhLm1ldGhvZHNbcHJvcGVydHlLZXldLmZpbmFsID0gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEV2ZW50KHRhcmdldDogYW55LCBldmVudEtleTogc3RyaW5nKSB7XG5cdGNvbnN0IG1ldGFkYXRhID0gZW5zdXJlTWV0YWRhdGEodGFyZ2V0KTtcblx0aWYgKCFtZXRhZGF0YS5ldmVudHNbZXZlbnRLZXldKSB7XG5cdFx0bWV0YWRhdGEuZXZlbnRzW2V2ZW50S2V5XSA9IHt9O1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBFdmVudEhhbmRsZXIodGFyZ2V0OiBhbnksIHByb3BlcnR5a2V5OiBhbnkpIHtcblx0dGFyZ2V0LmNvbnN0cnVjdG9yW3Byb3BlcnR5a2V5XSA9IGZ1bmN0aW9uKC4uLmFyZ3M6IGFueVtdKSB7XG5cdFx0Y29uc3QgY3VycmVudFRhcmdldCA9IHRhcmdldC5jb25zdHJ1Y3Rvci5nZXRBUEkoYXJnc1swXSBhcyBVSTVFdmVudCk7XG5cdFx0Y3VycmVudFRhcmdldFtwcm9wZXJ0eWtleV0oLi4uYXJncyk7XG5cdH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBNYWNyb0NvbnRleHQoYk1ldGFNb2RlbE9iamVjdDogYm9vbGVhbiA9IGZhbHNlKTogYW55IHtcblx0cmV0dXJuIFByb3BlcnR5KHsgdHlwZTogXCJzYXAudWkubW9kZWwuQ29udGV4dFwiLCBtYWNyb0NvbnRleHQ6IHRydWUsIG1ldGFNb2RlbE9iamVjdDogYk1ldGFNb2RlbE9iamVjdCB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFByb3BlcnR5KG9Qcm9wZXJ0eVBhcmFtczogYW55KTogYW55IHtcblx0cmV0dXJuIGZ1bmN0aW9uKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBwcm9wZXJ0eURlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcik6IGFueSB7XG5cdFx0Y29uc3QgbWV0YWRhdGEgPSBlbnN1cmVNZXRhZGF0YSh0YXJnZXQpO1xuXHRcdGlmIChvUHJvcGVydHlQYXJhbXM/Lm1hY3JvQ29udGV4dCkge1xuXHRcdFx0aWYgKCFtZXRhZGF0YS5tYWNyb0NvbnRleHRzW3Byb3BlcnR5S2V5XSkge1xuXHRcdFx0XHRtZXRhZGF0YS5tYWNyb0NvbnRleHRzW3Byb3BlcnR5S2V5XSA9IG9Qcm9wZXJ0eVBhcmFtcztcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKCFtZXRhZGF0YS5wcm9wZXJ0aWVzW3Byb3BlcnR5S2V5XSkge1xuXHRcdFx0bWV0YWRhdGEucHJvcGVydGllc1twcm9wZXJ0eUtleV0gPSBvUHJvcGVydHlQYXJhbXM7XG5cdFx0fVxuXHRcdGRlbGV0ZSBwcm9wZXJ0eURlc2NyaXB0b3Iud3JpdGFibGU7XG5cdFx0ZGVsZXRlIChwcm9wZXJ0eURlc2NyaXB0b3IgYXMgYW55KS5pbml0aWFsaXplcjtcblx0XHQocHJvcGVydHlEZXNjcmlwdG9yIGFzIGFueSkuc2V0ID0gZnVuY3Rpb24odjogYW55KSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5zZXRQcm9wZXJ0eShwcm9wZXJ0eUtleSwgdik7XG5cdFx0fTtcblx0XHQocHJvcGVydHlEZXNjcmlwdG9yIGFzIGFueSkuZ2V0ID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5nZXRQcm9wZXJ0eShwcm9wZXJ0eUtleSk7XG5cdFx0fTtcblxuXHRcdHJldHVybiBwcm9wZXJ0eURlc2NyaXB0b3I7XG5cdH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBBZ2dyZWdhdGlvbihvQWdncmVnYXRpb25EZXNjcmlwdG9yPzogYW55KTogYW55IHtcblx0cmV0dXJuIGZ1bmN0aW9uKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBwcm9wZXJ0eURlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcik6IGFueSB7XG5cdFx0Y29uc3QgbWV0YWRhdGEgPSBlbnN1cmVNZXRhZGF0YSh0YXJnZXQpO1xuXHRcdGlmICghbWV0YWRhdGEuYWdncmVnYXRpb25zW3Byb3BlcnR5S2V5XSkge1xuXHRcdFx0bWV0YWRhdGEuYWdncmVnYXRpb25zW3Byb3BlcnR5S2V5XSA9IG9BZ2dyZWdhdGlvbkRlc2NyaXB0b3I7XG5cdFx0fVxuXHRcdGlmIChvQWdncmVnYXRpb25EZXNjcmlwdG9yLmlzRGVmYXVsdCkge1xuXHRcdFx0bWV0YWRhdGEuZGVmYXVsdEFnZ3JlZ2F0aW9uID0gcHJvcGVydHlLZXk7XG5cdFx0fVxuXHRcdGRlbGV0ZSBwcm9wZXJ0eURlc2NyaXB0b3Iud3JpdGFibGU7XG5cdFx0ZGVsZXRlIChwcm9wZXJ0eURlc2NyaXB0b3IgYXMgYW55KS5pbml0aWFsaXplcjtcblx0XHQocHJvcGVydHlEZXNjcmlwdG9yIGFzIGFueSkuc2V0ID0gZnVuY3Rpb24odjogYW55KSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5zZXRBZ2dyZWdhdGlvbihwcm9wZXJ0eUtleSwgdik7XG5cdFx0fTtcblx0XHQocHJvcGVydHlEZXNjcmlwdG9yIGFzIGFueSkuZ2V0ID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5nZXRBZ2dyZWdhdGlvbihwcm9wZXJ0eUtleSk7XG5cdFx0fTtcblxuXHRcdHJldHVybiBwcm9wZXJ0eURlc2NyaXB0b3I7XG5cdH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBBc3NvY2lhdGlvbihvQXNzb2NpYXRpb25EZXNjcmlwdGlvbj86IGFueSk6IGFueSB7XG5cdHJldHVybiBmdW5jdGlvbih0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZywgcHJvcGVydHlEZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpOiBhbnkge1xuXHRcdGNvbnN0IG1ldGFkYXRhID0gZW5zdXJlTWV0YWRhdGEodGFyZ2V0KTtcblx0XHRpZiAoIW1ldGFkYXRhLmFzc29jaWF0aW9uc1twcm9wZXJ0eUtleV0pIHtcblx0XHRcdG1ldGFkYXRhLmFzc29jaWF0aW9uc1twcm9wZXJ0eUtleV0gPSBvQXNzb2NpYXRpb25EZXNjcmlwdGlvbjtcblx0XHR9XG5cdFx0ZGVsZXRlIHByb3BlcnR5RGVzY3JpcHRvci53cml0YWJsZTtcblx0XHRkZWxldGUgKHByb3BlcnR5RGVzY3JpcHRvciBhcyBhbnkpLmluaXRpYWxpemVyO1xuXHRcdChwcm9wZXJ0eURlc2NyaXB0b3IgYXMgYW55KS5zZXQgPSBmdW5jdGlvbih2OiBhbnkpIHtcblx0XHRcdHJldHVybiB0aGlzLnNldEFnZ3JlZ2F0aW9uKHByb3BlcnR5S2V5LCB2KTtcblx0XHR9O1xuXHRcdChwcm9wZXJ0eURlc2NyaXB0b3IgYXMgYW55KS5nZXQgPSBmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiB0aGlzLmdldEFnZ3JlZ2F0aW9uKHByb3BlcnR5S2V5KTtcblx0XHR9O1xuXG5cdFx0cmV0dXJuIHByb3BlcnR5RGVzY3JpcHRvcjtcblx0fTtcbn1cbnR5cGUgQ29udHJvbFByb3BlcnR5TmFtZXM8VD4gPSB7XG5cdFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBuZXZlciA6IEs7XG59W2tleW9mIFRdO1xuZXhwb3J0IHR5cGUgUHJvcGVydGllc09mPFQ+ID0gUGFydGlhbDxQaWNrPFQsIENvbnRyb2xQcm9wZXJ0eU5hbWVzPFQ+Pj47XG5cbi8qKlxuICogRGVjb3JhdG9yIHRvIHByb3ZpZGUgYSBuZXcgQVBJIGNsYXNzIHRvIGJlIHVzZWQgaW4gdGhlIG1hY3Jvcy5cbiAqXG4gKiBAcGFyYW0gc1RhcmdldCBUaGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUgb2YgdGhlIG1hY3JvIEFQSVxuICogQHBhcmFtIGlzRGVwZW5kZW50Qm91bmQgV2hldGhlciB0aGlzIEFQSSB3aWxsIGJlIHVzZWQgYXMgYSBkZXBlbmRlbnQgb3Igbm90XG4gKiBAY2xhc3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEFQSUNsYXNzKHNUYXJnZXQ6IHN0cmluZywgaXNEZXBlbmRlbnRCb3VuZCA9IGZhbHNlKSB7XG5cdHJldHVybiBmdW5jdGlvbihjb25zdHJ1Y3RvcjogRnVuY3Rpb24pIHtcblx0XHRpZiAoIWNvbnN0cnVjdG9yLnByb3RvdHlwZS5tZXRhZGF0YSkge1xuXHRcdFx0Y29uc3RydWN0b3IucHJvdG90eXBlLm1ldGFkYXRhID0ge307XG5cdFx0fVxuXG5cdFx0aWYgKCFjb25zdHJ1Y3Rvci5wcm90b3R5cGUubWV0YWRhdGEuaW50ZXJmYWNlcykge1xuXHRcdFx0Y29uc3RydWN0b3IucHJvdG90eXBlLm1ldGFkYXRhLmludGVyZmFjZXMgPSBbXTtcblx0XHR9XG5cdFx0Y29uc3RydWN0b3IucHJvdG90eXBlLm1ldGFkYXRhLmludGVyZmFjZXMucHVzaChcInNhcC51aS5jb3JlLklGb3JtQ29udGVudFwiKTtcblx0XHQoY29uc3RydWN0b3IgYXMgYW55KS5pc0RlcGVuZGVudEJvdW5kID0gaXNEZXBlbmRlbnRCb3VuZDtcblx0XHRpZiAoIWNvbnN0cnVjdG9yLnByb3RvdHlwZS5yZW5kZXJlcikge1xuXHRcdFx0Y29uc3RydWN0b3IucHJvdG90eXBlLnJlbmRlcmVyID0ge1xuXHRcdFx0XHRhcGlWZXJzaW9uOiAyLFxuXHRcdFx0XHRyZW5kZXI6IGZ1bmN0aW9uKG9SbTogUmVuZGVyTWFuYWdlciwgb0NvbnRyb2w6IGFueSkge1xuXHRcdFx0XHRcdG9SbS5yZW5kZXJDb250cm9sKG9Db250cm9sLmdldENvbnRlbnQoKSk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0ZGVzY3JpYmUoY29uc3RydWN0b3IsIHNUYXJnZXQsIGNvbnN0cnVjdG9yLnByb3RvdHlwZSwgRWxlbWVudE1ldGFkYXRhKTtcblx0fTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBVSTVDbGFzcyhzVGFyZ2V0OiBzdHJpbmcsIG1ldGFkYXRhQ2xhc3M/OiBhbnksIG1ldGFkYXRhRGVmaW5pdGlvbj86IGFueSkge1xuXHRyZXR1cm4gZnVuY3Rpb24oY29uc3RydWN0b3I6IEZ1bmN0aW9uKSB7XG5cdFx0aWYgKCFjb25zdHJ1Y3Rvci5wcm90b3R5cGUubWV0YWRhdGEpIHtcblx0XHRcdGNvbnN0cnVjdG9yLnByb3RvdHlwZS5tZXRhZGF0YSA9IHt9O1xuXHRcdH1cblx0XHRpZiAobWV0YWRhdGFEZWZpbml0aW9uPy5wcm9wZXJ0aWVzKSB7XG5cdFx0XHRjb25zdHJ1Y3Rvci5wcm90b3R5cGUubWV0YWRhdGEucHJvcGVydGllcyA9IG1ldGFkYXRhRGVmaW5pdGlvbi5wcm9wZXJ0aWVzO1xuXHRcdH1cblx0XHRpZiAobWV0YWRhdGFEZWZpbml0aW9uPy5ldmVudHMpIHtcblx0XHRcdGNvbnN0cnVjdG9yLnByb3RvdHlwZS5tZXRhZGF0YS5ldmVudHMgPSBtZXRhZGF0YURlZmluaXRpb24uZXZlbnRzO1xuXHRcdH1cblx0XHRkZXNjcmliZShjb25zdHJ1Y3Rvciwgc1RhcmdldCwgY29uc3RydWN0b3IucHJvdG90eXBlLCBtZXRhZGF0YUNsYXNzKTtcblx0fTtcbn1cblxuZnVuY3Rpb24gZGVzY3JpYmUoY2xheno6IGFueSwgbmFtZTogc3RyaW5nLCBpbk9iajogYW55LCBtZXRhZGF0YUNsYXNzPzogYW55KSB7XG5cdGNvbnN0IG9iajogYW55ID0ge307XG5cdG9iai5tZXRhZGF0YSA9IGluT2JqLm1ldGFkYXRhIHx8IHt9O1xuXHRvYmoub3ZlcnJpZGUgPSBpbk9iai5vdmVycmlkZTtcblx0b2JqLmNvbnN0cnVjdG9yID0gY2xheno7XG5cdG9iai5tZXRhZGF0YS5iYXNlVHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihjbGF6ei5wcm90b3R5cGUpXG5cdFx0LmdldE1ldGFkYXRhKClcblx0XHQuZ2V0TmFtZSgpO1xuXHRvYmoucmVuZGVyZXIgPSBpbk9iai5yZW5kZXJlciB8fCBjbGF6ei5yZW5kZXJlcjtcblx0b2JqLm1ldGFkYXRhLmludGVyZmFjZXMgPSBpbk9iai5tZXRhZGF0YT8uaW50ZXJmYWNlcyB8fCBjbGF6ei5tZXRhZGF0YT8uaW50ZXJmYWNlcztcblx0bGV0IG1ldGFkYXRhOiBhbnk7XG5cdGlmIChtZXRhZGF0YUNsYXNzKSB7XG5cdFx0bWV0YWRhdGEgPSBuZXcgbWV0YWRhdGFDbGFzcyhuYW1lLCBvYmopO1xuXHR9IGVsc2Uge1xuXHRcdG1ldGFkYXRhID0gbmV3IEVsZW1lbnRNZXRhZGF0YShuYW1lLCBvYmopO1xuXHR9XG5cdGNsYXp6LmdldE1ldGFkYXRhID0gY2xhenoucHJvdG90eXBlLmdldE1ldGFkYXRhID0gZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIG1ldGFkYXRhO1xuXHR9O1xuXHRjb25zdCBmbkluaXQgPSBjbGF6ei5wcm90b3R5cGUuaW5pdDtcblx0Y2xhenoucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiguLi5hcmdzOiBhbnlbXSkge1xuXHRcdGZuSW5pdCAmJiBmbkluaXQuYXBwbHkodGhpcywgYXJncyk7XG5cdFx0aWYgKG9iai5tZXRhZGF0YS5wcm9wZXJ0aWVzKSB7XG5cdFx0XHRjb25zdCBhUHJvcGVydHlLZXlzID0gT2JqZWN0LmtleXMob2JqLm1ldGFkYXRhLnByb3BlcnRpZXMpO1xuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzXG5cdFx0XHRjb25zdCB0aGF0ID0gdGhpcztcblx0XHRcdGFQcm9wZXJ0eUtleXMuZm9yRWFjaChwcm9wZXJ0eUtleSA9PiB7XG5cdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGF0LCBwcm9wZXJ0eUtleSwge1xuXHRcdFx0XHRcdGNvbmZpZ3VyYWJsZTogdHJ1ZSxcblx0XHRcdFx0XHRzZXQ6ICh2OiBhbnkpID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiB0aGF0LnNldFByb3BlcnR5KHByb3BlcnR5S2V5LCB2KTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGdldDogKCkgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRoYXQuZ2V0UHJvcGVydHkocHJvcGVydHlLZXkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH07XG5cdE9iamVjdFBhdGguc2V0KG5hbWUsIGNsYXp6KTtcbn1cbiJdfQ==
|
|
467
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNsYXNzU3VwcG9ydC50cyJdLCJuYW1lcyI6WyJlbnN1cmVNZXRhZGF0YSIsInRhcmdldCIsIm1ldGFkYXRhIiwibWVyZ2UiLCJjb250cm9sbGVyRXh0ZW5zaW9ucyIsInByb3BlcnRpZXMiLCJtYWNyb0NvbnRleHRzIiwiYWdncmVnYXRpb25zIiwiYXNzb2NpYXRpb25zIiwibWV0aG9kcyIsImV2ZW50cyIsImludGVyZmFjZXMiLCJtZXRob2RPdmVycmlkZSIsImV4dGVuc2lvbk5hbWUiLCJwcm9wZXJ0eUtleSIsIm92ZXJyaWRlIiwiY3VycmVudFRhcmdldCIsImV4dGVuc2lvbiIsInRvU3RyaW5nIiwiZXh0ZW5zaWJsZSIsIm92ZXJyaWRlRXhlY3V0aW9uVHlwZSIsIm92ZXJyaWRlRXhlY3V0aW9uIiwicHVibGljRXh0ZW5zaW9uIiwiZGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdWJsaWMiLCJwcml2YXRlRXh0ZW5zaW9uIiwiZmluYWxFeHRlbnNpb24iLCJmaW5hbCIsInVzaW5nRXh0ZW5zaW9uIiwiZXh0ZW5zaW9uQ2xhc3MiLCJwcm9wZXJ0eURlc2NyaXB0b3IiLCJpbml0aWFsaXplciIsImV2ZW50IiwiZXZlbnRLZXkiLCJwcm9wZXJ0eSIsInVpNVByb3BlcnR5TWV0YWRhdGEiLCJ3cml0YWJsZSIsImFnZ3JlZ2F0aW9uIiwidWk1QWdncmVnYXRpb25NZXRhZGF0YSIsIm11bHRpcGxlIiwidW5kZWZpbmVkIiwiaXNEZWZhdWx0IiwiZGVmYXVsdEFnZ3JlZ2F0aW9uIiwiYXNzb2NpYXRpb24iLCJ1aTVBc3NvY2lhdGlvbk1ldGFkYXRhIiwiaW1wbGVtZW50SW50ZXJmYWNlIiwiaW50ZXJmYWNlTmFtZSIsInB1c2giLCJ4bWxFdmVudEhhbmRsZXIiLCJwcm9wZXJ0eWtleSIsImN1cnJlbnRDb25zdHJ1Y3RvciIsImNvbnN0cnVjdG9yIiwiZ2V0QVBJIiwiZGVmaW5lVUk1Q2xhc3MiLCJzVGFyZ2V0IiwibWV0YWRhdGFEZWZpbml0aW9uIiwicHJvdG90eXBlIiwia2V5IiwicmVnaXN0ZXJVSTVNZXRhZGF0YSIsImNsYXp6IiwibmFtZSIsImluT2JqIiwiZ2V0TWV0YWRhdGEiLCJpc0EiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiZm9yRWFjaCIsIm9iak5hbWUiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJvYmoiLCJiYXNlVHlwZSIsImdldFByb3RvdHlwZU9mIiwiZ2V0TmFtZSIsImdldFN0ZXJlb3R5cGUiLCJyZW5kZXJlckRlZmluaXRpb24iLCJyZW5kZXJlciIsInJlbmRlciIsImFwaVZlcnNpb24iLCJrZXlzIiwiZSIsImxlbmd0aCIsImNFeHROYW1lIiwib3V0cHV0IiwiZXh0ZW5kIiwiZm5Jbml0IiwiaW5pdCIsImFyZ3MiLCJhcHBseSIsImFQcm9wZXJ0eUtleXMiLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsInNldCIsInYiLCJzZXRQcm9wZXJ0eSIsImdldCIsImdldFByb3BlcnR5IiwiYUFnZ3JlZ2F0aW9uS2V5cyIsImFnZ3JlZ2F0aW9uS2V5Iiwic2V0QWdncmVnYXRpb24iLCJhZ2dyZWdhdGlvbkNvbnRlbnQiLCJnZXRBZ2dyZWdhdGlvbiIsImFBc3NvY2lhdGlvbktleXMiLCJhc3NvY2lhdGlvbktleSIsInNldEFzc29jaWF0aW9uIiwiZ2V0QXNzb2NpYXRpb24iLCJvRXh0ZW5zaW9uIiwicG9sIiwib0NsYXNzIiwiTWV0YWRhdGEiLCJjcmVhdGVDbGFzcyIsInVpZCIsIkNvbnRyb2xsZXJNZXRhZGF0YSIsIl9zdGF0aWNPdmVycmlkZSIsIl9vdmVycmlkZSIsIk9iamVjdFBhdGgiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7OztBQWtFQSxNQUFNQSxjQUFjLEdBQUcsVUFBVUMsTUFBVixFQUFpQztBQUN2REEsSUFBQUEsTUFBTSxDQUFDQyxRQUFQLEdBQWtCQyxLQUFLLENBQ3RCO0FBQ0NDLE1BQUFBLG9CQUFvQixFQUFFLEVBRHZCO0FBRUNDLE1BQUFBLFVBQVUsRUFBRSxF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QkQsSUFBbEIsQ0FBUDtBQUNBLE9BRkQ7O0FBR0EsVUFBTXFCLE1BQU0sR0FBSUMsUUFBRCxDQUFrQkMsV0FBbEIsQ0FBOEJsRCxLQUE5QixFQUFxQyx3QkFBd0JtRCxHQUFHLEVBQWhFLEVBQW9FSixHQUFwRSxFQUF5RUssa0JBQXpFLENBQWY7QUFDQUosTUFBQUEsTUFBTSxDQUFDN0MsV0FBUCxHQUFxQmtELGVBQXJCLEdBQXVDUCxVQUF2QztBQUNBRSxNQUFBQSxNQUFNLENBQUM3QyxXQUFQLEdBQXFCbUQsU0FBckIsR0FBa0N0RCxLQUFLLENBQUNHLFdBQU4sRUFBRCxDQUE2Qm1ELFNBQTlEO0FBQ0EsYUFBT04sTUFBUDtBQUNBLEtBVEQ7O0FBV0FPLElBQUFBLFVBQVUsQ0FBQ3ZCLEdBQVgsQ0FBZS9CLElBQWYsRUFBcUJzQixNQUFyQjtBQUNBLFdBQU9BLE1BQVA7QUFDQSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1lcmdlIGZyb20gXCJzYXAvYmFzZS91dGlsL21lcmdlXCI7XG5pbXBvcnQgT2JqZWN0UGF0aCBmcm9tIFwic2FwL2Jhc2UvdXRpbC9PYmplY3RQYXRoXCI7XG5pbXBvcnQgdWlkIGZyb20gXCJzYXAvYmFzZS91dGlsL3VpZFwiO1xuaW1wb3J0IFVJNUV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IE1ldGFkYXRhIGZyb20gXCJzYXAvdWkvYmFzZS9NZXRhZGF0YVwiO1xuaW1wb3J0IENvbnRyb2xsZXJFeHRlbnNpb24gZnJvbSBcInNhcC91aS9jb3JlL212Yy9Db250cm9sbGVyRXh0ZW5zaW9uXCI7XG5pbXBvcnQgQ29udHJvbGxlck1ldGFkYXRhIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvQ29udHJvbGxlck1ldGFkYXRhXCI7XG5pbXBvcnQgT3ZlcnJpZGVFeGVjdXRpb24gZnJvbSBcInNhcC91aS9jb3JlL212Yy9PdmVycmlkZUV4ZWN1dGlvblwiO1xuXG50eXBlIE92ZXJyaWRlRGVmaW5pdGlvbiA9IFJlY29yZDxzdHJpbmcsIEZ1bmN0aW9uPjtcbnR5cGUgVUk1Q29udHJvbGxlck1ldGhvZERlZmluaXRpb24gPSB7XG5cdG92ZXJyaWRlRXhlY3V0aW9uPzogT3ZlcnJpZGVFeGVjdXRpb247XG5cdHB1YmxpYz86IGJvb2xlYW47XG5cdGZpbmFsPzogYm9vbGVhbjtcbn07XG50eXBlIFVJNVByb3BlcnR5TWV0YWRhdGEgPSB7XG5cdHR5cGU6IHN0cmluZztcblx0cmVxdWlyZWQ/OiBib29sZWFuO1xuXHRncm91cD86IHN0cmluZztcblx0ZGVmYXVsdFZhbHVlPzogYW55O1xufTtcbnR5cGUgVUk1QWdncmVnYXRpb25NZXRhZGF0YSA9IHtcblx0dHlwZTogc3RyaW5nO1xuXHRtdWx0aXBsZT86IGJvb2xlYW47XG5cdGlzRGVmYXVsdD86IGJvb2xlYW47XG5cdHNpbmd1bGFyTmFtZT86IHN0cmluZztcblx0dmlzaWJpbGl0eT86IHN0cmluZztcbn07XG50eXBlIFVJNUFzc29jaWF0aW9uTWV0YWRhdGEgPSB7XG5cdHR5cGU6IHN0cmluZztcblx0bXVsdGlwbGU/OiBib29sZWFuO1xuXHRzaW5ndWxhck5hbWU/OiBzdHJpbmc7XG59O1xudHlwZSBVSTVDb250cm9sTWV0YWRhdGFEZWZpbml0aW9uID0ge1xuXHRkZWZhdWx0QWdncmVnYXRpb24/OiBzdHJpbmc7XG5cdGNvbnRyb2xsZXJFeHRlbnNpb25zOiBSZWNvcmQ8c3RyaW5nLCB0eXBlb2YgQ29udHJvbGxlckV4dGVuc2lvbiB8IEZ1bmN0aW9uPjtcblx0cHJvcGVydGllczogUmVjb3JkPHN0cmluZywgVUk1UHJvcGVydHlNZXRhZGF0YT47XG5cdG1hY3JvQ29udGV4dHM6IFJlY29yZDxzdHJpbmcsIFVJNVByb3BlcnR5TWV0YWRhdGE+O1xuXHRhZ2dyZWdhdGlvbnM6IFJlY29yZDxzdHJpbmcsIFVJNUFnZ3JlZ2F0aW9uTWV0YWRhdGE+O1xuXHRhc3NvY2lhdGlvbnM6IFJlY29yZDxzdHJpbmcsIFVJNUFzc29jaWF0aW9uTWV0YWRhdGE+O1xuXHRtZXRob2RzOiBSZWNvcmQ8c3RyaW5nLCBVSTVDb250cm9sbGVyTWV0aG9kRGVmaW5pdGlvbj47XG5cdGV2ZW50czogUmVjb3JkPHN0cmluZywge30+O1xuXHRpbnRlcmZhY2VzOiBzdHJpbmdbXTtcbn07XG50eXBlIFVJNUNvbnRyb2xsZXIgPSB7XG5cdG92ZXJyaWRlPzogeyBleHRlbnNpb24/OiBSZWNvcmQ8c3RyaW5nLCBPdmVycmlkZURlZmluaXRpb24+IH0gJiB7XG5cdFx0W2s6IHN0cmluZ106IEZ1bmN0aW9uO1xuXHR9O1xuXHRtZXRhZGF0YT86IFVJNUNvbnRyb2xNZXRhZGF0YURlZmluaXRpb247XG59O1xuXG50eXBlIFVJNUNvbnRyb2wgPSB7XG5cdG1ldGFkYXRhPzogVUk1Q29udHJvbE1ldGFkYXRhRGVmaW5pdGlvbjtcbn07XG5cbnR5cGUgVUk1QVBJQ29udHJvbCA9IFVJNUNvbnRyb2wgJiB7XG5cdGdldEFQSShldmVudDogVUk1RXZlbnQpOiBVSTVBUElDb250cm9sO1xuXHRbazogc3RyaW5nXTogRnVuY3Rpb247XG59O1xuXG50eXBlIENvbnRyb2xQcm9wZXJ0eU5hbWVzPFQ+ID0ge1xuXHRbSyBpbiBrZXlvZiBUXTogVFtLXSBleHRlbmRzIEZ1bmN0aW9uID8gbmV2ZXIgOiBLO1xufVtrZXlvZiBUXTtcbmV4cG9ydCB0eXBlIFByb3BlcnRpZXNPZjxUPiA9IFBhcnRpYWw8UGljazxULCBDb250cm9sUHJvcGVydHlOYW1lczxUPj4+O1xuZXhwb3J0IHR5cGUgRW5oYW5jZVdpdGhVSTU8VD4gPSBUICYge1xuXHQvLyBBZGQgYWxsIHRoZSBnZXRYWFggbWV0aG9kLCBtaWdodCBhZGQgdG9vIG11Y2ggYXMgaSdtIG5vdCBmaWx0ZXJpbmcgb24gYWN0dWFsIHByb3BlcnRpZXMgYWN0dWFsbHkuLi5cblx0W1AgaW4ga2V5b2YgVCBhcyBgZ2V0JHtDYXBpdGFsaXplPHN0cmluZyAmIFA+fWBdOiAoKSA9PiBUW1BdO1xufTtcbmNvbnN0IGVuc3VyZU1ldGFkYXRhID0gZnVuY3Rpb24gKHRhcmdldDogVUk1Q29udHJvbGxlcikge1xuXHR0YXJnZXQubWV0YWRhdGEgPSBtZXJnZShcblx0XHR7XG5cdFx0XHRjb250cm9sbGVyRXh0ZW5zaW9uczoge30sXG5cdFx0XHRwcm9wZXJ0aWVzOiB7fSxcblx0XHRcdG1hY3JvQ29udGV4dHM6IHt9LFxuXHRcdFx0YWdncmVnYXRpb25zOiB7fSxcblx0XHRcdGFzc29jaWF0aW9uczoge30sXG5cdFx0XHRtZXRob2RzOiB7fSxcblx0XHRcdGV2ZW50czoge30sXG5cdFx0XHRpbnRlcmZhY2VzOiBbXVxuXHRcdH0sXG5cdFx0dGFyZ2V0Lm1ldGFkYXRhIHx8IHt9XG5cdCkgYXMgVUk1Q29udHJvbE1ldGFkYXRhRGVmaW5pdGlvbjtcblx0cmV0dXJuIHRhcmdldC5tZXRhZGF0YTtcbn07XG5cbi8qICNyZWdpb24gQ09OVFJPTExFUiBFWFRFTlNJT05TICovXG5cbi8qKlxuICogRGVmaW5lcyB0aGF0IHRoZSBmb2xsb3dpbmcgbWV0aG9kIGlzIGFuIG92ZXJyaWRlIGZvciB0aGUgbWV0aG9kIG5hbWUgd2l0aCB0aGUgc2FtZSBuYW1lIGluIHRoZSBzcGVjaWZpYyBjb250cm9sbGVyIGV4dGVuc2lvbiBvciBiYXNlIGltcGxlbWVudGF0aW9uLlxuICpcbiAqIEBwYXJhbSBleHRlbnNpb25OYW1lIFRoZSBuYW1lIG9mIHRoZSBleHRlbnNpb24gdGhhdCB3aWxsIGJlIG92ZXJyaWRlblxuICogQHJldHVybnMgVGhlIGRlY29yYXRlZCBtZXRob2RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ldGhvZE92ZXJyaWRlKGV4dGVuc2lvbk5hbWU/OiBzdHJpbmcpOiBNZXRob2REZWNvcmF0b3Ige1xuXHRyZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogVUk1Q29udHJvbGxlciwgcHJvcGVydHlLZXkpIHtcblx0XHRpZiAoIXRhcmdldC5vdmVycmlkZSkge1xuXHRcdFx0dGFyZ2V0Lm92ZXJyaWRlID0ge307XG5cdFx0fVxuXHRcdGxldCBjdXJyZW50VGFyZ2V0ID0gdGFyZ2V0Lm92ZXJyaWRlO1xuXHRcdGlmIChleHRlbnNpb25OYW1lKSB7XG5cdFx0XHRpZiAoIWN1cnJlbnRUYXJnZXQuZXh0ZW5zaW9uKSB7XG5cdFx0XHRcdGN1cnJlbnRUYXJnZXQuZXh0ZW5zaW9uID0ge307XG5cdFx0XHR9XG5cdFx0XHRpZiAoIWN1cnJlbnRUYXJnZXQuZXh0ZW5zaW9uW2V4dGVuc2lvbk5hbWVdKSB7XG5cdFx0XHRcdGN1cnJlbnRUYXJnZXQuZXh0ZW5zaW9uW2V4dGVuc2lvbk5hbWVdID0ge307XG5cdFx0XHR9XG5cdFx0XHRjdXJyZW50VGFyZ2V0ID0gY3VycmVudFRhcmdldC5leHRlbnNpb25bZXh0ZW5zaW9uTmFtZV07XG5cdFx0fVxuXHRcdGN1cnJlbnRUYXJnZXRbcHJvcGVydHlLZXkudG9TdHJpbmcoKV0gPSAodGFyZ2V0IGFzIGFueSlbcHJvcGVydHlLZXkudG9TdHJpbmcoKV07XG5cdH07XG59XG5cbi8qKlxuICogRGVmaW5lcyB0aGF0IHRoZSBtZXRob2QgY2FuIGJlIGV4dGVuZGVkIGJ5IG90aGVyIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGJhc2VkIG9uIHRoZSBkZWZpbmVkIG92ZXJyaWRlRXhlY3V0aW9uVHlwZS5cbiAqXG4gKiBAcGFyYW0gb3ZlcnJpZGVFeGVjdXRpb25UeXBlIFRoZSBPdmVycmlkZUV4ZWN1dGlvbiBkZWZpbmluZyB3aGVuIHRoZSBvdmVycmlkZSBzaG91bGQgcnVuIChCZWZvcmUgLyBBZnRlciAvIEluc3RlYWQpXG4gKiBAcmV0dXJucyBUaGUgZGVjb3JhdGVkIG1ldGhvZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5zaWJsZShvdmVycmlkZUV4ZWN1dGlvblR5cGU/OiBPdmVycmlkZUV4ZWN1dGlvbik6IE1ldGhvZERlY29yYXRvciB7XG5cdHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBVSTVDb250cm9sbGVyLCBwcm9wZXJ0eUtleSkge1xuXHRcdGNvbnN0IG1ldGFkYXRhID0gZW5zdXJlTWV0YWRhdGEodGFyZ2V0KTtcblx0XHRpZiAoIW1ldGFkYXRhLm1ldGhvZHNbcHJvcGVydHlLZXkudG9TdHJpbmcoKV0pIHtcblx0XHRcdG1ldGFkYXRhLm1ldGhvZHNbcHJvcGVydHlLZXkudG9TdHJpbmcoKV0gPSB7fTtcblx0XHR9XG5cdFx0bWV0YWRhdGEubWV0aG9kc1twcm9wZXJ0eUtleS50b1N0cmluZygpXS5vdmVycmlkZUV4ZWN1dGlvbiA9IG92ZXJyaWRlRXhlY3V0aW9uVHlwZTtcblx0fTtcbn1cblxuLyoqXG4gKiBEZWZpbmVzIHRoYXQgdGhlIG1ldGhvZCB3aWxsIGJlIHB1YmxpY2x5IGF2YWlsYWJsZSBmb3IgY29udHJvbGxlciBleHRlbnNpb24gdXNhZ2UuXG4gKlxuICogQHJldHVybnMgVGhlIGRlY29yYXRlZCBtZXRob2RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHB1YmxpY0V4dGVuc2lvbigpOiBNZXRob2REZWNvcmF0b3Ige1xuXHRyZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogVUk1Q29udHJvbGxlciwgcHJvcGVydHlLZXksIGRlc2NyaXB0b3IpOiB2b2lkIHtcblx0XHRjb25zdCBtZXRhZGF0YSA9IGVuc3VyZU1ldGFkYXRhKHRhcmdldCk7XG5cdFx0ZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gdHJ1ZTtcblx0XHRpZiAoIW1ldGFkYXRhLm1ldGhvZHNbcHJvcGVydHlLZXkudG9TdHJpbmcoKV0pIHtcblx0XHRcdG1ldGFkYXRhLm1ldGhvZHNbcHJvcGVydHlLZXkudG9TdHJpbmcoKV0gPSB7fTtcblx0XHR9XG5cdFx0bWV0YWRhdGEubWV0aG9kc1twcm9wZXJ0eUtleS50b1N0cmluZygpXS5wdWJsaWMgPSB0cnVlO1xuXHR9O1xufVxuLyoqXG4gKiBEZWZpbmVzIHRoYXQgdGhlIG1ldGhvZCB3aWxsIGJlIG9ubHkgYXZhaWxhYmxlIGZvciBpbnRlcm5hbCB1c2FnZSBvZiB0aGUgY29udHJvbGxlciBleHRlbnNpb24uXG4gKlxuICogQHJldHVybnMgVGhlIGRlY29yYXRlZCBtZXRob2RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByaXZhdGVFeHRlbnNpb24oKTogTWV0aG9kRGVjb3JhdG9yIHtcblx0cmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IFVJNUNvbnRyb2xsZXIsIHByb3BlcnR5S2V5LCBkZXNjcmlwdG9yKSB7XG5cdFx0Y29uc3QgbWV0YWRhdGEgPSBlbnN1cmVNZXRhZGF0YSh0YXJnZXQpO1xuXHRcdGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IHRydWU7XG5cdFx0aWYgKCFtZXRhZGF0YS5tZXRob2RzW3Byb3BlcnR5S2V5LnRvU3RyaW5nKCldKSB7XG5cdFx0XHRtZXRhZGF0YS5tZXRob2RzW3Byb3BlcnR5S2V5LnRvU3RyaW5nKCldID0ge307XG5cdFx0fVxuXHRcdG1ldGFkYXRhLm1ldGhvZHNbcHJvcGVydHlLZXkudG9TdHJpbmcoKV0ucHVibGljID0gZmFsc2U7XG5cdH07XG59XG4vKipcbiAqIERlZmluZXMgdGhhdCB0aGUgbWV0aG9kIGNhbm5vdCBiZSBmdXJ0aGVyIGV4dGVuZGVkIGJ5IG90aGVyIGNvbnRyb2xsZXIgZXh0ZW5zaW9uLlxuICpcbiAqIEByZXR1cm5zIFRoZSBkZWNvcmF0ZWQgbWV0aG9kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5hbEV4dGVuc2lvbigpOiBNZXRob2REZWNvcmF0b3Ige1xuXHRyZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogVUk1Q29udHJvbGxlciwgcHJvcGVydHlLZXksIGRlc2NyaXB0b3IpIHtcblx0XHRjb25zdCBtZXRhZGF0YSA9IGVuc3VyZU1ldGFkYXRhKHRhcmdldCk7XG5cdFx0ZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gdHJ1ZTtcblx0XHRpZiAoIW1ldGFkYXRhLm1ldGhvZHNbcHJvcGVydHlLZXkudG9TdHJpbmcoKV0pIHtcblx0XHRcdG1ldGFkYXRhLm1ldGhvZHNbcHJvcGVydHlLZXkudG9TdHJpbmcoKV0gPSB7fTtcblx0XHR9XG5cdFx0bWV0YWRhdGEubWV0aG9kc1twcm9wZXJ0eUtleS50b1N0cmluZygpXS5maW5hbCA9IHRydWU7XG5cdH07XG59XG5cbi8qKlxuICogRGVmaW5lcyB0aGF0IHdlIGFyZSBnb2luZyB0byB1c2UgaW5zdGFudGlhdGUgYSBjb250cm9sbGVyIGV4dGVuc2lvbiB1bmRlciB0aGUgZm9sbG93aW5nIHZhcmlhYmxlIG5hbWUuXG4gKlxuICogQHBhcmFtIGV4dGVuc2lvbkNsYXNzIFRoZSBjb250cm9sbGVyIGV4dGVuc2lvbiB0aGF0IHdpbGwgYmUgaW5zdGFudGlhdGVkXG4gKiBAcmV0dXJucyBUaGUgZGVjb3JhdGVkIHByb3BlcnR5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2luZ0V4dGVuc2lvbihleHRlbnNpb25DbGFzczogdHlwZW9mIENvbnRyb2xsZXJFeHRlbnNpb24gfCBGdW5jdGlvbik6IFByb3BlcnR5RGVjb3JhdG9yIHtcblx0cmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IFVJNUNvbnRyb2xsZXIsIHByb3BlcnR5S2V5OiBzdHJpbmcsIHByb3BlcnR5RGVzY3JpcHRvcjogVHlwZWRQcm9wZXJ0eURlc2NyaXB0b3I8YW55Pikge1xuXHRcdGNvbnN0IG1ldGFkYXRhID0gZW5zdXJlTWV0YWRhdGEodGFyZ2V0KTtcblx0XHRkZWxldGUgKHByb3BlcnR5RGVzY3JpcHRvciBhcyBhbnkpLmluaXRpYWxpemVyO1xuXHRcdG1ldGFkYXRhLmNvbnRyb2xsZXJFeHRlbnNpb25zW3Byb3BlcnR5S2V5LnRvU3RyaW5nKCldID0gZXh0ZW5zaW9uQ2xhc3M7XG5cdFx0cmV0dXJuIHByb3BlcnR5RGVzY3JpcHRvcjtcblx0fSBhcyBhbnk7IC8vIFRoaXMgaXMgdGVjaG5pY2FsbHkgYW4gYWNjZXNzb3IgZGVjb3JhdG9yLCBidXQgc29tZWhvdyB0aGUgY29tcGlsZXIgZG9lc24ndCBsaWtlIGl0IGlmIGkgZGVjbGFyZSBpdCBhcyBzdWNoLlxufVxuXG4vKiAjZW5kcmVnaW9uICovXG5cbi8qICNyZWdpb24gQ09OVFJPTCAqL1xuLyoqXG4gKiBJbmRpY2F0ZXMgdGhhdCB0aGUgcHJvcGVydHkgc2hhbGwgYmUgZGVjbGFyZWQgYXMgYW4gZXZlbnQgb24gdGhlIGNvbnRyb2wgbWV0YWRhdGEuXG4gKlxuICogQHJldHVybnMgVGhlIGRlY29yYXRlZCBwcm9wZXJ0eVxuICovXG5leHBvcnQgZnVuY3Rpb24gZXZlbnQoKTogUHJvcGVydHlEZWNvcmF0b3Ige1xuXHRyZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogVUk1Q29udHJvbCwgZXZlbnRLZXkpIHtcblx0XHRjb25zdCBtZXRhZGF0YSA9IGVuc3VyZU1ldGFkYXRhKHRhcmdldCk7XG5cdFx0aWYgKCFtZXRhZGF0YS5ldmVudHNbZXZlbnRLZXkudG9TdHJpbmcoKV0pIHtcblx0XHRcdG1ldGFkYXRhLmV2ZW50c1tldmVudEtleS50b1N0cmluZygpXSA9IHt9O1xuXHRcdH1cblx0fTtcbn1cblxuLyoqXG4gKiBEZWZpbmVzIHRoZSBmb2xsb3dpbmcgcHJvcGVydHkgaW4gdGhlIGNvbnRyb2wgbWV0YXRhZGEuXG4gKlxuICogQHBhcmFtIHVpNVByb3BlcnR5TWV0YWRhdGEgVGhlIHByb3BlcnR5IGRlZmluaXRpb25cbiAqIEByZXR1cm5zIFRoZSBkZWNvcmF0ZWQgcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0eSh1aTVQcm9wZXJ0eU1ldGFkYXRhOiBVSTVQcm9wZXJ0eU1ldGFkYXRhKTogUHJvcGVydHlEZWNvcmF0b3Ige1xuXHRyZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogVUk1Q29udHJvbCwgcHJvcGVydHlLZXk6IHN0cmluZywgcHJvcGVydHlEZXNjcmlwdG9yOiBUeXBlZFByb3BlcnR5RGVzY3JpcHRvcjxhbnk+KSB7XG5cdFx0Y29uc3QgbWV0YWRhdGEgPSBlbnN1cmVNZXRhZGF0YSh0YXJnZXQpO1xuXHRcdGlmICghbWV0YWRhdGEucHJvcGVydGllc1twcm9wZXJ0eUtleV0pIHtcblx0XHRcdG1ldGFkYXRhLnByb3BlcnRpZXNbcHJvcGVydHlLZXldID0gdWk1UHJvcGVydHlNZXRhZGF0YTtcblx0XHR9XG5cdFx0ZGVsZXRlIHByb3BlcnR5RGVzY3JpcHRvci53cml0YWJsZTtcblx0XHRkZWxldGUgKHByb3BlcnR5RGVzY3JpcHRvciBhcyBhbnkpLmluaXRpYWxpemVyO1xuXG5cdFx0cmV0dXJuIHByb3BlcnR5RGVzY3JpcHRvcjtcblx0fSBhcyBhbnk7IC8vIFRoaXMgaXMgdGVjaG5pY2FsbHkgYW4gYWNjZXNzb3IgZGVjb3JhdG9yLCBidXQgc29tZWhvdyB0aGUgY29tcGlsZXIgZG9lc24ndCBsaWtlIGl0IGlmIGkgZGVjbGFyZSBpdCBhcyBzdWNoLjtcbn1cbi8qKlxuICogRGVmaW5lcyBhbmQgY29uZmlndXJlIHRoZSBmb2xsb3dpbmcgYWdncmVnYXRpb24gaW4gdGhlIGNvbnRyb2wgbWV0YXRhZGEuXG4gKlxuICogQHBhcmFtIHVpNUFnZ3JlZ2F0aW9uTWV0YWRhdGEgVGhlIGFnZ3JlZ2F0aW9uIGRlZmluaXRpb25cbiAqIEByZXR1cm5zIFRoZSBkZWNvcmF0ZWQgcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZ2dyZWdhdGlvbih1aTVBZ2dyZWdhdGlvbk1ldGFkYXRhOiBVSTVBZ2dyZWdhdGlvbk1ldGFkYXRhKTogUHJvcGVydHlEZWNvcmF0b3Ige1xuXHRyZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogVUk1Q29udHJvbCwgcHJvcGVydHlLZXk6IHN0cmluZywgcHJvcGVydHlEZXNjcmlwdG9yOiBUeXBlZFByb3BlcnR5RGVzY3JpcHRvcjxhbnk+KSB7XG5cdFx0Y29uc3QgbWV0YWRhdGEgPSBlbnN1cmVNZXRhZGF0YSh0YXJnZXQpO1xuXHRcdGlmICh1aTVBZ2dyZWdhdGlvbk1ldGFkYXRhLm11bHRpcGxlID09PSB1bmRlZmluZWQpIHtcblx0XHRcdC8vIFVJNSBkZWZhdWx0cyB0aGlzIHRvIHRydWUgYnV0IHRoaXMgaXMganVzdCB3ZWlyZC4uLlxuXHRcdFx0dWk1QWdncmVnYXRpb25NZXRhZGF0YS5tdWx0aXBsZSA9IGZhbHNlO1xuXHRcdH1cblx0XHRpZiAoIW1ldGFkYXRhLmFnZ3JlZ2F0aW9uc1twcm9wZXJ0eUtleV0pIHtcblx0XHRcdG1ldGFkYXRhLmFnZ3JlZ2F0aW9uc1twcm9wZXJ0eUtleV0gPSB1aTVBZ2dyZWdhdGlvbk1ldGFkYXRhO1xuXHRcdH1cblx0XHRpZiAodWk1QWdncmVnYXRpb25NZXRhZGF0YS5pc0RlZmF1bHQpIHtcblx0XHRcdG1ldGFkYXRhLmRlZmF1bHRBZ2dyZWdhdGlvbiA9IHByb3BlcnR5S2V5O1xuXHRcdH1cblx0XHRkZWxldGUgcHJvcGVydHlEZXNjcmlwdG9yLndyaXRhYmxlO1xuXHRcdGRlbGV0ZSAocHJvcGVydHlEZXNjcmlwdG9yIGFzIGFueSkuaW5pdGlhbGl6ZXI7XG5cblx0XHRyZXR1cm4gcHJvcGVydHlEZXNjcmlwdG9yO1xuXHR9IGFzIGFueTsgLy8gVGhpcyBpcyB0ZWNobmljYWxseSBhbiBhY2Nlc3NvciBkZWNvcmF0b3IsIGJ1dCBzb21laG93IHRoZSBjb21waWxlciBkb2Vzbid0IGxpa2UgaXQgaWYgaSBkZWNsYXJlIGl0IGFzIHN1Y2guO1xufVxuXG4vKipcbiAqIERlZmluZXMgYW5kIGNvbmZpZ3VyZSB0aGUgZm9sbG93aW5nIGFzc29jaWF0aW9uIGluIHRoZSBjb250cm9sIG1ldGF0YWRhLlxuICpcbiAqIEBwYXJhbSB1aTVBc3NvY2lhdGlvbk1ldGFkYXRhIFRoZSBkZWZpbml0aW9uIG9mIHRoZSBhc3NvY2lhdGlvbi5cbiAqIEByZXR1cm5zIFRoZSBkZWNvcmF0ZWQgcHJvcGVydHlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc29jaWF0aW9uKHVpNUFzc29jaWF0aW9uTWV0YWRhdGE6IFVJNUFzc29jaWF0aW9uTWV0YWRhdGEpOiBQcm9wZXJ0eURlY29yYXRvciB7XG5cdHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBVSTVDb250cm9sLCBwcm9wZXJ0eUtleTogc3RyaW5nLCBwcm9wZXJ0eURlc2NyaXB0b3I6IFR5cGVkUHJvcGVydHlEZXNjcmlwdG9yPGFueT4pIHtcblx0XHRjb25zdCBtZXRhZGF0YSA9IGVuc3VyZU1ldGFkYXRhKHRhcmdldCk7XG5cdFx0aWYgKCFtZXRhZGF0YS5hc3NvY2lhdGlvbnNbcHJvcGVydHlLZXldKSB7XG5cdFx0XHRtZXRhZGF0YS5hc3NvY2lhdGlvbnNbcHJvcGVydHlLZXldID0gdWk1QXNzb2NpYXRpb25NZXRhZGF0YTtcblx0XHR9XG5cdFx0ZGVsZXRlIHByb3BlcnR5RGVzY3JpcHRvci53cml0YWJsZTtcblx0XHRkZWxldGUgKHByb3BlcnR5RGVzY3JpcHRvciBhcyBhbnkpLmluaXRpYWxpemVyO1xuXG5cdFx0cmV0dXJuIHByb3BlcnR5RGVzY3JpcHRvcjtcblx0fSBhcyBhbnk7IC8vIFRoaXMgaXMgdGVjaG5pY2FsbHkgYW4gYWNjZXNzb3IgZGVjb3JhdG9yLCBidXQgc29tZWhvdyB0aGUgY29tcGlsZXIgZG9lc24ndCBsaWtlIGl0IGlmIGkgZGVjbGFyZSBpdCBhcyBzdWNoLjtcbn1cblxuLyoqXG4gKiBEZWZpbmVzIGluIHRoZSBtZXRhZGF0YSB0aGF0IHRoaXMgY29udHJvbCBpbXBsZW1lbnRzIGEgc3BlY2lmaWMgaW50ZXJmYWNlLlxuICpcbiAqIEBwYXJhbSBpbnRlcmZhY2VOYW1lIFRoZSBuYW1lIG9mIHRoZSBpbXBsZW1lbnRlZCBpbnRlcmZhY2VcbiAqIEByZXR1cm5zIFRoZSBkZWNvcmF0ZWQgbWV0aG9kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbXBsZW1lbnRJbnRlcmZhY2UoaW50ZXJmYWNlTmFtZTogc3RyaW5nKTogUHJvcGVydHlEZWNvcmF0b3Ige1xuXHRyZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogVUk1Q29udHJvbCkge1xuXHRcdGNvbnN0IG1ldGFkYXRhID0gZW5zdXJlTWV0YWRhdGEodGFyZ2V0KTtcblxuXHRcdG1ldGFkYXRhLmludGVyZmFjZXMucHVzaChpbnRlcmZhY2VOYW1lKTtcblx0fTtcbn1cblxuLyoqXG4gKiBJbmRpY2F0ZXMgdGhhdCB0aGUgZm9sbG93aW5nIG1ldGhvZCBzaG91bGQgYWxzbyBiZSBleHBvc2VkIHN0YXRpY2FsbHkgc28gd2UgY2FuIGNhbGwgaXQgZnJvbSB0aGUgWE1MLlxuICpcbiAqIEByZXR1cm5zIFRoZSBkZWNvcmF0ZWQgbWV0aG9kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB4bWxFdmVudEhhbmRsZXIoKTogTWV0aG9kRGVjb3JhdG9yIHtcblx0cmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IFVJNUNvbnRyb2wsIHByb3BlcnR5a2V5KSB7XG5cdFx0Y29uc3QgY3VycmVudENvbnN0cnVjdG9yOiBVSTVBUElDb250cm9sID0gdGFyZ2V0LmNvbnN0cnVjdG9yIGFzIHVua25vd24gYXMgVUk1QVBJQ29udHJvbDtcblx0XHRjdXJyZW50Q29uc3RydWN0b3JbcHJvcGVydHlrZXkudG9TdHJpbmcoKV0gPSBmdW5jdGlvbiAoLi4uYXJnczogYW55W10pIHtcblx0XHRcdGNvbnN0IGN1cnJlbnRUYXJnZXQgPSBjdXJyZW50Q29uc3RydWN0b3IuZ2V0QVBJKGFyZ3NbMF0gYXMgVUk1RXZlbnQpO1xuXHRcdFx0Y3VycmVudFRhcmdldFtwcm9wZXJ0eWtleS50b1N0cmluZygpXSguLi5hcmdzKTtcblx0XHR9O1xuXHR9O1xufVxuXG4vKipcbiAqIEluZGljYXRlcyB0aGF0IHRoZSBmb2xsb3dpbmcgY2xhc3Mgc2hvdWxkIGRlZmluZSBhIHVpNSBjb250cm9sIG9mIHRoZSBzcGVjaWZpZWQgbmFtZS5cbiAqXG4gKiBAcGFyYW0gc1RhcmdldCBUaGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUgb2YgdGhlIG1hY3JvIEFQSVxuICogQHBhcmFtIG1ldGFkYXRhRGVmaW5pdGlvbiBJbmxpbmUgbWV0YWRhdGEgZGVmaW5pdGlvblxuICogQGNsYXNzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVVSTVDbGFzcyhzVGFyZ2V0OiBzdHJpbmcsIG1ldGFkYXRhRGVmaW5pdGlvbj86IGFueSk6IENsYXNzRGVjb3JhdG9yIHtcblx0cmV0dXJuIGZ1bmN0aW9uIChjb25zdHJ1Y3RvcjogRnVuY3Rpb24pIHtcblx0XHRpZiAoIWNvbnN0cnVjdG9yLnByb3RvdHlwZS5tZXRhZGF0YSkge1xuXHRcdFx0Y29uc3RydWN0b3IucHJvdG90eXBlLm1ldGFkYXRhID0ge307XG5cdFx0fVxuXHRcdGlmIChtZXRhZGF0YURlZmluaXRpb24pIHtcblx0XHRcdGZvciAoY29uc3Qga2V5IGluIG1ldGFkYXRhRGVmaW5pdGlvbikge1xuXHRcdFx0XHRjb25zdHJ1Y3Rvci5wcm90b3R5cGUubWV0YWRhdGFba2V5XSA9IG1ldGFkYXRhRGVmaW5pdGlvbltrZXkgYXMga2V5b2YgVUk1Q29udHJvbE1ldGFkYXRhRGVmaW5pdGlvbl07XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiByZWdpc3RlclVJNU1ldGFkYXRhKGNvbnN0cnVjdG9yLCBzVGFyZ2V0LCBjb25zdHJ1Y3Rvci5wcm90b3R5cGUpO1xuXHR9O1xufVxuXG4vKipcbiAqIEludGVybmFsIGhlYXZ5IGxpZnRpbmcgdGhhdCB3aWxsIHRha2UgY2FyZSBvZiBjcmVhdGluZyB0aGUgY2xhc3MgcHJvcGVydHkgZm9yIHVpNSB0byB1c2UuXG4gKlxuICogQHBhcmFtIGNsYXp6IFRoZSBjbGFzcyBwcm90b3R5cGVcbiAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBjbGFzcyB0byBjcmVhdGVcbiAqIEBwYXJhbSBpbk9iaiBUaGUgbWV0YWRhdGEgb2JqZWN0XG4gKiBAcmV0dXJucyBUaGUgbWV0YWRhdGEgY2xhc3NcbiAqL1xuZnVuY3Rpb24gcmVnaXN0ZXJVSTVNZXRhZGF0YShjbGF6ejogYW55LCBuYW1lOiBzdHJpbmcsIGluT2JqOiBhbnkpOiBhbnkge1xuXHRpZiAoY2xhenouZ2V0TWV0YWRhdGEgJiYgY2xhenouZ2V0TWV0YWRhdGEoKS5pc0EoXCJzYXAudWkuY29yZS5tdmMuQ29udHJvbGxlckV4dGVuc2lvblwiKSkge1xuXHRcdE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGluT2JqKS5mb3JFYWNoKChvYmpOYW1lKSA9PiB7XG5cdFx0XHRjb25zdCBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpbk9iaiwgb2JqTmFtZSk7XG5cdFx0XHRpZiAoZGVzY3JpcHRvciAmJiAhZGVzY3JpcHRvci5lbnVtZXJhYmxlKSB7XG5cdFx0XHRcdGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IHRydWU7XG5cdFx0XHRcdC8vXHRcdExvZy5lcnJvcihgUHJvcGVydHkgJHtvYmpOYW1lfSBmcm9tICR7bmFtZX0gc2hvdWxkIGJlIGRlY29yYXRlZCBhcyBwdWJsaWNgKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXHRjb25zdCBvYmo6IGFueSA9IHt9O1xuXHRvYmoubWV0YWRhdGEgPSBpbk9iai5tZXRhZGF0YSB8fCB7fTtcblx0b2JqLm92ZXJyaWRlID0gaW5PYmoub3ZlcnJpZGU7XG5cdG9iai5jb25zdHJ1Y3RvciA9IGNsYXp6O1xuXHRvYmoubWV0YWRhdGEuYmFzZVR5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoY2xhenoucHJvdG90eXBlKS5nZXRNZXRhZGF0YSgpLmdldE5hbWUoKTtcblxuXHRpZiAoY2xheno/LmdldE1ldGFkYXRhKCk/LmdldFN0ZXJlb3R5cGUoKSA9PT0gXCJjb250cm9sXCIpIHtcblx0XHRjb25zdCByZW5kZXJlckRlZmluaXRpb24gPSBpbk9iai5yZW5kZXJlciB8fCBjbGF6ei5yZW5kZXJlciB8fCBjbGF6ei5yZW5kZXI7XG5cdFx0b2JqLnJlbmRlcmVyID0geyBhcGlWZXJzaW9uOiAyIH07XG5cdFx0aWYgKHR5cGVvZiByZW5kZXJlckRlZmluaXRpb24gPT09IFwiZnVuY3Rpb25cIikge1xuXHRcdFx0b2JqLnJlbmRlcmVyLnJlbmRlciA9IHJlbmRlcmVyRGVmaW5pdGlvbjtcblx0XHR9IGVsc2UgaWYgKHJlbmRlcmVyRGVmaW5pdGlvbiAhPSB1bmRlZmluZWQpIHtcblx0XHRcdG9iai5yZW5kZXJlciA9IHJlbmRlcmVyRGVmaW5pdGlvbjtcblx0XHR9XG5cdH1cblx0b2JqLm1ldGFkYXRhLmludGVyZmFjZXMgPSBpbk9iai5tZXRhZGF0YT8uaW50ZXJmYWNlcyB8fCBjbGF6ei5tZXRhZGF0YT8uaW50ZXJmYWNlcztcblx0T2JqZWN0LmtleXMoY2xhenoucHJvdG90eXBlKS5mb3JFYWNoKChrZXkpID0+IHtcblx0XHRpZiAoa2V5ICE9PSBcIm1ldGFkYXRhXCIpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdG9ialtrZXldID0gY2xhenoucHJvdG90eXBlW2tleV07XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdC8vY29uc29sZS5sb2coZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9KTtcblx0aWYgKG9iai5tZXRhZGF0YT8uY29udHJvbGxlckV4dGVuc2lvbnMgJiYgT2JqZWN0LmtleXMob2JqLm1ldGFkYXRhLmNvbnRyb2xsZXJFeHRlbnNpb25zKS5sZW5ndGggPiAwKSB7XG5cdFx0Zm9yIChjb25zdCBjRXh0TmFtZSBpbiBvYmoubWV0YWRhdGEuY29udHJvbGxlckV4dGVuc2lvbnMpIHtcblx0XHRcdG9ialtjRXh0TmFtZV0gPSBvYmoubWV0YWRhdGEuY29udHJvbGxlckV4dGVuc2lvbnNbY0V4dE5hbWVdO1xuXHRcdH1cblx0fVxuXHRjb25zdCBvdXRwdXQgPSBjbGF6ei5leHRlbmQobmFtZSwgb2JqKTtcblx0Y29uc3QgZm5Jbml0ID0gb3V0cHV0LnByb3RvdHlwZS5pbml0O1xuXHRvdXRwdXQucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoLi4uYXJnczogYW55W10pIHtcblx0XHRmbkluaXQgJiYgZm5Jbml0LmFwcGx5KHRoaXMsIGFyZ3MpO1xuXHRcdHRoaXMubWV0YWRhdGEgPSBvYmoubWV0YWRhdGE7XG5cblx0XHRpZiAob2JqLm1ldGFkYXRhLnByb3BlcnRpZXMpIHtcblx0XHRcdGNvbnN0IGFQcm9wZXJ0eUtleXMgPSBPYmplY3Qua2V5cyhvYmoubWV0YWRhdGEucHJvcGVydGllcyk7XG5cdFx0XHRhUHJvcGVydHlLZXlzLmZvckVhY2goKHByb3BlcnR5S2V5KSA9PiB7XG5cdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eUtleSwge1xuXHRcdFx0XHRcdGNvbmZpZ3VyYWJsZTogdHJ1ZSxcblx0XHRcdFx0XHRzZXQ6ICh2OiBhbnkpID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiB0aGlzLnNldFByb3BlcnR5KHByb3BlcnR5S2V5LCB2KTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGdldDogKCkgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuZ2V0UHJvcGVydHkocHJvcGVydHlLZXkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHRcdGNvbnN0IGFBZ2dyZWdhdGlvbktleXMgPSBPYmplY3Qua2V5cyhvYmoubWV0YWRhdGEuYWdncmVnYXRpb25zKTtcblx0XHRcdGFBZ2dyZWdhdGlvbktleXMuZm9yRWFjaCgoYWdncmVnYXRpb25LZXkpID0+IHtcblx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIGFnZ3JlZ2F0aW9uS2V5LCB7XG5cdFx0XHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdHNldDogKHY6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuc2V0QWdncmVnYXRpb24oYWdncmVnYXRpb25LZXksIHYpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0Z2V0OiAoKSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zdCBhZ2dyZWdhdGlvbkNvbnRlbnQgPSB0aGlzLmdldEFnZ3JlZ2F0aW9uKGFnZ3JlZ2F0aW9uS2V5KTtcblx0XHRcdFx0XHRcdGlmIChvYmoubWV0YWRhdGEuYWdncmVnYXRpb25zW2FnZ3JlZ2F0aW9uS2V5XS5tdWx0aXBsZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gYWdncmVnYXRpb25Db250ZW50IHx8IFtdO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGFnZ3JlZ2F0aW9uQ29udGVudDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0XHRjb25zdCBhQXNzb2NpYXRpb25LZXlzID0gT2JqZWN0LmtleXMob2JqLm1ldGFkYXRhLmFzc29jaWF0aW9ucyk7XG5cdFx0XHRhQXNzb2NpYXRpb25LZXlzLmZvckVhY2goKGFzc29jaWF0aW9uS2V5KSA9PiB7XG5cdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBhc3NvY2lhdGlvbktleSwge1xuXHRcdFx0XHRcdGNvbmZpZ3VyYWJsZTogdHJ1ZSxcblx0XHRcdFx0XHRzZXQ6ICh2OiBhbnkpID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiB0aGlzLnNldEFzc29jaWF0aW9uKGFzc29jaWF0aW9uS2V5LCB2KTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGdldDogKCkgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3QgYWdncmVnYXRpb25Db250ZW50ID0gdGhpcy5nZXRBc3NvY2lhdGlvbihhc3NvY2lhdGlvbktleSk7XG5cdFx0XHRcdFx0XHRpZiAob2JqLm1ldGFkYXRhLmFzc29jaWF0aW9uc1thc3NvY2lhdGlvbktleV0ubXVsdGlwbGUpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGFnZ3JlZ2F0aW9uQ29udGVudCB8fCBbXTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBhZ2dyZWdhdGlvbkNvbnRlbnQ7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fTtcblx0Y2xhenoub3ZlcnJpZGUgPSBmdW5jdGlvbiAob0V4dGVuc2lvbjogYW55KSB7XG5cdFx0Y29uc3QgcG9sID0ge307XG5cdFx0KHBvbCBhcyBhbnkpLmNvbnN0cnVjdG9yID0gZnVuY3Rpb24gKC4uLmFyZ3M6IGFueVtdKSB7XG5cdFx0XHRyZXR1cm4gY2xhenouYXBwbHkodGhpcywgYXJncyBhcyBhbnkpO1xuXHRcdH07XG5cdFx0Y29uc3Qgb0NsYXNzID0gKE1ldGFkYXRhIGFzIGFueSkuY3JlYXRlQ2xhc3MoY2xhenosIFwiYW5vbnltb3VzRXh0ZW5zaW9uflwiICsgdWlkKCksIHBvbCwgQ29udHJvbGxlck1ldGFkYXRhKTtcblx0XHRvQ2xhc3MuZ2V0TWV0YWRhdGEoKS5fc3RhdGljT3ZlcnJpZGUgPSBvRXh0ZW5zaW9uO1xuXHRcdG9DbGFzcy5nZXRNZXRhZGF0YSgpLl9vdmVycmlkZSA9IChjbGF6ei5nZXRNZXRhZGF0YSgpIGFzIGFueSkuX292ZXJyaWRlO1xuXHRcdHJldHVybiBvQ2xhc3M7XG5cdH07XG5cblx0T2JqZWN0UGF0aC5zZXQobmFtZSwgb3V0cHV0KTtcblx0cmV0dXJuIG91dHB1dDtcbn1cbiJdfQ==
|