@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/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUtils", "sap/fe/core/controls/CommandExecution", "sap/fe/core/helpers/BindingHelper", "sap/m/Menu", "sap/m/MenuItem", "sap/ui/core/CustomData", "sap/ui/performance/trace/FESRHelper", "sap/fe/core/buildingBlocks/BuildingBlock", "sap/fe/core/converters/controls/Common/Action", "sap/fe/core/helpers/FPMHelper", "sap/fe/macros/share/ShareOptions", "sap/m/OverflowToolbarLayoutData", "sap/m/OverflowToolbarMenuButton", "sap/m/library", "sap/ui/base/BindingInfo", "./share/MsTeamsOptions", "./share/ShareAPI", "sap/fe/base/jsx-runtime/jsx"], function (Log, BindingToolkit, ClassSupport, CommonUtils, CommandExecution, BindingHelper, Menu, MenuItem, CustomData, FESRHelper, BuildingBlock, Action, FPMHelper, ShareOptions, OverflowToolbarLayoutData, OverflowToolbarMenuButton, library, BindingInfo, MsTeamsOptions, ShareAPI, _jsx) {
|
|
5
|
+
sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUtils", "sap/fe/core/controls/CommandExecution", "sap/fe/core/helpers/BindingHelper", "sap/m/Menu", "sap/m/MenuItem", "sap/ui/core/CustomData", "sap/ui/performance/trace/FESRHelper", "sap/fe/core/buildingBlocks/BuildingBlock", "sap/fe/core/converters/controls/Common/Action", "sap/fe/core/helpers/FPMHelper", "sap/fe/core/helpers/ResourceModelHelper", "sap/fe/macros/share/ShareOptions", "sap/m/OverflowToolbarLayoutData", "sap/m/OverflowToolbarMenuButton", "sap/m/library", "sap/ui/base/BindingInfo", "./share/MsTeamsOptions", "./share/ShareAPI", "sap/fe/base/jsx-runtime/jsx"], function (Log, BindingToolkit, ClassSupport, CommonUtils, CommandExecution, BindingHelper, Menu, MenuItem, CustomData, FESRHelper, BuildingBlock, Action, FPMHelper, ResourceModelHelper, ShareOptions, OverflowToolbarLayoutData, OverflowToolbarMenuButton, library, BindingInfo, MsTeamsOptions, ShareAPI, _jsx) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _dec20, _dec21, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17, _descriptor18, _descriptor19, _descriptor20;
|
|
@@ -25,6 +25,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
|
|
|
25
25
|
}
|
|
26
26
|
var _exports = {};
|
|
27
27
|
var OverflowToolbarPriority = library.OverflowToolbarPriority;
|
|
28
|
+
var getResourceModel = ResourceModelHelper.getResourceModel;
|
|
28
29
|
var PRINT_ICON = Action.PRINT_ICON;
|
|
29
30
|
var EXPORT_TO_SPREADSHEET_ICON = Action.EXPORT_TO_SPREADSHEET_ICON;
|
|
30
31
|
var EXPORT_TO_PDF_ICON = Action.EXPORT_TO_PDF_ICON;
|
|
@@ -844,6 +845,17 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
|
|
|
844
845
|
_proto.getOverflowToolbarConfig = function getOverflowToolbarConfig() {
|
|
845
846
|
return {
|
|
846
847
|
canOverflow: true,
|
|
848
|
+
onBeforeEnterOverflow: function (oControl) {
|
|
849
|
+
(oControl?.getContent()?.getContent()).getText = function () {
|
|
850
|
+
const resourceModel = getResourceModel(oControl);
|
|
851
|
+
return resourceModel.getText("M_COMMON_SAPFE_ACTION_SHARE");
|
|
852
|
+
};
|
|
853
|
+
},
|
|
854
|
+
onAfterExitOverflow: function (oControl) {
|
|
855
|
+
(oControl?.getContent()?.getContent()).getText = function () {
|
|
856
|
+
return "";
|
|
857
|
+
};
|
|
858
|
+
},
|
|
847
859
|
priority: this.priority
|
|
848
860
|
};
|
|
849
861
|
};
|
|
@@ -954,4 +966,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
|
|
|
954
966
|
_exports = Share;
|
|
955
967
|
return _exports;
|
|
956
968
|
}, false);
|
|
957
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJlbnVtTVNUZWFtc09wdGlvbiIsIkNPTExBQk9SQVRJT05fTVNURUFNU19DQVJEIiwiQ09MTEFCT1JBVElPTl9NU1RFQU1TX1RBQiIsIkNPTExBQk9SQVRJT05fTVNURUFNU19DSEFUIiwiZW51bVNoYXJlT3B0aW9uIiwiU0VORF9FTUFJTCIsIlNIQVJFX0pBTSIsIlNBVkVfQVNfVElMRSIsIk1TX1RFQU1TX0dST1VQIiwiU0hBUkVfQ09MTEFCT1JBVElPTl9NQU5BR0VSIiwiU2hhcmUiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsInByb3BlcnR5IiwidHlwZSIsIl9kZWMzIiwiaW1wbGVtZW50SW50ZXJmYWNlIiwiX2RlYzQiLCJhZ2dyZWdhdGlvbiIsImRlZmF1bHRDbGFzcyIsIlNoYXJlT3B0aW9ucyIsImlzRGVmYXVsdCIsIl9kZWM1IiwiZGVmYXVsdFZhbHVlIiwiT3ZlcmZsb3dUb29sYmFyUHJpb3JpdHkiLCJIaWdoIiwiX2RlYzYiLCJNc1RlYW1zT3B0aW9ucyIsIl9kZWM3IiwiZGVmaW5lUmVmZXJlbmNlIiwiX2RlYzgiLCJfZGVjOSIsIl9kZWMxMCIsIl9kZWMxMSIsIl9kZWMxMiIsIl9kZWMxMyIsIl9kZWMxNCIsIl9kZWMxNSIsIl9kZWMxNiIsIl9kZWMxNyIsIl9kZWMxOCIsIl9kZWMxOSIsIl9kZWMyMCIsIl9kZWMyMSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQnVpbGRpbmdCbG9jayIsImlkT3JQcm9wcyIsInByb3BzIiwiX3RoaXMiLCJzaGFyZUFQSUlkIiwiaWQiLCJ1bmRlZmluZWQiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsIl9kZXNjcmlwdG9yMyIsIl9kZXNjcmlwdG9yNCIsIl9kZXNjcmlwdG9yNSIsIl9kZXNjcmlwdG9yNiIsIl9kZXNjcmlwdG9yNyIsIl9kZXNjcmlwdG9yOCIsIl9kZXNjcmlwdG9yOSIsIl9kZXNjcmlwdG9yMTAiLCJfZGVzY3JpcHRvcjExIiwiX2Rlc2NyaXB0b3IxMiIsIl9kZXNjcmlwdG9yMTMiLCJfZGVzY3JpcHRvcjE0IiwiX2Rlc2NyaXB0b3IxNSIsIl9kZXNjcmlwdG9yMTYiLCJfZGVzY3JpcHRvcjE3IiwiX2Rlc2NyaXB0b3IxOCIsIl9kZXNjcmlwdG9yMTkiLCJfZGVzY3JpcHRvcjIwIiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJfb3duZXJDb21wb25lbnQiLCJjb250ZW50IiwiY3JlYXRlQ29udGVudCIsImdldEFwcENvbXBvbmVudCIsIl9pbml0aWFsaXplTWVudUl0ZW1zIiwidmlldyIsImFwcENvbXBvbmVudCIsImlzVGVhbXNNb2RlQWN0aXZlIiwiZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMiLCJnZXRDYXBhYmlsaXRpZXMiLCJDb2xsYWJvcmF0aW9uIiwiZGVmYXVsdCIsIkNvbGxhYm9yYXRpb25IZWxwZXIiLCJfX3VpNV9yZXF1aXJlX2FzeW5jIiwibWVudUJ1dHRvbiIsImN1cnJlbnQiLCJ1bmJpbmRQcm9wZXJ0eSIsInNldFZpc2libGUiLCJjb250cm9sbGVyIiwiZ2V0Q29udHJvbGxlciIsInNoZWxsU2VydmljZXMiLCJnZXRTaGVsbFNlcnZpY2VzIiwiaXNQbHVnaW5JbmZvU3RhYmxlIiwid2FpdEZvclBsdWdpbnNMb2FkIiwiaW50ZXJuYWxCdXR0b24iLCJnZXRBZ2dyZWdhdGlvbiIsImF0dGFjaEV2ZW50T25jZSIsIl9ibG9ja0ludGVybmFsQ29uZmlnIiwiX2dldFNoYXJlQmxvY2tDb25maWciLCJfYWRkTWVudUl0ZW1zIiwic2V0U2hhcmVPcHRpb25zVmlzaWJpbGl0eSIsIl9hZGRTZW5kRW1haWxPcHRpb24iLCJfYWRkU2hlbGxCYXNlZE1lbnVJdGVtcyIsIl9hZGRQcmludE9wdGlvbnMiLCJfYWRkRXhwb3J0RXhjZWxPcHRpb25zIiwiX2FkZEV4cG9ydENTVk9wdGlvbnMiLCJfYWRkRXhwb3J0UERGT3B0aW9ucyIsIl9jYWxsTWFuaWZlc3RBY3Rpb25zRXZlbnRzIiwic2hhcmVPcHRpb25Qcm9wIiwidmlld0RhdGEiLCJnZXRWaWV3RGF0YSIsInNoYXJlQWN0aW9uUHJvcHMiLCJzaGFyZSIsIm1vZHVsZSIsInByZXNzIiwic3Vic3RyaW5nIiwibGFzdEluZGV4T2YiLCJyZXBsYWNlIiwibWV0aG9kIiwibGVuZ3RoIiwiRlBNSGVscGVyIiwibG9hZE1vZHVsZUFuZENhbGxNZXRob2QiLCJMb2ciLCJlcnJvciIsImhhc093blByb3BlcnR5IiwicHJpbnQiLCJtZW51IiwiYWRkSXRlbSIsIl9qc3giLCJNZW51SXRlbSIsInJlZiIsInByaW50TWVudUl0ZW0iLCJ0ZXh0IiwiZ2V0VHJhbnNsYXRlZFRleHQiLCJpY29uIiwiUFJJTlRfSUNPTiIsImV4cG9ydFRvU3ByZWFkc2hlZXRNZW51SXRlbSIsIkVYUE9SVF9UT19TUFJFQURTSEVFVF9JQ09OIiwiZXhwb3J0VG9DU1ZNZW51SXRlbSIsIkVYUE9SVF9UT19DU1ZfSUNPTiIsImV4cG9ydFRvUERGTWVudUl0ZW0iLCJFWFBPUlRfVE9fUERGX0lDT04iLCJzaGFyZU9wdGlvbnMiLCJzaG93U2VuZEVtYWlsIiwic2VuZEVtYWlsTWVudUl0ZW0iLCJfdHJpZ2dlckVtYWlsIiwiaGFzVXNoZWxsIiwiaGFzVVNoZWxsIiwiX2FkZFNoYXJlVmlhSkFNT3B0aW9uIiwiX2FkZE1TVGVhbXNPcHRpb25zIiwiX2FkZENvbGxhYm9yYXRpb25NYW5hZ2VyT3B0aW9uIiwiX2FkZFNhdmVBc1RpbGVPcHRpb24iLCJjb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlIiwiZ2V0Q29sbGFib3JhdGl2ZVRvb2xzU2VydmljZSIsImNvbGxhYm9yYXRpb25PcHRpb24iLCJnZXRDb2xsYWJvcmF0aW9uTWFuYWdlck9wdGlvbiIsInNob3dDb2xsYWJvcmF0aW9uTWFuYWdlciIsIm1lbnVJdGVtIiwic2hhcmVBc0NvbGxhYm9yYXRpb25NYW5hZ2VyIiwiZXZlbnQiLCJfY29sbGFib3JhdGlvbk1hbmFnZXJCdXR0b25QcmVzcyIsIkZFU1JIZWxwZXIiLCJzZXRTZW1hbnRpY1N0ZXBuYW1lIiwiZmVzclN0ZXBOYW1lIiwiZXJyIiwibWVzc2FnZSIsIkVycm9yIiwiU3RyaW5nIiwiY29sbGFib3JhdGlvbkNhbGxCYWNrIiwiY2xpY2tlZE1lbnVJdGVtIiwiZ2V0U291cmNlIiwiQ29tbW9uVXRpbHMiLCJnZXRUYXJnZXRWaWV3IiwiX2FkYXB0U2hhcmVNZXRhZGF0YSIsInNoYXJlSW5mb01vZGVsIiwiZ2V0TW9kZWwiLCJzaGFyZUluZm8iLCJnZXREYXRhIiwiY29sbGFib3JhdGlvbkluZm8iLCJhcHBUaXRsZSIsInVybCIsImhhc0phbSIsImlzSmFtQWN0aXZlIiwic2hhcmVWaWFKQU1NZW51SXRlbSIsIl90cmlnZ2VyU2hhcmVUb0phbSIsInNob3dNc1RlYW1zT3B0aW9ucyIsInNoYXJlQ29sbGFib3JhdGlvbk9wdGlvbnMiLCJnZXRUZWFtc0NvbGxhYk9wdGlvbnNWaWFTaGFyZSIsImlzU2hhcmVBc0NhcmRFbmFibGVkIiwiX2dldElzU2hhcmVBc0NhcmRFbmFibGVkIiwibWVudUl0ZW1TZXR0aW5ncyIsIl9nZXRNc1RlYW1zTWVudUl0ZW1TZXR0aW5ncyIsInN1Yk9wdGlvbnMiLCJpdGVtcyIsIm1lbnVJdGVtS2V5IiwiQXJyYXkiLCJpc0FycmF5Iiwia2V5IiwiX2FkZE1zVGVhbXNNZW51SXRlbSIsIkFkZEJvb2ttYXJrQnV0dG9uIiwiYWRkQm9va21hcmtCdXR0b24iLCJnZXRFbmFibGVkIiwic2F2ZUFzVGlsZU1lbnVJdGVtIiwiZ2V0VGV4dCIsImdldEljb24iLCJfc2F2ZUFzVGlsZSIsImNoaWxkcmVuIiwiZGVwZW5kZW50cyIsImRlc3Ryb3kiLCJzaG93U2hhcmVBc0NhcmQiLCJtc1RlYW1zT3B0aW9ucyIsImVuYWJsZUNhcmQiLCJCb29sZWFuIiwiQmluZGluZ0luZm8iLCJwYXJzZSIsIl9nZXRNc1RlYW1zU3ViT3B0aW9ucyIsImNvbGxhYm9yYXRpb25NZW51SXRlbVByZXNzIiwiQ3VzdG9tRGF0YSIsInZhbHVlIiwiX2dldE1lbnVJdGVtUmVmZXJlbmNlIiwiY3VzdG9tRGF0YSIsImF0dGFjaFByZXNzIiwicmVkdWNlIiwibWVudUl0ZW1zIiwic3ViT3B0aW9uIiwic3ViTWVudUl0ZW0iLCJjb2xsYWJvcmF0aW9uRGF0YSIsImRhdGEiLCJ0ZWFtc0hlbHBlclNlcnZpY2UiLCJnZXRDb2xsYWJvcmF0aW9uU2VydmljZXMiLCJvVGVhbXNIZWxwZXJTZXJ2aWNlIiwiaXNGZWF0dXJlRmxhZ0VuYWJsZWQiLCJjYXJkRGVmaW5pdGlvbiIsImdldENhcmREZWZpbml0aW9uIiwiY2FyZElkIiwic2hlbGxTZXJ2aWNlSGVscGVyIiwic2VtYW50aWNPYmplY3QiLCJhY3Rpb24iLCJwYXJzZVNoZWxsSGFzaCIsImRvY3VtZW50IiwibG9jYXRpb24iLCJoYXNoIiwicmVhc29uIiwiaW5mbyIsIm9wdGlvbktleXMiLCJPYmplY3QiLCJrZXlzIiwidmlzaWJsZUJpbmRpbmdFeHBzIiwiYmluZGluZ1Rvb2xraXRFeHBzIiwib3B0aW9uIiwiZXhwIiwiX2dldFNoYXJlT3B0aW9uVmlzaWJpbGl0eUV4cHJlc3Npb24iLCJfc2V0U2hhcmVPcHRpb25WaXNpYmlsaXR5Iiwic2hhcmVCbG9ja1Zpc2libGVFeHAiLCJvciIsImNtZEV4ZWN1dGlvbiIsIl9iaW5kVUlWaXNpYmlsaXR5Iiwic2hhcmVBc0NhcmRNZW51SXRlbSIsInNoYXJlVmlhQ2hhdE1lbnVJdGVtIiwic2hhcmVBc1RhYk1lbnVJdGVtIiwibXNUZWFtc0dyb3VwTWVudUl0ZW0iLCJvcHRpb25NZW51SXRlbVJlZiIsImNvbnN0YW50IiwiX2dldE1TVGVhbXNTaGFyZU9wdGlvblZpc2liaWxpdHkiLCJfZ2V0Q29sbGFib3JhdGlvbk9wdGlvbkV4cHJlc3Npb24iLCJyZXNvbHZlQmluZGluZ1N0cmluZyIsImludGVybmFsT3B0aW9uIiwiaXNDb25zdGFudCIsImFuZCIsIm1zVGVhbXNDb25maWdFeHAiLCJfZ2V0U2hvd01zVGVhbXNPcHRpb25zRXhwcmVzc2lvbiIsIm1zVGVhbXNPcHRpb25zVmFsdWUiLCJhbGxNU1RlYW1zT3B0aW9uc0V4cHMiLCJiaW5kaW5nVG9vbGtpdEV4cCIsIm1zVGVhbXNPcHRpb24iLCJtc1RlYW1PcHRpb25FeHAiLCJvcHRpb25FeHAiLCJpbnRlcm5hbE9wdGlvbkV4cCIsIl9nZXRTaGFyZUFzQ2FyZFZpc2liaWxpdHkiLCJzaGFyZUFzQ2FyZE9wdGlvblJlZiIsImV4cFNob3dNU1RlYW1zT3B0aW9ucyIsImV4cFNob3dTaGFyZUFzQ2FyZCIsIm5vdCIsIlVJIiwiSXNFZGl0YWJsZSIsIm1zVGVhbXNPcHRpb25SZWYiLCJleHByZXNzaW9uIiwibWVudUl0ZW1SZWYiLCJpdGVtIiwiY29tcGlsZWRFeHAiLCJjb21waWxlRXhwcmVzc2lvbiIsInN0YXJ0c1dpdGgiLCJlbmRzV2l0aCIsInBhcnNlZEV4cCIsImJpbmRQcm9wZXJ0eSIsInZpZXdTaGFyZUNvbmZpZ3MiLCJmZUFwcFNoYXJlQ29uZmlncyIsImdldE1hbmlmZXN0RW50cnkiLCJhcHAiLCJfZ2V0T3B0aW9uQmxvY2tDb25maWciLCJ0ZWFtcyIsImFzQ2FyZCIsImZlQXBwU2V0dGluZyIsInZpZXdMZXZlbFNldHRpbmciLCJmZUFwcEV4cCIsInZpZXdMZXZlbEV4cCIsIlNoYXJlQVBJIiwiT3ZlcmZsb3dUb29sYmFyTWVudUJ1dHRvbiIsInRvb2x0aXAiLCJNZW51IiwiZ2V0UGFnZUNvbnRyb2xsZXIiLCJnZXRWaWV3IiwiYWRkRGVwZW5kZW50IiwiQ29tbWFuZEV4ZWN1dGlvbiIsImNvbW1hbmQiLCJleGVjdXRlIiwiZ2V0TWVudSIsIm9wZW5CeSIsImlzSW5pdGlhbGl6ZWQiLCJjYXRjaCIsInNldExheW91dERhdGEiLCJPdmVyZmxvd1Rvb2xiYXJMYXlvdXREYXRhIiwicHJpb3JpdHkiLCJnZXRPdmVyZmxvd1Rvb2xiYXJDb25maWciLCJjYW5PdmVyZmxvdyIsIkJ1aWxkaW5nQmxvY2siLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlNoYXJlLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIHsgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiwgRW1iZWRkZWRVSTVCaW5kaW5nRXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgYW5kLCBjb21waWxlRXhwcmVzc2lvbiwgY29uc3RhbnQsIGlzQ29uc3RhbnQsIG5vdCwgb3IsIHJlc29sdmVCaW5kaW5nU3RyaW5nIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBkZWZpbmVSZWZlcmVuY2UsIGRlZmluZVVJNUNsYXNzLCBpbXBsZW1lbnRJbnRlcmZhY2UsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvanN4LXJ1bnRpbWUvanN4XCI7XG5pbXBvcnQgdHlwZSBBcHBDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgQ29tbWFuZEV4ZWN1dGlvbiBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbHMvQ29tbWFuZEV4ZWN1dGlvblwiO1xuaW1wb3J0IHsgVUkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IElTaGVsbFNlcnZpY2VzIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1NoZWxsU2VydmljZXNGYWN0b3J5XCI7XG5pbXBvcnQgTWVudSBmcm9tIFwic2FwL20vTWVudVwiO1xuaW1wb3J0IHR5cGUgTWVudUJ1dHRvbiBmcm9tIFwic2FwL20vTWVudUJ1dHRvblwiO1xuaW1wb3J0IHR5cGUgeyAkTWVudUl0ZW1TZXR0aW5ncyB9IGZyb20gXCJzYXAvbS9NZW51SXRlbVwiO1xuaW1wb3J0IE1lbnVJdGVtIGZyb20gXCJzYXAvbS9NZW51SXRlbVwiO1xuaW1wb3J0IHR5cGUgeyBDb2xsYWJvcmF0aW9uT3B0aW9uS2V5LCBDb2xsYWJvcmF0aW9uT3B0aW9ucyB9IGZyb20gXCJzYXAvc3VpdGUvdWkvY29tbW9ucy9jb2xsYWJvcmF0aW9uL1RlYW1zSGVscGVyU2VydmljZVwiO1xuaW1wb3J0IHR5cGUgVUk1RXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgdHlwZSBNYW5hZ2VkT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgQ3VzdG9tRGF0YSBmcm9tIFwic2FwL3VpL2NvcmUvQ3VzdG9tRGF0YVwiO1xuaW1wb3J0IHR5cGUgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCB0eXBlIEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgRkVTUkhlbHBlciBmcm9tIFwic2FwL3VpL3BlcmZvcm1hbmNlL3RyYWNlL0ZFU1JIZWxwZXJcIjtcblxuaW1wb3J0IHR5cGUgVGVtcGxhdGVDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL1RlbXBsYXRlQ29tcG9uZW50XCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9jayBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1wiO1xuaW1wb3J0IHtcblx0RVhQT1JUX1RPX0NTVl9JQ09OLFxuXHRFWFBPUlRfVE9fUERGX0lDT04sXG5cdEVYUE9SVF9UT19TUFJFQURTSEVFVF9JQ09OLFxuXHRQUklOVF9JQ09OXG59IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9BY3Rpb25cIjtcbmltcG9ydCBGUE1IZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvRlBNSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IFZpZXdEYXRhIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1RlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IFNoYXJlT3B0aW9ucyBmcm9tIFwic2FwL2ZlL21hY3Jvcy9zaGFyZS9TaGFyZU9wdGlvbnNcIjtcbmltcG9ydCBPdmVyZmxvd1Rvb2xiYXJMYXlvdXREYXRhIGZyb20gXCJzYXAvbS9PdmVyZmxvd1Rvb2xiYXJMYXlvdXREYXRhXCI7XG5pbXBvcnQgT3ZlcmZsb3dUb29sYmFyTWVudUJ1dHRvbiBmcm9tIFwic2FwL20vT3ZlcmZsb3dUb29sYmFyTWVudUJ1dHRvblwiO1xuaW1wb3J0IHsgT3ZlcmZsb3dUb29sYmFyUHJpb3JpdHkgfSBmcm9tIFwic2FwL20vbGlicmFyeVwiO1xuaW1wb3J0IEJpbmRpbmdJbmZvIGZyb20gXCJzYXAvdWkvYmFzZS9CaW5kaW5nSW5mb1wiO1xuaW1wb3J0IHR5cGUgeyAkQ29udHJvbFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBNc1RlYW1zT3B0aW9ucyBmcm9tIFwiLi9zaGFyZS9Nc1RlYW1zT3B0aW9uc1wiO1xuaW1wb3J0IFNoYXJlQVBJIGZyb20gXCIuL3NoYXJlL1NoYXJlQVBJXCI7XG5cbi8vIE1TIFRlYW1zIG9wdGlvbnMgYXJlIG5vdCBwdWJsaWMgdmlhIFNoYXJlIGJ1aWxkaW5nIGJsb2NrLlxuLy8gU28sICdzaG93TXNUZWFtc09wdGlvbnMnIGlzIGludGVybmFsIGFuZCBzaGFsbCBiZSBvbmx5IHBpY2tlZCBmcm9tIHRlbXBsYXRlIG1hbmlmZXN0LlxudHlwZSBJbnRlcm5hbFNoYXJlT3B0aW9ucyA9IFByb3BlcnRpZXNPZjxTaGFyZU9wdGlvbnM+O1xuXG50eXBlIFNoYXJlT3B0aW9uS2V5ID1cblx0fCBDb2xsYWJvcmF0aW9uT3B0aW9uS2V5XG5cdHwgXCJTRU5EX0VNQUlMXCJcblx0fCBcIlNIQVJFX0pBTVwiXG5cdHwgXCJTQVZFX0FTX1RJTEVcIlxuXHR8IFwiTVNfVEVBTVNfR1JPVVBcIlxuXHR8IFwiU0hBUkVfQ09MTEFCT1JBVElPTl9NQU5BR0VSXCI7XG5cbmNvbnN0IGVudW1NU1RlYW1zT3B0aW9uOiB7XG5cdFtrZXkgaW4gQ29sbGFib3JhdGlvbk9wdGlvbktleV06IENvbGxhYm9yYXRpb25PcHRpb25LZXk7XG59ID0ge1xuXHRDT0xMQUJPUkFUSU9OX01TVEVBTVNfQ0FSRDogXCJDT0xMQUJPUkFUSU9OX01TVEVBTVNfQ0FSRFwiLFxuXHRDT0xMQUJPUkFUSU9OX01TVEVBTVNfVEFCOiBcIkNPTExBQk9SQVRJT05fTVNURUFNU19UQUJcIixcblx0Q09MTEFCT1JBVElPTl9NU1RFQU1TX0NIQVQ6IFwiQ09MTEFCT1JBVElPTl9NU1RFQU1TX0NIQVRcIlxufTtcblxuY29uc3QgZW51bVNoYXJlT3B0aW9uOiB7XG5cdFtrZXkgaW4gU2hhcmVPcHRpb25LZXldOiBTaGFyZU9wdGlvbktleTtcbn0gPSB7XG5cdC4uLmVudW1NU1RlYW1zT3B0aW9uLFxuXHQuLi57XG5cdFx0U0VORF9FTUFJTDogXCJTRU5EX0VNQUlMXCIsXG5cdFx0U0hBUkVfSkFNOiBcIlNIQVJFX0pBTVwiLFxuXHRcdFNBVkVfQVNfVElMRTogXCJTQVZFX0FTX1RJTEVcIixcblx0XHRNU19URUFNU19HUk9VUDogXCJNU19URUFNU19HUk9VUFwiLFxuXHRcdFNIQVJFX0NPTExBQk9SQVRJT05fTUFOQUdFUjogXCJTSEFSRV9DT0xMQUJPUkFUSU9OX01BTkFHRVJcIlxuXHR9XG59O1xuXG50eXBlIENvbmZpZ09wdGlvbnMgPSBJbnRlcm5hbFNoYXJlT3B0aW9ucyAmIFByb3BlcnRpZXNPZjxNc1RlYW1zT3B0aW9ucz47XG5cbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgdXNlZCB0byBjcmVhdGUgdGhlIOKAmFNoYXJl4oCZIGZ1bmN0aW9uYWxpdHkuXG4gKiA8YnI+XG4gKiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSAnU2hhcmUgaW4gU0FQIEphbScgb3B0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uIHBsYXRmb3JtcyB0aGF0IGFyZSBpbnRlZ3JhdGVkIHdpdGggU0FQIEphbS5cbiAqIDxicj5cbiAqIElmIHlvdSBhcmUgY29uc3VtaW5nIHRoaXMgbWFjcm8gaW4gYW4gZW52aXJvbm1lbnQgd2hlcmUgdGhlIFNBUCBGaW9yaSBsYXVuY2hwYWQgaXMgbm90IGF2YWlsYWJsZSwgdGhlbiB0aGUgJ1NhdmUgYXMgVGlsZScgb3B0aW9uIGlzIG5vdCB2aXNpYmxlLlxuICpcbiAqXG4gKiBVc2FnZSBleGFtcGxlOlxuICogPHByZT5cbiAqICZsdDttYWNyb3M6U2hhcmVcbiAqIGlkPVwic29tZUlEXCJcbiAqIHZpc2libGU9XCJ0cnVlXCJcbiAqIC8mZ3Q7XG4gKiA8L3ByZT5cbiAqIHtAbGluayBkZW1vOnNhcC9mZS9jb3JlL2ZwbUV4cGxvcmVyL2luZGV4Lmh0bWwjL2J1aWxkaW5nQmxvY2tzL2ZlYXR1cmVzL3NoYXJlRGVmYXVsdCBPdmVydmlldyBvZiBCdWlsZGluZyBCbG9ja3N9XG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAcHVibGljXG4gKiBAc2luY2UgMS45My4wXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MuU2hhcmVcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNoYXJlIGV4dGVuZHMgQnVpbGRpbmdCbG9jazxTaGFyZUFQST4ge1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHB1YmxpYyBzaGFyZUFQSUlkPzogc3RyaW5nO1xuXG5cdEBpbXBsZW1lbnRJbnRlcmZhY2UoXCJzYXAubS5JT3ZlcmZsb3dUb29sYmFyQ29udGVudFwiKVxuXHRfX2ltcGxlbWVudHNfX3NhcF9tX0lPdmVyZmxvd1Rvb2xiYXJDb250ZW50ID0gdHJ1ZTtcblxuXHQvKipcblx0ICogU3VwcG9ydGVkIFNoYXJlIG9wdGlvbnMge0BsaW5rIHNhcC5mZS5tYWNyb3Muc2hhcmUuU2hhcmVPcHRpb25zfS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGFnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3Muc2hhcmUuU2hhcmVPcHRpb25zXCIsXG5cdFx0ZGVmYXVsdENsYXNzOiBTaGFyZU9wdGlvbnMsXG5cdFx0aXNEZWZhdWx0OiB0cnVlXG5cdH0pXG5cdHB1YmxpYyBzaGFyZU9wdGlvbnM/OiBTaGFyZU9wdGlvbnM7XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdGRlZmF1bHRWYWx1ZTogT3ZlcmZsb3dUb29sYmFyUHJpb3JpdHkuSGlnaFxuXHR9KVxuXHRwcmlvcml0eT86IHN0cmluZztcblxuXHQvKipcblx0ICogU3VwcG9ydGVkIE1pY3Jvc29mdCBUZWFtcyBvcHRpb25zLlxuXHQgKi9cblx0QGFnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3Muc2hhcmUuTXNUZWFtc09wdGlvbnNcIixcblx0XHRkZWZhdWx0Q2xhc3M6IE1zVGVhbXNPcHRpb25zXG5cdH0pXG5cdHB1YmxpYyBtc1RlYW1zT3B0aW9ucz86IE1zVGVhbXNPcHRpb25zO1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRtZW51QnV0dG9uITogUmVmPE1lbnVCdXR0b24+O1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRjbWRFeGVjdXRpb24hOiBSZWY8Q29tbWFuZEV4ZWN1dGlvbj47XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdG1lbnUhOiBSZWY8TWVudT47XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdHNhdmVBc1RpbGVNZW51SXRlbSE6IFJlZjxNZW51SXRlbT47XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdHNoYXJlQXNDb2xsYWJvcmF0aW9uTWFuYWdlciE6IFJlZjxNZW51SXRlbT47XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdHNoYXJlVmlhSkFNTWVudUl0ZW0hOiBSZWY8TWVudUl0ZW0+O1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRzZW5kRW1haWxNZW51SXRlbSE6IFJlZjxNZW51SXRlbT47XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdHNoYXJlQXNDYXJkTWVudUl0ZW0hOiBSZWY8TWVudUl0ZW0+O1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRzaGFyZVZpYUNoYXRNZW51SXRlbSE6IFJlZjxNZW51SXRlbT47XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdHNoYXJlQXNUYWJNZW51SXRlbSE6IFJlZjxNZW51SXRlbT47XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdG1zVGVhbXNHcm91cE1lbnVJdGVtITogUmVmPE1lbnVJdGVtPjtcblxuXHRAZGVmaW5lUmVmZXJlbmNlKClcblx0cHJpbnRNZW51SXRlbSE6IFJlZjxNZW51SXRlbT47XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdGV4cG9ydFRvU3ByZWFkc2hlZXRNZW51SXRlbSE6IFJlZjxNZW51SXRlbT47XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdGV4cG9ydFRvUERGTWVudUl0ZW0hOiBSZWY8TWVudUl0ZW0+O1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRleHBvcnRUb0NTVk1lbnVJdGVtITogUmVmPE1lbnVJdGVtPjtcblxuXHRwdWJsaWMgaXNJbml0aWFsaXplZD86IFByb21pc2U8dm9pZD47XG5cblx0cHJpdmF0ZSBfYmxvY2tJbnRlcm5hbENvbmZpZyE6IENvbmZpZ09wdGlvbnM7XG5cblx0Y29uc3RydWN0b3IoaWRPclByb3BzOiBzdHJpbmcgfCAoUHJvcGVydGllc09mPFNoYXJlPiAmICRDb250cm9sU2V0dGluZ3MpLCBwcm9wcz86IFByb3BlcnRpZXNPZjxTaGFyZT4gJiAkQ29udHJvbFNldHRpbmdzKSB7XG5cdFx0bGV0IHNoYXJlQVBJSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0XHRpZiAodHlwZW9mIGlkT3JQcm9wcyAhPT0gXCJzdHJpbmdcIikge1xuXHRcdFx0cHJvcHMgPSBpZE9yUHJvcHM7XG5cdFx0XHRzaGFyZUFQSUlkID0gcHJvcHMuaWQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHNoYXJlQVBJSWQgPSBpZE9yUHJvcHM7XG5cdFx0fVxuXHRcdHByb3BzID8/PSB7fTtcblx0XHRwcm9wcy5zaGFyZUFQSUlkID0gc2hhcmVBUElJZDtcblx0XHRwcm9wcy5pZCA9IHVuZGVmaW5lZDtcblx0XHRzdXBlcih1bmRlZmluZWQsIHByb3BzKTtcblx0fVxuXG5cdG9uTWV0YWRhdGFBdmFpbGFibGUoX293bmVyQ29tcG9uZW50OiBUZW1wbGF0ZUNvbXBvbmVudCk6IHZvaWQge1xuXHRcdHN1cGVyLm9uTWV0YWRhdGFBdmFpbGFibGUoX293bmVyQ29tcG9uZW50KTtcblx0XHR0aGlzLmNvbnRlbnQgPSB0aGlzLmNyZWF0ZUNvbnRlbnQoX293bmVyQ29tcG9uZW50LmdldEFwcENvbXBvbmVudCgpKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIHNoYXJlIG9wdGlvbiBmcm9tIHRoZSBzaGVsbCBjb25maWd1cmF0aW9uIGFzeW5jaHJvbm91c2x5IGFuZCBwcmVwYXJlIHRoZSBjb250ZW50IG9mIHRoZSBtZW51IGJ1dHRvbi5cblx0ICogT3B0aW9ucyBvcmRlciBhcmU6XG5cdCAqIC0gU2VuZCBhcyBFbWFpbFxuXHQgKiAtIFNoYXJlIGFzIEphbSAoaWYgYXZhaWxhYmxlKVxuXHQgKiAtIFRlYW1zIG9wdGlvbnMgKGlmIGF2YWlsYWJsZSlcblx0ICogLSBTYXZlIGFzIHRpbGUuXG5cdCAqIEBwYXJhbSB2aWV3IFRoZSB2aWV3IHRoaXMgYnVpbGRpbmcgYmxvY2sgaXMgdXNlZCBpblxuXHQgKiBAcGFyYW0gYXBwQ29tcG9uZW50IFRoZSBBcHBDb21wb25lbnQgaW5zdGFuY2Vcblx0ICovXG5cdGFzeW5jIF9pbml0aWFsaXplTWVudUl0ZW1zKHZpZXc6IFZpZXcsIGFwcENvbXBvbmVudDogQXBwQ29tcG9uZW50KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0bGV0IGlzVGVhbXNNb2RlQWN0aXZlID0gZmFsc2U7XG5cdFx0aWYgKGFwcENvbXBvbmVudC5nZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcygpLmdldENhcGFiaWxpdGllcygpLkNvbGxhYm9yYXRpb24pIHtcblx0XHRcdGNvbnN0IHsgZGVmYXVsdDogQ29sbGFib3JhdGlvbkhlbHBlciB9ID0gYXdhaXQgaW1wb3J0KFwic2FwL3N1aXRlL3VpL2NvbW1vbnMvY29sbGFib3JhdGlvbi9Db2xsYWJvcmF0aW9uSGVscGVyXCIpO1xuXHRcdFx0aXNUZWFtc01vZGVBY3RpdmUgPSBhd2FpdCBDb2xsYWJvcmF0aW9uSGVscGVyLmlzVGVhbXNNb2RlQWN0aXZlKCk7XG5cdFx0fVxuXG5cdFx0aWYgKGlzVGVhbXNNb2RlQWN0aXZlKSB7XG5cdFx0XHQvL25lZWQgdG8gY2xlYXIgdGhlIHZpc2libGUgcHJvcGVydHkgYmluZGluZ3Mgb3RoZXJ3aXNlIHdoZW4gdGhlIGJpbmRpbmcgdmFsdWUgY2hhbmdlcyB0aGVuIGl0IHdpbGwgc2V0IGJhY2sgdGhlIHZpc2libGUgdG8gdGhlIHJlc29sdmVkIHZhbHVlXG5cdFx0XHR0aGlzLm1lbnVCdXR0b24uY3VycmVudD8udW5iaW5kUHJvcGVydHkoXCJ2aXNpYmxlXCIsIHRydWUpO1xuXHRcdFx0dGhpcy5tZW51QnV0dG9uLmN1cnJlbnQ/LnNldFZpc2libGUoZmFsc2UpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBjb250cm9sbGVyID0gdmlldy5nZXRDb250cm9sbGVyKCkgYXMgUGFnZUNvbnRyb2xsZXI7XG5cdFx0Y29uc3Qgc2hlbGxTZXJ2aWNlcyA9IGFwcENvbXBvbmVudC5nZXRTaGVsbFNlcnZpY2VzKCk7XG5cdFx0Y29uc3QgaXNQbHVnaW5JbmZvU3RhYmxlID0gYXdhaXQgc2hlbGxTZXJ2aWNlcy53YWl0Rm9yUGx1Z2luc0xvYWQoKTtcblx0XHRpZiAoIWlzUGx1Z2luSW5mb1N0YWJsZSkge1xuXHRcdFx0Ly8gSW4gY2FzZSB0aGUgcGx1Z2luIGluZm8gaXMgbm90IHlldCBhdmFpbGFibGUgd2UgbmVlZCB0byBkbyB0aGlzIGNvbXB1dGF0aW9uIGFnYWluIG9uIHRoZSBuZXh0IGJ1dHRvbiBjbGlja1xuXHRcdFx0Y29uc3QgaW50ZXJuYWxCdXR0b24gPSB0aGlzLm1lbnVCdXR0b24uY3VycmVudD8uZ2V0QWdncmVnYXRpb24oXCJfY29udHJvbFwiKSBhcyBNYW5hZ2VkT2JqZWN0O1xuXHRcdFx0aW50ZXJuYWxCdXR0b24/LmF0dGFjaEV2ZW50T25jZShcInByZXNzXCIsIHt9LCAoKSA9PiB0aGlzLl9pbml0aWFsaXplTWVudUl0ZW1zLCB0aGlzKTtcblx0XHR9XG5cblx0XHR0aGlzLl9ibG9ja0ludGVybmFsQ29uZmlnID0gdGhpcy5fZ2V0U2hhcmVCbG9ja0NvbmZpZyh2aWV3KTtcblxuXHRcdGF3YWl0IHRoaXMuX2FkZE1lbnVJdGVtcyhjb250cm9sbGVyLCBzaGVsbFNlcnZpY2VzLCB2aWV3KTtcblx0XHR0aGlzLnNldFNoYXJlT3B0aW9uc1Zpc2liaWxpdHkoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGQgc2hhcmUgb3B0aW9ucyBhcyBtZW51IGl0ZW1zIHRvIHRoZSBzaGFyZSBidXR0b24uXG5cdCAqIEBwYXJhbSBjb250cm9sbGVyIFBhZ2UgY29udHJvbGxlclxuXHQgKiBAcGFyYW0gc2hlbGxTZXJ2aWNlcyBTaGVsbCBTZXJ2aWNlc1xuXHQgKiBAcGFyYW0gdmlldyBUaGUgdmlldyB0aGlzIGJ1aWxkaW5nIGJsb2NrIGlzIHVzZWQgaW5cblx0ICovXG5cdGFzeW5jIF9hZGRNZW51SXRlbXMoY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIsIHNoZWxsU2VydmljZXM6IElTaGVsbFNlcnZpY2VzLCB2aWV3OiBWaWV3KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dGhpcy5fYWRkU2VuZEVtYWlsT3B0aW9uKGNvbnRyb2xsZXIpO1xuXHRcdGF3YWl0IHRoaXMuX2FkZFNoZWxsQmFzZWRNZW51SXRlbXMoY29udHJvbGxlciwgc2hlbGxTZXJ2aWNlcyk7XG5cdFx0dGhpcy5fYWRkUHJpbnRPcHRpb25zKGNvbnRyb2xsZXIsIHZpZXcpO1xuXHRcdHRoaXMuX2FkZEV4cG9ydEV4Y2VsT3B0aW9ucyhjb250cm9sbGVyLCB2aWV3KTtcblx0XHR0aGlzLl9hZGRFeHBvcnRDU1ZPcHRpb25zKGNvbnRyb2xsZXIsIHZpZXcpO1xuXHRcdHRoaXMuX2FkZEV4cG9ydFBERk9wdGlvbnMoY29udHJvbGxlciwgdmlldyk7XG5cdH1cblxuXHQvKipcblx0ICogQ2FsbCB0aGUgZnVuY3Rpb25zIHdpdGhpbiB0aGUgY3VzdG9tIGhhbmRsZXJzLlxuXHQgKiBAcGFyYW0gY29udHJvbGxlciBQYWdlIGNvbnRyb2xsZXJcblx0ICogQHBhcmFtIHZpZXcgVGhlIHZpZXcgdGhpcyBidWlsZGluZyBibG9jayBpcyB1c2VkIGluXG5cdCAqIEBwYXJhbSBzaGFyZU9wdGlvblByb3AgVGhlIGtleSBvZiB0aGUgYWN0aW9uIHlvdSB3YW50IHRvIGNhbGxcblx0ICovXG5cdF9jYWxsTWFuaWZlc3RBY3Rpb25zRXZlbnRzKFxuXHRcdGNvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLFxuXHRcdHZpZXc6IFZpZXcsXG5cdFx0c2hhcmVPcHRpb25Qcm9wOiBcInByaW50XCIgfCBcImV4cG9ydFRvQ1NWXCIgfCBcImV4cG9ydFRvU3ByZWFkc2hlZXRcIiB8IFwiZXhwb3J0VG9QREZcIlxuXHQpOiB2b2lkIHtcblx0XHRjb25zdCB2aWV3RGF0YSA9IHZpZXcuZ2V0Vmlld0RhdGEoKSBhcyBWaWV3RGF0YTtcblx0XHRjb25zdCBzaGFyZUFjdGlvblByb3BzID0gdmlld0RhdGE/LnNoYXJlPy5bc2hhcmVPcHRpb25Qcm9wXTtcblx0XHRjb25zdCBtb2R1bGUgPSBzaGFyZUFjdGlvblByb3BzPy5wcmVzcz8uc3Vic3RyaW5nKDAsIHNoYXJlQWN0aW9uUHJvcHM/LnByZXNzPy5sYXN0SW5kZXhPZihcIi5cIikpLnJlcGxhY2UoL1xcLi9naSwgXCIvXCIpO1xuXHRcdGNvbnN0IG1ldGhvZCA9IHNoYXJlQWN0aW9uUHJvcHM/LnByZXNzPy5zdWJzdHJpbmcoc2hhcmVBY3Rpb25Qcm9wcz8ucHJlc3M/Lmxhc3RJbmRleE9mKFwiLlwiKSArIDEsIHNoYXJlQWN0aW9uUHJvcHM/LnByZXNzPy5sZW5ndGgpO1xuXG5cdFx0aWYgKG1vZHVsZSAmJiBtZXRob2QpIHtcblx0XHRcdEZQTUhlbHBlci5sb2FkTW9kdWxlQW5kQ2FsbE1ldGhvZChtb2R1bGUsIG1ldGhvZCwgdmlldywgY29udHJvbGxlcik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdExvZy5lcnJvcihcIkZhaWxlZCB0byBjYWxsIGV2ZW50IGhhbmRsZXIsIE1vZHVsZSBhbmQvb3IgTWV0aG9kIGlzIG5vdCBzZXQgcHJvcGVybHlcIik7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEFkZCBwcmludCBvcHRpb24gdG8gbWVudSBidXR0b24uXG5cdCAqIEBwYXJhbSBjb250cm9sbGVyIFBhZ2UgY29udHJvbGxlclxuXHQgKiBAcGFyYW0gdmlldyBUaGUgdmlldyB0aGlzIGJ1aWxkaW5nIGJsb2NrIGlzIHVzZWQgaW5cblx0ICovXG5cdF9hZGRQcmludE9wdGlvbnMoY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIsIHZpZXc6IFZpZXcpOiB2b2lkIHtcblx0XHRjb25zdCB2aWV3RGF0YSA9IHZpZXcuZ2V0Vmlld0RhdGEoKSBhcyBWaWV3RGF0YTtcblx0XHRpZiAodmlld0RhdGE/LnNoYXJlPy5oYXNPd25Qcm9wZXJ0eShcInByaW50XCIpID09PSB0cnVlICYmIHZpZXdEYXRhPy5zaGFyZT8ucHJpbnQ/Lmhhc093blByb3BlcnR5KFwicHJlc3NcIikgPT09IHRydWUpIHtcblx0XHRcdHRoaXM/Lm1lbnU/LmN1cnJlbnQ/LmFkZEl0ZW0oXG5cdFx0XHRcdDxNZW51SXRlbVxuXHRcdFx0XHRcdHJlZj17dGhpcy5wcmludE1lbnVJdGVtfVxuXHRcdFx0XHRcdHRleHQ9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJUX1NIQVJFX0NPTlRST0xfUFJJTlRcIil9XG5cdFx0XHRcdFx0aWNvbj17UFJJTlRfSUNPTn1cblx0XHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5fY2FsbE1hbmlmZXN0QWN0aW9uc0V2ZW50cyhjb250cm9sbGVyLCB2aWV3LCBcInByaW50XCIpO1xuXHRcdFx0XHRcdH19XG5cdFx0XHRcdC8+XG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBBZGQgRXhwb3J0IGFzIEV4Y2VsIG9wdGlvbiB0byBtZW51IGJ1dHRvbi5cblx0ICogQHBhcmFtIGNvbnRyb2xsZXIgUGFnZSBjb250cm9sbGVyXG5cdCAqIEBwYXJhbSB2aWV3IFRoZSB2aWV3IHRoaXMgYnVpbGRpbmcgYmxvY2sgaXMgdXNlZCBpblxuXHQgKi9cblx0X2FkZEV4cG9ydEV4Y2VsT3B0aW9ucyhjb250cm9sbGVyOiBQYWdlQ29udHJvbGxlciwgdmlldzogVmlldyk6IHZvaWQge1xuXHRcdGNvbnN0IHZpZXdEYXRhID0gdmlldy5nZXRWaWV3RGF0YSgpIGFzIFZpZXdEYXRhO1xuXHRcdGlmICh2aWV3RGF0YT8uc2hhcmU/Lmhhc093blByb3BlcnR5KFwiZXhwb3J0VG9TcHJlYWRzaGVldFwiKSA9PT0gdHJ1ZSAmJiB2aWV3RGF0YT8uc2hhcmU/LnByaW50Py5oYXNPd25Qcm9wZXJ0eShcInByZXNzXCIpID09PSB0cnVlKSB7XG5cdFx0XHR0aGlzPy5tZW51Py5jdXJyZW50Py5hZGRJdGVtKFxuXHRcdFx0XHQ8TWVudUl0ZW1cblx0XHRcdFx0XHRyZWY9e3RoaXMuZXhwb3J0VG9TcHJlYWRzaGVldE1lbnVJdGVtfVxuXHRcdFx0XHRcdHRleHQ9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJUX1NIQVJFX0NPTlRST0xfRVhQT1JUX0FTX0VYQ0VMXCIpfVxuXHRcdFx0XHRcdGljb249e0VYUE9SVF9UT19TUFJFQURTSEVFVF9JQ09OfVxuXHRcdFx0XHRcdHByZXNzPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLl9jYWxsTWFuaWZlc3RBY3Rpb25zRXZlbnRzKGNvbnRyb2xsZXIsIHZpZXcsIFwiZXhwb3J0VG9TcHJlYWRzaGVldFwiKTtcblx0XHRcdFx0XHR9fVxuXHRcdFx0XHQvPlxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQWRkIEV4cG9ydCBhcyBDU1Ygb3B0aW9uIHRvIG1lbnUgYnV0dG9uLlxuXHQgKiBAcGFyYW0gY29udHJvbGxlciBQYWdlIGNvbnRyb2xsZXJcblx0ICogQHBhcmFtIHZpZXcgVGhlIHZpZXcgdGhpcyBidWlsZGluZyBibG9jayBpcyB1c2VkIGluXG5cdCAqL1xuXHRfYWRkRXhwb3J0Q1NWT3B0aW9ucyhjb250cm9sbGVyOiBQYWdlQ29udHJvbGxlciwgdmlldzogVmlldyk6IHZvaWQge1xuXHRcdGNvbnN0IHZpZXdEYXRhID0gdmlldy5nZXRWaWV3RGF0YSgpIGFzIFZpZXdEYXRhO1xuXHRcdGlmICh2aWV3RGF0YT8uc2hhcmU/Lmhhc093blByb3BlcnR5KFwiZXhwb3J0VG9DU1ZcIikgPT09IHRydWUgJiYgdmlld0RhdGE/LnNoYXJlPy5wcmludD8uaGFzT3duUHJvcGVydHkoXCJwcmVzc1wiKSA9PT0gdHJ1ZSkge1xuXHRcdFx0dGhpcz8ubWVudT8uY3VycmVudD8uYWRkSXRlbShcblx0XHRcdFx0PE1lbnVJdGVtXG5cdFx0XHRcdFx0cmVmPXt0aGlzLmV4cG9ydFRvQ1NWTWVudUl0ZW19XG5cdFx0XHRcdFx0dGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIlRfU0hBUkVfQ09OVFJPTF9FWFBPUlRfQVNfQ1NWXCIpfVxuXHRcdFx0XHRcdGljb249e0VYUE9SVF9UT19DU1ZfSUNPTn1cblx0XHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5fY2FsbE1hbmlmZXN0QWN0aW9uc0V2ZW50cyhjb250cm9sbGVyLCB2aWV3LCBcImV4cG9ydFRvQ1NWXCIpO1xuXHRcdFx0XHRcdH19XG5cdFx0XHRcdC8+XG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBBZGQgRXhwb3J0IGFzIFBERiBvcHRpb24gdG8gbWVudSBidXR0b24uXG5cdCAqIEBwYXJhbSBjb250cm9sbGVyIFBhZ2UgY29udHJvbGxlclxuXHQgKiBAcGFyYW0gdmlldyBUaGUgdmlldyB0aGlzIGJ1aWxkaW5nIGJsb2NrIGlzIHVzZWQgaW5cblx0ICovXG5cdF9hZGRFeHBvcnRQREZPcHRpb25zKGNvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLCB2aWV3OiBWaWV3KTogdm9pZCB7XG5cdFx0Y29uc3Qgdmlld0RhdGEgPSB2aWV3LmdldFZpZXdEYXRhKCkgYXMgVmlld0RhdGE7XG5cdFx0aWYgKHZpZXdEYXRhPy5zaGFyZT8uaGFzT3duUHJvcGVydHkoXCJleHBvcnRUb1BERlwiKSA9PT0gdHJ1ZSAmJiB2aWV3RGF0YT8uc2hhcmU/LnByaW50Py5oYXNPd25Qcm9wZXJ0eShcInByZXNzXCIpID09PSB0cnVlKSB7XG5cdFx0XHR0aGlzPy5tZW51Py5jdXJyZW50Py5hZGRJdGVtKFxuXHRcdFx0XHQ8TWVudUl0ZW1cblx0XHRcdFx0XHRyZWY9e3RoaXMuZXhwb3J0VG9QREZNZW51SXRlbX1cblx0XHRcdFx0XHR0ZXh0PXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiVF9TSEFSRV9DT05UUk9MX0VYUE9SVF9BU19QREZcIil9XG5cdFx0XHRcdFx0aWNvbj17RVhQT1JUX1RPX1BERl9JQ09OfVxuXHRcdFx0XHRcdHByZXNzPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLl9jYWxsTWFuaWZlc3RBY3Rpb25zRXZlbnRzKGNvbnRyb2xsZXIsIHZpZXcsIFwiZXhwb3J0VG9QREZcIik7XG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0Lz5cblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEFkZCBzZW5kIGVtYWlsIG9wdGlvbiB0byBtZW51IGJ1dHRvbi5cblx0ICogQHBhcmFtIGNvbnRyb2xsZXIgUGFnZSBjb250cm9sbGVyXG5cdCAqL1xuXHRfYWRkU2VuZEVtYWlsT3B0aW9uKGNvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuc2hhcmVPcHRpb25zPy5zaG93U2VuZEVtYWlsID8/IHRydWUpIHtcblx0XHRcdHRoaXM/Lm1lbnU/LmN1cnJlbnQ/LmFkZEl0ZW0oXG5cdFx0XHRcdDxNZW51SXRlbVxuXHRcdFx0XHRcdHJlZj17dGhpcy5zZW5kRW1haWxNZW51SXRlbX1cblx0XHRcdFx0XHR0ZXh0PXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiVF9TRU1BTlRJQ19DT05UUk9MX1NFTkRfRU1BSUxcIil9XG5cdFx0XHRcdFx0aWNvbj17XCJzYXAtaWNvbjovL2VtYWlsXCJ9XG5cdFx0XHRcdFx0cHJlc3M9e2FzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IGNvbnRyb2xsZXIuc2hhcmUuX3RyaWdnZXJFbWFpbCgpfVxuXHRcdFx0XHQvPlxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQWRkIFVTaGVsbCBiYXNlZCBzaGFyZSBvcHRpb25zLlxuXHQgKiBAcGFyYW0gY29udHJvbGxlciBQYWdlIGNvbnRyb2xsZXJcblx0ICogQHBhcmFtIHNoZWxsU2VydmljZXMgU2hlbGwgU2VydmljZXNcblx0ICovXG5cdGFzeW5jIF9hZGRTaGVsbEJhc2VkTWVudUl0ZW1zKGNvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLCBzaGVsbFNlcnZpY2VzOiBJU2hlbGxTZXJ2aWNlcyk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IGhhc1VzaGVsbCA9IHNoZWxsU2VydmljZXMuaGFzVVNoZWxsKCk7XG5cdFx0aWYgKGhhc1VzaGVsbCkge1xuXHRcdFx0Ly8gc2hhcmUgdmlhIEpBTVxuXHRcdFx0dGhpcy5fYWRkU2hhcmVWaWFKQU1PcHRpb24oY29udHJvbGxlciwgc2hlbGxTZXJ2aWNlcyk7XG5cblx0XHRcdC8vIFByZXBhcmUgdGVhbXMgbWVudSBpdGVtc1xuXHRcdFx0YXdhaXQgdGhpcy5fYWRkTVNUZWFtc09wdGlvbnMoY29udHJvbGxlcik7XG5cblx0XHRcdC8vIFByZXBhcmUgQ29sbGFib3JhdGlvbiBNYW5hZ2VyIE9wdGlvbnNcblx0XHRcdGF3YWl0IHRoaXMuX2FkZENvbGxhYm9yYXRpb25NYW5hZ2VyT3B0aW9uKGNvbnRyb2xsZXIpO1xuXG5cdFx0XHQvLyBTYXZlIGFzIFRpbGVcblx0XHRcdGF3YWl0IHRoaXMuX2FkZFNhdmVBc1RpbGVPcHRpb24oY29udHJvbGxlcik7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEFkZCBDTSBvcHRpb24uXG5cdCAqIEBwYXJhbSBjb250cm9sbGVyIFRoZSBjb250cm9sbGVyIGluc3RhbmNlXG5cdCAqIEByZXR1cm5zIE1lbnVJdGVtc1xuXHQgKi9cblx0YXN5bmMgX2FkZENvbGxhYm9yYXRpb25NYW5hZ2VyT3B0aW9uKGNvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGNvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2UgPSBjb250cm9sbGVyLmdldEFwcENvbXBvbmVudCgpLmdldENvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2UoKTtcblx0XHRcdGNvbnN0IGNvbGxhYm9yYXRpb25PcHRpb24gPSBhd2FpdCBjb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlLmdldENvbGxhYm9yYXRpb25NYW5hZ2VyT3B0aW9uKCk7XG5cdFx0XHRpZiAoY29sbGFib3JhdGlvbk9wdGlvbiAmJiAodGhpcy5zaGFyZU9wdGlvbnM/LnNob3dDb2xsYWJvcmF0aW9uTWFuYWdlciA/PyBmYWxzZSkpIHtcblx0XHRcdFx0Y29uc3QgbWVudUl0ZW0gPSAoXG5cdFx0XHRcdFx0PE1lbnVJdGVtXG5cdFx0XHRcdFx0XHRyZWY9e3RoaXMuc2hhcmVBc0NvbGxhYm9yYXRpb25NYW5hZ2VyfVxuXHRcdFx0XHRcdFx0dGV4dD17Y29sbGFib3JhdGlvbk9wdGlvbi50ZXh0fVxuXHRcdFx0XHRcdFx0aWNvbj17Y29sbGFib3JhdGlvbk9wdGlvbi5pY29ufVxuXHRcdFx0XHRcdFx0cHJlc3M9e2FzeW5jIChldmVudDogVUk1RXZlbnQ8e30sIE1lbnVJdGVtPik6IFByb21pc2U8dm9pZD4gPT5cblx0XHRcdFx0XHRcdFx0dGhpcy5fY29sbGFib3JhdGlvbk1hbmFnZXJCdXR0b25QcmVzcyhjb2xsYWJvcmF0aW9uT3B0aW9uLnByZXNzLCBldmVudClcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHQ+PC9NZW51SXRlbT5cblx0XHRcdFx0KTtcblx0XHRcdFx0RkVTUkhlbHBlci5zZXRTZW1hbnRpY1N0ZXBuYW1lKG1lbnVJdGVtLCBcInByZXNzXCIsIGNvbGxhYm9yYXRpb25PcHRpb24uZmVzclN0ZXBOYW1lKTtcblx0XHRcdFx0dGhpcz8ubWVudT8uY3VycmVudD8uYWRkSXRlbShtZW51SXRlbSk7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG5cdFx0XHRjb25zdCBtZXNzYWdlID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIpO1xuXHRcdFx0TG9nLmVycm9yKGBGRSA6IEFkZGluZyBDb2xsYWJvcmF0aW9uIE1hbmFnZXIgT3B0aW9uIDogJHttZXNzYWdlfWApO1xuXHRcdH1cblx0fVxuXG5cdGFzeW5jIF9jb2xsYWJvcmF0aW9uTWFuYWdlckJ1dHRvblByZXNzKGNvbGxhYm9yYXRpb25DYWxsQmFjazogRnVuY3Rpb24sIGV2ZW50OiBVSTVFdmVudDx7fSwgTWVudUl0ZW0+KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgY2xpY2tlZE1lbnVJdGVtID0gZXZlbnQuZ2V0U291cmNlKCk7XG5cblx0XHRjb25zdCB2aWV3OiBWaWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0VmlldyhjbGlja2VkTWVudUl0ZW0pO1xuXHRcdGNvbnN0IGNvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyID0gdmlldy5nZXRDb250cm9sbGVyKCkgYXMgUGFnZUNvbnRyb2xsZXI7XG5cdFx0YXdhaXQgY29udHJvbGxlci5zaGFyZS5fYWRhcHRTaGFyZU1ldGFkYXRhKCk7XG5cdFx0Y29uc3Qgc2hhcmVJbmZvTW9kZWwgPSB2aWV3LmdldE1vZGVsKFwic2hhcmVJbmZvXCIpIGFzIEpTT05Nb2RlbCB8IHVuZGVmaW5lZDtcblxuXHRcdGlmIChzaGFyZUluZm9Nb2RlbCkge1xuXHRcdFx0Y29uc3Qgc2hhcmVJbmZvID0gc2hhcmVJbmZvTW9kZWwuZ2V0RGF0YSgpO1xuXHRcdFx0Y29uc3QgeyBjb2xsYWJvcmF0aW9uSW5mbyB9ID0gc2hhcmVJbmZvO1xuXHRcdFx0Y29sbGFib3JhdGlvbkNhbGxCYWNrKGNvbGxhYm9yYXRpb25JbmZvLmFwcFRpdGxlLCBjb2xsYWJvcmF0aW9uSW5mby51cmwpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBBZGQgc2hhcmUgdmlhIEpBTSBvcHRpb24uXG5cdCAqIEBwYXJhbSBjb250cm9sbGVyIFBhZ2UgY29udHJvbGxlclxuXHQgKiBAcGFyYW0gc2hlbGxTZXJ2aWNlcyBTaGVsbCBTZXJ2aWNlc1xuXHQgKi9cblx0X2FkZFNoYXJlVmlhSkFNT3B0aW9uKGNvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLCBzaGVsbFNlcnZpY2VzOiBJU2hlbGxTZXJ2aWNlcyk6IHZvaWQge1xuXHRcdGNvbnN0IGhhc0phbSA9ICEhc2hlbGxTZXJ2aWNlcy5pc0phbUFjdGl2ZT8uKCk7XG5cdFx0aWYgKGhhc0phbSkge1xuXHRcdFx0dGhpcz8ubWVudT8uY3VycmVudD8uYWRkSXRlbShcblx0XHRcdFx0PE1lbnVJdGVtXG5cdFx0XHRcdFx0cmVmPXt0aGlzLnNoYXJlVmlhSkFNTWVudUl0ZW19XG5cdFx0XHRcdFx0dGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIlRfQ09NTU9OX1NBUEZFX1NIQVJFX0pBTVwiKX1cblx0XHRcdFx0XHRpY29uPXtcInNhcC1pY29uOi8vc2hhcmUtMlwifVxuXHRcdFx0XHRcdHByZXNzPXthc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiBjb250cm9sbGVyLnNoYXJlLl90cmlnZ2VyU2hhcmVUb0phbSgpfVxuXHRcdFx0XHQvPlxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQWRkIG9wdGlvbnMgdG8gc2hhcmUgdmlhIE1pY3Jvc29mdCBUZWFtcy5cblx0ICogQHBhcmFtIGNvbnRyb2xsZXIgUGFnZUNvbnRyb2xsZXJcblx0ICovXG5cdGFzeW5jIF9hZGRNU1RlYW1zT3B0aW9ucyhjb250cm9sbGVyOiBQYWdlQ29udHJvbGxlcik6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRpZiAodGhpcy5fYmxvY2tJbnRlcm5hbENvbmZpZz8uc2hvd01zVGVhbXNPcHRpb25zID09PSBmYWxzZSkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGNvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2UgPSBjb250cm9sbGVyLmdldEFwcENvbXBvbmVudCgpLmdldENvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2UoKTtcblx0XHRcdGNvbnN0IHNoYXJlQ29sbGFib3JhdGlvbk9wdGlvbnMgPSBhd2FpdCBjb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlLmdldFRlYW1zQ29sbGFiT3B0aW9uc1ZpYVNoYXJlKHtcblx0XHRcdFx0aXNTaGFyZUFzQ2FyZEVuYWJsZWQ6IHRoaXMuX2dldElzU2hhcmVBc0NhcmRFbmFibGVkKClcblx0XHRcdH0pO1xuXG5cdFx0XHRpZiAoIXNoYXJlQ29sbGFib3JhdGlvbk9wdGlvbnMpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRmb3IgKGNvbnN0IGNvbGxhYm9yYXRpb25PcHRpb24gb2Ygc2hhcmVDb2xsYWJvcmF0aW9uT3B0aW9ucykge1xuXHRcdFx0XHRjb25zdCBtZW51SXRlbVNldHRpbmdzOiAkTWVudUl0ZW1TZXR0aW5ncyA9IHRoaXMuX2dldE1zVGVhbXNNZW51SXRlbVNldHRpbmdzKGNvbGxhYm9yYXRpb25PcHRpb24pO1xuXHRcdFx0XHRjb25zdCBzdWJPcHRpb25zID0gbWVudUl0ZW1TZXR0aW5ncy5pdGVtcztcblx0XHRcdFx0Ly8gTXVsdGlwbGUgc3ViIG9wdGlvbnMgYXJlIGdyb3VwZWQgaW50byBzaW5nbGUgdGVhbXMgZ3JvdXAgbWVudSBpdGVtLlxuXHRcdFx0XHRjb25zdCBtZW51SXRlbUtleSA9XG5cdFx0XHRcdFx0QXJyYXkuaXNBcnJheShzdWJPcHRpb25zKSAmJiBzdWJPcHRpb25zLmxlbmd0aCA/IGVudW1TaGFyZU9wdGlvbi5NU19URUFNU19HUk9VUCA6IGNvbGxhYm9yYXRpb25PcHRpb24ua2V5O1xuXG5cdFx0XHRcdHRoaXMuX2FkZE1zVGVhbXNNZW51SXRlbShtZW51SXRlbVNldHRpbmdzLCBtZW51SXRlbUtleSwgY29sbGFib3JhdGlvbk9wdGlvbi5mZXNyU3RlcE5hbWUpO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuXHRcdFx0Y29uc3QgbWVzc2FnZSA9IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBTdHJpbmcoZXJyKTtcblx0XHRcdExvZy5lcnJvcihgRkUgOiBCdWlsZGluZ2Jsb2NrIDogU2hhcmUgOiBhZGRpbmcgTVMgdGVhbXMgb3B0aW9ucyA6ICR7bWVzc2FnZX1gKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQWRkIHNhdmUgYXMgdGlsZSBvcHRpb24uXG5cdCAqIEBwYXJhbSBjb250cm9sbGVyIFBhZ2UgY29udHJvbGxlclxuXHQgKi9cblx0YXN5bmMgX2FkZFNhdmVBc1RpbGVPcHRpb24oY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHR0cnkge1xuXHRcdFx0Ly8gc2V0IHNhdmUgYXMgdGlsZVxuXHRcdFx0Ly8gZm9yIG5vdyB3ZSBuZWVkIHRvIGNyZWF0ZSBhZGRCb29rbWFya0J1dHRvbiB0byB1c2UgdGhlIHNhdmUgYXMgdGlsZSBmZWF0dXJlLlxuXHRcdFx0Ly8gSW4gdGhlIGZ1dHVyZSBzYXZlIGFzIHRpbGUgc2hvdWxkIGJlIGF2YWlsYWJsZSBhcyBhbiBBUEkgb3IgYSBNZW51SXRlbSBzbyB0aGF0IGl0IGNhbiBiZSBhZGRlZCB0byB0aGUgTWVudSBidXR0b24uXG5cdFx0XHQvLyBUaGlzIG5lZWRzIHRvIGJlIGRpc2N1c3NlZCB3aXRoIEFkZEJvb2ttYXJrQnV0dG9uIHRlYW0uXG5cdFx0XHQvLyBJbmNsdWRlZCBpbiBhIGhhc1VzaGVsbCBicmFuY2hcblx0XHRcdGNvbnN0IHsgZGVmYXVsdDogQWRkQm9va21hcmtCdXR0b24gfSA9IGF3YWl0IGltcG9ydChcInNhcC91c2hlbGwvdWkvZm9vdGVyYmFyL0FkZEJvb2ttYXJrQnV0dG9uXCIpO1xuXHRcdFx0Y29uc3QgYWRkQm9va21hcmtCdXR0b24gPSBuZXcgQWRkQm9va21hcmtCdXR0b24oKTtcblx0XHRcdGlmIChhZGRCb29rbWFya0J1dHRvbi5nZXRFbmFibGVkKCkpIHtcblx0XHRcdFx0dGhpcz8ubWVudT8uY3VycmVudD8uYWRkSXRlbShcblx0XHRcdFx0XHQ8TWVudUl0ZW1cblx0XHRcdFx0XHRcdHJlZj17dGhpcy5zYXZlQXNUaWxlTWVudUl0ZW19XG5cdFx0XHRcdFx0XHR0ZXh0PXthZGRCb29rbWFya0J1dHRvbi5nZXRUZXh0KCl9XG5cdFx0XHRcdFx0XHRpY29uPXthZGRCb29rbWFya0J1dHRvbi5nZXRJY29uKCl9XG5cdFx0XHRcdFx0XHRwcmVzcz17YXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4gY29udHJvbGxlci5zaGFyZS5fc2F2ZUFzVGlsZSh0aGlzLnNhdmVBc1RpbGVNZW51SXRlbS5jdXJyZW50ISl9XG5cdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0e3sgZGVwZW5kZW50czogW2FkZEJvb2ttYXJrQnV0dG9uXSB9fVxuXHRcdFx0XHRcdDwvTWVudUl0ZW0+XG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRhZGRCb29rbWFya0J1dHRvbi5kZXN0cm95KCk7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG5cdFx0XHRjb25zdCBtZXNzYWdlID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIpO1xuXHRcdFx0TG9nLmVycm9yKGBGRSA6IEJ1aWxkaW5nYmxvY2sgOiBTaGFyZSA6IGFkZGluZyBTYXZlIGFzIHRpbGUgb3B0aW9uIDogJHttZXNzYWdlfWApO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgaXNTaGFyZUFzQ2FyZEVuYWJsZWQgdG8gZmV0Y2ggc3VwcG9ydGVkIGNvbGxhYm9yYXRpb24gb3B0aW9ucy5cblx0ICogQHJldHVybnMgQm9vbGVhbi5cblx0ICovXG5cdF9nZXRJc1NoYXJlQXNDYXJkRW5hYmxlZCgpOiBib29sZWFuIHtcblx0XHRjb25zdCBzaG93U2hhcmVBc0NhcmQgPSB0aGlzLm1zVGVhbXNPcHRpb25zPy5lbmFibGVDYXJkID8/IGZhbHNlO1xuXG5cdFx0aWYgKHR5cGVvZiBzaG93U2hhcmVBc0NhcmQgPT09IFwiYm9vbGVhblwiKSB7XG5cdFx0XHRyZXR1cm4gc2hvd1NoYXJlQXNDYXJkO1xuXHRcdH0gZWxzZSBpZiAodHlwZW9mIHNob3dTaGFyZUFzQ2FyZCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0Ly8gXCJ0cnVlXCIgb3IgYSBiaW5kaW5nIGV4cHJlc3Npb25cblx0XHRcdHRyeSB7XG5cdFx0XHRcdHJldHVybiBzaG93U2hhcmVBc0NhcmQgPT09IFwidHJ1ZVwiIHx8IEJvb2xlYW4oQmluZGluZ0luZm8ucGFyc2Uoc2hvd1NoYXJlQXNDYXJkKSk7XG5cdFx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdFx0TG9nLmVycm9yKGVyciBhcyBzdHJpbmcpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgTWVudSBJdGVtIHNldHRpbmdzIGZvciBtYWluIE1TIHRlYW1zIG9wdGlvbi5cblx0ICogQHBhcmFtIGNvbGxhYm9yYXRpb25PcHRpb24gUm9vdCBDb2xsYWJvcmF0aW9uIE9wdGlvblxuXHQgKiBAcmV0dXJucyBNZW51SXRlbVNldHRpbmdzXG5cdCAqL1xuXHRfZ2V0TXNUZWFtc01lbnVJdGVtU2V0dGluZ3MoY29sbGFib3JhdGlvbk9wdGlvbjogQ29sbGFib3JhdGlvbk9wdGlvbnMpOiAkTWVudUl0ZW1TZXR0aW5ncyB7XG5cdFx0Y29uc3QgaXRlbXMgPSB0aGlzLl9nZXRNc1RlYW1zU3ViT3B0aW9ucyhjb2xsYWJvcmF0aW9uT3B0aW9uPy5zdWJPcHRpb25zKTtcblx0XHRjb25zdCBtZW51SXRlbVNldHRpbmdzOiAkTWVudUl0ZW1TZXR0aW5ncyA9IHtcblx0XHRcdHRleHQ6IGNvbGxhYm9yYXRpb25PcHRpb24udGV4dCxcblx0XHRcdGljb246IGNvbGxhYm9yYXRpb25PcHRpb24uaWNvbixcblx0XHRcdGl0ZW1zXG5cdFx0fTtcblxuXHRcdGlmIChpdGVtcy5sZW5ndGggPT09IDApIHtcblx0XHRcdC8vIGlmIHRoZXJlIGFyZSBubyBzdWIgb3B0aW9uIHRoZW4gdGhlIG1haW4gb3B0aW9uIHNob3VsZCBiZSBjbGlja2FibGVcblx0XHRcdC8vIHNvIGFkZCBhIHByZXNzIGhhbmRsZXIuXG5cdFx0XHRtZW51SXRlbVNldHRpbmdzLnByZXNzID0gYXN5bmMgKGV2ZW50OiBVSTVFdmVudDx7fSwgTWVudUl0ZW0+KTogUHJvbWlzZTx2b2lkPiA9PiB0aGlzLmNvbGxhYm9yYXRpb25NZW51SXRlbVByZXNzKGV2ZW50KTtcblx0XHRcdG1lbnVJdGVtU2V0dGluZ3NbXCJjdXN0b21EYXRhXCJdID0gbmV3IEN1c3RvbURhdGEoe1xuXHRcdFx0XHRrZXk6IFwiY29sbGFib3JhdGlvbkRhdGFcIixcblx0XHRcdFx0dmFsdWU6IGNvbGxhYm9yYXRpb25PcHRpb25cblx0XHRcdH0pO1xuXHRcdH1cblx0XHRyZXR1cm4gbWVudUl0ZW1TZXR0aW5ncztcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGQgbWFpbiBNUyBUZWFtcyBNZW51IEl0ZW0gdG8gdGhlIFNoYXJlIGJ1aWxkaW5nIGJsb2NrIG1lbnUuXG5cdCAqIEBwYXJhbSBtZW51SXRlbVNldHRpbmdzIE1lbnUgSXRlbSBzZXR0aW5nc1xuXHQgKiBAcGFyYW0gbWVudUl0ZW1LZXkgTVMgdGVhbXMgb3B0aW9uIGtleVxuXHQgKiBAcGFyYW0gZmVzclN0ZXBOYW1lIFN0ZXAgbmFtZVxuXHQgKi9cblx0X2FkZE1zVGVhbXNNZW51SXRlbShtZW51SXRlbVNldHRpbmdzOiAkTWVudUl0ZW1TZXR0aW5ncywgbWVudUl0ZW1LZXk/OiBTaGFyZU9wdGlvbktleSwgZmVzclN0ZXBOYW1lPzogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3QgbWVudUl0ZW06IE1lbnVJdGVtID0gKFxuXHRcdFx0PE1lbnVJdGVtXG5cdFx0XHRcdHJlZj17dGhpcy5fZ2V0TWVudUl0ZW1SZWZlcmVuY2UobWVudUl0ZW1LZXkpfVxuXHRcdFx0XHR0ZXh0PXttZW51SXRlbVNldHRpbmdzLnRleHR9XG5cdFx0XHRcdGljb249e21lbnVJdGVtU2V0dGluZ3MuaWNvbn1cblx0XHRcdFx0Y3VzdG9tRGF0YT17bWVudUl0ZW1TZXR0aW5ncy5jdXN0b21EYXRhfVxuXHRcdFx0XHRpdGVtcz17bWVudUl0ZW1TZXR0aW5ncy5pdGVtc31cblx0XHRcdD48L01lbnVJdGVtPlxuXHRcdCk7XG5cdFx0aWYgKG1lbnVJdGVtU2V0dGluZ3MucHJlc3MpIHtcblx0XHRcdC8vXG5cdFx0XHRtZW51SXRlbS5hdHRhY2hQcmVzcyhtZW51SXRlbVNldHRpbmdzLnByZXNzKTtcblx0XHRcdGlmIChmZXNyU3RlcE5hbWUpIHtcblx0XHRcdFx0RkVTUkhlbHBlci5zZXRTZW1hbnRpY1N0ZXBuYW1lKG1lbnVJdGVtLCBcInByZXNzXCIsIGZlc3JTdGVwTmFtZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHRoaXM/Lm1lbnU/LmN1cnJlbnQ/LmFkZEl0ZW0obWVudUl0ZW0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBNZW51IEl0ZW1zIGNvcnJlc3BvbmRpbmcgdG8gTVMgdGVhbXMgc3ViIG9wdGlvbnMuXG5cdCAqIEBwYXJhbSBzdWJPcHRpb25zIEFycmF5IG9mIGNvbGxhYm9yYXRpb24gb3B0aW9uc1xuXHQgKiBAcmV0dXJucyBNZW51SXRlbXNcblx0ICovXG5cdF9nZXRNc1RlYW1zU3ViT3B0aW9ucyhzdWJPcHRpb25zPzogQ29sbGFib3JhdGlvbk9wdGlvbnNbXSk6IE1lbnVJdGVtW10ge1xuXHRcdGlmICghQXJyYXkuaXNBcnJheShzdWJPcHRpb25zKSkge1xuXHRcdFx0cmV0dXJuIFtdO1xuXHRcdH1cblxuXHRcdHJldHVybiBzdWJPcHRpb25zLnJlZHVjZSgobWVudUl0ZW1zOiBNZW51SXRlbVtdLCBzdWJPcHRpb246IENvbGxhYm9yYXRpb25PcHRpb25zKSA9PiB7XG5cdFx0XHRjb25zdCBzdWJNZW51SXRlbSA9IChcblx0XHRcdFx0PE1lbnVJdGVtXG5cdFx0XHRcdFx0cmVmPXt0aGlzLl9nZXRNZW51SXRlbVJlZmVyZW5jZShzdWJPcHRpb24ua2V5KX1cblx0XHRcdFx0XHR0ZXh0PXtzdWJPcHRpb24udGV4dH1cblx0XHRcdFx0XHRpY29uPXtzdWJPcHRpb24uaWNvbn1cblx0XHRcdFx0XHRwcmVzcz17YXN5bmMgKGV2ZW50OiBVSTVFdmVudDx7fSwgTWVudUl0ZW0+KTogUHJvbWlzZTx2b2lkPiA9PiB0aGlzLmNvbGxhYm9yYXRpb25NZW51SXRlbVByZXNzKGV2ZW50KX1cblx0XHRcdFx0XHRjdXN0b21EYXRhPXtcblx0XHRcdFx0XHRcdG5ldyBDdXN0b21EYXRhKHtcblx0XHRcdFx0XHRcdFx0a2V5OiBcImNvbGxhYm9yYXRpb25EYXRhXCIsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiBzdWJPcHRpb25cblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQ+PC9NZW51SXRlbT5cblx0XHRcdCk7XG5cdFx0XHRpZiAoc3ViT3B0aW9uLmZlc3JTdGVwTmFtZSkge1xuXHRcdFx0XHRGRVNSSGVscGVyLnNldFNlbWFudGljU3RlcG5hbWUoc3ViTWVudUl0ZW0sIFwicHJlc3NcIiwgc3ViT3B0aW9uLmZlc3JTdGVwTmFtZSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gWy4uLm1lbnVJdGVtcywgc3ViTWVudUl0ZW1dO1xuXHRcdH0sIFtdKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQcmVzcyBoYW5kbGVyIGZvciBjb2xsYWJvcmF0aW9uIG1lbnUgaXRlbXMuXG5cdCAqYFxuXHQgKiBAcGFyYW0gZXZlbnQgRXZlbnQgb2JqZWN0XG5cdCAqL1xuXHRhc3luYyBjb2xsYWJvcmF0aW9uTWVudUl0ZW1QcmVzcyhldmVudDogVUk1RXZlbnQ8e30sIE1lbnVJdGVtPik6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IGNsaWNrZWRNZW51SXRlbSA9IGV2ZW50LmdldFNvdXJjZSgpO1xuXG5cdFx0Y29uc3QgdmlldzogVmlldyA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcoY2xpY2tlZE1lbnVJdGVtKTtcblx0XHRjb25zdCBjb250cm9sbGVyOiBQYWdlQ29udHJvbGxlciA9IHZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIFBhZ2VDb250cm9sbGVyO1xuXHRcdGF3YWl0IGNvbnRyb2xsZXIuc2hhcmUuX2FkYXB0U2hhcmVNZXRhZGF0YSgpO1xuXHRcdGNvbnN0IHNoYXJlSW5mb01vZGVsID0gdmlldy5nZXRNb2RlbChcInNoYXJlSW5mb1wiKSBhcyBKU09OTW9kZWwgfCB1bmRlZmluZWQ7XG5cblx0XHRpZiAoc2hhcmVJbmZvTW9kZWwpIHtcblx0XHRcdGNvbnN0IHNoYXJlSW5mbyA9IHNoYXJlSW5mb01vZGVsLmdldERhdGEoKTtcblx0XHRcdGNvbnN0IHsgY29sbGFib3JhdGlvbkluZm8gfSA9IHNoYXJlSW5mbztcblxuXHRcdFx0Y29uc3QgY29sbGFib3JhdGlvbkRhdGEgPSBjbGlja2VkTWVudUl0ZW0uZGF0YShcImNvbGxhYm9yYXRpb25EYXRhXCIpO1xuXHRcdFx0Y29uc3QgY29sbGFib3JhdGl2ZVRvb2xzU2VydmljZSA9IGNvbnRyb2xsZXIuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0Q29sbGFib3JhdGl2ZVRvb2xzU2VydmljZSgpO1xuXHRcdFx0Y29uc3QgdGVhbXNIZWxwZXJTZXJ2aWNlID0gKGF3YWl0IGNvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2UuZ2V0Q29sbGFib3JhdGlvblNlcnZpY2VzKCkpLm9UZWFtc0hlbHBlclNlcnZpY2U7XG5cdFx0XHRpZiAoY29sbGFib3JhdGlvbkRhdGFbXCJrZXlcIl0gPT09IGVudW1NU1RlYW1zT3B0aW9uLkNPTExBQk9SQVRJT05fTVNURUFNU19DQVJEKSB7XG5cdFx0XHRcdGNvbnN0IGlzU2hhcmVBc0NhcmRFbmFibGVkID0gdGVhbXNIZWxwZXJTZXJ2aWNlLmlzRmVhdHVyZUZsYWdFbmFibGVkKCk7XG5cdFx0XHRcdGNvbnN0IGNhcmREZWZpbml0aW9uID0gaXNTaGFyZUFzQ2FyZEVuYWJsZWQgPyBhd2FpdCBjb250cm9sbGVyLnNoYXJlLmdldENhcmREZWZpbml0aW9uKCkgOiB1bmRlZmluZWQ7XG5cdFx0XHRcdGxldCBjYXJkSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0XHRcdFx0aWYgKGNhcmREZWZpbml0aW9uKSB7XG5cdFx0XHRcdFx0Y29uc3Qgc2hlbGxTZXJ2aWNlSGVscGVyID0gY29udHJvbGxlci5nZXRBcHBDb21wb25lbnQoKS5nZXRTaGVsbFNlcnZpY2VzKCk7XG5cdFx0XHRcdFx0Y29uc3QgeyBzZW1hbnRpY09iamVjdCwgYWN0aW9uIH0gPSBzaGVsbFNlcnZpY2VIZWxwZXIucGFyc2VTaGVsbEhhc2goZG9jdW1lbnQubG9jYXRpb24uaGFzaCk7XG5cdFx0XHRcdFx0Y2FyZElkID0gYCR7c2VtYW50aWNPYmplY3R9XyR7YWN0aW9ufWA7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y29uc3QgcmVhc29uID0gIWlzU2hhcmVBc0NhcmRFbmFibGVkXG5cdFx0XHRcdFx0XHQ/IFwiRmVhdHVyZSBmbGFnIGRpc2FibGVkIGluIGNvbGxhYm9yYXRpb24gdGVhbXMgaGVscGVyXCJcblx0XHRcdFx0XHRcdDogXCJDYXJkIGRlZmluaXRpb24gd2FzIG5vdCBjcmVhdGVkXCI7XG5cdFx0XHRcdFx0TG9nLmluZm8oYEZFIFY0IDogU2hhcmUgYmxvY2sgOiBzaGFyZSBhcyBDYXJkIDogJHtyZWFzb259YCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29sbGFib3JhdGlvbkluZm9bXCJjYXJkTWFuaWZlc3RcIl0gPSBjYXJkRGVmaW5pdGlvbjtcblx0XHRcdFx0Y29sbGFib3JhdGlvbkluZm9bXCJjYXJkSWRcIl0gPSBjYXJkSWQ7XG5cdFx0XHR9XG5cdFx0XHR0ZWFtc0hlbHBlclNlcnZpY2Uuc2hhcmUoY29sbGFib3JhdGlvbkRhdGEsIGNvbGxhYm9yYXRpb25JbmZvKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogU2V0IHRoZSB2aXNpYmlsaXR5IG9mIGluZGl2aWR1YWwgVUkgZWxlbWVudHMgb2YgdGhlIFNoYXJlIGJ1aWxkaW5nIGJsb2NrLiBMaWtlLCBNZW51SXRlbXMsIE1lbnVCdXR0b24gYW5kIENvbW1hbmQgZXhlY3V0aW9uLlxuXHQgKi9cblx0c2V0U2hhcmVPcHRpb25zVmlzaWJpbGl0eSgpOiB2b2lkIHtcblx0XHRjb25zdCBvcHRpb25LZXlzID0gT2JqZWN0LmtleXMoZW51bVNoYXJlT3B0aW9uKSBhcyBTaGFyZU9wdGlvbktleVtdO1xuXHRcdGNvbnN0IHZpc2libGVCaW5kaW5nRXhwcyA9IG9wdGlvbktleXMucmVkdWNlKChiaW5kaW5nVG9vbGtpdEV4cHM6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPltdLCBvcHRpb246IFNoYXJlT3B0aW9uS2V5KSA9PiB7XG5cdFx0XHRjb25zdCBleHAgPSB0aGlzLl9nZXRTaGFyZU9wdGlvblZpc2liaWxpdHlFeHByZXNzaW9uKG9wdGlvbik7XG5cdFx0XHR0aGlzLl9zZXRTaGFyZU9wdGlvblZpc2liaWxpdHkob3B0aW9uLCBleHApO1xuXHRcdFx0cmV0dXJuIFsuLi5iaW5kaW5nVG9vbGtpdEV4cHMsIGV4cF07XG5cdFx0fSwgW10pO1xuXHRcdGNvbnN0IHNoYXJlQmxvY2tWaXNpYmxlRXhwID0gb3IoLi4udmlzaWJsZUJpbmRpbmdFeHBzKTtcblx0XHRpZiAodGhpcy5tZW51QnV0dG9uLmN1cnJlbnQgJiYgdGhpcy5jbWRFeGVjdXRpb24uY3VycmVudCkge1xuXHRcdFx0dGhpcy5fYmluZFVJVmlzaWJpbGl0eSh0aGlzLm1lbnVCdXR0b24uY3VycmVudCwgc2hhcmVCbG9ja1Zpc2libGVFeHApO1xuXHRcdFx0dGhpcy5fYmluZFVJVmlzaWJpbGl0eSh0aGlzLmNtZEV4ZWN1dGlvbi5jdXJyZW50LCBzaGFyZUJsb2NrVmlzaWJsZUV4cCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBNZW51IEl0ZW0gcmVmZXJlbmNlIG9mIHRoZSBjb3JyZXNwb25kaW5nIFNoYXJlIG9wdGlvbi5cblx0ICpgXG5cdCAqIEBwYXJhbSBvcHRpb24gU2hhcmUgb3B0aW9uIGtleVxuXHQgKiBAcmV0dXJucyBSZWZlcmVuY2UgdG8gdGhlIE1lbnUgSXRlbVxuXHQgKi9cblx0X2dldE1lbnVJdGVtUmVmZXJlbmNlKG9wdGlvbj86IFNoYXJlT3B0aW9uS2V5KTogUmVmPE1lbnVJdGVtPiB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IHJlZjogUmVmPE1lbnVJdGVtPiB8IHVuZGVmaW5lZDtcblx0XHRzd2l0Y2ggKG9wdGlvbikge1xuXHRcdFx0Y2FzZSBlbnVtU2hhcmVPcHRpb24uQ09MTEFCT1JBVElPTl9NU1RFQU1TX0NBUkQ6XG5cdFx0XHRcdHJlZiA9IHRoaXMuc2hhcmVBc0NhcmRNZW51SXRlbTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIGVudW1TaGFyZU9wdGlvbi5DT0xMQUJPUkFUSU9OX01TVEVBTVNfQ0hBVDpcblx0XHRcdFx0cmVmID0gdGhpcy5zaGFyZVZpYUNoYXRNZW51SXRlbTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIGVudW1TaGFyZU9wdGlvbi5DT0xMQUJPUkFUSU9OX01TVEVBTVNfVEFCOlxuXHRcdFx0XHRyZWYgPSB0aGlzLnNoYXJlQXNUYWJNZW51SXRlbTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIGVudW1TaGFyZU9wdGlvbi5TRU5EX0VNQUlMOlxuXHRcdFx0XHRyZWYgPSB0aGlzLnNlbmRFbWFpbE1lbnVJdGVtO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgZW51bVNoYXJlT3B0aW9uLlNIQVJFX0pBTTpcblx0XHRcdFx0cmVmID0gdGhpcy5zaGFyZVZpYUpBTU1lbnVJdGVtO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgZW51bVNoYXJlT3B0aW9uLlNBVkVfQVNfVElMRTpcblx0XHRcdFx0cmVmID0gdGhpcy5zYXZlQXNUaWxlTWVudUl0ZW07XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBlbnVtU2hhcmVPcHRpb24uTVNfVEVBTVNfR1JPVVA6XG5cdFx0XHRcdHJlZiA9IHRoaXMubXNUZWFtc0dyb3VwTWVudUl0ZW07XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBlbnVtU2hhcmVPcHRpb24uU0hBUkVfQ09MTEFCT1JBVElPTl9NQU5BR0VSOlxuXHRcdFx0XHRyZWYgPSB0aGlzLnNoYXJlQXNDb2xsYWJvcmF0aW9uTWFuYWdlcjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cblx0XHRyZXR1cm4gcmVmO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgdmlzaWJpbGl0eSBleHByZXNzaW9uIG9mIHNoYXJlIG9wdGlvbiBiYXNlZCBvbiB0aGUgYnVpbGRpbmcgYmxvY2sgY29uZmlndXJhdGlvbi5cblx0ICogQHBhcmFtIG9wdGlvbiBTaGFyZSBvcHRpb24gbmFtZSBvZiB0aGUgdmlzaWJsZSBleHByZXNzaW9uIHRoYXQgbmVlZHMgdG8gYmUgZmV0Y2hlZC5cblx0ICogQHJldHVybnMgQmluZGluZyB0b29sa2l0IGV4cHJlc3Npb24uXG5cdCAqL1xuXHRfZ2V0U2hhcmVPcHRpb25WaXNpYmlsaXR5RXhwcmVzc2lvbihvcHRpb24/OiBTaGFyZU9wdGlvbktleSk6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdFx0Y29uc3Qgb3B0aW9uTWVudUl0ZW1SZWYgPSB0aGlzLl9nZXRNZW51SXRlbVJlZmVyZW5jZShvcHRpb24pO1xuXHRcdGlmICghb3B0aW9uTWVudUl0ZW1SZWY/LmN1cnJlbnQpIHtcblx0XHRcdHJldHVybiBjb25zdGFudChmYWxzZSk7XG5cdFx0fVxuXG5cdFx0bGV0IGV4cDogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+O1xuXHRcdHN3aXRjaCAob3B0aW9uKSB7XG5cdFx0XHRjYXNlIGVudW1TaGFyZU9wdGlvbi5DT0xMQUJPUkFUSU9OX01TVEVBTVNfQ0FSRDpcblx0XHRcdGNhc2UgZW51bVNoYXJlT3B0aW9uLkNPTExBQk9SQVRJT05fTVNURUFNU19DSEFUOlxuXHRcdFx0Y2FzZSBlbnVtU2hhcmVPcHRpb24uQ09MTEFCT1JBVElPTl9NU1RFQU1TX1RBQjpcblx0XHRcdFx0ZXhwID0gdGhpcy5fZ2V0TVNUZWFtc1NoYXJlT3B0aW9uVmlzaWJpbGl0eShvcHRpb24pO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgZW51bVNoYXJlT3B0aW9uLlNIQVJFX0NPTExBQk9SQVRJT05fTUFOQUdFUjpcblx0XHRcdFx0ZXhwID0gdGhpcy5fZ2V0Q29sbGFib3JhdGlvbk9wdGlvbkV4cHJlc3Npb24oKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIGVudW1TaGFyZU9wdGlvbi5TRU5EX0VNQUlMOiB7XG5cdFx0XHRcdGNvbnN0IHNob3dTZW5kRW1haWwgPSByZXNvbHZlQmluZGluZ1N0cmluZzxib29sZWFuPih0aGlzLnNoYXJlT3B0aW9ucz8uc2hvd1NlbmRFbWFpbCA/PyB0cnVlLCBcImJvb2xlYW5cIik7XG5cdFx0XHRcdGNvbnN0IGludGVybmFsT3B0aW9uID0gcmVzb2x2ZUJpbmRpbmdTdHJpbmcoXG5cdFx0XHRcdFx0dGhpcy5fYmxvY2tJbnRlcm5hbENvbmZpZy5zaG93U2VuZEVtYWlsID8/IHRydWUsXG5cdFx0XHRcdFx0XCJib29sZWFuXCJcblx0XHRcdFx0KSBhcyB1bmtub3duIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPjtcblx0XHRcdFx0aWYgKGlzQ29uc3RhbnQoaW50ZXJuYWxPcHRpb24pICYmIGludGVybmFsT3B0aW9uLnZhbHVlID09PSBmYWxzZSkge1xuXHRcdFx0XHRcdGV4cCA9IGNvbnN0YW50KGZhbHNlKTtcblx0XHRcdFx0fSBlbHNlIGlmIChpc0NvbnN0YW50KGludGVybmFsT3B0aW9uKSAmJiBpbnRlcm5hbE9wdGlvbi52YWx1ZSA9PT0gdHJ1ZSkge1xuXHRcdFx0XHRcdGV4cCA9ICh0aGlzLnNoYXJlT3B0aW9ucz8uc2hvd1NlbmRFbWFpbCA/PyB0cnVlKSBhcyB1bmtub3duIGFzIEVtYmVkZGVkVUk1QmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj47XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0ZXhwID0gYW5kKHNob3dTZW5kRW1haWwsIGludGVybmFsT3B0aW9uKSBhcyB1bmtub3duIGFzIEVtYmVkZGVkVUk1QmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj47XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIGVudW1TaGFyZU9wdGlvbi5TSEFSRV9KQU06XG5cdFx0XHRjYXNlIGVudW1TaGFyZU9wdGlvbi5TQVZFX0FTX1RJTEU6IHtcblx0XHRcdFx0Ly8gTm8gb3ZlcnJpZGVzIGZvciBTaGFyZSB2aWEgSmFtIGFuZCBTYXZlIGFzIHRpbGUgeWV0LlxuXHRcdFx0XHRleHAgPSBjb25zdGFudCh0cnVlKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIGVudW1TaGFyZU9wdGlvbi5NU19URUFNU19HUk9VUDoge1xuXHRcdFx0XHRjb25zdCBtc1RlYW1zQ29uZmlnRXhwID0gdGhpcy5fZ2V0U2hvd01zVGVhbXNPcHRpb25zRXhwcmVzc2lvbigpO1xuXHRcdFx0XHRjb25zdCBtc1RlYW1zT3B0aW9uc1ZhbHVlID0gT2JqZWN0LmtleXMoZW51bU1TVGVhbXNPcHRpb24pIGFzIFNoYXJlT3B0aW9uS2V5W107XG5cdFx0XHRcdGNvbnN0IGFsbE1TVGVhbXNPcHRpb25zRXhwcyA9IG1zVGVhbXNPcHRpb25zVmFsdWUucmVkdWNlKFxuXHRcdFx0XHRcdChiaW5kaW5nVG9vbGtpdEV4cDogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+W10sIG1zVGVhbXNPcHRpb246IFNoYXJlT3B0aW9uS2V5KSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zdCBtc1RlYW1PcHRpb25FeHAgPSB0aGlzLl9nZXRNU1RlYW1zU2hhcmVPcHRpb25WaXNpYmlsaXR5KG1zVGVhbXNPcHRpb24pO1xuXHRcdFx0XHRcdFx0cmV0dXJuIFsuLi5iaW5kaW5nVG9vbGtpdEV4cCwgbXNUZWFtT3B0aW9uRXhwXTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFtdIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPltdXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGV4cCA9IGFuZChtc1RlYW1zQ29uZmlnRXhwLCBvciguLi5hbGxNU1RlYW1zT3B0aW9uc0V4cHMpKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRleHAgPSBjb25zdGFudChmYWxzZSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGV4cDtcblx0fVxuXG5cdF9nZXRDb2xsYWJvcmF0aW9uT3B0aW9uRXhwcmVzc2lvbigpOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRcdGNvbnN0IHNob3dDb2xsYWJvcmF0aW9uTWFuYWdlciA9IHRoaXMuc2hhcmVPcHRpb25zPy5zaG93Q29sbGFib3JhdGlvbk1hbmFnZXIgPz8gZmFsc2U7XG5cdFx0Y29uc3Qgb3B0aW9uRXhwID0gcmVzb2x2ZUJpbmRpbmdTdHJpbmc8Ym9vbGVhbj4oc2hvd0NvbGxhYm9yYXRpb25NYW5hZ2VyLCBcImJvb2xlYW5cIik7XG5cdFx0Y29uc3QgaW50ZXJuYWxPcHRpb24gPSB0aGlzLl9ibG9ja0ludGVybmFsQ29uZmlnLnNob3dDb2xsYWJvcmF0aW9uTWFuYWdlciA/PyB0cnVlO1xuXHRcdGNvbnN0IGludGVybmFsT3B0aW9uRXhwID0gcmVzb2x2ZUJpbmRpbmdTdHJpbmc8Ym9vbGVhbj4oaW50ZXJuYWxPcHRpb24sIFwiYm9vbGVhblwiKTtcblx0XHRyZXR1cm4gYW5kKG9wdGlvbkV4cCwgaW50ZXJuYWxPcHRpb25FeHApO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBleHByZXNzaW9uIGZvciBzaG93TXNUZWFtc09wdGlvbnMgc2hhcmUgb3B0aW9uIGJhc2VkIG9uIHRoZSBidWlsZGluZyBibG9jayBjb25maWd1cmF0aW9uLlxuXHQgKiBAcmV0dXJucyBCaW5kaW5nIHRvb2xraXQgZXhwcmVzc2lvbi5cblx0ICovXG5cdF9nZXRTaG93TXNUZWFtc09wdGlvbnNFeHByZXNzaW9uKCk6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdFx0Y29uc3QgaW50ZXJuYWxPcHRpb24gPSB0aGlzLl9ibG9ja0ludGVybmFsQ29uZmlnLnNob3dNc1RlYW1zT3B0aW9ucyA/PyB0cnVlO1xuXHRcdHJldHVybiByZXNvbHZlQmluZGluZ1N0cmluZzxib29sZWFuPihpbnRlcm5hbE9wdGlvbiwgXCJib29sZWFuXCIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBiaW5kaW5nIHRvb2xraXQgZXhwcmVzc2lvbiBmb3Igc2hhcmUgYXMgY2FyZCB2aXNpYmlsaXR5LlxuXHQgKiBAcmV0dXJucyBCaW5kaW5nIHRvb2xraXQgZXhwcmVzc2lvbi5cblx0ICovXG5cdF9nZXRTaGFyZUFzQ2FyZFZpc2liaWxpdHkoKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0XHRsZXQgZXhwOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj47XG5cdFx0Y29uc3Qgc2hhcmVBc0NhcmRPcHRpb25SZWYgPSB0aGlzLl9nZXRNZW51SXRlbVJlZmVyZW5jZShlbnVtU2hhcmVPcHRpb24uQ09MTEFCT1JBVElPTl9NU1RFQU1TX0NBUkQpO1xuXHRcdGlmIChzaGFyZUFzQ2FyZE9wdGlvblJlZj8uY3VycmVudCkge1xuXHRcdFx0Y29uc3QgZXhwU2hvd01TVGVhbXNPcHRpb25zID0gdGhpcy5fZ2V0U2hvd01zVGVhbXNPcHRpb25zRXhwcmVzc2lvbigpO1xuXHRcdFx0Y29uc3Qgc2hvd1NoYXJlQXNDYXJkID0gdGhpcy5tc1RlYW1zT3B0aW9ucz8uZW5hYmxlQ2FyZCA/PyB0cnVlO1xuXHRcdFx0Y29uc3Qgb3B0aW9uRXhwID0gcmVzb2x2ZUJpbmRpbmdTdHJpbmc8Ym9vbGVhbj4oc2hvd1NoYXJlQXNDYXJkLCBcImJvb2xlYW5cIik7XG5cdFx0XHRjb25zdCBpbnRlcm5hbE9wdGlvbiA9IHRoaXMuX2Jsb2NrSW50ZXJuYWxDb25maWcuZW5hYmxlQ2FyZCA/PyB0cnVlO1xuXHRcdFx0Y29uc3QgaW50ZXJuYWxPcHRpb25FeHAgPSByZXNvbHZlQmluZGluZ1N0cmluZzxib29sZWFuPihpbnRlcm5hbE9wdGlvbiwgXCJib29sZWFuXCIpO1xuXHRcdFx0Y29uc3QgZXhwU2hvd1NoYXJlQXNDYXJkID0gYW5kKG9wdGlvbkV4cCwgaW50ZXJuYWxPcHRpb25FeHApO1xuXHRcdFx0ZXhwID0gYW5kKG5vdChVSS5Jc0VkaXRhYmxlKSwgZXhwU2hvd01TVGVhbXNPcHRpb25zLCBleHBTaG93U2hhcmVBc0NhcmQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRleHAgPSBjb25zdGFudChmYWxzZSk7XG5cdFx0fVxuXHRcdHJldHVybiBleHA7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IGJpbmRpbmcgdG9vbGtpdCBleHByZXNzaW9uIGZvciBzaGFyZSBvcHRpb24ncyB2aXNpYmlsaXR5LlxuXHQgKiBAcGFyYW0gb3B0aW9uIFNoYXJlIG9wdGlvbiBrZXlcblx0ICogQHJldHVybnMgQmluZGluZyB0b29sa2l0IGV4cHJlc3Npb24uXG5cdCAqL1xuXHRfZ2V0TVNUZWFtc1NoYXJlT3B0aW9uVmlzaWJpbGl0eShvcHRpb246IFNoYXJlT3B0aW9uS2V5KTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0XHRpZiAob3B0aW9uID09PSBlbnVtU2hhcmVPcHRpb24uQ09MTEFCT1JBVElPTl9NU1RFQU1TX0NBUkQpIHtcblx0XHRcdHJldHVybiB0aGlzLl9nZXRTaGFyZUFzQ2FyZFZpc2liaWxpdHkoKTtcblx0XHR9XG5cdFx0Ly8gTm8gb3ZlcnJpZGVzIGZvciBTaGFyZSBhcyBUYWIgYW5kIENoYXQgeWV0LlxuXG5cdFx0Y29uc3QgbXNUZWFtc09wdGlvblJlZiA9IHRoaXMuX2dldE1lbnVJdGVtUmVmZXJlbmNlKG9wdGlvbik7XG5cdFx0cmV0dXJuIG1zVGVhbXNPcHRpb25SZWY/LmN1cnJlbnQgPyB0aGlzLl9nZXRTaG93TXNUZWFtc09wdGlvbnNFeHByZXNzaW9uKCkgOiBjb25zdGFudChmYWxzZSk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0IHZpc2libGl0eSBvZiBpbmRpdmlkdWFsIHNoYXJlIG9wdGlvbidzIE1lbnVJdGVtLlxuXHQgKiBAcGFyYW0gb3B0aW9uIFNoYXJlIG9wdGlvbiBrZXlcblx0ICogQHBhcmFtIGV4cHJlc3Npb24gVmlzaWJpbGl0eSBiaW5kaW5nIHRvb2xraXQgZXhwcmVzc2lvblxuXHQgKi9cblx0X3NldFNoYXJlT3B0aW9uVmlzaWJpbGl0eShvcHRpb246IFNoYXJlT3B0aW9uS2V5LCBleHByZXNzaW9uOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4pOiB2b2lkIHtcblx0XHRjb25zdCBtZW51SXRlbVJlZiA9IHRoaXMuX2dldE1lbnVJdGVtUmVmZXJlbmNlKG9wdGlvbik7XG5cdFx0aWYgKG1lbnVJdGVtUmVmPy5jdXJyZW50KSB7XG5cdFx0XHR0aGlzLl9iaW5kVUlWaXNpYmlsaXR5KG1lbnVJdGVtUmVmLmN1cnJlbnQsIGV4cHJlc3Npb24pO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBCaW5kIHRoZSBVSSBlbGVtZW50J3MgdmlzaWJpbGl0eSBwcm9wZXJ0eS5cblx0ICogQHBhcmFtIGl0ZW0gVUkgZWxlbWVudFxuXHQgKiBAcGFyYW0gZXhwcmVzc2lvbiBFeHByZXNzaW9uIHRvIGJpbmQuXG5cdCAqL1xuXHRfYmluZFVJVmlzaWJpbGl0eShpdGVtOiBNZW51QnV0dG9uIHwgTWVudUl0ZW0gfCBDb21tYW5kRXhlY3V0aW9uLCBleHByZXNzaW9uOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4pOiB2b2lkIHtcblx0XHQvLyBOT1RFOiBXZSBuZWVkIGNvbnZlcnQgdGhlIGJpbmRpbmcgdG9vbGtpdCBleHByZXNzaW9uIHRvIHRoZSBmb3JtYXQgdGhhdCBjYW4gYmUgY29uc3VtZWQgYnkgdGhlIFVJIGVsZW1lbnQuXG5cdFx0Ly8gQXQgcnVudGltZSwgd2UgY2FuJ3QgdXNlIGJpbmRpbmcgdG9vbGtpdCBleHByZXNzaW9uIG9yIGNvbXBpbGVkIGV4cHJlc3Npb24gZGlyZWN0bHkgdG8gYmluZCB0aGUgdmlzaWJpbGl0eSBvciBzZXQgdGhlIHZpc2libGUgcHJvcGVydHkgb3IgdGhlIFVJIGVsZW1lbnQuXG5cdFx0Ly8gV2Ugd291bGQgbmVlZCB0byBjb252ZXJ0IHRoZSBiaW5kaW5nIHRvb2xraXQgZXhwcmVzc2lvbiAtPiBVSTUgQmluZGluZ0luZm8gdG8gYmluZCB0aGUgVUkgZWxlbWVudC5cblx0XHRjb25zdCBjb21waWxlZEV4cCA9IGNvbXBpbGVFeHByZXNzaW9uKGV4cHJlc3Npb24pO1xuXG5cdFx0aWYgKGNvbXBpbGVkRXhwICYmIGNvbXBpbGVkRXhwLnN0YXJ0c1dpdGgoXCJ7XCIpICYmIGNvbXBpbGVkRXhwPy5lbmRzV2l0aChcIn1cIikpIHtcblx0XHRcdC8vIFByb2JhYmxlIGJpbmRpbmdcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IHBhcnNlZEV4cCA9IEJpbmRpbmdJbmZvLnBhcnNlKGNvbXBpbGVkRXhwKTtcblx0XHRcdFx0aXRlbS5iaW5kUHJvcGVydHkoXCJ2aXNpYmxlXCIsIHBhcnNlZEV4cCk7XG5cdFx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdFx0TG9nLmVycm9yKGVyciBhcyBzdHJpbmcpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoY29tcGlsZWRFeHAgPT09IFwiZmFsc2VcIikge1xuXHRcdFx0Ly8gU3RhdGljYWxseSBmYWxzZVxuXHRcdFx0aXRlbS51bmJpbmRQcm9wZXJ0eShcInZpc2libGVcIiwgdHJ1ZSk7XG5cdFx0XHRpdGVtLnNldFZpc2libGUoZmFsc2UpO1xuXHRcdH1cblx0fVxuXG5cdF9nZXRTaGFyZUJsb2NrQ29uZmlnKHZpZXc6IFZpZXcpOiBDb25maWdPcHRpb25zIHtcblx0XHRjb25zdCB2aWV3RGF0YSA9IHZpZXcuZ2V0Vmlld0RhdGEoKSBhcyBWaWV3RGF0YTtcblx0XHRjb25zdCB2aWV3U2hhcmVDb25maWdzID0gdmlld0RhdGE/LnNoYXJlO1xuXHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB2aWV3LmdldENvbnRyb2xsZXIoKSBhcyBQYWdlQ29udHJvbGxlcjtcblx0XHRjb25zdCBmZUFwcFNoYXJlQ29uZmlncyA9IGNvbnRyb2xsZXIuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0TWFuaWZlc3RFbnRyeShcInNhcC5mZVwiKT8uYXBwPy5zaGFyZTtcblxuXHRcdGNvbnN0IHNob3dTZW5kRW1haWwgPSB0aGlzLl9nZXRPcHRpb25CbG9ja0NvbmZpZyhmZUFwcFNoYXJlQ29uZmlncz8uc2hvd1NlbmRFbWFpbCwgdmlld1NoYXJlQ29uZmlncz8uc2hvd1NlbmRFbWFpbCk7XG5cdFx0Y29uc3Qgc2hvd0NvbGxhYm9yYXRpb25NYW5hZ2VyID0gdGhpcy5fZ2V0T3B0aW9uQmxvY2tDb25maWcoXG5cdFx0XHRmZUFwcFNoYXJlQ29uZmlncz8uc2hvd0NvbGxhYm9yYXRpb25NYW5hZ2VyLFxuXHRcdFx0dmlld1NoYXJlQ29uZmlncz8uc2hvd0NvbGxhYm9yYXRpb25NYW5hZ2VyXG5cdFx0KTtcblxuXHRcdGNvbnN0IHNob3dNc1RlYW1zT3B0aW9ucyA9IHRoaXMuX2dldE9wdGlvbkJsb2NrQ29uZmlnKFxuXHRcdFx0ZmVBcHBTaGFyZUNvbmZpZ3M/LnRlYW1zPy5zaG93TXNUZWFtc09wdGlvbnMsXG5cdFx0XHR2aWV3U2hhcmVDb25maWdzPy50ZWFtcz8uc2hvd01zVGVhbXNPcHRpb25zXG5cdFx0KTtcblx0XHRjb25zdCBlbmFibGVDYXJkID0gdGhpcy5fZ2V0T3B0aW9uQmxvY2tDb25maWcoZmVBcHBTaGFyZUNvbmZpZ3M/LnRlYW1zPy5hc0NhcmQsIHZpZXdTaGFyZUNvbmZpZ3M/LnRlYW1zPy5hc0NhcmQpO1xuXG5cdFx0cmV0dXJuIHsgc2hvd1NlbmRFbWFpbCwgc2hvd01zVGVhbXNPcHRpb25zLCBlbmFibGVDYXJkLCBzaG93Q29sbGFib3JhdGlvbk1hbmFnZXIgfTtcblx0fVxuXG5cdF9nZXRPcHRpb25CbG9ja0NvbmZpZyhmZUFwcFNldHRpbmc/OiBib29sZWFuIHwgc3RyaW5nLCB2aWV3TGV2ZWxTZXR0aW5nPzogYm9vbGVhbiB8IHN0cmluZyk6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHtcblx0XHRjb25zdCBmZUFwcEV4cCA9IHR5cGVvZiBmZUFwcFNldHRpbmcgPT09IFwic3RyaW5nXCIgPyByZXNvbHZlQmluZGluZ1N0cmluZzxib29sZWFuPihmZUFwcFNldHRpbmcpIDogY29uc3RhbnQoZmVBcHBTZXR0aW5nID8/IHRydWUpO1xuXHRcdGNvbnN0IHZpZXdMZXZlbEV4cCA9XG5cdFx0XHR0eXBlb2Ygdmlld0xldmVsU2V0dGluZyA9PT0gXCJzdHJpbmdcIiA/IHJlc29sdmVCaW5kaW5nU3RyaW5nPGJvb2xlYW4+KHZpZXdMZXZlbFNldHRpbmcpIDogY29uc3RhbnQodmlld0xldmVsU2V0dGluZyA/PyB0cnVlKTtcblx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oYW5kKGZlQXBwRXhwLCB2aWV3TGV2ZWxFeHApKTtcblx0fVxuXG5cdGNyZWF0ZUNvbnRlbnQoYXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQpOiBTaGFyZUFQSSB7XG5cdFx0Ly8gQ3RybCtTaGlmdCtTIGlzIG5lZWRlZCBmb3IgdGhlIHRpbWUgYmVpbmcgYnV0IHRoaXMgbmVlZHMgdG8gYmUgcmVtb3ZlZCBhZnRlciBiYWNrbG9nIGZyb20gbWVudSBidXR0b25cblx0XHRjb25zdCBtZW51QnV0dG9uID0gKFxuXHRcdFx0PFNoYXJlQVBJIGlkPXt0aGlzLnNoYXJlQVBJSWR9PlxuXHRcdFx0XHQ8T3ZlcmZsb3dUb29sYmFyTWVudUJ1dHRvblxuXHRcdFx0XHRcdHRleHQ9e1wie3NhcC5mZS5pMThuPk1fQ09NTU9OX1NBUEZFX0FDVElPTl9TSEFSRX1cIn1cblx0XHRcdFx0XHRyZWY9e3RoaXMubWVudUJ1dHRvbn1cblx0XHRcdFx0XHRpY29uPXtcInNhcC1pY29uOi8vYWN0aW9uXCJ9XG5cdFx0XHRcdFx0dG9vbHRpcD17XCJ7c2FwLmZlLmkxOG4+TV9DT01NT05fU0FQRkVfQUNUSU9OX1NIQVJFfSAoQ3RybCtTaGlmdCtTKVwifVxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0PE1lbnUgcmVmPXt0aGlzLm1lbnV9PjwvTWVudT5cblx0XHRcdFx0PC9PdmVyZmxvd1Rvb2xiYXJNZW51QnV0dG9uPlxuXHRcdFx0PC9TaGFyZUFQST5cblx0XHQpIGFzIFNoYXJlQVBJO1xuXHRcdHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKVxuXHRcdFx0LmdldFZpZXcoKVxuXHRcdFx0LmFkZERlcGVuZGVudChcblx0XHRcdFx0PENvbW1hbmRFeGVjdXRpb25cblx0XHRcdFx0XHRyZWY9e3RoaXMuY21kRXhlY3V0aW9ufVxuXHRcdFx0XHRcdGNvbW1hbmQ9XCJTaGFyZVwiXG5cdFx0XHRcdFx0ZXhlY3V0ZT17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5tZW51QnV0dG9uLmN1cnJlbnQ/LmdldE1lbnUoKS5vcGVuQnkodGhpcy5tZW51QnV0dG9uLmN1cnJlbnQsIHRydWUpO1xuXHRcdFx0XHRcdH19XG5cdFx0XHRcdC8+XG5cdFx0XHQpO1xuXHRcdC8vIFRoZSBpbml0aWFsaXphdGlvbiBpcyBhc3luY2hyb25vdXMsIHNvIHdlIGp1c3QgdHJpZ2dlciBpdCBhbmQgaG9wZSBmb3IgdGhlIGJlc3QgOkRcblx0XHR0aGlzLmlzSW5pdGlhbGl6ZWQgPSB0aGlzLl9pbml0aWFsaXplTWVudUl0ZW1zKHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKS5nZXRWaWV3KCksIGFwcENvbXBvbmVudCkuY2F0Y2goKGVycm9yKSA9PiB7XG5cdFx0XHRMb2cuZXJyb3IoZXJyb3IgYXMgc3RyaW5nKTtcblx0XHR9KTtcblxuXHRcdHRoaXMuc2V0TGF5b3V0RGF0YShcblx0XHRcdG5ldyBPdmVyZmxvd1Rvb2xiYXJMYXlvdXREYXRhKHtcblx0XHRcdFx0cHJpb3JpdHk6IHRoaXMucHJpb3JpdHlcblx0XHRcdH0pXG5cdFx0KTtcblx0XHRyZXR1cm4gbWVudUJ1dHRvbjtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHByb3BlcnRpZXMgZm9yIHRoZSBpbnRlcmZhY2UgSU92ZXJmbG93VG9vbGJhckNvbnRlbnQuXG5cdCAqIEByZXR1cm5zIFJldHVybnMgdGhlIGNvbmZpZ3VyYXRpb24gb2YgSU92ZXJmbG93VG9vbGJhckNvbnRlbnRcblx0ICovXG5cdGdldE92ZXJmbG93VG9vbGJhckNvbmZpZygpOiBvYmplY3Qge1xuXHRcdHJldHVybiB7XG5cdFx0XHRjYW5PdmVyZmxvdzogdHJ1ZSxcblx0XHRc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
|
|
969
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJlbnVtTVNUZWFtc09wdGlvbiIsIkNPTExBQk9SQVRJT05fTVNURUFNU19DQVJEIiwiQ09MTEFCT1JBVElPTl9NU1RFQU1TX1RBQiIsIkNPTExBQk9SQVRJT05fTVNURUFNU19DSEFUIiwiZW51bVNoYXJlT3B0aW9uIiwiU0VORF9FTUFJTCIsIlNIQVJFX0pBTSIsIlNBVkVfQVNfVElMRSIsIk1TX1RFQU1TX0dST1VQIiwiU0hBUkVfQ09MTEFCT1JBVElPTl9NQU5BR0VSIiwiU2hhcmUiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsInByb3BlcnR5IiwidHlwZSIsIl9kZWMzIiwiaW1wbGVtZW50SW50ZXJmYWNlIiwiX2RlYzQiLCJhZ2dyZWdhdGlvbiIsImRlZmF1bHRDbGFzcyIsIlNoYXJlT3B0aW9ucyIsImlzRGVmYXVsdCIsIl9kZWM1IiwiZGVmYXVsdFZhbHVlIiwiT3ZlcmZsb3dUb29sYmFyUHJpb3JpdHkiLCJIaWdoIiwiX2RlYzYiLCJNc1RlYW1zT3B0aW9ucyIsIl9kZWM3IiwiZGVmaW5lUmVmZXJlbmNlIiwiX2RlYzgiLCJfZGVjOSIsIl9kZWMxMCIsIl9kZWMxMSIsIl9kZWMxMiIsIl9kZWMxMyIsIl9kZWMxNCIsIl9kZWMxNSIsIl9kZWMxNiIsIl9kZWMxNyIsIl9kZWMxOCIsIl9kZWMxOSIsIl9kZWMyMCIsIl9kZWMyMSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQnVpbGRpbmdCbG9jayIsImlkT3JQcm9wcyIsInByb3BzIiwiX3RoaXMiLCJzaGFyZUFQSUlkIiwiaWQiLCJ1bmRlZmluZWQiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsIl9kZXNjcmlwdG9yMyIsIl9kZXNjcmlwdG9yNCIsIl9kZXNjcmlwdG9yNSIsIl9kZXNjcmlwdG9yNiIsIl9kZXNjcmlwdG9yNyIsIl9kZXNjcmlwdG9yOCIsIl9kZXNjcmlwdG9yOSIsIl9kZXNjcmlwdG9yMTAiLCJfZGVzY3JpcHRvcjExIiwiX2Rlc2NyaXB0b3IxMiIsIl9kZXNjcmlwdG9yMTMiLCJfZGVzY3JpcHRvcjE0IiwiX2Rlc2NyaXB0b3IxNSIsIl9kZXNjcmlwdG9yMTYiLCJfZGVzY3JpcHRvcjE3IiwiX2Rlc2NyaXB0b3IxOCIsIl9kZXNjcmlwdG9yMTkiLCJfZGVzY3JpcHRvcjIwIiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJfb3duZXJDb21wb25lbnQiLCJjb250ZW50IiwiY3JlYXRlQ29udGVudCIsImdldEFwcENvbXBvbmVudCIsIl9pbml0aWFsaXplTWVudUl0ZW1zIiwidmlldyIsImFwcENvbXBvbmVudCIsImlzVGVhbXNNb2RlQWN0aXZlIiwiZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMiLCJnZXRDYXBhYmlsaXRpZXMiLCJDb2xsYWJvcmF0aW9uIiwiZGVmYXVsdCIsIkNvbGxhYm9yYXRpb25IZWxwZXIiLCJfX3VpNV9yZXF1aXJlX2FzeW5jIiwibWVudUJ1dHRvbiIsImN1cnJlbnQiLCJ1bmJpbmRQcm9wZXJ0eSIsInNldFZpc2libGUiLCJjb250cm9sbGVyIiwiZ2V0Q29udHJvbGxlciIsInNoZWxsU2VydmljZXMiLCJnZXRTaGVsbFNlcnZpY2VzIiwiaXNQbHVnaW5JbmZvU3RhYmxlIiwid2FpdEZvclBsdWdpbnNMb2FkIiwiaW50ZXJuYWxCdXR0b24iLCJnZXRBZ2dyZWdhdGlvbiIsImF0dGFjaEV2ZW50T25jZSIsIl9ibG9ja0ludGVybmFsQ29uZmlnIiwiX2dldFNoYXJlQmxvY2tDb25maWciLCJfYWRkTWVudUl0ZW1zIiwic2V0U2hhcmVPcHRpb25zVmlzaWJpbGl0eSIsIl9hZGRTZW5kRW1haWxPcHRpb24iLCJfYWRkU2hlbGxCYXNlZE1lbnVJdGVtcyIsIl9hZGRQcmludE9wdGlvbnMiLCJfYWRkRXhwb3J0RXhjZWxPcHRpb25zIiwiX2FkZEV4cG9ydENTVk9wdGlvbnMiLCJfYWRkRXhwb3J0UERGT3B0aW9ucyIsIl9jYWxsTWFuaWZlc3RBY3Rpb25zRXZlbnRzIiwic2hhcmVPcHRpb25Qcm9wIiwidmlld0RhdGEiLCJnZXRWaWV3RGF0YSIsInNoYXJlQWN0aW9uUHJvcHMiLCJzaGFyZSIsIm1vZHVsZSIsInByZXNzIiwic3Vic3RyaW5nIiwibGFzdEluZGV4T2YiLCJyZXBsYWNlIiwibWV0aG9kIiwibGVuZ3RoIiwiRlBNSGVscGVyIiwibG9hZE1vZHVsZUFuZENhbGxNZXRob2QiLCJMb2ciLCJlcnJvciIsImhhc093blByb3BlcnR5IiwicHJpbnQiLCJtZW51IiwiYWRkSXRlbSIsIl9qc3giLCJNZW51SXRlbSIsInJlZiIsInByaW50TWVudUl0ZW0iLCJ0ZXh0IiwiZ2V0VHJhbnNsYXRlZFRleHQiLCJpY29uIiwiUFJJTlRfSUNPTiIsImV4cG9ydFRvU3ByZWFkc2hlZXRNZW51SXRlbSIsIkVYUE9SVF9UT19TUFJFQURTSEVFVF9JQ09OIiwiZXhwb3J0VG9DU1ZNZW51SXRlbSIsIkVYUE9SVF9UT19DU1ZfSUNPTiIsImV4cG9ydFRvUERGTWVudUl0ZW0iLCJFWFBPUlRfVE9fUERGX0lDT04iLCJzaGFyZU9wdGlvbnMiLCJzaG93U2VuZEVtYWlsIiwic2VuZEVtYWlsTWVudUl0ZW0iLCJfdHJpZ2dlckVtYWlsIiwiaGFzVXNoZWxsIiwiaGFzVVNoZWxsIiwiX2FkZFNoYXJlVmlhSkFNT3B0aW9uIiwiX2FkZE1TVGVhbXNPcHRpb25zIiwiX2FkZENvbGxhYm9yYXRpb25NYW5hZ2VyT3B0aW9uIiwiX2FkZFNhdmVBc1RpbGVPcHRpb24iLCJjb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlIiwiZ2V0Q29sbGFib3JhdGl2ZVRvb2xzU2VydmljZSIsImNvbGxhYm9yYXRpb25PcHRpb24iLCJnZXRDb2xsYWJvcmF0aW9uTWFuYWdlck9wdGlvbiIsInNob3dDb2xsYWJvcmF0aW9uTWFuYWdlciIsIm1lbnVJdGVtIiwic2hhcmVBc0NvbGxhYm9yYXRpb25NYW5hZ2VyIiwiZXZlbnQiLCJfY29sbGFib3JhdGlvbk1hbmFnZXJCdXR0b25QcmVzcyIsIkZFU1JIZWxwZXIiLCJzZXRTZW1hbnRpY1N0ZXBuYW1lIiwiZmVzclN0ZXBOYW1lIiwiZXJyIiwibWVzc2FnZSIsIkVycm9yIiwiU3RyaW5nIiwiY29sbGFib3JhdGlvbkNhbGxCYWNrIiwiY2xpY2tlZE1lbnVJdGVtIiwiZ2V0U291cmNlIiwiQ29tbW9uVXRpbHMiLCJnZXRUYXJnZXRWaWV3IiwiX2FkYXB0U2hhcmVNZXRhZGF0YSIsInNoYXJlSW5mb01vZGVsIiwiZ2V0TW9kZWwiLCJzaGFyZUluZm8iLCJnZXREYXRhIiwiY29sbGFib3JhdGlvbkluZm8iLCJhcHBUaXRsZSIsInVybCIsImhhc0phbSIsImlzSmFtQWN0aXZlIiwic2hhcmVWaWFKQU1NZW51SXRlbSIsIl90cmlnZ2VyU2hhcmVUb0phbSIsInNob3dNc1RlYW1zT3B0aW9ucyIsInNoYXJlQ29sbGFib3JhdGlvbk9wdGlvbnMiLCJnZXRUZWFtc0NvbGxhYk9wdGlvbnNWaWFTaGFyZSIsImlzU2hhcmVBc0NhcmRFbmFibGVkIiwiX2dldElzU2hhcmVBc0NhcmRFbmFibGVkIiwibWVudUl0ZW1TZXR0aW5ncyIsIl9nZXRNc1RlYW1zTWVudUl0ZW1TZXR0aW5ncyIsInN1Yk9wdGlvbnMiLCJpdGVtcyIsIm1lbnVJdGVtS2V5IiwiQXJyYXkiLCJpc0FycmF5Iiwia2V5IiwiX2FkZE1zVGVhbXNNZW51SXRlbSIsIkFkZEJvb2ttYXJrQnV0dG9uIiwiYWRkQm9va21hcmtCdXR0b24iLCJnZXRFbmFibGVkIiwic2F2ZUFzVGlsZU1lbnVJdGVtIiwiZ2V0VGV4dCIsImdldEljb24iLCJfc2F2ZUFzVGlsZSIsImNoaWxkcmVuIiwiZGVwZW5kZW50cyIsImRlc3Ryb3kiLCJzaG93U2hhcmVBc0NhcmQiLCJtc1RlYW1zT3B0aW9ucyIsImVuYWJsZUNhcmQiLCJCb29sZWFuIiwiQmluZGluZ0luZm8iLCJwYXJzZSIsIl9nZXRNc1RlYW1zU3ViT3B0aW9ucyIsImNvbGxhYm9yYXRpb25NZW51SXRlbVByZXNzIiwiQ3VzdG9tRGF0YSIsInZhbHVlIiwiX2dldE1lbnVJdGVtUmVmZXJlbmNlIiwiY3VzdG9tRGF0YSIsImF0dGFjaFByZXNzIiwicmVkdWNlIiwibWVudUl0ZW1zIiwic3ViT3B0aW9uIiwic3ViTWVudUl0ZW0iLCJjb2xsYWJvcmF0aW9uRGF0YSIsImRhdGEiLCJ0ZWFtc0hlbHBlclNlcnZpY2UiLCJnZXRDb2xsYWJvcmF0aW9uU2VydmljZXMiLCJvVGVhbXNIZWxwZXJTZXJ2aWNlIiwiaXNGZWF0dXJlRmxhZ0VuYWJsZWQiLCJjYXJkRGVmaW5pdGlvbiIsImdldENhcmREZWZpbml0aW9uIiwiY2FyZElkIiwic2hlbGxTZXJ2aWNlSGVscGVyIiwic2VtYW50aWNPYmplY3QiLCJhY3Rpb24iLCJwYXJzZVNoZWxsSGFzaCIsImRvY3VtZW50IiwibG9jYXRpb24iLCJoYXNoIiwicmVhc29uIiwiaW5mbyIsIm9wdGlvbktleXMiLCJPYmplY3QiLCJrZXlzIiwidmlzaWJsZUJpbmRpbmdFeHBzIiwiYmluZGluZ1Rvb2xraXRFeHBzIiwib3B0aW9uIiwiZXhwIiwiX2dldFNoYXJlT3B0aW9uVmlzaWJpbGl0eUV4cHJlc3Npb24iLCJfc2V0U2hhcmVPcHRpb25WaXNpYmlsaXR5Iiwic2hhcmVCbG9ja1Zpc2libGVFeHAiLCJvciIsImNtZEV4ZWN1dGlvbiIsIl9iaW5kVUlWaXNpYmlsaXR5Iiwic2hhcmVBc0NhcmRNZW51SXRlbSIsInNoYXJlVmlhQ2hhdE1lbnVJdGVtIiwic2hhcmVBc1RhYk1lbnVJdGVtIiwibXNUZWFtc0dyb3VwTWVudUl0ZW0iLCJvcHRpb25NZW51SXRlbVJlZiIsImNvbnN0YW50IiwiX2dldE1TVGVhbXNTaGFyZU9wdGlvblZpc2liaWxpdHkiLCJfZ2V0Q29sbGFib3JhdGlvbk9wdGlvbkV4cHJlc3Npb24iLCJyZXNvbHZlQmluZGluZ1N0cmluZyIsImludGVybmFsT3B0aW9uIiwiaXNDb25zdGFudCIsImFuZCIsIm1zVGVhbXNDb25maWdFeHAiLCJfZ2V0U2hvd01zVGVhbXNPcHRpb25zRXhwcmVzc2lvbiIsIm1zVGVhbXNPcHRpb25zVmFsdWUiLCJhbGxNU1RlYW1zT3B0aW9uc0V4cHMiLCJiaW5kaW5nVG9vbGtpdEV4cCIsIm1zVGVhbXNPcHRpb24iLCJtc1RlYW1PcHRpb25FeHAiLCJvcHRpb25FeHAiLCJpbnRlcm5hbE9wdGlvbkV4cCIsIl9nZXRTaGFyZUFzQ2FyZFZpc2liaWxpdHkiLCJzaGFyZUFzQ2FyZE9wdGlvblJlZiIsImV4cFNob3dNU1RlYW1zT3B0aW9ucyIsImV4cFNob3dTaGFyZUFzQ2FyZCIsIm5vdCIsIlVJIiwiSXNFZGl0YWJsZSIsIm1zVGVhbXNPcHRpb25SZWYiLCJleHByZXNzaW9uIiwibWVudUl0ZW1SZWYiLCJpdGVtIiwiY29tcGlsZWRFeHAiLCJjb21waWxlRXhwcmVzc2lvbiIsInN0YXJ0c1dpdGgiLCJlbmRzV2l0aCIsInBhcnNlZEV4cCIsImJpbmRQcm9wZXJ0eSIsInZpZXdTaGFyZUNvbmZpZ3MiLCJmZUFwcFNoYXJlQ29uZmlncyIsImdldE1hbmlmZXN0RW50cnkiLCJhcHAiLCJfZ2V0T3B0aW9uQmxvY2tDb25maWciLCJ0ZWFtcyIsImFzQ2FyZCIsImZlQXBwU2V0dGluZyIsInZpZXdMZXZlbFNldHRpbmciLCJmZUFwcEV4cCIsInZpZXdMZXZlbEV4cCIsIlNoYXJlQVBJIiwiT3ZlcmZsb3dUb29sYmFyTWVudUJ1dHRvbiIsInRvb2x0aXAiLCJNZW51IiwiZ2V0UGFnZUNvbnRyb2xsZXIiLCJnZXRWaWV3IiwiYWRkRGVwZW5kZW50IiwiQ29tbWFuZEV4ZWN1dGlvbiIsImNvbW1hbmQiLCJleGVjdXRlIiwiZ2V0TWVudSIsIm9wZW5CeSIsImlzSW5pdGlhbGl6ZWQiLCJjYXRjaCIsInNldExheW91dERhdGEiLCJPdmVyZmxvd1Rvb2xiYXJMYXlvdXREYXRhIiwicHJpb3JpdHkiLCJnZXRPdmVyZmxvd1Rvb2xiYXJDb25maWciLCJjYW5PdmVyZmxvdyIsIm9uQmVmb3JlRW50ZXJPdmVyZmxvdyIsIm9Db250cm9sIiwiZ2V0Q29udGVudCIsInJlc291cmNlTW9kZWwiLCJnZXRSZXNvdXJjZU1vZGVsIiwib25BZnRlckV4aXRPdmVyZmxvdyIsIkJ1aWxkaW5nQmxvY2siLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlNoYXJlLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIHsgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiwgRW1iZWRkZWRVSTVCaW5kaW5nRXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgYW5kLCBjb21waWxlRXhwcmVzc2lvbiwgY29uc3RhbnQsIGlzQ29uc3RhbnQsIG5vdCwgb3IsIHJlc29sdmVCaW5kaW5nU3RyaW5nIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBkZWZpbmVSZWZlcmVuY2UsIGRlZmluZVVJNUNsYXNzLCBpbXBsZW1lbnRJbnRlcmZhY2UsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvanN4LXJ1bnRpbWUvanN4XCI7XG5pbXBvcnQgdHlwZSBBcHBDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgQ29tbWFuZEV4ZWN1dGlvbiBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbHMvQ29tbWFuZEV4ZWN1dGlvblwiO1xuaW1wb3J0IHsgVUkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IElTaGVsbFNlcnZpY2VzIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1NoZWxsU2VydmljZXNGYWN0b3J5XCI7XG5pbXBvcnQgTWVudSBmcm9tIFwic2FwL20vTWVudVwiO1xuaW1wb3J0IHR5cGUgTWVudUJ1dHRvbiBmcm9tIFwic2FwL20vTWVudUJ1dHRvblwiO1xuaW1wb3J0IHR5cGUgeyAkTWVudUl0ZW1TZXR0aW5ncyB9IGZyb20gXCJzYXAvbS9NZW51SXRlbVwiO1xuaW1wb3J0IE1lbnVJdGVtIGZyb20gXCJzYXAvbS9NZW51SXRlbVwiO1xuaW1wb3J0IHR5cGUgeyBDb2xsYWJvcmF0aW9uT3B0aW9uS2V5LCBDb2xsYWJvcmF0aW9uT3B0aW9ucyB9IGZyb20gXCJzYXAvc3VpdGUvdWkvY29tbW9ucy9jb2xsYWJvcmF0aW9uL1RlYW1zSGVscGVyU2VydmljZVwiO1xuaW1wb3J0IHR5cGUgVUk1RXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgdHlwZSBNYW5hZ2VkT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgQ3VzdG9tRGF0YSBmcm9tIFwic2FwL3VpL2NvcmUvQ3VzdG9tRGF0YVwiO1xuaW1wb3J0IHR5cGUgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCB0eXBlIEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgRkVTUkhlbHBlciBmcm9tIFwic2FwL3VpL3BlcmZvcm1hbmNlL3RyYWNlL0ZFU1JIZWxwZXJcIjtcblxuaW1wb3J0IHR5cGUgVGVtcGxhdGVDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL1RlbXBsYXRlQ29tcG9uZW50XCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9jayBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1wiO1xuaW1wb3J0IHtcblx0RVhQT1JUX1RPX0NTVl9JQ09OLFxuXHRFWFBPUlRfVE9fUERGX0lDT04sXG5cdEVYUE9SVF9UT19TUFJFQURTSEVFVF9JQ09OLFxuXHRQUklOVF9JQ09OXG59IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9BY3Rpb25cIjtcbmltcG9ydCBGUE1IZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvRlBNSGVscGVyXCI7XG5pbXBvcnQgeyBnZXRSZXNvdXJjZU1vZGVsIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvUmVzb3VyY2VNb2RlbEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBWaWV3RGF0YSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9UZW1wbGF0ZWRWaWV3U2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCBTaGFyZU9wdGlvbnMgZnJvbSBcInNhcC9mZS9tYWNyb3Mvc2hhcmUvU2hhcmVPcHRpb25zXCI7XG5pbXBvcnQgT3ZlcmZsb3dUb29sYmFyTGF5b3V0RGF0YSBmcm9tIFwic2FwL20vT3ZlcmZsb3dUb29sYmFyTGF5b3V0RGF0YVwiO1xuaW1wb3J0IE92ZXJmbG93VG9vbGJhck1lbnVCdXR0b24gZnJvbSBcInNhcC9tL092ZXJmbG93VG9vbGJhck1lbnVCdXR0b25cIjtcbmltcG9ydCB7IE92ZXJmbG93VG9vbGJhclByaW9yaXR5IH0gZnJvbSBcInNhcC9tL2xpYnJhcnlcIjtcbmltcG9ydCBCaW5kaW5nSW5mbyBmcm9tIFwic2FwL3VpL2Jhc2UvQmluZGluZ0luZm9cIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgTXNUZWFtc09wdGlvbnMgZnJvbSBcIi4vc2hhcmUvTXNUZWFtc09wdGlvbnNcIjtcbmltcG9ydCBTaGFyZUFQSSBmcm9tIFwiLi9zaGFyZS9TaGFyZUFQSVwiO1xuXG4vLyBNUyBUZWFtcyBvcHRpb25zIGFyZSBub3QgcHVibGljIHZpYSBTaGFyZSBidWlsZGluZyBibG9jay5cbi8vIFNvLCAnc2hvd01zVGVhbXNPcHRpb25zJyBpcyBpbnRlcm5hbCBhbmQgc2hhbGwgYmUgb25seSBwaWNrZWQgZnJvbSB0ZW1wbGF0ZSBtYW5pZmVzdC5cbnR5cGUgSW50ZXJuYWxTaGFyZU9wdGlvbnMgPSBQcm9wZXJ0aWVzT2Y8U2hhcmVPcHRpb25zPjtcblxudHlwZSBTaGFyZU9wdGlvbktleSA9XG5cdHwgQ29sbGFib3JhdGlvbk9wdGlvbktleVxuXHR8IFwiU0VORF9FTUFJTFwiXG5cdHwgXCJTSEFSRV9KQU1cIlxuXHR8IFwiU0FWRV9BU19USUxFXCJcblx0fCBcIk1TX1RFQU1TX0dST1VQXCJcblx0fCBcIlNIQVJFX0NPTExBQk9SQVRJT05fTUFOQUdFUlwiO1xuXG5jb25zdCBlbnVtTVNUZWFtc09wdGlvbjoge1xuXHRba2V5IGluIENvbGxhYm9yYXRpb25PcHRpb25LZXldOiBDb2xsYWJvcmF0aW9uT3B0aW9uS2V5O1xufSA9IHtcblx0Q09MTEFCT1JBVElPTl9NU1RFQU1TX0NBUkQ6IFwiQ09MTEFCT1JBVElPTl9NU1RFQU1TX0NBUkRcIixcblx0Q09MTEFCT1JBVElPTl9NU1RFQU1TX1RBQjogXCJDT0xMQUJPUkFUSU9OX01TVEVBTVNfVEFCXCIsXG5cdENPTExBQk9SQVRJT05fTVNURUFNU19DSEFUOiBcIkNPTExBQk9SQVRJT05fTVNURUFNU19DSEFUXCJcbn07XG5cbmNvbnN0IGVudW1TaGFyZU9wdGlvbjoge1xuXHRba2V5IGluIFNoYXJlT3B0aW9uS2V5XTogU2hhcmVPcHRpb25LZXk7XG59ID0ge1xuXHQuLi5lbnVtTVNUZWFtc09wdGlvbixcblx0Li4ue1xuXHRcdFNFTkRfRU1BSUw6IFwiU0VORF9FTUFJTFwiLFxuXHRcdFNIQVJFX0pBTTogXCJTSEFSRV9KQU1cIixcblx0XHRTQVZFX0FTX1RJTEU6IFwiU0FWRV9BU19USUxFXCIsXG5cdFx0TVNfVEVBTVNfR1JPVVA6IFwiTVNfVEVBTVNfR1JPVVBcIixcblx0XHRTSEFSRV9DT0xMQUJPUkFUSU9OX01BTkFHRVI6IFwiU0hBUkVfQ09MTEFCT1JBVElPTl9NQU5BR0VSXCJcblx0fVxufTtcblxudHlwZSBDb25maWdPcHRpb25zID0gSW50ZXJuYWxTaGFyZU9wdGlvbnMgJiBQcm9wZXJ0aWVzT2Y8TXNUZWFtc09wdGlvbnM+O1xuXG4vKipcbiAqIEJ1aWxkaW5nIGJsb2NrIHVzZWQgdG8gY3JlYXRlIHRoZSDigJhTaGFyZeKAmSBmdW5jdGlvbmFsaXR5LlxuICogPGJyPlxuICogUGxlYXNlIG5vdGUgdGhhdCB0aGUgJ1NoYXJlIGluIFNBUCBKYW0nIG9wdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbiBwbGF0Zm9ybXMgdGhhdCBhcmUgaW50ZWdyYXRlZCB3aXRoIFNBUCBKYW0uXG4gKiA8YnI+XG4gKiBJZiB5b3UgYXJlIGNvbnN1bWluZyB0aGlzIG1hY3JvIGluIGFuIGVudmlyb25tZW50IHdoZXJlIHRoZSBTQVAgRmlvcmkgbGF1bmNocGFkIGlzIG5vdCBhdmFpbGFibGUsIHRoZW4gdGhlICdTYXZlIGFzIFRpbGUnIG9wdGlvbiBpcyBub3QgdmlzaWJsZS5cbiAqXG4gKlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqIDxwcmU+XG4gKiAmbHQ7bWFjcm9zOlNoYXJlXG4gKiBpZD1cInNvbWVJRFwiXG4gKiB2aXNpYmxlPVwidHJ1ZVwiXG4gKiAvJmd0O1xuICogPC9wcmU+XG4gKiB7QGxpbmsgZGVtbzpzYXAvZmUvY29yZS9mcG1FeHBsb3Jlci9pbmRleC5odG1sIy9idWlsZGluZ0Jsb2Nrcy9mZWF0dXJlcy9zaGFyZURlZmF1bHQgT3ZlcnZpZXcgb2YgQnVpbGRpbmcgQmxvY2tzfVxuICogQGhpZGVjb25zdHJ1Y3RvclxuICogQHB1YmxpY1xuICogQHNpbmNlIDEuOTMuMFxuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUubWFjcm9zLlNoYXJlXCIpXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTaGFyZSBleHRlbmRzIEJ1aWxkaW5nQmxvY2s8U2hhcmVBUEk+IHtcblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRwdWJsaWMgc2hhcmVBUElJZD86IHN0cmluZztcblxuXHRAaW1wbGVtZW50SW50ZXJmYWNlKFwic2FwLm0uSU92ZXJmbG93VG9vbGJhckNvbnRlbnRcIilcblx0X19pbXBsZW1lbnRzX19zYXBfbV9JT3ZlcmZsb3dUb29sYmFyQ29udGVudCA9IHRydWU7XG5cblx0LyoqXG5cdCAqIFN1cHBvcnRlZCBTaGFyZSBvcHRpb25zIHtAbGluayBzYXAuZmUubWFjcm9zLnNoYXJlLlNoYXJlT3B0aW9uc30uXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBhZ2dyZWdhdGlvbih7XG5cdFx0dHlwZTogXCJzYXAuZmUubWFjcm9zLnNoYXJlLlNoYXJlT3B0aW9uc1wiLFxuXHRcdGRlZmF1bHRDbGFzczogU2hhcmVPcHRpb25zLFxuXHRcdGlzRGVmYXVsdDogdHJ1ZVxuXHR9KVxuXHRwdWJsaWMgc2hhcmVPcHRpb25zPzogU2hhcmVPcHRpb25zO1xuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRkZWZhdWx0VmFsdWU6IE92ZXJmbG93VG9vbGJhclByaW9yaXR5LkhpZ2hcblx0fSlcblx0cHJpb3JpdHk/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFN1cHBvcnRlZCBNaWNyb3NvZnQgVGVhbXMgb3B0aW9ucy5cblx0ICovXG5cdEBhZ2dyZWdhdGlvbih7XG5cdFx0dHlwZTogXCJzYXAuZmUubWFjcm9zLnNoYXJlLk1zVGVhbXNPcHRpb25zXCIsXG5cdFx0ZGVmYXVsdENsYXNzOiBNc1RlYW1zT3B0aW9uc1xuXHR9KVxuXHRwdWJsaWMgbXNUZWFtc09wdGlvbnM/OiBNc1RlYW1zT3B0aW9ucztcblxuXHRAZGVmaW5lUmVmZXJlbmNlKClcblx0bWVudUJ1dHRvbiE6IFJlZjxNZW51QnV0dG9uPjtcblxuXHRAZGVmaW5lUmVmZXJlbmNlKClcblx0Y21kRXhlY3V0aW9uITogUmVmPENvbW1hbmRFeGVjdXRpb24+O1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRtZW51ITogUmVmPE1lbnU+O1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRzYXZlQXNUaWxlTWVudUl0ZW0hOiBSZWY8TWVudUl0ZW0+O1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRzaGFyZUFzQ29sbGFib3JhdGlvbk1hbmFnZXIhOiBSZWY8TWVudUl0ZW0+O1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRzaGFyZVZpYUpBTU1lbnVJdGVtITogUmVmPE1lbnVJdGVtPjtcblxuXHRAZGVmaW5lUmVmZXJlbmNlKClcblx0c2VuZEVtYWlsTWVudUl0ZW0hOiBSZWY8TWVudUl0ZW0+O1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRzaGFyZUFzQ2FyZE1lbnVJdGVtITogUmVmPE1lbnVJdGVtPjtcblxuXHRAZGVmaW5lUmVmZXJlbmNlKClcblx0c2hhcmVWaWFDaGF0TWVudUl0ZW0hOiBSZWY8TWVudUl0ZW0+O1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRzaGFyZUFzVGFiTWVudUl0ZW0hOiBSZWY8TWVudUl0ZW0+O1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRtc1RlYW1zR3JvdXBNZW51SXRlbSE6IFJlZjxNZW51SXRlbT47XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdHByaW50TWVudUl0ZW0hOiBSZWY8TWVudUl0ZW0+O1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRleHBvcnRUb1NwcmVhZHNoZWV0TWVudUl0ZW0hOiBSZWY8TWVudUl0ZW0+O1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRleHBvcnRUb1BERk1lbnVJdGVtITogUmVmPE1lbnVJdGVtPjtcblxuXHRAZGVmaW5lUmVmZXJlbmNlKClcblx0ZXhwb3J0VG9DU1ZNZW51SXRlbSE6IFJlZjxNZW51SXRlbT47XG5cblx0cHVibGljIGlzSW5pdGlhbGl6ZWQ/OiBQcm9taXNlPHZvaWQ+O1xuXG5cdHByaXZhdGUgX2Jsb2NrSW50ZXJuYWxDb25maWchOiBDb25maWdPcHRpb25zO1xuXG5cdGNvbnN0cnVjdG9yKGlkT3JQcm9wczogc3RyaW5nIHwgKFByb3BlcnRpZXNPZjxTaGFyZT4gJiAkQ29udHJvbFNldHRpbmdzKSwgcHJvcHM/OiBQcm9wZXJ0aWVzT2Y8U2hhcmU+ICYgJENvbnRyb2xTZXR0aW5ncykge1xuXHRcdGxldCBzaGFyZUFQSUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdFx0aWYgKHR5cGVvZiBpZE9yUHJvcHMgIT09IFwic3RyaW5nXCIpIHtcblx0XHRcdHByb3BzID0gaWRPclByb3BzO1xuXHRcdFx0c2hhcmVBUElJZCA9IHByb3BzLmlkO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzaGFyZUFQSUlkID0gaWRPclByb3BzO1xuXHRcdH1cblx0XHRwcm9wcyA/Pz0ge307XG5cdFx0cHJvcHMuc2hhcmVBUElJZCA9IHNoYXJlQVBJSWQ7XG5cdFx0cHJvcHMuaWQgPSB1bmRlZmluZWQ7XG5cdFx0c3VwZXIodW5kZWZpbmVkLCBwcm9wcyk7XG5cdH1cblxuXHRvbk1ldGFkYXRhQXZhaWxhYmxlKF9vd25lckNvbXBvbmVudDogVGVtcGxhdGVDb21wb25lbnQpOiB2b2lkIHtcblx0XHRzdXBlci5vbk1ldGFkYXRhQXZhaWxhYmxlKF9vd25lckNvbXBvbmVudCk7XG5cdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KF9vd25lckNvbXBvbmVudC5nZXRBcHBDb21wb25lbnQoKSk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBzaGFyZSBvcHRpb24gZnJvbSB0aGUgc2hlbGwgY29uZmlndXJhdGlvbiBhc3luY2hyb25vdXNseSBhbmQgcHJlcGFyZSB0aGUgY29udGVudCBvZiB0aGUgbWVudSBidXR0b24uXG5cdCAqIE9wdGlvbnMgb3JkZXIgYXJlOlxuXHQgKiAtIFNlbmQgYXMgRW1haWxcblx0ICogLSBTaGFyZSBhcyBKYW0gKGlmIGF2YWlsYWJsZSlcblx0ICogLSBUZWFtcyBvcHRpb25zIChpZiBhdmFpbGFibGUpXG5cdCAqIC0gU2F2ZSBhcyB0aWxlLlxuXHQgKiBAcGFyYW0gdmlldyBUaGUgdmlldyB0aGlzIGJ1aWxkaW5nIGJsb2NrIGlzIHVzZWQgaW5cblx0ICogQHBhcmFtIGFwcENvbXBvbmVudCBUaGUgQXBwQ29tcG9uZW50IGluc3RhbmNlXG5cdCAqL1xuXHRhc3luYyBfaW5pdGlhbGl6ZU1lbnVJdGVtcyh2aWV3OiBWaWV3LCBhcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGxldCBpc1RlYW1zTW9kZUFjdGl2ZSA9IGZhbHNlO1xuXHRcdGlmIChhcHBDb21wb25lbnQuZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKS5nZXRDYXBhYmlsaXRpZXMoKS5Db2xsYWJvcmF0aW9uKSB7XG5cdFx0XHRjb25zdCB7IGRlZmF1bHQ6IENvbGxhYm9yYXRpb25IZWxwZXIgfSA9IGF3YWl0IGltcG9ydChcInNhcC9zdWl0ZS91aS9jb21tb25zL2NvbGxhYm9yYXRpb24vQ29sbGFib3JhdGlvbkhlbHBlclwiKTtcblx0XHRcdGlzVGVhbXNNb2RlQWN0aXZlID0gYXdhaXQgQ29sbGFib3JhdGlvbkhlbHBlci5pc1RlYW1zTW9kZUFjdGl2ZSgpO1xuXHRcdH1cblxuXHRcdGlmIChpc1RlYW1zTW9kZUFjdGl2ZSkge1xuXHRcdFx0Ly9uZWVkIHRvIGNsZWFyIHRoZSB2aXNpYmxlIHByb3BlcnR5IGJpbmRpbmdzIG90aGVyd2lzZSB3aGVuIHRoZSBiaW5kaW5nIHZhbHVlIGNoYW5nZXMgdGhlbiBpdCB3aWxsIHNldCBiYWNrIHRoZSB2aXNpYmxlIHRvIHRoZSByZXNvbHZlZCB2YWx1ZVxuXHRcdFx0dGhpcy5tZW51QnV0dG9uLmN1cnJlbnQ/LnVuYmluZFByb3BlcnR5KFwidmlzaWJsZVwiLCB0cnVlKTtcblx0XHRcdHRoaXMubWVudUJ1dHRvbi5jdXJyZW50Py5zZXRWaXNpYmxlKGZhbHNlKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgY29udHJvbGxlciA9IHZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIFBhZ2VDb250cm9sbGVyO1xuXHRcdGNvbnN0IHNoZWxsU2VydmljZXMgPSBhcHBDb21wb25lbnQuZ2V0U2hlbGxTZXJ2aWNlcygpO1xuXHRcdGNvbnN0IGlzUGx1Z2luSW5mb1N0YWJsZSA9IGF3YWl0IHNoZWxsU2VydmljZXMud2FpdEZvclBsdWdpbnNMb2FkKCk7XG5cdFx0aWYgKCFpc1BsdWdpbkluZm9TdGFibGUpIHtcblx0XHRcdC8vIEluIGNhc2UgdGhlIHBsdWdpbiBpbmZvIGlzIG5vdCB5ZXQgYXZhaWxhYmxlIHdlIG5lZWQgdG8gZG8gdGhpcyBjb21wdXRhdGlvbiBhZ2FpbiBvbiB0aGUgbmV4dCBidXR0b24gY2xpY2tcblx0XHRcdGNvbnN0IGludGVybmFsQnV0dG9uID0gdGhpcy5tZW51QnV0dG9uLmN1cnJlbnQ/LmdldEFnZ3JlZ2F0aW9uKFwiX2NvbnRyb2xcIikgYXMgTWFuYWdlZE9iamVjdDtcblx0XHRcdGludGVybmFsQnV0dG9uPy5hdHRhY2hFdmVudE9uY2UoXCJwcmVzc1wiLCB7fSwgKCkgPT4gdGhpcy5faW5pdGlhbGl6ZU1lbnVJdGVtcywgdGhpcyk7XG5cdFx0fVxuXG5cdFx0dGhpcy5fYmxvY2tJbnRlcm5hbENvbmZpZyA9IHRoaXMuX2dldFNoYXJlQmxvY2tDb25maWcodmlldyk7XG5cblx0XHRhd2FpdCB0aGlzLl9hZGRNZW51SXRlbXMoY29udHJvbGxlciwgc2hlbGxTZXJ2aWNlcywgdmlldyk7XG5cdFx0dGhpcy5zZXRTaGFyZU9wdGlvbnNWaXNpYmlsaXR5KCk7XG5cdH1cblxuXHQvKipcblx0ICogQWRkIHNoYXJlIG9wdGlvbnMgYXMgbWVudSBpdGVtcyB0byB0aGUgc2hhcmUgYnV0dG9uLlxuXHQgKiBAcGFyYW0gY29udHJvbGxlciBQYWdlIGNvbnRyb2xsZXJcblx0ICogQHBhcmFtIHNoZWxsU2VydmljZXMgU2hlbGwgU2VydmljZXNcblx0ICogQHBhcmFtIHZpZXcgVGhlIHZpZXcgdGhpcyBidWlsZGluZyBibG9jayBpcyB1c2VkIGluXG5cdCAqL1xuXHRhc3luYyBfYWRkTWVudUl0ZW1zKGNvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLCBzaGVsbFNlcnZpY2VzOiBJU2hlbGxTZXJ2aWNlcywgdmlldzogVmlldyk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRoaXMuX2FkZFNlbmRFbWFpbE9wdGlvbihjb250cm9sbGVyKTtcblx0XHRhd2FpdCB0aGlzLl9hZGRTaGVsbEJhc2VkTWVudUl0ZW1zKGNvbnRyb2xsZXIsIHNoZWxsU2VydmljZXMpO1xuXHRcdHRoaXMuX2FkZFByaW50T3B0aW9ucyhjb250cm9sbGVyLCB2aWV3KTtcblx0XHR0aGlzLl9hZGRFeHBvcnRFeGNlbE9wdGlvbnMoY29udHJvbGxlciwgdmlldyk7XG5cdFx0dGhpcy5fYWRkRXhwb3J0Q1NWT3B0aW9ucyhjb250cm9sbGVyLCB2aWV3KTtcblx0XHR0aGlzLl9hZGRFeHBvcnRQREZPcHRpb25zKGNvbnRyb2xsZXIsIHZpZXcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENhbGwgdGhlIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIGN1c3RvbSBoYW5kbGVycy5cblx0ICogQHBhcmFtIGNvbnRyb2xsZXIgUGFnZSBjb250cm9sbGVyXG5cdCAqIEBwYXJhbSB2aWV3IFRoZSB2aWV3IHRoaXMgYnVpbGRpbmcgYmxvY2sgaXMgdXNlZCBpblxuXHQgKiBAcGFyYW0gc2hhcmVPcHRpb25Qcm9wIFRoZSBrZXkgb2YgdGhlIGFjdGlvbiB5b3Ugd2FudCB0byBjYWxsXG5cdCAqL1xuXHRfY2FsbE1hbmlmZXN0QWN0aW9uc0V2ZW50cyhcblx0XHRjb250cm9sbGVyOiBQYWdlQ29udHJvbGxlcixcblx0XHR2aWV3OiBWaWV3LFxuXHRcdHNoYXJlT3B0aW9uUHJvcDogXCJwcmludFwiIHwgXCJleHBvcnRUb0NTVlwiIHwgXCJleHBvcnRUb1NwcmVhZHNoZWV0XCIgfCBcImV4cG9ydFRvUERGXCJcblx0KTogdm9pZCB7XG5cdFx0Y29uc3Qgdmlld0RhdGEgPSB2aWV3LmdldFZpZXdEYXRhKCkgYXMgVmlld0RhdGE7XG5cdFx0Y29uc3Qgc2hhcmVBY3Rpb25Qcm9wcyA9IHZpZXdEYXRhPy5zaGFyZT8uW3NoYXJlT3B0aW9uUHJvcF07XG5cdFx0Y29uc3QgbW9kdWxlID0gc2hhcmVBY3Rpb25Qcm9wcz8ucHJlc3M/LnN1YnN0cmluZygwLCBzaGFyZUFjdGlvblByb3BzPy5wcmVzcz8ubGFzdEluZGV4T2YoXCIuXCIpKS5yZXBsYWNlKC9cXC4vZ2ksIFwiL1wiKTtcblx0XHRjb25zdCBtZXRob2QgPSBzaGFyZUFjdGlvblByb3BzPy5wcmVzcz8uc3Vic3RyaW5nKHNoYXJlQWN0aW9uUHJvcHM/LnByZXNzPy5sYXN0SW5kZXhPZihcIi5cIikgKyAxLCBzaGFyZUFjdGlvblByb3BzPy5wcmVzcz8ubGVuZ3RoKTtcblxuXHRcdGlmIChtb2R1bGUgJiYgbWV0aG9kKSB7XG5cdFx0XHRGUE1IZWxwZXIubG9hZE1vZHVsZUFuZENhbGxNZXRob2QobW9kdWxlLCBtZXRob2QsIHZpZXcsIGNvbnRyb2xsZXIpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJGYWlsZWQgdG8gY2FsbCBldmVudCBoYW5kbGVyLCBNb2R1bGUgYW5kL29yIE1ldGhvZCBpcyBub3Qgc2V0IHByb3Blcmx5XCIpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBBZGQgcHJpbnQgb3B0aW9uIHRvIG1lbnUgYnV0dG9uLlxuXHQgKiBAcGFyYW0gY29udHJvbGxlciBQYWdlIGNvbnRyb2xsZXJcblx0ICogQHBhcmFtIHZpZXcgVGhlIHZpZXcgdGhpcyBidWlsZGluZyBibG9jayBpcyB1c2VkIGluXG5cdCAqL1xuXHRfYWRkUHJpbnRPcHRpb25zKGNvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLCB2aWV3OiBWaWV3KTogdm9pZCB7XG5cdFx0Y29uc3Qgdmlld0RhdGEgPSB2aWV3LmdldFZpZXdEYXRhKCkgYXMgVmlld0RhdGE7XG5cdFx0aWYgKHZpZXdEYXRhPy5zaGFyZT8uaGFzT3duUHJvcGVydHkoXCJwcmludFwiKSA9PT0gdHJ1ZSAmJiB2aWV3RGF0YT8uc2hhcmU/LnByaW50Py5oYXNPd25Qcm9wZXJ0eShcInByZXNzXCIpID09PSB0cnVlKSB7XG5cdFx0XHR0aGlzPy5tZW51Py5jdXJyZW50Py5hZGRJdGVtKFxuXHRcdFx0XHQ8TWVudUl0ZW1cblx0XHRcdFx0XHRyZWY9e3RoaXMucHJpbnRNZW51SXRlbX1cblx0XHRcdFx0XHR0ZXh0PXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiVF9TSEFSRV9DT05UUk9MX1BSSU5UXCIpfVxuXHRcdFx0XHRcdGljb249e1BSSU5UX0lDT059XG5cdFx0XHRcdFx0cHJlc3M9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdHRoaXMuX2NhbGxNYW5pZmVzdEFjdGlvbnNFdmVudHMoY29udHJvbGxlciwgdmlldywgXCJwcmludFwiKTtcblx0XHRcdFx0XHR9fVxuXHRcdFx0XHQvPlxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQWRkIEV4cG9ydCBhcyBFeGNlbCBvcHRpb24gdG8gbWVudSBidXR0b24uXG5cdCAqIEBwYXJhbSBjb250cm9sbGVyIFBhZ2UgY29udHJvbGxlclxuXHQgKiBAcGFyYW0gdmlldyBUaGUgdmlldyB0aGlzIGJ1aWxkaW5nIGJsb2NrIGlzIHVzZWQgaW5cblx0ICovXG5cdF9hZGRFeHBvcnRFeGNlbE9wdGlvbnMoY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIsIHZpZXc6IFZpZXcpOiB2b2lkIHtcblx0XHRjb25zdCB2aWV3RGF0YSA9IHZpZXcuZ2V0Vmlld0RhdGEoKSBhcyBWaWV3RGF0YTtcblx0XHRpZiAodmlld0RhdGE/LnNoYXJlPy5oYXNPd25Qcm9wZXJ0eShcImV4cG9ydFRvU3ByZWFkc2hlZXRcIikgPT09IHRydWUgJiYgdmlld0RhdGE/LnNoYXJlPy5wcmludD8uaGFzT3duUHJvcGVydHkoXCJwcmVzc1wiKSA9PT0gdHJ1ZSkge1xuXHRcdFx0dGhpcz8ubWVudT8uY3VycmVudD8uYWRkSXRlbShcblx0XHRcdFx0PE1lbnVJdGVtXG5cdFx0XHRcdFx0cmVmPXt0aGlzLmV4cG9ydFRvU3ByZWFkc2hlZXRNZW51SXRlbX1cblx0XHRcdFx0XHR0ZXh0PXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiVF9TSEFSRV9DT05UUk9MX0VYUE9SVF9BU19FWENFTFwiKX1cblx0XHRcdFx0XHRpY29uPXtFWFBPUlRfVE9fU1BSRUFEU0hFRVRfSUNPTn1cblx0XHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5fY2FsbE1hbmlmZXN0QWN0aW9uc0V2ZW50cyhjb250cm9sbGVyLCB2aWV3LCBcImV4cG9ydFRvU3ByZWFkc2hlZXRcIik7XG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0Lz5cblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEFkZCBFeHBvcnQgYXMgQ1NWIG9wdGlvbiB0byBtZW51IGJ1dHRvbi5cblx0ICogQHBhcmFtIGNvbnRyb2xsZXIgUGFnZSBjb250cm9sbGVyXG5cdCAqIEBwYXJhbSB2aWV3IFRoZSB2aWV3IHRoaXMgYnVpbGRpbmcgYmxvY2sgaXMgdXNlZCBpblxuXHQgKi9cblx0X2FkZEV4cG9ydENTVk9wdGlvbnMoY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIsIHZpZXc6IFZpZXcpOiB2b2lkIHtcblx0XHRjb25zdCB2aWV3RGF0YSA9IHZpZXcuZ2V0Vmlld0RhdGEoKSBhcyBWaWV3RGF0YTtcblx0XHRpZiAodmlld0RhdGE/LnNoYXJlPy5oYXNPd25Qcm9wZXJ0eShcImV4cG9ydFRvQ1NWXCIpID09PSB0cnVlICYmIHZpZXdEYXRhPy5zaGFyZT8ucHJpbnQ/Lmhhc093blByb3BlcnR5KFwicHJlc3NcIikgPT09IHRydWUpIHtcblx0XHRcdHRoaXM/Lm1lbnU/LmN1cnJlbnQ/LmFkZEl0ZW0oXG5cdFx0XHRcdDxNZW51SXRlbVxuXHRcdFx0XHRcdHJlZj17dGhpcy5leHBvcnRUb0NTVk1lbnVJdGVtfVxuXHRcdFx0XHRcdHRleHQ9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJUX1NIQVJFX0NPTlRST0xfRVhQT1JUX0FTX0NTVlwiKX1cblx0XHRcdFx0XHRpY29uPXtFWFBPUlRfVE9fQ1NWX0lDT059XG5cdFx0XHRcdFx0cHJlc3M9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdHRoaXMuX2NhbGxNYW5pZmVzdEFjdGlvbnNFdmVudHMoY29udHJvbGxlciwgdmlldywgXCJleHBvcnRUb0NTVlwiKTtcblx0XHRcdFx0XHR9fVxuXHRcdFx0XHQvPlxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQWRkIEV4cG9ydCBhcyBQREYgb3B0aW9uIHRvIG1lbnUgYnV0dG9uLlxuXHQgKiBAcGFyYW0gY29udHJvbGxlciBQYWdlIGNvbnRyb2xsZXJcblx0ICogQHBhcmFtIHZpZXcgVGhlIHZpZXcgdGhpcyBidWlsZGluZyBibG9jayBpcyB1c2VkIGluXG5cdCAqL1xuXHRfYWRkRXhwb3J0UERGT3B0aW9ucyhjb250cm9sbGVyOiBQYWdlQ29udHJvbGxlciwgdmlldzogVmlldyk6IHZvaWQge1xuXHRcdGNvbnN0IHZpZXdEYXRhID0gdmlldy5nZXRWaWV3RGF0YSgpIGFzIFZpZXdEYXRhO1xuXHRcdGlmICh2aWV3RGF0YT8uc2hhcmU/Lmhhc093blByb3BlcnR5KFwiZXhwb3J0VG9QREZcIikgPT09IHRydWUgJiYgdmlld0RhdGE/LnNoYXJlPy5wcmludD8uaGFzT3duUHJvcGVydHkoXCJwcmVzc1wiKSA9PT0gdHJ1ZSkge1xuXHRcdFx0dGhpcz8ubWVudT8uY3VycmVudD8uYWRkSXRlbShcblx0XHRcdFx0PE1lbnVJdGVtXG5cdFx0XHRcdFx0cmVmPXt0aGlzLmV4cG9ydFRvUERGTWVudUl0ZW19XG5cdFx0XHRcdFx0dGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIlRfU0hBUkVfQ09OVFJPTF9FWFBPUlRfQVNfUERGXCIpfVxuXHRcdFx0XHRcdGljb249e0VYUE9SVF9UT19QREZfSUNPTn1cblx0XHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5fY2FsbE1hbmlmZXN0QWN0aW9uc0V2ZW50cyhjb250cm9sbGVyLCB2aWV3LCBcImV4cG9ydFRvUERGXCIpO1xuXHRcdFx0XHRcdH19XG5cdFx0XHRcdC8+XG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBBZGQgc2VuZCBlbWFpbCBvcHRpb24gdG8gbWVudSBidXR0b24uXG5cdCAqIEBwYXJhbSBjb250cm9sbGVyIFBhZ2UgY29udHJvbGxlclxuXHQgKi9cblx0X2FkZFNlbmRFbWFpbE9wdGlvbihjb250cm9sbGVyOiBQYWdlQ29udHJvbGxlcik6IHZvaWQge1xuXHRcdGlmICh0aGlzLnNoYXJlT3B0aW9ucz8uc2hvd1NlbmRFbWFpbCA/PyB0cnVlKSB7XG5cdFx0XHR0aGlzPy5tZW51Py5jdXJyZW50Py5hZGRJdGVtKFxuXHRcdFx0XHQ8TWVudUl0ZW1cblx0XHRcdFx0XHRyZWY9e3RoaXMuc2VuZEVtYWlsTWVudUl0ZW19XG5cdFx0XHRcdFx0dGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIlRfU0VNQU5USUNfQ09OVFJPTF9TRU5EX0VNQUlMXCIpfVxuXHRcdFx0XHRcdGljb249e1wic2FwLWljb246Ly9lbWFpbFwifVxuXHRcdFx0XHRcdHByZXNzPXthc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiBjb250cm9sbGVyLnNoYXJlLl90cmlnZ2VyRW1haWwoKX1cblx0XHRcdFx0Lz5cblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEFkZCBVU2hlbGwgYmFzZWQgc2hhcmUgb3B0aW9ucy5cblx0ICogQHBhcmFtIGNvbnRyb2xsZXIgUGFnZSBjb250cm9sbGVyXG5cdCAqIEBwYXJhbSBzaGVsbFNlcnZpY2VzIFNoZWxsIFNlcnZpY2VzXG5cdCAqL1xuXHRhc3luYyBfYWRkU2hlbGxCYXNlZE1lbnVJdGVtcyhjb250cm9sbGVyOiBQYWdlQ29udHJvbGxlciwgc2hlbGxTZXJ2aWNlczogSVNoZWxsU2VydmljZXMpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBoYXNVc2hlbGwgPSBzaGVsbFNlcnZpY2VzLmhhc1VTaGVsbCgpO1xuXHRcdGlmIChoYXNVc2hlbGwpIHtcblx0XHRcdC8vIHNoYXJlIHZpYSBKQU1cblx0XHRcdHRoaXMuX2FkZFNoYXJlVmlhSkFNT3B0aW9uKGNvbnRyb2xsZXIsIHNoZWxsU2VydmljZXMpO1xuXG5cdFx0XHQvLyBQcmVwYXJlIHRlYW1zIG1lbnUgaXRlbXNcblx0XHRcdGF3YWl0IHRoaXMuX2FkZE1TVGVhbXNPcHRpb25zKGNvbnRyb2xsZXIpO1xuXG5cdFx0XHQvLyBQcmVwYXJlIENvbGxhYm9yYXRpb24gTWFuYWdlciBPcHRpb25zXG5cdFx0XHRhd2FpdCB0aGlzLl9hZGRDb2xsYWJvcmF0aW9uTWFuYWdlck9wdGlvbihjb250cm9sbGVyKTtcblxuXHRcdFx0Ly8gU2F2ZSBhcyBUaWxlXG5cdFx0XHRhd2FpdCB0aGlzLl9hZGRTYXZlQXNUaWxlT3B0aW9uKGNvbnRyb2xsZXIpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBBZGQgQ00gb3B0aW9uLlxuXHQgKiBAcGFyYW0gY29udHJvbGxlciBUaGUgY29udHJvbGxlciBpbnN0YW5jZVxuXHQgKiBAcmV0dXJucyBNZW51SXRlbXNcblx0ICovXG5cdGFzeW5jIF9hZGRDb2xsYWJvcmF0aW9uTWFuYWdlck9wdGlvbihjb250cm9sbGVyOiBQYWdlQ29udHJvbGxlcik6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBjb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlID0gY29udHJvbGxlci5nZXRBcHBDb21wb25lbnQoKS5nZXRDb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlKCk7XG5cdFx0XHRjb25zdCBjb2xsYWJvcmF0aW9uT3B0aW9uID0gYXdhaXQgY29sbGFib3JhdGl2ZVRvb2xzU2VydmljZS5nZXRDb2xsYWJvcmF0aW9uTWFuYWdlck9wdGlvbigpO1xuXHRcdFx0aWYgKGNvbGxhYm9yYXRpb25PcHRpb24gJiYgKHRoaXMuc2hhcmVPcHRpb25zPy5zaG93Q29sbGFib3JhdGlvbk1hbmFnZXIgPz8gZmFsc2UpKSB7XG5cdFx0XHRcdGNvbnN0IG1lbnVJdGVtID0gKFxuXHRcdFx0XHRcdDxNZW51SXRlbVxuXHRcdFx0XHRcdFx0cmVmPXt0aGlzLnNoYXJlQXNDb2xsYWJvcmF0aW9uTWFuYWdlcn1cblx0XHRcdFx0XHRcdHRleHQ9e2NvbGxhYm9yYXRpb25PcHRpb24udGV4dH1cblx0XHRcdFx0XHRcdGljb249e2NvbGxhYm9yYXRpb25PcHRpb24uaWNvbn1cblx0XHRcdFx0XHRcdHByZXNzPXthc3luYyAoZXZlbnQ6IFVJNUV2ZW50PHt9LCBNZW51SXRlbT4pOiBQcm9taXNlPHZvaWQ+ID0+XG5cdFx0XHRcdFx0XHRcdHRoaXMuX2NvbGxhYm9yYXRpb25NYW5hZ2VyQnV0dG9uUHJlc3MoY29sbGFib3JhdGlvbk9wdGlvbi5wcmVzcywgZXZlbnQpXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0PjwvTWVudUl0ZW0+XG5cdFx0XHRcdCk7XG5cdFx0XHRcdEZFU1JIZWxwZXIuc2V0U2VtYW50aWNTdGVwbmFtZShtZW51SXRlbSwgXCJwcmVzc1wiLCBjb2xsYWJvcmF0aW9uT3B0aW9uLmZlc3JTdGVwTmFtZSk7XG5cdFx0XHRcdHRoaXM/Lm1lbnU/LmN1cnJlbnQ/LmFkZEl0ZW0obWVudUl0ZW0pO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuXHRcdFx0Y29uc3QgbWVzc2FnZSA9IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBTdHJpbmcoZXJyKTtcblx0XHRcdExvZy5lcnJvcihgRkUgOiBBZGRpbmcgQ29sbGFib3JhdGlvbiBNYW5hZ2VyIE9wdGlvbiA6ICR7bWVzc2FnZX1gKTtcblx0XHR9XG5cdH1cblxuXHRhc3luYyBfY29sbGFib3JhdGlvbk1hbmFnZXJCdXR0b25QcmVzcyhjb2xsYWJvcmF0aW9uQ2FsbEJhY2s6IEZ1bmN0aW9uLCBldmVudDogVUk1RXZlbnQ8e30sIE1lbnVJdGVtPik6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IGNsaWNrZWRNZW51SXRlbSA9IGV2ZW50LmdldFNvdXJjZSgpO1xuXG5cdFx0Y29uc3QgdmlldzogVmlldyA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcoY2xpY2tlZE1lbnVJdGVtKTtcblx0XHRjb25zdCBjb250cm9sbGVyOiBQYWdlQ29udHJvbGxlciA9IHZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIFBhZ2VDb250cm9sbGVyO1xuXHRcdGF3YWl0IGNvbnRyb2xsZXIuc2hhcmUuX2FkYXB0U2hhcmVNZXRhZGF0YSgpO1xuXHRcdGNvbnN0IHNoYXJlSW5mb01vZGVsID0gdmlldy5nZXRNb2RlbChcInNoYXJlSW5mb1wiKSBhcyBKU09OTW9kZWwgfCB1bmRlZmluZWQ7XG5cblx0XHRpZiAoc2hhcmVJbmZvTW9kZWwpIHtcblx0XHRcdGNvbnN0IHNoYXJlSW5mbyA9IHNoYXJlSW5mb01vZGVsLmdldERhdGEoKTtcblx0XHRcdGNvbnN0IHsgY29sbGFib3JhdGlvbkluZm8gfSA9IHNoYXJlSW5mbztcblx0XHRcdGNvbGxhYm9yYXRpb25DYWxsQmFjayhjb2xsYWJvcmF0aW9uSW5mby5hcHBUaXRsZSwgY29sbGFib3JhdGlvbkluZm8udXJsKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQWRkIHNoYXJlIHZpYSBKQU0gb3B0aW9uLlxuXHQgKiBAcGFyYW0gY29udHJvbGxlciBQYWdlIGNvbnRyb2xsZXJcblx0ICogQHBhcmFtIHNoZWxsU2VydmljZXMgU2hlbGwgU2VydmljZXNcblx0ICovXG5cdF9hZGRTaGFyZVZpYUpBTU9wdGlvbihjb250cm9sbGVyOiBQYWdlQ29udHJvbGxlciwgc2hlbGxTZXJ2aWNlczogSVNoZWxsU2VydmljZXMpOiB2b2lkIHtcblx0XHRjb25zdCBoYXNKYW0gPSAhIXNoZWxsU2VydmljZXMuaXNKYW1BY3RpdmU/LigpO1xuXHRcdGlmIChoYXNKYW0pIHtcblx0XHRcdHRoaXM/Lm1lbnU/LmN1cnJlbnQ/LmFkZEl0ZW0oXG5cdFx0XHRcdDxNZW51SXRlbVxuXHRcdFx0XHRcdHJlZj17dGhpcy5zaGFyZVZpYUpBTU1lbnVJdGVtfVxuXHRcdFx0XHRcdHRleHQ9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJUX0NPTU1PTl9TQVBGRV9TSEFSRV9KQU1cIil9XG5cdFx0XHRcdFx0aWNvbj17XCJzYXAtaWNvbjovL3NoYXJlLTJcIn1cblx0XHRcdFx0XHRwcmVzcz17YXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4gY29udHJvbGxlci5zaGFyZS5fdHJpZ2dlclNoYXJlVG9KYW0oKX1cblx0XHRcdFx0Lz5cblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEFkZCBvcHRpb25zIHRvIHNoYXJlIHZpYSBNaWNyb3NvZnQgVGVhbXMuXG5cdCAqIEBwYXJhbSBjb250cm9sbGVyIFBhZ2VDb250cm9sbGVyXG5cdCAqL1xuXHRhc3luYyBfYWRkTVNUZWFtc09wdGlvbnMoY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHR0cnkge1xuXHRcdFx0aWYgKHRoaXMuX2Jsb2NrSW50ZXJuYWxDb25maWc/LnNob3dNc1RlYW1zT3B0aW9ucyA9PT0gZmFsc2UpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBjb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlID0gY29udHJvbGxlci5nZXRBcHBDb21wb25lbnQoKS5nZXRDb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlKCk7XG5cdFx0XHRjb25zdCBzaGFyZUNvbGxhYm9yYXRpb25PcHRpb25zID0gYXdhaXQgY29sbGFib3JhdGl2ZVRvb2xzU2VydmljZS5nZXRUZWFtc0NvbGxhYk9wdGlvbnNWaWFTaGFyZSh7XG5cdFx0XHRcdGlzU2hhcmVBc0NhcmRFbmFibGVkOiB0aGlzLl9nZXRJc1NoYXJlQXNDYXJkRW5hYmxlZCgpXG5cdFx0XHR9KTtcblxuXHRcdFx0aWYgKCFzaGFyZUNvbGxhYm9yYXRpb25PcHRpb25zKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Zm9yIChjb25zdCBjb2xsYWJvcmF0aW9uT3B0aW9uIG9mIHNoYXJlQ29sbGFib3JhdGlvbk9wdGlvbnMpIHtcblx0XHRcdFx0Y29uc3QgbWVudUl0ZW1TZXR0aW5nczogJE1lbnVJdGVtU2V0dGluZ3MgPSB0aGlzLl9nZXRNc1RlYW1zTWVudUl0ZW1TZXR0aW5ncyhjb2xsYWJvcmF0aW9uT3B0aW9uKTtcblx0XHRcdFx0Y29uc3Qgc3ViT3B0aW9ucyA9IG1lbnVJdGVtU2V0dGluZ3MuaXRlbXM7XG5cdFx0XHRcdC8vIE11bHRpcGxlIHN1YiBvcHRpb25zIGFyZSBncm91cGVkIGludG8gc2luZ2xlIHRlYW1zIGdyb3VwIG1lbnUgaXRlbS5cblx0XHRcdFx0Y29uc3QgbWVudUl0ZW1LZXkgPVxuXHRcdFx0XHRcdEFycmF5LmlzQXJyYXkoc3ViT3B0aW9ucykgJiYgc3ViT3B0aW9ucy5sZW5ndGggPyBlbnVtU2hhcmVPcHRpb24uTVNfVEVBTVNfR1JPVVAgOiBjb2xsYWJvcmF0aW9uT3B0aW9uLmtleTtcblxuXHRcdFx0XHR0aGlzLl9hZGRNc1RlYW1zTWVudUl0ZW0obWVudUl0ZW1TZXR0aW5ncywgbWVudUl0ZW1LZXksIGNvbGxhYm9yYXRpb25PcHRpb24uZmVzclN0ZXBOYW1lKTtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChlcnI6IHVua25vd24pIHtcblx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogU3RyaW5nKGVycik7XG5cdFx0XHRMb2cuZXJyb3IoYEZFIDogQnVpbGRpbmdibG9jayA6IFNoYXJlIDogYWRkaW5nIE1TIHRlYW1zIG9wdGlvbnMgOiAke21lc3NhZ2V9YCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEFkZCBzYXZlIGFzIHRpbGUgb3B0aW9uLlxuXHQgKiBAcGFyYW0gY29udHJvbGxlciBQYWdlIGNvbnRyb2xsZXJcblx0ICovXG5cdGFzeW5jIF9hZGRTYXZlQXNUaWxlT3B0aW9uKGNvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dHJ5IHtcblx0XHRcdC8vIHNldCBzYXZlIGFzIHRpbGVcblx0XHRcdC8vIGZvciBub3cgd2UgbmVlZCB0byBjcmVhdGUgYWRkQm9va21hcmtCdXR0b24gdG8gdXNlIHRoZSBzYXZlIGFzIHRpbGUgZmVhdHVyZS5cblx0XHRcdC8vIEluIHRoZSBmdXR1cmUgc2F2ZSBhcyB0aWxlIHNob3VsZCBiZSBhdmFpbGFibGUgYXMgYW4gQVBJIG9yIGEgTWVudUl0ZW0gc28gdGhhdCBpdCBjYW4gYmUgYWRkZWQgdG8gdGhlIE1lbnUgYnV0dG9uLlxuXHRcdFx0Ly8gVGhpcyBuZWVkcyB0byBiZSBkaXNjdXNzZWQgd2l0aCBBZGRCb29rbWFya0J1dHRvbiB0ZWFtLlxuXHRcdFx0Ly8gSW5jbHVkZWQgaW4gYSBoYXNVc2hlbGwgYnJhbmNoXG5cdFx0XHRjb25zdCB7IGRlZmF1bHQ6IEFkZEJvb2ttYXJrQnV0dG9uIH0gPSBhd2FpdCBpbXBvcnQoXCJzYXAvdXNoZWxsL3VpL2Zvb3RlcmJhci9BZGRCb29rbWFya0J1dHRvblwiKTtcblx0XHRcdGNvbnN0IGFkZEJvb2ttYXJrQnV0dG9uID0gbmV3IEFkZEJvb2ttYXJrQnV0dG9uKCk7XG5cdFx0XHRpZiAoYWRkQm9va21hcmtCdXR0b24uZ2V0RW5hYmxlZCgpKSB7XG5cdFx0XHRcdHRoaXM/Lm1lbnU/LmN1cnJlbnQ/LmFkZEl0ZW0oXG5cdFx0XHRcdFx0PE1lbnVJdGVtXG5cdFx0XHRcdFx0XHRyZWY9e3RoaXMuc2F2ZUFzVGlsZU1lbnVJdGVtfVxuXHRcdFx0XHRcdFx0dGV4dD17YWRkQm9va21hcmtCdXR0b24uZ2V0VGV4dCgpfVxuXHRcdFx0XHRcdFx0aWNvbj17YWRkQm9va21hcmtCdXR0b24uZ2V0SWNvbigpfVxuXHRcdFx0XHRcdFx0cHJlc3M9e2FzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IGNvbnRyb2xsZXIuc2hhcmUuX3NhdmVBc1RpbGUodGhpcy5zYXZlQXNUaWxlTWVudUl0ZW0uY3VycmVudCEpfVxuXHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdHt7IGRlcGVuZGVudHM6IFthZGRCb29rbWFya0J1dHRvbl0gfX1cblx0XHRcdFx0XHQ8L01lbnVJdGVtPlxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0YWRkQm9va21hcmtCdXR0b24uZGVzdHJveSgpO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuXHRcdFx0Y29uc3QgbWVzc2FnZSA9IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBTdHJpbmcoZXJyKTtcblx0XHRcdExvZy5lcnJvcihgRkUgOiBCdWlsZGluZ2Jsb2NrIDogU2hhcmUgOiBhZGRpbmcgU2F2ZSBhcyB0aWxlIG9wdGlvbiA6ICR7bWVzc2FnZX1gKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0IGlzU2hhcmVBc0NhcmRFbmFibGVkIHRvIGZldGNoIHN1cHBvcnRlZCBjb2xsYWJvcmF0aW9uIG9wdGlvbnMuXG5cdCAqIEByZXR1cm5zIEJvb2xlYW4uXG5cdCAqL1xuXHRfZ2V0SXNTaGFyZUFzQ2FyZEVuYWJsZWQoKTogYm9vbGVhbiB7XG5cdFx0Y29uc3Qgc2hvd1NoYXJlQXNDYXJkID0gdGhpcy5tc1RlYW1zT3B0aW9ucz8uZW5hYmxlQ2FyZCA/PyBmYWxzZTtcblxuXHRcdGlmICh0eXBlb2Ygc2hvd1NoYXJlQXNDYXJkID09PSBcImJvb2xlYW5cIikge1xuXHRcdFx0cmV0dXJuIHNob3dTaGFyZUFzQ2FyZDtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZiBzaG93U2hhcmVBc0NhcmQgPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdC8vIFwidHJ1ZVwiIG9yIGEgYmluZGluZyBleHByZXNzaW9uXG5cdFx0XHR0cnkge1xuXHRcdFx0XHRyZXR1cm4gc2hvd1NoYXJlQXNDYXJkID09PSBcInRydWVcIiB8fCBCb29sZWFuKEJpbmRpbmdJbmZvLnBhcnNlKHNob3dTaGFyZUFzQ2FyZCkpO1xuXHRcdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRcdExvZy5lcnJvcihlcnIgYXMgc3RyaW5nKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IE1lbnUgSXRlbSBzZXR0aW5ncyBmb3IgbWFpbiBNUyB0ZWFtcyBvcHRpb24uXG5cdCAqIEBwYXJhbSBjb2xsYWJvcmF0aW9uT3B0aW9uIFJvb3QgQ29sbGFib3JhdGlvbiBPcHRpb25cblx0ICogQHJldHVybnMgTWVudUl0ZW1TZXR0aW5nc1xuXHQgKi9cblx0X2dldE1zVGVhbXNNZW51SXRlbVNldHRpbmdzKGNvbGxhYm9yYXRpb25PcHRpb246IENvbGxhYm9yYXRpb25PcHRpb25zKTogJE1lbnVJdGVtU2V0dGluZ3Mge1xuXHRcdGNvbnN0IGl0ZW1zID0gdGhpcy5fZ2V0TXNUZWFtc1N1Yk9wdGlvbnMoY29sbGFib3JhdGlvbk9wdGlvbj8uc3ViT3B0aW9ucyk7XG5cdFx0Y29uc3QgbWVudUl0ZW1TZXR0aW5nczogJE1lbnVJdGVtU2V0dGluZ3MgPSB7XG5cdFx0XHR0ZXh0OiBjb2xsYWJvcmF0aW9uT3B0aW9uLnRleHQsXG5cdFx0XHRpY29uOiBjb2xsYWJvcmF0aW9uT3B0aW9uLmljb24sXG5cdFx0XHRpdGVtc1xuXHRcdH07XG5cblx0XHRpZiAoaXRlbXMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHQvLyBpZiB0aGVyZSBhcmUgbm8gc3ViIG9wdGlvbiB0aGVuIHRoZSBtYWluIG9wdGlvbiBzaG91bGQgYmUgY2xpY2thYmxlXG5cdFx0XHQvLyBzbyBhZGQgYSBwcmVzcyBoYW5kbGVyLlxuXHRcdFx0bWVudUl0ZW1TZXR0aW5ncy5wcmVzcyA9IGFzeW5jIChldmVudDogVUk1RXZlbnQ8e30sIE1lbnVJdGVtPik6IFByb21pc2U8dm9pZD4gPT4gdGhpcy5jb2xsYWJvcmF0aW9uTWVudUl0ZW1QcmVzcyhldmVudCk7XG5cdFx0XHRtZW51SXRlbVNldHRpbmdzW1wiY3VzdG9tRGF0YVwiXSA9IG5ldyBDdXN0b21EYXRhKHtcblx0XHRcdFx0a2V5OiBcImNvbGxhYm9yYXRpb25EYXRhXCIsXG5cdFx0XHRcdHZhbHVlOiBjb2xsYWJvcmF0aW9uT3B0aW9uXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0cmV0dXJuIG1lbnVJdGVtU2V0dGluZ3M7XG5cdH1cblxuXHQvKipcblx0ICogQWRkIG1haW4gTVMgVGVhbXMgTWVudSBJdGVtIHRvIHRoZSBTaGFyZSBidWlsZGluZyBibG9jayBtZW51LlxuXHQgKiBAcGFyYW0gbWVudUl0ZW1TZXR0aW5ncyBNZW51IEl0ZW0gc2V0dGluZ3Ncblx0ICogQHBhcmFtIG1lbnVJdGVtS2V5IE1TIHRlYW1zIG9wdGlvbiBrZXlcblx0ICogQHBhcmFtIGZlc3JTdGVwTmFtZSBTdGVwIG5hbWVcblx0ICovXG5cdF9hZGRNc1RlYW1zTWVudUl0ZW0obWVudUl0ZW1TZXR0aW5nczogJE1lbnVJdGVtU2V0dGluZ3MsIG1lbnVJdGVtS2V5PzogU2hhcmVPcHRpb25LZXksIGZlc3JTdGVwTmFtZT86IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IG1lbnVJdGVtOiBNZW51SXRlbSA9IChcblx0XHRcdDxNZW51SXRlbVxuXHRcdFx0XHRyZWY9e3RoaXMuX2dldE1lbnVJdGVtUmVmZXJlbmNlKG1lbnVJdGVtS2V5KX1cblx0XHRcdFx0dGV4dD17bWVudUl0ZW1TZXR0aW5ncy50ZXh0fVxuXHRcdFx0XHRpY29uPXttZW51SXRlbVNldHRpbmdzLmljb259XG5cdFx0XHRcdGN1c3RvbURhdGE9e21lbnVJdGVtU2V0dGluZ3MuY3VzdG9tRGF0YX1cblx0XHRcdFx0aXRlbXM9e21lbnVJdGVtU2V0dGluZ3MuaXRlbXN9XG5cdFx0XHQ+PC9NZW51SXRlbT5cblx0XHQpO1xuXHRcdGlmIChtZW51SXRlbVNldHRpbmdzLnByZXNzKSB7XG5cdFx0XHQvL1xuXHRcdFx0bWVudUl0ZW0uYXR0YWNoUHJlc3MobWVudUl0ZW1TZXR0aW5ncy5wcmVzcyk7XG5cdFx0XHRpZiAoZmVzclN0ZXBOYW1lKSB7XG5cdFx0XHRcdEZFU1JIZWxwZXIuc2V0U2VtYW50aWNTdGVwbmFtZShtZW51SXRlbSwgXCJwcmVzc1wiLCBmZXNyU3RlcE5hbWUpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHR0aGlzPy5tZW51Py5jdXJyZW50Py5hZGRJdGVtKG1lbnVJdGVtKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgTWVudSBJdGVtcyBjb3JyZXNwb25kaW5nIHRvIE1TIHRlYW1zIHN1YiBvcHRpb25zLlxuXHQgKiBAcGFyYW0gc3ViT3B0aW9ucyBBcnJheSBvZiBjb2xsYWJvcmF0aW9uIG9wdGlvbnNcblx0ICogQHJldHVybnMgTWVudUl0ZW1zXG5cdCAqL1xuXHRfZ2V0TXNUZWFtc1N1Yk9wdGlvbnMoc3ViT3B0aW9ucz86IENvbGxhYm9yYXRpb25PcHRpb25zW10pOiBNZW51SXRlbVtdIHtcblx0XHRpZiAoIUFycmF5LmlzQXJyYXkoc3ViT3B0aW9ucykpIHtcblx0XHRcdHJldHVybiBbXTtcblx0XHR9XG5cblx0XHRyZXR1cm4gc3ViT3B0aW9ucy5yZWR1Y2UoKG1lbnVJdGVtczogTWVudUl0ZW1bXSwgc3ViT3B0aW9uOiBDb2xsYWJvcmF0aW9uT3B0aW9ucykgPT4ge1xuXHRcdFx0Y29uc3Qgc3ViTWVudUl0ZW0gPSAoXG5cdFx0XHRcdDxNZW51SXRlbVxuXHRcdFx0XHRcdHJlZj17dGhpcy5fZ2V0TWVudUl0ZW1SZWZlcmVuY2Uoc3ViT3B0aW9uLmtleSl9XG5cdFx0XHRcdFx0dGV4dD17c3ViT3B0aW9uLnRleHR9XG5cdFx0XHRcdFx0aWNvbj17c3ViT3B0aW9uLmljb259XG5cdFx0XHRcdFx0cHJlc3M9e2FzeW5jIChldmVudDogVUk1RXZlbnQ8e30sIE1lbnVJdGVtPik6IFByb21pc2U8dm9pZD4gPT4gdGhpcy5jb2xsYWJvcmF0aW9uTWVudUl0ZW1QcmVzcyhldmVudCl9XG5cdFx0XHRcdFx0Y3VzdG9tRGF0YT17XG5cdFx0XHRcdFx0XHRuZXcgQ3VzdG9tRGF0YSh7XG5cdFx0XHRcdFx0XHRcdGtleTogXCJjb2xsYWJvcmF0aW9uRGF0YVwiLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogc3ViT3B0aW9uXG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0PjwvTWVudUl0ZW0+XG5cdFx0XHQpO1xuXHRcdFx0aWYgKHN1Yk9wdGlvbi5mZXNyU3RlcE5hbWUpIHtcblx0XHRcdFx0RkVTUkhlbHBlci5zZXRTZW1hbnRpY1N0ZXBuYW1lKHN1Yk1lbnVJdGVtLCBcInByZXNzXCIsIHN1Yk9wdGlvbi5mZXNyU3RlcE5hbWUpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIFsuLi5tZW51SXRlbXMsIHN1Yk1lbnVJdGVtXTtcblx0XHR9LCBbXSk7XG5cdH1cblxuXHQvKipcblx0ICogUHJlc3MgaGFuZGxlciBmb3IgY29sbGFib3JhdGlvbiBtZW51IGl0ZW1zLlxuXHQgKmBcblx0ICogQHBhcmFtIGV2ZW50IEV2ZW50IG9iamVjdFxuXHQgKi9cblx0YXN5bmMgY29sbGFib3JhdGlvbk1lbnVJdGVtUHJlc3MoZXZlbnQ6IFVJNUV2ZW50PHt9LCBNZW51SXRlbT4pOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBjbGlja2VkTWVudUl0ZW0gPSBldmVudC5nZXRTb3VyY2UoKTtcblxuXHRcdGNvbnN0IHZpZXc6IFZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KGNsaWNrZWRNZW51SXRlbSk7XG5cdFx0Y29uc3QgY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIgPSB2aWV3LmdldENvbnRyb2xsZXIoKSBhcyBQYWdlQ29udHJvbGxlcjtcblx0XHRhd2FpdCBjb250cm9sbGVyLnNoYXJlLl9hZGFwdFNoYXJlTWV0YWRhdGEoKTtcblx0XHRjb25zdCBzaGFyZUluZm9Nb2RlbCA9IHZpZXcuZ2V0TW9kZWwoXCJzaGFyZUluZm9cIikgYXMgSlNPTk1vZGVsIHwgdW5kZWZpbmVkO1xuXG5cdFx0aWYgKHNoYXJlSW5mb01vZGVsKSB7XG5cdFx0XHRjb25zdCBzaGFyZUluZm8gPSBzaGFyZUluZm9Nb2RlbC5nZXREYXRhKCk7XG5cdFx0XHRjb25zdCB7IGNvbGxhYm9yYXRpb25JbmZvIH0gPSBzaGFyZUluZm87XG5cblx0XHRcdGNvbnN0IGNvbGxhYm9yYXRpb25EYXRhID0gY2xpY2tlZE1lbnVJdGVtLmRhdGEoXCJjb2xsYWJvcmF0aW9uRGF0YVwiKTtcblx0XHRcdGNvbnN0IGNvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2UgPSBjb250cm9sbGVyLmdldEFwcENvbXBvbmVudCgpLmdldENvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2UoKTtcblx0XHRcdGNvbnN0IHRlYW1zSGVscGVyU2VydmljZSA9IChhd2FpdCBjb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlLmdldENvbGxhYm9yYXRpb25TZXJ2aWNlcygpKS5vVGVhbXNIZWxwZXJTZXJ2aWNlO1xuXHRcdFx0aWYgKGNvbGxhYm9yYXRpb25EYXRhW1wia2V5XCJdID09PSBlbnVtTVNUZWFtc09wdGlvbi5DT0xMQUJPUkFUSU9OX01TVEVBTVNfQ0FSRCkge1xuXHRcdFx0XHRjb25zdCBpc1NoYXJlQXNDYXJkRW5hYmxlZCA9IHRlYW1zSGVscGVyU2VydmljZS5pc0ZlYXR1cmVGbGFnRW5hYmxlZCgpO1xuXHRcdFx0XHRjb25zdCBjYXJkRGVmaW5pdGlvbiA9IGlzU2hhcmVBc0NhcmRFbmFibGVkID8gYXdhaXQgY29udHJvbGxlci5zaGFyZS5nZXRDYXJkRGVmaW5pdGlvbigpIDogdW5kZWZpbmVkO1xuXHRcdFx0XHRsZXQgY2FyZElkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdFx0XHRcdGlmIChjYXJkRGVmaW5pdGlvbikge1xuXHRcdFx0XHRcdGNvbnN0IHNoZWxsU2VydmljZUhlbHBlciA9IGNvbnRyb2xsZXIuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0U2hlbGxTZXJ2aWNlcygpO1xuXHRcdFx0XHRcdGNvbnN0IHsgc2VtYW50aWNPYmplY3QsIGFjdGlvbiB9ID0gc2hlbGxTZXJ2aWNlSGVscGVyLnBhcnNlU2hlbGxIYXNoKGRvY3VtZW50LmxvY2F0aW9uLmhhc2gpO1xuXHRcdFx0XHRcdGNhcmRJZCA9IGAke3NlbWFudGljT2JqZWN0fV8ke2FjdGlvbn1gO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnN0IHJlYXNvbiA9ICFpc1NoYXJlQXNDYXJkRW5hYmxlZFxuXHRcdFx0XHRcdFx0PyBcIkZlYXR1cmUgZmxhZyBkaXNhYmxlZCBpbiBjb2xsYWJvcmF0aW9uIHRlYW1zIGhlbHBlclwiXG5cdFx0XHRcdFx0XHQ6IFwiQ2FyZCBkZWZpbml0aW9uIHdhcyBub3QgY3JlYXRlZFwiO1xuXHRcdFx0XHRcdExvZy5pbmZvKGBGRSBWNCA6IFNoYXJlIGJsb2NrIDogc2hhcmUgYXMgQ2FyZCA6ICR7cmVhc29ufWApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbGxhYm9yYXRpb25JbmZvW1wiY2FyZE1hbmlmZXN0XCJdID0gY2FyZERlZmluaXRpb247XG5cdFx0XHRcdGNvbGxhYm9yYXRpb25JbmZvW1wiY2FyZElkXCJdID0gY2FyZElkO1xuXHRcdFx0fVxuXHRcdFx0dGVhbXNIZWxwZXJTZXJ2aWNlLnNoYXJlKGNvbGxhYm9yYXRpb25EYXRhLCBjb2xsYWJvcmF0aW9uSW5mbyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFNldCB0aGUgdmlzaWJpbGl0eSBvZiBpbmRpdmlkdWFsIFVJIGVsZW1lbnRzIG9mIHRoZSBTaGFyZSBidWlsZGluZyBibG9jay4gTGlrZSwgTWVudUl0ZW1zLCBNZW51QnV0dG9uIGFuZCBDb21tYW5kIGV4ZWN1dGlvbi5cblx0ICovXG5cdHNldFNoYXJlT3B0aW9uc1Zpc2liaWxpdHkoKTogdm9pZCB7XG5cdFx0Y29uc3Qgb3B0aW9uS2V5cyA9IE9iamVjdC5rZXlzKGVudW1TaGFyZU9wdGlvbikgYXMgU2hhcmVPcHRpb25LZXlbXTtcblx0XHRjb25zdCB2aXNpYmxlQmluZGluZ0V4cHMgPSBvcHRpb25LZXlzLnJlZHVjZSgoYmluZGluZ1Rvb2xraXRFeHBzOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj5bXSwgb3B0aW9uOiBTaGFyZU9wdGlvbktleSkgPT4ge1xuXHRcdFx0Y29uc3QgZXhwID0gdGhpcy5fZ2V0U2hhcmVPcHRpb25WaXNpYmlsaXR5RXhwcmVzc2lvbihvcHRpb24pO1xuXHRcdFx0dGhpcy5fc2V0U2hhcmVPcHRpb25WaXNpYmlsaXR5KG9wdGlvbiwgZXhwKTtcblx0XHRcdHJldHVybiBbLi4uYmluZGluZ1Rvb2xraXRFeHBzLCBleHBdO1xuXHRcdH0sIFtdKTtcblx0XHRjb25zdCBzaGFyZUJsb2NrVmlzaWJsZUV4cCA9IG9yKC4uLnZpc2libGVCaW5kaW5nRXhwcyk7XG5cdFx0aWYgKHRoaXMubWVudUJ1dHRvbi5jdXJyZW50ICYmIHRoaXMuY21kRXhlY3V0aW9uLmN1cnJlbnQpIHtcblx0XHRcdHRoaXMuX2JpbmRVSVZpc2liaWxpdHkodGhpcy5tZW51QnV0dG9uLmN1cnJlbnQsIHNoYXJlQmxvY2tWaXNpYmxlRXhwKTtcblx0XHRcdHRoaXMuX2JpbmRVSVZpc2liaWxpdHkodGhpcy5jbWRFeGVjdXRpb24uY3VycmVudCwgc2hhcmVCbG9ja1Zpc2libGVFeHApO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgTWVudSBJdGVtIHJlZmVyZW5jZSBvZiB0aGUgY29ycmVzcG9uZGluZyBTaGFyZSBvcHRpb24uXG5cdCAqYFxuXHQgKiBAcGFyYW0gb3B0aW9uIFNoYXJlIG9wdGlvbiBrZXlcblx0ICogQHJldHVybnMgUmVmZXJlbmNlIHRvIHRoZSBNZW51IEl0ZW1cblx0ICovXG5cdF9nZXRNZW51SXRlbVJlZmVyZW5jZShvcHRpb24/OiBTaGFyZU9wdGlvbktleSk6IFJlZjxNZW51SXRlbT4gfCB1bmRlZmluZWQge1xuXHRcdGxldCByZWY6IFJlZjxNZW51SXRlbT4gfCB1bmRlZmluZWQ7XG5cdFx0c3dpdGNoIChvcHRpb24pIHtcblx0XHRcdGNhc2UgZW51bVNoYXJlT3B0aW9uLkNPTExBQk9SQVRJT05fTVNURUFNU19DQVJEOlxuXHRcdFx0XHRyZWYgPSB0aGlzLnNoYXJlQXNDYXJkTWVudUl0ZW07XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBlbnVtU2hhcmVPcHRpb24uQ09MTEFCT1JBVElPTl9NU1RFQU1TX0NIQVQ6XG5cdFx0XHRcdHJlZiA9IHRoaXMuc2hhcmVWaWFDaGF0TWVudUl0ZW07XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBlbnVtU2hhcmVPcHRpb24uQ09MTEFCT1JBVElPTl9NU1RFQU1TX1RBQjpcblx0XHRcdFx0cmVmID0gdGhpcy5zaGFyZUFzVGFiTWVudUl0ZW07XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBlbnVtU2hhcmVPcHRpb24uU0VORF9FTUFJTDpcblx0XHRcdFx0cmVmID0gdGhpcy5zZW5kRW1haWxNZW51SXRlbTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIGVudW1TaGFyZU9wdGlvbi5TSEFSRV9KQU06XG5cdFx0XHRcdHJlZiA9IHRoaXMuc2hhcmVWaWFKQU1NZW51SXRlbTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIGVudW1TaGFyZU9wdGlvbi5TQVZFX0FTX1RJTEU6XG5cdFx0XHRcdHJlZiA9IHRoaXMuc2F2ZUFzVGlsZU1lbnVJdGVtO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgZW51bVNoYXJlT3B0aW9uLk1TX1RFQU1TX0dST1VQOlxuXHRcdFx0XHRyZWYgPSB0aGlzLm1zVGVhbXNHcm91cE1lbnVJdGVtO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgZW51bVNoYXJlT3B0aW9uLlNIQVJFX0NPTExBQk9SQVRJT05fTUFOQUdFUjpcblx0XHRcdFx0cmVmID0gdGhpcy5zaGFyZUFzQ29sbGFib3JhdGlvbk1hbmFnZXI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlZjtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIHZpc2liaWxpdHkgZXhwcmVzc2lvbiBvZiBzaGFyZSBvcHRpb24gYmFzZWQgb24gdGhlIGJ1aWxkaW5nIGJsb2NrIGNvbmZpZ3VyYXRpb24uXG5cdCAqIEBwYXJhbSBvcHRpb24gU2hhcmUgb3B0aW9uIG5hbWUgb2YgdGhlIHZpc2libGUgZXhwcmVzc2lvbiB0aGF0IG5lZWRzIHRvIGJlIGZldGNoZWQuXG5cdCAqIEByZXR1cm5zIEJpbmRpbmcgdG9vbGtpdCBleHByZXNzaW9uLlxuXHQgKi9cblx0X2dldFNoYXJlT3B0aW9uVmlzaWJpbGl0eUV4cHJlc3Npb24ob3B0aW9uPzogU2hhcmVPcHRpb25LZXkpOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRcdGNvbnN0IG9wdGlvbk1lbnVJdGVtUmVmID0gdGhpcy5fZ2V0TWVudUl0ZW1SZWZlcmVuY2Uob3B0aW9uKTtcblx0XHRpZiAoIW9wdGlvbk1lbnVJdGVtUmVmPy5jdXJyZW50KSB7XG5cdFx0XHRyZXR1cm4gY29uc3RhbnQoZmFsc2UpO1xuXHRcdH1cblxuXHRcdGxldCBleHA6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPjtcblx0XHRzd2l0Y2ggKG9wdGlvbikge1xuXHRcdFx0Y2FzZSBlbnVtU2hhcmVPcHRpb24uQ09MTEFCT1JBVElPTl9NU1RFQU1TX0NBUkQ6XG5cdFx0XHRjYXNlIGVudW1TaGFyZU9wdGlvbi5DT0xMQUJPUkFUSU9OX01TVEVBTVNfQ0hBVDpcblx0XHRcdGNhc2UgZW51bVNoYXJlT3B0aW9uLkNPTExBQk9SQVRJT05fTVNURUFNU19UQUI6XG5cdFx0XHRcdGV4cCA9IHRoaXMuX2dldE1TVGVhbXNTaGFyZU9wdGlvblZpc2liaWxpdHkob3B0aW9uKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIGVudW1TaGFyZU9wdGlvbi5TSEFSRV9DT0xMQUJPUkFUSU9OX01BTkFHRVI6XG5cdFx0XHRcdGV4cCA9IHRoaXMuX2dldENvbGxhYm9yYXRpb25PcHRpb25FeHByZXNzaW9uKCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBlbnVtU2hhcmVPcHRpb24uU0VORF9FTUFJTDoge1xuXHRcdFx0XHRjb25zdCBzaG93U2VuZEVtYWlsID0gcmVzb2x2ZUJpbmRpbmdTdHJpbmc8Ym9vbGVhbj4odGhpcy5zaGFyZU9wdGlvbnM/LnNob3dTZW5kRW1haWwgPz8gdHJ1ZSwgXCJib29sZWFuXCIpO1xuXHRcdFx0XHRjb25zdCBpbnRlcm5hbE9wdGlvbiA9IHJlc29sdmVCaW5kaW5nU3RyaW5nKFxuXHRcdFx0XHRcdHRoaXMuX2Jsb2NrSW50ZXJuYWxDb25maWcuc2hvd1NlbmRFbWFpbCA/PyB0cnVlLFxuXHRcdFx0XHRcdFwiYm9vbGVhblwiXG5cdFx0XHRcdCkgYXMgdW5rbm93biBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj47XG5cdFx0XHRcdGlmIChpc0NvbnN0YW50KGludGVybmFsT3B0aW9uKSAmJiBpbnRlcm5hbE9wdGlvbi52YWx1ZSA9PT0gZmFsc2UpIHtcblx0XHRcdFx0XHRleHAgPSBjb25zdGFudChmYWxzZSk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoaXNDb25zdGFudChpbnRlcm5hbE9wdGlvbikgJiYgaW50ZXJuYWxPcHRpb24udmFsdWUgPT09IHRydWUpIHtcblx0XHRcdFx0XHRleHAgPSAodGhpcy5zaGFyZU9wdGlvbnM/LnNob3dTZW5kRW1haWwgPz8gdHJ1ZSkgYXMgdW5rbm93biBhcyBFbWJlZGRlZFVJNUJpbmRpbmdFeHByZXNzaW9uPGJvb2xlYW4+O1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGV4cCA9IGFuZChzaG93U2VuZEVtYWlsLCBpbnRlcm5hbE9wdGlvbikgYXMgdW5rbm93biBhcyBFbWJlZGRlZFVJNUJpbmRpbmdFeHByZXNzaW9uPGJvb2xlYW4+O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSBlbnVtU2hhcmVPcHRpb24uU0hBUkVfSkFNOlxuXHRcdFx0Y2FzZSBlbnVtU2hhcmVPcHRpb24uU0FWRV9BU19USUxFOiB7XG5cdFx0XHRcdC8vIE5vIG92ZXJyaWRlcyBmb3IgU2hhcmUgdmlhIEphbSBhbmQgU2F2ZSBhcyB0aWxlIHlldC5cblx0XHRcdFx0ZXhwID0gY29uc3RhbnQodHJ1ZSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSBlbnVtU2hhcmVPcHRpb24uTVNfVEVBTVNfR1JPVVA6IHtcblx0XHRcdFx0Y29uc3QgbXNUZWFtc0NvbmZpZ0V4cCA9IHRoaXMuX2dldFNob3dNc1RlYW1zT3B0aW9uc0V4cHJlc3Npb24oKTtcblx0XHRcdFx0Y29uc3QgbXNUZWFtc09wdGlvbnNWYWx1ZSA9IE9iamVjdC5rZXlzKGVudW1NU1RlYW1zT3B0aW9uKSBhcyBTaGFyZU9wdGlvbktleVtdO1xuXHRcdFx0XHRjb25zdCBhbGxNU1RlYW1zT3B0aW9uc0V4cHMgPSBtc1RlYW1zT3B0aW9uc1ZhbHVlLnJlZHVjZShcblx0XHRcdFx0XHQoYmluZGluZ1Rvb2xraXRFeHA6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPltdLCBtc1RlYW1zT3B0aW9uOiBTaGFyZU9wdGlvbktleSkgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3QgbXNUZWFtT3B0aW9uRXhwID0gdGhpcy5fZ2V0TVNUZWFtc1NoYXJlT3B0aW9uVmlzaWJpbGl0eShtc1RlYW1zT3B0aW9uKTtcblx0XHRcdFx0XHRcdHJldHVybiBbLi4uYmluZGluZ1Rvb2xraXRFeHAsIG1zVGVhbU9wdGlvbkV4cF07XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRbXSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj5bXVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRleHAgPSBhbmQobXNUZWFtc0NvbmZpZ0V4cCwgb3IoLi4uYWxsTVNUZWFtc09wdGlvbnNFeHBzKSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0ZXhwID0gY29uc3RhbnQoZmFsc2UpO1xuXHRcdH1cblxuXHRcdHJldHVybiBleHA7XG5cdH1cblxuXHRfZ2V0Q29sbGFib3JhdGlvbk9wdGlvbkV4cHJlc3Npb24oKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0XHRjb25zdCBzaG93Q29sbGFib3JhdGlvbk1hbmFnZXIgPSB0aGlzLnNoYXJlT3B0aW9ucz8uc2hvd0NvbGxhYm9yYXRpb25NYW5hZ2VyID8/IGZhbHNlO1xuXHRcdGNvbnN0IG9wdGlvbkV4cCA9IHJlc29sdmVCaW5kaW5nU3RyaW5nPGJvb2xlYW4+KHNob3dDb2xsYWJvcmF0aW9uTWFuYWdlciwgXCJib29sZWFuXCIpO1xuXHRcdGNvbnN0IGludGVybmFsT3B0aW9uID0gdGhpcy5fYmxvY2tJbnRlcm5hbENvbmZpZy5zaG93Q29sbGFib3JhdGlvbk1hbmFnZXIgPz8gdHJ1ZTtcblx0XHRjb25zdCBpbnRlcm5hbE9wdGlvbkV4cCA9IHJlc29sdmVCaW5kaW5nU3RyaW5nPGJvb2xlYW4+KGludGVybmFsT3B0aW9uLCBcImJvb2xlYW5cIik7XG5cdFx0cmV0dXJuIGFuZChvcHRpb25FeHAsIGludGVybmFsT3B0aW9uRXhwKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgZXhwcmVzc2lvbiBmb3Igc2hvd01zVGVhbXNPcHRpb25zIHNoYXJlIG9wdGlvbiBiYXNlZCBvbiB0aGUgYnVpbGRpbmcgYmxvY2sgY29uZmlndXJhdGlvbi5cblx0ICogQHJldHVybnMgQmluZGluZyB0b29sa2l0IGV4cHJlc3Npb24uXG5cdCAqL1xuXHRfZ2V0U2hvd01zVGVhbXNPcHRpb25zRXhwcmVzc2lvbigpOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRcdGNvbnN0IGludGVybmFsT3B0aW9uID0gdGhpcy5fYmxvY2tJbnRlcm5hbENvbmZpZy5zaG93TXNUZWFtc09wdGlvbnMgPz8gdHJ1ZTtcblx0XHRyZXR1cm4gcmVzb2x2ZUJpbmRpbmdTdHJpbmc8Ym9vbGVhbj4oaW50ZXJuYWxPcHRpb24sIFwiYm9vbGVhblwiKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgYmluZGluZyB0b29sa2l0IGV4cHJlc3Npb24gZm9yIHNoYXJlIGFzIGNhcmQgdmlzaWJpbGl0eS5cblx0ICogQHJldHVybnMgQmluZGluZyB0b29sa2l0IGV4cHJlc3Npb24uXG5cdCAqL1xuXHRfZ2V0U2hhcmVBc0NhcmRWaXNpYmlsaXR5KCk6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdFx0bGV0IGV4cDogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+O1xuXHRcdGNvbnN0IHNoYXJlQXNDYXJkT3B0aW9uUmVmID0gdGhpcy5fZ2V0TWVudUl0ZW1SZWZlcmVuY2UoZW51bVNoYXJlT3B0aW9uLkNPTExBQk9SQVRJT05fTVNURUFNU19DQVJEKTtcblx0XHRpZiAoc2hhcmVBc0NhcmRPcHRpb25SZWY/LmN1cnJlbnQpIHtcblx0XHRcdGNvbnN0IGV4cFNob3dNU1RlYW1zT3B0aW9ucyA9IHRoaXMuX2dldFNob3dNc1RlYW1zT3B0aW9uc0V4cHJlc3Npb24oKTtcblx0XHRcdGNvbnN0IHNob3dTaGFyZUFzQ2FyZCA9IHRoaXMubXNUZWFtc09wdGlvbnM/LmVuYWJsZUNhcmQgPz8gdHJ1ZTtcblx0XHRcdGNvbnN0IG9wdGlvbkV4cCA9IHJlc29sdmVCaW5kaW5nU3RyaW5nPGJvb2xlYW4+KHNob3dTaGFyZUFzQ2FyZCwgXCJib29sZWFuXCIpO1xuXHRcdFx0Y29uc3QgaW50ZXJuYWxPcHRpb24gPSB0aGlzLl9ibG9ja0ludGVybmFsQ29uZmlnLmVuYWJsZUNhcmQgPz8gdHJ1ZTtcblx0XHRcdGNvbnN0IGludGVybmFsT3B0aW9uRXhwID0gcmVzb2x2ZUJpbmRpbmdTdHJpbmc8Ym9vbGVhbj4oaW50ZXJuYWxPcHRpb24sIFwiYm9vbGVhblwiKTtcblx0XHRcdGNvbnN0IGV4cFNob3dTaGFyZUFzQ2FyZCA9IGFuZChvcHRpb25FeHAsIGludGVybmFsT3B0aW9uRXhwKTtcblx0XHRcdGV4cCA9IGFuZChub3QoVUkuSXNFZGl0YWJsZSksIGV4cFNob3dNU1RlYW1zT3B0aW9ucywgZXhwU2hvd1NoYXJlQXNDYXJkKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZXhwID0gY29uc3RhbnQoZmFsc2UpO1xuXHRcdH1cblx0XHRyZXR1cm4gZXhwO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBiaW5kaW5nIHRvb2xraXQgZXhwcmVzc2lvbiBmb3Igc2hhcmUgb3B0aW9uJ3MgdmlzaWJpbGl0eS5cblx0ICogQHBhcmFtIG9wdGlvbiBTaGFyZSBvcHRpb24ga2V5XG5cdCAqIEByZXR1cm5zIEJpbmRpbmcgdG9vbGtpdCBleHByZXNzaW9uLlxuXHQgKi9cblx0X2dldE1TVGVhbXNTaGFyZU9wdGlvblZpc2liaWxpdHkob3B0aW9uOiBTaGFyZU9wdGlvbktleSk6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdFx0aWYgKG9wdGlvbiA9PT0gZW51bVNoYXJlT3B0aW9uLkNPTExBQk9SQVRJT05fTVNURUFNU19DQVJEKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5fZ2V0U2hhcmVBc0NhcmRWaXNpYmlsaXR5KCk7XG5cdFx0fVxuXHRcdC8vIE5vIG92ZXJyaWRlcyBmb3IgU2hhcmUgYXMgVGFiIGFuZCBDaGF0IHlldC5cblxuXHRcdGNvbnN0IG1zVGVhbXNPcHRpb25SZWYgPSB0aGlzLl9nZXRNZW51SXRlbVJlZmVyZW5jZShvcHRpb24pO1xuXHRcdHJldHVybiBtc1RlYW1zT3B0aW9uUmVmPy5jdXJyZW50ID8gdGhpcy5fZ2V0U2hvd01zVGVhbXNPcHRpb25zRXhwcmVzc2lvbigpIDogY29uc3RhbnQoZmFsc2UpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldCB2aXNpYmxpdHkgb2YgaW5kaXZpZHVhbCBzaGFyZSBvcHRpb24ncyBNZW51SXRlbS5cblx0ICogQHBhcmFtIG9wdGlvbiBTaGFyZSBvcHRpb24ga2V5XG5cdCAqIEBwYXJhbSBleHByZXNzaW9uIFZpc2liaWxpdHkgYmluZGluZyB0b29sa2l0IGV4cHJlc3Npb25cblx0ICovXG5cdF9zZXRTaGFyZU9wdGlvblZpc2liaWxpdHkob3B0aW9uOiBTaGFyZU9wdGlvbktleSwgZXhwcmVzc2lvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+KTogdm9pZCB7XG5cdFx0Y29uc3QgbWVudUl0ZW1SZWYgPSB0aGlzLl9nZXRNZW51SXRlbVJlZmVyZW5jZShvcHRpb24pO1xuXHRcdGlmIChtZW51SXRlbVJlZj8uY3VycmVudCkge1xuXHRcdFx0dGhpcy5fYmluZFVJVmlzaWJpbGl0eShtZW51SXRlbVJlZi5jdXJyZW50LCBleHByZXNzaW9uKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQmluZCB0aGUgVUkgZWxlbWVudCdzIHZpc2liaWxpdHkgcHJvcGVydHkuXG5cdCAqIEBwYXJhbSBpdGVtIFVJIGVsZW1lbnRcblx0ICogQHBhcmFtIGV4cHJlc3Npb24gRXhwcmVzc2lvbiB0byBiaW5kLlxuXHQgKi9cblx0X2JpbmRVSVZpc2liaWxpdHkoaXRlbTogTWVudUJ1dHRvbiB8IE1lbnVJdGVtIHwgQ29tbWFuZEV4ZWN1dGlvbiwgZXhwcmVzc2lvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+KTogdm9pZCB7XG5cdFx0Ly8gTk9URTogV2UgbmVlZCBjb252ZXJ0IHRoZSBiaW5kaW5nIHRvb2xraXQgZXhwcmVzc2lvbiB0byB0aGUgZm9ybWF0IHRoYXQgY2FuIGJlIGNvbnN1bWVkIGJ5IHRoZSBVSSBlbGVtZW50LlxuXHRcdC8vIEF0IHJ1bnRpbWUsIHdlIGNhbid0IHVzZSBiaW5kaW5nIHRvb2xraXQgZXhwcmVzc2lvbiBvciBjb21waWxlZCBleHByZXNzaW9uIGRpcmVjdGx5IHRvIGJpbmQgdGhlIHZpc2liaWxpdHkgb3Igc2V0IHRoZSB2aXNpYmxlIHByb3BlcnR5IG9yIHRoZSBVSSBlbGVtZW50LlxuXHRcdC8vIFdlIHdvdWxkIG5lZWQgdG8gY29udmVydCB0aGUgYmluZGluZyB0b29sa2l0IGV4cHJlc3Npb24gLT4gVUk1IEJpbmRpbmdJbmZvIHRvIGJpbmQgdGhlIFVJIGVsZW1lbnQuXG5cdFx0Y29uc3QgY29tcGlsZWRFeHAgPSBjb21waWxlRXhwcmVzc2lvbihleHByZXNzaW9uKTtcblxuXHRcdGlmIChjb21waWxlZEV4cCAmJiBjb21waWxlZEV4cC5zdGFydHNXaXRoKFwie1wiKSAmJiBjb21waWxlZEV4cD8uZW5kc1dpdGgoXCJ9XCIpKSB7XG5cdFx0XHQvLyBQcm9iYWJsZSBiaW5kaW5nXG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCBwYXJzZWRFeHAgPSBCaW5kaW5nSW5mby5wYXJzZShjb21waWxlZEV4cCk7XG5cdFx0XHRcdGl0ZW0uYmluZFByb3BlcnR5KFwidmlzaWJsZVwiLCBwYXJzZWRFeHApO1xuXHRcdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRcdExvZy5lcnJvcihlcnIgYXMgc3RyaW5nKTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKGNvbXBpbGVkRXhwID09PSBcImZhbHNlXCIpIHtcblx0XHRcdC8vIFN0YXRpY2FsbHkgZmFsc2Vcblx0XHRcdGl0ZW0udW5iaW5kUHJvcGVydHkoXCJ2aXNpYmxlXCIsIHRydWUpO1xuXHRcdFx0aXRlbS5zZXRWaXNpYmxlKGZhbHNlKTtcblx0XHR9XG5cdH1cblxuXHRfZ2V0U2hhcmVCbG9ja0NvbmZpZyh2aWV3OiBWaWV3KTogQ29uZmlnT3B0aW9ucyB7XG5cdFx0Y29uc3Qgdmlld0RhdGEgPSB2aWV3LmdldFZpZXdEYXRhKCkgYXMgVmlld0RhdGE7XG5cdFx0Y29uc3Qgdmlld1NoYXJlQ29uZmlncyA9IHZpZXdEYXRhPy5zaGFyZTtcblx0XHRjb25zdCBjb250cm9sbGVyID0gdmlldy5nZXRDb250cm9sbGVyKCkgYXMgUGFnZUNvbnRyb2xsZXI7XG5cdFx0Y29uc3QgZmVBcHBTaGFyZUNvbmZpZ3MgPSBjb250cm9sbGVyLmdldEFwcENvbXBvbmVudCgpLmdldE1hbmlmZXN0RW50cnkoXCJzYXAuZmVcIik/LmFwcD8uc2hhcmU7XG5cblx0XHRjb25zdCBzaG93U2VuZEVtYWlsID0gdGhpcy5fZ2V0T3B0aW9uQmxvY2tDb25maWcoZmVBcHBTaGFyZUNvbmZpZ3M/LnNob3dTZW5kRW1haWwsIHZpZXdTaGFyZUNvbmZpZ3M/LnNob3dTZW5kRW1haWwpO1xuXHRcdGNvbnN0IHNob3dDb2xsYWJvcmF0aW9uTWFuYWdlciA9IHRoaXMuX2dldE9wdGlvbkJsb2NrQ29uZmlnKFxuXHRcdFx0ZmVBcHBTaGFyZUNvbmZpZ3M/LnNob3dDb2xsYWJvcmF0aW9uTWFuYWdlcixcblx0XHRcdHZpZXdTaGFyZUNvbmZpZ3M/LnNob3dDb2xsYWJvcmF0aW9uTWFuYWdlclxuXHRcdCk7XG5cblx0XHRjb25zdCBzaG93TXNUZWFtc09wdGlvbnMgPSB0aGlzLl9nZXRPcHRpb25CbG9ja0NvbmZpZyhcblx0XHRcdGZlQXBwU2hhcmVDb25maWdzPy50ZWFtcz8uc2hvd01zVGVhbXNPcHRpb25zLFxuXHRcdFx0dmlld1NoYXJlQ29uZmlncz8udGVhbXM/LnNob3dNc1RlYW1zT3B0aW9uc1xuXHRcdCk7XG5cdFx0Y29uc3QgZW5hYmxlQ2FyZCA9IHRoaXMuX2dldE9wdGlvbkJsb2NrQ29uZmlnKGZlQXBwU2hhcmVDb25maWdzPy50ZWFtcz8uYXNDYXJkLCB2aWV3U2hhcmVDb25maWdzPy50ZWFtcz8uYXNDYXJkKTtcblxuXHRcdHJldHVybiB7IHNob3dTZW5kRW1haWwsIHNob3dNc1RlYW1zT3B0aW9ucywgZW5hYmxlQ2FyZCwgc2hvd0NvbGxhYm9yYXRpb25NYW5hZ2VyIH07XG5cdH1cblxuXHRfZ2V0T3B0aW9uQmxvY2tDb25maWcoZmVBcHBTZXR0aW5nPzogYm9vbGVhbiB8IHN0cmluZywgdmlld0xldmVsU2V0dGluZz86IGJvb2xlYW4gfCBzdHJpbmcpOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB7XG5cdFx0Y29uc3QgZmVBcHBFeHAgPSB0eXBlb2YgZmVBcHBTZXR0aW5nID09PSBcInN0cmluZ1wiID8gcmVzb2x2ZUJpbmRpbmdTdHJpbmc8Ym9vbGVhbj4oZmVBcHBTZXR0aW5nKSA6IGNvbnN0YW50KGZlQXBwU2V0dGluZyA/PyB0cnVlKTtcblx0XHRjb25zdCB2aWV3TGV2ZWxFeHAgPVxuXHRcdFx0dHlwZW9mIHZpZXdMZXZlbFNldHRpbmcgPT09IFwic3RyaW5nXCIgPyByZXNvbHZlQmluZGluZ1N0cmluZzxib29sZWFuPih2aWV3TGV2ZWxTZXR0aW5nKSA6IGNvbnN0YW50KHZpZXdMZXZlbFNldHRpbmcgPz8gdHJ1ZSk7XG5cdFx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKGFuZChmZUFwcEV4cCwgdmlld0xldmVsRXhwKSk7XG5cdH1cblxuXHRjcmVhdGVDb250ZW50KGFwcENvbXBvbmVudDogQXBwQ29tcG9uZW50KTogU2hhcmVBUEkge1xuXHRcdC8vIEN0cmwrU2hpZnQrUyBpcyBuZWVkZWQgZm9yIHRoZSB0aW1lIGJlaW5nIGJ1dCB0aGlzIG5lZWRzIHRvIGJlIHJlbW92ZWQgYWZ0ZXIgYmFja2xvZyBmcm9tIG1lbnUgYnV0dG9uXG5cdFx0Y29uc3QgbWVudUJ1dHRvbiA9IChcblx0XHRcdDxTaGFyZUFQSSBpZD17dGhpcy5zaGFyZUFQSUlkfT5cblx0XHRcdFx0PE92ZXJmbG93VG9vbGJhck1lbnVCdXR0b25cblx0XHRcdFx0XHR0ZXh0PXtcIntzYXAuZmUuaTE4bj5NX0NPTU1PTl9TQVBGRV9BQ1RJT05fU0hBUkV9XCJ9XG5cdFx0XHRcdFx0cmVmPXt0aGlzLm1lbnVCdXR0b259XG5cdFx0XHRcdFx0aWNvbj17XCJzYXAtaWNvbjovL2FjdGlvblwifVxuXHRcdFx0XHRcdHRvb2x0aXA9e1wie3NhcC5mZS5pMThuPk1fQ09NTU9OX1NBUEZFX0FDVElPTl9TSEFSRX0gKEN0cmwrU2hpZnQrUylcIn1cblx0XHRcdFx0PlxuXHRcdFx0XHRcdDxNZW51IHJlZj17dGhpcy5tZW51fT48L01lbnU+XG5cdFx0XHRcdDwvT3ZlcmZsb3dUb29sYmFyTWVudUJ1dHRvbj5cblx0XHRcdDwvU2hhcmVBUEk+XG5cdFx0KSBhcyBTaGFyZUFQSTtcblx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKClcblx0XHRcdC5nZXRWaWV3KClcblx0XHRcdC5hZGREZXBlbmRlbnQoXG5cdFx0XHRcdDxDb21tYW5kRXhlY3V0aW9uXG5cdFx0XHRcdFx0cmVmPXt0aGlzLmNtZEV4ZWN1dGlvbn1cblx0XHRcdFx0XHRjb21tYW5kPVwiU2hhcmVcIlxuXHRcdFx0XHRcdGV4ZWN1dGU9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdHRoaXMubWVudUJ1dHRvbi5jdXJyZW50Py5nZXRNZW51KCkub3BlbkJ5KHRoaXMubWVudUJ1dHRvbi5jdXJyZW50LCB0cnVlKTtcblx0XHRcdFx0XHR9fVxuXHRcdFx0XHQvPlxuXHRcdFx0KTtcblx0XHQvLyBUaGUgaW5pdGlhbGl6YXRpb24gaXMgYXN5bmNocm9ub3VzLCBzbyB3ZSBqdXN0IHRyaWdnZXIgaXQgYW5kIGhvcGUgZm9yIHRoZSBiZXN0IDpEXG5cdFx0dGhpcy5pc0luaXRpYWxpemVkID0gdGhpcy5faW5pdGlhbGl6ZU1lbnVJdGVtcyh0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkuZ2V0VmlldygpLCBhcHBDb21wb25lbnQpLmNhdGNoKChlcnJvcikgPT4ge1xuXHRcdFx0TG9nLmVycm9yKGVycm9yIGFzIHN0cmluZyk7XG5cdFx0fSk7XG5cblx0XHR0aGlzLnNldExheW91dERhdGEoXG5cdFx0XHRuZXcgT3ZlcmZsb3dUb29sYmFyTGF5b3V0RGF0YSh7XG5cdFx0XHRcdHByaW9yaXR5OiB0aGlzLnByaW9yaXR5XG5cdFx0XHR9KVxuXHRcdCk7XG5cdFx0cmV0dXJuIG1lbnVCdXR0b247XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyBwcm9wZXJ0aWVzIGZvciB0aGUgaW50ZXJmYWNlIElPdmVyZmxvd1Rvb2xiYXJDb250ZW50LlxuXHQgKiBAcmV0dXJucyBSZXR1cm5zIHRoZSBjb25maWd1cmF0aW9uIG9mIElPdmVyZmxvd1Rvb2xiYXJDb250ZW50XG5cdCAqL1xuXHRnZXRPdmVyZmxvd1Rvb2xiYXJDb25maWcoKTogb2JqZWN0IHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0Y2FuT3ZlcmZsb3c6IHRydWUsXG5cdFx0XHRvbkJlZm9yZUVudGVyT3ZlcmZsb3c6IGZ1bmN0aW9uIChvQ29udHJvbDogU2hhcmUpOiB2b2lkIHtcblx0XHRcdFx0KG9Db250cm9sPy5nZXRDb250ZW50KCk/LmdldENvbnRlbnQoKSBhcyBPdmVyZmxvd1Rvb2xiYXJNZW51QnV0dG9uKS5nZXRUZXh0ID0gZnVuY3Rpb24gKCk6IHN0cmluZyB7XG5cdFx0XHRcdFx0Y29uc3QgcmVzb3VyY2VNb2RlbCA9IGdldFJlc291cmNlTW9kZWwob0NvbnRyb2wgYXMgQ29udHJvbCk7XG5cdFx0XHRcdFx0cmV0dXJuIHJlc291cmNlTW9kZWwuZ2V0VGV4dChcIk1fQ09NTU9OX1NBUEZFX0FDVElPTl9TSEFSRVwiKTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHRvbkFmdGVyRXhpdE92ZXJmbG93OiBmdW5jdGlvbiAob0NvbnRyb2w6IFNoYXJlKTogdm9pZCB7XG5cdFx0XHRcdChvQ29udHJvbD8uZ2V0Q29udGVudCgpPy5nZXRDb250ZW50KCkgYXMgT3ZlcmZsb3dUb29sYmFyTWVudUJ1dHRvbikuZ2V0VGV4dCA9IGZ1bmN0aW9uICgpOiBzdHJpbmcge1xuXHRcdFx0XHRcdHJldHVybiBcIlwiO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdHByaW9yaXR5OiB0aGlzLnByaW9yaXR5XG5cdFx0fTtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
@@ -31,12 +31,14 @@ import {
|
|
|
31
31
|
PRINT_ICON
|
|
32
32
|
} from "sap/fe/core/converters/controls/Common/Action";
|
|
33
33
|
import FPMHelper from "sap/fe/core/helpers/FPMHelper";
|
|
34
|
+
import { getResourceModel } from "sap/fe/core/helpers/ResourceModelHelper";
|
|
34
35
|
import type { ViewData } from "sap/fe/core/services/TemplatedViewServiceFactory";
|
|
35
36
|
import ShareOptions from "sap/fe/macros/share/ShareOptions";
|
|
36
37
|
import OverflowToolbarLayoutData from "sap/m/OverflowToolbarLayoutData";
|
|
37
38
|
import OverflowToolbarMenuButton from "sap/m/OverflowToolbarMenuButton";
|
|
38
39
|
import { OverflowToolbarPriority } from "sap/m/library";
|
|
39
40
|
import BindingInfo from "sap/ui/base/BindingInfo";
|
|
41
|
+
import type Control from "sap/ui/core/Control";
|
|
40
42
|
import type { $ControlSettings } from "sap/ui/core/Control";
|
|
41
43
|
import MsTeamsOptions from "./share/MsTeamsOptions";
|
|
42
44
|
import ShareAPI from "./share/ShareAPI";
|
|
@@ -954,6 +956,17 @@ export default class Share extends BuildingBlock<ShareAPI> {
|
|
|
954
956
|
getOverflowToolbarConfig(): object {
|
|
955
957
|
return {
|
|
956
958
|
canOverflow: true,
|
|
959
|
+
onBeforeEnterOverflow: function (oControl: Share): void {
|
|
960
|
+
(oControl?.getContent()?.getContent() as OverflowToolbarMenuButton).getText = function (): string {
|
|
961
|
+
const resourceModel = getResourceModel(oControl as Control);
|
|
962
|
+
return resourceModel.getText("M_COMMON_SAPFE_ACTION_SHARE");
|
|
963
|
+
};
|
|
964
|
+
},
|
|
965
|
+
onAfterExitOverflow: function (oControl: Share): void {
|
|
966
|
+
(oControl?.getContent()?.getContent() as OverflowToolbarMenuButton).getText = function (): string {
|
|
967
|
+
return "";
|
|
968
|
+
};
|
|
969
|
+
},
|
|
957
970
|
priority: this.priority
|
|
958
971
|
};
|
|
959
972
|
}
|