@sapui5/sap.fe.macros 1.139.0 → 1.141.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/macros/.library +1 -1
- package/src/sap/fe/macros/Chart.js +53 -2
- package/src/sap/fe/macros/Chart.tsx +55 -0
- package/src/sap/fe/macros/CollaborativeDraftHandler.js +230 -0
- package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +218 -0
- package/src/sap/fe/macros/CommonHelper.js +59 -15
- package/src/sap/fe/macros/CommonHelper.ts +65 -14
- package/src/sap/fe/macros/ConditionalSwitch.js +174 -0
- package/src/sap/fe/macros/ConditionalSwitch.tsx +141 -0
- package/src/sap/fe/macros/ConditionalSwitchProperty.js +78 -0
- package/src/sap/fe/macros/ConditionalSwitchProperty.tsx +62 -0
- package/src/sap/fe/macros/Field.js +78 -64
- package/src/sap/fe/macros/Field.ts +97 -68
- package/src/sap/fe/macros/FooterContent.js +5 -2
- package/src/sap/fe/macros/FooterContent.tsx +4 -1
- package/src/sap/fe/macros/MacroAPI.js +9 -4
- package/src/sap/fe/macros/MacroAPI.ts +9 -4
- package/src/sap/fe/macros/MessageButton.js +1 -2
- package/src/sap/fe/macros/MessageButton.tsx +0 -1
- package/src/sap/fe/macros/MultiValueField.js +10 -7
- package/src/sap/fe/macros/MultiValueField.tsx +7 -3
- package/src/sap/fe/macros/Page.js +5 -7
- package/src/sap/fe/macros/Page.tsx +4 -6
- package/src/sap/fe/macros/Paginator.js +9 -4
- package/src/sap/fe/macros/Paginator.tsx +12 -3
- package/src/sap/fe/macros/RichTextEditor.js +3 -2
- package/src/sap/fe/macros/RichTextEditor.tsx +2 -1
- package/src/sap/fe/macros/Share.js +14 -2
- package/src/sap/fe/macros/Share.tsx +13 -0
- package/src/sap/fe/macros/Status.js +251 -0
- package/src/sap/fe/macros/Status.tsx +212 -0
- package/src/sap/fe/macros/ValueHelp.js +4 -28
- package/src/sap/fe/macros/ValueHelp.tsx +2 -42
- package/src/sap/fe/macros/ai/EasyFillDialog.js +11 -17
- package/src/sap/fe/macros/ai/EasyFillDialog.tsx +11 -16
- package/src/sap/fe/macros/ai/EasyFilterBar.js +246 -97
- package/src/sap/fe/macros/ai/EasyFilterBar.tsx +302 -106
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +76 -33
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +89 -40
- package/src/sap/fe/macros/ai/SummarizationButton.js +2 -2
- package/src/sap/fe/macros/ai/SummarizationButton.tsx +1 -1
- package/src/sap/fe/macros/chart/Chart.js +2 -2
- package/src/sap/fe/macros/chart/Chart.tsx +1 -1
- package/src/sap/fe/macros/chart/ChartHelper.js +1 -2
- package/src/sap/fe/macros/chart/ChartHelper.ts +0 -1
- package/src/sap/fe/macros/chart/ChartRuntime.js +1 -2
- package/src/sap/fe/macros/chart/ChartRuntime.ts +0 -1
- package/src/sap/fe/macros/chart/MdcChartTemplate.js +5 -5
- package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +5 -5
- package/src/sap/fe/macros/contentSwitcher/ContentSwitcher.js +9 -2
- package/src/sap/fe/macros/contentSwitcher/ContentSwitcher.tsx +8 -0
- package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.js +5 -1
- package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.ts +4 -0
- package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.js +4 -2
- package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.ts +3 -1
- package/src/sap/fe/macros/controls/FilterBar.js +14 -5
- package/src/sap/fe/macros/controls/FilterBar.ts +3 -0
- package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.js +2 -2
- package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.tsx +2 -2
- package/src/sap/fe/macros/controls/RadioButtons.js +61 -38
- package/src/sap/fe/macros/controls/RadioButtons.tsx +39 -18
- package/src/sap/fe/macros/controls/Section.js +4 -3
- package/src/sap/fe/macros/controls/Section.ts +3 -2
- package/src/sap/fe/macros/controls/section/SubSection.js +63 -8
- package/src/sap/fe/macros/controls/section/SubSection.ts +67 -1
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +43 -4
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +48 -1
- package/src/sap/fe/macros/designtime/Designtime.helper.js +28 -1
- package/src/sap/fe/macros/designtime/Designtime.helper.ts +27 -0
- package/src/sap/fe/macros/field/Field.js +2 -2
- package/src/sap/fe/macros/field/Field.tsx +1 -1
- package/src/sap/fe/macros/field/FieldBaseDelegate.js +13 -7
- package/src/sap/fe/macros/field/FieldBaseDelegate.ts +12 -8
- package/src/sap/fe/macros/field/FieldFormatOptions.js +25 -2
- package/src/sap/fe/macros/field/FieldFormatOptions.ts +13 -0
- package/src/sap/fe/macros/field/FieldHelper.js +2 -2
- package/src/sap/fe/macros/field/FieldHelper.ts +1 -4
- package/src/sap/fe/macros/field/FieldRuntime.js +1 -2
- package/src/sap/fe/macros/field/FieldRuntime.ts +0 -1
- package/src/sap/fe/macros/field/FieldTemplating.js +3 -3
- package/src/sap/fe/macros/field/FieldTemplating.ts +4 -2
- package/src/sap/fe/macros/filter/FilterUtils.js +233 -5
- package/src/sap/fe/macros/filter/FilterUtils.ts +291 -7
- package/src/sap/fe/macros/filterBar/FilterBar.block.js +5 -3
- package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +4 -2
- package/src/sap/fe/macros/filterBar/FilterBar.js +2 -2
- package/src/sap/fe/macros/filterBar/FilterBar.tsx +1 -1
- package/src/sap/fe/macros/filterBar/FilterBarAPI.js +63 -27
- package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +49 -3
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +5 -3
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +5 -2
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +7 -2
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +6 -1
- package/src/sap/fe/macros/form/Form.block.js +7 -8
- package/src/sap/fe/macros/form/Form.block.ts +4 -6
- package/src/sap/fe/macros/form/Form.js +1 -4
- package/src/sap/fe/macros/form/Form.tsx +0 -3
- package/src/sap/fe/macros/form/FormContainer.block.js +555 -5
- package/src/sap/fe/macros/form/FormContainer.block.ts +665 -7
- package/src/sap/fe/macros/form/FormContainer.fragment.xml +1 -0
- package/src/sap/fe/macros/form/FormDelegate.js +24 -8
- package/src/sap/fe/macros/form/FormDelegate.ts +29 -7
- package/src/sap/fe/macros/form/FormHelper.js +1 -2
- package/src/sap/fe/macros/form/FormHelper.ts +0 -1
- package/src/sap/fe/macros/fpm/CustomFragment.block.js +1 -2
- package/src/sap/fe/macros/fpm/CustomFragment.block.ts +0 -1
- package/src/sap/fe/macros/internal/ActionCommand.block.js +1 -2
- package/src/sap/fe/macros/internal/ActionCommand.block.ts +0 -1
- package/src/sap/fe/macros/internal/DataPoint.js +3 -2
- package/src/sap/fe/macros/internal/DataPoint.tsx +10 -1
- package/src/sap/fe/macros/internal/FilterField.block.js +19 -5
- package/src/sap/fe/macros/internal/FilterField.block.ts +16 -4
- package/src/sap/fe/macros/internal/field/DisplayStyle.js +9 -3
- package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +10 -2
- package/src/sap/fe/macros/internal/field/EditStyle.js +21 -4
- package/src/sap/fe/macros/internal/field/EditStyle.tsx +18 -4
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +3 -2
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +5 -1
- package/src/sap/fe/macros/internal/filterField/FilterFieldTemplate.fragment.xml +1 -0
- package/src/sap/fe/macros/internal/helpers/ActionHelper.js +36 -5
- package/src/sap/fe/macros/internal/helpers/ActionHelper.ts +34 -4
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueHelper.js +46 -8
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueHelper.ts +60 -6
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +38 -2
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +37 -2
- package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +1 -1
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +10 -3
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +13 -2
- package/src/sap/fe/macros/library.js +1 -1
- package/src/sap/fe/macros/mdc/adapter/StateFilterToSelectionVariant.js +2 -1
- package/src/sap/fe/macros/mdc/adapter/StateFilterToSelectionVariant.ts +1 -0
- package/src/sap/fe/macros/messagebundle.properties +24 -4
- package/src/sap/fe/macros/messagebundle_ar.properties +8 -2
- package/src/sap/fe/macros/messagebundle_bg.properties +8 -2
- package/src/sap/fe/macros/messagebundle_ca.properties +11 -5
- package/src/sap/fe/macros/messagebundle_cnr.properties +8 -2
- package/src/sap/fe/macros/messagebundle_cs.properties +7 -1
- package/src/sap/fe/macros/messagebundle_cy.properties +9 -3
- package/src/sap/fe/macros/messagebundle_da.properties +8 -2
- package/src/sap/fe/macros/messagebundle_de.properties +13 -7
- package/src/sap/fe/macros/messagebundle_el.properties +7 -1
- package/src/sap/fe/macros/messagebundle_en.properties +11 -5
- package/src/sap/fe/macros/messagebundle_en_GB.properties +9 -3
- package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +11 -5
- package/src/sap/fe/macros/messagebundle_es.properties +10 -4
- package/src/sap/fe/macros/messagebundle_es_MX.properties +11 -5
- package/src/sap/fe/macros/messagebundle_et.properties +9 -3
- package/src/sap/fe/macros/messagebundle_fi.properties +7 -1
- package/src/sap/fe/macros/messagebundle_fr.properties +9 -3
- package/src/sap/fe/macros/messagebundle_fr_CA.properties +8 -2
- package/src/sap/fe/macros/messagebundle_hi.properties +8 -2
- package/src/sap/fe/macros/messagebundle_hr.properties +8 -2
- package/src/sap/fe/macros/messagebundle_hu.properties +7 -1
- package/src/sap/fe/macros/messagebundle_id.properties +15 -9
- package/src/sap/fe/macros/messagebundle_it.properties +7 -1
- package/src/sap/fe/macros/messagebundle_iw.properties +8 -2
- package/src/sap/fe/macros/messagebundle_ja.properties +13 -7
- package/src/sap/fe/macros/messagebundle_kk.properties +11 -5
- package/src/sap/fe/macros/messagebundle_ko.properties +8 -2
- package/src/sap/fe/macros/messagebundle_lt.properties +9 -3
- package/src/sap/fe/macros/messagebundle_lv.properties +8 -2
- package/src/sap/fe/macros/messagebundle_mk.properties +8 -2
- package/src/sap/fe/macros/messagebundle_ms.properties +7 -1
- package/src/sap/fe/macros/messagebundle_nl.properties +7 -1
- package/src/sap/fe/macros/messagebundle_no.properties +7 -1
- package/src/sap/fe/macros/messagebundle_pl.properties +8 -2
- package/src/sap/fe/macros/messagebundle_pt.properties +7 -1
- package/src/sap/fe/macros/messagebundle_pt_PT.properties +7 -1
- package/src/sap/fe/macros/messagebundle_ro.properties +8 -2
- package/src/sap/fe/macros/messagebundle_ru.properties +10 -4
- package/src/sap/fe/macros/messagebundle_sh.properties +8 -2
- package/src/sap/fe/macros/messagebundle_sk.properties +7 -1
- package/src/sap/fe/macros/messagebundle_sl.properties +7 -1
- package/src/sap/fe/macros/messagebundle_sr.properties +8 -2
- package/src/sap/fe/macros/messagebundle_sv.properties +7 -1
- package/src/sap/fe/macros/messagebundle_th.properties +8 -2
- package/src/sap/fe/macros/messagebundle_tr.properties +7 -1
- package/src/sap/fe/macros/messagebundle_uk.properties +10 -4
- package/src/sap/fe/macros/messagebundle_vi.properties +10 -4
- package/src/sap/fe/macros/messagebundle_zh_CN.properties +7 -1
- package/src/sap/fe/macros/messagebundle_zh_TW.properties +8 -2
- package/src/sap/fe/macros/messages/MessageButton.js +39 -18
- package/src/sap/fe/macros/messages/MessageButton.ts +42 -19
- package/src/sap/fe/macros/messages/MessagePopover.js +4 -2
- package/src/sap/fe/macros/messages/MessagePopover.ts +6 -4
- package/src/sap/fe/macros/microchart/MicroChart.js +2 -2
- package/src/sap/fe/macros/microchart/MicroChart.tsx +1 -1
- package/src/sap/fe/macros/microchart/MicroChartContainer.js +1 -2
- package/src/sap/fe/macros/microchart/MicroChartContainer.ts +1 -2
- package/src/sap/fe/macros/microchart/MicroChartHelper.js +2 -3
- package/src/sap/fe/macros/microchart/MicroChartHelper.tsx +1 -2
- package/src/sap/fe/macros/share/ShareAPI.js +4 -29
- package/src/sap/fe/macros/share/ShareAPI.ts +1 -32
- package/src/sap/fe/macros/situations/SituationsPopover.js +3 -1
- package/src/sap/fe/macros/situations/SituationsPopover.ts +2 -0
- package/src/sap/fe/macros/table/ActionsTemplating.js +4 -8
- package/src/sap/fe/macros/table/ActionsTemplating.tsx +5 -8
- package/src/sap/fe/macros/table/BasicSearch.js +1 -1
- package/src/sap/fe/macros/table/BasicSearch.ts +2 -1
- package/src/sap/fe/macros/table/Column.js +14 -2
- package/src/sap/fe/macros/table/Column.ts +7 -0
- package/src/sap/fe/macros/table/ColumnExportSettings.js +83 -15
- package/src/sap/fe/macros/table/ColumnExportSettings.ts +44 -0
- package/src/sap/fe/macros/table/ColumnOverride.js +14 -2
- package/src/sap/fe/macros/table/ColumnOverride.ts +7 -0
- package/src/sap/fe/macros/table/MdcTableTemplate.js +7 -5
- package/src/sap/fe/macros/table/MdcTableTemplate.tsx +21 -11
- package/src/sap/fe/macros/table/QuickFilterSelector.js +12 -3
- package/src/sap/fe/macros/table/QuickFilterSelector.tsx +15 -2
- package/src/sap/fe/macros/table/Table.block.js +188 -147
- package/src/sap/fe/macros/table/Table.block.tsx +41 -11
- package/src/sap/fe/macros/table/Table.js +16 -10
- package/src/sap/fe/macros/table/Table.tsx +16 -10
- package/src/sap/fe/macros/table/TableAPI.js +224 -184
- package/src/sap/fe/macros/table/TableAPI.ts +63 -19
- package/src/sap/fe/macros/table/TableEventHandlerProvider.js +6 -6
- package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +5 -4
- package/src/sap/fe/macros/table/TableHelper.js +2 -3
- package/src/sap/fe/macros/table/TableHelper.ts +1 -2
- package/src/sap/fe/macros/table/TableRuntime.js +24 -5
- package/src/sap/fe/macros/table/TableRuntime.ts +31 -3
- package/src/sap/fe/macros/table/TreeTable.js +16 -10
- package/src/sap/fe/macros/table/TreeTable.tsx +16 -10
- package/src/sap/fe/macros/table/Utils.js +8 -3
- package/src/sap/fe/macros/table/Utils.ts +12 -3
- package/src/sap/fe/macros/table/delegates/ALPTableDelegate.js +1 -2
- package/src/sap/fe/macros/table/delegates/ALPTableDelegate.ts +0 -1
- package/src/sap/fe/macros/table/delegates/TableDelegate.js +69 -34
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +75 -33
- package/src/sap/fe/macros/table/delegates/TreeTableDelegate.js +1 -2
- package/src/sap/fe/macros/table/delegates/TreeTableDelegate.ts +0 -1
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +10 -10
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +11 -9
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +14 -12
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +11 -10
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +34 -4
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +45 -2
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +55 -12
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +71 -9
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.js +53 -2
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.ts +55 -0
- package/src/sap/fe/macros/table/mixin/TableExport.js +22 -3
- package/src/sap/fe/macros/table/mixin/TableExport.ts +25 -4
- package/src/sap/fe/macros/table/mixin/TableHierarchy.js +5 -1
- package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +7 -0
- package/src/sap/fe/macros/table/mixin/TableSharing.js +4 -2
- package/src/sap/fe/macros/table/mixin/TableSharing.ts +10 -1
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +36 -10
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +44 -9
- package/src/sap/fe/macros/visualfilters/VisualFilter.js +5 -4
- package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +3 -2
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +2 -3
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +1 -2
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2025 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controllerextensions/collaboration/CollaborationCommon", "sap/fe/core/converters/ManifestSettings", "sap/fe/core/converters/MetaModelConverter", "sap/ui/core/Lib", "sap/ui/core/Messaging", "sap/ui/core/message/Message", "sap/ui/core/message/MessageType"], function (Log, CommonUtils, CollaborationCommon, ManifestSettings, MetaModelConverter, Library, Messaging, Message, MessageType) {
|
|
5
|
+
sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controllerextensions/collaboration/CollaborationCommon", "sap/fe/core/controllerextensions/editFlow/TransactionHelper", "sap/fe/core/converters/ManifestSettings", "sap/fe/core/converters/MetaModelConverter", "sap/ui/core/Lib", "sap/ui/core/Messaging", "sap/ui/core/message/Message", "sap/ui/core/message/MessageType"], function (Log, CommonUtils, CollaborationCommon, TransactionHelper, ManifestSettings, MetaModelConverter, Library, Messaging, Message, MessageType) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _exports = {};
|
|
@@ -13,6 +13,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
|
|
|
13
13
|
function EmptyRowsHandler() {}
|
|
14
14
|
_exports = EmptyRowsHandler;
|
|
15
15
|
var _proto = EmptyRowsHandler.prototype;
|
|
16
|
+
/**
|
|
17
|
+
* Promise that resolves to the table's default values.
|
|
18
|
+
*/
|
|
16
19
|
_proto.setupMixin = function setupMixin(_baseClass) {
|
|
17
20
|
// This method is needed to implement interface IInterfaceWithMixin
|
|
18
21
|
}
|
|
@@ -106,7 +109,16 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
|
|
|
106
109
|
} else {
|
|
107
110
|
appComponent.getSideEffectsService().deregisterTargetCallback(navigationPath);
|
|
108
111
|
}
|
|
109
|
-
|
|
112
|
+
if (this.tableDefaultsPromise) {
|
|
113
|
+
this.tableDefaultsPromise.then(tableDefaultData => {
|
|
114
|
+
this.setUpEmptyRows(this.getContent(), false, tableDefaultData);
|
|
115
|
+
return tableDefaultData;
|
|
116
|
+
}).catch(error => {
|
|
117
|
+
Log.error("Error while setting up empty rows:", error);
|
|
118
|
+
});
|
|
119
|
+
} else {
|
|
120
|
+
this.setUpEmptyRows(this.getContent());
|
|
121
|
+
}
|
|
110
122
|
}
|
|
111
123
|
|
|
112
124
|
/**
|
|
@@ -123,18 +135,23 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
|
|
|
123
135
|
await this.createEmptyRows(binding, table);
|
|
124
136
|
}
|
|
125
137
|
return;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Helper function to perform common checks for table defaults and empty rows setup.
|
|
142
|
+
* @param table The table being processed
|
|
143
|
+
* @returns The binding object if checks pass, or undefined if checks fail
|
|
144
|
+
*/;
|
|
145
|
+
_proto._validateAndRetrieveBinding = async function _validateAndRetrieveBinding(table) {
|
|
129
146
|
if (this.getTableDefinition().control?.creationMode !== CreationMode.InlineCreationRows) {
|
|
130
|
-
return;
|
|
147
|
+
return undefined;
|
|
131
148
|
}
|
|
132
149
|
const uiModel = table.getModel("ui");
|
|
133
150
|
if (!uiModel) {
|
|
134
|
-
return;
|
|
151
|
+
return undefined;
|
|
135
152
|
}
|
|
136
153
|
if (uiModel.getProperty("/isEditablePending")) {
|
|
137
|
-
//
|
|
154
|
+
// Wait until the edit mode computation is complete
|
|
138
155
|
const watchBinding = uiModel.bindProperty("/isEditablePending");
|
|
139
156
|
await new Promise(resolve => {
|
|
140
157
|
const fnHandler = () => {
|
|
@@ -146,7 +163,31 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
|
|
|
146
163
|
});
|
|
147
164
|
}
|
|
148
165
|
const binding = table.getRowBinding();
|
|
149
|
-
|
|
166
|
+
if (!binding) {
|
|
167
|
+
return undefined;
|
|
168
|
+
}
|
|
169
|
+
return binding;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Gets the table defaults by validating and retrieving the binding, then fetching data from the DefaultValueFunction.
|
|
174
|
+
* @param table The table being processed
|
|
175
|
+
* @returns A promise that resolves to an object containing the default values, or undefined if no binding is available or the DefaultValueFunction returns no data
|
|
176
|
+
*/;
|
|
177
|
+
_proto.getTableDefaults = async function getTableDefaults(table) {
|
|
178
|
+
const binding = await this._validateAndRetrieveBinding(table);
|
|
179
|
+
if (!binding) return undefined;
|
|
180
|
+
const appComponent = CommonUtils.getAppComponent(CommonUtils.getTargetView(table));
|
|
181
|
+
return appComponent ? TransactionHelper.getDataFromDefaultValueFunction(binding, appComponent) : undefined;
|
|
182
|
+
};
|
|
183
|
+
_proto.setUpEmptyRows = async function setUpEmptyRows(table) {
|
|
184
|
+
let createButtonWasPressed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
185
|
+
let tableDefaultData = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
186
|
+
const binding = await this._validateAndRetrieveBinding(table);
|
|
187
|
+
if (!binding) {
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
const bindingHeaderContext = binding.getHeaderContext();
|
|
150
191
|
if (binding && binding.isResolved() && binding.isLengthFinal() && bindingHeaderContext) {
|
|
151
192
|
const contextPath = bindingHeaderContext.getPath();
|
|
152
193
|
if (!this.emptyRowsEnabled) {
|
|
@@ -165,7 +206,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
|
|
|
165
206
|
});
|
|
166
207
|
if (!inactiveContext) {
|
|
167
208
|
this.removeEmptyRowsMessages();
|
|
168
|
-
await this.createEmptyRows(binding, table);
|
|
209
|
+
await this.createEmptyRows(binding, table, false, undefined, false, tableDefaultData);
|
|
169
210
|
}
|
|
170
211
|
}
|
|
171
212
|
}
|
|
@@ -258,12 +299,14 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
|
|
|
258
299
|
* @param recreateOneRow `true` if the call is to recreate an emptyLine
|
|
259
300
|
* @param newInlineCreationRowFromPaste Number of new inactive rows to be created
|
|
260
301
|
* @param forceCreateatEnd `true` if the new row is to be created at the end of the table
|
|
302
|
+
* @param defaultValueFunctionData Default values retrieved from the DefaultValuesFunction to be applied to the new rows
|
|
261
303
|
* @returns A promise that resolves to the created contexts or void if the creation failed
|
|
262
304
|
*/;
|
|
263
305
|
_proto.createEmptyRows = async function createEmptyRows(binding, table) {
|
|
264
306
|
let recreateOneRow = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
265
307
|
let newInlineCreationRowFromPaste = arguments.length > 3 ? arguments[3] : undefined;
|
|
266
308
|
let forceCreateatEnd = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
|
|
309
|
+
let defaultValueFunctionData = arguments.length > 5 ? arguments[5] : undefined;
|
|
267
310
|
const inlineCreationRowCount = newInlineCreationRowFromPaste ?? (this.getTableDefinition().control?.inlineCreationRowCount || 1);
|
|
268
311
|
if (this.creatingEmptyRows || this.getInactiveContextNumber(binding) > inlineCreationRowCount) {
|
|
269
312
|
return;
|
|
@@ -284,7 +327,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
|
|
|
284
327
|
// during a live change, only 1 new document is created
|
|
285
328
|
dataForCreate,
|
|
286
329
|
// When editing an empty row, the new empty row is to be created just below and not above
|
|
287
|
-
recreateOneRow || forceCreateatEnd ? true : atEnd, false, controller.editFlow.onBeforeCreate, inactive);
|
|
330
|
+
recreateOneRow || forceCreateatEnd ? true : atEnd, false, controller.editFlow.onBeforeCreate, inactive, undefined, defaultValueFunctionData);
|
|
288
331
|
appComponent.getSideEffectsService().requestSideEffectsForNavigationProperty(binding.getPath(), view.getBindingContext());
|
|
289
332
|
contexts?.forEach(async function (context) {
|
|
290
333
|
try {
|
|
@@ -307,4 +350,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
|
|
|
307
350
|
_exports = EmptyRowsHandler;
|
|
308
351
|
return _exports;
|
|
309
352
|
}, false);
|
|
310
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFbXB0eVJvd3NIYW5kbGVyIiwiX2V4cG9ydHMiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJzZXR1cE1peGluIiwiX2Jhc2VDbGFzcyIsIl9vbkZpZWxkTGl2ZUNoYW5nZSIsInVpNUV2ZW50IiwiZmllbGQiLCJnZXRTb3VyY2UiLCJiaW5kaW5nQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0IiwiYmluZGluZyIsImdldEJpbmRpbmciLCJpc0luYWN0aXZlIiwidGFibGUiLCJnZXRDb250ZW50IiwiY3JlYXRlRW1wdHlSb3dzIiwiX2hhbmRsZUNyZWF0ZUFjdGl2YXRlIiwiYWN0aXZhdGVFdmVudCIsImFjdGl2YXRlZENvbnRleHQiLCJnZXRQYXJhbWV0ZXIiLCJ2YWxpZGF0ZUVtcHR5Um93IiwicHJldmVudERlZmF1bHQiLCJ0cmFuc2llbnRQYXRoIiwiZ2V0UGF0aCIsInZpZXciLCJDb21tb25VdGlscyIsImdldFRhcmdldFZpZXciLCJjb250cm9sbGVyIiwiZ2V0Q29udHJvbGxlciIsImVkaXRGbG93IiwiY3JlYXRlZCIsIlByb21pc2UiLCJyZXNvbHZlIiwib25BZnRlckNyZWF0ZSIsImNvbnRleHQiLCJlIiwiTG9nIiwid2FybmluZyIsImNvbnRlbnQiLCJjb2xsYWJvcmF0aXZlRHJhZnQiLCJzZW5kIiwiYWN0aW9uIiwiQWN0aXZpdHkiLCJDcmVhdGUiLCJ1cGRhdGVMb2Nrc0ZvckNvbnRleHRQYXRoIiwiZXJyb3IiLCJnZXREZWZhdWx0VmFsdWVzRnVuY3Rpb24iLCJsaXN0QmluZGluZyIsIm1vZGVsIiwiZ2V0TW9kZWwiLCJtZXRhTW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJtZXRhQ29udGV4dCIsImdldE1ldGFDb250ZXh0IiwiZ2V0UmVzb2x2ZWRQYXRoIiwibGlzdEJpbmRpbmdPYmplY3RQYXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwiZGVmYXVsdEZ1bmNPblRhcmdldE9iamVjdCIsInRhcmdldE9iamVjdCIsImFubm90YXRpb25zIiwiQ29tbW9uIiwiRGVmYXVsdFZhbHVlc0Z1bmN0aW9uIiwiZGVmYXVsdEZ1bmNPblRhcmdldEVudGl0eVNldCIsInRhcmdldEVudGl0eVNldCIsInNldEVtcHR5Um93c0VuYWJsZWQiLCJlbmFibGVtZW50Iiwic2V0UHJvcGVydHkiLCJuYXZpZ2F0aW9uUGF0aCIsImRhdGEiLCJhcHBDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJnZXRSb3dCaW5kaW5nIiwiZGVmYXVsdFZhbHVlc0Z1bmN0aW9uIiwidW5kZWZpbmVkIiwiZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlIiwicmVnaXN0ZXJUYXJnZXRDYWxsYmFjayIsInVwZGF0ZUVtcHR5Um93cyIsImJpbmQiLCJkZXJlZ2lzdGVyVGFyZ2V0Q2FsbGJhY2siLCJzZXRVcEVtcHR5Um93cyIsImJpbmRpbmdIZWFkZXJDb250ZXh0IiwiZ2V0SGVhZGVyQ29udGV4dCIsImlzUmVzb2x2ZWQiLCJpc0xlbmd0aEZpbmFsIiwiY29udGV4dFBhdGgiLCJfZGVsZXRlRW1wdHlSb3dzIiwiY3JlYXRlQnV0dG9uV2FzUHJlc3NlZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImdldFRhYmxlRGVmaW5pdGlvbiIsImNvbnRyb2wiLCJjcmVhdGlvbk1vZGUiLCJDcmVhdGlvbk1vZGUiLCJJbmxpbmVDcmVhdGlvblJvd3MiLCJ1aU1vZGVsIiwiZ2V0UHJvcGVydHkiLCJ3YXRjaEJpbmRpbmciLCJiaW5kUHJvcGVydHkiLCJmbkhhbmRsZXIiLCJkZXRhY2hDaGFuZ2UiLCJkZXN0cm95IiwiYXR0YWNoQ2hhbmdlIiwiZW1wdHlSb3dzRW5hYmxlZCIsInJlbW92ZUVtcHR5Um93c01lc3NhZ2VzIiwiZ2V0SXNFZGl0YWJsZSIsImlubGluZUNyZWF0aW9uUm93c0hpZGRlbkluRWRpdE1vZGUiLCJpbmFjdGl2ZUNvbnRleHQiLCJnZXRBbGxDdXJyZW50Q29udGV4dHMiLCJmaW5kIiwic3RhcnRzV2l0aCIsImRlbGV0ZSIsImdldEluYWN0aXZlQ29udGV4dE51bWJlciIsImZpbHRlciIsInJlcXVpcmVkUHJvcGVydGllcyIsImFubm90YXRpb24iLCJtaXNzaW5nUHJvcGVydGllcyIsInJlcXVpcmVkUHJvcGVydHkiLCJnZXRPYmplY3QiLCJyZXNvdXJjZUJ1bmRsZSIsIkxpYnJhcnkiLCJnZXRSZXNvdXJjZUJ1bmRsZUZvciIsIm1lc3NhZ2VzIiwiZGlzcGxheWVkQ29sdW1uIiwibWlzc2luZ1Byb3BlcnR5IiwiZXJyb3JNZXNzYWdlIiwibWlzc2luZ0NvbHVtbiIsImNvbHVtbnMiLCJ0YWJsZUNvbHVtbiIsInJlbGF0aXZlUGF0aCIsInByb3BlcnR5SW5mb3MiLCJpbmNsdWRlcyIsImdldFRleHQiLCJnZXRDb2x1bW5zIiwibWRjQ29sdW1uIiwiZ2V0UHJvcGVydHlLZXkiLCJuYW1lIiwiZ2V0SGVhZGVyIiwibGFiZWwiLCJwdXNoIiwiTWVzc2FnZSIsIm1lc3NhZ2UiLCJwcm9jZXNzb3IiLCJ0eXBlIiwiTWVzc2FnZVR5cGUiLCJFcnJvciIsInRlY2huaWNhbCIsInBlcnNpc3RlbnQiLCJ0ZWNobmljYWxEZXRhaWxzIiwidGFibGVJZCIsImdldElkIiwiZW1wdHlSb3dNZXNzYWdlIiwidGFyZ2V0IiwiTWVzc2FnaW5nIiwiYWRkTWVzc2FnZXMiLCJpbmFjdGl2ZUNvbnRleHRzIiwicmVtb3ZlTWVzc2FnZXMiLCJnZXRNZXNzYWdlTW9kZWwiLCJnZXREYXRhIiwibXNnIiwiZ2V0VGVjaG5pY2FsRGV0YWlscyIsImNvbnRleHRNYXRjaGVzIiwiQXJyYXkiLCJpc0FycmF5Iiwic29tZSIsImdldFRhcmdldHMiLCJ2YWx1ZSIsInJlY3JlYXRlT25lUm93IiwibmV3SW5saW5lQ3JlYXRpb25Sb3dGcm9tUGFzdGUiLCJmb3JjZUNyZWF0ZWF0RW5kIiwiaW5saW5lQ3JlYXRpb25Sb3dDb3VudCIsImNyZWF0aW5nRW1wdHlSb3dzIiwiZnJvbSIsImF0RW5kIiwiaW5hY3RpdmUiLCJkYXRhRm9yQ3JlYXRlIiwiY29udGV4dHMiLCJjcmVhdGVNdWx0aXBsZURvY3VtZW50cyIsIm9uQmVmb3JlQ3JlYXRlIiwicmVxdWVzdFNpZGVFZmZlY3RzRm9yTmF2aWdhdGlvblByb3BlcnR5IiwiZm9yRWFjaCIsImNhbmNlbGVkIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJFbXB0eVJvd3NIYW5kbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW50aXR5U2V0LCBOYXZpZ2F0aW9uUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgRGVmYXVsdFZhbHVlc0Z1bmN0aW9uIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9Db21tb25cIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHsgdHlwZSBJSW50ZXJmYWNlV2l0aE1peGluIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHsgQWN0aXZpdHkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvY29sbGFib3JhdGlvbi9Db2xsYWJvcmF0aW9uQ29tbW9uXCI7XG5pbXBvcnQgeyBDcmVhdGlvbk1vZGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB0eXBlIHsgQW5ub3RhdGlvblRhYmxlQ29sdW1uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL3RhYmxlL0NvbHVtbnNcIjtcbmltcG9ydCB0eXBlIFVJNUV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IExpYnJhcnkgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IE1lc3NhZ2luZyBmcm9tIFwic2FwL3VpL2NvcmUvTWVzc2FnaW5nXCI7XG5pbXBvcnQgTWVzc2FnZSBmcm9tIFwic2FwL3VpL2NvcmUvbWVzc2FnZS9NZXNzYWdlXCI7XG5pbXBvcnQgTWVzc2FnZVR5cGUgZnJvbSBcInNhcC91aS9jb3JlL21lc3NhZ2UvTWVzc2FnZVR5cGVcIjtcbmltcG9ydCB0eXBlIE1EQ1RhYmxlIGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSBNRENDb2x1bW4gZnJvbSBcInNhcC91aS9tZGMvdGFibGUvQ29sdW1uXCI7XG5pbXBvcnQgdHlwZSBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIHsgQ29udGV4dEVycm9yVHlwZSB9IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFMaXN0QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTGlzdEJpbmRpbmdcIjtcbmltcG9ydCB7IHR5cGUgSVRhYmxlQmxvY2sgfSBmcm9tIFwiLi4vVGFibGVBUElcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW1wdHlSb3dzSGFuZGxlciBpbXBsZW1lbnRzIElJbnRlcmZhY2VXaXRoTWl4aW4ge1xuXHRjcmVhdGluZ0VtcHR5Um93cz86IGJvb2xlYW47XG5cblx0c2V0dXBNaXhpbihfYmFzZUNsYXNzOiBGdW5jdGlvbik6IHZvaWQge1xuXHRcdC8vIFRoaXMgbWV0aG9kIGlzIG5lZWRlZCB0byBpbXBsZW1lbnQgaW50ZXJmYWNlIElJbnRlcmZhY2VXaXRoTWl4aW5cblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVyIGZvciB0aGUgb25GaWVsZExpdmVDaGFuZ2UgZXZlbnQuXG5cdCAqIEBwYXJhbSB1aTVFdmVudCBUaGUgZXZlbnQgb2JqZWN0IHBhc3NlZCBieSB0aGUgb25GaWVsZExpdmVDaGFuZ2UgZXZlbnRcblx0ICovXG5cdF9vbkZpZWxkTGl2ZUNoYW5nZSh0aGlzOiBJVGFibGVCbG9jayAmIEVtcHR5Um93c0hhbmRsZXIsIHVpNUV2ZW50OiBVSTVFdmVudDx7fSwgQ29udHJvbD4pOiB2b2lkIHtcblx0XHRjb25zdCBmaWVsZCA9IHVpNUV2ZW50LmdldFNvdXJjZSgpLFxuXHRcdFx0YmluZGluZ0NvbnRleHQgPSBmaWVsZC5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQsXG5cdFx0XHRiaW5kaW5nID0gYmluZGluZ0NvbnRleHQuZ2V0QmluZGluZygpO1xuXHRcdC8vIGNyZWF0aW9uIG9mIGEgbmV3IGluYWN0aXZlIHJvdyBpZiByZWxldmFudFxuXHRcdGlmIChiaW5kaW5nQ29udGV4dC5pc0luYWN0aXZlKCkpIHtcblx0XHRcdGNvbnN0IHRhYmxlID0gdGhpcz8uZ2V0Q29udGVudCgpO1xuXHRcdFx0dGhpcz8uY3JlYXRlRW1wdHlSb3dzKGJpbmRpbmcgYXMgT0RhdGFMaXN0QmluZGluZywgdGFibGUsIHRydWUpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHRoZSBDcmVhdGVBY3RpdmF0ZSBldmVudCBmcm9tIHRoZSBPRGF0YUxpc3RCaW5kaW5nLlxuXHQgKiBAcGFyYW0gYWN0aXZhdGVFdmVudCBUaGUgZXZlbnQgc2VudCBieSB0aGUgYmluZGluZ1xuXHQgKi9cblx0YXN5bmMgX2hhbmRsZUNyZWF0ZUFjdGl2YXRlKFxuXHRcdHRoaXM6IElUYWJsZUJsb2NrICYgRW1wdHlSb3dzSGFuZGxlcixcblx0XHRhY3RpdmF0ZUV2ZW50OiBVSTVFdmVudDx7IGNvbnRleHQ6IENvbnRleHQgfSwgT0RhdGFMaXN0QmluZGluZz5cblx0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgYWN0aXZhdGVkQ29udGV4dCA9IGFjdGl2YXRlRXZlbnQuZ2V0UGFyYW1ldGVyKFwiY29udGV4dFwiKTtcblx0XHQvLyB3ZSBzdGFydCBieSBhc2tpbmcgdG8gcmVjcmVhdGUgYW4gZW1wdHkgcm93IChpZiBsaXZlIGNoYW5nZSBoYXMgYWxyZWFkeSBkb25lIGl0IHRoaXMgd29uJ3QgaGF2ZSBhbnkgZWZmZWN0KVxuXHRcdC8vIGJ1dCB3ZSBkbyBub3Qgd2FpdFxuXHRcdHRoaXMuY3JlYXRlRW1wdHlSb3dzKGFjdGl2YXRlRXZlbnQuZ2V0U291cmNlKCksIHRoaXMuZ2V0Q29udGVudCgpLCB0cnVlKTtcblx0XHRpZiAoIXRoaXMudmFsaWRhdGVFbXB0eVJvdyhhY3RpdmF0ZWRDb250ZXh0KSkge1xuXHRcdFx0YWN0aXZhdGVFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgdHJhbnNpZW50UGF0aCA9IGFjdGl2YXRlZENvbnRleHQuZ2V0UGF0aCgpLFxuXHRcdFx0XHR2aWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0Vmlldyh0aGlzKSxcblx0XHRcdFx0Y29udHJvbGxlciA9IHZpZXcuZ2V0Q29udHJvbGxlcigpLFxuXHRcdFx0XHRlZGl0RmxvdyA9IGNvbnRyb2xsZXIuZWRpdEZsb3c7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRhd2FpdCAoYWN0aXZhdGVkQ29udGV4dC5jcmVhdGVkKCkgPz8gUHJvbWlzZS5yZXNvbHZlKCkpO1xuXHRcdFx0XHRhd2FpdCBlZGl0Rmxvdy5vbkFmdGVyQ3JlYXRlKHsgY29udGV4dDogYWN0aXZhdGVkQ29udGV4dCB9KTtcblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0TG9nLndhcm5pbmcoYEZhaWxlZCB0byBhY3RpdmF0ZSBjb250ZXh0ICR7YWN0aXZhdGVkQ29udGV4dC5nZXRQYXRoKCl9YCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGNvbnRlbnQgPSBhY3RpdmF0ZWRDb250ZXh0LmdldFBhdGgoKTtcblx0XHRcdGNvbnN0IGNvbGxhYm9yYXRpdmVEcmFmdCA9IHZpZXcuZ2V0Q29udHJvbGxlcigpLmNvbGxhYm9yYXRpdmVEcmFmdDtcblx0XHRcdC8vIFNlbmQgbm90aWZpY2F0aW9uIHRvIG90aGVyIHVzZXJzIG9ubHkgYWZ0ZXIgdGhlIGNyZWF0aW9uIGhhcyBiZWVuIGZpbmFsaXplZFxuXHRcdFx0Y29sbGFib3JhdGl2ZURyYWZ0LnNlbmQoeyBhY3Rpb246IEFjdGl2aXR5LkNyZWF0ZSwgY29udGVudCB9KTtcblx0XHRcdC8vIFNpbmNlIHRoZSBwYXRoIG9mIHRoZSBjb250ZXh0IGhhcyBjaGFuZ2VkIGR1cmluZyBhY3RpdmF0aW9uLCB3ZSBuZWVkIHRvIHVwZGF0ZSBhbGwgY29sbGFib3JhdGlvbiBsb2Nrc1xuXHRcdFx0Ly8gdGhhdCB3ZXJlIHVzaW5nIHRoZSB0cmFuc2llbnQgcGF0aFxuXHRcdFx0Y29sbGFib3JhdGl2ZURyYWZ0LnVwZGF0ZUxvY2tzRm9yQ29udGV4dFBhdGgodHJhbnNpZW50UGF0aCwgYWN0aXZhdGVkQ29udGV4dC5nZXRQYXRoKCkpO1xuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJGYWlsZWQgdG8gYWN0aXZhdGUgbmV3IHJvdyAtXCIsIGVycm9yIGFzIEVycm9yKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBkZWZhdWx0IHZhbHVlcyBmcm9tIHRoZSBEZWZhdWx0VmFsdWVzIGZ1bmN0aW9uLlxuXHQgKiBAcGFyYW0gbGlzdEJpbmRpbmcgVGhlIGN1cnJlbnQgbGlzdCBiaW5kaW5nXG5cdCAqIEByZXR1cm5zIFRoZSBEZWZhdWx0VmFsdWVzIGZ1bmN0aW9uIChvciB1bmRlZmluZWQgaWYgbm8gZnVuY3Rpb24gaXMgZm91bmQpXG5cdCAqL1xuXHRnZXREZWZhdWx0VmFsdWVzRnVuY3Rpb24obGlzdEJpbmRpbmc6IE9EYXRhTGlzdEJpbmRpbmcpOiBEZWZhdWx0VmFsdWVzRnVuY3Rpb24gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG1vZGVsID0gbGlzdEJpbmRpbmcuZ2V0TW9kZWwoKTtcblx0XHRjb25zdCBtZXRhTW9kZWwgPSBtb2RlbC5nZXRNZXRhTW9kZWwoKTtcblx0XHRjb25zdCBtZXRhQ29udGV4dCA9IG1ldGFNb2RlbC5nZXRNZXRhQ29udGV4dChsaXN0QmluZGluZy5nZXRSZXNvbHZlZFBhdGgoKSBhcyBzdHJpbmcpO1xuXHRcdGNvbnN0IGxpc3RCaW5kaW5nT2JqZWN0UGF0aCA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyhtZXRhQ29udGV4dCk7XG5cblx0XHRjb25zdCBkZWZhdWx0RnVuY09uVGFyZ2V0T2JqZWN0ID0gKGxpc3RCaW5kaW5nT2JqZWN0UGF0aC50YXJnZXRPYmplY3QgYXMgTmF2aWdhdGlvblByb3BlcnR5IHwgRW50aXR5U2V0KS5hbm5vdGF0aW9ucy5Db21tb25cblx0XHRcdD8uRGVmYXVsdFZhbHVlc0Z1bmN0aW9uO1xuXHRcdGNvbnN0IGRlZmF1bHRGdW5jT25UYXJnZXRFbnRpdHlTZXQgPSAobGlzdEJpbmRpbmdPYmplY3RQYXRoLnRhcmdldEVudGl0eVNldCBhcyBFbnRpdHlTZXQgfCB1bmRlZmluZWQpPy5hbm5vdGF0aW9ucy5Db21tb25cblx0XHRcdD8uRGVmYXVsdFZhbHVlc0Z1bmN0aW9uO1xuXG5cdFx0cmV0dXJuIGRlZmF1bHRGdW5jT25UYXJnZXRPYmplY3QgPz8gZGVmYXVsdEZ1bmNPblRhcmdldEVudGl0eVNldDtcblx0fVxuXG5cdC8qKlxuXHQgKiBFbXB0eVJvd3NFbmFibGVkIHNldHRlci5cblx0ICogQHBhcmFtIGVuYWJsZW1lbnRcblx0ICovXG5cdHNldEVtcHR5Um93c0VuYWJsZWQodGhpczogSVRhYmxlQmxvY2sgJiBFbXB0eVJvd3NIYW5kbGVyLCBlbmFibGVtZW50OiBib29sZWFuKTogdm9pZCB7XG5cdFx0dGhpcy5zZXRQcm9wZXJ0eShcImVtcHR5Um93c0VuYWJsZWRcIiwgZW5hYmxlbWVudCk7XG5cdFx0Y29uc3QgbmF2aWdhdGlvblBhdGggPSB0aGlzLmdldENvbnRlbnQoKS5kYXRhKCkubmF2aWdhdGlvblBhdGgsXG5cdFx0XHRhcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodGhpcy5nZXRDb250ZW50KCkpO1xuXHRcdGlmIChlbmFibGVtZW50KSB7XG5cdFx0XHRjb25zdCBsaXN0QmluZGluZyA9IHRoaXMuZ2V0Q29udGVudCgpLmdldFJvd0JpbmRpbmcoKTtcblx0XHRcdGNvbnN0IGRlZmF1bHRWYWx1ZXNGdW5jdGlvbiA9IGxpc3RCaW5kaW5nPy5nZXRSZXNvbHZlZFBhdGgoKSA/IHRoaXMuZ2V0RGVmYXVsdFZhbHVlc0Z1bmN0aW9uKGxpc3RCaW5kaW5nKSA6IHVuZGVmaW5lZDtcblx0XHRcdGlmIChkZWZhdWx0VmFsdWVzRnVuY3Rpb24pIHtcblx0XHRcdFx0YXBwQ29tcG9uZW50LmdldFNpZGVFZmZlY3RzU2VydmljZSgpLnJlZ2lzdGVyVGFyZ2V0Q2FsbGJhY2sobmF2aWdhdGlvblBhdGgsIHRoaXMudXBkYXRlRW1wdHlSb3dzLmJpbmQodGhpcykpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRhcHBDb21wb25lbnQuZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlKCkuZGVyZWdpc3RlclRhcmdldENhbGxiYWNrKG5hdmlnYXRpb25QYXRoKTtcblx0XHR9XG5cdFx0dGhpcy5zZXRVcEVtcHR5Um93cyh0aGlzLmdldENvbnRlbnQoKSk7XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlIGFuZCByZWNyZWF0ZSB0aGUgZW1wdHkgcm93cyBpbiBvcmRlciB0byBnZXQgYW55IHVwZGF0ZWQgZGVmYXVsdCB2YWx1ZXMuXG5cdCAqXG5cdCAqL1xuXHRhc3luYyB1cGRhdGVFbXB0eVJvd3ModGhpczogSVRhYmxlQmxvY2sgJiBFbXB0eVJvd3NIYW5kbGVyKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgdGFibGUgPSB0aGlzLmdldENvbnRlbnQoKTtcblx0XHRjb25zdCBiaW5kaW5nID0gdGFibGUuZ2V0Um93QmluZGluZygpO1xuXHRcdGNvbnN0IGJpbmRpbmdIZWFkZXJDb250ZXh0ID0gYmluZGluZy5nZXRIZWFkZXJDb250ZXh0KCk7XG5cdFx0aWYgKGJpbmRpbmcgJiYgYmluZGluZy5pc1Jlc29sdmVkKCkgJiYgYmluZGluZy5pc0xlbmd0aEZpbmFsKCkgJiYgYmluZGluZ0hlYWRlckNvbnRleHQpIHtcblx0XHRcdGNvbnN0IGNvbnRleHRQYXRoID0gYmluZGluZ0hlYWRlckNvbnRleHQuZ2V0UGF0aCgpO1xuXHRcdFx0dGhpcy5fZGVsZXRlRW1wdHlSb3dzKGJpbmRpbmcsIGNvbnRleHRQYXRoKTtcblx0XHRcdGF3YWl0IHRoaXMuY3JlYXRlRW1wdHlSb3dzKGJpbmRpbmcsIHRhYmxlKTtcblx0XHR9XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0YXN5bmMgc2V0VXBFbXB0eVJvd3ModGhpczogSVRhYmxlQmxvY2sgJiBFbXB0eVJvd3NIYW5kbGVyLCB0YWJsZTogTURDVGFibGUsIGNyZWF0ZUJ1dHRvbldhc1ByZXNzZWQgPSBmYWxzZSk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGlmICh0aGlzLmdldFRhYmxlRGVmaW5pdGlvbigpLmNvbnRyb2w/LmNyZWF0aW9uTW9kZSAhPT0gQ3JlYXRpb25Nb2RlLklubGluZUNyZWF0aW9uUm93cykge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IHVpTW9kZWwgPSB0YWJsZS5nZXRNb2RlbChcInVpXCIpIGFzIEpTT05Nb2RlbCB8IHVuZGVmaW5lZDtcblx0XHRpZiAoIXVpTW9kZWwpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKHVpTW9kZWwuZ2V0UHJvcGVydHkoXCIvaXNFZGl0YWJsZVBlbmRpbmdcIikpIHtcblx0XHRcdC8vIFRoZSBlZGl0IG1vZGUgaXMgc3RpbGwgYmVpbmcgY29tcHV0ZWQsIHNvIHdlIHdhaXQgdW50aWwgdGhpcyBjb21wdXRhdGlvbiBpcyBkb25lIGJlZm9yZSBjaGVja2luZyBpdHMgdmFsdWVcblx0XHRcdGNvbnN0IHdhdGNoQmluZGluZyA9IHVpTW9kZWwuYmluZFByb3BlcnR5KFwiL2lzRWRpdGFibGVQZW5kaW5nXCIpO1xuXHRcdFx0YXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcblx0XHRcdFx0Y29uc3QgZm5IYW5kbGVyID0gKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdHdhdGNoQmluZGluZy5kZXRhY2hDaGFuZ2UoZm5IYW5kbGVyKTtcblx0XHRcdFx0XHR3YXRjaEJpbmRpbmcuZGVzdHJveSgpO1xuXHRcdFx0XHRcdHJlc29sdmUoKTtcblx0XHRcdFx0fTtcblx0XHRcdFx0d2F0Y2hCaW5kaW5nLmF0dGFjaENoYW5nZShmbkhhbmRsZXIpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGNvbnN0IGJpbmRpbmcgPSB0YWJsZS5nZXRSb3dCaW5kaW5nKCkgYXMgT0RhdGFMaXN0QmluZGluZyB8IHVuZGVmaW5lZDtcblx0XHRjb25zdCBiaW5kaW5nSGVhZGVyQ29udGV4dCA9IGJpbmRpbmc/LmdldEhlYWRlckNvbnRleHQoKTtcblx0XHRpZiAoYmluZGluZyAmJiBiaW5kaW5nLmlzUmVzb2x2ZWQoKSAmJiBiaW5kaW5nLmlzTGVuZ3RoRmluYWwoKSAmJiBiaW5kaW5nSGVhZGVyQ29udGV4dCkge1xuXHRcdFx0Y29uc3QgY29udGV4dFBhdGggPSBiaW5kaW5nSGVhZGVyQ29udGV4dC5nZXRQYXRoKCk7XG5cdFx0XHRpZiAoIXRoaXMuZW1wdHlSb3dzRW5hYmxlZCkge1xuXHRcdFx0XHR0aGlzLnJlbW92ZUVtcHR5Um93c01lc3NhZ2VzKCk7XG5cdFx0XHRcdHJldHVybiB0aGlzLl9kZWxldGVFbXB0eVJvd3MoYmluZGluZywgY29udGV4dFBhdGgpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCFDb21tb25VdGlscy5nZXRJc0VkaXRhYmxlKHRhYmxlKSkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRpZiAoXG5cdFx0XHRcdHRoaXMuZ2V0VGFibGVEZWZpbml0aW9uKCkuY29udHJvbD8uaW5saW5lQ3JlYXRpb25Sb3dzSGlkZGVuSW5FZGl0TW9kZSAmJlxuXHRcdFx0XHQhdGFibGUuZ2V0QmluZGluZ0NvbnRleHQoXCJwYWdlSW50ZXJuYWxcIik/LmdldFByb3BlcnR5KFwiY3JlYXRlTW9kZVwiKSAmJlxuXHRcdFx0XHQhY3JlYXRlQnV0dG9uV2FzUHJlc3NlZFxuXHRcdFx0KSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGluYWN0aXZlQ29udGV4dCA9IGJpbmRpbmcuZ2V0QWxsQ3VycmVudENvbnRleHRzKCkuZmluZChmdW5jdGlvbiAoY29udGV4dCkge1xuXHRcdFx0XHQvLyB3aGVuIHRoaXMgaXMgY2FsbGVkIGZyb20gY29udHJvbGxlciBjb2RlIHdlIG5lZWQgdG8gY2hlY2sgdGhhdCBpbmFjdGl2ZSBjb250ZXh0cyBhcmUgc3RpbGwgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgdGFibGUgY29udGV4dFxuXHRcdFx0XHRyZXR1cm4gY29udGV4dC5pc0luYWN0aXZlKCkgJiYgY29udGV4dC5nZXRQYXRoKCkuc3RhcnRzV2l0aChjb250ZXh0UGF0aCk7XG5cdFx0XHR9KTtcblx0XHRcdGlmICghaW5hY3RpdmVDb250ZXh0KSB7XG5cdFx0XHRcdHRoaXMucmVtb3ZlRW1wdHlSb3dzTWVzc2FnZXMoKTtcblx0XHRcdFx0YXdhaXQgdGhpcy5jcmVhdGVFbXB0eVJvd3MoYmluZGluZywgdGFibGUpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBEZWxldGVzIGluYWN0aXZlIHJvd3MgZnJvbSB0aGUgdGFibGUgbGlzdEJpbmRpbmcuXG5cdCAqIEBwYXJhbSBiaW5kaW5nXG5cdCAqIEBwYXJhbSBjb250ZXh0UGF0aFxuXHQgKi9cblx0X2RlbGV0ZUVtcHR5Um93cyhiaW5kaW5nOiBPRGF0YUxpc3RCaW5kaW5nLCBjb250ZXh0UGF0aDogc3RyaW5nKTogdm9pZCB7XG5cdFx0Zm9yIChjb25zdCBjb250ZXh0IG9mIGJpbmRpbmcuZ2V0QWxsQ3VycmVudENvbnRleHRzKCkpIHtcblx0XHRcdGlmIChjb250ZXh0LmlzSW5hY3RpdmUoKSAmJiBjb250ZXh0LmdldFBhdGgoKS5zdGFydHNXaXRoKGNvbnRleHRQYXRoKSkge1xuXHRcdFx0XHRjb250ZXh0LmRlbGV0ZSgpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBjdXJyZW50IG51bWJlciBvZiBpbmFjdGl2ZSBjb250ZXh0cyB3aXRoaW4gdGhlIGxpc3QgYmluZGluZy5cblx0ICogQHBhcmFtIGJpbmRpbmcgRGF0YSBsaXN0IGJpbmRpbmdcblx0ICogQHJldHVybnMgVGhlIG51bWJlciBvZiBpbmFjdGl2ZSBjb250ZXh0c1xuXHQgKi9cblx0Z2V0SW5hY3RpdmVDb250ZXh0TnVtYmVyKGJpbmRpbmc6IE9EYXRhTGlzdEJpbmRpbmcpOiBudW1iZXIge1xuXHRcdHJldHVybiBiaW5kaW5nLmdldEFsbEN1cnJlbnRDb250ZXh0cygpLmZpbHRlcigoY29udGV4dCkgPT4gY29udGV4dC5pc0luYWN0aXZlKCkpLmxlbmd0aDtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHRoZSB2YWxpZGF0aW9uIG9mIHRoZSBlbXB0eSByb3cuXG5cdCAqIEBwYXJhbSBjb250ZXh0IFRoZSBjb250ZXh0IG9mIHRoZSBlbXB0eSByb3dcblx0ICogQHJldHVybnMgVGhlIHZhbGlkYXRpb24gc3RhdHVzXG5cdCAqL1xuXHR2YWxpZGF0ZUVtcHR5Um93KHRoaXM6IElUYWJsZUJsb2NrICYgRW1wdHlSb3dzSGFuZGxlciwgY29udGV4dDogQ29udGV4dCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IHJlcXVpcmVkUHJvcGVydGllcyA9IHRoaXMuZ2V0VGFibGVEZWZpbml0aW9uKCkuYW5ub3RhdGlvbi5yZXF1aXJlZFByb3BlcnRpZXM7XG5cdFx0aWYgKHJlcXVpcmVkUHJvcGVydGllcz8ubGVuZ3RoKSB7XG5cdFx0XHR0aGlzLnJlbW92ZUVtcHR5Um93c01lc3NhZ2VzKGNvbnRleHQpO1xuXHRcdFx0Y29uc3QgbWlzc2luZ1Byb3BlcnRpZXMgPSByZXF1aXJlZFByb3BlcnRpZXMuZmlsdGVyKChyZXF1aXJlZFByb3BlcnR5KSA9PiAhY29udGV4dC5nZXRPYmplY3QocmVxdWlyZWRQcm9wZXJ0eSkpO1xuXHRcdFx0aWYgKG1pc3NpbmdQcm9wZXJ0aWVzLmxlbmd0aCkge1xuXHRcdFx0XHRjb25zdCByZXNvdXJjZUJ1bmRsZSA9IExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUubWFjcm9zXCIpITtcblx0XHRcdFx0Y29uc3QgbWVzc2FnZXM6IE1lc3NhZ2VbXSA9IFtdO1xuXHRcdFx0XHRsZXQgZGlzcGxheWVkQ29sdW1uOiBNRENDb2x1bW4gfCB1bmRlZmluZWQ7XG5cdFx0XHRcdGZvciAoY29uc3QgbWlzc2luZ1Byb3BlcnR5IG9mIG1pc3NpbmdQcm9wZXJ0aWVzKSB7XG5cdFx0XHRcdFx0bGV0IGVycm9yTWVzc2FnZTogc3RyaW5nO1xuXHRcdFx0XHRcdGNvbnN0IG1pc3NpbmdDb2x1bW4gPSB0aGlzLmdldFRhYmxlRGVmaW5pdGlvbigpLmNvbHVtbnMuZmluZChcblx0XHRcdFx0XHRcdCh0YWJsZUNvbHVtbikgPT5cblx0XHRcdFx0XHRcdFx0KHRhYmxlQ29sdW1uIGFzIEFubm90YXRpb25UYWJsZUNvbHVtbikucmVsYXRpdmVQYXRoID09PSBtaXNzaW5nUHJvcGVydHkgfHxcblx0XHRcdFx0XHRcdFx0KHRhYmxlQ29sdW1uLnByb3BlcnR5SW5mb3MgJiYgdGFibGVDb2x1bW4ucHJvcGVydHlJbmZvcy5pbmNsdWRlcyhtaXNzaW5nUHJvcGVydHkpKVxuXHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRpZiAoIW1pc3NpbmdDb2x1bW4pIHtcblx0XHRcdFx0XHRcdGVycm9yTWVzc2FnZSA9IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX1RBQkxFX0VNUFRZUk9XX01BTkRBVE9SWVwiLCBbbWlzc2luZ1Byb3BlcnR5XSk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGRpc3BsYXllZENvbHVtbiA9IHRoaXMuZ2V0Q29udGVudCgpXG5cdFx0XHRcdFx0XHRcdC5nZXRDb2x1bW5zKClcblx0XHRcdFx0XHRcdFx0LmZpbmQoKG1kY0NvbHVtbikgPT4gbWRjQ29sdW1uLmdldFByb3BlcnR5S2V5KCkgPT09IG1pc3NpbmdDb2x1bW4ubmFtZSk7XG5cdFx0XHRcdFx0XHRlcnJvck1lc3NhZ2UgPSByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFxuXHRcdFx0XHRcdFx0XHRkaXNwbGF5ZWRDb2x1bW4gPyBcIk1fVEFCTEVfRU1QVFlST1dfTUFOREFUT1JZXCIgOiBcIk1fVEFCTEVfRU1QVFlST1dfTUFOREFUT1JZX0hJRERFTlwiLFxuXHRcdFx0XHRcdFx0XHRbZGlzcGxheWVkQ29sdW1uPy5nZXRIZWFkZXIoKSB8fCBtaXNzaW5nQ29sdW1uLmxhYmVsXVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRtZXNzYWdlcy5wdXNoKFxuXHRcdFx0XHRcdFx0bmV3IE1lc3NhZ2Uoe1xuXHRcdFx0XHRcdFx0XHRtZXNzYWdlOiBlcnJvck1lc3NhZ2UsXG5cdFx0XHRcdFx0XHRcdHByb2Nlc3NvcjogdGhpcy5nZXRNb2RlbCgpLFxuXHRcdFx0XHRcdFx0XHR0eXBlOiBNZXNzYWdlVHlwZS5FcnJvcixcblx0XHRcdFx0XHRcdFx0dGVjaG5pY2FsOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0cGVyc2lzdGVudDogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0dGVjaG5pY2FsRGV0YWlsczoge1xuXHRcdFx0XHRcdFx0XHRcdHRhYmxlSWQ6IHRoaXMuZ2V0Q29udGVudCgpLmdldElkKCksIC8vIE5lZWQgdG8gZG8gaXQgc2luY2UgaGFuZGxlQ3JlYXRlQWN0aXZhdGUgY2FuIGJlIHRyaWdnZXJlZCBtdWx0aXBsZSB0aW1lcyAoZXh0cmEgcHJvcGVydGllcyBzZXQgYnkgdmFsdWUgaGVscCkgYmVmb3JlIGNvbnRyb2xJZHMgYXJlIHNldCBvbiB0aGUgbWVzc2FnZVxuXHRcdFx0XHRcdFx0XHRcdGVtcHR5Um93TWVzc2FnZTogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRtaXNzaW5nQ29sdW1uOiBkaXNwbGF5ZWRDb2x1bW4gPyB1bmRlZmluZWQgOiBtaXNzaW5nUHJvcGVydHkgLy8gbmVlZGVkIHRvIGNoYW5nZSB0aGUgbWVzc2FnZVN0cmlwIG1lc3NhZ2Vcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0dGFyZ2V0OiBgJHtjb250ZXh0Py5nZXRQYXRoKCl9LyR7bWlzc2luZ1Byb3BlcnR5fWBcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRNZXNzYWdpbmcuYWRkTWVzc2FnZXMobWVzc2FnZXMpO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZXMgdGhlIG1lc3NhZ2VzIHJlbGF0ZWQgdG8gdGhlIGVtcHR5IHJvd3MuXG5cdCAqIEBwYXJhbSBpbmFjdGl2ZUNvbnRleHRzIFRoZSBjb250ZXh0cyBvZiB0aGUgZW1wdHkgcm93cywgaWYgbm90IHByb3ZpZGVkLCB0aGUgbWVzc2FnZXMgb2YgYWxsIGVtcHR5IHJvd3MgYXJlIHJlbW92ZWRcblx0ICovXG5cdHJlbW92ZUVtcHR5Um93c01lc3NhZ2VzKHRoaXM6IElUYWJsZUJsb2NrICYgRW1wdHlSb3dzSGFuZGxlciwgaW5hY3RpdmVDb250ZXh0cz86IENvbnRleHQgfCBDb250ZXh0W10pOiB2b2lkIHtcblx0XHRNZXNzYWdpbmcucmVtb3ZlTWVzc2FnZXMoXG5cdFx0XHQoTWVzc2FnaW5nLmdldE1lc3NhZ2VNb2RlbCgpLmdldERhdGEoKSBhcyBNZXNzYWdlW10pLmZpbHRlcigobXNnKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHRlY2huaWNhbERldGFpbHMgPSAobXNnLmdldFRlY2huaWNhbERldGFpbHMoKSB8fCB7fSkgYXMgeyB0YWJsZUlkPzogc3RyaW5nOyBlbXB0eVJvd01lc3NhZ2U/OiBib29sZWFuIH07XG5cblx0XHRcdFx0Ly8gQ2hlY2sgaWYgbXNnIHRhcmdldCBzdGFydHMgd2l0aCBhbnkgcGF0aCBpbiB0aGUgaW5hY3RpdmVDb250ZXh0IGFycmF5XG5cdFx0XHRcdGNvbnN0IGNvbnRleHRNYXRjaGVzID0gQXJyYXkuaXNBcnJheShpbmFjdGl2ZUNvbnRleHRzKVxuXHRcdFx0XHRcdD8gaW5hY3RpdmVDb250ZXh0cy5zb21lKChjb250ZXh0KSA9PiBtc2cuZ2V0VGFyZ2V0cygpLnNvbWUoKHZhbHVlKSA9PiB2YWx1ZS5zdGFydHNXaXRoKGNvbnRleHQuZ2V0UGF0aCgpKSkpXG5cdFx0XHRcdFx0OiAhaW5hY3RpdmVDb250ZXh0cyB8fCBtc2cuZ2V0VGFyZ2V0cygpLnNvbWUoKHZhbHVlKSA9PiB2YWx1ZS5zdGFydHNXaXRoKGluYWN0aXZlQ29udGV4dHMuZ2V0UGF0aCgpKSk7XG5cblx0XHRcdFx0cmV0dXJuIGNvbnRleHRNYXRjaGVzICYmIHRlY2huaWNhbERldGFpbHMuZW1wdHlSb3dNZXNzYWdlICYmIHRlY2huaWNhbERldGFpbHMudGFibGVJZCA9PT0gdGhpcy5nZXRDb250ZW50KCkuZ2V0SWQoKTtcblx0XHRcdH0pXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGlvbiBvZiBpbmFjdGl2ZSByb3dzIGZvciB0aGUgdGFibGUgaW4gY3JlYXRpb24gbW9kZSBcIklubGluZUNyZWF0aW9uUm93c1wiLlxuXHQgKiBAcGFyYW0gYmluZGluZyBEYXRhIGxpc3QgYmluZGluZ1xuXHQgKiBAcGFyYW0gdGFibGUgVGhlIHRhYmxlIGJlaW5nIGVkaXRlZFxuXHQgKiBAcGFyYW0gcmVjcmVhdGVPbmVSb3cgYHRydWVgIGlmIHRoZSBjYWxsIGlzIHRvIHJlY3JlYXRlIGFuIGVtcHR5TGluZVxuXHQgKiBAcGFyYW0gbmV3SW5saW5lQ3JlYXRpb25Sb3dGcm9tUGFzdGUgTnVtYmVyIG9mIG5ldyBpbmFjdGl2ZSByb3dzIHRvIGJlIGNyZWF0ZWRcblx0ICogQHBhcmFtIGZvcmNlQ3JlYXRlYXRFbmQgYHRydWVgIGlmIHRoZSBuZXcgcm93IGlzIHRvIGJlIGNyZWF0ZWQgYXQgdGhlIGVuZCBvZiB0aGUgdGFibGVcblx0ICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGNyZWF0ZWQgY29udGV4dHMgb3Igdm9pZCBpZiB0aGUgY3JlYXRpb24gZmFpbGVkXG5cdCAqL1xuXHRhc3luYyBjcmVhdGVFbXB0eVJvd3MoXG5cdFx0dGhpczogSVRhYmxlQmxvY2sgJiBFbXB0eVJvd3NIYW5kbGVyLFxuXHRcdGJpbmRpbmc6IE9EYXRhTGlzdEJpbmRpbmcsXG5cdFx0dGFibGU6IE1EQ1RhYmxlLFxuXHRcdHJlY3JlYXRlT25lUm93ID0gZmFsc2UsXG5cdFx0bmV3SW5saW5lQ3JlYXRpb25Sb3dGcm9tUGFzdGU/OiBudW1iZXIsXG5cdFx0Zm9yY2VDcmVhdGVhdEVuZCA9IGZhbHNlXG5cdCk6IFByb21pc2U8dm9pZCB8IENvbnRleHRbXT4ge1xuXHRcdGNvbnN0IGlubGluZUNyZWF0aW9uUm93Q291bnQgPSBuZXdJbmxpbmVDcmVhdGlvblJvd0Zyb21QYXN0ZSA/PyAodGhpcy5nZXRUYWJsZURlZmluaXRpb24oKS5jb250cm9sPy5pbmxpbmVDcmVhdGlvblJvd0NvdW50IHx8IDEpO1xuXHRcdGlmICh0aGlzLmNyZWF0aW5nRW1wdHlSb3dzIHx8IHRoaXMuZ2V0SW5hY3RpdmVDb250ZXh0TnVtYmVyKGJpbmRpbmcpID4gaW5saW5lQ3JlYXRpb25Sb3dDb3VudCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBkYXRhID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogaW5saW5lQ3JlYXRpb25Sb3dDb3VudCB9LCAoKSA9PiAoe30pKSxcblx0XHRcdGF0RW5kID0gdGFibGUuZGF0YShcInRhYmxlVHlwZVwiKSAhPT0gXCJSZXNwb25zaXZlVGFibGVcIixcblx0XHRcdGluYWN0aXZlID0gdHJ1ZSxcblx0XHRcdHZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KHRhYmxlKSxcblx0XHRcdGNvbnRyb2xsZXIgPSB2aWV3LmdldENvbnRyb2xsZXIoKSxcblx0XHRcdGVkaXRGbG93ID0gY29udHJvbGxlci5lZGl0Rmxvdyxcblx0XHRcdGFwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudCh0YWJsZSk7XG5cblx0XHR0aGlzLmNyZWF0aW5nRW1wdHlSb3dzID0gdHJ1ZTtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgZGF0YUZvckNyZWF0ZSA9IHJlY3JlYXRlT25lUm93ID8gW3t9XSA6IGRhdGE7XG5cdFx0XHRjb25zdCBjb250ZXh0cyA9IGF3YWl0IGVkaXRGbG93LmNyZWF0ZU11bHRpcGxlRG9jdW1lbnRzKFxuXHRcdFx0XHRiaW5kaW5nLFxuXHRcdFx0XHQvLyBkdXJpbmcgYSBsaXZlIGNoYW5nZSwgb25seSAxIG5ldyBkb2N1bWVudCBpcyBjcmVhdGVkXG5cdFx0XHRcdGRhdGFGb3JDcmVhdGUsXG5cdFx0XHRcdC8vIFdoZW4gZWRpdGluZyBhbiBlbXB0eSByb3csIHRoZSBuZXcgZW1wdHkgcm93IGlzIHRvIGJlIGNyZWF0ZWQganVzdCBiZWxvdyBhbmQgbm90IGFib3ZlXG5cdFx0XHRcdHJlY3JlYXRlT25lUm93IHx8IGZvcmNlQ3JlYXRlYXRFbmQgPyB0cnVlIDogYXRFbmQsXG5cdFx0XHRcdGZhbHNlLFxuXHRcdFx0XHRjb250cm9sbGVyLmVkaXRGbG93Lm9uQmVmb3JlQ3JlYXRlLFxuXHRcdFx0XHRpbmFjdGl2ZVxuXHRcdFx0KTtcblx0XHRcdGFwcENvbXBvbmVudC5nZXRTaWRlRWZmZWN0c1NlcnZpY2UoKS5yZXF1ZXN0U2lkZUVmZmVjdHNGb3JOYXZpZ2F0aW9uUHJvcGVydHkoYmluZGluZy5nZXRQYXRoKCksIHZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKSk7XG5cdFx0XHRjb250ZXh0cz8uZm9yRWFjaChhc3luYyBmdW5jdGlvbiAoY29udGV4dDogQ29udGV4dCkge1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdGF3YWl0IGNvbnRleHQuY3JlYXRlZCgpO1xuXHRcdFx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0XHRcdGlmICghKGVycm9yIGFzIENvbnRleHRFcnJvclR5cGUpLmNhbmNlbGVkKSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBlcnJvcjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIGNvbnRleHRzO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdExvZy5lcnJvcihlIGFzIHN0cmluZyk7XG5cdFx0fSBmaW5hbGx5IHtcblx0XHRcdHRoaXMuY3JlYXRpbmdFbXB0eVJvd3MgPSBmYWxzZTtcblx0XHR9XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7TUF1QnFCQSxnQkFBZ0I7SUFBQSxTQUFBQSxpQkFBQTtJQUFBQyxRQUFBLEdBQUFELGdCQUFBO0lBQUEsSUFBQUUsTUFBQSxHQUFBRixnQkFBQSxDQUFBRyxTQUFBO0lBQUFELE1BQUEsQ0FHcENFLFVBQVUsR0FBVixTQUFBQSxVQUFVQSxDQUFDQyxVQUFvQixFQUFRO01BQ3RDO0lBQUE7O0lBR0Q7QUFDRDtBQUNBO0FBQ0EsT0FIQztJQUFBSCxNQUFBLENBSUFJLGtCQUFrQixHQUFsQixTQUFBQSxrQkFBa0JBLENBQXVDQyxRQUErQixFQUFRO01BQy9GLE1BQU1DLEtBQUssR0FBR0QsUUFBUSxDQUFDRSxTQUFTLENBQUMsQ0FBQztRQUNqQ0MsY0FBYyxHQUFHRixLQUFLLENBQUNHLGlCQUFpQixDQUFDLENBQVk7UUFDckRDLE9BQU8sR0FBR0YsY0FBYyxDQUFDRyxVQUFVLENBQUMsQ0FBQztNQUN0QztNQUNBLElBQUlILGNBQWMsQ0FBQ0ksVUFBVSxDQUFDLENBQUMsRUFBRTtRQUNoQyxNQUFNQyxLQUFLLEdBQUcsSUFBSSxFQUFFQyxVQUFVLENB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
|
|
353
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFbXB0eVJvd3NIYW5kbGVyIiwiX2V4cG9ydHMiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJzZXR1cE1peGluIiwiX2Jhc2VDbGFzcyIsIl9vbkZpZWxkTGl2ZUNoYW5nZSIsInVpNUV2ZW50IiwiZmllbGQiLCJnZXRTb3VyY2UiLCJiaW5kaW5nQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0IiwiYmluZGluZyIsImdldEJpbmRpbmciLCJpc0luYWN0aXZlIiwidGFibGUiLCJnZXRDb250ZW50IiwiY3JlYXRlRW1wdHlSb3dzIiwiX2hhbmRsZUNyZWF0ZUFjdGl2YXRlIiwiYWN0aXZhdGVFdmVudCIsImFjdGl2YXRlZENvbnRleHQiLCJnZXRQYXJhbWV0ZXIiLCJ2YWxpZGF0ZUVtcHR5Um93IiwicHJldmVudERlZmF1bHQiLCJ0cmFuc2llbnRQYXRoIiwiZ2V0UGF0aCIsInZpZXciLCJDb21tb25VdGlscyIsImdldFRhcmdldFZpZXciLCJjb250cm9sbGVyIiwiZ2V0Q29udHJvbGxlciIsImVkaXRGbG93IiwiY3JlYXRlZCIsIlByb21pc2UiLCJyZXNvbHZlIiwib25BZnRlckNyZWF0ZSIsImNvbnRleHQiLCJlIiwiTG9nIiwid2FybmluZyIsImNvbnRlbnQiLCJjb2xsYWJvcmF0aXZlRHJhZnQiLCJzZW5kIiwiYWN0aW9uIiwiQWN0aXZpdHkiLCJDcmVhdGUiLCJ1cGRhdGVMb2Nrc0ZvckNvbnRleHRQYXRoIiwiZXJyb3IiLCJnZXREZWZhdWx0VmFsdWVzRnVuY3Rpb24iLCJsaXN0QmluZGluZyIsIm1vZGVsIiwiZ2V0TW9kZWwiLCJtZXRhTW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJtZXRhQ29udGV4dCIsImdldE1ldGFDb250ZXh0IiwiZ2V0UmVzb2x2ZWRQYXRoIiwibGlzdEJpbmRpbmdPYmplY3RQYXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwiZGVmYXVsdEZ1bmNPblRhcmdldE9iamVjdCIsInRhcmdldE9iamVjdCIsImFubm90YXRpb25zIiwiQ29tbW9uIiwiRGVmYXVsdFZhbHVlc0Z1bmN0aW9uIiwiZGVmYXVsdEZ1bmNPblRhcmdldEVudGl0eVNldCIsInRhcmdldEVudGl0eVNldCIsInNldEVtcHR5Um93c0VuYWJsZWQiLCJlbmFibGVtZW50Iiwic2V0UHJvcGVydHkiLCJuYXZpZ2F0aW9uUGF0aCIsImRhdGEiLCJhcHBDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJnZXRSb3dCaW5kaW5nIiwiZGVmYXVsdFZhbHVlc0Z1bmN0aW9uIiwidW5kZWZpbmVkIiwiZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlIiwicmVnaXN0ZXJUYXJnZXRDYWxsYmFjayIsInVwZGF0ZUVtcHR5Um93cyIsImJpbmQiLCJkZXJlZ2lzdGVyVGFyZ2V0Q2FsbGJhY2siLCJ0YWJsZURlZmF1bHRzUHJvbWlzZSIsInRoZW4iLCJ0YWJsZURlZmF1bHREYXRhIiwic2V0VXBFbXB0eVJvd3MiLCJjYXRjaCIsImJpbmRpbmdIZWFkZXJDb250ZXh0IiwiZ2V0SGVhZGVyQ29udGV4dCIsImlzUmVzb2x2ZWQiLCJpc0xlbmd0aEZpbmFsIiwiY29udGV4dFBhdGgiLCJfZGVsZXRlRW1wdHlSb3dzIiwiX3ZhbGlkYXRlQW5kUmV0cmlldmVCaW5kaW5nIiwiZ2V0VGFibGVEZWZpbml0aW9uIiwiY29udHJvbCIsImNyZWF0aW9uTW9kZSIsIkNyZWF0aW9uTW9kZSIsIklubGluZUNyZWF0aW9uUm93cyIsInVpTW9kZWwiLCJnZXRQcm9wZXJ0eSIsIndhdGNoQmluZGluZyIsImJpbmRQcm9wZXJ0eSIsImZuSGFuZGxlciIsImRldGFjaENoYW5nZSIsImRlc3Ryb3kiLCJhdHRhY2hDaGFuZ2UiLCJnZXRUYWJsZURlZmF1bHRzIiwiVHJhbnNhY3Rpb25IZWxwZXIiLCJnZXREYXRhRnJvbURlZmF1bHRWYWx1ZUZ1bmN0aW9uIiwiY3JlYXRlQnV0dG9uV2FzUHJlc3NlZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImVtcHR5Um93c0VuYWJsZWQiLCJyZW1vdmVFbXB0eVJvd3NNZXNzYWdlcyIsImdldElzRWRpdGFibGUiLCJpbmxpbmVDcmVhdGlvblJvd3NIaWRkZW5JbkVkaXRNb2RlIiwiaW5hY3RpdmVDb250ZXh0IiwiZ2V0QWxsQ3VycmVudENvbnRleHRzIiwiZmluZCIsInN0YXJ0c1dpdGgiLCJkZWxldGUiLCJnZXRJbmFjdGl2ZUNvbnRleHROdW1iZXIiLCJmaWx0ZXIiLCJyZXF1aXJlZFByb3BlcnRpZXMiLCJhbm5vdGF0aW9uIiwibWlzc2luZ1Byb3BlcnRpZXMiLCJyZXF1aXJlZFByb3BlcnR5IiwiZ2V0T2JqZWN0IiwicmVzb3VyY2VCdW5kbGUiLCJMaWJyYXJ5IiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJtZXNzYWdlcyIsImRpc3BsYXllZENvbHVtbiIsIm1pc3NpbmdQcm9wZXJ0eSIsImVycm9yTWVzc2FnZSIsIm1pc3NpbmdDb2x1bW4iLCJjb2x1bW5zIiwidGFibGVDb2x1bW4iLCJyZWxhdGl2ZVBhdGgiLCJwcm9wZXJ0eUluZm9zIiwiaW5jbHVkZXMiLCJnZXRUZXh0IiwiZ2V0Q29sdW1ucyIsIm1kY0NvbHVtbiIsImdldFByb3BlcnR5S2V5IiwibmFtZSIsImdldEhlYWRlciIsImxhYmVsIiwicHVzaCIsIk1lc3NhZ2UiLCJtZXNzYWdlIiwicHJvY2Vzc29yIiwidHlwZSIsIk1lc3NhZ2VUeXBlIiwiRXJyb3IiLCJ0ZWNobmljYWwiLCJwZXJzaXN0ZW50IiwidGVjaG5pY2FsRGV0YWlscyIsInRhYmxlSWQiLCJnZXRJZCIsImVtcHR5Um93TWVzc2FnZSIsInRhcmdldCIsIk1lc3NhZ2luZyIsImFkZE1lc3NhZ2VzIiwiaW5hY3RpdmVDb250ZXh0cyIsInJlbW92ZU1lc3NhZ2VzIiwiZ2V0TWVzc2FnZU1vZGVsIiwiZ2V0RGF0YSIsIm1zZyIsImdldFRlY2huaWNhbERldGFpbHMiLCJjb250ZXh0TWF0Y2hlcyIsIkFycmF5IiwiaXNBcnJheSIsInNvbWUiLCJnZXRUYXJnZXRzIiwidmFsdWUiLCJyZWNyZWF0ZU9uZVJvdyIsIm5ld0lubGluZUNyZWF0aW9uUm93RnJvbVBhc3RlIiwiZm9yY2VDcmVhdGVhdEVuZCIsImRlZmF1bHRWYWx1ZUZ1bmN0aW9uRGF0YSIsImlubGluZUNyZWF0aW9uUm93Q291bnQiLCJjcmVhdGluZ0VtcHR5Um93cyIsImZyb20iLCJhdEVuZCIsImluYWN0aXZlIiwiZGF0YUZvckNyZWF0ZSIsImNvbnRleHRzIiwiY3JlYXRlTXVsdGlwbGVEb2N1bWVudHMiLCJvbkJlZm9yZUNyZWF0ZSIsInJlcXVlc3RTaWRlRWZmZWN0c0Zvck5hdmlnYXRpb25Qcm9wZXJ0eSIsImZvckVhY2giLCJjYW5jZWxlZCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRW1wdHlSb3dzSGFuZGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVudGl0eVNldCwgTmF2aWdhdGlvblByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IERlZmF1bHRWYWx1ZXNGdW5jdGlvbiB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQ29tbW9uXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB7IHR5cGUgSUludGVyZmFjZVdpdGhNaXhpbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB7IEFjdGl2aXR5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2NvbGxhYm9yYXRpb24vQ29sbGFib3JhdGlvbkNvbW1vblwiO1xuaW1wb3J0IFRyYW5zYWN0aW9uSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9lZGl0Rmxvdy9UcmFuc2FjdGlvbkhlbHBlclwiO1xuaW1wb3J0IHsgQ3JlYXRpb25Nb2RlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgdHlwZSB7IEFubm90YXRpb25UYWJsZUNvbHVtbiB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi90YWJsZS9Db2x1bW5zXCI7XG5pbXBvcnQgdHlwZSBVSTVFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBMaWJyYXJ5IGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCBNZXNzYWdpbmcgZnJvbSBcInNhcC91aS9jb3JlL01lc3NhZ2luZ1wiO1xuaW1wb3J0IE1lc3NhZ2UgZnJvbSBcInNhcC91aS9jb3JlL21lc3NhZ2UvTWVzc2FnZVwiO1xuaW1wb3J0IE1lc3NhZ2VUeXBlIGZyb20gXCJzYXAvdWkvY29yZS9tZXNzYWdlL01lc3NhZ2VUeXBlXCI7XG5pbXBvcnQgdHlwZSBNRENUYWJsZSBmcm9tIFwic2FwL3VpL21kYy9UYWJsZVwiO1xuaW1wb3J0IHR5cGUgTURDQ29sdW1uIGZyb20gXCJzYXAvdWkvbWRjL3RhYmxlL0NvbHVtblwiO1xuaW1wb3J0IHR5cGUgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IENvbnRleHRFcnJvclR5cGUgfSBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTGlzdEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUxpc3RCaW5kaW5nXCI7XG5pbXBvcnQgeyB0eXBlIElUYWJsZUJsb2NrIH0gZnJvbSBcIi4uL1RhYmxlQVBJXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVtcHR5Um93c0hhbmRsZXIgaW1wbGVtZW50cyBJSW50ZXJmYWNlV2l0aE1peGluIHtcblx0Y3JlYXRpbmdFbXB0eVJvd3M/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHRhYmxlJ3MgZGVmYXVsdCB2YWx1ZXMuXG5cdCAqL1xuXHRwdWJsaWMgdGFibGVEZWZhdWx0c1Byb21pc2U/OiBQcm9taXNlPG9iamVjdD47XG5cblx0c2V0dXBNaXhpbihfYmFzZUNsYXNzOiBGdW5jdGlvbik6IHZvaWQge1xuXHRcdC8vIFRoaXMgbWV0aG9kIGlzIG5lZWRlZCB0byBpbXBsZW1lbnQgaW50ZXJmYWNlIElJbnRlcmZhY2VXaXRoTWl4aW5cblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVyIGZvciB0aGUgb25GaWVsZExpdmVDaGFuZ2UgZXZlbnQuXG5cdCAqIEBwYXJhbSB1aTVFdmVudCBUaGUgZXZlbnQgb2JqZWN0IHBhc3NlZCBieSB0aGUgb25GaWVsZExpdmVDaGFuZ2UgZXZlbnRcblx0ICovXG5cdF9vbkZpZWxkTGl2ZUNoYW5nZSh0aGlzOiBJVGFibGVCbG9jayAmIEVtcHR5Um93c0hhbmRsZXIsIHVpNUV2ZW50OiBVSTVFdmVudDx7fSwgQ29udHJvbD4pOiB2b2lkIHtcblx0XHRjb25zdCBmaWVsZCA9IHVpNUV2ZW50LmdldFNvdXJjZSgpLFxuXHRcdFx0YmluZGluZ0NvbnRleHQgPSBmaWVsZC5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQsXG5cdFx0XHRiaW5kaW5nID0gYmluZGluZ0NvbnRleHQuZ2V0QmluZGluZygpO1xuXHRcdC8vIGNyZWF0aW9uIG9mIGEgbmV3IGluYWN0aXZlIHJvdyBpZiByZWxldmFudFxuXHRcdGlmIChiaW5kaW5nQ29udGV4dC5pc0luYWN0aXZlKCkpIHtcblx0XHRcdGNvbnN0IHRhYmxlID0gdGhpcz8uZ2V0Q29udGVudCgpO1xuXHRcdFx0dGhpcz8uY3JlYXRlRW1wdHlSb3dzKGJpbmRpbmcgYXMgT0RhdGFMaXN0QmluZGluZywgdGFibGUsIHRydWUpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHRoZSBDcmVhdGVBY3RpdmF0ZSBldmVudCBmcm9tIHRoZSBPRGF0YUxpc3RCaW5kaW5nLlxuXHQgKiBAcGFyYW0gYWN0aXZhdGVFdmVudCBUaGUgZXZlbnQgc2VudCBieSB0aGUgYmluZGluZ1xuXHQgKi9cblx0YXN5bmMgX2hhbmRsZUNyZWF0ZUFjdGl2YXRlKFxuXHRcdHRoaXM6IElUYWJsZUJsb2NrICYgRW1wdHlSb3dzSGFuZGxlcixcblx0XHRhY3RpdmF0ZUV2ZW50OiBVSTVFdmVudDx7IGNvbnRleHQ6IENvbnRleHQgfSwgT0RhdGFMaXN0QmluZGluZz5cblx0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgYWN0aXZhdGVkQ29udGV4dCA9IGFjdGl2YXRlRXZlbnQuZ2V0UGFyYW1ldGVyKFwiY29udGV4dFwiKTtcblx0XHQvLyB3ZSBzdGFydCBieSBhc2tpbmcgdG8gcmVjcmVhdGUgYW4gZW1wdHkgcm93IChpZiBsaXZlIGNoYW5nZSBoYXMgYWxyZWFkeSBkb25lIGl0IHRoaXMgd29uJ3QgaGF2ZSBhbnkgZWZmZWN0KVxuXHRcdC8vIGJ1dCB3ZSBkbyBub3Qgd2FpdFxuXHRcdHRoaXMuY3JlYXRlRW1wdHlSb3dzKGFjdGl2YXRlRXZlbnQuZ2V0U291cmNlKCksIHRoaXMuZ2V0Q29udGVudCgpLCB0cnVlKTtcblx0XHRpZiAoIXRoaXMudmFsaWRhdGVFbXB0eVJvdyhhY3RpdmF0ZWRDb250ZXh0KSkge1xuXHRcdFx0YWN0aXZhdGVFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgdHJhbnNpZW50UGF0aCA9IGFjdGl2YXRlZENvbnRleHQuZ2V0UGF0aCgpLFxuXHRcdFx0XHR2aWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0Vmlldyh0aGlzKSxcblx0XHRcdFx0Y29udHJvbGxlciA9IHZpZXcuZ2V0Q29udHJvbGxlcigpLFxuXHRcdFx0XHRlZGl0RmxvdyA9IGNvbnRyb2xsZXIuZWRpdEZsb3c7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRhd2FpdCAoYWN0aXZhdGVkQ29udGV4dC5jcmVhdGVkKCkgPz8gUHJvbWlzZS5yZXNvbHZlKCkpO1xuXHRcdFx0XHRhd2FpdCBlZGl0Rmxvdy5vbkFmdGVyQ3JlYXRlKHsgY29udGV4dDogYWN0aXZhdGVkQ29udGV4dCB9KTtcblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0TG9nLndhcm5pbmcoYEZhaWxlZCB0byBhY3RpdmF0ZSBjb250ZXh0ICR7YWN0aXZhdGVkQ29udGV4dC5nZXRQYXRoKCl9YCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGNvbnRlbnQgPSBhY3RpdmF0ZWRDb250ZXh0LmdldFBhdGgoKTtcblx0XHRcdGNvbnN0IGNvbGxhYm9yYXRpdmVEcmFmdCA9IHZpZXcuZ2V0Q29udHJvbGxlcigpLmNvbGxhYm9yYXRpdmVEcmFmdDtcblx0XHRcdC8vIFNlbmQgbm90aWZpY2F0aW9uIHRvIG90aGVyIHVzZXJzIG9ubHkgYWZ0ZXIgdGhlIGNyZWF0aW9uIGhhcyBiZWVuIGZpbmFsaXplZFxuXHRcdFx0Y29sbGFib3JhdGl2ZURyYWZ0LnNlbmQoeyBhY3Rpb246IEFjdGl2aXR5LkNyZWF0ZSwgY29udGVudCB9KTtcblx0XHRcdC8vIFNpbmNlIHRoZSBwYXRoIG9mIHRoZSBjb250ZXh0IGhhcyBjaGFuZ2VkIGR1cmluZyBhY3RpdmF0aW9uLCB3ZSBuZWVkIHRvIHVwZGF0ZSBhbGwgY29sbGFib3JhdGlvbiBsb2Nrc1xuXHRcdFx0Ly8gdGhhdCB3ZXJlIHVzaW5nIHRoZSB0cmFuc2llbnQgcGF0aFxuXHRcdFx0Y29sbGFib3JhdGl2ZURyYWZ0LnVwZGF0ZUxvY2tzRm9yQ29udGV4dFBhdGgodHJhbnNpZW50UGF0aCwgYWN0aXZhdGVkQ29udGV4dC5nZXRQYXRoKCkpO1xuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJGYWlsZWQgdG8gYWN0aXZhdGUgbmV3IHJvdyAtXCIsIGVycm9yIGFzIEVycm9yKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBkZWZhdWx0IHZhbHVlcyBmcm9tIHRoZSBEZWZhdWx0VmFsdWVzIGZ1bmN0aW9uLlxuXHQgKiBAcGFyYW0gbGlzdEJpbmRpbmcgVGhlIGN1cnJlbnQgbGlzdCBiaW5kaW5nXG5cdCAqIEByZXR1cm5zIFRoZSBEZWZhdWx0VmFsdWVzIGZ1bmN0aW9uIChvciB1bmRlZmluZWQgaWYgbm8gZnVuY3Rpb24gaXMgZm91bmQpXG5cdCAqL1xuXHRnZXREZWZhdWx0VmFsdWVzRnVuY3Rpb24obGlzdEJpbmRpbmc6IE9EYXRhTGlzdEJpbmRpbmcpOiBEZWZhdWx0VmFsdWVzRnVuY3Rpb24gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG1vZGVsID0gbGlzdEJpbmRpbmcuZ2V0TW9kZWwoKTtcblx0XHRjb25zdCBtZXRhTW9kZWwgPSBtb2RlbC5nZXRNZXRhTW9kZWwoKTtcblx0XHRjb25zdCBtZXRhQ29udGV4dCA9IG1ldGFNb2RlbC5nZXRNZXRhQ29udGV4dChsaXN0QmluZGluZy5nZXRSZXNvbHZlZFBhdGgoKSBhcyBzdHJpbmcpO1xuXHRcdGNvbnN0IGxpc3RCaW5kaW5nT2JqZWN0UGF0aCA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyhtZXRhQ29udGV4dCk7XG5cblx0XHRjb25zdCBkZWZhdWx0RnVuY09uVGFyZ2V0T2JqZWN0ID0gKGxpc3RCaW5kaW5nT2JqZWN0UGF0aC50YXJnZXRPYmplY3QgYXMgTmF2aWdhdGlvblByb3BlcnR5IHwgRW50aXR5U2V0KS5hbm5vdGF0aW9ucy5Db21tb25cblx0XHRcdD8uRGVmYXVsdFZhbHVlc0Z1bmN0aW9uO1xuXHRcdGNvbnN0IGRlZmF1bHRGdW5jT25UYXJnZXRFbnRpdHlTZXQgPSAobGlzdEJpbmRpbmdPYmplY3RQYXRoLnRhcmdldEVudGl0eVNldCBhcyBFbnRpdHlTZXQgfCB1bmRlZmluZWQpPy5hbm5vdGF0aW9ucy5Db21tb25cblx0XHRcdD8uRGVmYXVsdFZhbHVlc0Z1bmN0aW9uO1xuXG5cdFx0cmV0dXJuIGRlZmF1bHRGdW5jT25UYXJnZXRPYmplY3QgPz8gZGVmYXVsdEZ1bmNPblRhcmdldEVudGl0eVNldDtcblx0fVxuXG5cdC8qKlxuXHQgKiBFbXB0eVJvd3NFbmFibGVkIHNldHRlci5cblx0ICogQHBhcmFtIGVuYWJsZW1lbnRcblx0ICovXG5cdHNldEVtcHR5Um93c0VuYWJsZWQodGhpczogSVRhYmxlQmxvY2sgJiBFbXB0eVJvd3NIYW5kbGVyLCBlbmFibGVtZW50OiBib29sZWFuKTogdm9pZCB7XG5cdFx0dGhpcy5zZXRQcm9wZXJ0eShcImVtcHR5Um93c0VuYWJsZWRcIiwgZW5hYmxlbWVudCk7XG5cdFx0Y29uc3QgbmF2aWdhdGlvblBhdGggPSB0aGlzLmdldENvbnRlbnQoKS5kYXRhKCkubmF2aWdhdGlvblBhdGgsXG5cdFx0XHRhcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodGhpcy5nZXRDb250ZW50KCkpO1xuXHRcdGlmIChlbmFibGVtZW50KSB7XG5cdFx0XHRjb25zdCBsaXN0QmluZGluZyA9IHRoaXMuZ2V0Q29udGVudCgpLmdldFJvd0JpbmRpbmcoKTtcblx0XHRcdGNvbnN0IGRlZmF1bHRWYWx1ZXNGdW5jdGlvbiA9IGxpc3RCaW5kaW5nPy5nZXRSZXNvbHZlZFBhdGgoKSA/IHRoaXMuZ2V0RGVmYXVsdFZhbHVlc0Z1bmN0aW9uKGxpc3RCaW5kaW5nKSA6IHVuZGVmaW5lZDtcblx0XHRcdGlmIChkZWZhdWx0VmFsdWVzRnVuY3Rpb24pIHtcblx0XHRcdFx0YXBwQ29tcG9uZW50LmdldFNpZGVFZmZlY3RzU2VydmljZSgpLnJlZ2lzdGVyVGFyZ2V0Q2FsbGJhY2sobmF2aWdhdGlvblBhdGgsIHRoaXMudXBkYXRlRW1wdHlSb3dzLmJpbmQodGhpcykpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRhcHBDb21wb25lbnQuZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlKCkuZGVyZWdpc3RlclRhcmdldENhbGxiYWNrKG5hdmlnYXRpb25QYXRoKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy50YWJsZURlZmF1bHRzUHJvbWlzZSkge1xuXHRcdFx0dGhpcy50YWJsZURlZmF1bHRzUHJvbWlzZVxuXHRcdFx0XHQudGhlbigodGFibGVEZWZhdWx0RGF0YSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuc2V0VXBFbXB0eVJvd3ModGhpcy5nZXRDb250ZW50KCksIGZhbHNlLCB0YWJsZURlZmF1bHREYXRhKTtcblx0XHRcdFx0XHRyZXR1cm4gdGFibGVEZWZhdWx0RGF0YTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKChlcnJvcikgPT4ge1xuXHRcdFx0XHRcdExvZy5lcnJvcihcIkVycm9yIHdoaWxlIHNldHRpbmcgdXAgZW1wdHkgcm93czpcIiwgZXJyb3IpO1xuXHRcdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXRVcEVtcHR5Um93cyh0aGlzLmdldENvbnRlbnQoKSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZSBhbmQgcmVjcmVhdGUgdGhlIGVtcHR5IHJvd3MgaW4gb3JkZXIgdG8gZ2V0IGFueSB1cGRhdGVkIGRlZmF1bHQgdmFsdWVzLlxuXHQgKlxuXHQgKi9cblx0YXN5bmMgdXBkYXRlRW1wdHlSb3dzKHRoaXM6IElUYWJsZUJsb2NrICYgRW1wdHlSb3dzSGFuZGxlcik6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IHRhYmxlID0gdGhpcy5nZXRDb250ZW50KCk7XG5cdFx0Y29uc3QgYmluZGluZyA9IHRhYmxlLmdldFJvd0JpbmRpbmcoKTtcblx0XHRjb25zdCBiaW5kaW5nSGVhZGVyQ29udGV4dCA9IGJpbmRpbmcuZ2V0SGVhZGVyQ29udGV4dCgpO1xuXHRcdGlmIChiaW5kaW5nICYmIGJpbmRpbmcuaXNSZXNvbHZlZCgpICYmIGJpbmRpbmcuaXNMZW5ndGhGaW5hbCgpICYmIGJpbmRpbmdIZWFkZXJDb250ZXh0KSB7XG5cdFx0XHRjb25zdCBjb250ZXh0UGF0aCA9IGJpbmRpbmdIZWFkZXJDb250ZXh0LmdldFBhdGgoKTtcblx0XHRcdHRoaXMuX2RlbGV0ZUVtcHR5Um93cyhiaW5kaW5nLCBjb250ZXh0UGF0aCk7XG5cdFx0XHRhd2FpdCB0aGlzLmNyZWF0ZUVtcHR5Um93cyhiaW5kaW5nLCB0YWJsZSk7XG5cdFx0fVxuXHRcdHJldHVybjtcblx0fVxuXG5cdC8qKlxuXHQgKiBIZWxwZXIgZnVuY3Rpb24gdG8gcGVyZm9ybSBjb21tb24gY2hlY2tzIGZvciB0YWJsZSBkZWZhdWx0cyBhbmQgZW1wdHkgcm93cyBzZXR1cC5cblx0ICogQHBhcmFtIHRhYmxlIFRoZSB0YWJsZSBiZWluZyBwcm9jZXNzZWRcblx0ICogQHJldHVybnMgVGhlIGJpbmRpbmcgb2JqZWN0IGlmIGNoZWNrcyBwYXNzLCBvciB1bmRlZmluZWQgaWYgY2hlY2tzIGZhaWxcblx0ICovXG5cdHByaXZhdGUgYXN5bmMgX3ZhbGlkYXRlQW5kUmV0cmlldmVCaW5kaW5nKFxuXHRcdHRoaXM6IElUYWJsZUJsb2NrICYgRW1wdHlSb3dzSGFuZGxlcixcblx0XHR0YWJsZTogTURDVGFibGVcblx0KTogUHJvbWlzZTxPRGF0YUxpc3RCaW5kaW5nIHwgdW5kZWZpbmVkPiB7XG5cdFx0aWYgKHRoaXMuZ2V0VGFibGVEZWZpbml0aW9uKCkuY29udHJvbD8uY3JlYXRpb25Nb2RlICE9PSBDcmVhdGlvbk1vZGUuSW5saW5lQ3JlYXRpb25Sb3dzKSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdGNvbnN0IHVpTW9kZWwgPSB0YWJsZS5nZXRNb2RlbChcInVpXCIpIGFzIEpTT05Nb2RlbCB8IHVuZGVmaW5lZDtcblx0XHRpZiAoIXVpTW9kZWwpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0aWYgKHVpTW9kZWwuZ2V0UHJvcGVydHkoXCIvaXNFZGl0YWJsZVBlbmRpbmdcIikpIHtcblx0XHRcdC8vIFdhaXQgdW50aWwgdGhlIGVkaXQgbW9kZSBjb21wdXRhdGlvbiBpcyBjb21wbGV0ZVxuXHRcdFx0Y29uc3Qgd2F0Y2hCaW5kaW5nID0gdWlNb2RlbC5iaW5kUHJvcGVydHkoXCIvaXNFZGl0YWJsZVBlbmRpbmdcIik7XG5cdFx0XHRhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuXHRcdFx0XHRjb25zdCBmbkhhbmRsZXIgPSAoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0d2F0Y2hCaW5kaW5nLmRldGFjaENoYW5nZShmbkhhbmRsZXIpO1xuXHRcdFx0XHRcdHdhdGNoQmluZGluZy5kZXN0cm95KCk7XG5cdFx0XHRcdFx0cmVzb2x2ZSgpO1xuXHRcdFx0XHR9O1xuXHRcdFx0XHR3YXRjaEJpbmRpbmcuYXR0YWNoQ2hhbmdlKGZuSGFuZGxlcik7XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRjb25zdCBiaW5kaW5nID0gdGFibGUuZ2V0Um93QmluZGluZygpIGFzIE9EYXRhTGlzdEJpbmRpbmcgfCB1bmRlZmluZWQ7XG5cblx0XHRpZiAoIWJpbmRpbmcpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdHJldHVybiBiaW5kaW5nO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHRhYmxlIGRlZmF1bHRzIGJ5IHZhbGlkYXRpbmcgYW5kIHJldHJpZXZpbmcgdGhlIGJpbmRpbmcsIHRoZW4gZmV0Y2hpbmcgZGF0YSBmcm9tIHRoZSBEZWZhdWx0VmFsdWVGdW5jdGlvbi5cblx0ICogQHBhcmFtIHRhYmxlIFRoZSB0YWJsZSBiZWluZyBwcm9jZXNzZWRcblx0ICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGRlZmF1bHQgdmFsdWVzLCBvciB1bmRlZmluZWQgaWYgbm8gYmluZGluZyBpcyBhdmFpbGFibGUgb3IgdGhlIERlZmF1bHRWYWx1ZUZ1bmN0aW9uIHJldHVybnMgbm8gZGF0YVxuXHQgKi9cblx0YXN5bmMgZ2V0VGFibGVEZWZhdWx0cyh0aGlzOiBJVGFibGVCbG9jayAmIEVtcHR5Um93c0hhbmRsZXIsIHRhYmxlOiBNRENUYWJsZSk6IFByb21pc2U8b2JqZWN0IHwgdW5kZWZpbmVkPiB7XG5cdFx0Y29uc3QgYmluZGluZyA9IGF3YWl0IHRoaXMuX3ZhbGlkYXRlQW5kUmV0cmlldmVCaW5kaW5nKHRhYmxlKTtcblx0XHRpZiAoIWJpbmRpbmcpIHJldHVybiB1bmRlZmluZWQ7XG5cblx0XHRjb25zdCBhcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQoQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0Vmlldyh0YWJsZSkpO1xuXHRcdHJldHVybiBhcHBDb21wb25lbnQgPyBUcmFuc2FjdGlvbkhlbHBlci5nZXREYXRhRnJvbURlZmF1bHRWYWx1ZUZ1bmN0aW9uKGJpbmRpbmcsIGFwcENvbXBvbmVudCkgOiB1bmRlZmluZWQ7XG5cdH1cblxuXHRhc3luYyBzZXRVcEVtcHR5Um93cyhcblx0XHR0aGlzOiBJVGFibGVCbG9jayAmIEVtcHR5Um93c0hhbmRsZXIsXG5cdFx0dGFibGU6IE1EQ1RhYmxlLFxuXHRcdGNyZWF0ZUJ1dHRvbldhc1ByZXNzZWQgPSBmYWxzZSxcblx0XHR0YWJsZURlZmF1bHREYXRhID0ge31cblx0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgYmluZGluZyA9IGF3YWl0IHRoaXMuX3ZhbGlkYXRlQW5kUmV0cmlldmVCaW5kaW5nKHRhYmxlKTtcblx0XHRpZiAoIWJpbmRpbmcpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgYmluZGluZ0hlYWRlckNvbnRleHQgPSBiaW5kaW5nLmdldEhlYWRlckNvbnRleHQoKTtcblx0XHRpZiAoYmluZGluZyAmJiBiaW5kaW5nLmlzUmVzb2x2ZWQoKSAmJiBiaW5kaW5nLmlzTGVuZ3RoRmluYWwoKSAmJiBiaW5kaW5nSGVhZGVyQ29udGV4dCkge1xuXHRcdFx0Y29uc3QgY29udGV4dFBhdGggPSBiaW5kaW5nSGVhZGVyQ29udGV4dC5nZXRQYXRoKCk7XG5cdFx0XHRpZiAoIXRoaXMuZW1wdHlSb3dzRW5hYmxlZCkge1xuXHRcdFx0XHR0aGlzLnJlbW92ZUVtcHR5Um93c01lc3NhZ2VzKCk7XG5cdFx0XHRcdHJldHVybiB0aGlzLl9kZWxldGVFbXB0eVJvd3MoYmluZGluZywgY29udGV4dFBhdGgpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCFDb21tb25VdGlscy5nZXRJc0VkaXRhYmxlKHRhYmxlKSkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRpZiAoXG5cdFx0XHRcdHRoaXMuZ2V0VGFibGVEZWZpbml0aW9uKCkuY29udHJvbD8uaW5saW5lQ3JlYXRpb25Sb3dzSGlkZGVuSW5FZGl0TW9kZSAmJlxuXHRcdFx0XHQhdGFibGUuZ2V0QmluZGluZ0NvbnRleHQoXCJwYWdlSW50ZXJuYWxcIik/LmdldFByb3BlcnR5KFwiY3JlYXRlTW9kZVwiKSAmJlxuXHRcdFx0XHQhY3JlYXRlQnV0dG9uV2FzUHJlc3NlZFxuXHRcdFx0KSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGluYWN0aXZlQ29udGV4dCA9IGJpbmRpbmcuZ2V0QWxsQ3VycmVudENvbnRleHRzKCkuZmluZChmdW5jdGlvbiAoY29udGV4dCkge1xuXHRcdFx0XHQvLyB3aGVuIHRoaXMgaXMgY2FsbGVkIGZyb20gY29udHJvbGxlciBjb2RlIHdlIG5lZWQgdG8gY2hlY2sgdGhhdCBpbmFjdGl2ZSBjb250ZXh0cyBhcmUgc3RpbGwgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgdGFibGUgY29udGV4dFxuXHRcdFx0XHRyZXR1cm4gY29udGV4dC5pc0luYWN0aXZlKCkgJiYgY29udGV4dC5nZXRQYXRoKCkuc3RhcnRzV2l0aChjb250ZXh0UGF0aCk7XG5cdFx0XHR9KTtcblx0XHRcdGlmICghaW5hY3RpdmVDb250ZXh0KSB7XG5cdFx0XHRcdHRoaXMucmVtb3ZlRW1wdHlSb3dzTWVzc2FnZXMoKTtcblx0XHRcdFx0YXdhaXQgdGhpcy5jcmVhdGVFbXB0eVJvd3MoYmluZGluZywgdGFibGUsIGZhbHNlLCB1bmRlZmluZWQsIGZhbHNlLCB0YWJsZURlZmF1bHREYXRhKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRGVsZXRlcyBpbmFjdGl2ZSByb3dzIGZyb20gdGhlIHRhYmxlIGxpc3RCaW5kaW5nLlxuXHQgKiBAcGFyYW0gYmluZGluZ1xuXHQgKiBAcGFyYW0gY29udGV4dFBhdGhcblx0ICovXG5cdF9kZWxldGVFbXB0eVJvd3MoYmluZGluZzogT0RhdGFMaXN0QmluZGluZywgY29udGV4dFBhdGg6IHN0cmluZyk6IHZvaWQge1xuXHRcdGZvciAoY29uc3QgY29udGV4dCBvZiBiaW5kaW5nLmdldEFsbEN1cnJlbnRDb250ZXh0cygpKSB7XG5cdFx0XHRpZiAoY29udGV4dC5pc0luYWN0aXZlKCkgJiYgY29udGV4dC5nZXRQYXRoKCkuc3RhcnRzV2l0aChjb250ZXh0UGF0aCkpIHtcblx0XHRcdFx0Y29udGV4dC5kZWxldGUoKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgY3VycmVudCBudW1iZXIgb2YgaW5hY3RpdmUgY29udGV4dHMgd2l0aGluIHRoZSBsaXN0IGJpbmRpbmcuXG5cdCAqIEBwYXJhbSBiaW5kaW5nIERhdGEgbGlzdCBiaW5kaW5nXG5cdCAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgaW5hY3RpdmUgY29udGV4dHNcblx0ICovXG5cdGdldEluYWN0aXZlQ29udGV4dE51bWJlcihiaW5kaW5nOiBPRGF0YUxpc3RCaW5kaW5nKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gYmluZGluZy5nZXRBbGxDdXJyZW50Q29udGV4dHMoKS5maWx0ZXIoKGNvbnRleHQpID0+IGNvbnRleHQuaXNJbmFjdGl2ZSgpKS5sZW5ndGg7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlcyB0aGUgdmFsaWRhdGlvbiBvZiB0aGUgZW1wdHkgcm93LlxuXHQgKiBAcGFyYW0gY29udGV4dCBUaGUgY29udGV4dCBvZiB0aGUgZW1wdHkgcm93XG5cdCAqIEByZXR1cm5zIFRoZSB2YWxpZGF0aW9uIHN0YXR1c1xuXHQgKi9cblx0dmFsaWRhdGVFbXB0eVJvdyh0aGlzOiBJVGFibGVCbG9jayAmIEVtcHR5Um93c0hhbmRsZXIsIGNvbnRleHQ6IENvbnRleHQpOiBib29sZWFuIHtcblx0XHRjb25zdCByZXF1aXJlZFByb3BlcnRpZXMgPSB0aGlzLmdldFRhYmxlRGVmaW5pdGlvbigpLmFubm90YXRpb24ucmVxdWlyZWRQcm9wZXJ0aWVzO1xuXHRcdGlmIChyZXF1aXJlZFByb3BlcnRpZXM/Lmxlbmd0aCkge1xuXHRcdFx0dGhpcy5yZW1vdmVFbXB0eVJvd3NNZXNzYWdlcyhjb250ZXh0KTtcblx0XHRcdGNvbnN0IG1pc3NpbmdQcm9wZXJ0aWVzID0gcmVxdWlyZWRQcm9wZXJ0aWVzLmZpbHRlcigocmVxdWlyZWRQcm9wZXJ0eSkgPT4gIWNvbnRleHQuZ2V0T2JqZWN0KHJlcXVpcmVkUHJvcGVydHkpKTtcblx0XHRcdGlmIChtaXNzaW5nUHJvcGVydGllcy5sZW5ndGgpIHtcblx0XHRcdFx0Y29uc3QgcmVzb3VyY2VCdW5kbGUgPSBMaWJyYXJ5LmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLm1hY3Jvc1wiKSE7XG5cdFx0XHRcdGNvbnN0IG1lc3NhZ2VzOiBNZXNzYWdlW10gPSBbXTtcblx0XHRcdFx0bGV0IGRpc3BsYXllZENvbHVtbjogTURDQ29sdW1uIHwgdW5kZWZpbmVkO1xuXHRcdFx0XHRmb3IgKGNvbnN0IG1pc3NpbmdQcm9wZXJ0eSBvZiBtaXNzaW5nUHJvcGVydGllcykge1xuXHRcdFx0XHRcdGxldCBlcnJvck1lc3NhZ2U6IHN0cmluZztcblx0XHRcdFx0XHRjb25zdCBtaXNzaW5nQ29sdW1uID0gdGhpcy5nZXRUYWJsZURlZmluaXRpb24oKS5jb2x1bW5zLmZpbmQoXG5cdFx0XHRcdFx0XHQodGFibGVDb2x1bW4pID0+XG5cdFx0XHRcdFx0XHRcdCh0YWJsZUNvbHVtbiBhcyBBbm5vdGF0aW9uVGFibGVDb2x1bW4pLnJlbGF0aXZlUGF0aCA9PT0gbWlzc2luZ1Byb3BlcnR5IHx8XG5cdFx0XHRcdFx0XHRcdCh0YWJsZUNvbHVtbi5wcm9wZXJ0eUluZm9zICYmIHRhYmxlQ29sdW1uLnByb3BlcnR5SW5mb3MuaW5jbHVkZXMobWlzc2luZ1Byb3BlcnR5KSlcblx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0aWYgKCFtaXNzaW5nQ29sdW1uKSB7XG5cdFx0XHRcdFx0XHRlcnJvck1lc3NhZ2UgPSByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9UQUJMRV9FTVBUWVJPV19NQU5EQVRPUllcIiwgW21pc3NpbmdQcm9wZXJ0eV0pO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRkaXNwbGF5ZWRDb2x1bW4gPSB0aGlzLmdldENvbnRlbnQoKVxuXHRcdFx0XHRcdFx0XHQuZ2V0Q29sdW1ucygpXG5cdFx0XHRcdFx0XHRcdC5maW5kKChtZGNDb2x1bW4pID0+IG1kY0NvbHVtbi5nZXRQcm9wZXJ0eUtleSgpID09PSBtaXNzaW5nQ29sdW1uLm5hbWUpO1xuXHRcdFx0XHRcdFx0ZXJyb3JNZXNzYWdlID0gcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcblx0XHRcdFx0XHRcdFx0ZGlzcGxheWVkQ29sdW1uID8gXCJNX1RBQkxFX0VNUFRZUk9XX01BTkRBVE9SWVwiIDogXCJNX1RBQkxFX0VNUFRZUk9XX01BTkRBVE9SWV9ISURERU5cIixcblx0XHRcdFx0XHRcdFx0W2Rpc3BsYXllZENvbHVtbj8uZ2V0SGVhZGVyKCkgfHwgbWlzc2luZ0NvbHVtbi5sYWJlbF1cblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0bWVzc2FnZXMucHVzaChcblx0XHRcdFx0XHRcdG5ldyBNZXNzYWdlKHtcblx0XHRcdFx0XHRcdFx0bWVzc2FnZTogZXJyb3JNZXNzYWdlLFxuXHRcdFx0XHRcdFx0XHRwcm9jZXNzb3I6IHRoaXMuZ2V0TW9kZWwoKSxcblx0XHRcdFx0XHRcdFx0dHlwZTogTWVzc2FnZVR5cGUuRXJyb3IsXG5cdFx0XHRcdFx0XHRcdHRlY2huaWNhbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRcdHBlcnNpc3RlbnQ6IHRydWUsXG5cdFx0XHRcdFx0XHRcdHRlY2huaWNhbERldGFpbHM6IHtcblx0XHRcdFx0XHRcdFx0XHR0YWJsZUlkOiB0aGlzLmdldENvbnRlbnQoKS5nZXRJZCgpLCAvLyBOZWVkIHRvIGRvIGl0IHNpbmNlIGhhbmRsZUNyZWF0ZUFjdGl2YXRlIGNhbiBiZSB0cmlnZ2VyZWQgbXVsdGlwbGUgdGltZXMgKGV4dHJhIHByb3BlcnRpZXMgc2V0IGJ5IHZhbHVlIGhlbHApIGJlZm9yZSBjb250cm9sSWRzIGFyZSBzZXQgb24gdGhlIG1lc3NhZ2Vcblx0XHRcdFx0XHRcdFx0XHRlbXB0eVJvd01lc3NhZ2U6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0bWlzc2luZ0NvbHVtbjogZGlzcGxheWVkQ29sdW1uID8gdW5kZWZpbmVkIDogbWlzc2luZ1Byb3BlcnR5IC8vIG5lZWRlZCB0byBjaGFuZ2UgdGhlIG1lc3NhZ2VTdHJpcCBtZXNzYWdlXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHRhcmdldDogYCR7Y29udGV4dD8uZ2V0UGF0aCgpfS8ke21pc3NpbmdQcm9wZXJ0eX1gXG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0TWVzc2FnaW5nLmFkZE1lc3NhZ2VzKG1lc3NhZ2VzKTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW1vdmVzIHRoZSBtZXNzYWdlcyByZWxhdGVkIHRvIHRoZSBlbXB0eSByb3dzLlxuXHQgKiBAcGFyYW0gaW5hY3RpdmVDb250ZXh0cyBUaGUgY29udGV4dHMgb2YgdGhlIGVtcHR5IHJvd3MsIGlmIG5vdCBwcm92aWRlZCwgdGhlIG1lc3NhZ2VzIG9mIGFsbCBlbXB0eSByb3dzIGFyZSByZW1vdmVkXG5cdCAqL1xuXHRyZW1vdmVFbXB0eVJvd3NNZXNzYWdlcyh0aGlzOiBJVGFibGVCbG9jayAmIEVtcHR5Um93c0hhbmRsZXIsIGluYWN0aXZlQ29udGV4dHM/OiBDb250ZXh0IHwgQ29udGV4dFtdKTogdm9pZCB7XG5cdFx0TWVzc2FnaW5nLnJlbW92ZU1lc3NhZ2VzKFxuXHRcdFx0KE1lc3NhZ2luZy5nZXRNZXNzYWdlTW9kZWwoKS5nZXREYXRhKCkgYXMgTWVzc2FnZVtdKS5maWx0ZXIoKG1zZykgPT4ge1xuXHRcdFx0XHRjb25zdCB0ZWNobmljYWxEZXRhaWxzID0gKG1zZy5nZXRUZWNobmljYWxEZXRhaWxzKCkgfHwge30pIGFzIHsgdGFibGVJZD86IHN0cmluZzsgZW1wdHlSb3dNZXNzYWdlPzogYm9vbGVhbiB9O1xuXG5cdFx0XHRcdC8vIENoZWNrIGlmIG1zZyB0YXJnZXQgc3RhcnRzIHdpdGggYW55IHBhdGggaW4gdGhlIGluYWN0aXZlQ29udGV4dCBhcnJheVxuXHRcdFx0XHRjb25zdCBjb250ZXh0TWF0Y2hlcyA9IEFycmF5LmlzQXJyYXkoaW5hY3RpdmVDb250ZXh0cylcblx0XHRcdFx0XHQ/IGluYWN0aXZlQ29udGV4dHMuc29tZSgoY29udGV4dCkgPT4gbXNnLmdldFRhcmdldHMoKS5zb21lKCh2YWx1ZSkgPT4gdmFsdWUuc3RhcnRzV2l0aChjb250ZXh0LmdldFBhdGgoKSkpKVxuXHRcdFx0XHRcdDogIWluYWN0aXZlQ29udGV4dHMgfHwgbXNnLmdldFRhcmdldHMoKS5zb21lKCh2YWx1ZSkgPT4gdmFsdWUuc3RhcnRzV2l0aChpbmFjdGl2ZUNvbnRleHRzLmdldFBhdGgoKSkpO1xuXG5cdFx0XHRcdHJldHVybiBjb250ZXh0TWF0Y2hlcyAmJiB0ZWNobmljYWxEZXRhaWxzLmVtcHR5Um93TWVzc2FnZSAmJiB0ZWNobmljYWxEZXRhaWxzLnRhYmxlSWQgPT09IHRoaXMuZ2V0Q29udGVudCgpLmdldElkKCk7XG5cdFx0XHR9KVxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRpb24gb2YgaW5hY3RpdmUgcm93cyBmb3IgdGhlIHRhYmxlIGluIGNyZWF0aW9uIG1vZGUgXCJJbmxpbmVDcmVhdGlvblJvd3NcIi5cblx0ICogQHBhcmFtIGJpbmRpbmcgRGF0YSBsaXN0IGJpbmRpbmdcblx0ICogQHBhcmFtIHRhYmxlIFRoZSB0YWJsZSBiZWluZyBlZGl0ZWRcblx0ICogQHBhcmFtIHJlY3JlYXRlT25lUm93IGB0cnVlYCBpZiB0aGUgY2FsbCBpcyB0byByZWNyZWF0ZSBhbiBlbXB0eUxpbmVcblx0ICogQHBhcmFtIG5ld0lubGluZUNyZWF0aW9uUm93RnJvbVBhc3RlIE51bWJlciBvZiBuZXcgaW5hY3RpdmUgcm93cyB0byBiZSBjcmVhdGVkXG5cdCAqIEBwYXJhbSBmb3JjZUNyZWF0ZWF0RW5kIGB0cnVlYCBpZiB0aGUgbmV3IHJvdyBpcyB0byBiZSBjcmVhdGVkIGF0IHRoZSBlbmQgb2YgdGhlIHRhYmxlXG5cdCAqIEBwYXJhbSBkZWZhdWx0VmFsdWVGdW5jdGlvbkRhdGEgRGVmYXVsdCB2YWx1ZXMgcmV0cmlldmVkIGZyb20gdGhlIERlZmF1bHRWYWx1ZXNGdW5jdGlvbiB0byBiZSBhcHBsaWVkIHRvIHRoZSBuZXcgcm93c1xuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgY3JlYXRlZCBjb250ZXh0cyBvciB2b2lkIGlmIHRoZSBjcmVhdGlvbiBmYWlsZWRcblx0ICovXG5cdGFzeW5jIGNyZWF0ZUVtcHR5Um93cyhcblx0XHR0aGlzOiBJVGFibGVCbG9jayAmIEVtcHR5Um93c0hhbmRsZXIsXG5cdFx0YmluZGluZzogT0RhdGFMaXN0QmluZGluZyxcblx0XHR0YWJsZTogTURDVGFibGUsXG5cdFx0cmVjcmVhdGVPbmVSb3cgPSBmYWxzZSxcblx0XHRuZXdJbmxpbmVDcmVhdGlvblJvd0Zyb21QYXN0ZT86IG51bWJlcixcblx0XHRmb3JjZUNyZWF0ZWF0RW5kID0gZmFsc2UsXG5cdFx0ZGVmYXVsdFZhbHVlRnVuY3Rpb25EYXRhPzogb2JqZWN0IHwgdW5kZWZpbmVkXG5cdCk6IFByb21pc2U8dm9pZCB8IENvbnRleHRbXT4ge1xuXHRcdGNvbnN0IGlubGluZUNyZWF0aW9uUm93Q291bnQgPSBuZXdJbmxpbmVDcmVhdGlvblJvd0Zyb21QYXN0ZSA/PyAodGhpcy5nZXRUYWJsZURlZmluaXRpb24oKS5jb250cm9sPy5pbmxpbmVDcmVhdGlvblJvd0NvdW50IHx8IDEpO1xuXHRcdGlmICh0aGlzLmNyZWF0aW5nRW1wdHlSb3dzIHx8IHRoaXMuZ2V0SW5hY3RpdmVDb250ZXh0TnVtYmVyKGJpbmRpbmcpID4gaW5saW5lQ3JlYXRpb25Sb3dDb3VudCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBkYXRhID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogaW5saW5lQ3JlYXRpb25Sb3dDb3VudCB9LCAoKSA9PiAoe30pKSxcblx0XHRcdGF0RW5kID0gdGFibGUuZGF0YShcInRhYmxlVHlwZVwiKSAhPT0gXCJSZXNwb25zaXZlVGFibGVcIixcblx0XHRcdGluYWN0aXZlID0gdHJ1ZSxcblx0XHRcdHZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KHRhYmxlKSxcblx0XHRcdGNvbnRyb2xsZXIgPSB2aWV3LmdldENvbnRyb2xsZXIoKSxcblx0XHRcdGVkaXRGbG93ID0gY29udHJvbGxlci5lZGl0Rmxvdyxcblx0XHRcdGFwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudCh0YWJsZSk7XG5cblx0XHR0aGlzLmNyZWF0aW5nRW1wdHlSb3dzID0gdHJ1ZTtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgZGF0YUZvckNyZWF0ZSA9IHJlY3JlYXRlT25lUm93ID8gW3t9XSA6IGRhdGE7XG5cdFx0XHRjb25zdCBjb250ZXh0cyA9IGF3YWl0IGVkaXRGbG93LmNyZWF0ZU11bHRpcGxlRG9jdW1lbnRzKFxuXHRcdFx0XHRiaW5kaW5nLFxuXHRcdFx0XHQvLyBkdXJpbmcgYSBsaXZlIGNoYW5nZSwgb25seSAxIG5ldyBkb2N1bWVudCBpcyBjcmVhdGVkXG5cdFx0XHRcdGRhdGFGb3JDcmVhdGUsXG5cdFx0XHRcdC8vIFdoZW4gZWRpdGluZyBhbiBlbXB0eSByb3csIHRoZSBuZXcgZW1wdHkgcm93IGlzIHRvIGJlIGNyZWF0ZWQganVzdCBiZWxvdyBhbmQgbm90IGFib3ZlXG5cdFx0XHRcdHJlY3JlYXRlT25lUm93IHx8IGZvcmNlQ3JlYXRlYXRFbmQgPyB0cnVlIDogYXRFbmQsXG5cdFx0XHRcdGZhbHNlLFxuXHRcdFx0XHRjb250cm9sbGVyLmVkaXRGbG93Lm9uQmVmb3JlQ3JlYXRlLFxuXHRcdFx0XHRpbmFjdGl2ZSxcblx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHRkZWZhdWx0VmFsdWVGdW5jdGlvbkRhdGFcblx0XHRcdCk7XG5cdFx0XHRhcHBDb21wb25lbnQuZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlKCkucmVxdWVzdFNpZGVFZmZlY3RzRm9yTmF2aWdhdGlvblByb3BlcnR5KGJpbmRpbmcuZ2V0UGF0aCgpLCB2aWV3LmdldEJpbmRpbmdDb250ZXh0KCkpO1xuXHRcdFx0Y29udGV4dHM/LmZvckVhY2goYXN5bmMgZnVuY3Rpb24gKGNvbnRleHQ6IENvbnRleHQpIHtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRhd2FpdCBjb250ZXh0LmNyZWF0ZWQoKTtcblx0XHRcdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdFx0XHRpZiAoIShlcnJvciBhcyBDb250ZXh0RXJyb3JUeXBlKS5jYW5jZWxlZCkge1xuXHRcdFx0XHRcdFx0dGhyb3cgZXJyb3I7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdHJldHVybiBjb250ZXh0cztcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRMb2cuZXJyb3IoZSBhcyBzdHJpbmcpO1xuXHRcdH0gZmluYWxseSB7XG5cdFx0XHR0aGlzLmNyZWF0aW5nRW1wdHlSb3dzID0gZmFsc2U7XG5cdFx0fVxuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O01Bd0JxQkEsZ0JBQWdCO0lBQUEsU0FBQUEsaUJBQUE7SUFBQUMsUUFBQSxHQUFBRCxnQkFBQTtJQUFBLElBQUFFLE1BQUEsR0FBQUYsZ0JBQUEsQ0FBQUcsU0FBQTtJQUdwQztBQUNEO0FBQ0E7SUFGQ0QsTUFBQSxDQUtBRSxVQUFVLEdBQVYsU0FBQUEsVUFBVUEsQ0FBQ0MsVUFBb0IsRUFBUTtNQUN0QztJQUFBOztJQUdEO0FBQ0Q7QUFDQTtBQUNBLE9BSEM7SUFBQUgsTUFBQSxDQUlBSSxrQkFBa0IsR0FBbEIsU0FBQUEsa0JBQWtCQSxDQUF1Q0MsUUFBK0IsRUFBUTtNQUMvRixNQUFNQyxLQUFLLEdBQUdELFFBQVEsQ0FBQ0UsU0FBUyxDQUFDLENBQUM7UUFDakNDLGNBQWMsR0FBR0YsS0FBSyxDQUFDRyxpQkFBaUIsQ0FBQyxDQUFZO1FBQ3JEQyxPQUFPLEdBQUdGLGNBQWMsQ0FBQ0csVUFBVSxDQUFDLENBQUM7TUFDdEM7TUFDQSxJQUFJSCxjQUFjLENBQUNJLFVBQVUsQ0FBQyxDQUFDLEVBQUU7UUFDaEMsTUFBTUMsS0FBSyxHQUFHLElBQUksRUFBRUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsSUFBSSxFQUFFQyxlQUFlLENBQUNMLE9BQU8sRUFBc0JHLEtBQUssRUFBRSxJQUFJLENBQUM7TUFDaEU7SUFDRDs7SUFFQTtBQUNEO0FBQ0E7QUFDQSxPQUhDO0lBQUFiLE1BQUEsQ0FJTWdCLHFCQUFxQixHQUEzQixlQUFNQSxxQkFBcUJBLENBRTFCQyxhQUErRCxFQUMvQztNQUNoQixNQUFNQyxnQkFBZ0IsR0FBR0QsYUFBYSxDQUFDRSxZQUFZLENBQUMsU0FBUyxDQUFDO01BQzlEO01BQ0E7TUFDQSxJQUFJLENBQUNKLGVBQWUsQ0FBQ0UsYUFBYSxDQUFDVixTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQ08sVUFBVSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUM7TUFDeEUsSUFBSSxDQUFDLElBQUksQ0FBQ00sZ0JBQWdCLENBQUNGLGdCQUFnQixDQUFDLEVBQUU7UUFDN0NELGFBQWEsQ0FBQ0ksY0FBYyxDQUFDLENBQUM7UUFDOUI7TUFDRDtNQUNBLElBQUk7UUFDSCxNQUFNQyxhQUFhLEdBQUdKLGdCQUFnQixDQUFDSyxPQUFPLENBQUMsQ0FBQztVQUMvQ0MsSUFBSSxHQUFHQyxXQUFXLENBQUNDLGFBQWEsQ0FBQyxJQUFJLENBQUM7VUFDdENDLFVBQVUsR0FBR0gsSUFBSSxDQUFDSSxhQUFhLENBQUMsQ0FBQztVQUNqQ0MsUUFBUSxHQUFHRixVQUFVLENBQUNFLFFBQVE7UUFDL0IsSUFBSTtVQUNILE9BQU9YLGdCQUFnQixDQUFDWSxPQUFPLENBQUMsQ0FBQyxJQUFJQyxPQUFPLENBQUNDLE9BQU8sQ0FBQyxDQUFDLENBQUM7VUFDdkQsTUFBTUgsUUFBUSxDQUFDSSxhQUFhLENBQUM7WUFBRUMsT0FBTyxFQUFFaEI7VUFBaUIsQ0FBQyxDQUFDO1FBQzVELENBQUMsQ0FBQyxPQUFPaUIsQ0FBQyxFQUFFO1VBQ1hDLEdBQUcsQ0FBQ0MsT0FBTyxDQUFDLDhCQUE4Qm5CLGdCQUFnQixDQUFDSyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUM7VUFDdkU7UUFDRDtRQUNBLE1BQU1lLE9BQU8sR0FBR3BCLGdCQUFnQixDQUFDSyxPQUFPLENBQUMsQ0FBQztRQUMxQyxNQUFNZ0Isa0JBQWtCLEdBQUdmLElBQUksQ0FBQ0ksYUFBYSxDQUFDLENBQUMsQ0FBQ1csa0JBQWtCO1FBQ2xFO1FBQ0FBLGtCQUFrQixDQUFDQyxJQUFJLENBQUM7VUFBRUMsTUFBTSxFQUFFQyxRQUFRLENBQUNDLE1BQU07VUFBRUw7UUFBUSxDQUFDLENBQUM7UUFDN0Q7UUFDQTtRQUNBQyxrQkFBa0IsQ0FBQ0sseUJBQXlCLENBQUN0QixhQUFhLEVBQUVKLGdCQUFnQixDQUFDSyxPQUFPLENBQUMsQ0FBQyxDQUFDO01BQ3hGLENBQUMsQ0FBQyxPQUFPc0IsS0FBSyxFQUFFO1FBQ2ZULEdBQUcsQ0FBQ1MsS0FBSyxDQUFDLDhCQUE4QixFQUFFQSxLQUFjLENBQUM7TUFDMUQ7SUFDRDs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBLE9BSkM7SUFBQTdDLE1BQUEsQ0FLQThDLHdCQUF3QixHQUF4QixTQUFBQSx3QkFBd0JBLENBQUNDLFdBQTZCLEVBQXFDO01BQzFGLE1BQU1DLEtBQUssR0FBR0QsV0FBVyxDQUFDRSxRQUFRLENBQUMsQ0FBQztNQUNwQyxNQUFNQyxTQUFTLEdBQUdGLEtBQUssQ0FBQ0csWUFBWSxDQUFDLENBQUM7TUFDdEMsTUFBTUMsV0FBVyxHQUFHRixTQUFTLENBQUNHLGNBQWMsQ0FBQ04sV0FBVyxDQUFDTyxlQUFlLENBQUMsQ0FBVyxDQUFDO01BQ3JGLE1BQU1DLHFCQUFxQixHQUFHQywyQkFBMkIsQ0FBQ0osV0FBVyxDQUFDO01BRXRFLE1BQU1LLHlCQUF5QixHQUFJRixxQkFBcUIsQ0FBQ0csWUFBWSxDQUFvQ0MsV0FBVyxDQUFDQyxNQUFNLEVBQ3hIQyxxQkFBcUI7TUFDeEIsTUFBTUMsNEJBQTRCLEdBQUlQLHFCQUFxQixDQUFDUSxlQUFlLEVBQTRCSixXQUFXLENBQUNDLE1BQU0sRUFDdEhDLHFCQUFxQjtNQUV4QixPQUFPSix5QkFBeUIsSUFBSUssNEJBQTRCO0lBQ2pFOztJQUVBO0FBQ0Q7QUFDQTtBQUNBLE9BSEM7SUFBQTlELE1BQUEsQ0FJQWdFLG1CQUFtQixHQUFuQixTQUFBQSxtQkFBbUJBLENBQXVDQyxVQUFtQixFQUFRO01BQ3BGLElBQUksQ0FBQ0MsV0FBVyxDQUFDLGtCQUFrQixFQUFFRCxVQUFVLENBQUM7TUFDaEQsTUFBTUUsY0FBYyxHQUFHLElBQUksQ0FBQ3JELFVBQVUsQ0FBQyxDQUFDLENBQUNzRCxJQUFJLENBQUMsQ0FBQyxDQUFDRCxjQUFjO1FBQzdERSxZQUFZLEdBQUc1QyxXQUFXLENBQUM2QyxlQUFlLENBQUMsSUFBSSxDQUFDeEQsVUFBVSxDQUFDLENBQUMsQ0FBQztNQUM5RCxJQUFJbUQsVUFBVSxFQUFFO1FBQ2YsTUFBTWxCLFdBQVcsR0FBRyxJQUFJLENBQUNqQyxVQUFVLENBQUMsQ0FBQyxDQUFDeUQsYUFBYSxDQUFDLENBQUM7UUFDckQsTUFBTUMscUJBQXFCLEdBQUd6QixXQUFXLEVBQUVPLGVBQWUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDUix3QkFBd0IsQ0FBQ0MsV0FBVyxDQUFDLEdBQUcwQixTQUFTO1FBQ3JILElBQUlELHFCQUFxQixFQUFFO1VBQzFCSCxZQUFZLENBQUNLLHFCQUFxQixDQUFDLENBQUMsQ0FBQ0Msc0JBQXNCLENBQUNSLGNBQWMsRUFBRSxJQUFJLENBQUNTLGVBQWUsQ0FBQ0MsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdHO01BQ0QsQ0FBQyxNQUFNO1FBQ05SLFlBQVksQ0FBQ0sscUJBQXFCLENBQUMsQ0FBQyxDQUFDSSx3QkFBd0IsQ0FBQ1gsY0FBYyxDQUFDO01BQzlFO01BRUEsSUFBSSxJQUFJLENBQUNZLG9CQUFvQixFQUFFO1FBQzlCLElBQUksQ0FBQ0Esb0JBQW9CLENBQ3ZCQyxJQUFJLENBQUVDLGdCQUFnQixJQUFLO1VBQzNCLElBQUksQ0FBQ0MsY0FBYyxDQUFDLElBQUksQ0FBQ3BFLFVBQVUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFbUUsZ0JBQWdCLENBQUM7VUFDL0QsT0FBT0EsZ0JBQWdCO1FBQ3hCLENBQUMsQ0FBQyxDQUNERSxLQUFLLENBQUV0QyxLQUFLLElBQUs7VUFDakJULEdBQUcsQ0FBQ1MsS0FBSyxDQUFDLG9DQUFvQyxFQUFFQSxLQUFLLENBQUM7UUFDdkQsQ0FBQyxDQUFDO01BQ0osQ0FBQyxNQUFNO1FBQ04sSUFBSSxDQUFDcUMsY0FBYyxDQUFDLElBQUksQ0FBQ3BFLFVBQVUsQ0FBQyxDQUFDLENBQUM7TUFDdkM7SUFDRDs7SUFFQTtBQUNEO0FBQ0E7QUFDQSxPQUhDO0lBQUFkLE1BQUEsQ0FJTTRFLGVBQWUsR0FBckIsZUFBTUEsZUFBZUEsQ0FBQSxFQUFzRDtNQUMxRSxNQUFNL0QsS0FBSyxHQUFHLElBQUksQ0FBQ0MsVUFBVSxDQUFDLENBQUM7TUFDL0IsTUFBTUosT0FBTyxHQUFHRyxLQUFLLENBQUMwRCxhQUFhLENBQUMsQ0FBQztNQUNyQyxNQUFNYSxvQkFBb0IsR0FBRzFFLE9BQU8sQ0FBQzJFLGdCQUFnQixDQUFDLENBQUM7TUFDdkQsSUFBSTNFLE9BQU8sSUFBSUEsT0FBTyxDQUFDNEUsVUFBVSxDQUFDLENBQUMsSUFBSTVFLE9BQU8sQ0FBQzZFLGFBQWEsQ0FBQyxDQUFDLElBQUlILG9CQUFvQixFQUFFO1FBQ3ZGLE1BQU1JLFdBQVcsR0FBR0osb0JBQW9CLENBQUM3RCxPQUFPLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUNrRSxnQkFBZ0IsQ0FBQy9FLE9BQU8sRUFBRThFLFdBQVcsQ0FBQztRQUMzQyxNQUFNLElBQUksQ0FBQ3pFLGVBQWUsQ0FBQ0wsT0FBTyxFQUFFRyxLQUFLLENBQUM7TUFDM0M7TUFDQTtJQUNEOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsT0FKQztJQUFBYixNQUFBLENBS2MwRiwyQkFBMkIsR0FBekMsZUFBY0EsMkJBQTJCQSxDQUV4QzdFLEtBQWUsRUFDeUI7TUFDeEMsSUFBSSxJQUFJLENBQUM4RSxrQkFBa0IsQ0FBQyxDQUFDLENBQUNDLE9BQU8sRUFBRUMsWUFBWSxLQUFLQyxZQUFZLENBQUNDLGtCQUFrQixFQUFFO1FBQ3hGLE9BQU90QixTQUFTO01BQ2pCO01BRUEsTUFBTXVCLE9BQU8sR0FBR25GLEtBQUssQ0FBQ29DLFFBQVEsQ0FBQyxJQUFJLENBQTBCO01BQzdELElBQUksQ0FBQytDLE9BQU8sRUFBRTtRQUNiLE9BQU92QixTQUFTO01BQ2pCO01BRUEsSUFBSXVCLE9BQU8sQ0FBQ0MsV0FBVyxDQUFDLG9CQUFvQixDQUFDLEVBQUU7UUFDOUM7UUFDQSxNQUFNQyxZQUFZLEdBQUdGLE9BQU8sQ0FBQ0csWUFBWSxDQUFDLG9CQUFvQixDQUFDO1FBQy9ELE1BQU0sSUFBSXBFLE9BQU8sQ0FBUUMsT0FBTyxJQUFLO1VBQ3BDLE1BQU1vRSxTQUFTLEdBQUdBLENBQUEsS0FBWTtZQUM3QkYsWUFBWSxDQUFDRyxZQUFZLENBQUNELFNBQVMsQ0FBQztZQUNwQ0YsWUFBWSxDQUFDSSxPQUFPLENBQUMsQ0FBQztZQUN0QnRFLE9BQU8sQ0FBQyxDQUFDO1VBQ1YsQ0FBQztVQUNEa0UsWUFBWSxDQUFDSyxZQUFZLENBQUNILFNBQVMsQ0FBQztRQUNyQyxDQUFDLENBQUM7TUFDSDtNQUVBLE1BQU0xRixPQUFPLEdBQUdHLEtBQUssQ0FBQzBELGFBQWEsQ0FBQyxDQUFpQztNQUVyRSxJQUFJLENBQUM3RCxPQUFPLEVBQUU7UUFDYixPQUFPK0QsU0FBUztNQUNqQjtNQUNBLE9BQU8vRCxPQUFPO0lBQ2Y7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQSxPQUpDO0lBQUFWLE1BQUEsQ0FLTXdHLGdCQUFnQixHQUF0QixlQUFNQSxnQkFBZ0JBLENBQXVDM0YsS0FBZSxFQUErQjtNQUMxRyxNQUFNSCxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUNnRiwyQkFBMkIsQ0FBQzdFLEtBQUssQ0FBQztNQUM3RCxJQUFJLENBQUNILE9BQU8sRUFBRSxPQUFPK0QsU0FBUztNQUU5QixNQUFNSixZQUFZLEdBQUc1QyxXQUFXLENBQUM2QyxlQUFlLENBQUM3QyxXQUFXLENBQUNDLGFBQWEsQ0FBQ2IsS0FBSyxDQUFDLENBQUM7TUFDbEYsT0FBT3dELFlBQVksR0FBR29DLGlCQUFpQixDQUFDQywrQkFBK0IsQ0FBQ2hHLE9BQU8sRUFBRTJELFlBQVksQ0FBQyxHQUFHSSxTQUFTO0lBQzNHLENBQUM7SUFBQXpFLE1BQUEsQ0FFS2tGLGNBQWMsR0FBcEIsZUFBTUEsY0FBY0EsQ0FFbkJyRSxLQUFlLEVBR0M7TUFBQSxJQUZoQjhGLHNCQUFzQixHQUFBQyxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBbkMsU0FBQSxHQUFBbUMsU0FBQSxNQUFHLEtBQUs7TUFBQSxJQUM5QjNCLGdCQUFnQixHQUFBMkIsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQW5DLFNBQUEsR0FBQW1DLFNBQUEsTUFBRyxDQUFDLENBQUM7TUFFckIsTUFBTWxHLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQ2dGLDJCQUEyQixDQUFDN0UsS0FBSyxDQUFDO01BQzdELElBQUksQ0FBQ0gsT0FBTyxFQUFFO1FBQ2I7TUFDRDtNQUNBLE1BQU0wRSxvQkFBb0IsR0FBRzFFLE9BQU8sQ0FBQzJFLGdCQUFnQixDQUFDLENBQUM7TUFDdkQsSUFBSTNFLE9BQU8sSUFBSUEsT0FBTyxDQUFDNEUsVUFBVSxDQUFDLENBQUMsSUFBSTVFLE9BQU8sQ0FBQzZFLGFBQWEsQ0FBQyxDQUFDLElBQUlILG9CQUFvQixFQUFFO1FBQ3ZGLE1BQU1JLFdBQVcsR0FBR0osb0JBQW9CLENBQUM3RCxPQUFPLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDdUYsZ0JBQWdCLEVBQUU7VUFDM0IsSUFBSSxDQUFDQyx1QkFBdUIsQ0FBQyxDQUFDO1VBQzlCLE9BQU8sSUFBSSxDQUFDdEIsZ0JBQWdCLENBQUMvRSxPQUFPLEVBQUU4RSxXQUFXLENBQUM7UUFDbkQ7UUFDQSxJQUFJLENBQUMvRCxXQUFXLENBQUN1RixhQUFhLENBQUNuRyxLQUFLLENBQUMsRUFBRTtVQUN0QztRQUNEO1FBQ0EsSUFDQyxJQUFJLENBQUM4RSxrQkFBa0IsQ0FBQyxDQUFDLENBQUNDLE9BQU8sRUFBRXFCLGtDQUFrQyxJQUNyRSxDQUFDcEcsS0FBSyxDQUFDSixpQkFBaUIsQ0FBQyxjQUFjLENBQUMsRUFBRXdGLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFDbkUsQ0FBQ1Usc0JBQXNCLEVBQ3RCO1VBQ0Q7UUFDRDtRQUNBLE1BQU1PLGVBQWUsR0FBR3hHLE9BQU8sQ0FBQ3lHLHFCQUFxQixDQUFDLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLFVBQVVsRixPQUFPLEVBQUU7VUFDL0U7VUFDQSxPQUFPQSxPQUFPLENBQUN0QixVQUFVLENBQUMsQ0FBQyxJQUFJc0IsT0FBTyxDQUFDWCxPQUFPLENBQUMsQ0FBQyxDQUFDOEYsVUFBVSxDQUFDN0IsV0FBVyxDQUFDO1FBQ3pFLENBQUMsQ0FBQztRQUNGLElBQUksQ0FBQzBCLGVBQWUsRUFBRTtVQUNyQixJQUFJLENBQUNILHVCQUF1QixDQUFDLENBQUM7VUFDOUIsTUFBTSxJQUFJLENBQUNoRyxlQUFlLENBQUNMLE9BQU8sRUFBRUcsS0FBSyxFQUFFLEtBQUssRUFBRTRELFNBQVMsRUFBRSxLQUFLLEVBQUVRLGdCQUFnQixDQUFDO1FBQ3RGO01BQ0Q7SUFDRDs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBLE9BSkM7SUFBQWpGLE1BQUEsQ0FLQXlGLGdCQUFnQixHQUFoQixTQUFBQSxnQkFBZ0JBLENBQUMvRSxPQUF5QixFQUFFOEUsV0FBbUIsRUFBUTtNQUN0RSxLQUFLLE1BQU10RCxPQUFPLElBQUl4QixPQUFPLENBQUN5RyxxQkFBcUIsQ0FBQyxDQUFDLEVBQUU7UUFDdEQsSUFBSWpGLE9BQU8sQ0FBQ3RCLFVBQVUsQ0FBQyxDQUFDLElBQUlzQixPQUFPLENBQUNYLE9BQU8sQ0FBQyxDQUFDLENBQUM4RixVQUFVLENBQUM3QixXQUFXLENBQUMsRUFBRTtVQUN0RXRELE9BQU8sQ0FBQ29GLE1BQU0sQ0FBQyxDQUFDO1FBQ2pCO01BQ0Q7SUFDRDs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBLE9BSkM7SUFBQXRILE1BQUEsQ0FLQXVILHdCQUF3QixHQUF4QixTQUFBQSx3QkFBd0JBLENBQUM3RyxPQUF5QixFQUFVO01BQzNELE9BQU9BLE9BQU8sQ0FBQ3lHLHFCQUFxQixDQUFDLENBQUMsQ0FBQ0ssTUFBTSxDQUFFdEYsT0FBTyxJQUFLQSxPQUFPLENBQUN0QixVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUNpRyxNQUFNO0lBQ3hGOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsT0FKQztJQUFBN0csTUFBQSxDQUtBb0IsZ0JBQWdCLEdBQWhCLFNBQUFBLGdCQUFnQkEsQ0FBdUNjLE9BQWdCLEVBQVc7TUFDakYsTUFBTXVGLGtCQUFrQixHQUFHLElBQUksQ0FBQzlCLGtCQUFrQixDQUFDLENBQUMsQ0FBQytCLFVBQVUsQ0FBQ0Qsa0JBQWtCO01BQ2xGLElBQUlBLGtCQUFrQixFQUFFWixNQUFNLEVBQUU7UUFDL0IsSUFBSSxDQUFDRSx1QkFBdUIsQ0FBQzdFLE9BQU8sQ0FBQztRQUNyQyxNQUFNeUYsaUJBQWlCLEdBQUdGLGtCQUFrQixDQUFDRCxNQUFNLENBQUVJLGdCQUFnQixJQUFLLENBQUMxRixPQUFPLENBQUMyRixTQUFTLENBQUNELGdCQUFnQixDQUFDLENBQUM7UUFDL0csSUFBSUQsaUJBQWlCLENBQUNkLE1BQU0sRUFBRTtVQUM3QixNQUFNaUIsY0FBYyxHQUFHQyxPQUFPLENBQUNDLG9CQUFvQixDQUFDLGVBQWUsQ0FBRTtVQUNyRSxNQUFNQyxRQUFtQixHQUFHLEVBQUU7VUFDOUIsSUFBSUMsZUFBc0M7VUFDMUMsS0FBSyxNQUFNQyxlQUFlLElBQUlSLGlCQUFpQixFQUFFO1lBQ2hELElBQUlTLFlBQW9CO1lBQ3hCLE1BQU1DLGFBQWEsR0FBRyxJQUFJLENBQUMxQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMyQyxPQUFPLENBQUNsQixJQUFJLENBQzFEbUIsV0FBVyxJQUNWQSxXQUFXLENBQTJCQyxZQUFZLEtBQUtMLGVBQWUsSUFDdEVJLFdBQVcsQ0FBQ0UsYUFBYSxJQUFJRixXQUFXLENBQUNFLGFBQWEsQ0FBQ0MsUUFBUSxDQUFDUCxlQUFlLENBQ2xGLENBQUM7WUFFRCxJQUFJLENBQUNFLGFBQWEsRUFBRTtjQUNuQkQsWUFBWSxHQUFHTixjQUFjLENBQUNhLE9BQU8sQ0FBQyw0QkFBNEIsRUFBRSxDQUFDUixlQUFlLENBQUMsQ0FBQztZQUN2RixDQUFDLE1BQU07Y0FDTkQsZUFBZSxHQUFHLElBQUksQ0FBQ3BILFVBQVUsQ0FBQyxDQUFDLENBQ2pDOEgsVUFBVSxDQUFDLENBQUMsQ0FDWnhCLElBQUksQ0FBRXlCLFNBQVMsSUFBS0EsU0FBUyxDQUFDQyxjQUFjLENBQUMsQ0FBQyxLQUFLVCxhQUFhLENBQUNVLElBQUksQ0FBQztjQUN4RVgsWUFBWSxHQUFHTixjQUFjLENBQUNhLE9BQU8sQ0FDcENULGVBQWUsR0FBRyw0QkFBNEIsR0FBRyxtQ0FBbUMsRUFDcEYsQ0FBQ0EsZUFBZSxFQUFFYyxTQUFTLENBQUMsQ0FBQyxJQUFJWCxhQUFhLENBQUNZLEtBQUssQ0FDckQsQ0FBQztZQUNGO1lBRUFoQixRQUFRLENBQUNpQixJQUFJLENBQ1osSUFBSUMsT0FBTyxDQUFDO2NBQ1hDLE9BQU8sRUFBRWhCLFlBQVk7Y0FDckJpQixTQUFTLEVBQUUsSUFBSSxDQUFDcEcsUUFBUSxDQUFDLENBQUM7Y0FDMUJxRyxJQUFJLEVBQUVDLFdBQVcsQ0FBQ0MsS0FBSztjQUN2QkMsU0FBUyxFQUFFLEtBQUs7Y0FDaEJDLFVBQVUsRUFBRSxJQUFJO2NBQ2hCQyxnQkFBZ0IsRUFBRTtnQkFDakJDLE9BQU8sRUFBRSxJQUFJLENBQUM5SSxVQUFVLENBQUMsQ0FBQyxDQUFDK0ksS0FBSyxDQUFDLENBQUM7Z0JBQUU7Z0JBQ3BDQyxlQUFlLEVBQUUsSUFBSTtnQkFDckJ6QixhQUFhLEVBQUVILGVBQWUsR0FBR3pELFNBQVMsR0FBRzBELGVBQWUsQ0FBQztjQUM5RCxDQUFDO2NBQ0Q0QixNQUFNLEVBQUUsR0FBRzdILE9BQU8sRUFBRVgsT0FBTyxDQUFDLENBQUMsSUFBSTRHLGVBQWU7WUFDakQsQ0FBQyxDQUNGLENBQUM7VUFDRjtVQUNBNkIsU0FBUyxDQUFDQyxXQUFXLENBQUNoQyxRQUFRLENBQUM7VUFDL0IsT0FBTyxLQUFLO1FBQ2I7TUFDRDtNQUNBLE9BQU8sSUFBSTtJQUNaOztJQUVBO0FBQ0Q7QUFDQTtBQUNBLE9BSEM7SUFBQWpJLE1BQUEsQ0FJQStHLHVCQUF1QixHQUF2QixTQUFBQSx1QkFBdUJBLENBQXVDbUQsZ0JBQXNDLEVBQVE7TUFDM0dGLFNBQVMsQ0FBQ0csY0FBYyxDQUN0QkgsU0FBUyxDQUFDSSxlQUFlLENBQUMsQ0FBQyxDQUFDQyxPQUFPLENBQUMsQ0FBQyxDQUFlN0MsTUFBTSxDQUFFOEMsR0FBRyxJQUFLO1FBQ3BFLE1BQU1YLGdCQUFnQixHQUFJVyxHQUFHLENBQUNDLG1CQUFtQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQXFEOztRQUU3RztRQUNBLE1BQU1DLGNBQWMsR0FBR0MsS0FBSyxDQUFDQyxPQUFPLENBQUNSLGdCQUFnQixDQUFDLEdBQ25EQSxnQkFBZ0IsQ0FBQ1MsSUFBSSxDQUFFekksT0FBTyxJQUFLb0ksR0FBRyxDQUFDTSxVQUFVLENBQUMsQ0FBQyxDQUFDRCxJQUFJLENBQUVFLEtBQUssSUFBS0EsS0FBSyxDQUFDeEQsVUFBVSxDQUFDbkYsT0FBTyxDQUFDWCxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUN6RyxDQUFDMkksZ0JBQWdCLElBQUlJLEdBQUcsQ0FBQ00sVUFBVSxDQUFDLENBQUMsQ0FBQ0QsSUFBSSxDQUFFRSxLQUFLLElBQUtBLEtBQUssQ0FBQ3hELFVBQVUsQ0FBQzZDLGdCQUFnQixDQUFDM0ksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXRHLE9BQU9pSixjQUFjLElBQUliLGdCQUFnQixDQUFDRyxlQUFlLElBQUlILGdCQUFnQixDQUFDQyxPQUFPLEtBQUssSUFBSSxDQUFDOUksVUFBVSxDQUFDLENBQUMsQ0FBQytJLEtBQUssQ0FBQyxDQUFDO01BQ3BILENBQUMsQ0FDRixDQUFDO0lBQ0Y7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FUQztJQUFBN0osTUFBQSxDQVVNZSxlQUFlLEdBQXJCLGVBQU1BLGVBQWVBLENBRXBCTCxPQUF5QixFQUN6QkcsS0FBZSxFQUthO01BQUEsSUFKNUJpSyxjQUFjLEdBQUFsRSxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBbkMsU0FBQSxHQUFBbUMsU0FBQSxNQUFHLEtBQUs7TUFBQSxJQUN0Qm1FLDZCQUFzQyxHQUFBbkUsU0FBQSxDQUFBQyxNQUFBLE9BQUFELFNBQUEsTUFBQW5DLFNBQUE7TUFBQSxJQUN0Q3VHLGdCQUFnQixHQUFBcEUsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQW5DLFNBQUEsR0FBQW1DLFNBQUEsTUFBRyxLQUFLO01BQUEsSUFDeEJxRSx3QkFBNkMsR0FBQXJFLFNBQUEsQ0FBQUMsTUFBQSxPQUFBRCxTQUFBLE1BQUFuQyxTQUFBO01BRTdDLE1BQU15RyxzQkFBc0IsR0FBR0gsNkJBQTZCLEtBQUssSUFBSSxDQUFDcEYsa0JBQWtCLENBQUMsQ0FBQyxDQUFDQyxPQUFPLEVBQUVzRixzQkFBc0IsSUFBSSxDQUFDLENBQUM7TUFDaEksSUFBSSxJQUFJLENBQUNDLGlCQUFpQixJQUFJLElBQUksQ0FBQzVELHdCQUF3QixDQUFDN0csT0FBTyxDQUFDLEdBQUd3SyxzQkFBc0IsRUFBRTtRQUM5RjtNQUNEO01BQ0EsTUFBTTlHLElBQUksR0FBR3FHLEtBQUssQ0FBQ1csSUFBSSxDQUFDO1VBQUV2RSxNQUFNLEVBQUVxRTtRQUF1QixDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RFRyxLQUFLLEdBQUd4SyxLQUFLLENBQUN1RCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssaUJBQWlCO1FBQ3JEa0gsUUFBUSxHQUFHLElBQUk7UUFDZjlKLElBQUksR0FBR0MsV0FBVyxDQUFDQyxhQUFhLENBQUNiLEtBQUssQ0FBQztRQUN2Q2MsVUFBVSxHQUFHSCxJQUFJLENBQUNJLGFBQWEsQ0FBQyxDQUFDO1FBQ2pDQyxRQUFRLEdBQUdGLFVBQVUsQ0FBQ0UsUUFBUTtRQUM5QndDLFlBQVksR0FBRzVDLFdBQVcsQ0FBQzZDLGVBQWUsQ0FBQ3pELEtBQUssQ0FBQztNQUVsRCxJQUFJLENBQUNzSyxpQkFBaUIsR0FBRyxJQUFJO01BQzdCLElBQUk7UUFDSCxNQUFNSSxhQUFhLEdBQUdULGNBQWMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcxRyxJQUFJO1FBQ2xELE1BQU1vSCxRQUFRLEdBQUcsTUFBTTNKLFFBQVEsQ0FBQzRKLHVCQUF1QixDQUN0RC9LLE9BQU87UUFDUDtRQUNBNkssYUFBYTtRQUNiO1FBQ0FULGNBQWMsSUFBSUUsZ0JBQWdCLEdBQUcsSUFBSSxHQUFHSyxLQUFLLEVBQ2pELEtBQUssRUFDTDFKLFVBQVUsQ0FBQ0UsUUFBUSxDQUFDNkosY0FBYyxFQUNsQ0osUUFBUSxFQUNSN0csU0FBUyxFQUNUd0csd0JBQ0QsQ0FBQztRQUNENUcsWUFBWSxDQUFDSyxxQkFBcUIsQ0FBQyxDQUFDLENBQUNpSCx1Q0FBdUMsQ0FBQ2pMLE9BQU8sQ0FBQ2EsT0FBTyxDQUFDLENBQUMsRUFBRUMsSUFBSSxDQUFDZixpQkFBaUIsQ0FBQyxDQUFDLENBQUM7UUFDekgrSyxRQUFRLEVBQUVJLE9BQU8sQ0FBQyxnQkFBZ0IxSixPQUFnQixFQUFFO1VBQ25ELElBQUk7WUFDSCxNQUFNQSxPQUFPLENBQUNKLE9BQU8sQ0FBQyxDQUFDO1VBQ3hCLENBQUMsQ0FBQyxPQUFPZSxLQUFLLEVBQUU7WUFDZixJQUFJLENBQUVBLEtBQUssQ0FBc0JnSixRQUFRLEVBQUU7Y0FDMUMsTUFBTWhKLEtBQUs7WUFDWjtVQUNEO1FBQ0QsQ0FBQyxDQUFDO1FBQ0YsT0FBTzJJLFFBQVE7TUFDaEIsQ0FBQyxDQUFDLE9BQU9ySixDQUFDLEVBQUU7UUFDWEMsR0FBRyxDQUFDUyxLQUFLLENBQUNWLENBQVcsQ0FBQztNQUN2QixDQUFDLFNBQVM7UUFDVCxJQUFJLENBQUNnSixpQkFBaUIsR0FBRyxLQUFLO01BQy9CO0lBQ0QsQ0FBQztJQUFBLE9BQUFyTCxnQkFBQTtFQUFBO0VBQUFDLFFBQUEsR0FBQUQsZ0JBQUE7RUFBQSxPQUFBQyxRQUFBO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -4,6 +4,7 @@ import Log from "sap/base/Log";
|
|
|
4
4
|
import { type IInterfaceWithMixin } from "sap/fe/base/ClassSupport";
|
|
5
5
|
import CommonUtils from "sap/fe/core/CommonUtils";
|
|
6
6
|
import { Activity } from "sap/fe/core/controllerextensions/collaboration/CollaborationCommon";
|
|
7
|
+
import TransactionHelper from "sap/fe/core/controllerextensions/editFlow/TransactionHelper";
|
|
7
8
|
import { CreationMode } from "sap/fe/core/converters/ManifestSettings";
|
|
8
9
|
import { getInvolvedDataModelObjects } from "sap/fe/core/converters/MetaModelConverter";
|
|
9
10
|
import type { AnnotationTableColumn } from "sap/fe/core/converters/controls/Common/table/Columns";
|
|
@@ -24,6 +25,11 @@ import { type ITableBlock } from "../TableAPI";
|
|
|
24
25
|
export default class EmptyRowsHandler implements IInterfaceWithMixin {
|
|
25
26
|
creatingEmptyRows?: boolean;
|
|
26
27
|
|
|
28
|
+
/**
|
|
29
|
+
* Promise that resolves to the table's default values.
|
|
30
|
+
*/
|
|
31
|
+
public tableDefaultsPromise?: Promise<object>;
|
|
32
|
+
|
|
27
33
|
setupMixin(_baseClass: Function): void {
|
|
28
34
|
// This method is needed to implement interface IInterfaceWithMixin
|
|
29
35
|
}
|
|
@@ -119,7 +125,19 @@ export default class EmptyRowsHandler implements IInterfaceWithMixin {
|
|
|
119
125
|
} else {
|
|
120
126
|
appComponent.getSideEffectsService().deregisterTargetCallback(navigationPath);
|
|
121
127
|
}
|
|
122
|
-
|
|
128
|
+
|
|
129
|
+
if (this.tableDefaultsPromise) {
|
|
130
|
+
this.tableDefaultsPromise
|
|
131
|
+
.then((tableDefaultData) => {
|
|
132
|
+
this.setUpEmptyRows(this.getContent(), false, tableDefaultData);
|
|
133
|
+
return tableDefaultData;
|
|
134
|
+
})
|
|
135
|
+
.catch((error) => {
|
|
136
|
+
Log.error("Error while setting up empty rows:", error);
|
|
137
|
+
});
|
|
138
|
+
} else {
|
|
139
|
+
this.setUpEmptyRows(this.getContent());
|
|
140
|
+
}
|
|
123
141
|
}
|
|
124
142
|
|
|
125
143
|
/**
|
|
@@ -138,17 +156,26 @@ export default class EmptyRowsHandler implements IInterfaceWithMixin {
|
|
|
138
156
|
return;
|
|
139
157
|
}
|
|
140
158
|
|
|
141
|
-
|
|
159
|
+
/**
|
|
160
|
+
* Helper function to perform common checks for table defaults and empty rows setup.
|
|
161
|
+
* @param table The table being processed
|
|
162
|
+
* @returns The binding object if checks pass, or undefined if checks fail
|
|
163
|
+
*/
|
|
164
|
+
private async _validateAndRetrieveBinding(
|
|
165
|
+
this: ITableBlock & EmptyRowsHandler,
|
|
166
|
+
table: MDCTable
|
|
167
|
+
): Promise<ODataListBinding | undefined> {
|
|
142
168
|
if (this.getTableDefinition().control?.creationMode !== CreationMode.InlineCreationRows) {
|
|
143
|
-
return;
|
|
169
|
+
return undefined;
|
|
144
170
|
}
|
|
145
171
|
|
|
146
172
|
const uiModel = table.getModel("ui") as JSONModel | undefined;
|
|
147
173
|
if (!uiModel) {
|
|
148
|
-
return;
|
|
174
|
+
return undefined;
|
|
149
175
|
}
|
|
176
|
+
|
|
150
177
|
if (uiModel.getProperty("/isEditablePending")) {
|
|
151
|
-
//
|
|
178
|
+
// Wait until the edit mode computation is complete
|
|
152
179
|
const watchBinding = uiModel.bindProperty("/isEditablePending");
|
|
153
180
|
await new Promise<void>((resolve) => {
|
|
154
181
|
const fnHandler = (): void => {
|
|
@@ -159,8 +186,39 @@ export default class EmptyRowsHandler implements IInterfaceWithMixin {
|
|
|
159
186
|
watchBinding.attachChange(fnHandler);
|
|
160
187
|
});
|
|
161
188
|
}
|
|
189
|
+
|
|
162
190
|
const binding = table.getRowBinding() as ODataListBinding | undefined;
|
|
163
|
-
|
|
191
|
+
|
|
192
|
+
if (!binding) {
|
|
193
|
+
return undefined;
|
|
194
|
+
}
|
|
195
|
+
return binding;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Gets the table defaults by validating and retrieving the binding, then fetching data from the DefaultValueFunction.
|
|
200
|
+
* @param table The table being processed
|
|
201
|
+
* @returns A promise that resolves to an object containing the default values, or undefined if no binding is available or the DefaultValueFunction returns no data
|
|
202
|
+
*/
|
|
203
|
+
async getTableDefaults(this: ITableBlock & EmptyRowsHandler, table: MDCTable): Promise<object | undefined> {
|
|
204
|
+
const binding = await this._validateAndRetrieveBinding(table);
|
|
205
|
+
if (!binding) return undefined;
|
|
206
|
+
|
|
207
|
+
const appComponent = CommonUtils.getAppComponent(CommonUtils.getTargetView(table));
|
|
208
|
+
return appComponent ? TransactionHelper.getDataFromDefaultValueFunction(binding, appComponent) : undefined;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
async setUpEmptyRows(
|
|
212
|
+
this: ITableBlock & EmptyRowsHandler,
|
|
213
|
+
table: MDCTable,
|
|
214
|
+
createButtonWasPressed = false,
|
|
215
|
+
tableDefaultData = {}
|
|
216
|
+
): Promise<void> {
|
|
217
|
+
const binding = await this._validateAndRetrieveBinding(table);
|
|
218
|
+
if (!binding) {
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
const bindingHeaderContext = binding.getHeaderContext();
|
|
164
222
|
if (binding && binding.isResolved() && binding.isLengthFinal() && bindingHeaderContext) {
|
|
165
223
|
const contextPath = bindingHeaderContext.getPath();
|
|
166
224
|
if (!this.emptyRowsEnabled) {
|
|
@@ -183,7 +241,7 @@ export default class EmptyRowsHandler implements IInterfaceWithMixin {
|
|
|
183
241
|
});
|
|
184
242
|
if (!inactiveContext) {
|
|
185
243
|
this.removeEmptyRowsMessages();
|
|
186
|
-
await this.createEmptyRows(binding, table);
|
|
244
|
+
await this.createEmptyRows(binding, table, false, undefined, false, tableDefaultData);
|
|
187
245
|
}
|
|
188
246
|
}
|
|
189
247
|
}
|
|
@@ -293,6 +351,7 @@ export default class EmptyRowsHandler implements IInterfaceWithMixin {
|
|
|
293
351
|
* @param recreateOneRow `true` if the call is to recreate an emptyLine
|
|
294
352
|
* @param newInlineCreationRowFromPaste Number of new inactive rows to be created
|
|
295
353
|
* @param forceCreateatEnd `true` if the new row is to be created at the end of the table
|
|
354
|
+
* @param defaultValueFunctionData Default values retrieved from the DefaultValuesFunction to be applied to the new rows
|
|
296
355
|
* @returns A promise that resolves to the created contexts or void if the creation failed
|
|
297
356
|
*/
|
|
298
357
|
async createEmptyRows(
|
|
@@ -301,7 +360,8 @@ export default class EmptyRowsHandler implements IInterfaceWithMixin {
|
|
|
301
360
|
table: MDCTable,
|
|
302
361
|
recreateOneRow = false,
|
|
303
362
|
newInlineCreationRowFromPaste?: number,
|
|
304
|
-
forceCreateatEnd = false
|
|
363
|
+
forceCreateatEnd = false,
|
|
364
|
+
defaultValueFunctionData?: object | undefined
|
|
305
365
|
): Promise<void | Context[]> {
|
|
306
366
|
const inlineCreationRowCount = newInlineCreationRowFromPaste ?? (this.getTableDefinition().control?.inlineCreationRowCount || 1);
|
|
307
367
|
if (this.creatingEmptyRows || this.getInactiveContextNumber(binding) > inlineCreationRowCount) {
|
|
@@ -326,7 +386,9 @@ export default class EmptyRowsHandler implements IInterfaceWithMixin {
|
|
|
326
386
|
recreateOneRow || forceCreateatEnd ? true : atEnd,
|
|
327
387
|
false,
|
|
328
388
|
controller.editFlow.onBeforeCreate,
|
|
329
|
-
inactive
|
|
389
|
+
inactive,
|
|
390
|
+
undefined,
|
|
391
|
+
defaultValueFunctionData
|
|
330
392
|
);
|
|
331
393
|
appComponent.getSideEffectsService().requestSideEffectsForNavigationProperty(binding.getPath(), view.getBindingContext());
|
|
332
394
|
contexts?.forEach(async function (context: Context) {
|