@sapui5/sap.fe.core 1.121.2 → 1.123.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/ActionRuntime.js +2 -2
- package/src/sap/fe/core/ActionRuntime.ts +1 -2
- package/src/sap/fe/core/CommonUtils.js +14 -171
- package/src/sap/fe/core/CommonUtils.ts +15 -221
- package/src/sap/fe/core/PageController.js +13 -1
- package/src/sap/fe/core/PageController.ts +16 -0
- package/src/sap/fe/core/TemplateComponent.js +6 -1
- package/src/sap/fe/core/TemplateComponent.ts +8 -0
- package/src/sap/fe/core/UIProvider.js +23 -0
- package/src/sap/fe/core/UIProvider.ts +38 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js +97 -43
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.ts +120 -50
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.js +6 -3
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.ts +12 -18
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.js +2 -2
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.ts +1 -1
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.js +1 -1
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.ts +4 -3
- package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlockFragment.js +1 -1
- package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlockFragment.ts +1 -0
- package/src/sap/fe/core/controllerextensions/BaseControllerExtension.js +42 -1
- package/src/sap/fe/core/controllerextensions/BaseControllerExtension.ts +40 -0
- package/src/sap/fe/core/controllerextensions/CollaborativeDraft.js +5 -2
- package/src/sap/fe/core/controllerextensions/CollaborativeDraft.ts +5 -3
- package/src/sap/fe/core/controllerextensions/EditFlow.js +151 -60
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +165 -68
- package/src/sap/fe/core/controllerextensions/HookSupport.js +32 -14
- package/src/sap/fe/core/controllerextensions/HookSupport.ts +35 -14
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +5 -17
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +0 -12
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +6 -6
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +15 -10
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +108 -287
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +117 -309
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +2 -2
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +6 -2
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +2 -2
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +1 -1
- package/src/sap/fe/core/controllerextensions/PageReady.js +6 -6
- package/src/sap/fe/core/controllerextensions/PageReady.ts +5 -4
- package/src/sap/fe/core/controllerextensions/Paginator.js +17 -110
- package/src/sap/fe/core/controllerextensions/Paginator.ts +13 -130
- package/src/sap/fe/core/controllerextensions/Placeholder.js +3 -3
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +1 -2
- package/src/sap/fe/core/controllerextensions/Recommendations.js +36 -31
- package/src/sap/fe/core/controllerextensions/Recommendations.ts +32 -37
- package/src/sap/fe/core/controllerextensions/Share.js +7 -7
- package/src/sap/fe/core/controllerextensions/Share.ts +6 -6
- package/src/sap/fe/core/controllerextensions/SideEffects.js +52 -6
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +56 -4
- package/src/sap/fe/core/controllerextensions/ViewState.js +32 -46
- package/src/sap/fe/core/controllerextensions/ViewState.ts +24 -31
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js +42 -31
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.tsx +6 -0
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +168 -276
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +182 -310
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +3 -3
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +2 -2
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +4 -3
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +3 -2
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +74 -52
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +95 -55
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +3 -17
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +10 -23
- package/src/sap/fe/core/controllerextensions/recommendations/Telemetry.js +3 -3
- package/src/sap/fe/core/controllerextensions/recommendations/Telemetry.ts +2 -2
- package/src/sap/fe/core/controllerextensions/routing/ContextPathHelper.js +225 -0
- package/src/sap/fe/core/controllerextensions/routing/ContextPathHelper.ts +241 -0
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.js +69 -48
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.tsx +56 -33
- package/src/sap/fe/core/controls/FormElementWrapper.js +8 -11
- package/src/sap/fe/core/controls/FormElementWrapper.ts +9 -0
- package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block.js +6 -14
- package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block.tsx +12 -23
- package/src/sap/fe/core/converters/ConverterContext.js +17 -9
- package/src/sap/fe/core/converters/ConverterContext.ts +55 -41
- package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +19 -5
- package/src/sap/fe/core/converters/ManifestWrapper.js +14 -4
- package/src/sap/fe/core/converters/ManifestWrapper.ts +21 -10
- package/src/sap/fe/core/converters/MetaModelConverter.js +402 -383
- package/src/sap/fe/core/converters/MetaModelConverter.ts +538 -338
- package/src/sap/fe/core/converters/TemplateConverter.js +4 -2
- package/src/sap/fe/core/converters/TemplateConverter.ts +18 -13
- package/src/sap/fe/core/converters/annotations/DataField.js +30 -28
- package/src/sap/fe/core/converters/annotations/DataField.ts +58 -35
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +24 -23
- package/src/sap/fe/core/converters/controls/Common/Action.js +5 -4
- package/src/sap/fe/core/converters/controls/Common/Action.ts +34 -28
- package/src/sap/fe/core/converters/controls/Common/Chart.js +37 -33
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +64 -46
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +15 -4
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +31 -15
- package/src/sap/fe/core/converters/controls/Common/Form.js +6 -4
- package/src/sap/fe/core/converters/controls/Common/Form.ts +23 -11
- package/src/sap/fe/core/converters/controls/Common/KPI.js +5 -3
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +17 -11
- package/src/sap/fe/core/converters/controls/Common/Table.js +197 -101
- package/src/sap/fe/core/converters/controls/Common/Table.ts +393 -182
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +4 -5
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +38 -27
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +41 -11
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +112 -45
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +7 -7
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +18 -12
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +5 -4
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +19 -9
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +64 -63
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +109 -100
- package/src/sap/fe/core/converters/helpers/Aggregation.js +12 -11
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +35 -30
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +4 -1
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +12 -9
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +1 -1
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +1 -1
- package/src/sap/fe/core/converters/helpers/ID.js +1 -1
- package/src/sap/fe/core/converters/helpers/ID.ts +6 -6
- package/src/sap/fe/core/converters/helpers/InsightsHelpers.js +3 -3
- package/src/sap/fe/core/converters/helpers/InsightsHelpers.ts +11 -6
- package/src/sap/fe/core/converters/helpers/Key.js +2 -2
- package/src/sap/fe/core/converters/helpers/Key.ts +4 -4
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +2 -2
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +21 -19
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +43 -31
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +1 -1
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +16 -12
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +8 -3
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +41 -21
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +5 -3
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +24 -19
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +3 -2
- package/src/sap/fe/core/designtime/AppComponent.designtime.ts +2 -1
- package/src/sap/fe/core/filter/DraftEditState.fragment.xml +1 -1
- package/src/sap/fe/core/formatters/CollaborationFormatter.js +4 -6
- package/src/sap/fe/core/formatters/CollaborationFormatter.ts +5 -4
- package/src/sap/fe/core/formatters/FPMFormatter.js +5 -13
- package/src/sap/fe/core/formatters/FPMFormatter.ts +11 -10
- package/src/sap/fe/core/formatters/FiscalFormat.js +1 -1
- package/src/sap/fe/core/formatters/FiscalFormat.ts +1 -1
- package/src/sap/fe/core/formatters/KPIFormatter.js +4 -7
- package/src/sap/fe/core/formatters/KPIFormatter.ts +3 -3
- package/src/sap/fe/core/formatters/StandardFormatter.js +4 -7
- package/src/sap/fe/core/formatters/StandardFormatter.ts +3 -3
- package/src/sap/fe/core/formatters/ValueFormatter.js +35 -6
- package/src/sap/fe/core/formatters/ValueFormatter.ts +31 -3
- package/src/sap/fe/core/fpm/manifest.json +1 -1
- package/src/sap/fe/core/helpers/AppStartupHelper.js +54 -33
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +62 -41
- package/src/sap/fe/core/helpers/BindingToolkit.js +17 -3
- package/src/sap/fe/core/helpers/BindingToolkit.ts +28 -6
- package/src/sap/fe/core/helpers/ClassSupport.js +32 -13
- package/src/sap/fe/core/helpers/ClassSupport.ts +35 -15
- package/src/sap/fe/core/helpers/DeleteHelper.js +71 -61
- package/src/sap/fe/core/helpers/DeleteHelper.ts +125 -103
- package/src/sap/fe/core/helpers/DraftEditState.js +5 -3
- package/src/sap/fe/core/helpers/DraftEditState.ts +3 -1
- package/src/sap/fe/core/helpers/FPMHelper.js +43 -46
- package/src/sap/fe/core/helpers/FPMHelper.ts +50 -56
- package/src/sap/fe/core/helpers/MetaModelFunction.js +77 -53
- package/src/sap/fe/core/helpers/MetaModelFunction.ts +78 -57
- package/src/sap/fe/core/helpers/ModelHelper.js +10 -4
- package/src/sap/fe/core/helpers/ModelHelper.ts +12 -6
- package/src/sap/fe/core/helpers/PasteHelper.js +194 -7
- package/src/sap/fe/core/helpers/PasteHelper.ts +265 -13
- package/src/sap/fe/core/helpers/PromiseKeeper.js +66 -0
- package/src/sap/fe/core/helpers/PromiseKeeper.ts +56 -0
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +30 -19
- package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +34 -22
- package/src/sap/fe/core/helpers/StableIdHelper.js +1 -1
- package/src/sap/fe/core/helpers/StableIdHelper.ts +7 -2
- package/src/sap/fe/core/helpers/StandardRecommendationHelper.js +26 -52
- package/src/sap/fe/core/helpers/StandardRecommendationHelper.ts +37 -63
- package/src/sap/fe/core/helpers/TitleHelper.js +1 -1
- package/src/sap/fe/core/helpers/TitleHelper.ts +17 -14
- package/src/sap/fe/core/helpers/TypeGuards.js +27 -3
- package/src/sap/fe/core/helpers/TypeGuards.ts +37 -7
- package/src/sap/fe/core/jsx-runtime/jsx-xml.js +48 -8
- package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +40 -9
- package/src/sap/fe/core/library.js +1 -1
- package/src/sap/fe/core/messagebundle.properties +5 -2
- package/src/sap/fe/core/messagebundle_da.properties +1 -1
- package/src/sap/fe/core/messagebundle_en.properties +267 -2
- package/src/sap/fe/core/messagebundle_sl.properties +1 -1
- package/src/sap/fe/core/operationsHelper.js +2 -1
- package/src/sap/fe/core/operationsHelper.ts +1 -0
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +3 -3
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +2 -2
- package/src/sap/fe/core/services/NavigationServiceFactory.js +2 -2
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +3 -2
- package/src/sap/fe/core/services/RoutingServiceFactory.js +27 -14
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +27 -14
- package/src/sap/fe/core/services/ShellServicesFactory.js +49 -12
- package/src/sap/fe/core/services/ShellServicesFactory.ts +62 -13
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +156 -82
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +218 -100
- package/src/sap/fe/core/services/TelemetryServiceFactory.js +3 -3
- package/src/sap/fe/core/services/TelemetryServiceFactory.ts +6 -6
- package/src/sap/fe/core/services/ValueHelpHistoryServiceFactory.js +3 -2
- package/src/sap/fe/core/services/ValueHelpHistoryServiceFactory.ts +1 -1
- package/src/sap/fe/core/services/collaborativeDraftServiceFactory.js +1 -1
- package/src/sap/fe/core/services/collaborativeDraftServiceFactory.ts +2 -2
- package/src/sap/fe/core/services/view/TemplatingErrorPage.view.xml +1 -1
- package/src/sap/fe/core/templating/CommonFormatters.js +6 -3
- package/src/sap/fe/core/templating/CommonFormatters.ts +13 -12
- package/src/sap/fe/core/templating/CriticalityFormatters.js +2 -2
- package/src/sap/fe/core/templating/CriticalityFormatters.ts +37 -14
- package/src/sap/fe/core/templating/DataFieldFormatters.js +12 -11
- package/src/sap/fe/core/templating/DataFieldFormatters.ts +35 -24
- package/src/sap/fe/core/templating/DataModelPathHelper.js +22 -18
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +61 -51
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +8 -3
- package/src/sap/fe/core/templating/EntityTypeHelper.js +1 -1
- package/src/sap/fe/core/templating/EntityTypeHelper.ts +1 -1
- package/src/sap/fe/core/templating/FieldControlHelper.js +3 -3
- package/src/sap/fe/core/templating/FieldControlHelper.ts +27 -8
- package/src/sap/fe/core/templating/FilterHelper.js +13 -10
- package/src/sap/fe/core/templating/FilterHelper.ts +80 -46
- package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
- package/src/sap/fe/core/templating/FilterTemplating.ts +2 -2
- package/src/sap/fe/core/templating/PropertyFormatters.js +6 -8
- package/src/sap/fe/core/templating/PropertyFormatters.ts +11 -11
- package/src/sap/fe/core/templating/PropertyHelper.js +3 -3
- package/src/sap/fe/core/templating/PropertyHelper.ts +4 -4
- package/src/sap/fe/core/templating/SemanticObjectHelper.js +157 -13
- package/src/sap/fe/core/templating/SemanticObjectHelper.ts +182 -16
- package/src/sap/fe/core/templating/UIFormatters.js +23 -22
- package/src/sap/fe/core/templating/UIFormatters.ts +94 -66
- package/src/sap/fe/core/type/DateTimeWithTimezone.js +1 -1
- package/src/sap/fe/core/type/DateTimeWithTimezone.ts +2 -2
- package/src/sap/fe/core/type/EDM.js +1 -1
- package/src/sap/fe/core/type/EDM.ts +2 -2
- package/src/sap/fe/core/type/Email.js +1 -1
- package/src/sap/fe/core/type/Email.ts +1 -1
- package/src/sap/fe/core/type/FiscalDate.js +2 -2
- package/src/sap/fe/core/type/FiscalDate.ts +2 -2
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import type { PropertiesOf } from "sap/fe/core/helpers/ClassSupport";
|
|
1
2
|
import { aggregation, defineUI5Class, implementInterface, property } from "sap/fe/core/helpers/ClassSupport";
|
|
3
|
+
import type { $ControlSettings } from "sap/ui/core/Control";
|
|
2
4
|
import Control from "sap/ui/core/Control";
|
|
3
5
|
import type { AccessibilityInfo, CSSSize, IFormContent } from "sap/ui/core/library";
|
|
4
6
|
import type RenderManager from "sap/ui/core/RenderManager";
|
|
@@ -28,6 +30,13 @@ class FormElementWrapper extends Control implements IFormContent {
|
|
|
28
30
|
return oContent && oContent.getAccessibilityInfo ? oContent.getAccessibilityInfo() : {};
|
|
29
31
|
}
|
|
30
32
|
|
|
33
|
+
constructor(
|
|
34
|
+
id?: string | undefined | (PropertiesOf<FormElementWrapper> & $ControlSettings),
|
|
35
|
+
settings?: $ControlSettings & PropertiesOf<FormElementWrapper>
|
|
36
|
+
) {
|
|
37
|
+
super(id as string, settings);
|
|
38
|
+
}
|
|
39
|
+
|
|
31
40
|
static render(oRm: RenderManager, oControl: FormElementWrapper): void {
|
|
32
41
|
oRm.openStart("div", oControl);
|
|
33
42
|
oRm.style("min-height", "1rem");
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2024 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBlockSupport", "sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlock", "sap/fe/core/converters/MetaModelConverter", "sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/ResourceModelHelper", "sap/m/Button", "sap/m/CustomListItem", "sap/m/Dialog", "sap/m/FlexItemData", "sap/m/HBox", "sap/m/List", "sap/m/MessageStrip", "sap/m/Text", "sap/m/Toolbar", "sap/m/ToolbarSpacer", "sap/ui/core/library", "sap/ui/model/Sorter", "sap/ui/model/json/JSONModel", "../../
|
|
5
|
+
sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBlockSupport", "sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlock", "sap/fe/core/converters/MetaModelConverter", "sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/ResourceModelHelper", "sap/m/Button", "sap/m/CustomListItem", "sap/m/Dialog", "sap/m/FlexItemData", "sap/m/HBox", "sap/m/List", "sap/m/MessageStrip", "sap/m/Text", "sap/m/Toolbar", "sap/m/ToolbarSpacer", "sap/ui/core/library", "sap/ui/model/Sorter", "sap/ui/model/json/JSONModel", "../../formatters/ValueFormatter", "../../helpers/StandardRecommendationHelper", "sap/fe/core/jsx-runtime/jsx", "sap/fe/core/jsx-runtime/Fragment", "sap/fe/core/jsx-runtime/jsxs"], function (Log, BuildingBlockSupport, RuntimeBuildingBlock, MetaModelConverter, ClassSupport, ResourceModelHelper, Button, CustomListItem, Dialog, FlexItemData, HBox, List, MessageStrip, Text, Toolbar, ToolbarSpacer, library, Sorter, JSONModel, valueFormatters, StandardRecommendationHelper, _jsx, _Fragment, _jsxs) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _dec, _dec2, _class, _class2, _descriptor;
|
|
@@ -120,9 +120,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
120
120
|
* @returns Returns the label of the Field.
|
|
121
121
|
*/;
|
|
122
122
|
_proto.getFieldName = function getFieldName(targetPath) {
|
|
123
|
-
var _this$view4, _this$view4$getBindin, _this$view4$getBindin2, _involvedDataModelObj, _involvedDataModelObj2, _involvedDataModelObj3;
|
|
123
|
+
var _this$view4, _this$view4$getBindin, _this$view4$getBindin2, _involvedDataModelObj, _involvedDataModelObj2, _involvedDataModelObj3, _involvedDataModelObj4;
|
|
124
124
|
const involvedDataModelObject = MetaModelConverter.getInvolvedDataModelObjectsForTargetPath(targetPath, (_this$view4 = this.view) === null || _this$view4 === void 0 ? void 0 : (_this$view4$getBindin = _this$view4.getBindingContext()) === null || _this$view4$getBindin === void 0 ? void 0 : (_this$view4$getBindin2 = _this$view4$getBindin.getModel()) === null || _this$view4$getBindin2 === void 0 ? void 0 : _this$view4$getBindin2.getMetaModel());
|
|
125
|
-
return (involvedDataModelObject === null || involvedDataModelObject === void 0 ? void 0 : (_involvedDataModelObj = involvedDataModelObject.targetObject) === null || _involvedDataModelObj === void 0 ? void 0 : (_involvedDataModelObj2 = _involvedDataModelObj.annotations) === null || _involvedDataModelObj2 === void 0 ? void 0 : (_involvedDataModelObj3 = _involvedDataModelObj2.Common) === null || _involvedDataModelObj3 === void 0 ? void 0 : _involvedDataModelObj3.Label) || targetPath.split("/")[targetPath.split("/").length - 1];
|
|
125
|
+
return (involvedDataModelObject === null || involvedDataModelObject === void 0 ? void 0 : (_involvedDataModelObj = involvedDataModelObject.targetObject) === null || _involvedDataModelObj === void 0 ? void 0 : (_involvedDataModelObj2 = _involvedDataModelObj.annotations) === null || _involvedDataModelObj2 === void 0 ? void 0 : (_involvedDataModelObj3 = _involvedDataModelObj2.Common) === null || _involvedDataModelObj3 === void 0 ? void 0 : (_involvedDataModelObj4 = _involvedDataModelObj3.Label) === null || _involvedDataModelObj4 === void 0 ? void 0 : _involvedDataModelObj4.toString()) || targetPath.split("/")[targetPath.split("/").length - 1];
|
|
126
126
|
}
|
|
127
127
|
|
|
128
128
|
/**
|
|
@@ -194,18 +194,10 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
194
194
|
_proto.getAcceptAllModel = function getAcceptAllModel() {
|
|
195
195
|
const acceptModel = new JSONModel();
|
|
196
196
|
const items = [];
|
|
197
|
-
const appComponent = CommonUtils.getAppComponent(this.view);
|
|
198
|
-
const isFclEnabled = appComponent._isFclEnabled();
|
|
199
|
-
const isFullScreen = isFclEnabled ? appComponent.getRootViewController().getHelper().getCurrentUIState().isFullScreen : true;
|
|
200
197
|
for (const recommendationData of ((_this$acceptAllParams = this.acceptAllParams) === null || _this$acceptAllParams === void 0 ? void 0 : _this$acceptAllParams.recommendationData) || []) {
|
|
201
198
|
var _this$acceptAllParams;
|
|
202
|
-
const
|
|
203
|
-
|
|
204
|
-
if (isFclEnabled && !isFullScreen) {
|
|
205
|
-
identifierTexts = recommendationData.contextIdentifierText && recommendationData.contextIdentifierText.length > 0 ? (recommendationData.prefixText ? `${recommendationData.prefixText}/` : "") + `${entityName} (${recommendationData.contextIdentifierText})` : entityName;
|
|
206
|
-
} else {
|
|
207
|
-
identifierTexts = recommendationData.contextIdentifierText && recommendationData.contextIdentifierText.length > 0 ? `${entityName} (${recommendationData.contextIdentifierText})` : entityName;
|
|
208
|
-
}
|
|
199
|
+
const entityNameLabel = standardRecommendationHelper.getEntityName(recommendationData.context) || "";
|
|
200
|
+
const identifierTexts = recommendationData.contextIdentifierText && recommendationData.contextIdentifierText.length > 0 ? `${entityNameLabel} (${recommendationData.contextIdentifierText})` : entityNameLabel;
|
|
209
201
|
if (recommendationData.value || recommendationData.text) {
|
|
210
202
|
var _recommendationData$c, _this$view5, _this$view5$getBindin, _this$view5$getBindin2;
|
|
211
203
|
const targetPath = ((_recommendationData$c = recommendationData.context) === null || _recommendationData$c === void 0 ? void 0 : _recommendationData$c.getPath()) + "/" + recommendationData.propertyPath;
|
|
@@ -301,4 +293,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
301
293
|
_exports.ConfirmRecommendationDialogBlock = ConfirmRecommendationDialogBlock;
|
|
302
294
|
return _exports;
|
|
303
295
|
}, false);
|
|
304
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWNvbW1lbmRhdGlvbkRpYWxvZ0RlY2lzaW9uIiwiQ29uZmlybVJlY29tbWVuZGF0aW9uRGlhbG9nQmxvY2siLCJkZWZpbmVCdWlsZGluZ0Jsb2NrIiwibmFtZSIsIm5hbWVzcGFjZSIsImRlZmluZVJlZmVyZW5jZSIsInByb3BzIiwidmlldyIsImNvbmZpcm1SZWNvbW1lbmRhdGlvbkRpYWxvZ1Jlc291cmNlTW9kZWwiLCJnZXRSZXNvdXJjZU1vZGVsIiwib3BlbiIsImlzU2F2ZSIsImFjY2VwdEFsbFBhcmFtcyIsImdldENvbnRyb2xsZXIiLCJyZWNvbW1lbmRhdGlvbnMiLCJmZXRjaEFjY2VwdEFsbFBhcmFtcyIsImFjY2VwdE1vZGVsIiwiZ2V0QWNjZXB0QWxsTW9kZWwiLCJzZXRNb2RlbCIsImdldERhdGEiLCJpdGVtcyIsImxlbmd0aCIsIlNraXBwZWQiLCJkaWFsb2ciLCJnZXRDb250ZW50Iiwic2V0RXNjYXBlSGFuZGxlciIsIm9uQ29udGludWVFZGl0aW5nIiwiYmluZCIsImFkZERlcGVuZGVudCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwicHJvbWlzZVJlc29sdmUiLCJwcm9taXNlUmVqZWN0IiwiY2xvc2UiLCJjb25maXJtUmVjb21tZW5kYXRpb25EaWFsb2ciLCJjdXJyZW50IiwiZGVzdHJveSIsIm9uQWNjZXB0QW5kU2F2ZSIsImlzQWNjZXB0ZWQiLCJhY2NlcHRSZWNvbW1lbmRhdGlvbnMiLCJBY2NlcHQiLCJMb2ciLCJlcnJvciIsIm9uSWdub3JlQW5kU2F2ZSIsImlnbm9yZVJlY29tbWVuZGF0aW9uRm9yQ29udGV4dHMiLCJJZ25vcmUiLCJDb250aW51ZSIsImdldEZpZWxkTmFtZSIsInRhcmdldFBhdGgiLCJpbnZvbHZlZERhdGFNb2RlbE9iamVjdCIsIk1ldGFNb2RlbENvbnZlcnRlciIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0c0ZvclRhcmdldFBhdGgiLCJnZXRCaW5kaW5nQ29udGV4dCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwidGFyZ2V0T2JqZWN0IiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJMYWJlbCIsInNwbGl0IiwiZ2V0VGV4dCIsInJlY29tbWVuZGF0aW9uIiwiZGlzcGxheU1vZGUiLCJ0ZXh0IiwidmFsdWUiLCJ2YWx1ZUZvcm1hdHRlcnMiLCJmb3JtYXRXaXRoQnJhY2tldHMiLCJnZXRCdXR0b24iLCJ0eXBlIiwicHJlc3NIYW5kbGVyIiwibGF5b3V0RGF0YSIsImdldEZvb3RlciIsImNvbnRlbnQiLCJKU09OTW9kZWwiLCJhcHBDb21wb25lbnQiLCJDb21tb25VdGlscyIsImdldEFwcENvbXBvbmVudCIsImlzRmNsRW5hYmxlZCIsIl9pc0ZjbEVuYWJsZWQiLCJpc0Z1bGxTY3JlZW4iLCJnZXRSb290Vmlld0NvbnRyb2xsZXIiLCJnZXRIZWxwZXIiLCJnZXRDdXJyZW50VUlTdGF0ZSIsInJlY29tbWVuZGF0aW9uRGF0YSIsImVudGl0eU5hbWUiLCJzdGFuZGFyZFJlY29tbWVuZGF0aW9uSGVscGVyIiwiZ2V0RW50aXR5TmFtZSIsImNvbnRleHQiLCJpZGVudGlmaWVyVGV4dHMiLCJjb250ZXh0SWRlbnRpZmllclRleHQiLCJwcmVmaXhUZXh0IiwiZ2V0UGF0aCIsInByb3BlcnR5UGF0aCIsImdldERpc3BsYXlNb2RlRm9yVGFyZ2V0UGF0aCIsImxpc3REYXRhIiwiZmllbGROYW1lIiwidmFsdWVPZiIsImZpZWxkVmFsdWUiLCJwdXNoIiwic2V0RGF0YSIsImdldEdyb3VwIiwiZ2V0UHJvcGVydHkiLCJnZXRNZXNzYWdlU3RyaXAiLCJhY2NlcHRBbGxEYXRhIiwibWVzc2FnZVN0cmlwVGV4dCIsImdldERpYWxvZ0NvbnRlbnQiLCJtb2RlbCIsInBhdGgiLCJzb3J0ZXIiLCJTb3J0ZXIiLCJWYWx1ZVN0YXRlIiwiSW5mb3JtYXRpb24iLCJmb290ZXIiLCJSdW50aW1lQnVpbGRpbmdCbG9jayJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQ29uZmlybVJlY29tbWVuZGF0aW9uRGlhbG9nLmJsb2NrLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB7IGRlZmluZUJ1aWxkaW5nQmxvY2sgfSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvdGVtcGxhdGluZy9CdWlsZGluZ0Jsb2NrU3VwcG9ydFwiO1xuaW1wb3J0IFJ1bnRpbWVCdWlsZGluZ0Jsb2NrIGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy90ZW1wbGF0aW5nL1J1bnRpbWVCdWlsZGluZ0Jsb2NrXCI7XG5pbXBvcnQgKiBhcyBNZXRhTW9kZWxDb252ZXJ0ZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgZGVmaW5lUmVmZXJlbmNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBnZXRSZXNvdXJjZU1vZGVsIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvUmVzb3VyY2VNb2RlbEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tIFwic2FwL2ZlL2NvcmUvanN4LXJ1bnRpbWUvanN4XCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCBDdXN0b21MaXN0SXRlbSBmcm9tIFwic2FwL20vQ3VzdG9tTGlzdEl0ZW1cIjtcbmltcG9ydCBEaWFsb2cgZnJvbSBcInNhcC9tL0RpYWxvZ1wiO1xuaW1wb3J0IEZsZXhJdGVtRGF0YSBmcm9tIFwic2FwL20vRmxleEl0ZW1EYXRhXCI7XG5pbXBvcnQgSEJveCBmcm9tIFwic2FwL20vSEJveFwiO1xuaW1wb3J0IExpc3QgZnJvbSBcInNhcC9tL0xpc3RcIjtcbmltcG9ydCBNZXNzYWdlU3RyaXAgZnJvbSBcInNhcC9tL01lc3NhZ2VTdHJpcFwiO1xuaW1wb3J0IFRleHQgZnJvbSBcInNhcC9tL1RleHRcIjtcbmltcG9ydCBUb29sYmFyIGZyb20gXCJzYXAvbS9Ub29sYmFyXCI7XG5pbXBvcnQgVG9vbGJhclNwYWNlciBmcm9tIFwic2FwL20vVG9vbGJhclNwYWNlclwiO1xuaW1wb3J0IHR5cGUgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IHsgVmFsdWVTdGF0ZSB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IFNvcnRlciBmcm9tIFwic2FwL3VpL21vZGVsL1NvcnRlclwiO1xuaW1wb3J0IEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgT0RhdGFWNENvbnRleHQgfSBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIHsgRXZlbnRIYW5kbGVyIH0gZnJvbSBcInR5cGVzL2V4dGVuc2lvbl90eXBlc1wiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCIuLi8uLi9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcIi4uLy4uL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSBSZXNvdXJjZU1vZGVsIGZyb20gXCIuLi8uLi9SZXNvdXJjZU1vZGVsXCI7XG5pbXBvcnQgdHlwZSB7IEFjY2VwdEFsbFBhcmFtcyB9IGZyb20gXCIuLi8uLi9jb250cm9sbGVyZXh0ZW5zaW9ucy9SZWNvbW1lbmRhdGlvbnNcIjtcbmltcG9ydCB2YWx1ZUZvcm1hdHRlcnMgZnJvbSBcIi4uLy4uL2Zvcm1hdHRlcnMvVmFsdWVGb3JtYXR0ZXJcIjtcbmltcG9ydCB7IHN0YW5kYXJkUmVjb21tZW5kYXRpb25IZWxwZXIsIHR5cGUgU3RhbmRhcmRSZWNvbW1lbmRhdGlvbkRhdGFUeXBlIH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMvU3RhbmRhcmRSZWNvbW1lbmRhdGlvbkhlbHBlclwiO1xuaW1wb3J0IHR5cGUgRmNsQ29udHJvbGxlciBmcm9tIFwiLi4vLi4vcm9vdFZpZXcvRmNsLmNvbnRyb2xsZXJcIjtcbmV4cG9ydCBlbnVtIFJlY29tbWVuZGF0aW9uRGlhbG9nRGVjaXNpb24ge1xuXHRBY2NlcHQgPSBcIkFjY2VwdF9SZWNvbW1lbmRhdGlvbnNcIixcblx0SWdub3JlID0gXCJJZ25vcmVfUmVjb21tZW5kYXRpb25zXCIsXG5cdENvbnRpbnVlID0gXCJDb250aW51ZV9FZGl0aW5nXCIsXG5cdFNraXBwZWQgPSBcIlNraXBwZWRcIlxufVxuXG5AZGVmaW5lQnVpbGRpbmdCbG9jayh7XG5cdG5hbWU6IFwiQ29uZmlybVJlY29tbWVuZGF0aW9uRGlhbG9nXCIsXG5cdG5hbWVzcGFjZTogXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9uc1wiXG59KVxuZXhwb3J0IGNsYXNzIENvbmZpcm1SZWNvbW1lbmRhdGlvbkRpYWxvZ0Jsb2NrIGV4dGVuZHMgUnVudGltZUJ1aWxkaW5nQmxvY2sge1xuXHRjb25zdHJ1Y3Rvcihwcm9wczogUHJvcGVydGllc09mPENvbmZpcm1SZWNvbW1lbmRhdGlvbkRpYWxvZ0Jsb2NrPikge1xuXHRcdHN1cGVyKHByb3BzKTtcblx0XHR0aGlzLnZpZXcgPSBwcm9wcy52aWV3IGFzIFZpZXc7XG5cdFx0dGhpcy5jb25maXJtUmVjb21tZW5kYXRpb25EaWFsb2dSZXNvdXJjZU1vZGVsID0gZ2V0UmVzb3VyY2VNb2RlbCh0aGlzLnZpZXcpO1xuXHR9XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdGNvbmZpcm1SZWNvbW1lbmRhdGlvbkRpYWxvZyE6IFJlZjxEaWFsb2c+O1xuXG5cdHB1YmxpYyB2aWV3ITogVmlldztcblxuXHRwcml2YXRlIGNvbmZpcm1SZWNvbW1lbmRhdGlvbkRpYWxvZ1Jlc291cmNlTW9kZWwhOiBSZXNvdXJjZU1vZGVsO1xuXG5cdHByb3RlY3RlZCBrZXkhOiBzdHJpbmc7XG5cblx0cHJpdmF0ZSBpc1NhdmUhOiBib29sZWFuO1xuXG5cdHByaXZhdGUgYWNjZXB0QWxsUGFyYW1zITogQWNjZXB0QWxsUGFyYW1zO1xuXG5cdC8qKlxuXHQgKiBSZXNvbHZlcyB0aGUgcHJvbWlzZSB3aXRoIHRoZSBzZWxlY3RlZCBkaWFsb2cgbGlzdCBvcHRpb25cblx0ICovXG5cdHByaXZhdGUgcHJvbWlzZVJlc29sdmUhOiBGdW5jdGlvbjtcblxuXHQvKipcblx0ICogUmVqZWN0cyB0aGUgcHJvbWlzZSBvZiBvcGVuIGRpYWxvZ1xuXHQgKi9cblx0cHJpdmF0ZSBwcm9taXNlUmVqZWN0ITogRnVuY3Rpb247XG5cblx0LyoqXG5cdCAqIE9wZW5zIHRoZSBjb25maXJtIHJlY29tbWVuZGF0aW9ucyBkaWFsb2cuXG5cdCAqXG5cdCAqIEBwYXJhbSBpc1NhdmUgQm9vbGVhbiBmbGFnIHdoaWNoIHdvdWxkIGJlIHNldCB0byB0cnVlIGlmIHdlIGFyZSBzYXZpbmcgdGhlIGRvY3VtZW50IGFuZCB3b3VsZCBiZSBmYWxzZSBpZiB3ZSBkbyBhcHBseSBjaGFuZ2VzXG5cdCAqIEByZXR1cm5zIFByb21pc2Ugd2hpY2ggd291bGQgcmVzb2x2ZSB3aXRoIFJlY29tbWVuZGF0aW9uRGlhbG9nRGVjaXNpb24gKEFjY2VwdCwgSWdub3JlLCBDb250aW51ZSwgU2tpcHBlZClcblx0ICovXG5cdHB1YmxpYyBhc3luYyBvcGVuKGlzU2F2ZTogYm9vbGVhbik6IFByb21pc2U8UmVjb21tZW5kYXRpb25EaWFsb2dEZWNpc2lvbj4ge1xuXHRcdHRoaXMuYWNjZXB0QWxsUGFyYW1zID0gYXdhaXQgKHRoaXMudmlldz8uZ2V0Q29udHJvbGxlcigpIGFzIFBhZ2VDb250cm9sbGVyKS5yZWNvbW1lbmRhdGlvbnMuZmV0Y2hBY2NlcHRBbGxQYXJhbXMoKTtcblx0XHRjb25zdCBhY2NlcHRNb2RlbCA9IHRoaXMuZ2V0QWNjZXB0QWxsTW9kZWwoKTtcblx0XHR0aGlzLnZpZXcuc2V0TW9kZWwoYWNjZXB0TW9kZWwsIFwiX2FjY2VwdERpYWxvZ01vZGVsXCIpO1xuXHRcdGlmICghYWNjZXB0TW9kZWwuZ2V0RGF0YSgpLml0ZW1zPy5sZW5ndGgpIHtcblx0XHRcdHJldHVybiBSZWNvbW1lbmRhdGlvbkRpYWxvZ0RlY2lzaW9uLlNraXBwZWQ7XG5cdFx0fVxuXHRcdHRoaXMuaXNTYXZlID0gaXNTYXZlO1xuXHRcdGNvbnN0IGRpYWxvZyA9IHRoaXMuZ2V0Q29udGVudCgpO1xuXHRcdGRpYWxvZz8uc2V0RXNjYXBlSGFuZGxlcih0aGlzLm9uQ29udGludWVFZGl0aW5nLmJpbmQodGhpcykpO1xuXHRcdHRoaXMudmlldy5hZGREZXBlbmRlbnQoZGlhbG9nIGFzIFVJNUVsZW1lbnQpO1xuXHRcdGRpYWxvZz8ub3BlbigpO1xuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHR0aGlzLnByb21pc2VSZXNvbHZlID0gcmVzb2x2ZTtcblx0XHRcdHRoaXMucHJvbWlzZVJlamVjdCA9IHJlamVjdDtcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVyIHRvIGNsb3NlIHRoZSBjb25maXJtUmVjb21tZW5kYXRpb24gZGlhbG9nLlxuXHQgKlxuXHQgKi9cblx0cHVibGljIGNsb3NlKCk6IHZvaWQge1xuXHRcdHRoaXMuY29uZmlybVJlY29tbWVuZGF0aW9uRGlhbG9nLmN1cnJlbnQ/LmNsb3NlKCk7XG5cdFx0dGhpcy5jb25maXJtUmVjb21tZW5kYXRpb25EaWFsb2cuY3VycmVudD8uZGVzdHJveSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXIgZm9yIEFjY2VwdCBhbmQgU2F2ZSBidXR0b24uXG5cdCAqL1xuXHRwcml2YXRlIGFzeW5jIG9uQWNjZXB0QW5kU2F2ZSgpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgaXNBY2NlcHRlZCA9IGF3YWl0ICh0aGlzLnZpZXc/LmdldENvbnRyb2xsZXIoKSBhcyBQYWdlQ29udHJvbGxlcikucmVjb21tZW5kYXRpb25zLmFjY2VwdFJlY29tbWVuZGF0aW9ucyhcblx0XHRcdFx0dGhpcy5hY2NlcHRBbGxQYXJhbXNcblx0XHRcdCk7XG5cdFx0XHRpZiAoIWlzQWNjZXB0ZWQpIHtcblx0XHRcdFx0dGhpcy5wcm9taXNlUmVqZWN0KFwiQWNjZXB0IEZhaWxlZFwiKTtcblx0XHRcdH1cblx0XHRcdHRoaXMucHJvbWlzZVJlc29sdmUoUmVjb21tZW5kYXRpb25EaWFsb2dEZWNpc2lvbi5BY2NlcHQpO1xuXHRcdH0gY2F0Y2gge1xuXHRcdFx0TG9nLmVycm9yKFwiQWNjZXB0IFJlY29tbWVuZGF0aW9ucyBGYWlsZWRcIik7XG5cdFx0XHR0aGlzLnByb21pc2VSZWplY3QoXCJBY2NlcHQgRmFpbGVkXCIpO1xuXHRcdH0gZmluYWxseSB7XG5cdFx0XHR0aGlzLmNsb3NlKCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXIgZm9yIElnbm9yZSBhbmQgU2F2ZSBidXR0b24uXG5cdCAqL1xuXHRwcml2YXRlIG9uSWdub3JlQW5kU2F2ZSgpOiB2b2lkIHtcblx0XHQodGhpcy52aWV3Py5nZXRDb250cm9sbGVyKCkgYXMgUGFnZUNvbnRyb2xsZXIpLnJlY29tbWVuZGF0aW9ucy5pZ25vcmVSZWNvbW1lbmRhdGlvbkZvckNvbnRleHRzKCk7XG5cdFx0dGhpcy5wcm9taXNlUmVzb2x2ZShSZWNvbW1lbmRhdGlvbkRpYWxvZ0RlY2lzaW9uLklnbm9yZSk7XG5cdFx0dGhpcy5jbG9zZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXIgZm9yIENvbnRpbnVlIEVkaXRpbmcgYnV0dG9uLlxuXHQgKi9cblx0cHJpdmF0ZSBvbkNvbnRpbnVlRWRpdGluZygpOiB2b2lkIHtcblx0XHR0aGlzLnByb21pc2VSZXNvbHZlKFJlY29tbWVuZGF0aW9uRGlhbG9nRGVjaXNpb24uQ29udGludWUpO1xuXHRcdHRoaXMuY2xvc2UoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBsYWJlbCBvciBuYW1lIG9mIHRoZSBGaWVsZCBiYXNlZCBvbiBpdHMgcHJvcGVydHkgcGF0aC5cblx0ICpcblx0ICogQHBhcmFtIHRhcmdldFBhdGhcblx0ICogQHJldHVybnMgUmV0dXJucyB0aGUgbGFiZWwgb2YgdGhlIEZpZWxkLlxuXHQgKi9cblx0cHJpdmF0ZSBnZXRGaWVsZE5hbWUodGFyZ2V0UGF0aDogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRjb25zdCBpbnZvbHZlZERhdGFNb2RlbE9iamVjdCA9IE1ldGFNb2RlbENvbnZlcnRlci5nZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHNGb3JUYXJnZXRQYXRoKFxuXHRcdFx0dGFyZ2V0UGF0aCxcblx0XHRcdHRoaXMudmlldz8uZ2V0QmluZGluZ0NvbnRleHQoKT8uZ2V0TW9kZWwoKT8uZ2V0TWV0YU1vZGVsKCkgYXMgT0RhdGFNZXRhTW9kZWxcblx0XHQpO1xuXHRcdHJldHVybiBpbnZvbHZlZERhdGFNb2RlbE9iamVjdD8udGFyZ2V0T2JqZWN0Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5MYWJlbCB8fCB0YXJnZXRQYXRoLnNwbGl0KFwiL1wiKVt0YXJnZXRQYXRoLnNwbGl0KFwiL1wiKS5sZW5ndGggLSAxXTtcblx0fVxuXG5cdC8qKlxuXHQgKiBGZXRjaGVzIHRleHQgZm9yIHJlY29tbWVuZGF0aW9uIGJhc2VkIG9uIGRpc3BsYXkgbW9kZS5cblx0ICpcblx0ICogQHBhcmFtIHJlY29tbWVuZGF0aW9uXG5cdCAqIEBwYXJhbSBkaXNwbGF5TW9kZVxuXHQgKiBAcmV0dXJucyBUZXh0IGZvciBhIHJlY29tbWVuZGF0aW9uXG5cdCAqL1xuXHRwcml2YXRlIGdldFRleHQocmVjb21tZW5kYXRpb246IFN0YW5kYXJkUmVjb21tZW5kYXRpb25EYXRhVHlwZSwgZGlzcGxheU1vZGU6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0aWYgKHJlY29tbWVuZGF0aW9uLnRleHQgfHwgcmVjb21tZW5kYXRpb24udmFsdWUpIHtcblx0XHRcdHN3aXRjaCAoZGlzcGxheU1vZGUpIHtcblx0XHRcdFx0Y2FzZSBcIkRlc2NyaXB0aW9uXCI6XG5cdFx0XHRcdFx0cmV0dXJuIHJlY29tbWVuZGF0aW9uLnRleHQhO1xuXHRcdFx0XHRjYXNlIFwiRGVzY3JpcHRpb25WYWx1ZVwiOlxuXHRcdFx0XHRcdHJldHVybiB2YWx1ZUZvcm1hdHRlcnMuZm9ybWF0V2l0aEJyYWNrZXRzKHJlY29tbWVuZGF0aW9uLnRleHQsIHJlY29tbWVuZGF0aW9uLnZhbHVlKTtcblx0XHRcdFx0Y2FzZSBcIlZhbHVlRGVzY3JpcHRpb25cIjpcblx0XHRcdFx0XHRyZXR1cm4gdmFsdWVGb3JtYXR0ZXJzLmZvcm1hdFdpdGhCcmFja2V0cyhyZWNvbW1lbmRhdGlvbi52YWx1ZSwgcmVjb21tZW5kYXRpb24udGV4dCk7XG5cdFx0XHRcdGNhc2UgXCJWYWx1ZVwiOlxuXHRcdFx0XHRcdHJldHVybiByZWNvbW1lbmRhdGlvbi52YWx1ZSE7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiByZWNvbW1lbmRhdGlvbi52YWx1ZSB8fCBcIlwiO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgQnV0dG9uIHdpdGggZ2l2ZW4gdGV4dCwgdHlwZSBhbmQgcHJlc3NIYW5kbGVyLlxuXHQgKlxuXHQgKiBAcGFyYW0gdGV4dCBUZXh0IGZvciB0aGUgYnV0dG9uXG5cdCAqIEBwYXJhbSB0eXBlIFR5cGUgb2YgdGhlIGJ1dHRvblxuXHQgKiBAcGFyYW0gcHJlc3NIYW5kbGVyIFByZXNzIEhhbmRsZXIgZm9yIHRoZSBidXR0b25cblx0ICogQHJldHVybnMgQnV0dG9uIHdpdGggdGhlIGdpdmVuIHNldHRpbmdzXG5cdCAqL1xuXHRwcml2YXRlIGdldEJ1dHRvbih0ZXh0OiBzdHJpbmcsIHR5cGU6IHN0cmluZywgcHJlc3NIYW5kbGVyOiBFdmVudEhhbmRsZXIpOiBCdXR0b24ge1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8QnV0dG9uIHRleHQ9e3RleHR9IHR5cGU9e3R5cGV9IHdpZHRoPXtcImF1dG9cIn0gcHJlc3M9e3ByZXNzSGFuZGxlcn0+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0bGF5b3V0RGF0YTogKFxuXHRcdFx0XHRcdFx0PD5cblx0XHRcdFx0XHRcdFx0PEZsZXhJdGVtRGF0YSBtaW5XaWR0aD17XCIxMDAlXCJ9PjwvRmxleEl0ZW1EYXRhPlxuXHRcdFx0XHRcdFx0PC8+XG5cdFx0XHRcdFx0KVxuXHRcdFx0XHR9fVxuXHRcdFx0PC9CdXR0b24+XG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIEZvb3RlciB3aXRoIEJ1dHRvbnMuXG5cdCAqXG5cdCAqIEByZXR1cm5zIEZvb3RlclxuXHQgKi9cblxuXHRwcml2YXRlIGdldEZvb3RlcigpOiBUb29sYmFyIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PFRvb2xiYXI+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0Y29udGVudDogKFxuXHRcdFx0XHRcdFx0PD5cblx0XHRcdFx0XHRcdFx0PFRvb2xiYXJTcGFjZXIgLz5cblx0XHRcdFx0XHRcdFx0e3RoaXMuZ2V0QnV0dG9uKFxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuaXNTYXZlXG5cdFx0XHRcdFx0XHRcdFx0XHQ/IHRoaXMuY29uZmlybVJlY29tbWVuZGF0aW9uRGlhbG9nUmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19SRUNPTU1FTkRBVElPTl9ESUFMT0dfQUNDRVBUX0FORF9TQVZFXCIpXG5cdFx0XHRcdFx0XHRcdFx0XHQ6IHRoaXMuY29uZmlybVJlY29tbWVuZGF0aW9uRGlhbG9nUmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19SRUNPTU1FTkRBVElPTl9ESUFMT0dfQUNDRVBUXCIpLFxuXHRcdFx0XHRcdFx0XHRcdFwiRW1waGFzaXplZFwiLFxuXHRcdFx0XHRcdFx0XHRcdHRoaXMub25BY2NlcHRBbmRTYXZlLmJpbmQodGhpcylcblx0XHRcdFx0XHRcdFx0KX1cblx0XHRcdFx0XHRcdFx0e3RoaXMuZ2V0QnV0dG9uKFxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuaXNTYXZlXG5cdFx0XHRcdFx0XHRcdFx0XHQ/IHRoaXMuY29uZmlybVJlY29tbWVuZGF0aW9uRGlhbG9nUmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19SRUNPTU1FTkRBVElPTl9ESUFMT0dfSUdOT1JFX0FORF9TQVZFXCIpXG5cdFx0XHRcdFx0XHRcdFx0XHQ6IHRoaXMuY29uZmlybVJlY29tbWVuZGF0aW9uRGlhbG9nUmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19SRUNPTU1FTkRBVElPTl9ESUFMT0dfSUdOT1JFXCIpLFxuXHRcdFx0XHRcdFx0XHRcdFwiR2hvc3RcIixcblx0XHRcdFx0XHRcdFx0XHR0aGlzLm9uSWdub3JlQW5kU2F2ZS5iaW5kKHRoaXMpXG5cdFx0XHRcdFx0XHRcdCl9XG5cdFx0XHRcdFx0XHRcdHt0aGlzLmdldEJ1dHRvbihcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmNvbmZpcm1SZWNvbW1lbmRhdGlvbkRpYWxvZ1Jlc291cmNlTW9kZWwuZ2V0VGV4dChcIkNfUkVDT01NRU5EQVRJT05fRElBTE9HX0NPTlRJTlVFX0VESVRJTkdcIiksXG5cdFx0XHRcdFx0XHRcdFx0XCJHaG9zdFwiLFxuXHRcdFx0XHRcdFx0XHRcdHRoaXMub25Db250aW51ZUVkaXRpbmcuYmluZCh0aGlzKVxuXHRcdFx0XHRcdFx0XHQpfVxuXHRcdFx0XHRcdFx0PC8+XG5cdFx0XHRcdFx0KVxuXHRcdFx0XHR9fVxuXHRcdFx0PC9Ub29sYmFyPlxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBtZXRob2QgY3JlYXRlZCBhIEpTT04gTW9kZWwgZm9yIHRoZSBhY2NlcHQgYWxsIGRpYWxvZyBkYXRhLlxuXHQgKiBAcmV0dXJucyBUaGUgSlNPTiBNb2RlbCBmb3IgYWNjZXB0IGFsbCBkaWFsb2cuXG5cdCAqL1xuXHRnZXRBY2NlcHRBbGxNb2RlbCgpOiBKU09OTW9kZWwge1xuXHRcdGNvbnN0IGFjY2VwdE1vZGVsID0gbmV3IEpTT05Nb2RlbCgpO1xuXHRcdGNvbnN0IGl0ZW1zID0gW107XG5cdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHRoaXMudmlldyk7XG5cdFx0Y29uc3QgaXNGY2xFbmFibGVkID0gYXBwQ29tcG9uZW50Ll9pc0ZjbEVuYWJsZWQoKTtcblx0XHRjb25zdCBpc0Z1bGxTY3JlZW4gPSBpc0ZjbEVuYWJsZWRcblx0XHRcdD8gKGFwcENvbXBvbmVudC5nZXRSb290Vmlld0NvbnRyb2xsZXIoKSBhcyBGY2xDb250cm9sbGVyKS5nZXRIZWxwZXIoKS5nZXRDdXJyZW50VUlTdGF0ZSgpLmlzRnVsbFNjcmVlblxuXHRcdFx0OiB0cnVlO1xuXHRcdGZvciAoY29uc3QgcmVjb21tZW5kYXRpb25EYXRhIG9mIHRoaXMuYWNjZXB0QWxsUGFyYW1zPy5yZWNvbW1lbmRhdGlvbkRhdGEgfHwgW10pIHtcblx0XHRcdGNvbnN0IGVudGl0eU5hbWUgPSBzdGFuZGFyZFJlY29tbWVuZGF0aW9uSGVscGVyLmdldEVudGl0eU5hbWUocmVjb21tZW5kYXRpb25EYXRhLmNvbnRleHQgYXMgT0RhdGFWNENvbnRleHQpIHx8IFwiXCI7XG5cdFx0XHRsZXQgaWRlbnRpZmllclRleHRzO1xuXG5cdFx0XHRpZiAoaXNGY2xFbmFibGVkICYmICFpc0Z1bGxTY3JlZW4pIHtcblx0XHRcdFx0aWRlbnRpZmllclRleHRzID1cblx0XHRcdFx0XHRyZWNvbW1lbmRhdGlvbkRhdGEuY29udGV4dElkZW50aWZpZXJUZXh0ICYmIHJlY29tbWVuZGF0aW9uRGF0YS5jb250ZXh0SWRlbnRpZmllclRleHQubGVuZ3RoID4gMFxuXHRcdFx0XHRcdFx0PyAocmVjb21tZW5kYXRpb25EYXRhLnByZWZpeFRleHQgPyBgJHtyZWNvbW1lbmRhdGlvbkRhdGEucHJlZml4VGV4dH0vYCA6IFwiXCIpICtcblx0XHRcdFx0XHRcdCAgYCR7ZW50aXR5TmFtZX0gKCR7cmVjb21tZW5kYXRpb25EYXRhLmNvbnRleHRJZGVudGlmaWVyVGV4dH0pYFxuXHRcdFx0XHRcdFx0OiBlbnRpdHlOYW1lO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aWRlbnRpZmllclRleHRzID1cblx0XHRcdFx0XHRyZWNvbW1lbmRhdGlvbkRhdGEuY29udGV4dElkZW50aWZpZXJUZXh0ICYmIHJlY29tbWVuZGF0aW9uRGF0YS5jb250ZXh0SWRlbnRpZmllclRleHQubGVuZ3RoID4gMFxuXHRcdFx0XHRcdFx0PyBgJHtlbnRpdHlOYW1lfSAoJHtyZWNvbW1lbmRhdGlvbkRhdGEuY29udGV4dElkZW50aWZpZXJUZXh0fSlgXG5cdFx0XHRcdFx0XHQ6IGVudGl0eU5hbWU7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChyZWNvbW1lbmRhdGlvbkRhdGEudmFsdWUgfHwgcmVjb21tZW5kYXRpb25EYXRhLnRleHQpIHtcblx0XHRcdFx0Y29uc3QgdGFyZ2V0UGF0aCA9IHJlY29tbWVuZGF0aW9uRGF0YS5jb250ZXh0Py5nZXRQYXRoKCkgKyBcIi9cIiArIHJlY29tbWVuZGF0aW9uRGF0YS5wcm9wZXJ0eVBhdGg7XG5cdFx0XHRcdGNvbnN0IGRpc3BsYXlNb2RlID0gc3RhbmRhcmRSZWNvbW1lbmRhdGlvbkhlbHBlci5nZXREaXNwbGF5TW9kZUZvclRhcmdldFBhdGgoXG5cdFx0XHRcdFx0dGFyZ2V0UGF0aCxcblx0XHRcdFx0XHR0aGlzLnZpZXc/LmdldEJpbmRpbmdDb250ZXh0KCk/LmdldE1vZGVsKCk/LmdldE1ldGFNb2RlbCgpIGFzIE9EYXRhTWV0YU1vZGVsXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGNvbnN0IGxpc3REYXRhID0ge1xuXHRcdFx0XHRcdGZpZWxkTmFtZTogdGhpcy5nZXRGaWVsZE5hbWUodGFyZ2V0UGF0aCkudmFsdWVPZigpLFxuXHRcdFx0XHRcdGZpZWxkVmFsdWU6IHRoaXMuZ2V0VGV4dChyZWNvbW1lbmRhdGlvbkRhdGEsIGRpc3BsYXlNb2RlKSxcblx0XHRcdFx0XHRpZGVudGlmaWVyVGV4dHM6IGlkZW50aWZpZXJUZXh0c1xuXHRcdFx0XHR9O1xuXHRcdFx0XHRpdGVtcy5wdXNoKGxpc3REYXRhKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0YWNjZXB0TW9kZWwuc2V0RGF0YSh7IGl0ZW1zOiBpdGVtcyB9KTtcblx0XHRyZXR1cm4gYWNjZXB0TW9kZWw7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBtZXRob2QgZ3JvdXBzIHRoZSBjb250ZXh0cyBhY2NvcmRpbmcgdG8gdGhlIGlkZW50aWZpZXIgdGV4dHMuXG5cdCAqIEBwYXJhbSBjb250ZXh0IFRoZSBjb250ZXh0IG9mIHRoZSBpdGVtXG5cdCAqIEByZXR1cm5zIFRoZSB0ZXh0IG9mIHRoZSBncm91cFxuXHQgKi9cblx0Z2V0R3JvdXAoY29udGV4dDogT0RhdGFWNENvbnRleHQpOiBzdHJpbmcge1xuXHRcdHJldHVybiBjb250ZXh0LmdldFByb3BlcnR5KFwiaWRlbnRpZmllclRleHRzXCIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgbWVzc2FnZSBzdHJpcCB0byBiZSBzaG93biBpbiB0aGUgYWNjZXB0IGRpYWxvZy5cblx0ICogQHJldHVybnMgQSBtZXNzYWdlIHN0cmlwIHdpdGggdGhlIGRlc2lyZWQgdGV4dC5cblx0ICovXG5cdGdldE1lc3NhZ2VTdHJpcCgpOiBNZXNzYWdlU3RyaXAge1xuXHRcdGNvbnN0IGFjY2VwdEFsbERhdGEgPSAodGhpcy52aWV3LmdldE1vZGVsKFwiX2FjY2VwdERpYWxvZ01vZGVsXCIpIGFzIEpTT05Nb2RlbCk/LmdldERhdGEoKT8uaXRlbXM7XG5cdFx0Y29uc3QgbWVzc2FnZVN0cmlwVGV4dCA9XG5cdFx0XHRhY2NlcHRBbGxEYXRhLmxlbmd0aCA+IDFcblx0XHRcdFx0PyB0aGlzLmNvbmZpcm1SZWNvbW1lbmRhdGlvbkRpYWxvZ1Jlc291cmNlTW9kZWwuZ2V0VGV4dChcIkNfUkVDT01NRU5EQVRJT05fRElBTE9HX1RFWFRcIiwgW2FjY2VwdEFsbERhdGEubGVuZ3RoXSlcblx0XHRcdFx0OiB0aGlzLmNvbmZpcm1SZWNvbW1lbmRhdGlvbkRpYWxvZ1Jlc291cmNlTW9kZWwuZ2V0VGV4dChcIkNfUkVDT01NRU5EQVRJT05fRElBTE9HX1RFWFRfU0lOR1VMQVJcIik7XG5cdFx0cmV0dXJuIDxNZXNzYWdlU3RyaXAgdGV4dD17bWVzc2FnZVN0cmlwVGV4dH0gLz47XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBtZXRob2QgY3JlYXRlcyB0aGUgY29udGVudCBmb3IgdGhlIGRpYWxvZy5cblx0ICogQHJldHVybnMgQSBsaXN0IGFzIGNvbnRlbnQgb2YgdGhlIGRpYWxvZy5cblx0ICovXG5cdGdldERpYWxvZ0NvbnRlbnQoKTogTGlzdCB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxMaXN0IGl0ZW1zPXt7IG1vZGVsOiBcIl9hY2NlcHREaWFsb2dNb2RlbFwiLCBwYXRoOiBcIi9pdGVtc1wiLCBzb3J0ZXI6IG5ldyBTb3J0ZXIoXCJpZGVudGlmaWVyVGV4dHNcIiwgZmFsc2UsIHRoaXMuZ2V0R3JvdXApIH19PlxuXHRcdFx0XHQ8Q3VzdG9tTGlzdEl0ZW0+XG5cdFx0XHRcdFx0PEhCb3ggY2xhc3M9XCJzYXBVaVNtYWxsTWFyZ2luQmVnaW4gc2FwVWlUaW55TWFyZ2luXCI+XG5cdFx0XHRcdFx0XHQ8VGV4dCB0ZXh0PVwie19hY2NlcHREaWFsb2dNb2RlbD5maWVsZE5hbWV9OiB7X2FjY2VwdERpYWxvZ01vZGVsPmZpZWxkVmFsdWV9XCIgLz5cblx0XHRcdFx0XHQ8L0hCb3g+XG5cdFx0XHRcdDwvQ3VzdG9tTGlzdEl0ZW0+XG5cdFx0XHQ8L0xpc3Q+XG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGUgYnVpbGRpbmcgYmxvY2sgcmVuZGVyIGZ1bmN0aW9uLlxuXHQgKlxuXHQgKiBAcmV0dXJucyBBbiBYTUwtYmFzZWQgc3RyaW5nXG5cdCAqL1xuXHRnZXRDb250ZW50KCk6IERpYWxvZyB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxEaWFsb2dcblx0XHRcdFx0dGl0bGU9e3RoaXMuY29uZmlybVJlY29tbWVuZGF0aW9uRGlhbG9nUmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19SRUNPTU1FTkRBVElPTl9ESUFMT0dfVElUTEVcIil9XG5cdFx0XHRcdHN0YXRlPXtWYWx1ZVN0YXRlLkluZm9ybWF0aW9ufVxuXHRcdFx0XHR0eXBlPXtcIk1lc3NhZ2VcIn1cblx0XHRcdFx0cmVmPXt0aGlzLmNvbmZpcm1SZWNvbW1lbmRhdGlvbkRpYWxvZ31cblx0XHRcdFx0cmVzaXphYmxlPXtcInRydWVcIn1cblx0XHRcdFx0Y29udGVudFdpZHRoPXtcIjM1cmVtXCJ9XG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0Y29udGVudDogKFxuXHRcdFx0XHRcdFx0PD5cblx0XHRcdFx0XHRcdFx0e3RoaXMuZ2V0TWVzc2FnZVN0cmlwKCl9XG5cdFx0XHRcdFx0XHRcdHt0aGlzLmdldERpYWxvZ0NvbnRlbnQoKX1cblx0XHRcdFx0XHRcdDwvPlxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0Zm9vdGVyOiA8Pnt0aGlzLmdldEZvb3RlcigpfTwvPlxuXHRcdFx0XHR9fVxuXHRcdFx0PC9EaWFsb2c+XG5cdFx0KSBhcyBEaWFsb2c7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFpQ1lBLDRCQUE0QjtFQUFBLFdBQTVCQSw0QkFBNEI7SUFBNUJBLDRCQUE0QjtJQUE1QkEsNEJBQTRCO0lBQTVCQSw0QkFBNEI7SUFBNUJBLDRCQUE0QjtFQUFBLEdBQTVCQSw0QkFBNEIsS0FBNUJBLDRCQUE0QjtFQUFBO0VBQUEsSUFXM0JDLGdDQUFnQyxXQUo1Q0MsbUJBQW1CLENBQUM7SUFDcEJDLElBQUksRUFBRSw2QkFBNkI7SUFDbkNDLFNBQVMsRUFBRTtFQUNaLENBQUMsQ0FBQyxVQVFBQyxlQUFlLEVBQUU7SUFBQTtJQU5sQiwwQ0FBWUMsS0FBcUQsRUFBRTtNQUFB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
|
|
296
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWNvbW1lbmRhdGlvbkRpYWxvZ0RlY2lzaW9uIiwiQ29uZmlybVJlY29tbWVuZGF0aW9uRGlhbG9nQmxvY2siLCJkZWZpbmVCdWlsZGluZ0Jsb2NrIiwibmFtZSIsIm5hbWVzcGFjZSIsImRlZmluZVJlZmVyZW5jZSIsInByb3BzIiwidmlldyIsImNvbmZpcm1SZWNvbW1lbmRhdGlvbkRpYWxvZ1Jlc291cmNlTW9kZWwiLCJnZXRSZXNvdXJjZU1vZGVsIiwib3BlbiIsImlzU2F2ZSIsImFjY2VwdEFsbFBhcmFtcyIsImdldENvbnRyb2xsZXIiLCJyZWNvbW1lbmRhdGlvbnMiLCJmZXRjaEFjY2VwdEFsbFBhcmFtcyIsImFjY2VwdE1vZGVsIiwiZ2V0QWNjZXB0QWxsTW9kZWwiLCJzZXRNb2RlbCIsImdldERhdGEiLCJpdGVtcyIsImxlbmd0aCIsIlNraXBwZWQiLCJkaWFsb2ciLCJnZXRDb250ZW50Iiwic2V0RXNjYXBlSGFuZGxlciIsIm9uQ29udGludWVFZGl0aW5nIiwiYmluZCIsImFkZERlcGVuZGVudCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwicHJvbWlzZVJlc29sdmUiLCJwcm9taXNlUmVqZWN0IiwiY2xvc2UiLCJjb25maXJtUmVjb21tZW5kYXRpb25EaWFsb2ciLCJjdXJyZW50IiwiZGVzdHJveSIsIm9uQWNjZXB0QW5kU2F2ZSIsImlzQWNjZXB0ZWQiLCJhY2NlcHRSZWNvbW1lbmRhdGlvbnMiLCJBY2NlcHQiLCJMb2ciLCJlcnJvciIsIm9uSWdub3JlQW5kU2F2ZSIsImlnbm9yZVJlY29tbWVuZGF0aW9uRm9yQ29udGV4dHMiLCJJZ25vcmUiLCJDb250aW51ZSIsImdldEZpZWxkTmFtZSIsInRhcmdldFBhdGgiLCJpbnZvbHZlZERhdGFNb2RlbE9iamVjdCIsIk1ldGFNb2RlbENvbnZlcnRlciIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0c0ZvclRhcmdldFBhdGgiLCJnZXRCaW5kaW5nQ29udGV4dCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwidGFyZ2V0T2JqZWN0IiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJMYWJlbCIsInRvU3RyaW5nIiwic3BsaXQiLCJnZXRUZXh0IiwicmVjb21tZW5kYXRpb24iLCJkaXNwbGF5TW9kZSIsInRleHQiLCJ2YWx1ZSIsInZhbHVlRm9ybWF0dGVycyIsImZvcm1hdFdpdGhCcmFja2V0cyIsImdldEJ1dHRvbiIsInR5cGUiLCJwcmVzc0hhbmRsZXIiLCJsYXlvdXREYXRhIiwiZ2V0Rm9vdGVyIiwiY29udGVudCIsIkpTT05Nb2RlbCIsInJlY29tbWVuZGF0aW9uRGF0YSIsImVudGl0eU5hbWVMYWJlbCIsInN0YW5kYXJkUmVjb21tZW5kYXRpb25IZWxwZXIiLCJnZXRFbnRpdHlOYW1lIiwiY29udGV4dCIsImlkZW50aWZpZXJUZXh0cyIsImNvbnRleHRJZGVudGlmaWVyVGV4dCIsImdldFBhdGgiLCJwcm9wZXJ0eVBhdGgiLCJnZXREaXNwbGF5TW9kZUZvclRhcmdldFBhdGgiLCJsaXN0RGF0YSIsImZpZWxkTmFtZSIsInZhbHVlT2YiLCJmaWVsZFZhbHVlIiwicHVzaCIsInNldERhdGEiLCJnZXRHcm91cCIsImdldFByb3BlcnR5IiwiZ2V0TWVzc2FnZVN0cmlwIiwiYWNjZXB0QWxsRGF0YSIsIm1lc3NhZ2VTdHJpcFRleHQiLCJnZXREaWFsb2dDb250ZW50IiwibW9kZWwiLCJwYXRoIiwic29ydGVyIiwiU29ydGVyIiwiVmFsdWVTdGF0ZSIsIkluZm9ybWF0aW9uIiwiZm9vdGVyIiwiUnVudGltZUJ1aWxkaW5nQmxvY2siXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkNvbmZpcm1SZWNvbW1lbmRhdGlvbkRpYWxvZy5ibG9jay50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgeyBkZWZpbmVCdWlsZGluZ0Jsb2NrIH0gZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvQnVpbGRpbmdCbG9ja1N1cHBvcnRcIjtcbmltcG9ydCBSdW50aW1lQnVpbGRpbmdCbG9jayBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvdGVtcGxhdGluZy9SdW50aW1lQnVpbGRpbmdCbG9ja1wiO1xuaW1wb3J0ICogYXMgTWV0YU1vZGVsQ29udmVydGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGRlZmluZVJlZmVyZW5jZSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgZ2V0UmVzb3VyY2VNb2RlbCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1Jlc291cmNlTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSBcInNhcC9mZS9jb3JlL2pzeC1ydW50aW1lL2pzeFwiO1xuaW1wb3J0IEJ1dHRvbiBmcm9tIFwic2FwL20vQnV0dG9uXCI7XG5pbXBvcnQgQ3VzdG9tTGlzdEl0ZW0gZnJvbSBcInNhcC9tL0N1c3RvbUxpc3RJdGVtXCI7XG5pbXBvcnQgRGlhbG9nIGZyb20gXCJzYXAvbS9EaWFsb2dcIjtcbmltcG9ydCBGbGV4SXRlbURhdGEgZnJvbSBcInNhcC9tL0ZsZXhJdGVtRGF0YVwiO1xuaW1wb3J0IEhCb3ggZnJvbSBcInNhcC9tL0hCb3hcIjtcbmltcG9ydCBMaXN0IGZyb20gXCJzYXAvbS9MaXN0XCI7XG5pbXBvcnQgTWVzc2FnZVN0cmlwIGZyb20gXCJzYXAvbS9NZXNzYWdlU3RyaXBcIjtcbmltcG9ydCBUZXh0IGZyb20gXCJzYXAvbS9UZXh0XCI7XG5pbXBvcnQgVG9vbGJhciBmcm9tIFwic2FwL20vVG9vbGJhclwiO1xuaW1wb3J0IFRvb2xiYXJTcGFjZXIgZnJvbSBcInNhcC9tL1Rvb2xiYXJTcGFjZXJcIjtcbmltcG9ydCB0eXBlIFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCB7IFZhbHVlU3RhdGUgfSBmcm9tIFwic2FwL3VpL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCBTb3J0ZXIgZnJvbSBcInNhcC91aS9tb2RlbC9Tb3J0ZXJcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIE9EYXRhVjRDb250ZXh0IH0gZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSB7IEV2ZW50SGFuZGxlciB9IGZyb20gXCJ0eXBlcy9leHRlbnNpb25fdHlwZXNcIjtcbmltcG9ydCB0eXBlIFBhZ2VDb250cm9sbGVyIGZyb20gXCIuLi8uLi9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgUmVzb3VyY2VNb2RlbCBmcm9tIFwiLi4vLi4vUmVzb3VyY2VNb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBBY2NlcHRBbGxQYXJhbXMgfSBmcm9tIFwiLi4vLi4vY29udHJvbGxlcmV4dGVuc2lvbnMvUmVjb21tZW5kYXRpb25zXCI7XG5pbXBvcnQgdmFsdWVGb3JtYXR0ZXJzIGZyb20gXCIuLi8uLi9mb3JtYXR0ZXJzL1ZhbHVlRm9ybWF0dGVyXCI7XG5pbXBvcnQgeyBzdGFuZGFyZFJlY29tbWVuZGF0aW9uSGVscGVyLCB0eXBlIFN0YW5kYXJkUmVjb21tZW5kYXRpb25EYXRhVHlwZSB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL1N0YW5kYXJkUmVjb21tZW5kYXRpb25IZWxwZXJcIjtcblxuZXhwb3J0IGVudW0gUmVjb21tZW5kYXRpb25EaWFsb2dEZWNpc2lvbiB7XG5cdEFjY2VwdCA9IFwiQWNjZXB0X1JlY29tbWVuZGF0aW9uc1wiLFxuXHRJZ25vcmUgPSBcIklnbm9yZV9SZWNvbW1lbmRhdGlvbnNcIixcblx0Q29udGludWUgPSBcIkNvbnRpbnVlX0VkaXRpbmdcIixcblx0U2tpcHBlZCA9IFwiU2tpcHBlZFwiXG59XG5cbkBkZWZpbmVCdWlsZGluZ0Jsb2NrKHtcblx0bmFtZTogXCJDb25maXJtUmVjb21tZW5kYXRpb25EaWFsb2dcIixcblx0bmFtZXNwYWNlOiBcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zXCJcbn0pXG5leHBvcnQgY2xhc3MgQ29uZmlybVJlY29tbWVuZGF0aW9uRGlhbG9nQmxvY2sgZXh0ZW5kcyBSdW50aW1lQnVpbGRpbmdCbG9jayB7XG5cdGNvbnN0cnVjdG9yKHByb3BzOiBQcm9wZXJ0aWVzT2Y8Q29uZmlybVJlY29tbWVuZGF0aW9uRGlhbG9nQmxvY2s+KSB7XG5cdFx0c3VwZXIocHJvcHMpO1xuXHRcdHRoaXMudmlldyA9IHByb3BzLnZpZXcgYXMgVmlldztcblx0XHR0aGlzLmNvbmZpcm1SZWNvbW1lbmRhdGlvbkRpYWxvZ1Jlc291cmNlTW9kZWwgPSBnZXRSZXNvdXJjZU1vZGVsKHRoaXMudmlldyk7XG5cdH1cblxuXHRAZGVmaW5lUmVmZXJlbmNlKClcblx0Y29uZmlybVJlY29tbWVuZGF0aW9uRGlhbG9nITogUmVmPERpYWxvZz47XG5cblx0cHVibGljIHZpZXchOiBWaWV3O1xuXG5cdHByaXZhdGUgY29uZmlybVJlY29tbWVuZGF0aW9uRGlhbG9nUmVzb3VyY2VNb2RlbCE6IFJlc291cmNlTW9kZWw7XG5cblx0cHJvdGVjdGVkIGtleSE6IHN0cmluZztcblxuXHRwcml2YXRlIGlzU2F2ZSE6IGJvb2xlYW47XG5cblx0cHJpdmF0ZSBhY2NlcHRBbGxQYXJhbXMhOiBBY2NlcHRBbGxQYXJhbXM7XG5cblx0LyoqXG5cdCAqIFJlc29sdmVzIHRoZSBwcm9taXNlIHdpdGggdGhlIHNlbGVjdGVkIGRpYWxvZyBsaXN0IG9wdGlvblxuXHQgKi9cblx0cHJpdmF0ZSBwcm9taXNlUmVzb2x2ZSE6IEZ1bmN0aW9uO1xuXG5cdC8qKlxuXHQgKiBSZWplY3RzIHRoZSBwcm9taXNlIG9mIG9wZW4gZGlhbG9nXG5cdCAqL1xuXHRwcml2YXRlIHByb21pc2VSZWplY3QhOiBGdW5jdGlvbjtcblxuXHQvKipcblx0ICogT3BlbnMgdGhlIGNvbmZpcm0gcmVjb21tZW5kYXRpb25zIGRpYWxvZy5cblx0ICpcblx0ICogQHBhcmFtIGlzU2F2ZSBCb29sZWFuIGZsYWcgd2hpY2ggd291bGQgYmUgc2V0IHRvIHRydWUgaWYgd2UgYXJlIHNhdmluZyB0aGUgZG9jdW1lbnQgYW5kIHdvdWxkIGJlIGZhbHNlIGlmIHdlIGRvIGFwcGx5IGNoYW5nZXNcblx0ICogQHJldHVybnMgUHJvbWlzZSB3aGljaCB3b3VsZCByZXNvbHZlIHdpdGggUmVjb21tZW5kYXRpb25EaWFsb2dEZWNpc2lvbiAoQWNjZXB0LCBJZ25vcmUsIENvbnRpbnVlLCBTa2lwcGVkKVxuXHQgKi9cblx0cHVibGljIGFzeW5jIG9wZW4oaXNTYXZlOiBib29sZWFuKTogUHJvbWlzZTxSZWNvbW1lbmRhdGlvbkRpYWxvZ0RlY2lzaW9uPiB7XG5cdFx0dGhpcy5hY2NlcHRBbGxQYXJhbXMgPSBhd2FpdCAodGhpcy52aWV3Py5nZXRDb250cm9sbGVyKCkgYXMgUGFnZUNvbnRyb2xsZXIpLnJlY29tbWVuZGF0aW9ucy5mZXRjaEFjY2VwdEFsbFBhcmFtcygpO1xuXHRcdGNvbnN0IGFjY2VwdE1vZGVsID0gdGhpcy5nZXRBY2NlcHRBbGxNb2RlbCgpO1xuXHRcdHRoaXMudmlldy5zZXRNb2RlbChhY2NlcHRNb2RlbCwgXCJfYWNjZXB0RGlhbG9nTW9kZWxcIik7XG5cdFx0aWYgKCFhY2NlcHRNb2RlbC5nZXREYXRhKCkuaXRlbXM/Lmxlbmd0aCkge1xuXHRcdFx0cmV0dXJuIFJlY29tbWVuZGF0aW9uRGlhbG9nRGVjaXNpb24uU2tpcHBlZDtcblx0XHR9XG5cdFx0dGhpcy5pc1NhdmUgPSBpc1NhdmU7XG5cdFx0Y29uc3QgZGlhbG9nID0gdGhpcy5nZXRDb250ZW50KCk7XG5cdFx0ZGlhbG9nPy5zZXRFc2NhcGVIYW5kbGVyKHRoaXMub25Db250aW51ZUVkaXRpbmcuYmluZCh0aGlzKSk7XG5cdFx0dGhpcy52aWV3LmFkZERlcGVuZGVudChkaWFsb2cgYXMgVUk1RWxlbWVudCk7XG5cdFx0ZGlhbG9nPy5vcGVuKCk7XG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdHRoaXMucHJvbWlzZVJlc29sdmUgPSByZXNvbHZlO1xuXHRcdFx0dGhpcy5wcm9taXNlUmVqZWN0ID0gcmVqZWN0O1xuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXIgdG8gY2xvc2UgdGhlIGNvbmZpcm1SZWNvbW1lbmRhdGlvbiBkaWFsb2cuXG5cdCAqXG5cdCAqL1xuXHRwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG5cdFx0dGhpcy5jb25maXJtUmVjb21tZW5kYXRpb25EaWFsb2cuY3VycmVudD8uY2xvc2UoKTtcblx0XHR0aGlzLmNvbmZpcm1SZWNvbW1lbmRhdGlvbkRpYWxvZy5jdXJyZW50Py5kZXN0cm95KCk7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlciBmb3IgQWNjZXB0IGFuZCBTYXZlIGJ1dHRvbi5cblx0ICovXG5cdHByaXZhdGUgYXN5bmMgb25BY2NlcHRBbmRTYXZlKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBpc0FjY2VwdGVkID0gYXdhaXQgKHRoaXMudmlldz8uZ2V0Q29udHJvbGxlcigpIGFzIFBhZ2VDb250cm9sbGVyKS5yZWNvbW1lbmRhdGlvbnMuYWNjZXB0UmVjb21tZW5kYXRpb25zKFxuXHRcdFx0XHR0aGlzLmFjY2VwdEFsbFBhcmFtc1xuXHRcdFx0KTtcblx0XHRcdGlmICghaXNBY2NlcHRlZCkge1xuXHRcdFx0XHR0aGlzLnByb21pc2VSZWplY3QoXCJBY2NlcHQgRmFpbGVkXCIpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5wcm9taXNlUmVzb2x2ZShSZWNvbW1lbmRhdGlvbkRpYWxvZ0RlY2lzaW9uLkFjY2VwdCk7XG5cdFx0fSBjYXRjaCB7XG5cdFx0XHRMb2cuZXJyb3IoXCJBY2NlcHQgUmVjb21tZW5kYXRpb25zIEZhaWxlZFwiKTtcblx0XHRcdHRoaXMucHJvbWlzZVJlamVjdChcIkFjY2VwdCBGYWlsZWRcIik7XG5cdFx0fSBmaW5hbGx5IHtcblx0XHRcdHRoaXMuY2xvc2UoKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlciBmb3IgSWdub3JlIGFuZCBTYXZlIGJ1dHRvbi5cblx0ICovXG5cdHByaXZhdGUgb25JZ25vcmVBbmRTYXZlKCk6IHZvaWQge1xuXHRcdCh0aGlzLnZpZXc/LmdldENvbnRyb2xsZXIoKSBhcyBQYWdlQ29udHJvbGxlcikucmVjb21tZW5kYXRpb25zLmlnbm9yZVJlY29tbWVuZGF0aW9uRm9yQ29udGV4dHMoKTtcblx0XHR0aGlzLnByb21pc2VSZXNvbHZlKFJlY29tbWVuZGF0aW9uRGlhbG9nRGVjaXNpb24uSWdub3JlKTtcblx0XHR0aGlzLmNsb3NlKCk7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlciBmb3IgQ29udGludWUgRWRpdGluZyBidXR0b24uXG5cdCAqL1xuXHRwcml2YXRlIG9uQ29udGludWVFZGl0aW5nKCk6IHZvaWQge1xuXHRcdHRoaXMucHJvbWlzZVJlc29sdmUoUmVjb21tZW5kYXRpb25EaWFsb2dEZWNpc2lvbi5Db250aW51ZSk7XG5cdFx0dGhpcy5jbG9zZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGxhYmVsIG9yIG5hbWUgb2YgdGhlIEZpZWxkIGJhc2VkIG9uIGl0cyBwcm9wZXJ0eSBwYXRoLlxuXHQgKlxuXHQgKiBAcGFyYW0gdGFyZ2V0UGF0aFxuXHQgKiBAcmV0dXJucyBSZXR1cm5zIHRoZSBsYWJlbCBvZiB0aGUgRmllbGQuXG5cdCAqL1xuXHRwcml2YXRlIGdldEZpZWxkTmFtZSh0YXJnZXRQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGludm9sdmVkRGF0YU1vZGVsT2JqZWN0ID0gTWV0YU1vZGVsQ29udmVydGVyLmdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0c0ZvclRhcmdldFBhdGg8UHJvcGVydHk+KFxuXHRcdFx0dGFyZ2V0UGF0aCxcblx0XHRcdHRoaXMudmlldz8uZ2V0QmluZGluZ0NvbnRleHQoKT8uZ2V0TW9kZWwoKT8uZ2V0TWV0YU1vZGVsKCkgYXMgT0RhdGFNZXRhTW9kZWxcblx0XHQpO1xuXHRcdHJldHVybiAoXG5cdFx0XHRpbnZvbHZlZERhdGFNb2RlbE9iamVjdD8udGFyZ2V0T2JqZWN0Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5MYWJlbD8udG9TdHJpbmcoKSB8fFxuXHRcdFx0dGFyZ2V0UGF0aC5zcGxpdChcIi9cIilbdGFyZ2V0UGF0aC5zcGxpdChcIi9cIikubGVuZ3RoIC0gMV1cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZldGNoZXMgdGV4dCBmb3IgcmVjb21tZW5kYXRpb24gYmFzZWQgb24gZGlzcGxheSBtb2RlLlxuXHQgKlxuXHQgKiBAcGFyYW0gcmVjb21tZW5kYXRpb25cblx0ICogQHBhcmFtIGRpc3BsYXlNb2RlXG5cdCAqIEByZXR1cm5zIFRleHQgZm9yIGEgcmVjb21tZW5kYXRpb25cblx0ICovXG5cdHByaXZhdGUgZ2V0VGV4dChyZWNvbW1lbmRhdGlvbjogU3RhbmRhcmRSZWNvbW1lbmRhdGlvbkRhdGFUeXBlLCBkaXNwbGF5TW9kZTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRpZiAocmVjb21tZW5kYXRpb24udGV4dCB8fCByZWNvbW1lbmRhdGlvbi52YWx1ZSkge1xuXHRcdFx0c3dpdGNoIChkaXNwbGF5TW9kZSkge1xuXHRcdFx0XHRjYXNlIFwiRGVzY3JpcHRpb25cIjpcblx0XHRcdFx0XHRyZXR1cm4gcmVjb21tZW5kYXRpb24udGV4dCE7XG5cdFx0XHRcdGNhc2UgXCJEZXNjcmlwdGlvblZhbHVlXCI6XG5cdFx0XHRcdFx0cmV0dXJuIHZhbHVlRm9ybWF0dGVycy5mb3JtYXRXaXRoQnJhY2tldHMocmVjb21tZW5kYXRpb24udGV4dCwgcmVjb21tZW5kYXRpb24udmFsdWUpO1xuXHRcdFx0XHRjYXNlIFwiVmFsdWVEZXNjcmlwdGlvblwiOlxuXHRcdFx0XHRcdHJldHVybiB2YWx1ZUZvcm1hdHRlcnMuZm9ybWF0V2l0aEJyYWNrZXRzKHJlY29tbWVuZGF0aW9uLnZhbHVlLCByZWNvbW1lbmRhdGlvbi50ZXh0KTtcblx0XHRcdFx0Y2FzZSBcIlZhbHVlXCI6XG5cdFx0XHRcdFx0cmV0dXJuIHJlY29tbWVuZGF0aW9uLnZhbHVlITtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHJlY29tbWVuZGF0aW9uLnZhbHVlIHx8IFwiXCI7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyBCdXR0b24gd2l0aCBnaXZlbiB0ZXh0LCB0eXBlIGFuZCBwcmVzc0hhbmRsZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSB0ZXh0IFRleHQgZm9yIHRoZSBidXR0b25cblx0ICogQHBhcmFtIHR5cGUgVHlwZSBvZiB0aGUgYnV0dG9uXG5cdCAqIEBwYXJhbSBwcmVzc0hhbmRsZXIgUHJlc3MgSGFuZGxlciBmb3IgdGhlIGJ1dHRvblxuXHQgKiBAcmV0dXJucyBCdXR0b24gd2l0aCB0aGUgZ2l2ZW4gc2V0dGluZ3Ncblx0ICovXG5cdHByaXZhdGUgZ2V0QnV0dG9uKHRleHQ6IHN0cmluZywgdHlwZTogc3RyaW5nLCBwcmVzc0hhbmRsZXI6IEV2ZW50SGFuZGxlcik6IEJ1dHRvbiB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxCdXR0b24gdGV4dD17dGV4dH0gdHlwZT17dHlwZX0gd2lkdGg9e1wiYXV0b1wifSBwcmVzcz17cHJlc3NIYW5kbGVyfT5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRsYXlvdXREYXRhOiAoXG5cdFx0XHRcdFx0XHQ8PlxuXHRcdFx0XHRcdFx0XHQ8RmxleEl0ZW1EYXRhIG1pbldpZHRoPXtcIjEwMCVcIn0+PC9GbGV4SXRlbURhdGE+XG5cdFx0XHRcdFx0XHQ8Lz5cblx0XHRcdFx0XHQpXG5cdFx0XHRcdH19XG5cdFx0XHQ8L0J1dHRvbj5cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgRm9vdGVyIHdpdGggQnV0dG9ucy5cblx0ICpcblx0ICogQHJldHVybnMgRm9vdGVyXG5cdCAqL1xuXG5cdHByaXZhdGUgZ2V0Rm9vdGVyKCk6IFRvb2xiYXIge1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8VG9vbGJhcj5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRjb250ZW50OiAoXG5cdFx0XHRcdFx0XHQ8PlxuXHRcdFx0XHRcdFx0XHQ8VG9vbGJhclNwYWNlciAvPlxuXHRcdFx0XHRcdFx0XHR7dGhpcy5nZXRCdXR0b24oXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5pc1NhdmVcblx0XHRcdFx0XHRcdFx0XHRcdD8gdGhpcy5jb25maXJtUmVjb21tZW5kYXRpb25EaWFsb2dSZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX1JFQ09NTUVOREFUSU9OX0RJQUxPR19BQ0NFUFRfQU5EX1NBVkVcIilcblx0XHRcdFx0XHRcdFx0XHRcdDogdGhpcy5jb25maXJtUmVjb21tZW5kYXRpb25EaWFsb2dSZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX1JFQ09NTUVOREFUSU9OX0RJQUxPR19BQ0NFUFRcIiksXG5cdFx0XHRcdFx0XHRcdFx0XCJFbXBoYXNpemVkXCIsXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5vbkFjY2VwdEFuZFNhdmUuYmluZCh0aGlzKVxuXHRcdFx0XHRcdFx0XHQpfVxuXHRcdFx0XHRcdFx0XHR7dGhpcy5nZXRCdXR0b24oXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5pc1NhdmVcblx0XHRcdFx0XHRcdFx0XHRcdD8gdGhpcy5jb25maXJtUmVjb21tZW5kYXRpb25EaWFsb2dSZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX1JFQ09NTUVOREFUSU9OX0RJQUxPR19JR05PUkVfQU5EX1NBVkVcIilcblx0XHRcdFx0XHRcdFx0XHRcdDogdGhpcy5jb25maXJtUmVjb21tZW5kYXRpb25EaWFsb2dSZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX1JFQ09NTUVOREFUSU9OX0RJQUxPR19JR05PUkVcIiksXG5cdFx0XHRcdFx0XHRcdFx0XCJHaG9zdFwiLFxuXHRcdFx0XHRcdFx0XHRcdHRoaXMub25JZ25vcmVBbmRTYXZlLmJpbmQodGhpcylcblx0XHRcdFx0XHRcdFx0KX1cblx0XHRcdFx0XHRcdFx0e3RoaXMuZ2V0QnV0dG9uKFxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuY29uZmlybVJlY29tbWVuZGF0aW9uRGlhbG9nUmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19SRUNPTU1FTkRBVElPTl9ESUFMT0dfQ09OVElOVUVfRURJVElOR1wiKSxcblx0XHRcdFx0XHRcdFx0XHRcIkdob3N0XCIsXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5vbkNvbnRpbnVlRWRpdGluZy5iaW5kKHRoaXMpXG5cdFx0XHRcdFx0XHRcdCl9XG5cdFx0XHRcdFx0XHQ8Lz5cblx0XHRcdFx0XHQpXG5cdFx0XHRcdH19XG5cdFx0XHQ8L1Rvb2xiYXI+XG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIG1ldGhvZCBjcmVhdGVkIGEgSlNPTiBNb2RlbCBmb3IgdGhlIGFjY2VwdCBhbGwgZGlhbG9nIGRhdGEuXG5cdCAqIEByZXR1cm5zIFRoZSBKU09OIE1vZGVsIGZvciBhY2NlcHQgYWxsIGRpYWxvZy5cblx0ICovXG5cdGdldEFjY2VwdEFsbE1vZGVsKCk6IEpTT05Nb2RlbCB7XG5cdFx0Y29uc3QgYWNjZXB0TW9kZWwgPSBuZXcgSlNPTk1vZGVsKCk7XG5cdFx0Y29uc3QgaXRlbXMgPSBbXTtcblx0XHRmb3IgKGNvbnN0IHJlY29tbWVuZGF0aW9uRGF0YSBvZiB0aGlzLmFjY2VwdEFsbFBhcmFtcz8ucmVjb21tZW5kYXRpb25EYXRhIHx8IFtdKSB7XG5cdFx0XHRjb25zdCBlbnRpdHlOYW1lTGFiZWwgPSBzdGFuZGFyZFJlY29tbWVuZGF0aW9uSGVscGVyLmdldEVudGl0eU5hbWUocmVjb21tZW5kYXRpb25EYXRhLmNvbnRleHQgYXMgT0RhdGFWNENvbnRleHQpIHx8IFwiXCI7XG5cblx0XHRcdGNvbnN0IGlkZW50aWZpZXJUZXh0cyA9XG5cdFx0XHRcdHJlY29tbWVuZGF0aW9uRGF0YS5jb250ZXh0SWRlbnRpZmllclRleHQgJiYgcmVjb21tZW5kYXRpb25EYXRhLmNvbnRleHRJZGVudGlmaWVyVGV4dC5sZW5ndGggPiAwXG5cdFx0XHRcdFx0PyBgJHtlbnRpdHlOYW1lTGFiZWx9ICgke3JlY29tbWVuZGF0aW9uRGF0YS5jb250ZXh0SWRlbnRpZmllclRleHR9KWBcblx0XHRcdFx0XHQ6IGVudGl0eU5hbWVMYWJlbDtcblxuXHRcdFx0aWYgKHJlY29tbWVuZGF0aW9uRGF0YS52YWx1ZSB8fCByZWNvbW1lbmRhdGlvbkRhdGEudGV4dCkge1xuXHRcdFx0XHRjb25zdCB0YXJnZXRQYXRoID0gcmVjb21tZW5kYXRpb25EYXRhLmNvbnRleHQ/LmdldFBhdGgoKSArIFwiL1wiICsgcmVjb21tZW5kYXRpb25EYXRhLnByb3BlcnR5UGF0aDtcblx0XHRcdFx0Y29uc3QgZGlzcGxheU1vZGUgPSBzdGFuZGFyZFJlY29tbWVuZGF0aW9uSGVscGVyLmdldERpc3BsYXlNb2RlRm9yVGFyZ2V0UGF0aChcblx0XHRcdFx0XHR0YXJnZXRQYXRoLFxuXHRcdFx0XHRcdHRoaXMudmlldz8uZ2V0QmluZGluZ0NvbnRleHQoKT8uZ2V0TW9kZWwoKT8uZ2V0TWV0YU1vZGVsKCkgYXMgT0RhdGFNZXRhTW9kZWxcblx0XHRcdFx0KTtcblx0XHRcdFx0Y29uc3QgbGlzdERhdGEgPSB7XG5cdFx0XHRcdFx0ZmllbGROYW1lOiB0aGlzLmdldEZpZWxkTmFtZSh0YXJnZXRQYXRoKS52YWx1ZU9mKCksXG5cdFx0XHRcdFx0ZmllbGRWYWx1ZTogdGhpcy5nZXRUZXh0KHJlY29tbWVuZGF0aW9uRGF0YSwgZGlzcGxheU1vZGUpLFxuXHRcdFx0XHRcdGlkZW50aWZpZXJUZXh0czogaWRlbnRpZmllclRleHRzXG5cdFx0XHRcdH07XG5cdFx0XHRcdGl0ZW1zLnB1c2gobGlzdERhdGEpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRhY2NlcHRNb2RlbC5zZXREYXRhKHsgaXRlbXM6IGl0ZW1zIH0pO1xuXHRcdHJldHVybiBhY2NlcHRNb2RlbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIG1ldGhvZCBncm91cHMgdGhlIGNvbnRleHRzIGFjY29yZGluZyB0byB0aGUgaWRlbnRpZmllciB0ZXh0cy5cblx0ICogQHBhcmFtIGNvbnRleHQgVGhlIGNvbnRleHQgb2YgdGhlIGl0ZW1cblx0ICogQHJldHVybnMgVGhlIHRleHQgb2YgdGhlIGdyb3VwXG5cdCAqL1xuXHRnZXRHcm91cChjb250ZXh0OiBPRGF0YVY0Q29udGV4dCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGNvbnRleHQuZ2V0UHJvcGVydHkoXCJpZGVudGlmaWVyVGV4dHNcIik7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBtZXNzYWdlIHN0cmlwIHRvIGJlIHNob3duIGluIHRoZSBhY2NlcHQgZGlhbG9nLlxuXHQgKiBAcmV0dXJucyBBIG1lc3NhZ2Ugc3RyaXAgd2l0aCB0aGUgZGVzaXJlZCB0ZXh0LlxuXHQgKi9cblx0Z2V0TWVzc2FnZVN0cmlwKCk6IE1lc3NhZ2VTdHJpcCB7XG5cdFx0Y29uc3QgYWNjZXB0QWxsRGF0YSA9ICh0aGlzLnZpZXcuZ2V0TW9kZWwoXCJfYWNjZXB0RGlhbG9nTW9kZWxcIikgYXMgSlNPTk1vZGVsKT8uZ2V0RGF0YSgpPy5pdGVtcztcblx0XHRjb25zdCBtZXNzYWdlU3RyaXBUZXh0ID1cblx0XHRcdGFjY2VwdEFsbERhdGEubGVuZ3RoID4gMVxuXHRcdFx0XHQ/IHRoaXMuY29uZmlybVJlY29tbWVuZGF0aW9uRGlhbG9nUmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19SRUNPTU1FTkRBVElPTl9ESUFMT0dfVEVYVFwiLCBbYWNjZXB0QWxsRGF0YS5sZW5ndGhdKVxuXHRcdFx0XHQ6IHRoaXMuY29uZmlybVJlY29tbWVuZGF0aW9uRGlhbG9nUmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19SRUNPTU1FTkRBVElPTl9ESUFMT0dfVEVYVF9TSU5HVUxBUlwiKTtcblx0XHRyZXR1cm4gPE1lc3NhZ2VTdHJpcCB0ZXh0PXttZXNzYWdlU3RyaXBUZXh0fSAvPjtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIG1ldGhvZCBjcmVhdGVzIHRoZSBjb250ZW50IGZvciB0aGUgZGlhbG9nLlxuXHQgKiBAcmV0dXJucyBBIGxpc3QgYXMgY29udGVudCBvZiB0aGUgZGlhbG9nLlxuXHQgKi9cblx0Z2V0RGlhbG9nQ29udGVudCgpOiBMaXN0IHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PExpc3QgaXRlbXM9e3sgbW9kZWw6IFwiX2FjY2VwdERpYWxvZ01vZGVsXCIsIHBhdGg6IFwiL2l0ZW1zXCIsIHNvcnRlcjogbmV3IFNvcnRlcihcImlkZW50aWZpZXJUZXh0c1wiLCBmYWxzZSwgdGhpcy5nZXRHcm91cCkgfX0+XG5cdFx0XHRcdDxDdXN0b21MaXN0SXRlbT5cblx0XHRcdFx0XHQ8SEJveCBjbGFzcz1cInNhcFVpU21hbGxNYXJnaW5CZWdpbiBzYXBVaVRpbnlNYXJnaW5cIj5cblx0XHRcdFx0XHRcdDxUZXh0IHRleHQ9XCJ7X2FjY2VwdERpYWxvZ01vZGVsPmZpZWxkTmFtZX06IHtfYWNjZXB0RGlhbG9nTW9kZWw+ZmllbGRWYWx1ZX1cIiAvPlxuXHRcdFx0XHRcdDwvSEJveD5cblx0XHRcdFx0PC9DdXN0b21MaXN0SXRlbT5cblx0XHRcdDwvTGlzdD5cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoZSBidWlsZGluZyBibG9jayByZW5kZXIgZnVuY3Rpb24uXG5cdCAqXG5cdCAqIEByZXR1cm5zIEFuIFhNTC1iYXNlZCBzdHJpbmdcblx0ICovXG5cdGdldENvbnRlbnQoKTogRGlhbG9nIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PERpYWxvZ1xuXHRcdFx0XHR0aXRsZT17dGhpcy5jb25maXJtUmVjb21tZW5kYXRpb25EaWFsb2dSZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX1JFQ09NTUVOREFUSU9OX0RJQUxPR19USVRMRVwiKX1cblx0XHRcdFx0c3RhdGU9e1ZhbHVlU3RhdGUuSW5mb3JtYXRpb259XG5cdFx0XHRcdHR5cGU9e1wiTWVzc2FnZVwifVxuXHRcdFx0XHRyZWY9e3RoaXMuY29uZmlybVJlY29tbWVuZGF0aW9uRGlhbG9nfVxuXHRcdFx0XHRyZXNpemFibGU9e1widHJ1ZVwifVxuXHRcdFx0XHRjb250ZW50V2lkdGg9e1wiMzVyZW1cIn1cblx0XHRcdD5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRjb250ZW50OiAoXG5cdFx0XHRcdFx0XHQ8PlxuXHRcdFx0XHRcdFx0XHR7dGhpcy5nZXRNZXNzYWdlU3RyaXAoKX1cblx0XHRcdFx0XHRcdFx0e3RoaXMuZ2V0RGlhbG9nQ29udGVudCgpfVxuXHRcdFx0XHRcdFx0PC8+XG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRmb290ZXI6IDw+e3RoaXMuZ2V0Rm9vdGVyKCl9PC8+XG5cdFx0XHRcdH19XG5cdFx0XHQ8L0RpYWxvZz5cblx0XHQpIGFzIERpYWxvZztcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztNQWlDWUEsNEJBQTRCO0VBQUEsV0FBNUJBLDRCQUE0QjtJQUE1QkEsNEJBQTRCO0lBQTVCQSw0QkFBNEI7SUFBNUJBLDRCQUE0QjtJQUE1QkEsNEJBQTRCO0VBQUEsR0FBNUJBLDRCQUE0QixLQUE1QkEsNEJBQTRCO0VBQUE7RUFBQSxJQVczQkMsZ0NBQWdDLFdBSjVDQyxtQkFBbUIsQ0FBQztJQUNwQkMsSUFBSSxFQUFFLDZCQUE2QjtJQUNuQ0MsU0FBUyxFQUFFO0VBQ1osQ0FBQyxDQUFDLFVB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
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Property } from "@sap-ux/vocabularies-types";
|
|
1
2
|
import Log from "sap/base/Log";
|
|
2
3
|
import { defineBuildingBlock } from "sap/fe/core/buildingBlocks/templating/BuildingBlockSupport";
|
|
3
4
|
import RuntimeBuildingBlock from "sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlock";
|
|
@@ -24,13 +25,12 @@ import JSONModel from "sap/ui/model/json/JSONModel";
|
|
|
24
25
|
import type { default as ODataV4Context } from "sap/ui/model/odata/v4/Context";
|
|
25
26
|
import type ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
|
|
26
27
|
import type { EventHandler } from "types/extension_types";
|
|
27
|
-
import CommonUtils from "../../CommonUtils";
|
|
28
28
|
import type PageController from "../../PageController";
|
|
29
29
|
import type ResourceModel from "../../ResourceModel";
|
|
30
30
|
import type { AcceptAllParams } from "../../controllerextensions/Recommendations";
|
|
31
31
|
import valueFormatters from "../../formatters/ValueFormatter";
|
|
32
32
|
import { standardRecommendationHelper, type StandardRecommendationDataType } from "../../helpers/StandardRecommendationHelper";
|
|
33
|
-
|
|
33
|
+
|
|
34
34
|
export enum RecommendationDialogDecision {
|
|
35
35
|
Accept = "Accept_Recommendations",
|
|
36
36
|
Ignore = "Ignore_Recommendations",
|
|
@@ -149,11 +149,14 @@ export class ConfirmRecommendationDialogBlock extends RuntimeBuildingBlock {
|
|
|
149
149
|
* @returns Returns the label of the Field.
|
|
150
150
|
*/
|
|
151
151
|
private getFieldName(targetPath: string): string {
|
|
152
|
-
const involvedDataModelObject = MetaModelConverter.getInvolvedDataModelObjectsForTargetPath(
|
|
152
|
+
const involvedDataModelObject = MetaModelConverter.getInvolvedDataModelObjectsForTargetPath<Property>(
|
|
153
153
|
targetPath,
|
|
154
154
|
this.view?.getBindingContext()?.getModel()?.getMetaModel() as ODataMetaModel
|
|
155
155
|
);
|
|
156
|
-
return
|
|
156
|
+
return (
|
|
157
|
+
involvedDataModelObject?.targetObject?.annotations?.Common?.Label?.toString() ||
|
|
158
|
+
targetPath.split("/")[targetPath.split("/").length - 1]
|
|
159
|
+
);
|
|
157
160
|
}
|
|
158
161
|
|
|
159
162
|
/**
|
|
@@ -247,27 +250,13 @@ export class ConfirmRecommendationDialogBlock extends RuntimeBuildingBlock {
|
|
|
247
250
|
getAcceptAllModel(): JSONModel {
|
|
248
251
|
const acceptModel = new JSONModel();
|
|
249
252
|
const items = [];
|
|
250
|
-
const appComponent = CommonUtils.getAppComponent(this.view);
|
|
251
|
-
const isFclEnabled = appComponent._isFclEnabled();
|
|
252
|
-
const isFullScreen = isFclEnabled
|
|
253
|
-
? (appComponent.getRootViewController() as FclController).getHelper().getCurrentUIState().isFullScreen
|
|
254
|
-
: true;
|
|
255
253
|
for (const recommendationData of this.acceptAllParams?.recommendationData || []) {
|
|
256
|
-
const
|
|
257
|
-
let identifierTexts;
|
|
254
|
+
const entityNameLabel = standardRecommendationHelper.getEntityName(recommendationData.context as ODataV4Context) || "";
|
|
258
255
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
`${entityName} (${recommendationData.contextIdentifierText})`
|
|
264
|
-
: entityName;
|
|
265
|
-
} else {
|
|
266
|
-
identifierTexts =
|
|
267
|
-
recommendationData.contextIdentifierText && recommendationData.contextIdentifierText.length > 0
|
|
268
|
-
? `${entityName} (${recommendationData.contextIdentifierText})`
|
|
269
|
-
: entityName;
|
|
270
|
-
}
|
|
256
|
+
const identifierTexts =
|
|
257
|
+
recommendationData.contextIdentifierText && recommendationData.contextIdentifierText.length > 0
|
|
258
|
+
? `${entityNameLabel} (${recommendationData.contextIdentifierText})`
|
|
259
|
+
: entityNameLabel;
|
|
271
260
|
|
|
272
261
|
if (recommendationData.value || recommendationData.text) {
|
|
273
262
|
const targetPath = recommendationData.context?.getPath() + "/" + recommendationData.propertyPath;
|
|
@@ -108,7 +108,7 @@ sap.ui.define(["sap/fe/core/converters/ManifestWrapper", "sap/fe/core/converters
|
|
|
108
108
|
* @returns The EntityType the annotation refers to
|
|
109
109
|
*/;
|
|
110
110
|
_proto.getAnnotationEntityType = function getAnnotationEntityType(annotation) {
|
|
111
|
-
if (annotation) {
|
|
111
|
+
if (annotation && typeof annotation === "object") {
|
|
112
112
|
const annotationPath = annotation.fullyQualifiedName;
|
|
113
113
|
const targetEntityType = this._getEntityTypeFromFullyQualifiedName(annotationPath);
|
|
114
114
|
if (!targetEntityType) {
|
|
@@ -123,16 +123,24 @@ sap.ui.define(["sap/fe/core/converters/ManifestWrapper", "sap/fe/core/converters
|
|
|
123
123
|
/**
|
|
124
124
|
* Retrieve the manifest settings defined for a specific control within controlConfiguration.
|
|
125
125
|
*
|
|
126
|
-
* @param
|
|
126
|
+
* @param annotationPath The annotation path or object to evaluate
|
|
127
127
|
* @returns The control configuration for that specific annotation path if it exists
|
|
128
128
|
*/;
|
|
129
|
-
_proto.getManifestControlConfiguration = function getManifestControlConfiguration(
|
|
130
|
-
if (isAnnotationTerm(
|
|
131
|
-
return this.manifestWrapper.getControlConfiguration(
|
|
129
|
+
_proto.getManifestControlConfiguration = function getManifestControlConfiguration(annotationPath) {
|
|
130
|
+
if (isAnnotationTerm(annotationPath)) {
|
|
131
|
+
return this.manifestWrapper.getControlConfiguration(annotationPath.fullyQualifiedName.replace(this.targetDataModelPath.targetEntityType.fullyQualifiedName, ""));
|
|
132
132
|
}
|
|
133
|
-
|
|
134
|
-
const
|
|
135
|
-
|
|
133
|
+
const hasEntitySetKeyInManifest = typeof this.manifestWrapper.getEntitySet() === "string" && this.manifestWrapper.getEntitySet().length > 0;
|
|
134
|
+
const hasContextPathKeyInManifest = typeof this.manifestWrapper.getContextPath() === "string" && this.manifestWrapper.getContextPath().length > 0;
|
|
135
|
+
// In case of multiple-entitySet, we compare the entity set of the ControlConfiguration with what is specified either in the 'entitySet' or 'contextPath' manifest setting.
|
|
136
|
+
if (!this.manifestWrapper.hasMultipleEntitySets()) {
|
|
137
|
+
return this.manifestWrapper.getControlConfiguration(annotationPath);
|
|
138
|
+
} else if (hasEntitySetKeyInManifest && this.baseContextPath !== `/${this.manifestWrapper.getEntitySet()}` || hasContextPathKeyInManifest && this.baseContextPath !== this.manifestWrapper.getContextPath()) {
|
|
139
|
+
return this.manifestWrapper.getControlConfiguration(`${this.baseContextPath}/${annotationPath}`);
|
|
140
|
+
} else if (Object.keys(this.manifestWrapper.getControlConfiguration(annotationPath)).length > 0) {
|
|
141
|
+
return this.manifestWrapper.getControlConfiguration(annotationPath);
|
|
142
|
+
}
|
|
143
|
+
return this.manifestWrapper.getControlConfiguration(`${this.baseContextPath}/${annotationPath}`);
|
|
136
144
|
}
|
|
137
145
|
|
|
138
146
|
/**
|
|
@@ -409,4 +417,4 @@ sap.ui.define(["sap/fe/core/converters/ManifestWrapper", "sap/fe/core/converters
|
|
|
409
417
|
}();
|
|
410
418
|
return ConverterContext;
|
|
411
419
|
}, false);
|
|
412
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc0Fubm90YXRpb25UZXJtIiwidkFubm90YXRpb25QYXRoIiwiZ2V0RGF0YU1vZGVsUGF0aEZvckVudGl0eVNldCIsInJlc29sdmVkTWV0YVBhdGgiLCJjb252ZXJ0ZWRUeXBlcyIsInJvb3RFbnRpdHlTZXQiLCJjdXJyZW50RW50aXR5U2V0IiwicHJldmlvdXNFbnRpdHlTZXQiLCJjdXJyZW50RW50aXR5VHlwZSIsIm5hdmlnYXRlZFBhdGhzIiwibmF2aWdhdGlvblByb3BlcnRpZXMiLCJvYmplY3RQYXRoIiwiZm9yRWFjaCIsIm9iamVjdFBhcnQiLCJpc1NlcnZpY2VPYmplY3QiLCJfdHlwZSIsInB1c2giLCJuYW1lIiwidGFyZ2V0VHlwZSIsIm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmciLCJoYXNPd25Qcm9wZXJ0eSIsImpvaW4iLCJ1bmRlZmluZWQiLCJlbnRpdHlUeXBlIiwiZGF0YU1vZGVsUGF0aCIsInN0YXJ0aW5nRW50aXR5U2V0IiwidGFyZ2V0RW50aXR5VHlwZSIsInRhcmdldEVudGl0eVNldCIsImNvbnRleHRMb2NhdGlvbiIsInRhcmdldE9iamVjdCIsInRhcmdldCIsIkNvbnZlcnRlckNvbnRleHQiLCJtYW5pZmVzdFNldHRpbmdzIiwiZGlhZ25vc3RpY3MiLCJtZXJnZUZuIiwidGFyZ2V0RGF0YU1vZGVsUGF0aCIsIm1hbmlmZXN0V3JhcHBlciIsIk1hbmlmZXN0V3JhcHBlciIsImJhc2VDb250ZXh0UGF0aCIsImdldFRhcmdldE9iamVjdFBhdGgiLCJfZ2V0RW50aXR5VHlwZUZyb21GdWxseVF1YWxpZmllZE5hbWUiLCJmdWxseVF1YWxpZmllZE5hbWUiLCJlbnRpdHlUeXBlcyIsImZpbmQiLCJzdGFydHNXaXRoIiwicmVwbGFjZUFubm90YXRpb24iLCJyZXBsYWNlIiwiZ2V0QW5ub3RhdGlvbkVudGl0eVR5cGUiLCJhbm5vdGF0aW9uIiwiYW5ub3RhdGlvblBhdGgiLCJFcnJvciIsImdldE1hbmlmZXN0Q29udHJvbENvbmZpZ3VyYXRpb24iLCJnZXRDb250cm9sQ29uZmlndXJhdGlvbiIsInNBbm5vdGF0aW9uUGF0aCIsImhhc011bHRpcGxlRW50aXR5U2V0cyIsImdldEVudGl0eVNldCIsImdldEFic29sdXRlQW5ub3RhdGlvblBhdGgiLCJnZXRDb250ZXh0UGF0aCIsImdldERhdGFNb2RlbE9iamVjdFBhdGgiLCJnZXRFbnRpdHlDb250YWluZXIiLCJlbnRpdHlDb250YWluZXIiLCJnZXRFbnRpdHlUeXBlIiwiZ2V0UGFyYW1ldGVyRW50aXR5VHlwZSIsInBhcmFtZXRlckVudGl0eVR5cGUiLCJpc1BhcmFtZXRlcml6ZWQiLCJhbm5vdGF0aW9ucyIsIkNvbW1vbiIsIlJlc3VsdENvbnRleHQiLCJnZXRFbnRpdHlUeXBlQW5ub3RhdGlvbiIsImluY2x1ZGVzIiwiaXNBYnNvbHV0ZSIsInBhdGgiLCJiYXNlIiwic3BsaXQiLCJlbmRzV2l0aCIsInJlc29sdmVBYnNvbHV0ZVBhdGgiLCJkYXRhTW9kZWxPYmplY3RQYXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RGcm9tUGF0aCIsInZpc2l0ZWRPYmplY3RzIiwiY29udmVydGVyQ29udGV4dCIsImdldFRlbXBsYXRlVHlwZSIsImdldENvbnZlcnRlZFR5cGVzIiwiZ2V0UmVsYXRpdmVBbm5vdGF0aW9uUGF0aCIsImdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgiLCJlbnRpdHlUeXBlRlFOIiwibWF0Y2giLCJsZW5ndGgiLCJyZXBsYWNlZEFubm90YXRpb25QYXRoIiwic3Vic3RyaW5nIiwiZ2V0TWFuaWZlc3RXcmFwcGVyIiwiZ2V0RGlhZ25vc3RpY3MiLCJyZXNvbHZlUGF0aCIsImdldENvbnZlcnRlckNvbnRleHRGb3IiLCJjb250ZXh0UGF0aCIsInRhcmdldFBhdGgiLCJnZXRBbm5vdGF0aW9uc0J5VGVybSIsInZvY2FidWxhcnlOYW1lIiwiYW5ub3RhdGlvblRlcm0iLCJhbm5vdGF0aW9uU291cmNlcyIsIm91dEFubm90YXRpb25zIiwiYW5ub3RhdGlvblNvdXJjZSIsIk9iamVjdCIsImtleXMiLCJmaWx0ZXIiLCJ0ZXJtIiwicmVkdWNlIiwicHJldmlvdXNWYWx1ZSIsImtleSIsImdldFJlbGF0aXZlTW9kZWxQYXRoRnVuY3Rpb24iLCJzUGF0aCIsImVuaGFuY2VkUGF0aCIsImVuaGFuY2VEYXRhTW9kZWxQYXRoIiwiZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCIsImNyZWF0ZUNvbnZlcnRlckNvbnRleHRGb3JNYWNybyIsInNFbnRpdHlTZXROYW1lIiwib01ldGFNb2RlbENvbnRleHQiLCJvTWV0YU1vZGVsIiwiaXNBIiwiZ2V0TW9kZWwiLCJvQ29udmVydGVkTWV0YWRhdGEiLCJjb252ZXJ0VHlwZXMiLCJlbnRpdHlTZXRzIiwiZW50aXR5U2V0Iiwic2luZ2xldG9ucyIsImZldGNoVGV4dEZyb21NZXRhTW9kZWwiLCJNb2RlbEhlbHBlciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQ29udmVydGVyQ29udGV4dC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG5cdEFubm90YXRpb25UZXJtLFxuXHRDb252ZXJ0ZWRNZXRhZGF0YSxcblx0RW50aXR5Q29udGFpbmVyLFxuXHRFbnRpdHlTZXQsXG5cdEVudGl0eVR5cGUsXG5cdE5hdmlnYXRpb25Qcm9wZXJ0eSxcblx0UmVzb2x1dGlvblRhcmdldCxcblx0U2VydmljZU9iamVjdCxcblx0U2VydmljZU9iamVjdEFuZEFubm90YXRpb24sXG5cdFNpbmdsZXRvblxufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgRW50aXR5VHlwZUFubm90YXRpb25zIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9FZG1fVHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgQmFzZU1hbmlmZXN0U2V0dGluZ3MsIFRlbXBsYXRlVHlwZSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCBNYW5pZmVzdFdyYXBwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RXcmFwcGVyXCI7XG5pbXBvcnQgeyBjb252ZXJ0VHlwZXMsIGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0RnJvbVBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB0eXBlIHsgSURpYWdub3N0aWNzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvVGVtcGxhdGVDb252ZXJ0ZXJcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHsgaXNTZXJ2aWNlT2JqZWN0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvVHlwZUd1YXJkc1wiO1xuaW1wb3J0IHR5cGUgeyBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHsgZW5oYW5jZURhdGFNb2RlbFBhdGgsIGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgsIGdldFRhcmdldE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuXG5leHBvcnQgdHlwZSBSZXNvbHZlZEFubm90YXRpb25Db250ZXh0ID0ge1xuXHRhbm5vdGF0aW9uOiBBbm5vdGF0aW9uVGVybTxhbnk+O1xuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0O1xufTtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhbiBvYmplY3QgaXMgYW4gYW5ub3RhdGlvbiB0ZXJtLlxuICpcbiAqIEBwYXJhbSB2QW5ub3RhdGlvblBhdGhcbiAqIEByZXR1cm5zIGB0cnVlYCBpZiBpdCdzIGFuIGFubm90YXRpb24gdGVybVxuICovXG5jb25zdCBpc0Fubm90YXRpb25UZXJtID0gZnVuY3Rpb24gKHZBbm5vdGF0aW9uUGF0aDogc3RyaW5nIHwgQW5ub3RhdGlvblRlcm08YW55Pik6IHZBbm5vdGF0aW9uUGF0aCBpcyBBbm5vdGF0aW9uVGVybTxhbnk+IHtcblx0cmV0dXJuIHR5cGVvZiB2QW5ub3RhdGlvblBhdGggPT09IFwib2JqZWN0XCI7XG59O1xuXG5jb25zdCBnZXREYXRhTW9kZWxQYXRoRm9yRW50aXR5U2V0ID0gZnVuY3Rpb24gKFxuXHRyZXNvbHZlZE1ldGFQYXRoOiBSZXNvbHV0aW9uVGFyZ2V0PGFueT4sXG5cdGNvbnZlcnRlZFR5cGVzOiBDb252ZXJ0ZWRNZXRhZGF0YVxuKTogRGF0YU1vZGVsT2JqZWN0UGF0aCB7XG5cdGxldCByb290RW50aXR5U2V0OiBFbnRpdHlTZXQgfCB1bmRlZmluZWQ7XG5cdGxldCBjdXJyZW50RW50aXR5U2V0OiBFbnRpdHlTZXQgfCB1bmRlZmluZWQ7XG5cdGxldCBwcmV2aW91c0VudGl0eVNldDogRW50aXR5U2V0IHwgdW5kZWZpbmVkO1xuXHRsZXQgY3VycmVudEVudGl0eVR5cGU6IEVudGl0eVR5cGUgfCB1bmRlZmluZWQ7XG5cdGxldCBuYXZpZ2F0ZWRQYXRoczogc3RyaW5nW10gPSBbXTtcblx0Y29uc3QgbmF2aWdhdGlvblByb3BlcnRpZXM6IE5hdmlnYXRpb25Qcm9wZXJ0eVtdID0gW107XG5cdHJlc29sdmVkTWV0YVBhdGgub2JqZWN0UGF0aC5mb3JFYWNoKChvYmplY3RQYXJ0OiBTZXJ2aWNlT2JqZWN0QW5kQW5ub3RhdGlvbikgPT4ge1xuXHRcdGlmIChpc1NlcnZpY2VPYmplY3Qob2JqZWN0UGFydCkpIHtcblx0XHRcdHN3aXRjaCAob2JqZWN0UGFydC5fdHlwZSkge1xuXHRcdFx0XHRjYXNlIFwiTmF2aWdhdGlvblByb3BlcnR5XCI6XG5cdFx0XHRcdFx0bmF2aWdhdGVkUGF0aHMucHVzaChvYmplY3RQYXJ0Lm5hbWUpO1xuXHRcdFx0XHRcdG5hdmlnYXRpb25Qcm9wZXJ0aWVzLnB1c2gob2JqZWN0UGFydCk7XG5cdFx0XHRcdFx0Y3VycmVudEVudGl0eVR5cGUgPSBvYmplY3RQYXJ0LnRhcmdldFR5cGU7XG5cdFx0XHRcdFx0aWYgKHByZXZpb3VzRW50aXR5U2V0ICYmIHByZXZpb3VzRW50aXR5U2V0Lm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcuaGFzT3duUHJvcGVydHkobmF2aWdhdGVkUGF0aHMuam9pbihcIi9cIikpKSB7XG5cdFx0XHRcdFx0XHRjdXJyZW50RW50aXR5U2V0ID0gcHJldmlvdXNFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1tuYXZpZ2F0ZWRQYXRocy5qb2luKFwiL1wiKV0gYXMgRW50aXR5U2V0O1xuXHRcdFx0XHRcdFx0cHJldmlvdXNFbnRpdHlTZXQgPSBjdXJyZW50RW50aXR5U2V0O1xuXHRcdFx0XHRcdFx0bmF2aWdhdGVkUGF0aHMgPSBbXTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y3VycmVudEVudGl0eVNldCA9IHVuZGVmaW5lZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgXCJFbnRpdHlTZXRcIjpcblx0XHRcdFx0XHRpZiAocm9vdEVudGl0eVNldCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0XHRyb290RW50aXR5U2V0ID0gb2JqZWN0UGFydDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y3VycmVudEVudGl0eVNldCA9IG9iamVjdFBhcnQ7XG5cdFx0XHRcdFx0cHJldmlvdXNFbnRpdHlTZXQgPSBjdXJyZW50RW50aXR5U2V0O1xuXHRcdFx0XHRcdGN1cnJlbnRFbnRpdHlUeXBlID0gY3VycmVudEVudGl0eVNldD8uZW50aXR5VHlwZTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xuXHRjb25zdCBkYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoID0ge1xuXHRcdHN0YXJ0aW5nRW50aXR5U2V0OiByb290RW50aXR5U2V0IGFzIEVudGl0eVNldCxcblx0XHR0YXJnZXRFbnRpdHlUeXBlOiBjdXJyZW50RW50aXR5VHlwZSBhcyBFbnRpdHlUeXBlLFxuXHRcdHRhcmdldEVudGl0eVNldDogY3VycmVudEVudGl0eVNldCxcblx0XHRuYXZpZ2F0aW9uUHJvcGVydGllczogbmF2aWdhdGlvblByb3BlcnRpZXMsXG5cdFx0Y29udGV4dExvY2F0aW9uOiB1bmRlZmluZWQsXG5cdFx0dGFyZ2V0T2JqZWN0OiByZXNvbHZlZE1ldGFQYXRoLnRhcmdldCxcblx0XHRjb252ZXJ0ZWRUeXBlczogY29udmVydGVkVHlwZXNcblx0fTtcblx0ZGF0YU1vZGVsUGF0aC5jb250ZXh0TG9jYXRpb24gPSBkYXRhTW9kZWxQYXRoO1xuXHRyZXR1cm4gZGF0YU1vZGVsUGF0aDtcbn07XG5cbi8qKlxuICogQ3JlYXRlIGEgQ29udmVydGVyQ29udGV4dCBvYmplY3QgdGhhdCB3aWxsIGJlIHVzZWQgd2l0aGluIHRoZSBjb252ZXJ0ZXJzLlxuICpcbiAqIEBwYXJhbSB7Q29udmVydGVkTWV0YWRhdGF9IG9Db252ZXJ0ZWRUeXBlcyBUaGUgY29udmVydGVkIGFubm90YXRpb24gYW5kIHNlcnZpY2UgdHlwZXNcbiAqIEBwYXJhbSB7QmFzZU1hbmlmZXN0U2V0dGluZ3N9IG9NYW5pZmVzdFNldHRpbmdzIFRoZSBtYW5pZmVzdFNldHRpbmdzIHRoYXQgYXBwbGllcyB0byB0aGlzIHBhZ2VcbiAqIEBwYXJhbSB7VGVtcGxhdGVUeXBlfSB0ZW1wbGF0ZVR5cGUgVGhlIHR5cGUgb2YgdGVtcGxhdGUgd2UncmUgbG9va2luZyBhdCByaWdodCBub3dcbiAqIEBwYXJhbSB7SURpYWdub3N0aWNzfSBkaWFnbm9zdGljcyBUaGUgZGlhZ25vc3RpY3Mgc2hpbVxuICogQHBhcmFtIHtGdW5jdGlvbn0gbWVyZ2VGbiBUaGUgZnVuY3Rpb24gdG8gYmUgdXNlZCB0byBwZXJmb20gc29tZSBkZWVwIG1lcmdlcyBiZXR3ZWVuIG9iamVjdFxuICogQHBhcmFtIHtEYXRhTW9kZWxPYmplY3RQYXRofSB0YXJnZXREYXRhTW9kZWxQYXRoIFRoZSBnbG9iYWwgcGF0aCB0byByZWFjaCB0aGUgZW50aXR5U2V0XG4gKiBAcmV0dXJucyB7Q29udmVydGVyQ29udGV4dH0gQSBjb252ZXJ0ZXIgY29udGV4dCBmb3IgdGhlIGNvbnZlcnRlcnNcbiAqL1xuY2xhc3MgQ29udmVydGVyQ29udGV4dCB7XG5cdHByaXZhdGUgbWFuaWZlc3RXcmFwcGVyOiBNYW5pZmVzdFdyYXBwZXI7XG5cblx0cHJpdmF0ZSBiYXNlQ29udGV4dFBhdGg6IHN0cmluZztcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIGNvbnZlcnRlZFR5cGVzOiBDb252ZXJ0ZWRNZXRhZGF0YSxcblx0XHRwcml2YXRlIG1hbmlmZXN0U2V0dGluZ3M6IEJhc2VNYW5pZmVzdFNldHRpbmdzLFxuXHRcdHByaXZhdGUgZGlhZ25vc3RpY3M6IElEaWFnbm9zdGljcyxcblx0XHRwcml2YXRlIG1lcmdlRm46IEZ1bmN0aW9uLFxuXHRcdHByaXZhdGUgdGFyZ2V0RGF0YU1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aFxuXHQpIHtcblx0XHR0aGlzLm1hbmlmZXN0V3JhcHBlciA9IG5ldyBNYW5pZmVzdFdyYXBwZXIodGhpcy5tYW5pZmVzdFNldHRpbmdzLCBtZXJnZUZuKTtcblx0XHR0aGlzLmJhc2VDb250ZXh0UGF0aCA9IGdldFRhcmdldE9iamVjdFBhdGgodGhpcy50YXJnZXREYXRhTW9kZWxQYXRoKTtcblx0fVxuXG5cdHByaXZhdGUgX2dldEVudGl0eVR5cGVGcm9tRnVsbHlRdWFsaWZpZWROYW1lKGZ1bGx5UXVhbGlmaWVkTmFtZTogc3RyaW5nKTogRW50aXR5VHlwZSB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHRoaXMuY29udmVydGVkVHlwZXMuZW50aXR5VHlwZXMuZmluZCgoZW50aXR5VHlwZSkgPT4ge1xuXHRcdFx0aWYgKGZ1bGx5UXVhbGlmaWVkTmFtZS5zdGFydHNXaXRoKGVudGl0eVR5cGUuZnVsbHlRdWFsaWZpZWROYW1lKSkge1xuXHRcdFx0XHRjb25zdCByZXBsYWNlQW5ub3RhdGlvbiA9IGZ1bGx5UXVhbGlmaWVkTmFtZS5yZXBsYWNlKGVudGl0eVR5cGUuZnVsbHlRdWFsaWZpZWROYW1lLCBcIlwiKTtcblx0XHRcdFx0cmV0dXJuIHJlcGxhY2VBbm5vdGF0aW9uLnN0YXJ0c1dpdGgoXCIvXCIpIHx8IHJlcGxhY2VBbm5vdGF0aW9uLnN0YXJ0c1dpdGgoXCJAXCIpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlIHRoZSBlbnRpdHlUeXBlIGFzc29jaWF0ZWQgd2l0aCBhbiBhbm5vdGF0aW9uIG9iamVjdC5cblx0ICpcblx0ICogQHBhcmFtIGFubm90YXRpb24gVGhlIGFubm90YXRpb24gb2JqZWN0IGZvciB3aGljaCB3ZSB3YW50IHRvIGZpbmQgdGhlIGVudGl0eVR5cGVcblx0ICogQHJldHVybnMgVGhlIEVudGl0eVR5cGUgdGhlIGFubm90YXRpb24gcmVmZXJzIHRvXG5cdCAqL1xuXHRnZXRBbm5vdGF0aW9uRW50aXR5VHlwZShhbm5vdGF0aW9uPzogQW5ub3RhdGlvblRlcm08YW55Pik6IEVudGl0eVR5cGUge1xuXHRcdGlmIChhbm5vdGF0aW9uKSB7XG5cdFx0XHRjb25zdCBhbm5vdGF0aW9uUGF0aCA9IGFubm90YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lO1xuXHRcdFx0Y29uc3QgdGFyZ2V0RW50aXR5VHlwZSA9IHRoaXMuX2dldEVudGl0eVR5cGVGcm9tRnVsbHlRdWFsaWZpZWROYW1lKGFubm90YXRpb25QYXRoKTtcblx0XHRcdGlmICghdGFyZ2V0RW50aXR5VHlwZSkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIEVudGl0eSBUeXBlIGZvciAke2Fubm90YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lfWApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRhcmdldEVudGl0eVR5cGU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB0aGlzLnRhcmdldERhdGFNb2RlbFBhdGgudGFyZ2V0RW50aXR5VHlwZTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmUgdGhlIG1hbmlmZXN0IHNldHRpbmdzIGRlZmluZWQgZm9yIGEgc3BlY2lmaWMgY29udHJvbCB3aXRoaW4gY29udHJvbENvbmZpZ3VyYXRpb24uXG5cdCAqXG5cdCAqIEBwYXJhbSB2QW5ub3RhdGlvblBhdGggVGhlIGFubm90YXRpb24gcGF0aCBvciBvYmplY3QgdG8gZXZhbHVhdGVcblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgY29uZmlndXJhdGlvbiBmb3IgdGhhdCBzcGVjaWZpYyBhbm5vdGF0aW9uIHBhdGggaWYgaXQgZXhpc3RzXG5cdCAqL1xuXHRnZXRNYW5pZmVzdENvbnRyb2xDb25maWd1cmF0aW9uKHZBbm5vdGF0aW9uUGF0aDogc3RyaW5nIHwgQW5ub3RhdGlvblRlcm08YW55Pik6IGFueSB7XG5cdFx0aWYgKGlzQW5ub3RhdGlvblRlcm0odkFubm90YXRpb25QYXRoKSkge1xuXHRcdFx0cmV0dXJuIHRoaXMubWFuaWZlc3RXcmFwcGVyLmdldENvbnRyb2xDb25maWd1cmF0aW9uKFxuXHRcdFx0XHR2QW5ub3RhdGlvblBhdGguZnVsbHlRdWFsaWZpZWROYW1lLnJlcGxhY2UodGhpcy50YXJnZXREYXRhTW9kZWxQYXRoLnRhcmdldEVudGl0eVR5cGUuZnVsbHlRdWFsaWZpZWROYW1lLCBcIlwiKVxuXHRcdFx0KTtcblx0XHR9XG5cdFx0Ly8gQ2hlY2tpbmcgaWYgdGhlcmUgYXJlIG11bHRpcGxlIGVudGl0eSBzZXQgaW4gdGhlIG1hbmlmZXN0LCBhbmQgY29tcGFyaW5nIHRoZSBlbnRpdHkgc2V0IG9mIHRoZSBDb250cm9sQ29uZmlndXJhdGlvbiB3aXRoIHRoZSBvbmUgZnJvbSB0aGUgYW5ub3RhdGlvbi5cblx0XHRjb25zdCBzQW5ub3RhdGlvblBhdGggPVxuXHRcdFx0dGhpcy5tYW5pZmVzdFdyYXBwZXIuaGFzTXVsdGlwbGVFbnRpdHlTZXRzKCkgJiYgdGhpcy5iYXNlQ29udGV4dFBhdGggIT09IGAvJHt0aGlzLm1hbmlmZXN0V3JhcHBlci5nZXRFbnRpdHlTZXQoKX1gXG5cdFx0XHRcdD8gYCR7dGhpcy5iYXNlQ29udGV4dFBhdGh9LyR7dkFubm90YXRpb25QYXRofWBcblx0XHRcdFx0OiB2QW5ub3RhdGlvblBhdGg7XG5cdFx0cmV0dXJuIHRoaXMubWFuaWZlc3RXcmFwcGVyLmdldENvbnRyb2xDb25maWd1cmF0aW9uKHNBbm5vdGF0aW9uUGF0aCk7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlIGFuIGFic29sdXRlIGFubm90YXRpb24gcGF0aCBiYXNlZCBvbiB0aGUgY3VycmVudCBtZXRhIG1vZGVsIGNvbnRleHQuXG5cdCAqXG5cdCAqIEBwYXJhbSBzQW5ub3RhdGlvblBhdGggVGhlIHJlbGF0aXZlIGFubm90YXRpb24gcGF0aFxuXHQgKiBAcmV0dXJucyBUaGUgY29ycmVjdCBhbm5vdGF0aW9uIHBhdGggYmFzZWQgb24gdGhlIGN1cnJlbnQgY29udGV4dFxuXHQgKi9cblx0Z2V0QWJzb2x1dGVBbm5vdGF0aW9uUGF0aChzQW5ub3RhdGlvblBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0aWYgKCFzQW5ub3RhdGlvblBhdGgpIHtcblx0XHRcdHJldHVybiBzQW5ub3RhdGlvblBhdGg7XG5cdFx0fVxuXHRcdGlmIChzQW5ub3RhdGlvblBhdGhbMF0gPT09IFwiL1wiKSB7XG5cdFx0XHRyZXR1cm4gc0Fubm90YXRpb25QYXRoO1xuXHRcdH1cblx0XHRyZXR1cm4gYCR7dGhpcy5iYXNlQ29udGV4dFBhdGh9LyR7c0Fubm90YXRpb25QYXRofWA7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmUgdGhlIGN1cnJlbnQgZW50aXR5U2V0LlxuXHQgKlxuXHQgKiBAcmV0dXJucyBUaGUgY3VycmVudCBFbnRpdHlTZXQgaWYgaXQgZXhpc3RzLlxuXHQgKi9cblx0Z2V0RW50aXR5U2V0KCk6IEVudGl0eVNldCB8IFNpbmdsZXRvbiB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHRoaXMudGFyZ2V0RGF0YU1vZGVsUGF0aC50YXJnZXRFbnRpdHlTZXQgYXMgRW50aXR5U2V0IHwgU2luZ2xldG9uO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlIHRoZSBjb250ZXh0IHBhdGguXG5cdCAqXG5cdCAqIEByZXR1cm5zIFRoZSBjb250ZXh0IHBhdGggb2YgdGhlIGNvbnZlcnRlci5cblx0ICovXG5cdGdldENvbnRleHRQYXRoKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMuYmFzZUNvbnRleHRQYXRoO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlIHRoZSBjdXJyZW50IGRhdGEgbW9kZWwgb2JqZWN0IHBhdGguXG5cdCAqXG5cdCAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGRhdGEgbW9kZWwgb2JqZWN0IHBhdGhcblx0ICovXG5cdGdldERhdGFNb2RlbE9iamVjdFBhdGgoKTogRGF0YU1vZGVsT2JqZWN0UGF0aCB7XG5cdFx0cmV0dXJuIHRoaXMudGFyZ2V0RGF0YU1vZGVsUGF0aDtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIEVudGl0eUNvbnRhaW5lci5cblx0ICpcblx0ICogQHJldHVybnMgVGhlIGN1cnJlbnQgc2VydmljZSBFbnRpdHlDb250YWluZXJcblx0ICovXG5cdGdldEVudGl0eUNvbnRhaW5lcigpOiBFbnRpdHlDb250YWluZXIge1xuXHRcdHJldHVybiB0aGlzLmNvbnZlcnRlZFR5cGVzLmVudGl0eUNvbnRhaW5lcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIEVudGl0eVR5cGUgYmFzZWQgb24gdGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lLlxuXHQgKlxuXHQgKiBAcmV0dXJucyBUaGUgY3VycmVudCBFbnRpdHlUeXBlLlxuXHQgKi9cblx0Z2V0RW50aXR5VHlwZSgpOiBFbnRpdHlUeXBlIHtcblx0XHRyZXR1cm4gdGhpcy50YXJnZXREYXRhTW9kZWxQYXRoLnRhcmdldEVudGl0eVR5cGU7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgZW50aXR5IHR5cGUgb2YgdGhlIHBhcmFtZXRlciBpbiBjYXNlIG9mIGEgcGFyYW1ldGVyaXplZCBzZXJ2aWNlLlxuXHQgKlxuXHQgKiBAcmV0dXJucyBUaGUgZW50aXR5IHR5cGUgb2YgdGhlIHBhcmFtZXRlclxuXHQgKi9cblx0Z2V0UGFyYW1ldGVyRW50aXR5VHlwZSgpOiBFbnRpdHlUeXBlIHtcblx0XHRjb25zdCBwYXJhbWV0ZXJFbnRpdHlUeXBlID0gdGhpcy50YXJnZXREYXRhTW9kZWxQYXRoLnN0YXJ0aW5nRW50aXR5U2V0LmVudGl0eVR5cGU7XG5cdFx0Y29uc3QgaXNQYXJhbWV0ZXJpemVkID0gISFwYXJhbWV0ZXJFbnRpdHlUeXBlLmFubm90YXRpb25zPy5Db21tb24/LlJlc3VsdENvbnRleHQ7XG5cdFx0cmV0dXJuIChpc1BhcmFtZXRlcml6ZWQgJiYgcGFyYW1ldGVyRW50aXR5VHlwZSkgYXMgRW50aXR5VHlwZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgYW4gYW5ub3RhdGlvbiBmcm9tIGFuIGVudGl0eSB0eXBlIGJhc2VkIG9uIGFubm90YXRpb24gcGF0aC5cblx0ICpcblx0ICogQHBhcmFtIGFubm90YXRpb25QYXRoIFRoZSBhbm5vdGF0aW9uIHBhdGggdG8gYmUgZXZhbHVhdGVkXG5cdCAqIEByZXR1cm5zIFRoZSB0YXJnZXQgYW5ub3RhdGlvbiBwYXRoIGFzIHdlbGwgYXMgYSBjb252ZXJ0ZXIgY29udGV4dCB0byBnbyB3aXRoIGl0XG5cdCAqL1xuXHRnZXRFbnRpdHlUeXBlQW5ub3RhdGlvbihhbm5vdGF0aW9uUGF0aDogc3RyaW5nKTogUmVzb2x2ZWRBbm5vdGF0aW9uQ29udGV4dCB7XG5cdFx0aWYgKCFhbm5vdGF0aW9uUGF0aC5pbmNsdWRlcyhcIkBcIikpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgTm90IGFuIGFubm90YXRpb24gcGF0aDogJyR7YW5ub3RhdGlvblBhdGh9J2ApO1xuXHRcdH1cblxuXHRcdGNvbnN0IGlzQWJzb2x1dGUgPSBhbm5vdGF0aW9uUGF0aC5zdGFydHNXaXRoKFwiL1wiKTtcblx0XHRsZXQgcGF0aDogc3RyaW5nO1xuXG5cdFx0aWYgKGlzQWJzb2x1dGUpIHtcblx0XHRcdC8vIHBhdGggY2FuIGJlIHVzZWQgYXMtaXNcblx0XHRcdHBhdGggPSBhbm5vdGF0aW9uUGF0aDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gYnVpbGQgYW4gYWJzb2x1dGUgcGF0aCBiYXNlZCBvbiB0aGUgZW50aXR5IHR5cGUgKHRoaXMgZnVuY3Rpb24gd29ya3Mgb24gdGhlIHR5cGUhKVxuXHRcdFx0Y29uc3QgYmFzZSA9IHRoaXMuZ2V0Q29udGV4dFBhdGgoKS5zcGxpdChcIkBcIiwgMSlbMF07XG5cdFx0XHRwYXRoID0gYmFzZS5lbmRzV2l0aChcIi9cIikgPyBiYXNlICsgYW5ub3RhdGlvblBhdGggOiBgJHtiYXNlfS8ke2Fubm90YXRpb25QYXRofWA7XG5cdFx0fVxuXG5cdFx0Y29uc3QgdGFyZ2V0OiBSZXNvbHV0aW9uVGFyZ2V0PGFueT4gPSB0aGlzLnJlc29sdmVBYnNvbHV0ZVBhdGgocGF0aCk7XG5cblx0XHRjb25zdCBkYXRhTW9kZWxPYmplY3RQYXRoID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RGcm9tUGF0aChcblx0XHRcdHsgdGFyZ2V0OiB0YXJnZXQudGFyZ2V0LCB2aXNpdGVkT2JqZWN0czogdGFyZ2V0Lm9iamVjdFBhdGggfSxcblx0XHRcdHRoaXMuY29udmVydGVkVHlwZXMsXG5cdFx0XHRpc0Fic29sdXRlID8gdW5kZWZpbmVkIDogdGhpcy50YXJnZXREYXRhTW9kZWxQYXRoLmNvbnRleHRMb2NhdGlvbixcblx0XHRcdHRydWVcblx0XHQpO1xuXG5cdFx0cmV0dXJuIHtcblx0XHRcdGFubm90YXRpb246IHRhcmdldC50YXJnZXQsXG5cdFx0XHRjb252ZXJ0ZXJDb250ZXh0OiBuZXcgQ29udmVydGVyQ29udGV4dChcblx0XHRcdFx0dGhpcy5jb252ZXJ0ZWRUeXBlcyxcblx0XHRcdFx0dGhpcy5tYW5pZmVzdFNldHRpbmdzLFxuXHRcdFx0XHR0aGlzLmRpYWdub3N0aWNzLFxuXHRcdFx0XHR0aGlzLm1lcmdlRm4sXG5cdFx0XHRcdGRhdGFNb2RlbE9iamVjdFBhdGhcblx0XHRcdClcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlIHRoZSB0eXBlIG9mIHRlbXBsYXRlIHdlJ3JlIHdvcmtpbmcgb24gKGUuZy4gTGlzdFJlcG9ydCAvIE9iamVjdFBhZ2UgLyAuLi4pLlxuXHQgKlxuXHQgKiBAcmV0dXJucyBUaGUgY3VycmVudCB0ZW5wbGF0ZSB0eXBlXG5cdCAqL1xuXHRnZXRUZW1wbGF0ZVR5cGUoKTogVGVtcGxhdGVUeXBlIHtcblx0XHRyZXR1cm4gdGhpcy5tYW5pZmVzdFdyYXBwZXIuZ2V0VGVtcGxhdGVUeXBlKCk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmUgdGhlIGNvbnZlcnRlZCB0eXBlcy5cblx0ICpcblx0ICogQHJldHVybnMgVGhlIGN1cnJlbnQgY29udmVydGVkIHR5cGVzXG5cdCAqL1xuXHRnZXRDb252ZXJ0ZWRUeXBlcygpOiBDb252ZXJ0ZWRNZXRhZGF0YSB7XG5cdFx0cmV0dXJuIHRoaXMuY29udmVydGVkVHlwZXM7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmUgYSByZWxhdGl2ZSBhbm5vdGF0aW9uIHBhdGggYmV0d2VlbiBhbiBhbm5vdGF0aW9uIHBhdGggYW5kIGFuIGVudGl0eSB0eXBlLlxuXHQgKlxuXHQgKiBAcGFyYW0gYW5ub3RhdGlvblBhdGhcblx0ICogQHBhcmFtIGVudGl0eVR5cGVcblx0ICogQHJldHVybnMgVGhlIHJlbGF0aXZlIGFubnRvdGF0aW9uIHBhdGguXG5cdCAqL1xuXHRnZXRSZWxhdGl2ZUFubm90YXRpb25QYXRoKGFubm90YXRpb25QYXRoOiBzdHJpbmcsIGVudGl0eVR5cGU6IEVudGl0eVR5cGUpOiBzdHJpbmcge1xuXHRcdHJldHVybiBhbm5vdGF0aW9uUGF0aC5yZXBsYWNlKGVudGl0eVR5cGUuZnVsbHlRdWFsaWZpZWROYW1lLCBcIlwiKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUcmFuc2Zvcm0gYW4gZW50aXR5VHlwZSBiYXNlZCBwYXRoIHRvIGFuIGVudGl0eVNldCBiYXNlZCBvbmUgKHVpNSB0ZW1wbGF0aW5nIGdlbmVyYWxseSBleHBlY3QgYW4gZW50aXR5U2V0QmFzZWRQYXRoKS5cblx0ICpcblx0ICogQHBhcmFtIGFubm90YXRpb25QYXRoXG5cdCAqIEByZXR1cm5zIFRoZSBFbnRpdHlTZXQgYmFzZWQgYW5ub3RhdGlvbiBwYXRoXG5cdCAqL1xuXHRnZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoKGFubm90YXRpb25QYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdGlmICghYW5ub3RhdGlvblBhdGgpIHtcblx0XHRcdHJldHVybiBhbm5vdGF0aW9uUGF0aDtcblx0XHR9XG5cdFx0Y29uc3QgZW50aXR5VHlwZUZRTiA9IHRoaXMudGFyZ2V0RGF0YU1vZGVsUGF0aC50YXJnZXRFbnRpdHlUeXBlLmZ1bGx5UXVhbGlmaWVkTmFtZTtcblx0XHRpZiAoXG5cdFx0XHR0aGlzLnRhcmdldERhdGFNb2RlbFBhdGgudGFyZ2V0RW50aXR5U2V0IHx8XG5cdFx0XHQoKHRoaXMuYmFzZUNvbnRleHRQYXRoLnN0YXJ0c1dpdGgoXCIvXCIpICYmIHRoaXMuYmFzZUNvbnRleHRQYXRoLm1hdGNoKC9cXC8vZykpIHx8IFtdKS5sZW5ndGggPiAxXG5cdFx0KSB7XG5cdFx0XHRsZXQgcmVwbGFjZWRBbm5vdGF0aW9uUGF0aCA9IGFubm90YXRpb25QYXRoLnJlcGxhY2UoZW50aXR5VHlwZUZRTiwgXCIvXCIpO1xuXHRcdFx0aWYgKHJlcGxhY2VkQW5ub3RhdGlvblBhdGgubGVuZ3RoID4gMiAmJiByZXBsYWNlZEFubm90YXRpb25QYXRoWzBdID09PSBcIi9cIiAmJiByZXBsYWNlZEFubm90YXRpb25QYXRoWzFdID09PSBcIi9cIikge1xuXHRcdFx0XHRyZXBsYWNlZEFubm90YXRpb25QYXRoID0gcmVwbGFjZWRBbm5vdGF0aW9uUGF0aC5zdWJzdHJpbmcoMSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdGhpcy5iYXNlQ29udGV4dFBhdGggKyAocmVwbGFjZWRBbm5vdGF0aW9uUGF0aC5zdGFydHNXaXRoKFwiL1wiKSA/IHJlcGxhY2VkQW5ub3RhdGlvblBhdGggOiBgLyR7cmVwbGFjZWRBbm5vdGF0aW9uUGF0aH1gKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGAvJHthbm5vdGF0aW9uUGF0aH1gO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZSB0aGUgbWFuaWZlc3Qgd3JhcHBlciBmb3IgdGhlIGN1cnJlbnQgY29udGV4dC5cblx0ICpcblx0ICogQHJldHVybnMgVGhlIGN1cnJlbnQgbWFuaWZlc3Qgd3JhcHBlclxuXHQgKi9cblx0Z2V0TWFuaWZlc3RXcmFwcGVyKCk6IE1hbmlmZXN0V3JhcHBlciB7XG5cdFx0cmV0dXJuIHRoaXMubWFuaWZlc3RXcmFwcGVyO1xuXHR9XG5cblx0Z2V0RGlhZ25vc3RpY3MoKTogSURpYWdub3N0aWNzIHtcblx0XHRyZXR1cm4gdGhpcy5kaWFnbm9zdGljcztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZSB0aGUgdGFyZ2V0IGZyb20gYW4gYWJzb2x1dGUgcGF0aC5cblx0ICpcblx0ICogQHBhcmFtIHBhdGggVGhlIHBhdGggd2Ugd2FudCB0byBnZXQgdGhlIHRhcmdldFxuXHQgKiBAcmV0dXJucyBUaGUgYWJzb2x1dGUgcGF0aFxuXHQgKi9cblx0cmVzb2x2ZUFic29sdXRlUGF0aDxUPihwYXRoOiBzdHJpbmcpOiBSZXNvbHV0aW9uVGFyZ2V0PFQ+IHtcblx0XHRyZXR1cm4gdGhpcy5jb252ZXJ0ZWRUeXBlcy5yZXNvbHZlUGF0aChwYXRoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZSBhIG5ldyBjb252ZXJ0ZXIgY29udGV4dCwgc2NvcGVkIGZvciBhIGRpZmZlcmVudCBjb250ZXh0IHBhdGguXG5cdCAqXG5cdCAqIEBwYXJhbSBjb250ZXh0UGF0aCBUaGUgcGF0aCB3ZSB3YW50IHRvIG9yY2hlc3RyYXRlIHRoZSBjb252ZXJ0ZXIgY29udGV4dCBhcm91bmRcblx0ICogQHJldHVybnMgVGhlIGNvbnZlcnRlZCBjb250ZXh0IGZvciB0aGUgc3ViIHBhdGhcblx0ICovXG5cdGdldENvbnZlcnRlckNvbnRleHRGb3I8VD4oY29udGV4dFBhdGg6IHN0cmluZyk6IENvbnZlcnRlckNvbnRleHQge1xuXHRcdGNvbnN0IHJlc29sdmVkTWV0YVBhdGg6IFJlc29sdXRpb25UYXJnZXQ8VD4gPSB0aGlzLmNvbnZlcnRlZFR5cGVzLnJlc29sdmVQYXRoKGNvbnRleHRQYXRoKTtcblx0XHRjb25zdCB0YXJnZXRQYXRoID0gZ2V0RGF0YU1vZGVsUGF0aEZvckVudGl0eVNldChyZXNvbHZlZE1ldGFQYXRoLCB0aGlzLmNvbnZlcnRlZFR5cGVzKTtcblx0XHRyZXR1cm4gbmV3IENvbnZlcnRlckNvbnRleHQodGhpcy5jb252ZXJ0ZWRUeXBlcywgdGhpcy5tYW5pZmVzdFNldHRpbmdzLCB0aGlzLmRpYWdub3N0aWNzLCB0aGlzLm1lcmdlRm4sIHRhcmdldFBhdGgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBhbGwgYW5ub3RhdGlvbnMgb2YgYSBnaXZlbiB0ZXJtIGFuZCB2b2NhYnVsYXJ5IG9uIGFuIGVudGl0eSB0eXBlXG5cdCAqIChvciBvbiB0aGUgY3VycmVudCBlbnRpdHkgdHlwZSBpZiBlbnRpdHlUeXBlIGlzbid0IHNwZWNpZmllZCkuXG5cdCAqXG5cdCAqIEBwYXJhbSB2b2NhYnVsYXJ5TmFtZVxuXHQgKiBAcGFyYW0gYW5ub3RhdGlvblRlcm1cblx0ICogQHBhcmFtIFthbm5vdGF0aW9uU291cmNlc11cblx0ICogQHJldHVybnMgQWxsIHRoZSBhbm5vdGF0aW9uIGZvciBhIHNwZWNpZmljIHRlcm0gYW5kIHZvY2FidWxhcnkgZnJvbSBhbiBlbnRpdHkgdHlwZVxuXHQgKi9cblx0Z2V0QW5ub3RhdGlvbnNCeVRlcm0oXG5cdFx0dm9jYWJ1bGFyeU5hbWU6IGtleW9mIEVudGl0eVR5cGVBbm5vdGF0aW9ucyxcblx0XHRhbm5vdGF0aW9uVGVybTogc3RyaW5nLFxuXHRcdGFubm90YXRpb25Tb3VyY2VzOiAoU2VydmljZU9iamVjdCB8IHVuZGVmaW5lZClbXSA9IFt0aGlzLmdldEVudGl0eVR5cGUoKV1cblx0KTogQW5ub3RhdGlvblRlcm08YW55PltdIHtcblx0XHRsZXQgb3V0QW5ub3RhdGlvbnM6IEFubm90YXRpb25UZXJtPGFueT5bXSA9IFtdO1xuXHRcdGFubm90YXRpb25Tb3VyY2VzLmZvckVhY2goKGFubm90YXRpb25Tb3VyY2UpID0+IHtcblx0XHRcdGlmIChhbm5vdGF0aW9uU291cmNlKSB7XG5cdFx0XHRcdGNvbnN0IGFubm90YXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBBbm5vdGF0aW9uVGVybTxhbnk+PiA9IGFubm90YXRpb25Tb3VyY2U/LmFubm90YXRpb25zW3ZvY2FidWxhcnlOYW1lXSB8fCB7fTtcblx0XHRcdFx0aWYgKGFubm90YXRpb25zKSB7XG5cdFx0XHRcdFx0b3V0QW5ub3RhdGlvbnMgPSBPYmplY3Qua2V5cyhhbm5vdGF0aW9ucylcblx0XHRcdFx0XHRcdC5maWx0ZXIoKGFubm90YXRpb24pID0+IGFubm90YXRpb25zW2Fubm90YXRpb25dLnRlcm0gPT09IGFubm90YXRpb25UZXJtKVxuXHRcdFx0XHRcdFx0LnJlZHVjZSgocHJldmlvdXNWYWx1ZTogQW5ub3RhdGlvblRlcm08YW55PltdLCBrZXk6IHN0cmluZykgPT4ge1xuXHRcdFx0XHRcdFx0XHRwcmV2aW91c1ZhbHVlLnB1c2goYW5ub3RhdGlvbnNba2V5XSk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBwcmV2aW91c1ZhbHVlO1xuXHRcdFx0XHRcdFx0fSwgb3V0QW5ub3RhdGlvbnMpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIG91dEFubm90YXRpb25zO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgcmVsYXRpdmUgbW9kZWwgcGF0aCBiYXNlZCBvbiB0aGUgY3VycmVudCBjb250ZXh0IHBhdGguXG5cdCAqXG5cdCAqIEByZXR1cm5zIFRoZSByZWxhdGl2ZSBtb2RlbCBwYXRoIG9yIHVuZGVmaW5lZCBpZiB0aGUgcGF0aCBpcyBub3QgcmVzb2x2ZWFibGVcblx0ICovXG5cdGdldFJlbGF0aXZlTW9kZWxQYXRoRnVuY3Rpb24oKTogRnVuY3Rpb24ge1xuXHRcdGNvbnN0IHRhcmdldERhdGFNb2RlbFBhdGggPSB0aGlzLnRhcmdldERhdGFNb2RlbFBhdGg7XG5cdFx0cmV0dXJuIGZ1bmN0aW9uIChzUGF0aDogc3RyaW5nKSB7XG5cdFx0XHRjb25zdCBlbmhhbmNlZFBhdGggPSBlbmhhbmNlRGF0YU1vZGVsUGF0aCh0YXJnZXREYXRhTW9kZWxQYXRoLCBzUGF0aCk7XG5cdFx0XHRyZXR1cm4gZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aChlbmhhbmNlZFBhdGgsIHRydWUpO1xuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlIHRoZSBjb252ZXJ0ZXIgY29udGV4dCBuZWNlc3NhcnkgZm9yIGEgbWFjcm8gYmFzZWQgb24gYSBtZXRhbW9kZWwgY29udGV4dC5cblx0ICpcblx0ICogQHBhcmFtIHNFbnRpdHlTZXROYW1lXG5cdCAqIEBwYXJhbSBvTWV0YU1vZGVsQ29udGV4dFxuXHQgKiBAcGFyYW0gZGlhZ25vc3RpY3Ncblx0ICogQHBhcmFtIG1lcmdlRm5cblx0ICogQHBhcmFtIHRhcmdldERhdGFNb2RlbFBhdGhcblx0ICogQHBhcmFtIG1hbmlmZXN0U2V0dGluZ3Ncblx0ICogQHJldHVybnMgVGhlIGN1cnJlbnQgY29udmVydGVyIGNvbnRleHRcblx0ICovXG5cdHN0YXRpYyBjcmVhdGVDb252ZXJ0ZXJDb250ZXh0Rm9yTWFjcm8oXG5cdFx0c0VudGl0eVNldE5hbWU6IHN0cmluZyxcblx0XHRvTWV0YU1vZGVsQ29udGV4dDogQ29udGV4dCB8IE9EYXRhTWV0YU1vZGVsLFxuXHRcdGRpYWdub3N0aWNzOiBJRGlhZ25vc3RpY3MsXG5cdFx0bWVyZ2VGbjogRnVuY3Rpb24sXG5cdFx0dGFyZ2V0RGF0YU1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCB8IHVuZGVmaW5lZCxcblx0XHRtYW5pZmVzdFNldHRpbmdzOiBCYXNlTWFuaWZlc3RTZXR0aW5ncyA9IHt9IGFzIEJhc2VNYW5pZmVzdFNldHRpbmdzXG5cdCk6IENvbnZlcnRlckNvbnRleHQge1xuXHRcdGNvbnN0IG9NZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsID0gb01ldGFNb2RlbENvbnRleHQuaXNBKFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTWV0YU1vZGVsXCIpXG5cdFx0XHQ/IChvTWV0YU1vZGVsQ29udGV4dCBhcyBPRGF0YU1ldGFNb2RlbClcblx0XHRcdDogKChvTWV0YU1vZGVsQ29udGV4dCBhcyBDb250ZXh0KS5nZXRNb2RlbCgpIGFzIHVua25vd24gYXMgT0RhdGFNZXRhTW9kZWwpO1xuXHRcdGNvbnN0IG9Db252ZXJ0ZWRNZXRhZGF0YSA9IGNvbnZlcnRUeXBlcyhvTWV0YU1vZGVsKTtcblx0XHRsZXQgdGFyZ2V0RW50aXR5U2V0OiBTaW5nbGV0b24gfCBFbnRpdHlTZXQgPSBvQ29udmVydGVkTWV0YWRhdGEuZW50aXR5U2V0cy5maW5kKFxuXHRcdFx0KGVudGl0eVNldCkgPT4gZW50aXR5U2V0Lm5hbWUgPT09IHNFbnRpdHlTZXROYW1lXG5cdFx0KSBhcyBFbnRpdHlTZXQ7XG5cdFx0aWYgKCF0YXJnZXRFbnRpdHlTZXQpIHtcblx0XHRcdHRhcmdldEVudGl0eVNldCA9IG9Db252ZXJ0ZWRNZXRhZGF0YS5zaW5nbGV0b25zLmZpbmQoKGVudGl0eVNldCkgPT4gZW50aXR5U2V0Lm5hbWUgPT09IHNFbnRpdHlTZXROYW1lKSBhcyBTaW5nbGV0b247XG5cdFx0fVxuXHRcdGlmICghdGFyZ2V0RGF0YU1vZGVsUGF0aCB8fCB0YXJnZXRFbnRpdHlTZXQgIT09IHRhcmdldERhdGFNb2RlbFBhdGguc3RhcnRpbmdFbnRpdHlTZXQpIHtcblx0XHRcdHRhcmdldERhdGFNb2RlbFBhdGggPSB7XG5cdFx0XHRcdHN0YXJ0aW5nRW50aXR5U2V0OiB0YXJnZXRFbnRpdHlTZXQsXG5cdFx0XHRcdG5hdmlnYXRpb25Qcm9wZXJ0aWVzOiBbXSxcblx0XHRcdFx0dGFyZ2V0RW50aXR5U2V0OiB0YXJnZXRFbnRpdHlTZXQsXG5cdFx0XHRcdHRhcmdldEVudGl0eVR5cGU6IHRhcmdldEVudGl0eVNldC5lbnRpdHlUeXBlLFxuXHRcdFx0XHR0YXJnZXRPYmplY3Q6IHRhcmdldEVudGl0eVNldCxcblx0XHRcdFx0Y29udmVydGVkVHlwZXM6IG9Db252ZXJ0ZWRNZXRhZGF0YVxuXHRcdFx0fTtcblx0XHR9XG5cdFx0cmV0dXJuIG5ldyBDb252ZXJ0ZXJDb250ZXh0KG9Db252ZXJ0ZWRNZXRhZGF0YSwgbWFuaWZlc3RTZXR0aW5ncywgZGlhZ25vc3RpY3MsIG1lcmdlRm4sIHRhcmdldERhdGFNb2RlbFBhdGgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlc29sdmVzIGEgbWV0YWRhdGEgYmluZGluZyB0byBpdHMgdGV4dC5cblx0ICpcblx0ICogQHBhcmFtIHBhdGhcblx0ICpcblx0ICogQHJldHVybnMgVGhlIHJlc29sdmVkIHRleHQgaWYgcG9zc2libGUsIGVsc2UgdGhlIGlucHV0IHZhbHVlIG9yIGFuIGVtcHR5IHN0cmluZyBpZiB0aGUgcGF0aCB3YXMgdW5kZWZpbmVkXG5cdCAqL1xuXHRmZXRjaFRleHRGcm9tTWV0YU1vZGVsKHBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIE1vZGVsSGVscGVyLmZldGNoVGV4dEZyb21NZXRhTW9kZWwocGF0aCwgdGhpcyk7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29udmVydGVyQ29udGV4dDtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7OztFQTZCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQSxNQUFNQSxnQkFBZ0IsR0FBRyxVQUFVQyxlQUE2QyxFQUEwQztJQUN6SCxPQUFPLE9BQU9BLGVBQWUsS0FBSyxRQUFRO0VBQzNDLENBQUM7RUFFRCxNQUFNQyw0QkFBNEIsR0FBRyxVQUNwQ0MsZ0JBQXVDLEVBQ3ZDQyxjQUFpQyxFQUNYO0lBQ3RCLElBQUlDLGFBQW9DO0lBQ3hDLElBQUlDLGdCQUF1QztJQUMzQyxJQUFJQyxpQkFBd0M7SUFDNUMsSUFBSUMsaUJBQXlDO0lBQzdDLElBQUlDLGNBQXdCLEdBQUcsRUFBRTtJQUNqQyxNQUFNQyxvQkFBMEMsR0FBRyxFQUFFO0lBQ3JEUCxnQkFBZ0IsQ0FBQ1EsVUFBVSxDQUFDQyxPQUFPLENBQUVDLFVBQXNDLElBQUs7TUFBQTtNQUMvRSxJQUFJQyxlQUFlLENBQUNELFVBQVUsQ0FBQyxFQUFFO1FBQ2hDLFFBQVFBLFVBQVUsQ0FBQ0UsS0FBSztVQUN2QixLQUFLLG9CQUFvQjtZQUN4Qk4sY0FBYyxDQUFDTyxJQUFJLENBQUNILFVBQVUsQ0FBQ0ksSUFBSSxDQUFDO1lBQ3BDUCxvQkFBb0IsQ0FBQ00sSUFBSSxDQUFDSCxVQUFVLENBQUM7WUFDckNMLGlCQUFpQixHQUFHSyxVQUFVLENBQUNLLFVBQVU7WUFDekMsSUFBSVgsaUJBQWlCLElBQUlBLGlCQUFpQixDQUFDWSx5QkFBeUIsQ0FBQ0MsY0FBYyxDQUFDWCxjQUFjLENBQUNZLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO2NBQzlHZixnQkFBZ0IsR0FBR0MsaUJBQWlCLENBQUNZLHlCQUF5QixDQUFDVixjQUFjLENBQUNZLElB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
|
|
420
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc0Fubm90YXRpb25UZXJtIiwidkFubm90YXRpb25QYXRoIiwiZ2V0RGF0YU1vZGVsUGF0aEZvckVudGl0eVNldCIsInJlc29sdmVkTWV0YVBhdGgiLCJjb252ZXJ0ZWRUeXBlcyIsInJvb3RFbnRpdHlTZXQiLCJjdXJyZW50RW50aXR5U2V0IiwicHJldmlvdXNFbnRpdHlTZXQiLCJjdXJyZW50RW50aXR5VHlwZSIsIm5hdmlnYXRlZFBhdGhzIiwibmF2aWdhdGlvblByb3BlcnRpZXMiLCJvYmplY3RQYXRoIiwiZm9yRWFjaCIsIm9iamVjdFBhcnQiLCJpc1NlcnZpY2VPYmplY3QiLCJfdHlwZSIsInB1c2giLCJuYW1lIiwidGFyZ2V0VHlwZSIsIm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmciLCJoYXNPd25Qcm9wZXJ0eSIsImpvaW4iLCJ1bmRlZmluZWQiLCJlbnRpdHlUeXBlIiwiZGF0YU1vZGVsUGF0aCIsInN0YXJ0aW5nRW50aXR5U2V0IiwidGFyZ2V0RW50aXR5VHlwZSIsInRhcmdldEVudGl0eVNldCIsImNvbnRleHRMb2NhdGlvbiIsInRhcmdldE9iamVjdCIsInRhcmdldCIsIkNvbnZlcnRlckNvbnRleHQiLCJtYW5pZmVzdFNldHRpbmdzIiwiZGlhZ25vc3RpY3MiLCJtZXJnZUZuIiwidGFyZ2V0RGF0YU1vZGVsUGF0aCIsIm1hbmlmZXN0V3JhcHBlciIsIk1hbmlmZXN0V3JhcHBlciIsImJhc2VDb250ZXh0UGF0aCIsImdldFRhcmdldE9iamVjdFBhdGgiLCJfZ2V0RW50aXR5VHlwZUZyb21GdWxseVF1YWxpZmllZE5hbWUiLCJmdWxseVF1YWxpZmllZE5hbWUiLCJlbnRpdHlUeXBlcyIsImZpbmQiLCJzdGFydHNXaXRoIiwicmVwbGFjZUFubm90YXRpb24iLCJyZXBsYWNlIiwiZ2V0QW5ub3RhdGlvbkVudGl0eVR5cGUiLCJhbm5vdGF0aW9uIiwiYW5ub3RhdGlvblBhdGgiLCJFcnJvciIsImdldE1hbmlmZXN0Q29udHJvbENvbmZpZ3VyYXRpb24iLCJnZXRDb250cm9sQ29uZmlndXJhdGlvbiIsImhhc0VudGl0eVNldEtleUluTWFuaWZlc3QiLCJnZXRFbnRpdHlTZXQiLCJsZW5ndGgiLCJoYXNDb250ZXh0UGF0aEtleUluTWFuaWZlc3QiLCJnZXRDb250ZXh0UGF0aCIsImhhc011bHRpcGxlRW50aXR5U2V0cyIsIk9iamVjdCIsImtleXMiLCJnZXRBYnNvbHV0ZUFubm90YXRpb25QYXRoIiwic0Fubm90YXRpb25QYXRoIiwiZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCIsImdldEVudGl0eUNvbnRhaW5lciIsImVudGl0eUNvbnRhaW5lciIsImdldEVudGl0eVR5cGUiLCJnZXRQYXJhbWV0ZXJFbnRpdHlUeXBlIiwicGFyYW1ldGVyRW50aXR5VHlwZSIsImlzUGFyYW1ldGVyaXplZCIsImFubm90YXRpb25zIiwiQ29tbW9uIiwiUmVzdWx0Q29udGV4dCIsImdldEVudGl0eVR5cGVBbm5vdGF0aW9uIiwiaW5jbHVkZXMiLCJpc0Fic29sdXRlIiwicGF0aCIsImJhc2UiLCJzcGxpdCIsImVuZHNXaXRoIiwicmVzb2x2ZUFic29sdXRlUGF0aCIsImRhdGFNb2RlbE9iamVjdFBhdGgiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdEZyb21QYXRoIiwidmlzaXRlZE9iamVjdHMiLCJjb252ZXJ0ZXJDb250ZXh0IiwiZ2V0VGVtcGxhdGVUeXBlIiwiZ2V0Q29udmVydGVkVHlwZXMiLCJnZXRSZWxhdGl2ZUFubm90YXRpb25QYXRoIiwiZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aCIsImVudGl0eVR5cGVGUU4iLCJtYXRjaCIsInJlcGxhY2VkQW5ub3RhdGlvblBhdGgiLCJzdWJzdHJpbmciLCJnZXRNYW5pZmVzdFdyYXBwZXIiLCJnZXREaWFnbm9zdGljcyIsInJlc29sdmVQYXRoIiwiZ2V0Q29udmVydGVyQ29udGV4dEZvciIsImNvbnRleHRQYXRoIiwidGFyZ2V0UGF0aCIsImdldEFubm90YXRpb25zQnlUZXJtIiwidm9jYWJ1bGFyeU5hbWUiLCJhbm5vdGF0aW9uVGVybSIsImFubm90YXRpb25Tb3VyY2VzIiwib3V0QW5ub3RhdGlvbnMiLCJhbm5vdGF0aW9uU291cmNlIiwiZmlsdGVyIiwidGVybSIsInJlZHVjZSIsInByZXZpb3VzVmFsdWUiLCJrZXkiLCJnZXRSZWxhdGl2ZU1vZGVsUGF0aEZ1bmN0aW9uIiwic1BhdGgiLCJlbmhhbmNlZFBhdGgiLCJlbmhhbmNlRGF0YU1vZGVsUGF0aCIsImdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgiLCJjcmVhdGVDb252ZXJ0ZXJDb250ZXh0Rm9yTWFjcm8iLCJzRW50aXR5U2V0TmFtZSIsIm9NZXRhTW9kZWxDb250ZXh0Iiwib01ldGFNb2RlbCIsImlzQSIsImdldE1vZGVsIiwib0NvbnZlcnRlZE1ldGFkYXRhIiwiY29udmVydFR5cGVzIiwiZW50aXR5U2V0cyIsImVudGl0eVNldCIsInNpbmdsZXRvbnMiLCJmZXRjaFRleHRGcm9tTWV0YU1vZGVsIiwiTW9kZWxIZWxwZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkNvbnZlcnRlckNvbnRleHQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuXHRBbm5vdGF0aW9uVGVybSxcblx0Q29udmVydGVkTWV0YWRhdGEsXG5cdEVudGl0eUNvbnRhaW5lcixcblx0RW50aXR5U2V0LFxuXHRFbnRpdHlUeXBlLFxuXHROYXZpZ2F0aW9uUHJvcGVydHksXG5cdFJlc29sdXRpb25UYXJnZXQsXG5cdFNlcnZpY2VPYmplY3QsXG5cdFNlcnZpY2VPYmplY3RBbmRBbm5vdGF0aW9uLFxuXHRTaW5nbGV0b25cbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IFJlY29yZENvbXBsZXhUeXBlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL0VkbVwiO1xuaW1wb3J0IHR5cGUgeyBFbnRpdHlUeXBlQW5ub3RhdGlvbnMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0VkbV9UeXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBCYXNlTWFuaWZlc3RTZXR0aW5ncywgQ29udHJvbE1hbmlmZXN0Q29uZmlndXJhdGlvbiwgVGVtcGxhdGVUeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IE1hbmlmZXN0V3JhcHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFdyYXBwZXJcIjtcbmltcG9ydCB7IGNvbnZlcnRUeXBlcywgZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RGcm9tUGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHR5cGUgeyBJRGlhZ25vc3RpY3MsIFBhZ2VDb250ZXh0UGF0aFRhcmdldCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL1RlbXBsYXRlQ29udmVydGVyXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB7IGlzU2VydmljZU9iamVjdCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1R5cGVHdWFyZHNcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGVuaGFuY2VEYXRhTW9kZWxQYXRoLCBnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoLCBnZXRUYXJnZXRPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcblxuZXhwb3J0IHR5cGUgUmVzb2x2ZWRBbm5vdGF0aW9uQ29udGV4dDxUPiA9IHtcblx0YW5ub3RhdGlvbjogQW5ub3RhdGlvblRlcm08VD4gfCB1bmRlZmluZWQ7XG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0Pjtcbn07XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYW4gb2JqZWN0IGlzIGFuIGFubm90YXRpb24gdGVybS5cbiAqXG4gKiBAcGFyYW0gdkFubm90YXRpb25QYXRoXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgaXQncyBhbiBhbm5vdGF0aW9uIHRlcm1cbiAqL1xuY29uc3QgaXNBbm5vdGF0aW9uVGVybSA9IGZ1bmN0aW9uIDxUPih2QW5ub3RhdGlvblBhdGg6IHN0cmluZyB8IEFubm90YXRpb25UZXJtPFQ+KTogdkFubm90YXRpb25QYXRoIGlzIEFubm90YXRpb25UZXJtPFQ+IHtcblx0cmV0dXJuIHR5cGVvZiB2QW5ub3RhdGlvblBhdGggPT09IFwib2JqZWN0XCI7XG59O1xuXG5jb25zdCBnZXREYXRhTW9kZWxQYXRoRm9yRW50aXR5U2V0ID0gZnVuY3Rpb24gPFQ+KFxuXHRyZXNvbHZlZE1ldGFQYXRoOiBSZXNvbHV0aW9uVGFyZ2V0PFQ+LFxuXHRjb252ZXJ0ZWRUeXBlczogQ29udmVydGVkTWV0YWRhdGFcbik6IERhdGFNb2RlbE9iamVjdFBhdGg8VD4ge1xuXHRsZXQgcm9vdEVudGl0eVNldDogRW50aXR5U2V0IHwgdW5kZWZpbmVkO1xuXHRsZXQgY3VycmVudEVudGl0eVNldDogRW50aXR5U2V0IHwgdW5kZWZpbmVkO1xuXHRsZXQgcHJldmlvdXNFbnRpdHlTZXQ6IEVudGl0eVNldCB8IHVuZGVmaW5lZDtcblx0bGV0IGN1cnJlbnRFbnRpdHlUeXBlOiBFbnRpdHlUeXBlIHwgdW5kZWZpbmVkO1xuXHRsZXQgbmF2aWdhdGVkUGF0aHM6IHN0cmluZ1tdID0gW107XG5cdGNvbnN0IG5hdmlnYXRpb25Qcm9wZXJ0aWVzOiBOYXZpZ2F0aW9uUHJvcGVydHlbXSA9IFtdO1xuXHRyZXNvbHZlZE1ldGFQYXRoLm9iamVjdFBhdGguZm9yRWFjaCgob2JqZWN0UGFydDogU2VydmljZU9iamVjdEFuZEFubm90YXRpb24pID0+IHtcblx0XHRpZiAoaXNTZXJ2aWNlT2JqZWN0KG9iamVjdFBhcnQpKSB7XG5cdFx0XHRzd2l0Y2ggKG9iamVjdFBhcnQuX3R5cGUpIHtcblx0XHRcdFx0Y2FzZSBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiOlxuXHRcdFx0XHRcdG5hdmlnYXRlZFBhdGhzLnB1c2gob2JqZWN0UGFydC5uYW1lKTtcblx0XHRcdFx0XHRuYXZpZ2F0aW9uUHJvcGVydGllcy5wdXNoKG9iamVjdFBhcnQpO1xuXHRcdFx0XHRcdGN1cnJlbnRFbnRpdHlUeXBlID0gb2JqZWN0UGFydC50YXJnZXRUeXBlO1xuXHRcdFx0XHRcdGlmIChwcmV2aW91c0VudGl0eVNldCAmJiBwcmV2aW91c0VudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nLmhhc093blByb3BlcnR5KG5hdmlnYXRlZFBhdGhzLmpvaW4oXCIvXCIpKSkge1xuXHRcdFx0XHRcdFx0Y3VycmVudEVudGl0eVNldCA9IHByZXZpb3VzRW50aXR5U2V0Lm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdbbmF2aWdhdGVkUGF0aHMuam9pbihcIi9cIildIGFzIEVudGl0eVNldDtcblx0XHRcdFx0XHRcdHByZXZpb3VzRW50aXR5U2V0ID0gY3VycmVudEVudGl0eVNldDtcblx0XHRcdFx0XHRcdG5hdmlnYXRlZFBhdGhzID0gW107XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGN1cnJlbnRFbnRpdHlTZXQgPSB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIFwiRW50aXR5U2V0XCI6XG5cdFx0XHRcdFx0aWYgKHJvb3RFbnRpdHlTZXQgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdFx0cm9vdEVudGl0eVNldCA9IG9iamVjdFBhcnQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGN1cnJlbnRFbnRpdHlTZXQgPSBvYmplY3RQYXJ0O1xuXHRcdFx0XHRcdHByZXZpb3VzRW50aXR5U2V0ID0gY3VycmVudEVudGl0eVNldDtcblx0XHRcdFx0XHRjdXJyZW50RW50aXR5VHlwZSA9IGN1cnJlbnRFbnRpdHlTZXQ/LmVudGl0eVR5cGU7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHR9KTtcblx0Y29uc3QgZGF0YU1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxUPiA9IHtcblx0XHRzdGFydGluZ0VudGl0eVNldDogcm9vdEVudGl0eVNldCBhcyBFbnRpdHlTZXQsXG5cdFx0dGFyZ2V0RW50aXR5VHlwZTogY3VycmVudEVudGl0eVR5cGUgYXMgRW50aXR5VHlwZSxcblx0XHR0YXJnZXRFbnRpdHlTZXQ6IGN1cnJlbnRFbnRpdHlTZXQsXG5cdFx0bmF2aWdhdGlvblByb3BlcnRpZXM6IG5hdmlnYXRpb25Qcm9wZXJ0aWVzLFxuXHRcdGNvbnRleHRMb2NhdGlvbjogdW5kZWZpbmVkLFxuXHRcdHRhcmdldE9iamVjdDogcmVzb2x2ZWRNZXRhUGF0aC50YXJnZXQsXG5cdFx0Y29udmVydGVkVHlwZXM6IGNvbnZlcnRlZFR5cGVzXG5cdH07XG5cdGRhdGFNb2RlbFBhdGguY29udGV4dExvY2F0aW9uID0gZGF0YU1vZGVsUGF0aDtcblx0cmV0dXJuIGRhdGFNb2RlbFBhdGg7XG59O1xuXG4vKipcbiAqIENyZWF0ZSBhIENvbnZlcnRlckNvbnRleHQgb2JqZWN0IHRoYXQgd2lsbCBiZSB1c2VkIHdpdGhpbiB0aGUgY29udmVydGVycy5cbiAqXG4gKiBAcGFyYW0ge0NvbnZlcnRlZE1ldGFkYXRhfSBvQ29udmVydGVkVHlwZXMgVGhlIGNvbnZlcnRlZCBhbm5vdGF0aW9uIGFuZCBzZXJ2aWNlIHR5cGVzXG4gKiBAcGFyYW0ge0Jhc2VNYW5pZmVzdFNldHRpbmdzfSBvTWFuaWZlc3RTZXR0aW5ncyBUaGUgbWFuaWZlc3RTZXR0aW5ncyB0aGF0IGFwcGxpZXMgdG8gdGhpcyBwYWdlXG4gKiBAcGFyYW0ge1RlbXBsYXRlVHlwZX0gdGVtcGxhdGVUeXBlIFRoZSB0eXBlIG9mIHRlbXBsYXRlIHdlJ3JlIGxvb2tpbmcgYXQgcmlnaHQgbm93XG4gKiBAcGFyYW0ge0lEaWFnbm9zdGljc30gZGlhZ25vc3RpY3MgVGhlIGRpYWdub3N0aWNzIHNoaW1cbiAqIEBwYXJhbSB7RnVuY3Rpb259IG1lcmdlRm4gVGhlIGZ1bmN0aW9uIHRvIGJlIHVzZWQgdG8gcGVyZm9tIHNvbWUgZGVlcCBtZXJnZXMgYmV0d2VlbiBvYmplY3RcbiAqIEBwYXJhbSB7RGF0YU1vZGVsT2JqZWN0UGF0aH0gdGFyZ2V0RGF0YU1vZGVsUGF0aCBUaGUgZ2xvYmFsIHBhdGggdG8gcmVhY2ggdGhlIGVudGl0eVNldFxuICogQHJldHVybnMge0NvbnZlcnRlckNvbnRleHR9IEEgY29udmVydGVyIGNvbnRleHQgZm9yIHRoZSBjb252ZXJ0ZXJzXG4gKi9cbmNsYXNzIENvbnZlcnRlckNvbnRleHQ8VCA9IFBhZ2VDb250ZXh0UGF0aFRhcmdldD4ge1xuXHRwcml2YXRlIG1hbmlmZXN0V3JhcHBlcjogTWFuaWZlc3RXcmFwcGVyO1xuXG5cdHByaXZhdGUgYmFzZUNvbnRleHRQYXRoOiBzdHJpbmc7XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0cHJpdmF0ZSBjb252ZXJ0ZWRUeXBlczogQ29udmVydGVkTWV0YWRhdGEsXG5cdFx0cHJpdmF0ZSBtYW5pZmVzdFNldHRpbmdzOiBCYXNlTWFuaWZlc3RTZXR0aW5ncyxcblx0XHRwcml2YXRlIGRpYWdub3N0aWNzOiBJRGlhZ25vc3RpY3MsXG5cdFx0cHJpdmF0ZSBtZXJnZUZuOiBGdW5jdGlvbixcblx0XHRwcml2YXRlIHRhcmdldERhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8VD5cblx0KSB7XG5cdFx0dGhpcy5tYW5pZmVzdFdyYXBwZXIgPSBuZXcgTWFuaWZlc3RXcmFwcGVyKHRoaXMubWFuaWZlc3RTZXR0aW5ncywgbWVyZ2VGbik7XG5cdFx0dGhpcy5iYXNlQ29udGV4dFBhdGggPSBnZXRUYXJnZXRPYmplY3RQYXRoKHRoaXMudGFyZ2V0RGF0YU1vZGVsUGF0aCk7XG5cdH1cblxuXHRwcml2YXRlIF9nZXRFbnRpdHlUeXBlRnJvbUZ1bGx5UXVhbGlmaWVkTmFtZShmdWxseVF1YWxpZmllZE5hbWU6IHN0cmluZyk6IEVudGl0eVR5cGUgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLmNvbnZlcnRlZFR5cGVzLmVudGl0eVR5cGVzLmZpbmQoKGVudGl0eVR5cGUpID0+IHtcblx0XHRcdGlmIChmdWxseVF1YWxpZmllZE5hbWUuc3RhcnRzV2l0aChlbnRpdHlUeXBlLmZ1bGx5UXVhbGlmaWVkTmFtZSkpIHtcblx0XHRcdFx0Y29uc3QgcmVwbGFjZUFubm90YXRpb24gPSBmdWxseVF1YWxpZmllZE5hbWUucmVwbGFjZShlbnRpdHlUeXBlLmZ1bGx5UXVhbGlmaWVkTmFtZSwgXCJcIik7XG5cdFx0XHRcdHJldHVybiByZXBsYWNlQW5ub3RhdGlvbi5zdGFydHNXaXRoKFwiL1wiKSB8fCByZXBsYWNlQW5ub3RhdGlvbi5zdGFydHNXaXRoKFwiQFwiKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZSB0aGUgZW50aXR5VHlwZSBhc3NvY2lhdGVkIHdpdGggYW4gYW5ub3RhdGlvbiBvYmplY3QuXG5cdCAqXG5cdCAqIEBwYXJhbSBhbm5vdGF0aW9uIFRoZSBhbm5vdGF0aW9uIG9iamVjdCBmb3Igd2hpY2ggd2Ugd2FudCB0byBmaW5kIHRoZSBlbnRpdHlUeXBlXG5cdCAqIEByZXR1cm5zIFRoZSBFbnRpdHlUeXBlIHRoZSBhbm5vdGF0aW9uIHJlZmVycyB0b1xuXHQgKi9cblx0Z2V0QW5ub3RhdGlvbkVudGl0eVR5cGU8VCBleHRlbmRzIFNlcnZpY2VPYmplY3RBbmRBbm5vdGF0aW9uPihcblx0XHRhbm5vdGF0aW9uPzogVCBleHRlbmRzIFNlcnZpY2VPYmplY3QgPyBUIDogQW5ub3RhdGlvblRlcm08VD5cblx0KTogRW50aXR5VHlwZSB7XG5cdFx0aWYgKGFubm90YXRpb24gJiYgdHlwZW9mIGFubm90YXRpb24gPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdGNvbnN0IGFubm90YXRpb25QYXRoID0gYW5ub3RhdGlvbi5mdWxseVF1YWxpZmllZE5hbWU7XG5cdFx0XHRjb25zdCB0YXJnZXRFbnRpdHlUeXBlID0gdGhpcy5fZ2V0RW50aXR5VHlwZUZyb21GdWxseVF1YWxpZmllZE5hbWUoYW5ub3RhdGlvblBhdGgpO1xuXHRcdFx0aWYgKCF0YXJnZXRFbnRpdHlUeXBlKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgRW50aXR5IFR5cGUgZm9yICR7YW5ub3RhdGlvbi5mdWxseVF1YWxpZmllZE5hbWV9YCk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdGFyZ2V0RW50aXR5VHlwZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHRoaXMudGFyZ2V0RGF0YU1vZGVsUGF0aC50YXJnZXRFbnRpdHlUeXBlO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZSB0aGUgbWFuaWZlc3Qgc2V0dGluZ3MgZGVmaW5lZCBmb3IgYSBzcGVjaWZpYyBjb250cm9sIHdpdGhpbiBjb250cm9sQ29uZmlndXJhdGlvbi5cblx0ICpcblx0ICogQHBhcmFtIGFubm90YXRpb25QYXRoIFRoZSBhbm5vdGF0aW9uIHBhdGggb3Igb2JqZWN0IHRvIGV2YWx1YXRlXG5cdCAqIEByZXR1cm5zIFRoZSBjb250cm9sIGNvbmZpZ3VyYXRpb24gZm9yIHRoYXQgc3BlY2lmaWMgYW5ub3RhdGlvbiBwYXRoIGlmIGl0IGV4aXN0c1xuXHQgKi9cblx0Z2V0TWFuaWZlc3RDb250cm9sQ29uZmlndXJhdGlvbjxUID0gQ29udHJvbE1hbmlmZXN0Q29uZmlndXJhdGlvbj4oYW5ub3RhdGlvblBhdGg6IHN0cmluZyB8IEFubm90YXRpb25UZXJtPHVua25vd24+KTogVCB7XG5cdFx0aWYgKGlzQW5ub3RhdGlvblRlcm0oYW5ub3RhdGlvblBhdGgpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5tYW5pZmVzdFdyYXBwZXIuZ2V0Q29udHJvbENvbmZpZ3VyYXRpb248VD4oXG5cdFx0XHRcdGFubm90YXRpb25QYXRoLmZ1bGx5UXVhbGlmaWVkTmFtZS5yZXBsYWNlKHRoaXMudGFyZ2V0RGF0YU1vZGVsUGF0aC50YXJnZXRFbnRpdHlUeXBlLmZ1bGx5UXVhbGlmaWVkTmFtZSwgXCJcIilcblx0XHRcdCk7XG5cdFx0fVxuXHRcdGNvbnN0IGhhc0VudGl0eVNldEtleUluTWFuaWZlc3QgPVxuXHRcdFx0dHlwZW9mIHRoaXMubWFuaWZlc3RXcmFwcGVyLmdldEVudGl0eVNldCgpID09PSBcInN0cmluZ1wiICYmIHRoaXMubWFuaWZlc3RXcmFwcGVyLmdldEVudGl0eVNldCgpIS5sZW5ndGggPiAwO1xuXHRcdGNvbnN0IGhhc0NvbnRleHRQYXRoS2V5SW5NYW5pZmVzdCA9XG5cdFx0XHR0eXBlb2YgdGhpcy5tYW5pZmVzdFdyYXBwZXIuZ2V0Q29udGV4dFBhdGgoKSA9PT0gXCJzdHJpbmdcIiAmJiB0aGlzLm1hbmlmZXN0V3JhcHBlci5nZXRDb250ZXh0UGF0aCgpIS5sZW5ndGggPiAwO1xuXHRcdC8vIEluIGNhc2Ugb2YgbXVsdGlwbGUtZW50aXR5U2V0LCB3ZSBjb21wYXJlIHRoZSBlbnRpdHkgc2V0IG9mIHRoZSBDb250cm9sQ29uZmlndXJhdGlvbiB3aXRoIHdoYXQgaXMgc3BlY2lmaWVkIGVpdGhlciBpbiB0aGUgJ2VudGl0eVNldCcgb3IgJ2NvbnRleHRQYXRoJyBtYW5pZmVzdCBzZXR0aW5nLlxuXHRcdGlmICghdGhpcy5tYW5pZmVzdFdyYXBwZXIuaGFzTXVsdGlwbGVFbnRpdHlTZXRzKCkpIHtcblx0XHRcdHJldHVybiB0aGlzLm1hbmlmZXN0V3JhcHBlci5nZXRDb250cm9sQ29uZmlndXJhdGlvbihhbm5vdGF0aW9uUGF0aCk7XG5cdFx0fSBlbHNlIGlmIChcblx0XHRcdChoYXNFbnRpdHlTZXRLZXlJbk1hbmlmZXN0ICYmIHRoaXMuYmFzZUNvbnRleHRQYXRoICE9PSBgLyR7dGhpcy5tYW5pZmVzdFdyYXBwZXIuZ2V0RW50aXR5U2V0KCl9YCkgfHxcblx0XHRcdChoYXNDb250ZXh0UGF0aEtleUluTWFuaWZlc3QgJiYgdGhpcy5iYXNlQ29udGV4dFBhdGggIT09IHRoaXMubWFuaWZlc3RXcmFwcGVyLmdldENvbnRleHRQYXRoKCkpXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5tYW5pZmVzdFdyYXBwZXIuZ2V0Q29udHJvbENvbmZpZ3VyYXRpb248VD4oYCR7dGhpcy5iYXNlQ29udGV4dFBhdGh9LyR7YW5ub3RhdGlvblBhdGh9YCk7XG5cdFx0fSBlbHNlIGlmIChPYmplY3Qua2V5cyh0aGlzLm1hbmlmZXN0V3JhcHBlci5nZXRDb250cm9sQ29uZmlndXJhdGlvbihhbm5vdGF0aW9uUGF0aCkpLmxlbmd0aCA+IDApIHtcblx0XHRcdHJldHVybiB0aGlzLm1hbmlmZXN0V3JhcHBlci5nZXRDb250cm9sQ29uZmlndXJhdGlvbihhbm5vdGF0aW9uUGF0aCk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLm1hbmlmZXN0V3JhcHBlci5nZXRDb250cm9sQ29uZmlndXJhdGlvbihgJHt0aGlzLmJhc2VDb250ZXh0UGF0aH0vJHthbm5vdGF0aW9uUGF0aH1gKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGUgYW4gYWJzb2x1dGUgYW5ub3RhdGlvbiBwYXRoIGJhc2VkIG9uIHRoZSBjdXJyZW50IG1ldGEgbW9kZWwgY29udGV4dC5cblx0ICpcblx0ICogQHBhcmFtIHNBbm5vdGF0aW9uUGF0aCBUaGUgcmVsYXRpdmUgYW5ub3RhdGlvbiBwYXRoXG5cdCAqIEByZXR1cm5zIFRoZSBjb3JyZWN0IGFubm90YXRpb24gcGF0aCBiYXNlZCBvbiB0aGUgY3VycmVudCBjb250ZXh0XG5cdCAqL1xuXHRnZXRBYnNvbHV0ZUFubm90YXRpb25QYXRoKHNBbm5vdGF0aW9uUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRpZiAoIXNBbm5vdGF0aW9uUGF0aCkge1xuXHRcdFx0cmV0dXJuIHNBbm5vdGF0aW9uUGF0aDtcblx0XHR9XG5cdFx0aWYgKHNBbm5vdGF0aW9uUGF0aFswXSA9PT0gXCIvXCIpIHtcblx0XHRcdHJldHVybiBzQW5ub3RhdGlvblBhdGg7XG5cdFx0fVxuXHRcdHJldHVybiBgJHt0aGlzLmJhc2VDb250ZXh0UGF0aH0vJHtzQW5ub3RhdGlvblBhdGh9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZSB0aGUgY3VycmVudCBlbnRpdHlTZXQuXG5cdCAqXG5cdCAqIEByZXR1cm5zIFRoZSBjdXJyZW50IEVudGl0eVNldCBpZiBpdCBleGlzdHMuXG5cdCAqL1xuXHRnZXRFbnRpdHlTZXQoKTogRW50aXR5U2V0IHwgU2luZ2xldG9uIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy50YXJnZXREYXRhTW9kZWxQYXRoLnRhcmdldEVudGl0eVNldCBhcyBFbnRpdHlTZXQgfCBTaW5nbGV0b247XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmUgdGhlIGNvbnRleHQgcGF0aC5cblx0ICpcblx0ICogQHJldHVybnMgVGhlIGNvbnRleHQgcGF0aCBvZiB0aGUgY29udmVydGVyLlxuXHQgKi9cblx0Z2V0Q29udGV4dFBhdGgoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5iYXNlQ29udGV4dFBhdGg7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmUgdGhlIGN1cnJlbnQgZGF0YSBtb2RlbCBvYmplY3QgcGF0aC5cblx0ICpcblx0ICogQHJldHVybnMgVGhlIGN1cnJlbnQgZGF0YSBtb2RlbCBvYmplY3QgcGF0aFxuXHQgKi9cblx0Z2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpOiBEYXRhTW9kZWxPYmplY3RQYXRoPFQ+IHtcblx0XHRyZXR1cm4gdGhpcy50YXJnZXREYXRhTW9kZWxQYXRoO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgRW50aXR5Q29udGFpbmVyLlxuXHQgKlxuXHQgKiBAcmV0dXJucyBUaGUgY3VycmVudCBzZXJ2aWNlIEVudGl0eUNvbnRhaW5lclxuXHQgKi9cblx0Z2V0RW50aXR5Q29udGFpbmVyKCk6IEVudGl0eUNvbnRhaW5lciB7XG5cdFx0cmV0dXJuIHRoaXMuY29udmVydGVkVHlwZXMuZW50aXR5Q29udGFpbmVyO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgRW50aXR5VHlwZSBiYXNlZCBvbiB0aGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUuXG5cdCAqXG5cdCAqIEByZXR1cm5zIFRoZSBjdXJyZW50IEVudGl0eVR5cGUuXG5cdCAqL1xuXHRnZXRFbnRpdHlUeXBlKCk6IEVudGl0eVR5cGUge1xuXHRcdHJldHVybiB0aGlzLnRhcmdldERhdGFNb2RlbFBhdGgudGFyZ2V0RW50aXR5VHlwZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBlbnRpdHkgdHlwZSBvZiB0aGUgcGFyYW1ldGVyIGluIGNhc2Ugb2YgYSBwYXJhbWV0ZXJpemVkIHNlcnZpY2UuXG5cdCAqXG5cdCAqIEByZXR1cm5zIFRoZSBlbnRpdHkgdHlwZSBvZiB0aGUgcGFyYW1ldGVyXG5cdCAqL1xuXHRnZXRQYXJhbWV0ZXJFbnRpdHlUeXBlKCk6IEVudGl0eVR5cGUge1xuXHRcdGNvbnN0IHBhcmFtZXRlckVudGl0eVR5cGUgPSB0aGlzLnRhcmdldERhdGFNb2RlbFBhdGguc3RhcnRpbmdFbnRpdHlTZXQuZW50aXR5VHlwZTtcblx0XHRjb25zdCBpc1BhcmFtZXRlcml6ZWQgPSAhIXBhcmFtZXRlckVudGl0eVR5cGUuYW5ub3RhdGlvbnM/LkNvbW1vbj8uUmVzdWx0Q29udGV4dDtcblx0XHRyZXR1cm4gKGlzUGFyYW1ldGVyaXplZCAmJiBwYXJhbWV0ZXJFbnRpdHlUeXBlKSBhcyBFbnRpdHlUeXBlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyBhbiBhbm5vdGF0aW9uIGZyb20gYW4gZW50aXR5IHR5cGUgYmFzZWQgb24gYW5ub3RhdGlvbiBwYXRoLlxuXHQgKlxuXHQgKiBAcGFyYW0gYW5ub3RhdGlvblBhdGggVGhlIGFubm90YXRpb24gcGF0aCB0byBiZSBldmFsdWF0ZWRcblx0ICogQHJldHVybnMgVGhlIHRhcmdldCBhbm5vdGF0aW9uIHBhdGggYXMgd2VsbCBhcyBhIGNvbnZlcnRlciBjb250ZXh0IHRvIGdvIHdpdGggaXRcblx0ICovXG5cdGdldEVudGl0eVR5cGVBbm5vdGF0aW9uPFQgZXh0ZW5kcyBTZXJ2aWNlT2JqZWN0IHwgUmVjb3JkQ29tcGxleFR5cGU+KGFubm90YXRpb25QYXRoOiBzdHJpbmcpOiBSZXNvbHZlZEFubm90YXRpb25Db250ZXh0PFQ+IHtcblx0XHRpZiAoIWFubm90YXRpb25QYXRoLmluY2x1ZGVzKFwiQFwiKSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBOb3QgYW4gYW5ub3RhdGlvbiBwYXRoOiAnJHthbm5vdGF0aW9uUGF0aH0nYCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgaXNBYnNvbHV0ZSA9IGFubm90YXRpb25QYXRoLnN0YXJ0c1dpdGgoXCIvXCIpO1xuXHRcdGxldCBwYXRoOiBzdHJpbmc7XG5cblx0XHRpZiAoaXNBYnNvbHV0ZSkge1xuXHRcdFx0Ly8gcGF0aCBjYW4gYmUgdXNlZCBhcy1pc1xuXHRcdFx0cGF0aCA9IGFubm90YXRpb25QYXRoO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBidWlsZCBhbiBhYnNvbHV0ZSBwYXRoIGJhc2VkIG9uIHRoZSBlbnRpdHkgdHlwZSAodGhpcyBmdW5jdGlvbiB3b3JrcyBvbiB0aGUgdHlwZSEpXG5cdFx0XHRjb25zdCBiYXNlID0gdGhpcy5nZXRDb250ZXh0UGF0aCgpLnNwbGl0KFwiQFwiLCAxKVswXTtcblx0XHRcdHBhdGggPSBiYXNlLmVuZHNXaXRoKFwiL1wiKSA/IGJhc2UgKyBhbm5vdGF0aW9uUGF0aCA6IGAke2Jhc2V9LyR7YW5ub3RhdGlvblBhdGh9YDtcblx0XHR9XG5cblx0XHRjb25zdCB0YXJnZXQ6IFJlc29sdXRpb25UYXJnZXQ8QW5ub3RhdGlvblRlcm08VD4+ID0gdGhpcy5yZXNvbHZlQWJzb2x1dGVQYXRoKHBhdGgpO1xuXG5cdFx0Y29uc3QgZGF0YU1vZGVsT2JqZWN0UGF0aCA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0RnJvbVBhdGg8UGFnZUNvbnRleHRQYXRoVGFyZ2V0Pihcblx0XHRcdHsgdGFyZ2V0OiB0YXJnZXQudGFyZ2V0IGFzIFNlcnZpY2VPYmplY3QsIHZpc2l0ZWRPYmplY3RzOiB0YXJnZXQub2JqZWN0UGF0aCB9LFxuXHRcdFx0dGhpcy5jb252ZXJ0ZWRUeXBlcyxcblx0XHRcdGlzQWJzb2x1dGUgPyB1bmRlZmluZWQgOiB0aGlzLnRhcmdldERhdGFNb2RlbFBhdGguY29udGV4dExvY2F0aW9uLFxuXHRcdFx0dHJ1ZVxuXHRcdCk7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0YW5ub3RhdGlvbjogdGFyZ2V0LnRhcmdldCxcblx0XHRcdGNvbnZlcnRlckNvbnRleHQ6IG5ldyBDb252ZXJ0ZXJDb250ZXh0KFxuXHRcdFx0XHR0aGlzLmNvbnZlcnRlZFR5cGVzLFxuXHRcdFx0XHR0aGlzLm1hbmlmZXN0U2V0dGluZ3MsXG5cdFx0XHRcdHRoaXMuZGlhZ25vc3RpY3MsXG5cdFx0XHRcdHRoaXMubWVyZ2VGbixcblx0XHRcdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aFxuXHRcdFx0KVxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmUgdGhlIHR5cGUgb2YgdGVtcGxhdGUgd2UncmUgd29ya2luZyBvbiAoZS5nLiBMaXN0UmVwb3J0IC8gT2JqZWN0UGFnZSAvIC4uLikuXG5cdCAqXG5cdCAqIEByZXR1cm5zIFRoZSBjdXJyZW50IHRlbnBsYXRlIHR5cGVcblx0ICovXG5cdGdldFRlbXBsYXRlVHlwZSgpOiBUZW1wbGF0ZVR5cGUge1xuXHRcdHJldHVybiB0aGlzLm1hbmlmZXN0V3JhcHBlci5nZXRUZW1wbGF0ZVR5cGUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZSB0aGUgY29udmVydGVkIHR5cGVzLlxuXHQgKlxuXHQgKiBAcmV0dXJucyBUaGUgY3VycmVudCBjb252ZXJ0ZWQgdHlwZXNcblx0ICovXG5cdGdldENvbnZlcnRlZFR5cGVzKCk6IENvbnZlcnRlZE1ldGFkYXRhIHtcblx0XHRyZXR1cm4gdGhpcy5jb252ZXJ0ZWRUeXBlcztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZSBhIHJlbGF0aXZlIGFubm90YXRpb24gcGF0aCBiZXR3ZWVuIGFuIGFubm90YXRpb24gcGF0aCBhbmQgYW4gZW50aXR5IHR5cGUuXG5cdCAqXG5cdCAqIEBwYXJhbSBhbm5vdGF0aW9uUGF0aFxuXHQgKiBAcGFyYW0gZW50aXR5VHlwZVxuXHQgKiBAcmV0dXJucyBUaGUgcmVsYXRpdmUgYW5udG90YXRpb24gcGF0aC5cblx0ICovXG5cdGdldFJlbGF0aXZlQW5ub3RhdGlvblBhdGgoYW5ub3RhdGlvblBhdGg6IHN0cmluZywgZW50aXR5VHlwZTogRW50aXR5VHlwZSk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGFubm90YXRpb25QYXRoLnJlcGxhY2UoZW50aXR5VHlwZS5mdWxseVF1YWxpZmllZE5hbWUsIFwiXCIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRyYW5zZm9ybSBhbiBlbnRpdHlUeXBlIGJhc2VkIHBhdGggdG8gYW4gZW50aXR5U2V0IGJhc2VkIG9uZSAodWk1IHRlbXBsYXRpbmcgZ2VuZXJhbGx5IGV4cGVjdCBhbiBlbnRpdHlTZXRCYXNlZFBhdGgpLlxuXHQgKlxuXHQgKiBAcGFyYW0gYW5ub3RhdGlvblBhdGhcblx0ICogQHJldHVybnMgVGhlIEVudGl0eVNldCBiYXNlZCBhbm5vdGF0aW9uIHBhdGhcblx0ICovXG5cdGdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoYW5ub3RhdGlvblBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0aWYgKCFhbm5vdGF0aW9uUGF0aCkge1xuXHRcdFx0cmV0dXJuIGFubm90YXRpb25QYXRoO1xuXHRcdH1cblx0XHRjb25zdCBlbnRpdHlUeXBlRlFOID0gdGhpcy50YXJnZXREYXRhTW9kZWxQYXRoLnRhcmdldEVudGl0eVR5cGUuZnVsbHlRdWFsaWZpZWROYW1lO1xuXHRcdGlmIChcblx0XHRcdHRoaXMudGFyZ2V0RGF0YU1vZGVsUGF0aC50YXJnZXRFbnRpdHlTZXQgfHxcblx0XHRcdCgodGhpcy5iYXNlQ29udGV4dFBhdGguc3RhcnRzV2l0aChcIi9cIikgJiYgdGhpcy5iYXNlQ29udGV4dFBhdGgubWF0Y2goL1xcLy9nKSkgfHwgW10pLmxlbmd0aCA+IDFcblx0XHQpIHtcblx0XHRcdGxldCByZXBsYWNlZEFubm90YXRpb25QYXRoID0gYW5ub3RhdGlvblBhdGgucmVwbGFjZShlbnRpdHlUeXBlRlFOLCBcIi9cIik7XG5cdFx0XHRpZiAocmVwbGFjZWRBbm5vdGF0aW9uUGF0aC5sZW5ndGggPiAyICYmIHJlcGxhY2VkQW5ub3RhdGlvblBhdGhbMF0gPT09IFwiL1wiICYmIHJlcGxhY2VkQW5ub3RhdGlvblBhdGhbMV0gPT09IFwiL1wiKSB7XG5cdFx0XHRcdHJlcGxhY2VkQW5ub3RhdGlvblBhdGggPSByZXBsYWNlZEFubm90YXRpb25QYXRoLnN1YnN0cmluZygxKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB0aGlzLmJhc2VDb250ZXh0UGF0aCArIChyZXBsYWNlZEFubm90YXRpb25QYXRoLnN0YXJ0c1dpdGgoXCIvXCIpID8gcmVwbGFjZWRBbm5vdGF0aW9uUGF0aCA6IGAvJHtyZXBsYWNlZEFubm90YXRpb25QYXRofWApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gYC8ke2Fubm90YXRpb25QYXRofWA7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlIHRoZSBtYW5pZmVzdCB3cmFwcGVyIGZvciB0aGUgY3VycmVudCBjb250ZXh0LlxuXHQgKlxuXHQgKiBAcmV0dXJucyBUaGUgY3VycmVudCBtYW5pZmVzdCB3cmFwcGVyXG5cdCAqL1xuXHRnZXRNYW5pZmVzdFdyYXBwZXIoKTogTWFuaWZlc3RXcmFwcGVyIHtcblx0XHRyZXR1cm4gdGhpcy5tYW5pZmVzdFdyYXBwZXI7XG5cdH1cblxuXHRnZXREaWFnbm9zdGljcygpOiBJRGlhZ25vc3RpY3Mge1xuXHRcdHJldHVybiB0aGlzLmRpYWdub3N0aWNzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlIHRoZSB0YXJnZXQgZnJvbSBhbiBhYnNvbHV0ZSBwYXRoLlxuXHQgKlxuXHQgKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCB3ZSB3YW50IHRvIGdldCB0aGUgdGFyZ2V0XG5cdCAqIEByZXR1cm5zIFRoZSBhYnNvbHV0ZSBwYXRoXG5cdCAqL1xuXHRyZXNvbHZlQWJzb2x1dGVQYXRoPFQ+KHBhdGg6IHN0cmluZyk6IFJlc29sdXRpb25UYXJnZXQ8VD4ge1xuXHRcdHJldHVybiB0aGlzLmNvbnZlcnRlZFR5cGVzLnJlc29sdmVQYXRoKHBhdGgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlIGEgbmV3IGNvbnZlcnRlciBjb250ZXh0LCBzY29wZWQgZm9yIGEgZGlmZmVyZW50IGNvbnRleHQgcGF0aC5cblx0ICpcblx0ICogQHBhcmFtIGNvbnRleHRQYXRoIFRoZSBwYXRoIHdlIHdhbnQgdG8gb3JjaGVzdHJhdGUgdGhlIGNvbnZlcnRlciBjb250ZXh0IGFyb3VuZFxuXHQgKiBAcmV0dXJucyBUaGUgY29udmVydGVkIGNvbnRleHQgZm9yIHRoZSBzdWIgcGF0aFxuXHQgKi9cblx0Z2V0Q29udmVydGVyQ29udGV4dEZvcjxLPihjb250ZXh0UGF0aDogc3RyaW5nKTogQ29udmVydGVyQ29udGV4dDxLPiB7XG5cdFx0Y29uc3QgcmVzb2x2ZWRNZXRhUGF0aDogUmVzb2x1dGlvblRhcmdldDxLPiA9IHRoaXMuY29udmVydGVkVHlwZXMucmVzb2x2ZVBhdGg8Sz4oY29udGV4dFBhdGgpO1xuXHRcdGNvbnN0IHRhcmdldFBhdGggPSBnZXREYXRhTW9kZWxQYXRoRm9yRW50aXR5U2V0KHJlc29sdmVkTWV0YVBhdGgsIHRoaXMuY29udmVydGVkVHlwZXMpO1xuXHRcdHJldHVybiBuZXcgQ29udmVydGVyQ29udGV4dDxLPih0aGlzLmNvbnZlcnRlZFR5cGVzLCB0aGlzLm1hbmlmZXN0U2V0dGluZ3MsIHRoaXMuZGlhZ25vc3RpY3MsIHRoaXMubWVyZ2VGbiwgdGFyZ2V0UGF0aCk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IGFsbCBhbm5vdGF0aW9ucyBvZiBhIGdpdmVuIHRlcm0gYW5kIHZvY2FidWxhcnkgb24gYW4gZW50aXR5IHR5cGVcblx0ICogKG9yIG9uIHRoZSBjdXJyZW50IGVudGl0eSB0eXBlIGlmIGVudGl0eVR5cGUgaXNuJ3Qgc3BlY2lmaWVkKS5cblx0ICpcblx0ICogQHBhcmFtIHZvY2FidWxhcnlOYW1lXG5cdCAqIEBwYXJhbSBhbm5vdGF0aW9uVGVybVxuXHQgKiBAcGFyYW0gW2Fubm90YXRpb25Tb3VyY2VzXVxuXHQgKiBAcmV0dXJucyBBbGwgdGhlIGFubm90YXRpb24gZm9yIGEgc3BlY2lmaWMgdGVybSBhbmQgdm9jYWJ1bGFyeSBmcm9tIGFuIGVudGl0eSB0eXBlXG5cdCAqL1xuXHRnZXRBbm5vdGF0aW9uc0J5VGVybTxUPihcblx0XHR2b2NhYnVsYXJ5TmFtZToga2V5b2YgRW50aXR5VHlwZUFubm90YXRpb25zLFxuXHRcdGFubm90YXRpb25UZXJtOiBzdHJpbmcsXG5cdFx0YW5ub3RhdGlvblNvdXJjZXM6IChTZXJ2aWNlT2JqZWN0IHwgdW5kZWZpbmVkKVtdID0gW3RoaXMuZ2V0RW50aXR5VHlwZSgpXVxuXHQpOiBBbm5vdGF0aW9uVGVybTxUPltdIHtcblx0XHRsZXQgb3V0QW5ub3RhdGlvbnM6IEFubm90YXRpb25UZXJtPFQ+W10gPSBbXTtcblx0XHRhbm5vdGF0aW9uU291cmNlcy5mb3JFYWNoKChhbm5vdGF0aW9uU291cmNlKSA9PiB7XG5cdFx0XHRpZiAoYW5ub3RhdGlvblNvdXJjZSkge1xuXHRcdFx0XHRjb25zdCBhbm5vdGF0aW9uczogUmVjb3JkPHN0cmluZywgQW5ub3RhdGlvblRlcm08VD4gJiB7IHRlcm06IHN0cmluZyB9PiA9XG5cdFx0XHRcdFx0YW5ub3RhdGlvblNvdXJjZT8uYW5ub3RhdGlvbnNbdm9jYWJ1bGFyeU5hbWVdIHx8IHt9O1xuXHRcdFx0XHRpZiAoYW5ub3RhdGlvbnMpIHtcblx0XHRcdFx0XHRvdXRBbm5vdGF0aW9ucyA9IE9iamVjdC5rZXlzKGFubm90YXRpb25zKVxuXHRcdFx0XHRcdFx0LmZpbHRlcigoYW5ub3RhdGlvbikgPT4gYW5ub3RhdGlvbnNbYW5ub3RhdGlvbl0udGVybSA9PT0gYW5ub3RhdGlvblRlcm0pXG5cdFx0XHRcdFx0XHQucmVkdWNlKChwcmV2aW91c1ZhbHVlOiBBbm5vdGF0aW9uVGVybTxUPltdLCBrZXk6IHN0cmluZykgPT4ge1xuXHRcdFx0XHRcdFx0XHRwcmV2aW91c1ZhbHVlLnB1c2goYW5ub3RhdGlvbnNba2V5XSk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBwcmV2aW91c1ZhbHVlO1xuXHRcdFx0XHRcdFx0fSwgb3V0QW5ub3RhdGlvbnMpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIG91dEFubm90YXRpb25zO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgcmVsYXRpdmUgbW9kZWwgcGF0aCBiYXNlZCBvbiB0aGUgY3VycmVudCBjb250ZXh0IHBhdGguXG5cdCAqXG5cdCAqIEByZXR1cm5zIFRoZSByZWxhdGl2ZSBtb2RlbCBwYXRoIG9yIHVuZGVmaW5lZCBpZiB0aGUgcGF0aCBpcyBub3QgcmVzb2x2ZWFibGVcblx0ICovXG5cdGdldFJlbGF0aXZlTW9kZWxQYXRoRnVuY3Rpb24oKTogRnVuY3Rpb24ge1xuXHRcdGNvbnN0IHRhcmdldERhdGFNb2RlbFBhdGggPSB0aGlzLnRhcmdldERhdGFNb2RlbFBhdGg7XG5cdFx0cmV0dXJuIGZ1bmN0aW9uIChzUGF0aDogc3RyaW5nKSB7XG5cdFx0XHRjb25zdCBlbmhhbmNlZFBhdGggPSBlbmhhbmNlRGF0YU1vZGVsUGF0aCh0YXJnZXREYXRhTW9kZWxQYXRoLCBzUGF0aCk7XG5cdFx0XHRyZXR1cm4gZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aChlbmhhbmNlZFBhdGgsIHRydWUpO1xuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlIHRoZSBjb252ZXJ0ZXIgY29udGV4dCBuZWNlc3NhcnkgZm9yIGEgbWFjcm8gYmFzZWQgb24gYSBtZXRhbW9kZWwgY29udGV4dC5cblx0ICpcblx0ICogQHBhcmFtIHNFbnRpdHlTZXROYW1lXG5cdCAqIEBwYXJhbSBvTWV0YU1vZGVsQ29udGV4dFxuXHQgKiBAcGFyYW0gZGlhZ25vc3RpY3Ncblx0ICogQHBhcmFtIG1lcmdlRm5cblx0ICogQHBhcmFtIHRhcmdldERhdGFNb2RlbFBhdGhcblx0ICogQHBhcmFtIG1hbmlmZXN0U2V0dGluZ3Ncblx0ICogQHJldHVybnMgVGhlIGN1cnJlbnQgY29udmVydGVyIGNvbnRleHRcblx0ICovXG5cdHN0YXRpYyBjcmVhdGVDb252ZXJ0ZXJDb250ZXh0Rm9yTWFjcm8oXG5cdFx0c0VudGl0eVNldE5hbWU6IHN0cmluZyxcblx0XHRvTWV0YU1vZGVsQ29udGV4dDogQ29udGV4dCB8IE9EYXRhTWV0YU1vZGVsLFxuXHRcdGRpYWdub3N0aWNzOiBJRGlhZ25vc3RpY3MsXG5cdFx0bWVyZ2VGbjogRnVuY3Rpb24sXG5cdFx0dGFyZ2V0RGF0YU1vZGVsUGF0aD86IERhdGFNb2RlbE9iamVjdFBhdGg8UGFnZUNvbnRleHRQYXRoVGFyZ2V0Pixcblx0XHRtYW5pZmVzdFNldHRpbmdzOiBCYXNlTWFuaWZlc3RTZXR0aW5ncyA9IHt9IGFzIEJhc2VNYW5pZmVzdFNldHRpbmdzXG5cdCk6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0PiB7XG5cdFx0Y29uc3Qgb01ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwgPSBvTWV0YU1vZGVsQ29udGV4dC5pc0EoXCJzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFNZXRhTW9kZWxcIilcblx0XHRcdD8gKG9NZXRhTW9kZWxDb250ZXh0IGFzIE9EYXRhTWV0YU1vZGVsKVxuXHRcdFx0OiAoKG9NZXRhTW9kZWxDb250ZXh0IGFzIENvbnRleHQpLmdldE1vZGVsKCkgYXMgdW5rbm93biBhcyBPRGF0YU1ldGFNb2RlbCk7XG5cdFx0Y29uc3Qgb0NvbnZlcnRlZE1ldGFkYXRhID0gY29udmVydFR5cGVzKG9NZXRhTW9kZWwpO1xuXHRcdGxldCB0YXJnZXRFbnRpdHlTZXQ6IFNpbmdsZXRvbiB8IEVudGl0eVNldCA9IG9Db252ZXJ0ZWRNZXRhZGF0YS5lbnRpdHlTZXRzLmZpbmQoXG5cdFx0XHQoZW50aXR5U2V0KSA9PiBlbnRpdHlTZXQubmFtZSA9PT0gc0VudGl0eVNldE5hbWVcblx0XHQpIGFzIEVudGl0eVNldDtcblx0XHRpZiAoIXRhcmdldEVudGl0eVNldCkge1xuXHRcdFx0dGFyZ2V0RW50aXR5U2V0ID0gb0NvbnZlcnRlZE1ldGFkYXRhLnNpbmdsZXRvbnMuZmluZCgoZW50aXR5U2V0KSA9PiBlbnRpdHlTZXQubmFtZSA9PT0gc0VudGl0eVNldE5hbWUpIGFzIFNpbmdsZXRvbjtcblx0XHR9XG5cdFx0aWYgKCF0YXJnZXREYXRhTW9kZWxQYXRoIHx8IHRhcmdldEVudGl0eVNldCAhPT0gdGFyZ2V0RGF0YU1vZGVsUGF0aC5zdGFydGluZ0VudGl0eVNldCkge1xuXHRcdFx0dGFyZ2V0RGF0YU1vZGVsUGF0aCA9IHtcblx0XHRcdFx0c3RhcnRpbmdFbnRpdHlTZXQ6IHRhcmdldEVudGl0eVNldCxcblx0XHRcdFx0bmF2aWdhdGlvblByb3BlcnRpZXM6IFtdLFxuXHRcdFx0XHR0YXJnZXRFbnRpdHlTZXQ6IHRhcmdldEVudGl0eVNldCxcblx0XHRcdFx0dGFyZ2V0RW50aXR5VHlwZTogdGFyZ2V0RW50aXR5U2V0LmVudGl0eVR5cGUsXG5cdFx0XHRcdHRhcmdldE9iamVjdDogdGFyZ2V0RW50aXR5U2V0IGFzIEVudGl0eVNldCxcblx0XHRcdFx0Y29udmVydGVkVHlwZXM6IG9Db252ZXJ0ZWRNZXRhZGF0YVxuXHRcdFx0fTtcblx0XHR9XG5cdFx0cmV0dXJuIG5ldyBDb252ZXJ0ZXJDb250ZXh0KG9Db252ZXJ0ZWRNZXRhZGF0YSwgbWFuaWZlc3RTZXR0aW5ncywgZGlhZ25vc3RpY3MsIG1lcmdlRm4sIHRhcmdldERhdGFNb2RlbFBhdGgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlc29sdmVzIGEgbWV0YWRhdGEgYmluZGluZyB0byBpdHMgdGV4dC5cblx0ICpcblx0ICogQHBhcmFtIHBhdGhcblx0ICpcblx0ICogQHJldHVybnMgVGhlIHJlc29sdmVkIHRleHQgaWYgcG9zc2libGUsIGVsc2UgdGhlIGlucHV0IHZhbHVlIG9yIGFuIGVtcHR5IHN0cmluZyBpZiB0aGUgcGF0aCB3YXMgdW5kZWZpbmVkXG5cdCAqL1xuXHRmZXRjaFRleHRGcm9tTWV0YU1vZGVsKHBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIE1vZGVsSGVscGVyLmZldGNoVGV4dEZyb21NZXRhTW9kZWwocGF0aCwgdGhpcyk7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29udmVydGVyQ29udGV4dDtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7OztFQThCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQSxNQUFNQSxnQkFBZ0IsR0FBRyxVQUFhQyxlQUEyQyxFQUF3QztJQUN4SCxPQUFPLE9BQU9BLGVBQWUsS0FBSyxRQUFRO0VBQzNDLENBQUM7RUFFRCxNQUFNQyw0QkFBNEIsR0FBRyxVQUNwQ0MsZ0JBQXFDLEVBQ3JDQyxjQUFpQyxFQUNSO0lBQ3pCLElBQUlDLGFBQW9DO0lBQ3hDLElBQUlDLGdCQUF1QztJQUMzQyxJQUFJQyxpQkFBd0M7SUFDNUMsSUFBSUMsaUJBQXlD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
|