@sapui5/sap.fe.macros 1.141.1 → 1.142.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/Breadcrumbs.js +4 -10
- package/src/sap/fe/macros/Breadcrumbs.tsx +2 -8
- package/src/sap/fe/macros/Chart.js +34 -23
- package/src/sap/fe/macros/Chart.tsx +25 -11
- package/src/sap/fe/macros/CollaborativeDraftHandler.js +48 -31
- package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +51 -26
- package/src/sap/fe/macros/CollectionBindingInfo.js +8 -2
- package/src/sap/fe/macros/CollectionBindingInfo.ts +11 -6
- package/src/sap/fe/macros/CommonHelper.js +14 -24
- package/src/sap/fe/macros/CommonHelper.ts +18 -25
- package/src/sap/fe/macros/Field.js +30 -13
- package/src/sap/fe/macros/Field.ts +60 -30
- package/src/sap/fe/macros/FooterContent.js +5 -2
- package/src/sap/fe/macros/FooterContent.tsx +6 -3
- package/src/sap/fe/macros/KPITag.js +1 -1
- package/src/sap/fe/macros/KPITag.tsx +3 -1
- package/src/sap/fe/macros/MacroAPI.js +3 -2
- package/src/sap/fe/macros/MacroAPI.ts +2 -2
- package/src/sap/fe/macros/MessageButton.js +3 -2
- package/src/sap/fe/macros/MessageButton.tsx +5 -2
- package/src/sap/fe/macros/MicroChart.js +10 -6
- package/src/sap/fe/macros/MicroChart.tsx +8 -2
- package/src/sap/fe/macros/MultiValueField.js +22 -36
- package/src/sap/fe/macros/MultiValueField.tsx +34 -66
- package/src/sap/fe/macros/RichTextEditor.js +3 -4
- package/src/sap/fe/macros/RichTextEditor.tsx +2 -3
- package/src/sap/fe/macros/Status.js +35 -8
- package/src/sap/fe/macros/Status.tsx +23 -2
- package/src/sap/fe/macros/ValueHelp.js +5 -2
- package/src/sap/fe/macros/ValueHelp.tsx +5 -0
- package/src/sap/fe/macros/ai/EasyFilterBar.js +7 -34
- package/src/sap/fe/macros/ai/EasyFilterBar.tsx +6 -35
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +31 -7
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +33 -6
- package/src/sap/fe/macros/chart/Action.js +25 -2
- package/src/sap/fe/macros/chart/Action.ts +13 -0
- package/src/sap/fe/macros/chart/ActionGroup.js +25 -2
- package/src/sap/fe/macros/chart/ActionGroup.ts +13 -0
- package/src/sap/fe/macros/chart/ChartDelegate.js +8 -8
- package/src/sap/fe/macros/chart/ChartDelegate.ts +17 -12
- package/src/sap/fe/macros/chart/MdcChartTemplate.js +54 -11
- package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +70 -11
- package/src/sap/fe/macros/chart/OverflowGroup.js +62 -0
- package/src/sap/fe/macros/chart/OverflowGroup.ts +22 -0
- package/src/sap/fe/macros/controls/FilterBar.js +39 -3
- package/src/sap/fe/macros/controls/FilterBar.ts +42 -1
- package/src/sap/fe/macros/controls/RadioButtons.js +18 -5
- package/src/sap/fe/macros/controls/RadioButtons.tsx +10 -1
- package/src/sap/fe/macros/coreUI/CreateDialog.js +2 -2
- package/src/sap/fe/macros/coreUI/CreateDialog.tsx +1 -1
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +37 -9
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +45 -6
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +4 -2
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +3 -1
- package/src/sap/fe/macros/field/FieldFormatOptions.js +3 -3
- package/src/sap/fe/macros/field/FieldFormatOptions.ts +1 -1
- package/src/sap/fe/macros/field/FieldHelper.js +4 -3
- package/src/sap/fe/macros/field/FieldHelper.ts +7 -1
- package/src/sap/fe/macros/field/FieldRuntime.js +38 -8
- package/src/sap/fe/macros/field/FieldRuntime.ts +65 -7
- package/src/sap/fe/macros/field/FieldRuntimeHelper.js +3 -34
- package/src/sap/fe/macros/field/FieldRuntimeHelper.ts +28 -53
- package/src/sap/fe/macros/field/FieldTemplating.js +5 -4
- package/src/sap/fe/macros/field/FieldTemplating.ts +6 -4
- package/src/sap/fe/macros/filter/FilterFieldHelper.js +6 -4
- package/src/sap/fe/macros/filter/FilterFieldHelper.ts +7 -2
- package/src/sap/fe/macros/filter/FilterUtils.js +100 -36
- package/src/sap/fe/macros/filter/FilterUtils.ts +127 -39
- package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.js +2 -2
- package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.ts +1 -1
- package/src/sap/fe/macros/filterBar/FilterBar.block.js +4 -3
- package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +19 -8
- package/src/sap/fe/macros/filterBar/FilterBarAPI.js +10 -7
- package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +31 -16
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +4 -3
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +5 -2
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +4 -3
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +3 -2
- package/src/sap/fe/macros/form/Form.block.js +27 -2
- package/src/sap/fe/macros/form/Form.block.ts +31 -11
- package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -3
- package/src/sap/fe/macros/form/FormContainer.block.js +96 -65
- package/src/sap/fe/macros/form/FormContainer.block.ts +104 -65
- package/src/sap/fe/macros/formatters/TableFormatter.js +13 -10
- package/src/sap/fe/macros/formatters/TableFormatter.ts +11 -9
- package/src/sap/fe/macros/formatters/VisualFilterFormatter.js +6 -4
- package/src/sap/fe/macros/formatters/VisualFilterFormatter.ts +5 -5
- package/src/sap/fe/macros/inlineEdit/InlineEdit.js +5 -5
- package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +4 -4
- package/src/sap/fe/macros/insights/InsightsService.js +3 -2
- package/src/sap/fe/macros/insights/InsightsService.ts +2 -1
- package/src/sap/fe/macros/internal/DataPoint.js +7 -8
- package/src/sap/fe/macros/internal/DataPoint.tsx +6 -9
- package/src/sap/fe/macros/internal/field/DisplayStyle.js +8 -6
- package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +7 -8
- package/src/sap/fe/macros/internal/field/EditStyle.js +9 -20
- package/src/sap/fe/macros/internal/field/EditStyle.tsx +17 -41
- package/src/sap/fe/macros/internal/field/FieldBlockStructure.js +2 -2
- package/src/sap/fe/macros/internal/field/FieldBlockStructure.tsx +1 -1
- package/src/sap/fe/macros/internal/field/FieldStructure.js +1 -2
- package/src/sap/fe/macros/internal/field/FieldStructure.tsx +0 -2
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +7 -7
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +17 -11
- package/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +6 -2
- package/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +5 -1
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.js +9 -6
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.ts +7 -5
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +4 -4
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +6 -6
- package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +5 -2
- package/src/sap/fe/macros/library.js +3 -3
- package/src/sap/fe/macros/library.ts +2 -0
- package/src/sap/fe/macros/mdc/adapter/StateHelper.js +15 -5
- package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +21 -5
- package/src/sap/fe/macros/messagebundle.properties +7 -5
- package/src/sap/fe/macros/messagebundle_ar.properties +12 -3
- package/src/sap/fe/macros/messagebundle_bg.properties +13 -4
- package/src/sap/fe/macros/messagebundle_ca.properties +12 -3
- package/src/sap/fe/macros/messagebundle_cnr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_cs.properties +11 -2
- package/src/sap/fe/macros/messagebundle_cy.properties +12 -3
- package/src/sap/fe/macros/messagebundle_da.properties +12 -3
- package/src/sap/fe/macros/messagebundle_de.properties +16 -7
- package/src/sap/fe/macros/messagebundle_el.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en_GB.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_es.properties +12 -3
- package/src/sap/fe/macros/messagebundle_es_MX.properties +12 -3
- package/src/sap/fe/macros/messagebundle_et.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fr_CA.properties +12 -3
- package/src/sap/fe/macros/messagebundle_hi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_hr.properties +13 -4
- package/src/sap/fe/macros/messagebundle_hu.properties +12 -3
- package/src/sap/fe/macros/messagebundle_id.properties +18 -9
- package/src/sap/fe/macros/messagebundle_it.properties +12 -3
- package/src/sap/fe/macros/messagebundle_iw.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ja.properties +12 -3
- package/src/sap/fe/macros/messagebundle_kk.properties +11 -2
- package/src/sap/fe/macros/messagebundle_ko.properties +13 -4
- package/src/sap/fe/macros/messagebundle_lt.properties +12 -3
- package/src/sap/fe/macros/messagebundle_lv.properties +12 -3
- package/src/sap/fe/macros/messagebundle_mk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ms.properties +12 -3
- package/src/sap/fe/macros/messagebundle_nl.properties +12 -3
- package/src/sap/fe/macros/messagebundle_no.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pl.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pt.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pt_PT.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ro.properties +13 -4
- package/src/sap/fe/macros/messagebundle_ru.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sh.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sl.properties +13 -4
- package/src/sap/fe/macros/messagebundle_sr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sv.properties +12 -3
- package/src/sap/fe/macros/messagebundle_th.properties +11 -2
- package/src/sap/fe/macros/messagebundle_tr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_uk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_vi.properties +13 -4
- package/src/sap/fe/macros/messagebundle_zh_CN.properties +12 -3
- package/src/sap/fe/macros/messagebundle_zh_TW.properties +12 -3
- package/src/sap/fe/macros/richtexteditor/ButtonGroup.js +2 -2
- package/src/sap/fe/macros/richtexteditor/ButtonGroup.ts +2 -2
- package/src/sap/fe/macros/table/Action.js +15 -2
- package/src/sap/fe/macros/table/Action.ts +11 -1
- package/src/sap/fe/macros/table/ActionGroup.js +15 -2
- package/src/sap/fe/macros/table/ActionGroup.ts +8 -0
- package/src/sap/fe/macros/table/ActionGroupOverride.js +14 -2
- package/src/sap/fe/macros/table/ActionGroupOverride.ts +7 -0
- package/src/sap/fe/macros/table/ActionOverride.js +14 -2
- package/src/sap/fe/macros/table/ActionOverride.ts +7 -0
- package/src/sap/fe/macros/table/ActionsTemplating.js +16 -2
- package/src/sap/fe/macros/table/ActionsTemplating.tsx +15 -0
- package/src/sap/fe/macros/table/MdcTableTemplate.js +91 -10
- package/src/sap/fe/macros/table/MdcTableTemplate.tsx +131 -10
- package/src/sap/fe/macros/table/OverflowGroups.js +59 -0
- package/src/sap/fe/macros/table/OverflowGroups.ts +27 -0
- package/src/sap/fe/macros/table/Table.block.js +70 -29
- package/src/sap/fe/macros/table/Table.block.tsx +65 -12
- package/src/sap/fe/macros/table/TableAPI.js +169 -131
- package/src/sap/fe/macros/table/TableAPI.ts +58 -28
- package/src/sap/fe/macros/table/TableDefinition.js +19 -2
- package/src/sap/fe/macros/table/TableDefinition.ts +17 -1
- package/src/sap/fe/macros/table/TableEventHandlerProvider.js +4 -3
- package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +8 -9
- package/src/sap/fe/macros/table/TableHelper.js +5 -2
- package/src/sap/fe/macros/table/TableHelper.ts +5 -2
- package/src/sap/fe/macros/table/TableRuntime.js +2 -2
- package/src/sap/fe/macros/table/TableRuntime.ts +4 -6
- package/src/sap/fe/macros/table/TableSizeHelper.js +4 -4
- package/src/sap/fe/macros/table/TableSizeHelper.ts +6 -11
- package/src/sap/fe/macros/table/delegates/TableDelegate.js +67 -26
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +108 -118
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +2 -2
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +1 -1
- package/src/sap/fe/macros/table/massEdit/MassEditField.js +1 -1
- package/src/sap/fe/macros/table/massEdit/MassEditField.tsx +3 -6
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +6 -5
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +10 -4
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.js +7 -9
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.ts +7 -8
- package/src/sap/fe/macros/table/mixin/TableExport.js +1 -1
- package/src/sap/fe/macros/table/mixin/TableExport.ts +3 -3
- package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.js +4 -4
- package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.ts +3 -3
- package/src/sap/fe/macros/visualfilters/VisualFilter.js +20 -2
- package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +28 -6
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +6 -3
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +4 -3
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.js +3 -3
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.tsx +10 -4
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveDonutChart.fragment.xml +1 -1
|
@@ -446,7 +446,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/fe/base/BindingToolki
|
|
|
446
446
|
}
|
|
447
447
|
};
|
|
448
448
|
_proto.getTitle = function getTitle() {
|
|
449
|
-
|
|
449
|
+
const titleControl = _jsx(Title, {
|
|
450
450
|
id: generate([this._contentId, "MeasureDimensionTitle"]),
|
|
451
451
|
text: this.measureDimensionTitle,
|
|
452
452
|
tooltip: this.toolTip,
|
|
@@ -454,6 +454,10 @@ sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/fe/base/BindingToolki
|
|
|
454
454
|
level: "H3",
|
|
455
455
|
class: "sapUiTinyMarginEnd sapUiNoMarginBegin"
|
|
456
456
|
});
|
|
457
|
+
|
|
458
|
+
// Attach event delegates after the controls are rendered and view is available
|
|
459
|
+
this._attachTitleEventDelegates(titleControl);
|
|
460
|
+
return titleControl;
|
|
457
461
|
};
|
|
458
462
|
_proto.getUoMTitle = function getUoMTitle(showErrorExpression) {
|
|
459
463
|
if (this.UoMVisibility) {
|
|
@@ -529,6 +533,20 @@ sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/fe/base/BindingToolki
|
|
|
529
533
|
}
|
|
530
534
|
}
|
|
531
535
|
|
|
536
|
+
/**
|
|
537
|
+
* Attaches mouseover and mouseout event delegates to the measure dimension title.
|
|
538
|
+
* This creates dynamic tooltips that combine measure titles with scale/UOM information.
|
|
539
|
+
* @param titlecontrol The title control to which event delegates are attached.
|
|
540
|
+
*/;
|
|
541
|
+
_proto._attachTitleEventDelegates = function _attachTitleEventDelegates(titlecontrol) {
|
|
542
|
+
titlecontrol.addEventDelegate({
|
|
543
|
+
onmouseover: _evt => {
|
|
544
|
+
const tooltip = titlecontrol.getTooltip();
|
|
545
|
+
titlecontrol.getDomRef()?.setAttribute("title", tooltip);
|
|
546
|
+
}
|
|
547
|
+
}, this);
|
|
548
|
+
}
|
|
549
|
+
|
|
532
550
|
/**
|
|
533
551
|
* Sets the enablement of the visual filter chart binding.
|
|
534
552
|
* @param enableBinding Boolean indicating whether to enable or disable the chart binding.
|
|
@@ -778,4 +796,4 @@ sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/fe/base/BindingToolki
|
|
|
778
796
|
_exports = VisualFilter;
|
|
779
797
|
return _exports;
|
|
780
798
|
}, false);
|
|
781
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJWaXN1YWxGaWx0ZXIiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsImltcGxlbWVudEludGVyZmFjZSIsIl9kZWMzIiwicHJvcGVydHkiLCJ0eXBlIiwiX2RlYzQiLCJfZGVjNSIsImV2ZW50IiwiX2RlYzYiLCJyZXF1aXJlZCIsIl9kZWM3IiwiX2RlYzgiLCJfZGVjOSIsIl9kZWMxMCIsIl9kZWMxMSIsIl9kZWMxMiIsIl9kZWMxMyIsIl9kZWMxNCIsIl9kZWMxNSIsIl9kZWMxNiIsIl9kZWMxNyIsIl9kZWMxOCIsIl9kZWMxOSIsIl9kZWMyMCIsIl9kZWMyMSIsIl9kZWMyMiIsIl9kZWMyMyIsIl9kZWMyNCIsIl9kZWMyNSIsIl9kZWMyNiIsIl9kZWMyNyIsIl9kZWMyOCIsIl9kZWMyOSIsIl9kZWMzMCIsIl9kZWMzMSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQnVpbGRpbmdCbG9jayIsInByb3BzIiwib3RoZXJzIiwiX3RoaXMiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsIl9kZXNjcmlwdG9yMyIsIl9kZXNjcmlwdG9yNCIsIl9kZXNjcmlwdG9yNSIsIl9kZXNjcmlwdG9yNiIsIl9kZXNjcmlwdG9yNyIsIl9kZXNjcmlwdG9yOCIsIl9kZXNjcmlwdG9yOSIsIl9kZXNjcmlwdG9yMTAiLCJfZGVzY3JpcHRvcjExIiwiX2Rlc2NyaXB0b3IxMiIsIl9kZXNjcmlwdG9yMTMiLCJfZGVzY3JpcHRvcjE0IiwiX2Rlc2NyaXB0b3IxNSIsIl9kZXNjcmlwdG9yMTYiLCJfZGVzY3JpcHRvcjE3IiwiX2Rlc2NyaXB0b3IxOCIsIl9kZXNjcmlwdG9yMTkiLCJfZGVzY3JpcHRvcjIwIiwiX2Rlc2NyaXB0b3IyMSIsIl9kZXNjcmlwdG9yMjIiLCJfZGVzY3JpcHRvcjIzIiwiX2Rlc2NyaXB0b3IyNCIsIl9kZXNjcmlwdG9yMjUiLCJfZGVzY3JpcHRvcjI2IiwiX2Rlc2NyaXB0b3IyNyIsIl9kZXNjcmlwdG9yMjgiLCJfZGVzY3JpcHRvcjI5IiwiX2Rlc2NyaXB0b3IzMCIsImluUGFyYW1Db25kaXRpb25VcGRhdGVQZW5kaW5nIiwicmVuZGVyaW5nVXBkYXRlUGVuZGluZyIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJvbk1ldGFkYXRhQXZhaWxhYmxlIiwiX293bmVyQ29tcG9uZW50IiwiZ3JvdXBJZCIsInBhdGgiLCJtZXRhUGF0aCIsIm93bmVyIiwiX2dldE93bmVyIiwiY29udGV4dFBhdGgiLCJwcmVwcm9jZXNzb3JDb250ZXh0IiwiZnVsbENvbnRleHRQYXRoIiwiY29udGV4dE9iamVjdFBhdGgiLCJnZXREYXRhTW9kZWxPYmplY3RGb3JNZXRhUGF0aCIsIl9yZXNvbHZlZENvbnRleHRQYXRoIiwiZW5kc1dpdGgiLCJtZXRhTW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJkaWFnbm9zdGljcyIsImdldEFwcENvbXBvbmVudCIsImdldERpYWdub3N0aWNzIiwidmlld0RhdGEiLCJnZXRSb290Q29udHJvbGxlciIsImdldFZpZXciLCJnZXRWaWV3RGF0YSIsImNvbnZlcnRlckNvbnRleHQiLCJDb252ZXJ0ZXJDb250ZXh0IiwiY3JlYXRlQ29udmVydGVyQ29udGV4dEZvck1hY3JvIiwic3RhcnRpbmdFbnRpdHlTZXQiLCJuYW1lIiwibWVyZ2UiLCJjb250ZXh0TG9jYXRpb24iLCJNYW5pZmVzdFdyYXBwZXIiLCJhZ2dyZWdhdGlvbkhlbHBlciIsIkFnZ3JlZ2F0aW9uSGVscGVyIiwiZ2V0RW50aXR5VHlwZSIsImN1c3RvbUFnZ3JlZ2F0ZXMiLCJnZXRDdXN0b21BZ2dyZWdhdGVEZWZpbml0aW9ucyIsInB2QW5ub3RhdGlvbiIsInRhcmdldE9iamVjdCIsIm1lYXN1cmUiLCJ2aXN1YWxpemF0aW9ucyIsIlZpc3VhbGl6YXRpb25zIiwiZ2V0Q2hhcnRBbm5vdGF0aW9uIiwiYWdncmVnYXRpb25zIiwiY3VzdEFnZ01lYXN1cmUiLCJjaGFydEFubm90YXRpb24iLCJNZWFzdXJlcyIsImxlbmd0aCIsImZpbHRlciIsImN1c3RBZ2ciLCJxdWFsaWZpZXIiLCJ2YWx1ZSIsImdldEFnZ3JlZ2F0ZWRQcm9wZXJ0aWVzIiwiRHluYW1pY01lYXN1cmVzIiwiTG9nIiwid2FybmluZyIsImdldENvbnZlcnRlckNvbnRleHRGb3IiLCJnZXRBYnNvbHV0ZUFubm90YXRpb25QYXRoIiwiZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCIsIk5hbWUiLCJ0b1N0cmluZyIsImdldEFnZ3JlZ2F0ZWRQcm9wZXJ0eSIsInNvbWUiLCJjdXN0b21BZ2dyZWdhdGUiLCJkZWZhdWx0U2VsZWN0aW9uVmFyaWFudCIsImdldERlZmF1bHRTZWxlY3Rpb25WYXJpYW50IiwiY2hlY2tTZWxlY3Rpb25WYXJpYW50IiwiYWdncmVnYXRpb24iLCJnZXRBZ2dyZWdhdGVQcm9wZXJ0aWVzIiwiYWdncmVnYXRlUHJvcGVydGllcyIsInByb3BlcnR5QW5ub3RhdGlvbnMiLCIkdGFyZ2V0IiwiYW5ub3RhdGlvbnMiLCJhZ2dyZWdhdGFibGVQcm9wZXJ0eUFubm90YXRpb25zIiwiQWdncmVnYXRhYmxlUHJvcGVydHkiLCJjaGVja0lmVU9NSGFzQ3VzdG9tQWdncmVnYXRlIiwicHJvcGVydHlIaWRkZW4iLCJVSSIsIkhpZGRlbiIsImhpZGRlbk1lYXN1cmUiLCJ2YWx1ZU9mIiwiY2hhcnRUeXBlIiwiQ2hhcnRUeXBlIiwic2hvd1ZhbHVlSGVscEJ1dHRvbiIsImdldHNob3dWYWx1ZUhlbHBCdXR0b24iLCJkcmFmdFN1cHBvcnRlZCIsIk1vZGVsSGVscGVyIiwiaXNEcmFmdFN1cHBvcnRlZCIsImVycm9yTWVzc2FnZSIsImdldEVycm9yTWVzc2FnZSIsImNoYXJ0TWVhc3VyZSIsIm1lYXN1cmVEaW1lbnNpb25UaXRsZSIsIkludGVyYWN0aXZlQ2hhcnRIZWxwZXIiLCJnZXRNZWFzdXJlRGltZW5zaW9uVGl0bGUiLCJjb2xsZWN0aW9uIiwidG9vbFRpcCIsImdldFRvb2xUaXAiLCJyZW5kZXJMaW5lQ2hhcnQiLCJVb01WaXNpYmlsaXR5IiwiZ2V0VW9NVmlzaWJsaXR5Iiwic2hvd0Vycm9yIiwic2NhbGVVb01UaXRsZSIsImdldFNjYWxlVW9NVGl0bGUiLCJzb3J0T3JkZXIiLCJTb3J0T3JkZXIiLCJmaWx0ZXJDb3VudEJpbmRpbmciLCJnZXRmaWx0ZXJDb3VudEJpbmRpbmciLCJ2aWV3SWQiLCJnZXRQYWdlQ29udHJvbGxlciIsImdldElkIiwiX2NvbnRlbnRJZCIsImlkIiwic2VsZWN0aW9uVmFyaWFudCIsInNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uIiwidW5kZWZpbmVkIiwiY29udGVudCIsImNyZWF0ZUNvbnRlbnQiLCJtZWFzdXJlcyIsImFnZ3JlZ2F0YWJsZVByb3BlcnR5TWVhc3VyZXMiLCJVT00iLCJnZXRVb00iLCJVb01IYXNDdXN0b21BZ2dyZWdhdGUiLCJ2aXN1YWxpemF0aW9uIiwic0Fubm90YXRpb25QYXRoIiwiZ2V0RW50aXR5VHlwZUFubm90YXRpb24iLCJhbm5vdGF0aW9uIiwic2V0U2hvd1ZhbHVlSGVscCIsImJTaG93VmFsdWVIZWxwIiwiaXNBIiwiZ2V0SXRlbXMiLCJvVmlzdWFsRmlsdGVyQ29udHJvbCIsImdldFZpc3VhbEZpbHRlckNvbnRyb2wiLCJnZXRDb250ZW50Iiwib0lubmVyQ29udHJvbCIsInNldFZpc2libGUiLCJzZXRQcm9wZXJ0eSIsInNldFZhbHVlSGVscEljb25TcmMiLCJzSWNvblNyYyIsInNldEljb24iLCJ2YWxpZENoYXJ0VHlwZSIsImVycm9yTWVzc2FnZVRpdGxlIiwiZ2V0VHJhbnNsYXRlZFRleHQiLCJzRGltZW5zaW9uVHlwZSIsIkRpbWVuc2lvbnMiLCJpc1ZhbHVlTGlzdFdpdGhGaXhlZFZhbHVlcyIsIlNlbGVjdE9wdGlvbnMiLCJtdWx0aXBsZVNlbGVjdGlvbkFsbG93ZWQiLCJzZWxlY3RPcHRpb24iLCJQcm9wZXJ0eU5hbWUiLCJSYW5nZXMiLCJlcnJvciIsIm1hdGNoZWRBZ2dyZWdhdGUiLCJhZ2dyZWdhdGUiLCJJU09DdXJyZW5jeSIsInVuaXQiLCJVbml0IiwiZ2V0UmVxdWlyZWQiLCJfanN4IiwiTGFiZWwiLCJ0ZXh0Iiwid2lkdGgiLCJjaGlsZHJlbiIsImxheW91dERhdGEiLCJPdmVyZmxvd1Rvb2xiYXJMYXlvdXREYXRhIiwicHJpb3JpdHkiLCJPdmVyZmxvd1Rvb2xiYXJQcmlvcml0eSIsIk5ldmVyT3ZlcmZsb3ciLCJnZXRUaXRsZSIsIlRpdGxlIiwiZ2VuZXJhdGUiLCJ0b29sdGlwIiwidGl0bGVTdHlsZSIsImxldmVsIiwiY2xhc3MiLCJnZXRVb01UaXRsZSIsInNob3dFcnJvckV4cHJlc3Npb24iLCJ2aXNpYmxlIiwiY29tcGlsZUV4cHJlc3Npb24iLCJpZkVsc2UiLCJyZXNvbHZlQmluZGluZ1N0cmluZyIsImdldFRvb2xCYXJTcGFjZXIiLCJUb29sYmFyU3BhY2VyIiwiZ2V0VmFsdWVIZWxwIiwiQnV0dG9uIiwiYXJpYUhhc1BvcHVwIiwiZW5hYmxlZCIsInByZXNzIiwiVmlzdWFsRmlsdGVyUnVudGltZSIsImZpcmVWYWx1ZUhlbHAiLCJjdXN0b21EYXRhIiwiQ3VzdG9tRGF0YSIsImdldFRvb2xiYXIiLCJPdmVyZmxvd1Rvb2xiYXIiLCJzdHlsZSIsIl9qc3hzIiwiX0ZyYWdtZW50IiwiX2hhbmRsZUluUGFyYW1zQ2hhcnRCaW5kaW5nRW5hYmxlbWVudCIsImNoYW5nZWRGaWx0ZXJGaWVsZFBhdGhzIiwiaW5QYXJhbWV0ZXJzIiwiZ2V0UHJvcGVydHkiLCJpblBhcmFtZXRlckxvY2FsRGF0YVByb3BlcnRpZXMiLCJtYXAiLCJpblBhcmFtZXRlciIsImxvY2FsRGF0YVByb3BlcnR5IiwidmZJblBhcmFtZXRlclVwZGF0ZUV4cGVjdGVkIiwiaW5jbHVkZXMiLCJfc2V0SW50ZXJuYWxVcGRhdGVQZW5kaW5nIiwic2V0RW5hYmxlQ2hhcnRCaW5kaW5nIiwiZW5hYmxlQmluZGluZyIsImFyZ3VtZW50cyIsImludGVybmFsVXBkYXRlUGVuZGluZyIsIm92ZXJhbGxFbmFibGVCaW5kaW5nIiwiY2hhcnRCaW5kaW5nIiwiZ2V0Q2hhcnRCaW5kaW5nIiwiaXNTdXNwZW5kZWQiLCJyZXN1bWUiLCJzdXNwZW5kIiwiY29uZGl0aW9uVXBkYXRlUGVuZGluZyIsImlzQmluZGluZ0VuYWJsZWRGb3JWaXN1YWxGaWx0ZXJFeHRlcm5hbGx5IiwiZW5hYmxlQ2hhcnRCaW5kaW5nIiwidXBkYXRlUGVuZGluZyIsImNvenlNb2RlIiwiZG9jdW1lbnQiLCJib2R5IiwiY2xhc3NMaXN0IiwiY29udGFpbnMiLCJvdmVyYWxsSGVpZ2h0IiwiY2hhcnRIZWlnaHQiLCJvdmVyYWxsV2lkdGgiLCJjaGFydENsYXNzTWFyZ2luIiwidmZDb250cm9sSWQiLCJWaXN1YWxGaWx0ZXJDb250cm9sIiwiaGVpZ2h0IiwiaXRlbXMiLCJWQm94IiwiZ2V0VmlzdWFsRmlsdGVyQ2hhcnQiLCJCdWlsZGluZ0Jsb2NrIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJWaXN1YWxGaWx0ZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQW5ub3RhdGlvblBhdGgsIFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbiB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBDdXN0b21BZ2dyZWdhdGUgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0FnZ3JlZ2F0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IEFnZ3JlZ2F0ZWRQcm9wZXJ0eSwgQWdncmVnYXRlZFByb3BlcnR5VHlwZSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQW5hbHl0aWNzXCI7XG5pbXBvcnQgeyBTb3J0T3JkZXJUeXBlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9Db21tb25cIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlBbm5vdGF0aW9ucyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvRWRtX1R5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnR5QW5ub3RhdGlvbnNfTWVhc3VyZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL01lYXN1cmVzX0VkbVwiO1xuaW1wb3J0IHR5cGUgeyBDaGFydCwgRGF0YVBvaW50LCBMaW5lSXRlbSwgUHJlc2VudGF0aW9uVmFyaWFudCwgU2VsZWN0aW9uVmFyaWFudCB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IG1lcmdlIGZyb20gXCJzYXAvYmFzZS91dGlsL21lcmdlXCI7XG5pbXBvcnQgeyBjb21waWxlRXhwcmVzc2lvbiwgaWZFbHNlLCByZXNvbHZlQmluZGluZ1N0cmluZyB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIGV2ZW50LCBpbXBsZW1lbnRJbnRlcmZhY2UsIHByb3BlcnR5LCB0eXBlIFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBUZW1wbGF0ZUNvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvVGVtcGxhdGVDb21wb25lbnRcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrIGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy9CdWlsZGluZ0Jsb2NrXCI7XG5pbXBvcnQgQ29udmVydGVyQ29udGV4dCBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9Db252ZXJ0ZXJDb250ZXh0XCI7XG5pbXBvcnQgeyBCYXNlTWFuaWZlc3RTZXR0aW5ncyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCBNYW5pZmVzdFdyYXBwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RXcmFwcGVyXCI7XG5pbXBvcnQgeyBQYWdlQ29udGV4dFBhdGhUYXJnZXQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9UZW1wbGF0ZUNvbnZlcnRlclwiO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdFNlbGVjdGlvblZhcmlhbnQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vRGF0YVZpc3VhbGl6YXRpb25cIjtcbmltcG9ydCB0eXBlIHsgUGFyYW1ldGVyVHlwZSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0xpc3RSZXBvcnQvVmlzdWFsRmlsdGVyc1wiO1xuaW1wb3J0IHsgQWdncmVnYXRpb25IZWxwZXIgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0FnZ3JlZ2F0aW9uXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB7IGdlbmVyYXRlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB7IFZpZXdEYXRhIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1RlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IERpYWdub3N0aWNzIGZyb20gXCJzYXAvZmUvY29yZS9zdXBwb3J0L0RpYWdub3N0aWNzXCI7XG5pbXBvcnQgeyBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IEJ1dHRvbiBmcm9tIFwic2FwL20vQnV0dG9uXCI7XG5pbXBvcnQgTGFiZWwgZnJvbSBcInNhcC9tL0xhYmVsXCI7XG5pbXBvcnQgT3ZlcmZsb3dUb29sYmFyIGZyb20gXCJzYXAvbS9PdmVyZmxvd1Rvb2xiYXJcIjtcbmltcG9ydCBPdmVyZmxvd1Rvb2xiYXJMYXlvdXREYXRhIGZyb20gXCJzYXAvbS9PdmVyZmxvd1Rvb2xiYXJMYXlvdXREYXRhXCI7XG5pbXBvcnQgVGl0bGUgZnJvbSBcInNhcC9tL1RpdGxlXCI7XG5pbXBvcnQgVG9vbGJhclNwYWNlciBmcm9tIFwic2FwL20vVG9vbGJhclNwYWNlclwiO1xuaW1wb3J0IFZCb3ggZnJvbSBcInNhcC9tL1ZCb3hcIjtcbmltcG9ydCB7IE92ZXJmbG93VG9vbGJhclByaW9yaXR5IH0gZnJvbSBcInNhcC9tL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBDdXN0b21EYXRhIGZyb20gXCJzYXAvdWkvY29yZS9DdXN0b21EYXRhXCI7XG5pbXBvcnQgeyAkQ29udHJvbFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9tZGMvQ29udHJvbFwiO1xuaW1wb3J0IE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCB7IGRlZmF1bHQgYXMgVmlzdWFsRmlsdGVyQ29udHJvbCB9IGZyb20gXCIuLi9jb250cm9scy9maWx0ZXJiYXIvVmlzdWFsRmlsdGVyXCI7XG5pbXBvcnQgSW50ZXJhY3RpdmVDaGFydEhlbHBlciBmcm9tIFwiLi9JbnRlcmFjdGl2ZUNoYXJ0SGVscGVyXCI7XG5pbXBvcnQgVmlzdWFsRmlsdGVyUnVudGltZSBmcm9tIFwiLi9WaXN1YWxGaWx0ZXJSdW50aW1lXCI7XG5pbXBvcnQgeyBnZXRWaXN1YWxGaWx0ZXJDaGFydCB9IGZyb20gXCIuL2ZyYWdtZW50cy9JbnRlcmFjdGl2ZUNoYXJ0c1wiO1xuLyoqXG4gKiBCdWlsZGluZyBibG9jayBmb3IgY3JlYXRpbmcgYSBWaXN1YWxGaWx0ZXIgYmFzZWQgb24gdGhlIG1ldGFkYXRhIHByb3ZpZGVkIGJ5IE9EYXRhIFY0LlxuICogPGJyPlxuICogQSBDaGFydCBhbm5vdGF0aW9uIGlzIHJlcXVpcmVkIHRvIGJyaW5nIHVwIGFuIGludGVyYWN0aXZlIGNoYXJ0XG4gKlxuICpcbiAqIFVzYWdlIGV4YW1wbGU6XG4gKiA8cHJlPlxuICogJmx0O21hY3JvczpWaXN1YWxGaWx0ZXJcbiAqIGNvbGxlY3Rpb249XCJ7ZW50aXR5U2V0Jmd0O31cIlxuICogY2hhcnRBbm5vdGF0aW9uPVwie2NoYXJ0QW5ub3RhdGlvbiZndDt9XCJcbiAqIGlkPVwic29tZUlEXCJcbiAqIGdyb3VwSWQ9XCJzb21lR3JvdXBJRFwiXG4gKiB0aXRsZT1cInNvbWUgVGl0bGVcIlxuICogLyZndDtcbiAqIDwvcHJlPlxuICogQHByaXZhdGVcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLm1hY3Jvcy52aXN1YWxmaWx0ZXJzLlZpc3VhbEZpbHRlclwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmlzdWFsRmlsdGVyIGV4dGVuZHMgQnVpbGRpbmdCbG9jazxWaXN1YWxGaWx0ZXJDb250cm9sPiB7XG5cdEBpbXBsZW1lbnRJbnRlcmZhY2UoXCJzYXAudWkuY29yZS5JRm9ybUNvbnRlbnRcIilcblx0X19pbXBsZW1lbnRzX19zYXBfdWlfY29yZV9JRm9ybUNvbnRlbnQgPSB0cnVlO1xuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0c2hvd1ZhbHVlSGVscCE6IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdHZhbHVlSGVscEljb25TcmMhOiBzdHJpbmc7XG5cblx0QGV2ZW50KClcblx0dmFsdWVIZWxwUmVxdWVzdCE6IEZ1bmN0aW9uO1xuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRyZXF1aXJlZDogdHJ1ZVxuXHR9KVxuXHRpZCE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0dGl0bGUgPSBcIlwiO1xuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRyZXF1aXJlZDogdHJ1ZVxuXHR9KVxuXHRwdWJsaWMgY29udGV4dFBhdGghOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdHJlcXVpcmVkOiB0cnVlXG5cdH0pXG5cdHB1YmxpYyBtZXRhUGF0aCE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0b3V0UGFyYW1ldGVyPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIlxuXHR9KVxuXHR2YWx1ZWxpc3RQcm9wZXJ0eT86IHN0cmluZztcblxuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0c2VsZWN0aW9uVmFyaWFudEFubm90YXRpb24/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcImFycmF5XCJcblx0fSlcblx0aW5QYXJhbWV0ZXJzPzogUGFyYW1ldGVyVHlwZVtdO1xuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0bXVsdGlwbGVTZWxlY3Rpb25BbGxvd2VkPzogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiXG5cdH0pXG5cdHJlcXVpcmVkPzogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiXG5cdH0pXG5cdHNob3dPdmVybGF5SW5pdGlhbGx5PzogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiXG5cdH0pXG5cdHJlbmRlckxpbmVDaGFydD86IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcImFycmF5XCJcblx0fSlcblx0cmVxdWlyZWRQcm9wZXJ0aWVzPzogc3RyaW5nW107XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdGZpbHRlckJhckVudGl0eVR5cGU/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIlxuXHR9KVxuXHRzaG93RXJyb3I/OiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIlxuXHR9KVxuXHRjaGFydE1lYXN1cmU/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIlxuXHR9KVxuXHRVb01IYXNDdXN0b21BZ2dyZWdhdGU/OiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0c2hvd1ZhbHVlSGVscEJ1dHRvbj86IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIlxuXHR9KVxuXHRjdXN0b21BZ2dyZWdhdGUgPSBmYWxzZTtcblxuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0Z3JvdXBJZCA9IFwiJGF1dG8udmlzdWFsRmlsdGVyc1wiO1xuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIlxuXHR9KVxuXHRlcnJvck1lc3NhZ2VUaXRsZT86IHN0cmluZztcblxuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0ZXJyb3JNZXNzYWdlPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIlxuXHR9KVxuXHRfY29udGVudElkPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0ZHJhZnRTdXBwb3J0ZWQ/OiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0aXNWYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXM6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cblx0LyoqXG5cdCAqIEVuYWJsZSBvciBkaXNhYmxlIGNoYXJ0IGJpbmRpbmdcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIlxuXHR9KVxuXHRlbmFibGVDaGFydEJpbmRpbmcgPSB0cnVlO1xuXG5cdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblx0ICogSW50ZXJuYWwgUHJvcGVydGllc1xuXHQgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cblx0YWdncmVnYXRlUHJvcGVydGllczogQWdncmVnYXRlZFByb3BlcnR5VHlwZSB8IHVuZGVmaW5lZDtcblxuXHRjaGFydFR5cGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuXHRwYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0bWVhc3VyZURpbWVuc2lvblRpdGxlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0dG9vbFRpcDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdFVvTVZpc2liaWxpdHk6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cblx0c2NhbGVVb01UaXRsZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdGZpbHRlckNvdW50QmluZGluZzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdGNoYXJ0QW5ub3RhdGlvbj86IENoYXJ0O1xuXHRfcmVzb2x2ZWRDb250ZXh0UGF0aD86IHN0cmluZztcblxuXHRzb3J0T3JkZXI/OiBTb3J0T3JkZXJUeXBlW107XG5cdGNvbGxlY3Rpb24/OiBEYXRhTW9kZWxPYmplY3RQYXRoPFBhZ2VDb250ZXh0UGF0aFRhcmdldD47XG5cdHNlbGVjdGlvblZhcmlhbnQ6IFNlbGVjdGlvblZhcmlhbnQgfCB1bmRlZmluZWQ7XG5cblx0LyoqXG5cdCAqIEZsYWcgdG8gaW5kaWNhdGUgaWYgdGhlIGluLXBhcmFtZXRlcnMgYW5kIGNvbmRpdGlvbnMgdXBkYXRlIGlzIHBlbmRpbmcuXG5cdCAqL1xuXHRwcml2YXRlIGluUGFyYW1Db25kaXRpb25VcGRhdGVQZW5kaW5nID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIEluaXRpYWwgcmVuZGVyaW5nIGlzIHBlbmRpbmcuXG5cdCAqL1xuXHRwcml2YXRlIHJlbmRlcmluZ1VwZGF0ZVBlbmRpbmcgPSB0cnVlO1xuXG5cdGNvbnN0cnVjdG9yKHByb3BzOiAkQ29udHJvbFNldHRpbmdzICYgUHJvcGVydGllc09mPFZpc3VhbEZpbHRlckNvbnRyb2w+LCBvdGhlcnM/OiAkQ29udHJvbFNldHRpbmdzKSB7XG5cdFx0c3VwZXIocHJvcHMsIG90aGVycyk7XG5cdH1cblxuXHRwdWJsaWMgb25NZXRhZGF0YUF2YWlsYWJsZShfb3duZXJDb21wb25lbnQ6IFRlbXBsYXRlQ29tcG9uZW50KTogdm9pZCB7XG5cdFx0dGhpcy5ncm91cElkID0gXCIkYXV0by52aXN1YWxGaWx0ZXJzXCI7XG5cdFx0dGhpcy5wYXRoID0gdGhpcy5tZXRhUGF0aDtcblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCk7XG5cdFx0dGhpcy5jb250ZXh0UGF0aCA9IHRoaXMuY29udGV4dFBhdGggPz8gb3duZXI/LnByZXByb2Nlc3NvckNvbnRleHQ/LmZ1bGxDb250ZXh0UGF0aDtcblx0XHRjb25zdCBjb250ZXh0T2JqZWN0UGF0aCA9IHRoaXMuZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGg8UHJlc2VudGF0aW9uVmFyaWFudD4odGhpcy5tZXRhUGF0aCwgdGhpcy5jb250ZXh0UGF0aCk7XG5cdFx0aWYgKHRoaXMuY29udGV4dFBhdGgpIHtcblx0XHRcdHRoaXMuX3Jlc29sdmVkQ29udGV4dFBhdGggPSB0aGlzLmNvbnRleHRQYXRoLmVuZHNXaXRoKFwiL1wiKSA/IHRoaXMuY29udGV4dFBhdGggOiB0aGlzLmNvbnRleHRQYXRoICsgXCIvXCI7XG5cdFx0fVxuXHRcdGNvbnN0IG1ldGFNb2RlbCA9IHRoaXMuZ2V0TWV0YU1vZGVsKCkgYXMgT0RhdGFNZXRhTW9kZWw7XG5cblx0XHRjb25zdCBkaWFnbm9zdGljcyA9IHRoaXMuZ2V0QXBwQ29tcG9uZW50KCk/LmdldERpYWdub3N0aWNzKCkgPz8gKHt9IGFzIERpYWdub3N0aWNzKTtcblx0XHRjb25zdCB2aWV3RGF0YSA9XG5cdFx0XHR0aGlzLl9nZXRPd25lcigpPy5nZXRSb290Q29udHJvbGxlcigpPy5nZXRWaWV3KCkuZ2V0Vmlld0RhdGEoKSA/PyAodGhpcy5fZ2V0T3duZXIoKT8uZ2V0Vmlld0RhdGEoKSBhcyB1bmtub3duIGFzIFZpZXdEYXRhKTtcblx0XHRjb25zdCBjb252ZXJ0ZXJDb250ZXh0ID0gQ29udmVydGVyQ29udGV4dC5jcmVhdGVDb252ZXJ0ZXJDb250ZXh0Rm9yTWFjcm8oXG5cdFx0XHRjb250ZXh0T2JqZWN0UGF0aD8uc3RhcnRpbmdFbnRpdHlTZXQ/Lm5hbWUgYXMgc3RyaW5nLFxuXHRcdFx0bWV0YU1vZGVsLFxuXHRcdFx0ZGlhZ25vc3RpY3MsXG5cdFx0XHRtZXJnZSxcblx0XHRcdGNvbnRleHRPYmplY3RQYXRoPy5jb250ZXh0TG9jYXRpb24sXG5cdFx0XHRuZXcgTWFuaWZlc3RXcmFwcGVyKHZpZXdEYXRhIGFzIEJhc2VNYW5pZmVzdFNldHRpbmdzLCB0aGlzLmdldEFwcENvbXBvbmVudCgpKVxuXHRcdCk7XG5cdFx0Y29uc3QgYWdncmVnYXRpb25IZWxwZXIgPSBuZXcgQWdncmVnYXRpb25IZWxwZXIoY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKCksIGNvbnZlcnRlckNvbnRleHQpO1xuXHRcdGNvbnN0IGN1c3RvbUFnZ3JlZ2F0ZXMgPSBhZ2dyZWdhdGlvbkhlbHBlci5nZXRDdXN0b21BZ2dyZWdhdGVEZWZpbml0aW9ucygpO1xuXHRcdGNvbnN0IHB2QW5ub3RhdGlvbiA9IGNvbnRleHRPYmplY3RQYXRoPy50YXJnZXRPYmplY3Q7XG5cdFx0bGV0IG1lYXN1cmU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0XHRjb25zdCB2aXN1YWxpemF0aW9ucyA9IHB2QW5ub3RhdGlvbiAmJiBwdkFubm90YXRpb24uVmlzdWFsaXphdGlvbnM7XG5cdFx0dGhpcy5nZXRDaGFydEFubm90YXRpb24odmlzdWFsaXphdGlvbnMsIGNvbnZlcnRlckNvbnRleHQpO1xuXHRcdGxldCBhZ2dyZWdhdGlvbnM6IEFnZ3JlZ2F0ZWRQcm9wZXJ0eVR5cGVbXSA9IFtdLFxuXHRcdFx0Y3VzdEFnZ01lYXN1cmUgPSBbXTtcblxuXHRcdGlmICh0aGlzLmNoYXJ0QW5ub3RhdGlvbj8uTWVhc3VyZXM/Lmxlbmd0aCkge1xuXHRcdFx0Y3VzdEFnZ01lYXN1cmUgPSBjdXN0b21BZ2dyZWdhdGVzLmZpbHRlcigoY3VzdEFnZykgPT4ge1xuXHRcdFx0XHRyZXR1cm4gY3VzdEFnZy5xdWFsaWZpZXIgPT09IHRoaXMuY2hhcnRBbm5vdGF0aW9uPy5NZWFzdXJlc1swXS52YWx1ZTtcblx0XHRcdH0pO1xuXHRcdFx0bWVhc3VyZSA9IGN1c3RBZ2dNZWFzdXJlLmxlbmd0aCA+IDAgPyBjdXN0QWdnTWVhc3VyZVswXS5xdWFsaWZpZXIgOiB0aGlzLmNoYXJ0QW5ub3RhdGlvbi5NZWFzdXJlc1swXS52YWx1ZTtcblx0XHRcdGFnZ3JlZ2F0aW9ucyA9IGFnZ3JlZ2F0aW9uSGVscGVyLmdldEFnZ3JlZ2F0ZWRQcm9wZXJ0aWVzKClbMF07XG5cdFx0fVxuXHRcdC8vIGlmIHRoZXJlIGFyZSBBZ2dyZWdhdGVkUHJvcGVydHkgb2JqZWN0cyBidXQgbm8gZHluYW1pYyBtZWFzdXJlcywgcmF0aGVyIHRoZXJlIGFyZSB0cmFuc2Zvcm1hdGlvbiBhZ2dyZWdhdGVzIGZvdW5kIGluIG1lYXN1cmVzXG5cdFx0aWYgKFxuXHRcdFx0YWdncmVnYXRpb25zICYmXG5cdFx0XHRhZ2dyZWdhdGlvbnMubGVuZ3RoID4gMCAmJlxuXHRcdFx0IXRoaXMuY2hhcnRBbm5vdGF0aW9uPy5EeW5hbWljTWVhc3VyZXMgJiZcblx0XHRcdGN1c3RBZ2dNZWFzdXJlLmxlbmd0aCA9PT0gMCAmJlxuXHRcdFx0dGhpcy5jaGFydEFubm90YXRpb24/Lk1lYXN1cmVzICYmXG5cdFx0XHR0aGlzLmNoYXJ0QW5ub3RhdGlvbj8uTWVhc3VyZXMubGVuZ3RoID4gMFxuXHRcdCkge1xuXHRcdFx0TG9nLndhcm5pbmcoXG5cdFx0XHRcdFwiVGhlIHRyYW5zZm9ybWF0aW9uYWwgYWdncmVnYXRlIG1lYXN1cmVzIGFyZSBjb25maWd1cmVkIGFzIENoYXJ0Lk1lYXN1cmVzIGJ1dCBzaG91bGQgYmUgY29uZmlndXJlZCBhcyBDaGFydC5EeW5hbWljTWVhc3VyZXMgaW5zdGVhZC4gUGxlYXNlIGNoZWNrIHRoZSBTQVAgSGVscCBkb2N1bWVudGF0aW9uIGFuZCBjb3JyZWN0IHRoZSBjb25maWd1cmF0aW9uIGFjY29yZGluZ2x5LlwiXG5cdFx0XHQpO1xuXHRcdH1cblx0XHQvL2lmIHRoZSBjaGFydCBoYXMgZHluYW1pYyBtZWFzdXJlcywgYnV0IHdpdGggbm8gb3RoZXIgY3VzdG9tIGFnZ3JlZ2F0ZSBtZWFzdXJlcyB0aGVuIGNvbnNpZGVyIHRoZSBkeW5hbWljIG1lYXN1cmVzXG5cdFx0aWYgKHRoaXMuY2hhcnRBbm5vdGF0aW9uPy5EeW5hbWljTWVhc3VyZXMpIHtcblx0XHRcdGlmIChjdXN0QWdnTWVhc3VyZS5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0bWVhc3VyZSA9IGNvbnZlcnRlckNvbnRleHRcblx0XHRcdFx0XHQuZ2V0Q29udmVydGVyQ29udGV4dEZvcjxBZ2dyZWdhdGVkUHJvcGVydHk+KFxuXHRcdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dC5nZXRBYnNvbHV0ZUFubm90YXRpb25QYXRoKHRoaXMuY2hhcnRBbm5vdGF0aW9uLkR5bmFtaWNNZWFzdXJlc1swXS52YWx1ZSlcblx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKVxuXHRcdFx0XHRcdC50YXJnZXRPYmplY3Q/Lk5hbWUudG9TdHJpbmcoKTtcblx0XHRcdFx0YWdncmVnYXRpb25zID0gYWdncmVnYXRpb25IZWxwZXIuZ2V0QWdncmVnYXRlZFByb3BlcnR5KCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRMb2cud2FybmluZyhcblx0XHRcdFx0XHRcIlRoZSBkeW5hbWljIG1lYXN1cmVzIGhhdmUgYmVlbiBpZ25vcmVkIGFzIHZpc3VhbCBmaWx0ZXJzIGNhbiBkZWFsIHdpdGggb25seSAxIG1lYXN1cmUgYW5kIHRoZSBmaXJzdCAoY3VzdG9tIGFnZ3JlZ2F0ZSkgbWVhc3VyZSBkZWZpbmVkIHVuZGVyIENoYXJ0Lk1lYXN1cmVzIGlzIGNvbnNpZGVyZWQuXCJcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKFxuXHRcdFx0Y3VzdG9tQWdncmVnYXRlcy5zb21lKGZ1bmN0aW9uIChjdXN0QWdnKSB7XG5cdFx0XHRcdHJldHVybiBjdXN0QWdnLnF1YWxpZmllciA9PT0gbWVhc3VyZTtcblx0XHRcdH0pXG5cdFx0KSB7XG5cdFx0XHR0aGlzLmN1c3RvbUFnZ3JlZ2F0ZSA9IHRydWU7XG5cdFx0fVxuXG5cdFx0Y29uc3QgZGVmYXVsdFNlbGVjdGlvblZhcmlhbnQgPSBnZXREZWZhdWx0U2VsZWN0aW9uVmFyaWFudChjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKSk7XG5cdFx0dGhpcy5jaGVja1NlbGVjdGlvblZhcmlhbnQoZGVmYXVsdFNlbGVjdGlvblZhcmlhbnQpO1xuXHRcdGNvbnN0IGFnZ3JlZ2F0aW9uID0gdGhpcy5nZXRBZ2dyZWdhdGVQcm9wZXJ0aWVzKGFnZ3JlZ2F0aW9ucywgbWVhc3VyZSk7XG5cdFx0aWYgKGFnZ3JlZ2F0aW9uKSB7XG5cdFx0XHR0aGlzLmFnZ3JlZ2F0ZVByb3BlcnRpZXMgPSBhZ2dyZWdhdGlvbjtcblx0XHR9XG5cdFx0Y29uc3QgcHJvcGVydHlBbm5vdGF0aW9ucyA9XG5cdFx0XHR2aXN1YWxpemF0aW9ucyAmJiB0aGlzLmNoYXJ0QW5ub3RhdGlvbj8uTWVhc3VyZXMgJiYgdGhpcy5jaGFydEFubm90YXRpb24/Lk1lYXN1cmVzWzBdPy4kdGFyZ2V0Py5hbm5vdGF0aW9ucztcblx0XHRjb25zdCBhZ2dyZWdhdGFibGVQcm9wZXJ0eUFubm90YXRpb25zID0gYWdncmVnYXRpb24/LkFnZ3JlZ2F0YWJsZVByb3BlcnR5Py4kdGFyZ2V0Py5hbm5vdGF0aW9ucztcblx0XHR0aGlzLmNoZWNrSWZVT01IYXNDdXN0b21BZ2dyZWdhdGUoY3VzdG9tQWdncmVnYXRlcywgcHJvcGVydHlBbm5vdGF0aW9ucywgYWdncmVnYXRhYmxlUHJvcGVydHlBbm5vdGF0aW9ucyk7XG5cdFx0Y29uc3QgcHJvcGVydHlIaWRkZW4gPSBwcm9wZXJ0eUFubm90YXRpb25zPy5VST8uSGlkZGVuO1xuXHRcdGNvbnN0IGhpZGRlbk1lYXN1cmUgPSBwcm9wZXJ0eUhpZGRlbj8udmFsdWVPZigpO1xuXHRcdGNvbnN0IGNoYXJ0VHlwZSA9IHRoaXMuY2hhcnRBbm5vdGF0aW9uPy5DaGFydFR5cGU7XG5cdFx0dGhpcy5jaGFydFR5cGUgPSBjaGFydFR5cGU7XG5cdFx0dGhpcy5zaG93VmFsdWVIZWxwQnV0dG9uID0gdGhpcy5nZXRzaG93VmFsdWVIZWxwQnV0dG9uKGNoYXJ0VHlwZSwgaGlkZGVuTWVhc3VyZSk7XG5cdFx0dGhpcy5kcmFmdFN1cHBvcnRlZCA9IE1vZGVsSGVscGVyLmlzRHJhZnRTdXBwb3J0ZWQobWV0YU1vZGVsLCB0aGlzLmNvbnRleHRQYXRoKTtcblx0XHQvKipcblx0XHQgKiBJZiB0aGUgbWVhc3VyZSBvZiB0aGUgY2hhcnQgaXMgbWFya2VkIGFzICdoaWRkZW4nLCBvciBpZiB0aGUgY2hhcnQgdHlwZSBpcyBpbnZhbGlkLCBvciBpZiB0aGUgZGF0YSB0eXBlIGZvciB0aGUgbGluZSBjaGFydCBpcyBpbnZhbGlkLFxuXHRcdCAqIHRoZSBjYWxsIGlzIG1hZGUgdG8gdGhlIEludGVyYWN0aXZlQ2hhcnRXaXRoRXJyb3IgZnJhZ21lbnQgKHVzaW5nIGVycm9yLW1lc3NhZ2UgcmVsYXRlZCBBUElzLCBidXQgYXZvaWRpbmcgYmF0Y2ggY2FsbHMpXG5cdFx0ICovXG5cdFx0dGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmdldEVycm9yTWVzc2FnZShoaWRkZW5NZWFzdXJlLCBtZWFzdXJlKTtcblx0XHR0aGlzLmNoYXJ0TWVhc3VyZSA9IG1lYXN1cmU7XG5cdFx0dGhpcy5tZWFzdXJlRGltZW5zaW9uVGl0bGUgPSBJbnRlcmFjdGl2ZUNoYXJ0SGVscGVyLmdldE1lYXN1cmVEaW1lbnNpb25UaXRsZShcblx0XHRcdHRoaXMuY2hhcnRBbm5vdGF0aW9uLFxuXHRcdFx0dGhpcy5jdXN0b21BZ2dyZWdhdGUsXG5cdFx0XHR0aGlzLmFnZ3JlZ2F0ZVByb3BlcnRpZXNcblx0XHQpO1xuXHRcdGNvbnN0IGNvbGxlY3Rpb24gPSB0aGlzLmdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoPFBhZ2VDb250ZXh0UGF0aFRhcmdldD4odGhpcy5jb250ZXh0UGF0aCk7XG5cdFx0dGhpcy50b29sVGlwID0gSW50ZXJhY3RpdmVDaGFydEhlbHBlci5nZXRUb29sVGlwKFxuXHRcdFx0dGhpcy5jaGFydEFubm90YXRpb24sXG5cdFx0XHRjb2xsZWN0aW9uLFxuXHRcdFx0dGhpcy5wYXRoLFxuXHRcdFx0dGhpcy5jdXN0b21BZ2dyZWdhdGUsXG5cdFx0XHR0aGlzLmFnZ3JlZ2F0ZVByb3BlcnRpZXMsXG5cdFx0XHR0aGlzLnJlbmRlckxpbmVDaGFydFxuXHRcdCk7XG5cdFx0dGhpcy5Vb01WaXNpYmlsaXR5ID0gSW50ZXJhY3RpdmVDaGFydEhlbHBlci5nZXRVb01WaXNpYmxpdHkodGhpcy5jaGFydEFubm90YXRpb24sIHRoaXMuc2hvd0Vycm9yKTtcblx0XHR0aGlzLnNjYWxlVW9NVGl0bGUgPSBJbnRlcmFjdGl2ZUNoYXJ0SGVscGVyLmdldFNjYWxlVW9NVGl0bGUoXG5cdFx0XHR0aGlzLmNoYXJ0QW5ub3RhdGlvbixcblx0XHRcdGNvbGxlY3Rpb24sXG5cdFx0XHR0aGlzLnBhdGgsXG5cdFx0XHR0aGlzLmN1c3RvbUFnZ3JlZ2F0ZSxcblx0XHRcdHRoaXMuYWdncmVnYXRlUHJvcGVydGllc1xuXHRcdCk7XG5cdFx0dGhpcy5jb2xsZWN0aW9uID0gY29sbGVjdGlvbjtcblx0XHR0aGlzLnNvcnRPcmRlciA9IHB2QW5ub3RhdGlvbj8uU29ydE9yZGVyO1xuXHRcdHRoaXMuZmlsdGVyQ291bnRCaW5kaW5nID0gSW50ZXJhY3RpdmVDaGFydEhlbHBlci5nZXRmaWx0ZXJDb3VudEJpbmRpbmcodGhpcy5jaGFydEFubm90YXRpb24pO1xuXHRcdGNvbnN0IHZpZXdJZCA9IHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKT8uZ2V0VmlldygpLmdldElkKCk7XG5cdFx0aWYgKHRoaXMuX2NvbnRlbnRJZCkge1xuXHRcdFx0dGhpcy5fY29udGVudElkID0gYCR7dmlld0lkfS0tJHt0aGlzLl9jb250ZW50SWR9YDtcblx0XHR9IGVsc2UgaWYgKHRoaXMuaWQpIHtcblx0XHRcdHRoaXMuX2NvbnRlbnRJZCA9IGAke3RoaXMuaWR9LWNvbnRlbnRgO1xuXHRcdH1cblx0XHR0aGlzLnNlbGVjdGlvblZhcmlhbnQgPSB0aGlzLnNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uXG5cdFx0XHQ/IHRoaXMuZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGg8U2VsZWN0aW9uVmFyaWFudD4odGhpcy5zZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvbik/LnRhcmdldE9iamVjdFxuXHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KCk7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2sgaWYgdGhlIFVvTSBoYXMgY3VzdG9tIGFnZ3JlZ2F0ZVxuXHQgKiBAcGFyYW0gY3VzdG9tQWdncmVnYXRlcyAtIEN1c3RvbSBhZ2dyZWdhdGVzXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eUFubm90YXRpb25zIC0gUHJvcGVydHkgYW5ub3RhdGlvbnNcblx0ICogQHBhcmFtIGFnZ3JlZ2F0YWJsZVByb3BlcnR5QW5ub3RhdGlvbnMgLSBBZ2dyZWdhdGFibGUgcHJvcGVydHkgYW5ub3RhdGlvbnNcblx0ICovXG5cdGNoZWNrSWZVT01IYXNDdXN0b21BZ2dyZWdhdGUoXG5cdFx0Y3VzdG9tQWdncmVnYXRlczogQXJyYXk8Q3VzdG9tQWdncmVnYXRlPixcblx0XHRwcm9wZXJ0eUFubm90YXRpb25zOiBQcm9wZXJ0eUFubm90YXRpb25zIHwgdW5kZWZpbmVkLFxuXHRcdGFnZ3JlZ2F0YWJsZVByb3BlcnR5QW5ub3RhdGlvbnM/OiBQcm9wZXJ0eUFubm90YXRpb25zXG5cdCk6IHZvaWQge1xuXHRcdGNvbnN0IG1lYXN1cmVzID0gcHJvcGVydHlBbm5vdGF0aW9ucz8uTWVhc3VyZXM7XG5cdFx0Y29uc3QgYWdncmVnYXRhYmxlUHJvcGVydHlNZWFzdXJlcyA9IGFnZ3JlZ2F0YWJsZVByb3BlcnR5QW5ub3RhdGlvbnM/Lk1lYXN1cmVzO1xuXHRcdGNvbnN0IFVPTSA9IHRoaXMuZ2V0VW9NKG1lYXN1cmVzLCBhZ2dyZWdhdGFibGVQcm9wZXJ0eU1lYXN1cmVzKTtcblx0XHRpZiAoXG5cdFx0XHRVT00gJiZcblx0XHRcdGN1c3RvbUFnZ3JlZ2F0ZXMuc29tZShmdW5jdGlvbiAoY3VzdEFnZzogQ3VzdG9tQWdncmVnYXRlKSB7XG5cdFx0XHRcdHJldHVybiBjdXN0QWdnLnF1YWxpZmllciA9PT0gVU9NO1xuXHRcdFx0fSlcblx0XHQpIHtcblx0XHRcdHRoaXMuVW9NSGFzQ3VzdG9tQWdncmVnYXRlID0gdHJ1ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5Vb01IYXNDdXN0b21BZ2dyZWdhdGUgPSBmYWxzZTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBjaGFydCBhbm5vdGF0aW9uLlxuXHQgKiBAcGFyYW0gdmlzdWFsaXphdGlvbnMgVmlzdWFsaXphdGlvbnNcblx0ICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHQgQ29udmVydGVyIGNvbnRleHRcblx0ICovXG5cdGdldENoYXJ0QW5ub3RhdGlvbihcblx0XHR2aXN1YWxpemF0aW9uczogQXJyYXk8QW5ub3RhdGlvblBhdGg8Q2hhcnQgfCBEYXRhUG9pbnQgfCBMaW5lSXRlbT4+IHwgdW5kZWZpbmVkLFxuXHRcdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHRcblx0KTogdm9pZCB7XG5cdFx0aWYgKHZpc3VhbGl6YXRpb25zKSB7XG5cdFx0XHRmb3IgKGxldCB2aXN1YWxpemF0aW9uIG9mIHZpc3VhbGl6YXRpb25zKSB7XG5cdFx0XHRcdGNvbnN0IHNBbm5vdGF0aW9uUGF0aCA9IHZpc3VhbGl6YXRpb24gJiYgdmlzdWFsaXphdGlvbi52YWx1ZTtcblx0XHRcdFx0dGhpcy5jaGFydEFubm90YXRpb24gPVxuXHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZUFubm90YXRpb248Q2hhcnQ+KHNBbm5vdGF0aW9uUGF0aCkgJiZcblx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGVBbm5vdGF0aW9uPENoYXJ0PihzQW5ub3RhdGlvblBhdGgpLmFubm90YXRpb247XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIGZsYWcgdG8gc2hvdyBvciBoaWRlIHRoZSB2YWx1ZSBoZWxwIGZvciB0aGUgdmlzdWFsIGZpbHRlci5cblx0ICogQHBhcmFtIGJTaG93VmFsdWVIZWxwIEZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRvIHNob3cgb3IgaGlkZSB0aGUgdmFsdWUgaGVscC5cblx0ICovXG5cdHNldFNob3dWYWx1ZUhlbHAoYlNob3dWYWx1ZUhlbHA6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRpZiAodGhpcy5jb250ZW50Py5pc0E8VmlzdWFsRmlsdGVyQ29udHJvbD4oXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLmZpbHRlcmJhci5WaXN1YWxGaWx0ZXJcIikpIHtcblx0XHRcdGlmICh0aGlzLmNvbnRlbnQ/LmdldEl0ZW1zKCkubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRjb25zdCBvVmlzdWFsRmlsdGVyQ29udHJvbCA9IHRoaXMuZ2V0VmlzdWFsRmlsdGVyQ29udHJvbCgpO1xuXHRcdFx0XHRvVmlzdWFsRmlsdGVyQ29udHJvbD8uZ2V0Q29udGVudCgpLnNvbWUoZnVuY3Rpb24gKG9Jbm5lckNvbnRyb2w6IENvbnRyb2wpIHtcblx0XHRcdFx0XHRpZiAob0lubmVyQ29udHJvbC5pc0E8QnV0dG9uPihcInNhcC5tLkJ1dHRvblwiKSkge1xuXHRcdFx0XHRcdFx0b0lubmVyQ29udHJvbC5zZXRWaXNpYmxlKGJTaG93VmFsdWVIZWxwKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR0aGlzLnNldFByb3BlcnR5KFwic2hvd1ZhbHVlSGVscFwiLCBiU2hvd1ZhbHVlSGVscCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIHNvdXJjZSBvZiB0aGUgdmFsdWUgaGVscCBpY29uLlxuXHQgKiBAcGFyYW0gc0ljb25TcmMgVGhlIHNvdXJjZSBvZiB0aGUgdmFsdWUgaGVscCBpY29uXG5cdCAqL1xuXHRzZXRWYWx1ZUhlbHBJY29uU3JjKHNJY29uU3JjOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5jb250ZW50Py5pc0E8VmlzdWFsRmlsdGVyQ29udHJvbD4oXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLmZpbHRlcmJhci5WaXN1YWxGaWx0ZXJcIikpIHtcblx0XHRcdGlmICh0aGlzLmNvbnRlbnQ/LmdldEl0ZW1zKCkubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRjb25zdCBvVmlzdWFsRmlsdGVyQ29udHJvbCA9IHRoaXMuZ2V0VmlzdWFsRmlsdGVyQ29udHJvbCgpO1xuXHRcdFx0XHRvVmlzdWFsRmlsdGVyQ29udHJvbD8uZ2V0Q29udGVudCgpLnNvbWUoZnVuY3Rpb24gKG9Jbm5lckNvbnRyb2w6IENvbnRyb2wpIHtcblx0XHRcdFx0XHRpZiAob0lubmVyQ29udHJvbC5pc0E8QnV0dG9uPihcInNhcC5tLkJ1dHRvblwiKSkge1xuXHRcdFx0XHRcdFx0b0lubmVyQ29udHJvbC5zZXRJY29uKHNJY29uU3JjKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR0aGlzLnNldFByb3BlcnR5KFwidmFsdWVIZWxwSWNvblNyY1wiLCBzSWNvblNyYyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgdmlzdWFsIGZpbHRlciBjb250cm9sIGZyb20gdGhlIGNvbnRlbnQuXG5cdCAqIEByZXR1cm5zIFRoZSB2aXN1YWwgZmlsdGVyIGNvbnRyb2wgb3IgdW5kZWZpbmVkIGlmIG5vdCBmb3VuZFxuXHQgKi9cblx0Z2V0VmlzdWFsRmlsdGVyQ29udHJvbCgpOiBPdmVyZmxvd1Rvb2xiYXIgfCB1bmRlZmluZWQge1xuXHRcdGlmICh0aGlzLmNvbnRlbnQ/LmlzQTxWaXN1YWxGaWx0ZXJDb250cm9sPihcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuZmlsdGVyYmFyLlZpc3VhbEZpbHRlclwiKSkge1xuXHRcdFx0cmV0dXJuICh0aGlzLmNvbnRlbnQ/LmdldEl0ZW1zKClbMF0gYXMgVkJveCkuZ2V0SXRlbXMoKVswXSBhcyBPdmVyZmxvd1Rvb2xiYXI7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgZXJyb3IgbWVzc2FnZSBmb3IgYSBoaWRkZW4gbWVhc3VyZS5cblx0ICogQHBhcmFtIGhpZGRlbk1lYXN1cmUgVGhlIGhpZGRlbiBtZWFzdXJlIG9iamVjdFxuXHQgKiBAcGFyYW0gbWVhc3VyZSBUaGUgbWVhc3VyZSBuYW1lXG5cdCAqIEByZXR1cm5zIFRoZSBlcnJvciBtZXNzYWdlLCBpZiBhbnlcblx0ICovXG5cdGdldEVycm9yTWVzc2FnZShoaWRkZW5NZWFzdXJlOiBPYmplY3QgfCB1bmRlZmluZWQsIG1lYXN1cmU/OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdGxldCB2YWxpZENoYXJ0VHlwZTtcblx0XHRpZiAodGhpcy5jaGFydEFubm90YXRpb24pIHtcblx0XHRcdGlmICh0aGlzLmNoYXJ0QW5ub3RhdGlvbi5DaGFydFR5cGUgPT09IFwiVUkuQ2hhcnRUeXBlL0xpbmVcIiB8fCB0aGlzLmNoYXJ0QW5ub3RhdGlvbi5DaGFydFR5cGUgPT09IFwiVUkuQ2hhcnRUeXBlL0JhclwiKSB7XG5cdFx0XHRcdHZhbGlkQ2hhcnRUeXBlID0gdHJ1ZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHZhbGlkQ2hhcnRUeXBlID0gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmICgodHlwZW9mIGhpZGRlbk1lYXN1cmUgPT09IFwiYm9vbGVhblwiICYmIGhpZGRlbk1lYXN1cmUpIHx8ICF2YWxpZENoYXJ0VHlwZSB8fCB0aGlzLnJlbmRlckxpbmVDaGFydCA9PT0gZmFsc2UpIHtcblx0XHRcdHRoaXMuc2hvd0Vycm9yID0gdHJ1ZTtcblx0XHRcdHRoaXMuZXJyb3JNZXNzYWdlVGl0bGUgPVxuXHRcdFx0XHRoaWRkZW5NZWFzdXJlIHx8ICF2YWxpZENoYXJ0VHlwZVxuXHRcdFx0XHRcdD8gdGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIk1fVklTVUFMX0ZJTFRFUlNfRVJST1JfTUVTU0FHRV9USVRMRVwiKVxuXHRcdFx0XHRcdDogdGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIk1fVklTVUFMX0ZJTFRFUl9MSU5FX0NIQVJUX0lOVkFMSURfREFUQVRZUEVcIik7XG5cdFx0XHRpZiAoaGlkZGVuTWVhc3VyZSkge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIk1fVklTVUFMX0ZJTFRFUl9ISURERU5fTUVBU1VSRVwiLCBbbWVhc3VyZV0pO1xuXHRcdFx0fSBlbHNlIGlmICghdmFsaWRDaGFydFR5cGUpIHtcblx0XHRcdFx0cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJNX1ZJU1VBTF9GSUxURVJfVU5TVVBQT1JURURfQ0hBUlRfVFlQRVwiKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiTV9WSVNVQUxfRklMVEVSX0xJTkVfQ0hBUlRfVU5TVVBQT1JURURfRElNRU5TSU9OXCIpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gc2hvdyB0aGUgdmFsdWUgaGVscCBidXR0b24gZm9yIHRoZSB2aXN1YWwgZmlsdGVyLlxuXHQgKlxuXHQgKiBAcGFyYW0gY2hhcnRUeXBlIFRoZSB0eXBlIG9mIGNoYXJ0IHVzZWQgaW4gdGhlIHZpc3VhbCBmaWx0ZXJcblx0ICogQHBhcmFtIGhpZGRlbk1lYXN1cmUgVGhlIGhpZGRlbiBtZWFzdXJlIG9iamVjdFxuXHQgKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRvIHNob3cgdGhlIHZhbHVlIGhlbHAgYnV0dG9uXG5cdCAqL1xuXHRnZXRzaG93VmFsdWVIZWxwQnV0dG9uKGNoYXJ0VHlwZT86IHN0cmluZywgaGlkZGVuTWVhc3VyZT86IE9iamVjdCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IHNEaW1lbnNpb25UeXBlID1cblx0XHRcdHRoaXMuY2hhcnRBbm5vdGF0aW9uPy5EaW1lbnNpb25zWzBdICYmXG5cdFx0XHR0aGlzLmNoYXJ0QW5ub3RhdGlvbj8uRGltZW5zaW9uc1swXS4kdGFyZ2V0ICYmXG5cdFx0XHR0aGlzLmNoYXJ0QW5ub3RhdGlvbi5EaW1lbnNpb25zWzBdLiR0YXJnZXQudHlwZTtcblx0XHRpZiAoc0RpbWVuc2lvblR5cGUgPT09IFwiRWRtLkRhdGVcIiB8fCBzRGltZW5zaW9uVHlwZSA9PT0gXCJFZG0uVGltZVwiIHx8IHNEaW1lbnNpb25UeXBlID09PSBcIkVkbS5EYXRlVGltZU9mZnNldFwiKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgaGlkZGVuTWVhc3VyZSA9PT0gXCJib29sZWFuXCIgJiYgaGlkZGVuTWVhc3VyZSkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH0gZWxzZSBpZiAoIShjaGFydFR5cGUgPT09IFwiVUkuQ2hhcnRUeXBlL0JhclwiIHx8IGNoYXJ0VHlwZSA9PT0gXCJVSS5DaGFydFR5cGUvTGluZVwiKSkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5yZW5kZXJMaW5lQ2hhcnQgPT09IGZhbHNlICYmIGNoYXJ0VHlwZSA9PT0gXCJVSS5DaGFydFR5cGUvTGluZVwiKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSBlbHNlIGlmICh0aGlzLmlzVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzID09PSB0cnVlKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgdGhlIHNlbGVjdGlvbiB2YXJpYW50IGZvciB0aGUgdmlzdWFsIGZpbHRlci5cblx0ICpcblx0ICogQHBhcmFtIGRlZmF1bHRTZWxlY3Rpb25WYXJpYW50IFRoZSBkZWZhdWx0IHNlbGVjdGlvbiB2YXJpYW50IHRvIGJlIGNoZWNrZWRcblx0ICogQHJldHVybnMgdm9pZFxuXHQgKi9cblx0Y2hlY2tTZWxlY3Rpb25WYXJpYW50KGRlZmF1bHRTZWxlY3Rpb25WYXJpYW50PzogU2VsZWN0aW9uVmFyaWFudCk6IHZvaWQge1xuXHRcdGxldCBzZWxlY3Rpb25WYXJpYW50O1xuXHRcdGlmICh0aGlzLnNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uKSB7XG5cdFx0XHRzZWxlY3Rpb25WYXJpYW50ID0gdGhpcy5nZXREYXRhTW9kZWxPYmplY3RGb3JNZXRhUGF0aDxTZWxlY3Rpb25WYXJpYW50Pih0aGlzLnNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uKT8udGFyZ2V0T2JqZWN0O1xuXHRcdH1cblx0XHRpZiAoIXNlbGVjdGlvblZhcmlhbnQgJiYgZGVmYXVsdFNlbGVjdGlvblZhcmlhbnQpIHtcblx0XHRcdHNlbGVjdGlvblZhcmlhbnQgPSBkZWZhdWx0U2VsZWN0aW9uVmFyaWFudDtcblx0XHR9XG5cdFx0aWYgKHNlbGVjdGlvblZhcmlhbnQgJiYgc2VsZWN0aW9uVmFyaWFudC5TZWxlY3RPcHRpb25zICYmICF0aGlzLm11bHRpcGxlU2VsZWN0aW9uQWxsb3dlZCkge1xuXHRcdFx0Zm9yIChjb25zdCBzZWxlY3RPcHRpb24gb2Ygc2VsZWN0aW9uVmFyaWFudC5TZWxlY3RPcHRpb25zKSB7XG5cdFx0XHRcdGlmIChzZWxlY3RPcHRpb24uUHJvcGVydHlOYW1lPy52YWx1ZSA9PT0gdGhpcy5jaGFydEFubm90YXRpb24/LkRpbWVuc2lvbnNbMF0udmFsdWUpIHtcblx0XHRcdFx0XHRpZiAoc2VsZWN0T3B0aW9uLlJhbmdlcy5sZW5ndGggPiAxKSB7XG5cdFx0XHRcdFx0XHRMb2cuZXJyb3IoXCJNdWx0aXBsZSBTZWxlY3RPcHRpb25zIGZvciBGaWx0ZXJGaWVsZCBoYXZpbmcgU2luZ2xlVmFsdWUgQWxsb3dlZCBFeHByZXNzaW9uXCIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGFnZ3JlZ2F0ZSBwcm9wZXJ0aWVzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBhZ2dyZWdhdGlvbnMgYW5kIG1lYXN1cmUuXG5cdCAqIEBwYXJhbSBhZ2dyZWdhdGlvbnMgVGhlIGxpc3Qgb2YgYWdncmVnYXRlZCBwcm9wZXJ0aWVzXG5cdCAqIEBwYXJhbSBtZWFzdXJlIFRoZSBvcHRpb25hbCBtZWFzdXJlIHRvIGZpbHRlciB0aGUgYWdncmVnYXRlZCBwcm9wZXJ0aWVzXG5cdCAqIEByZXR1cm5zIFRoZSBtYXRjaGluZyBhZ2dyZWdhdGVkIHByb3BlcnR5LCBpZiBmb3VuZDsgb3RoZXJ3aXNlLCB1bmRlZmluZWRcblx0ICovXG5cdGdldEFnZ3JlZ2F0ZVByb3BlcnRpZXMoYWdncmVnYXRpb25zOiBBZ2dyZWdhdGVkUHJvcGVydHlUeXBlW10sIG1lYXN1cmU/OiBzdHJpbmcpOiBBZ2dyZWdhdGVkUHJvcGVydHlUeXBlIHwgdW5kZWZpbmVkIHtcblx0XHRsZXQgbWF0Y2hlZEFnZ3JlZ2F0ZTogQWdncmVnYXRlZFByb3BlcnR5VHlwZSB8IHVuZGVmaW5lZDtcblx0XHRpZiAoIWFnZ3JlZ2F0aW9ucykge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRhZ2dyZWdhdGlvbnMuc29tZShmdW5jdGlvbiAoYWdncmVnYXRlKSB7XG5cdFx0XHRpZiAoYWdncmVnYXRlLk5hbWUgPT09IG1lYXN1cmUpIHtcblx0XHRcdFx0bWF0Y2hlZEFnZ3JlZ2F0ZSA9IGFnZ3JlZ2F0ZTtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIG1hdGNoZWRBZ2dyZWdhdGU7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSB1bml0IG9mIG1lYXN1cmUgKFVvTSkgZm9yIHRoZSB2aXN1YWwgZmlsdGVyLlxuXHQgKlxuXHQgKiBAcGFyYW0gbWVhc3VyZXMgVGhlIG1lYXN1cmVzIGZvciB0aGUgdmlzdWFsIGZpbHRlclxuXHQgKiBAcGFyYW0gYWdncmVnYXRhYmxlUHJvcGVydHlNZWFzdXJlcyBUaGUgYWdncmVnYXRhYmxlIHByb3BlcnR5IG1lYXN1cmVzIGZvciB0aGUgdmlzdWFsIGZpbHRlclxuXHQgKiBAcmV0dXJucyBUaGUgdW5pdCBvZiBtZWFzdXJlIGZvciB0aGUgdmlzdWFsIGZpbHRlclxuXHQgKi9cblx0Z2V0VW9NKG1lYXN1cmVzPzogUHJvcGVydHlBbm5vdGF0aW9uc19NZWFzdXJlcywgYWdncmVnYXRhYmxlUHJvcGVydHlNZWFzdXJlcz86IFByb3BlcnR5QW5ub3RhdGlvbnNfTWVhc3VyZXMpOiBzdHJpbmcge1xuXHRcdGxldCBJU09DdXJyZW5jeSA9IG1lYXN1cmVzPy5JU09DdXJyZW5jeTtcblx0XHRsZXQgdW5pdCA9IG1lYXN1cmVzPy5Vbml0O1xuXHRcdGlmICghSVNPQ3VycmVuY3kgJiYgIXVuaXQgJiYgYWdncmVnYXRhYmxlUHJvcGVydHlNZWFzdXJlcykge1xuXHRcdFx0SVNPQ3VycmVuY3kgPSBhZ2dyZWdhdGFibGVQcm9wZXJ0eU1lYXN1cmVzLklTT0N1cnJlbmN5O1xuXHRcdFx0dW5pdCA9IGFnZ3JlZ2F0YWJsZVByb3BlcnR5TWVhc3VyZXMuVW5pdDtcblx0XHR9XG5cdFx0cmV0dXJuIChcblx0XHRcdChJU09DdXJyZW5jeSBhcyB1bmtub3duIGFzIFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjxzdHJpbmc+KT8ucGF0aCB8fFxuXHRcdFx0KHVuaXQgYXMgdW5rbm93biBhcyBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb248c3RyaW5nPik/LnBhdGhcblx0XHQpO1xuXHR9XG5cblx0Z2V0UmVxdWlyZWQoKTogc3RyaW5nIHtcblx0XHRpZiAodGhpcy5yZXF1aXJlZCkge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PExhYmVsIHRleHQ9XCJcIiB3aWR0aD1cIjAuNXJlbVwiIHJlcXVpcmVkPVwidHJ1ZVwiPlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRsYXlvdXREYXRhOiA8T3ZlcmZsb3dUb29sYmFyTGF5b3V0RGF0YSBwcmlvcml0eT17T3ZlcmZsb3dUb29sYmFyUHJpb3JpdHkuTmV2ZXJPdmVyZmxvd30gLz5cblx0XHRcdFx0XHR9fVxuXHRcdFx0XHQ8L0xhYmVsPlxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIFwiXCI7XG5cdFx0fVxuXHR9XG5cblx0Z2V0VGl0bGUoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PFRpdGxlXG5cdFx0XHRcdGlkPXtnZW5lcmF0ZShbdGhpcy5fY29udGVudElkLCBcIk1lYXN1cmVEaW1lbnNpb25UaXRsZVwiXSl9XG5cdFx0XHRcdHRleHQ9e3RoaXMubWVhc3VyZURpbWVuc2lvblRpdGxlfVxuXHRcdFx0XHR0b29sdGlwPXt0aGlzLnRvb2xUaXB9XG5cdFx0XHRcdHRpdGxlU3R5bGU9XCJINlwiXG5cdFx0XHRcdGxldmVsPVwiSDNcIlxuXHRcdFx0XHRjbGFzcz1cInNhcFVpVGlueU1hcmdpbkVuZCBzYXBVaU5vTWFyZ2luQmVnaW5cIlxuXHRcdFx0PjwvVGl0bGU+XG5cdFx0KTtcblx0fVxuXG5cdGdldFVvTVRpdGxlKHNob3dFcnJvckV4cHJlc3Npb246IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0aWYgKHRoaXMuVW9NVmlzaWJpbGl0eSkge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PFRpdGxlXG5cdFx0XHRcdFx0aWQ9e2dlbmVyYXRlKFt0aGlzLl9jb250ZW50SWQsIFwiU2NhbGVVb01UaXRsZVwiXSl9XG5cdFx0XHRcdFx0dmlzaWJsZT17c2hvd0Vycm9yRXhwcmVzc2lvbn1cblx0XHRcdFx0XHR0ZXh0PXt0aGlzLnNjYWxlVW9NVGl0bGV9XG5cdFx0XHRcdFx0dGl0bGVTdHlsZT1cIkg2XCJcblx0XHRcdFx0XHRsZXZlbD1cIkgzXCJcblx0XHRcdFx0XHR3aWR0aD17XG5cdFx0XHRcdFx0XHR0aGlzLnNjYWxlVW9NVGl0bGVcblx0XHRcdFx0XHRcdFx0PyBjb21waWxlRXhwcmVzc2lvbihpZkVsc2UocmVzb2x2ZUJpbmRpbmdTdHJpbmcodGhpcy5zY2FsZVVvTVRpdGxlKSwgXCI0LjE1cmVtXCIsIHVuZGVmaW5lZCkpXG5cdFx0XHRcdFx0XHRcdDogdW5kZWZpbmVkXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQ+PC9UaXRsZT5cblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBcIlwiO1xuXHRcdH1cblx0fVxuXG5cdGdldFRvb2xCYXJTcGFjZXIoKTogc3RyaW5nIHtcblx0XHRpZiAodGhpcy5zaG93VmFsdWVIZWxwQnV0dG9uKSB7XG5cdFx0XHRyZXR1cm4gPFRvb2xiYXJTcGFjZXI+PC9Ub29sYmFyU3BhY2VyPjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIFwiXCI7XG5cdFx0fVxuXHR9XG5cblx0Z2V0VmFsdWVIZWxwKHNob3dFcnJvckV4cHJlc3Npb246IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0aWYgKHRoaXMuc2hvd1ZhbHVlSGVscEJ1dHRvbikge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdGlkPXtnZW5lcmF0ZShbdGhpcy5fY29udGVudElkLCBcIlZpc3VhbEZpbHRlclZhbHVlSGVscEJ1dHRvblwiXSl9XG5cdFx0XHRcdFx0dHlwZT1cIlRyYW5zcGFyZW50XCJcblx0XHRcdFx0XHRhcmlhSGFzUG9wdXA9XCJEaWFsb2dcIlxuXHRcdFx0XHRcdHRleHQ9e3RoaXMuZmlsdGVyQ291bnRCaW5kaW5nfVxuXHRcdFx0XHRcdGVuYWJsZWQ9e3Nob3dFcnJvckV4cHJlc3Npb259XG5cdFx0XHRcdFx0cHJlc3M9eyhldmVudCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0VmlzdWFsRmlsdGVyUnVudGltZS5maXJlVmFsdWVIZWxwKGV2ZW50KTtcblx0XHRcdFx0XHR9fVxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdGxheW91dERhdGE6IDxPdmVyZmxvd1Rvb2xiYXJMYXlvdXREYXRhIHByaW9yaXR5PXtPdmVyZmxvd1Rvb2xiYXJQcmlvcml0eS5OZXZlck92ZXJmbG93fSAvPixcblx0XHRcdFx0XHRcdGN1c3RvbURhdGE6IDxDdXN0b21EYXRhIGtleT17XCJtdWx0aXBsZVNlbGVjdGlvbkFsbG93ZWRcIn0gdmFsdWU9e3RoaXMubXVsdGlwbGVTZWxlY3Rpb25BbGxvd2VkfSAvPlxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvQnV0dG9uPlxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIFwiXCI7XG5cdFx0fVxuXHR9XG5cblx0Z2V0VG9vbGJhcihzaG93RXJyb3JFeHByZXNzaW9uOiBzdHJpbmcpOiBPdmVyZmxvd1Rvb2xiYXIgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8T3ZlcmZsb3dUb29sYmFyIHN0eWxlPVwiQ2xlYXJcIj5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRjb250ZW50OiAoXG5cdFx0XHRcdFx0XHQ8PlxuXHRcdFx0XHRcdFx0XHR7dGhpcy5nZXRSZXF1aXJlZCgpfVxuXHRcdFx0XHRcdFx0XHR7dGhpcy5nZXRUaXRsZSgpfVxuXHRcdFx0XHRcdFx0XHR7dGhpcy5nZXRVb01UaXRsZShzaG93RXJyb3JFeHByZXNzaW9uKX1cblx0XHRcdFx0XHRcdFx0e3RoaXMuZ2V0VG9vbEJhclNwYWNlcigpfVxuXHRcdFx0XHRcdFx0XHR7dGhpcy5nZXRWYWx1ZUhlbHAoc2hvd0Vycm9yRXhwcmVzc2lvbil9XG5cdFx0XHRcdFx0XHQ8Lz5cblx0XHRcdFx0XHQpXG5cdFx0XHRcdH19XG5cdFx0XHQ8L092ZXJmbG93VG9vbGJhcj5cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXMgaW5wYXJhbWV0ZXJzIGNoYW5nZXMgZHVyaW5nIHRoZSBlbmFibGVtZW50IG9mIHRoZSB2aXN1YWwgZmlsdGVyIGNoYXJ0IGJpbmRpbmcgYmFzZWQgb24gdGhlIGNoYW5nZWQgZmlsdGVyIGZpZWxkIHBhdGhzLlxuXHQgKlxuXHQgKiBUaGlzIG1ldGhvZCBjaGVja3MgaWYgdGhlIGluLXBhcmFtZXRlcnMgb2YgdGhlIHZpc3VhbCBmaWx0ZXIgYXJlIGFmZmVjdGVkIGJ5IHRoZSBjaGFuZ2VkIGZpbHRlciBmaWVsZCBwYXRocy5cblx0ICogSWYgYW55IG9mIHRoZSBpbi1wYXJhbWV0ZXJzIGFyZSBhZmZlY3RlZCwgd2Ugc2V0cyB0aCBpbnRlcm5hbCBjb25kaXRpb24gdXBkYXRlIHBlbmRpbmcgZmxhZyB0byB0cnVlLlxuXHQgKiBTdWJzZXF1ZW50bHksIHRoZSBjaGFydCBiaW5kaW5nIHdpbGwgYmUgZW5hYmxlZCBvbmx5IGFmdGVyIHRoZSBjb25kaXRpb24gbW9kZWwgaXMgdXBkYXRlZCBmb3IgdGhlIHZpc3VhbCBmaWx0ZXIgd2l0aCB0aGUgaW5wYXJhbWV0ZXIgc2VsZWN0aW9ucy5cblx0ICogQHBhcmFtIGNoYW5nZWRGaWx0ZXJGaWVsZFBhdGhzIEFycmF5IG9mIGNoYW5nZWQgZmlsdGVyIGZpZWxkIHBhdGhzLlxuXHQgKi9cblx0X2hhbmRsZUluUGFyYW1zQ2hhcnRCaW5kaW5nRW5hYmxlbWVudChjaGFuZ2VkRmlsdGVyRmllbGRQYXRoczogc3RyaW5nW10pOiB2b2lkIHtcblx0XHRjb25zdCBpblBhcmFtZXRlcnMgPSB0aGlzLmdldFByb3BlcnR5KFwiaW5QYXJhbWV0ZXJzXCIpLmN1c3RvbURhdGEgYXMgUGFyYW1ldGVyVHlwZVtdO1xuXHRcdGNvbnN0IGluUGFyYW1ldGVyTG9jYWxEYXRhUHJvcGVydGllcyA9IGluUGFyYW1ldGVycy5tYXAoKGluUGFyYW1ldGVyKSA9PiBpblBhcmFtZXRlci5sb2NhbERhdGFQcm9wZXJ0eSk7XG5cdFx0Y29uc3QgdmZJblBhcmFtZXRlclVwZGF0ZUV4cGVjdGVkID0gY2hhbmdlZEZpbHRlckZpZWxkUGF0aHMuc29tZSgocGF0aCkgPT4gaW5QYXJhbWV0ZXJMb2NhbERhdGFQcm9wZXJ0aWVzLmluY2x1ZGVzKHBhdGgpKTtcblx0XHRpZiAodmZJblBhcmFtZXRlclVwZGF0ZUV4cGVjdGVkKSB7XG5cdFx0XHQvLyBJZiB0aGUgaW5QYXJhbWV0ZXJzIG9mIHRoZSB2aXN1YWwgZmlsdGVyIGFyZSBjaGFuZ2VkKGRpZmZTdGF0ZSksIHdlIG5lZWQgdG8gd2FpdCBmb3IgY29uZGl0aW9ucyBtb2RlbCB0byBiZSB1cGRhdGVkIGZvciB0aGUgdmlzdWFsIGZpbHRlciB0byBmaWx0ZXIgY2hhcnQgYmluZGluZy5cblx0XHRcdHRoaXMuX3NldEludGVybmFsVXBkYXRlUGVuZGluZyh0cnVlKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgZW5hYmxlbWVudCBvZiB0aGUgdmlzdWFsIGZpbHRlciBjaGFydCBiaW5kaW5nLlxuXHQgKiBAcGFyYW0gZW5hYmxlQmluZGluZyBCb29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0byBlbmFibGUgb3IgZGlzYWJsZSB0aGUgY2hhcnQgYmluZGluZy5cblx0ICogQHBhcmFtIGNoYW5nZWRGaWx0ZXJGaWVsZFBhdGhzIEFycmF5IG9mIGNoYW5nZWQgZmlsdGVyIGZpZWxkIHBhdGhzIHRoYXQgbWF5IGFmZmVjdCB0aGUgaW4tcGFyYW1ldGVycyBvZiB0aGUgdmlzdWFsIGZpbHRlci5cblx0ICovXG5cdHNldEVuYWJsZUNoYXJ0QmluZGluZyhlbmFibGVCaW5kaW5nOiBib29sZWFuLCBjaGFuZ2VkRmlsdGVyRmllbGRQYXRoczogc3RyaW5nW10gPSBbXSk6IHZvaWQge1xuXHRcdGlmIChlbmFibGVCaW5kaW5nICYmIGNoYW5nZWRGaWx0ZXJGaWVsZFBhdGhzLmxlbmd0aCA+IDApIHtcblx0XHRcdC8vIElmIGlucGFyYW1ldGVycyBhcmUgY2hhbmdlZCwgd2UgbmVlZCB0byB3YWl0IHRpbGwgdGhlIGNvbmRpdGlvbiBtb2RlbCB0byBiZSB1cGRhdGVkIGJlZm9yZSB3ZSBzZW5kIHJlc3VtZSB0aGUgYmluZGluZyB3aXRoIHRoZSBpbnBhcmFtZXRlciBzZWxlY3Rpb25zIGFzIGZpbHRlcnMgdG8gdGhlIGNoYXJ0IGJpbmRpbmcgYW5kIHNlbmQgdGhlIHJlcXVlc3QuXG5cdFx0XHR0aGlzLl9oYW5kbGVJblBhcmFtc0NoYXJ0QmluZGluZ0VuYWJsZW1lbnQoY2hhbmdlZEZpbHRlckZpZWxkUGF0aHMpO1xuXHRcdH1cblxuXHRcdC8vIFRoZSBiaW5kaW5nIGlzIGV4cGVjdGVkIHRvIGJlIGVuYWJsZWQgb25seSB3aGVuIHZpc3VhbCBmaWx0ZXIgaXMgcmVhZHlcblx0XHQvLyAxLiBpbnRlcm5hbGx5KGlucGFyYW1ldGVyIGNvbmRpdGlvbnMgYXJlIHVwZGF0ZWQgYW5kIHZpc3VhbCBmaWx0ZXIgaXMgcmVuZGVyZWQpXG5cdFx0Ly8gMi4gYW5kIGV4dGVybmFsbHkoZW5hYmxlQ2hhcnRCaW5kaW5nKS4gTGlrZSwgeEFwcFN0YXRlIG9yIGlBcHBTdGF0ZSBpcyBhcHBsaWVkIHRvIHBhcmVudCBmaWx0ZXIgYmFyLlxuXHRcdGNvbnN0IGludGVybmFsVXBkYXRlUGVuZGluZyA9IHRoaXMuaW5QYXJhbUNvbmRpdGlvblVwZGF0ZVBlbmRpbmcgfHwgdGhpcy5yZW5kZXJpbmdVcGRhdGVQZW5kaW5nO1xuXG5cdFx0Y29uc3Qgb3ZlcmFsbEVuYWJsZUJpbmRpbmcgPSBlbmFibGVCaW5kaW5nICYmICFpbnRlcm5hbFVwZGF0ZVBlbmRpbmc7XG5cdFx0Y29uc3QgY2hhcnRCaW5kaW5nID0gdGhpcy5jb250ZW50Py5nZXRDaGFydEJpbmRpbmcoKTtcblx0XHRpZiAoY2hhcnRCaW5kaW5nKSB7XG5cdFx0XHRpZiAob3ZlcmFsbEVuYWJsZUJpbmRpbmcgJiYgY2hhcnRCaW5kaW5nLmlzU3VzcGVuZGVkKCkpIHtcblx0XHRcdFx0Y2hhcnRCaW5kaW5nLnJlc3VtZSgpO1xuXHRcdFx0fSBlbHNlIGlmICghb3ZlcmFsbEVuYWJsZUJpbmRpbmcgJiYgIWNoYXJ0QmluZGluZy5pc1N1c3BlbmRlZCgpKSB7XG5cdFx0XHRcdGNoYXJ0QmluZGluZy5zdXNwZW5kKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHRoaXMuc2V0UHJvcGVydHkoXCJlbmFibGVDaGFydEJpbmRpbmdcIiwgZW5hYmxlQmluZGluZywgdHJ1ZSk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgaW50ZXJuYWwgdXBkYXRlIHBlbmRpbmcgZmxhZ3MgZm9yIHRoZSB2aXN1YWwgZmlsdGVyLlxuXHQgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIG1hbmFnZSB0aGUgaW50ZXJuYWwgc3RhdGUgb2YgdGhlIHZpc3VhbCBmaWx0ZXIsIHNwZWNpZmljYWxseSB3aGVuIHRoZSBpbi1wYXJhbWV0ZXJzIGFuZCByZW5kZXJpbmcgdXBkYXRlcyBhcmUgcGVuZGluZy5cblx0ICogQHBhcmFtIGNvbmRpdGlvblVwZGF0ZVBlbmRpbmcgV2hldGhlciB0aGUgY29uZGl0aW9uIHVwZGF0ZSBpcyBwZW5kaW5nIG9yIG5vdC4gRGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgaW5QYXJhbUNvbmRpdGlvblVwZGF0ZVBlbmRpbmcgc3RhdGUuXG5cdCAqIEBwYXJhbSByZW5kZXJpbmdVcGRhdGVQZW5kaW5nIFdoZXRoZXIgdGhlIHJlbmRlcmluZyB1cGRhdGUgaXMgcGVuZGluZyBvciBub3QuIERlZmF1bHRzIHRvIHRoZSBjdXJyZW50IHJlbmRlcmluZ1VwZGF0ZVBlbmRpbmcgc3RhdGUuXG5cdCAqL1xuXHRfc2V0SW50ZXJuYWxVcGRhdGVQZW5kaW5nKFxuXHRcdGNvbmRpdGlvblVwZGF0ZVBlbmRpbmcgPSB0aGlzLmluUGFyYW1Db25kaXRpb25VcGRhdGVQZW5kaW5nLFxuXHRcdHJlbmRlcmluZ1VwZGF0ZVBlbmRpbmcgPSB0aGlzLnJlbmRlcmluZ1VwZGF0ZVBlbmRpbmdcblx0KTogdm9pZCB7XG5cdFx0Ly8gVGhpcyBtZXRob2QgaXMgdXNlZCB0byBpbnRlcm5hbGx5IGJ5IHZpc3VhbCBmaWx0ZXIgdG8gZW5hYmxlIGFuZCBkaXNhYmxlIGJpbmRpbmdzLlxuXHRcdGNvbnN0IGlzQmluZGluZ0VuYWJsZWRGb3JWaXN1YWxGaWx0ZXJFeHRlcm5hbGx5ID0gdGhpcy5lbmFibGVDaGFydEJpbmRpbmc7XG5cdFx0Y29uc3QgY2hhcnRCaW5kaW5nID0gdGhpcy5jb250ZW50Py5nZXRDaGFydEJpbmRpbmcoKTtcblx0XHRjb25zdCB1cGRhdGVQZW5kaW5nID0gY29uZGl0aW9uVXBkYXRlUGVuZGluZyB8fCByZW5kZXJpbmdVcGRhdGVQZW5kaW5nO1xuXHRcdGlmICghdXBkYXRlUGVuZGluZyAmJiBpc0JpbmRpbmdFbmFibGVkRm9yVmlzdWFsRmlsdGVyRXh0ZXJuYWxseSAmJiBjaGFydEJpbmRpbmcgJiYgY2hhcnRCaW5kaW5nLmlzU3VzcGVuZGVkKCkpIHtcblx0XHRcdC8vIEludGVybmFsIHVwZGF0ZSBpcyBkb25lLCBiaW5kaW5nIGlzIGVuYWJsZWQgZXh0ZXJuYWxseSwgc28gcmVzdW1lIHRoZSBiaW5kaW5nLlxuXHRcdFx0Y2hhcnRCaW5kaW5nLnJlc3VtZSgpO1xuXHRcdH0gZWxzZSBpZiAodXBkYXRlUGVuZGluZyAmJiBjaGFydEJpbmRpbmcgJiYgIWNoYXJ0QmluZGluZy5pc1N1c3BlbmRlZCgpKSB7XG5cdFx0XHQvLyBJbnRlcm5hbCB1cGRhdGUgaXMgcGVuZGluZy9pbiBwcm9ncmVzcywgc28gd2Ugc3VzcGVuZCB0aGUgYmluZGluZy5cblx0XHRcdGNoYXJ0QmluZGluZy5zdXNwZW5kKCk7XG5cdFx0fVxuXHRcdC8vIFVwZGF0ZSB0aGUgaW50ZXJuYWwgZmxhZ3MgZm9yIGNvbmRpdGlvbiBhbmQgcmVuZGVyaW5nIHVwZGF0ZSBwZW5kaW5nLlxuXHRcdHRoaXMuaW5QYXJhbUNvbmRpdGlvblVwZGF0ZVBlbmRpbmcgPSBjb25kaXRpb25VcGRhdGVQZW5kaW5nO1xuXHRcdHRoaXMucmVuZGVyaW5nVXBkYXRlUGVuZGluZyA9IHJlbmRlcmluZ1VwZGF0ZVBlbmRpbmc7XG5cdH1cblxuXHRjcmVhdGVDb250ZW50KCk6IFZpc3VhbEZpbHRlckNvbnRyb2wge1xuXHRcdGNvbnN0IGlkID0gZ2VuZXJhdGUoW3RoaXMucGF0aF0pO1xuXHRcdGNvbnN0IHNob3dFcnJvckV4cHJlc3Npb24gPSBcIns9ICEke2ludGVybmFsPlwiICsgaWQgKyBcIi9zaG93RXJyb3J9fVwiO1xuXHRcdGNvbnN0IGNvenlNb2RlID0gZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoXCJzYXBVaVNpemVDb3p5XCIpO1xuXHRcdGNvbnN0IG92ZXJhbGxIZWlnaHQgPSBjb3p5TW9kZSA/IFwiMTNyZW1cIiA6IFwiMTAwJVwiO1xuXHRcdGNvbnN0IGNoYXJ0SGVpZ2h0ID0gY296eU1vZGUgPyBcIjEwMCVcIiA6IFwiNy41cmVtXCI7XG5cdFx0Y29uc3Qgb3ZlcmFsbFdpZHRoID0gY296eU1vZGUgPyBcIjE3cmVtXCIgOiBcIjIwLjVyZW1cIjtcblx0XHRjb25zdCBjaGFydENsYXNzTWFyZ2luID0gY296eU1vZGUgPyBcIlwiIDogXCJzYXBVaVRpbnlNYXJnaW5CZWdpbkVuZFwiO1xuXHRcdGNvbnN0IHZmQ29udHJvbElkID0gdGhpcy5fY29udGVudElkID8gZ2VuZXJhdGUoW3RoaXMuX2NvbnRlbnRJZF0pIDogdW5kZWZpbmVkO1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8VmlzdWFsRmlsdGVyQ29udHJvbCBpZD17dmZDb250cm9sSWR9IGhlaWdodD17b3ZlcmFsbEhlaWdodH0gd2lkdGg9e292ZXJhbGxXaWR0aH0gY2xhc3M9e2NoYXJ0Q2xhc3NNYXJnaW59PlxuXHRcdFx0XHR7e1xuXHRcdFx0XHRcdGN1c3RvbURhdGE6IDxDdXN0b21EYXRhIGtleT17XCJpbmZvUGF0aFwifSB2YWx1ZT17Z2VuZXJhdGUoW3RoaXMucGF0aF0pfSAvPixcblx0XHRcdFx0XHRpdGVtczogKFxuXHRcdFx0XHRcdFx0PD5cblx0XHRcdFx0XHRcdFx0PFZCb3ggaGVpZ2h0PVwiMnJlbVwiIGNsYXNzPVwic2FwVWlUaW55TWFyZ2luVG9wQm90dG9tXCI+XG5cdFx0XHRcdFx0XHRcdFx0e3RoaXMuZ2V0VG9vbGJhcihzaG93RXJyb3JFeHByZXNzaW9uKX1cblx0XHRcdFx0XHRcdFx0PC9WQm94PlxuXHRcdFx0XHRcdFx0XHQ8VkJveCBoZWlnaHQ9e2NoYXJ0SGVpZ2h0fSB3aWR0aD1cIjEwMCVcIj5cblx0XHRcdFx0XHRcdFx0XHR7Z2V0VmlzdWFsRmlsdGVyQ2hhcnQodGhpcyl9XG5cdFx0XHRcdFx0XHRcdDwvVkJveD5cblx0XHRcdFx0XHRcdDwvPlxuXHRcdFx0XHRcdClcblx0XHRcdFx0fX1cblx0XHRcdDwvVmlzdWFsRmlsdGVyQ29udHJvbD5cblx0XHQpO1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBeUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQWpCQSxJQW1CcUJBLFlBQVksSUFBQUMsSUFBQSxHQURoQ0MsY0FBYyxDQUFDLDBDQUEwQyxDQUFDLEVBQUFDLEtBQUEsR0FFekRDLGtCQUFrQixDQUFDLDBCQUEwQixDQUFDLEVBQUFDLEtBQUEsR0FHOUNDLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUdERixRQUFRLENBQUM7SUFDVEMsSUFBSSxFQUFFO0VBQ1AsQ0FBQyxDQUFDLEVBQUFFLEtBQUEsR0FHREMsS0FBSyxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUdQTCxRQUFRLENBQUM7SUFDVEMsSUFBSSxFQUFFLFFBQVE7SUFDZEssUUFBUSxFQUFFO0VBQ1gsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FHRFAsUUFBUSxDQUFDO0lBQ1RDLElBQUksRUFBRTtFQUNQLENBQUMsQ0FBQyxFQUFBTyxLQUFBLEdBR0RSLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUUsUUFBUTtJQUNkSyxRQUFRLEVBQUU7RUFDWCxDQUFDLENBQUMsRUFBQUcsS0FBQSxHQUdEVCxRQUFRLENBQUM7SUFDVEMsSUFBSSxFQUFFLFFBQVE7SUFDZEssUUFBUSxFQUFFO0VBQ1gsQ0FBQyxDQUFDLEVBQUFJLE1BQUEsR0FHRFYsUUFBUSxDQUFDO0lBQ1RDLElBQUksRUFBRTtFQUNQLENBQUMsQ0FBQyxFQUFBVSxNQUFBLEdBR0RYLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQVcsTUFBQSxHQUdEWixRQUFRLENBQUM7SUFDVEMsSUFBSSxFQUFFO0VBQ1AsQ0FBQyxDQUFDLEVBQUFZLE1BQUEsR0FHRGIsUUFBUSxDQUFDO0lBQ1RDLElBQUksRUFBRTtFQUNQLENBQUMsQ0FBQyxFQUFBYSxNQUFBLEdBR0RkLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQWMsTUFBQSxHQUdEZixRQUFRLENBQUM7SUFDVEMsSUFBSSxFQUFFO0VBQ1AsQ0FBQyxDQUFDLEVBQUFlLE1BQUEsR0FHRGhCLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQWdCLE1BQUEsR0FHRGpCLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQWlCLE1BQUEsR0FHRGxCLFFBQVEs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
|
|
799
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJWaXN1YWxGaWx0ZXIiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsImltcGxlbWVudEludGVyZmFjZSIsIl9kZWMzIiwicHJvcGVydHkiLCJ0eXBlIiwiX2RlYzQiLCJfZGVjNSIsImV2ZW50IiwiX2RlYzYiLCJyZXF1aXJlZCIsIl9kZWM3IiwiX2RlYzgiLCJfZGVjOSIsIl9kZWMxMCIsIl9kZWMxMSIsIl9kZWMxMiIsIl9kZWMxMyIsIl9kZWMxNCIsIl9kZWMxNSIsIl9kZWMxNiIsIl9kZWMxNyIsIl9kZWMxOCIsIl9kZWMxOSIsIl9kZWMyMCIsIl9kZWMyMSIsIl9kZWMyMiIsIl9kZWMyMyIsIl9kZWMyNCIsIl9kZWMyNSIsIl9kZWMyNiIsIl9kZWMyNyIsIl9kZWMyOCIsIl9kZWMyOSIsIl9kZWMzMCIsIl9kZWMzMSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQnVpbGRpbmdCbG9jayIsInByb3BzIiwib3RoZXJzIiwiX3RoaXMiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsIl9kZXNjcmlwdG9yMyIsIl9kZXNjcmlwdG9yNCIsIl9kZXNjcmlwdG9yNSIsIl9kZXNjcmlwdG9yNiIsIl9kZXNjcmlwdG9yNyIsIl9kZXNjcmlwdG9yOCIsIl9kZXNjcmlwdG9yOSIsIl9kZXNjcmlwdG9yMTAiLCJfZGVzY3JpcHRvcjExIiwiX2Rlc2NyaXB0b3IxMiIsIl9kZXNjcmlwdG9yMTMiLCJfZGVzY3JpcHRvcjE0IiwiX2Rlc2NyaXB0b3IxNSIsIl9kZXNjcmlwdG9yMTYiLCJfZGVzY3JpcHRvcjE3IiwiX2Rlc2NyaXB0b3IxOCIsIl9kZXNjcmlwdG9yMTkiLCJfZGVzY3JpcHRvcjIwIiwiX2Rlc2NyaXB0b3IyMSIsIl9kZXNjcmlwdG9yMjIiLCJfZGVzY3JpcHRvcjIzIiwiX2Rlc2NyaXB0b3IyNCIsIl9kZXNjcmlwdG9yMjUiLCJfZGVzY3JpcHRvcjI2IiwiX2Rlc2NyaXB0b3IyNyIsIl9kZXNjcmlwdG9yMjgiLCJfZGVzY3JpcHRvcjI5IiwiX2Rlc2NyaXB0b3IzMCIsImluUGFyYW1Db25kaXRpb25VcGRhdGVQZW5kaW5nIiwicmVuZGVyaW5nVXBkYXRlUGVuZGluZyIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJvbk1ldGFkYXRhQXZhaWxhYmxlIiwiX293bmVyQ29tcG9uZW50IiwiZ3JvdXBJZCIsInBhdGgiLCJtZXRhUGF0aCIsIm93bmVyIiwiX2dldE93bmVyIiwiY29udGV4dFBhdGgiLCJwcmVwcm9jZXNzb3JDb250ZXh0IiwiZnVsbENvbnRleHRQYXRoIiwiY29udGV4dE9iamVjdFBhdGgiLCJnZXREYXRhTW9kZWxPYmplY3RGb3JNZXRhUGF0aCIsIl9yZXNvbHZlZENvbnRleHRQYXRoIiwiZW5kc1dpdGgiLCJtZXRhTW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJkaWFnbm9zdGljcyIsImdldEFwcENvbXBvbmVudCIsImdldERpYWdub3N0aWNzIiwidmlld0RhdGEiLCJnZXRSb290Q29udHJvbGxlciIsImdldFZpZXciLCJnZXRWaWV3RGF0YSIsImNvbnZlcnRlckNvbnRleHQiLCJDb252ZXJ0ZXJDb250ZXh0IiwiY3JlYXRlQ29udmVydGVyQ29udGV4dEZvck1hY3JvIiwic3RhcnRpbmdFbnRpdHlTZXQiLCJuYW1lIiwibWVyZ2UiLCJjb250ZXh0TG9jYXRpb24iLCJNYW5pZmVzdFdyYXBwZXIiLCJhZ2dyZWdhdGlvbkhlbHBlciIsIkFnZ3JlZ2F0aW9uSGVscGVyIiwiZ2V0RW50aXR5VHlwZSIsImN1c3RvbUFnZ3JlZ2F0ZXMiLCJnZXRDdXN0b21BZ2dyZWdhdGVEZWZpbml0aW9ucyIsInB2QW5ub3RhdGlvbiIsInRhcmdldE9iamVjdCIsIm1lYXN1cmUiLCJ2aXN1YWxpemF0aW9ucyIsIlZpc3VhbGl6YXRpb25zIiwiZ2V0Q2hhcnRBbm5vdGF0aW9uIiwiYWdncmVnYXRpb25zIiwiY3VzdEFnZ01lYXN1cmUiLCJjaGFydEFubm90YXRpb24iLCJNZWFzdXJlcyIsImxlbmd0aCIsImZpbHRlciIsImN1c3RBZ2ciLCJxdWFsaWZpZXIiLCJ2YWx1ZSIsImdldEFnZ3JlZ2F0ZWRQcm9wZXJ0aWVzIiwiRHluYW1pY01lYXN1cmVzIiwiTG9nIiwid2FybmluZyIsImdldENvbnZlcnRlckNvbnRleHRGb3IiLCJnZXRBYnNvbHV0ZUFubm90YXRpb25QYXRoIiwiZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCIsIk5hbWUiLCJ0b1N0cmluZyIsImdldEFnZ3JlZ2F0ZWRQcm9wZXJ0eSIsInNvbWUiLCJjdXN0b21BZ2dyZWdhdGUiLCJkZWZhdWx0U2VsZWN0aW9uVmFyaWFudCIsImdldERlZmF1bHRTZWxlY3Rpb25WYXJpYW50IiwiY2hlY2tTZWxlY3Rpb25WYXJpYW50IiwiYWdncmVnYXRpb24iLCJnZXRBZ2dyZWdhdGVQcm9wZXJ0aWVzIiwiYWdncmVnYXRlUHJvcGVydGllcyIsInByb3BlcnR5QW5ub3RhdGlvbnMiLCIkdGFyZ2V0IiwiYW5ub3RhdGlvbnMiLCJhZ2dyZWdhdGFibGVQcm9wZXJ0eUFubm90YXRpb25zIiwiQWdncmVnYXRhYmxlUHJvcGVydHkiLCJjaGVja0lmVU9NSGFzQ3VzdG9tQWdncmVnYXRlIiwicHJvcGVydHlIaWRkZW4iLCJVSSIsIkhpZGRlbiIsImhpZGRlbk1lYXN1cmUiLCJ2YWx1ZU9mIiwiY2hhcnRUeXBlIiwiQ2hhcnRUeXBlIiwic2hvd1ZhbHVlSGVscEJ1dHRvbiIsImdldHNob3dWYWx1ZUhlbHBCdXR0b24iLCJkcmFmdFN1cHBvcnRlZCIsIk1vZGVsSGVscGVyIiwiaXNEcmFmdFN1cHBvcnRlZCIsImVycm9yTWVzc2FnZSIsImdldEVycm9yTWVzc2FnZSIsImNoYXJ0TWVhc3VyZSIsIm1lYXN1cmVEaW1lbnNpb25UaXRsZSIsIkludGVyYWN0aXZlQ2hhcnRIZWxwZXIiLCJnZXRNZWFzdXJlRGltZW5zaW9uVGl0bGUiLCJjb2xsZWN0aW9uIiwidG9vbFRpcCIsImdldFRvb2xUaXAiLCJyZW5kZXJMaW5lQ2hhcnQiLCJVb01WaXNpYmlsaXR5IiwiZ2V0VW9NVmlzaWJsaXR5Iiwic2hvd0Vycm9yIiwic2NhbGVVb01UaXRsZSIsImdldFNjYWxlVW9NVGl0bGUiLCJzb3J0T3JkZXIiLCJTb3J0T3JkZXIiLCJmaWx0ZXJDb3VudEJpbmRpbmciLCJnZXRmaWx0ZXJDb3VudEJpbmRpbmciLCJ2aWV3SWQiLCJnZXRQYWdlQ29udHJvbGxlciIsImdldElkIiwiX2NvbnRlbnRJZCIsImlkIiwic2VsZWN0aW9uVmFyaWFudCIsInNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uIiwidW5kZWZpbmVkIiwiY29udGVudCIsImNyZWF0ZUNvbnRlbnQiLCJtZWFzdXJlcyIsImFnZ3JlZ2F0YWJsZVByb3BlcnR5TWVhc3VyZXMiLCJVT00iLCJnZXRVb00iLCJVb01IYXNDdXN0b21BZ2dyZWdhdGUiLCJ2aXN1YWxpemF0aW9uIiwic0Fubm90YXRpb25QYXRoIiwiZ2V0RW50aXR5VHlwZUFubm90YXRpb24iLCJhbm5vdGF0aW9uIiwic2V0U2hvd1ZhbHVlSGVscCIsImJTaG93VmFsdWVIZWxwIiwiaXNBIiwiZ2V0SXRlbXMiLCJvVmlzdWFsRmlsdGVyQ29udHJvbCIsImdldFZpc3VhbEZpbHRlckNvbnRyb2wiLCJnZXRDb250ZW50Iiwib0lubmVyQ29udHJvbCIsInNldFZpc2libGUiLCJzZXRQcm9wZXJ0eSIsInNldFZhbHVlSGVscEljb25TcmMiLCJzSWNvblNyYyIsInNldEljb24iLCJ2YWxpZENoYXJ0VHlwZSIsImVycm9yTWVzc2FnZVRpdGxlIiwiZ2V0VHJhbnNsYXRlZFRleHQiLCJzRGltZW5zaW9uVHlwZSIsIkRpbWVuc2lvbnMiLCJpc1ZhbHVlTGlzdFdpdGhGaXhlZFZhbHVlcyIsIlNlbGVjdE9wdGlvbnMiLCJtdWx0aXBsZVNlbGVjdGlvbkFsbG93ZWQiLCJzZWxlY3RPcHRpb24iLCJQcm9wZXJ0eU5hbWUiLCJSYW5nZXMiLCJlcnJvciIsIm1hdGNoZWRBZ2dyZWdhdGUiLCJhZ2dyZWdhdGUiLCJJU09DdXJyZW5jeSIsInVuaXQiLCJVbml0IiwiZ2V0UmVxdWlyZWQiLCJfanN4IiwiTGFiZWwiLCJ0ZXh0Iiwid2lkdGgiLCJjaGlsZHJlbiIsImxheW91dERhdGEiLCJPdmVyZmxvd1Rvb2xiYXJMYXlvdXREYXRhIiwicHJpb3JpdHkiLCJPdmVyZmxvd1Rvb2xiYXJQcmlvcml0eSIsIk5ldmVyT3ZlcmZsb3ciLCJnZXRUaXRsZSIsInRpdGxlQ29udHJvbCIsIlRpdGxlIiwiZ2VuZXJhdGUiLCJ0b29sdGlwIiwidGl0bGVTdHlsZSIsImxldmVsIiwiY2xhc3MiLCJfYXR0YWNoVGl0bGVFdmVudERlbGVnYXRlcyIsImdldFVvTVRpdGxlIiwic2hvd0Vycm9yRXhwcmVzc2lvbiIsInZpc2libGUiLCJjb21waWxlRXhwcmVzc2lvbiIsImlmRWxzZSIsInJlc29sdmVCaW5kaW5nU3RyaW5nIiwiZ2V0VG9vbEJhclNwYWNlciIsIlRvb2xiYXJTcGFjZXIiLCJnZXRWYWx1ZUhlbHAiLCJCdXR0b24iLCJhcmlhSGFzUG9wdXAiLCJlbmFibGVkIiwicHJlc3MiLCJWaXN1YWxGaWx0ZXJSdW50aW1lIiwiZmlyZVZhbHVlSGVscCIsImN1c3RvbURhdGEiLCJDdXN0b21EYXRhIiwiZ2V0VG9vbGJhciIsIk92ZXJmbG93VG9vbGJhciIsInN0eWxlIiwiX2pzeHMiLCJfRnJhZ21lbnQiLCJfaGFuZGxlSW5QYXJhbXNDaGFydEJpbmRpbmdFbmFibGVtZW50IiwiY2hhbmdlZEZpbHRlckZpZWxkUGF0aHMiLCJpblBhcmFtZXRlcnMiLCJnZXRQcm9wZXJ0eSIsImluUGFyYW1ldGVyTG9jYWxEYXRhUHJvcGVydGllcyIsIm1hcCIsImluUGFyYW1ldGVyIiwibG9jYWxEYXRhUHJvcGVydHkiLCJ2ZkluUGFyYW1ldGVyVXBkYXRlRXhwZWN0ZWQiLCJpbmNsdWRlcyIsIl9zZXRJbnRlcm5hbFVwZGF0ZVBlbmRpbmciLCJ0aXRsZWNvbnRyb2wiLCJhZGRFdmVudERlbGVnYXRlIiwib25tb3VzZW92ZXIiLCJfZXZ0IiwiZ2V0VG9vbHRpcCIsImdldERvbVJlZiIsInNldEF0dHJpYnV0ZSIsInNldEVuYWJsZUNoYXJ0QmluZGluZyIsImVuYWJsZUJpbmRpbmciLCJhcmd1bWVudHMiLCJpbnRlcm5hbFVwZGF0ZVBlbmRpbmciLCJvdmVyYWxsRW5hYmxlQmluZGluZyIsImNoYXJ0QmluZGluZyIsImdldENoYXJ0QmluZGluZyIsImlzU3VzcGVuZGVkIiwicmVzdW1lIiwic3VzcGVuZCIsImNvbmRpdGlvblVwZGF0ZVBlbmRpbmciLCJpc0JpbmRpbmdFbmFibGVkRm9yVmlzdWFsRmlsdGVyRXh0ZXJuYWxseSIsImVuYWJsZUNoYXJ0QmluZGluZyIsInVwZGF0ZVBlbmRpbmciLCJjb3p5TW9kZSIsImRvY3VtZW50IiwiYm9keSIsImNsYXNzTGlzdCIsImNvbnRhaW5zIiwib3ZlcmFsbEhlaWdodCIsImNoYXJ0SGVpZ2h0Iiwib3ZlcmFsbFdpZHRoIiwiY2hhcnRDbGFzc01hcmdpbiIsInZmQ29udHJvbElkIiwiVmlzdWFsRmlsdGVyQ29udHJvbCIsImhlaWdodCIsIml0ZW1zIiwiVkJveCIsImdldFZpc3VhbEZpbHRlckNoYXJ0IiwiQnVpbGRpbmdCbG9jayIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiVmlzdWFsRmlsdGVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFubm90YXRpb25QYXRoLFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbiB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBDdXN0b21BZ2dyZWdhdGUgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0FnZ3JlZ2F0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IEFnZ3JlZ2F0ZWRQcm9wZXJ0eSxBZ2dyZWdhdGVkUHJvcGVydHlUeXBlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9BbmFseXRpY3NcIjtcbmltcG9ydCB7IFNvcnRPcmRlclR5cGUgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NvbW1vblwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eUFubm90YXRpb25zIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9FZG1fVHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlBbm5vdGF0aW9uc19NZWFzdXJlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvTWVhc3VyZXNfRWRtXCI7XG5pbXBvcnQgdHlwZSB7IENoYXJ0LERhdGFQb2ludCxMaW5lSXRlbSxQcmVzZW50YXRpb25WYXJpYW50LFNlbGVjdGlvblZhcmlhbnQgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBtZXJnZSBmcm9tIFwic2FwL2Jhc2UvdXRpbC9tZXJnZVwiO1xuaW1wb3J0IHsgY29tcGlsZUV4cHJlc3Npb24saWZFbHNlLHJlc29sdmVCaW5kaW5nU3RyaW5nIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcyxldmVudCxpbXBsZW1lbnRJbnRlcmZhY2UscHJvcGVydHksdHlwZSBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgVGVtcGxhdGVDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL1RlbXBsYXRlQ29tcG9uZW50XCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9jayBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1wiO1xuaW1wb3J0IENvbnZlcnRlckNvbnRleHQgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvQ29udmVydGVyQ29udGV4dFwiO1xuaW1wb3J0IHsgQmFzZU1hbmlmZXN0U2V0dGluZ3MgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgTWFuaWZlc3RXcmFwcGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01hbmlmZXN0V3JhcHBlclwiO1xuaW1wb3J0IHsgUGFnZUNvbnRleHRQYXRoVGFyZ2V0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvVGVtcGxhdGVDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IGdldERlZmF1bHRTZWxlY3Rpb25WYXJpYW50IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0RhdGFWaXN1YWxpemF0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IFBhcmFtZXRlclR5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9MaXN0UmVwb3J0L1Zpc3VhbEZpbHRlcnNcIjtcbmltcG9ydCB7IEFnZ3JlZ2F0aW9uSGVscGVyIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9BZ2dyZWdhdGlvblwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5pbXBvcnQgeyBWaWV3RGF0YSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9UZW1wbGF0ZWRWaWV3U2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCBEaWFnbm9zdGljcyBmcm9tIFwic2FwL2ZlL2NvcmUvc3VwcG9ydC9EaWFnbm9zdGljc1wiO1xuaW1wb3J0IHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCBCdXR0b24gZnJvbSBcInNhcC9tL0J1dHRvblwiO1xuaW1wb3J0IExhYmVsIGZyb20gXCJzYXAvbS9MYWJlbFwiO1xuaW1wb3J0IE92ZXJmbG93VG9vbGJhciBmcm9tIFwic2FwL20vT3ZlcmZsb3dUb29sYmFyXCI7XG5pbXBvcnQgT3ZlcmZsb3dUb29sYmFyTGF5b3V0RGF0YSBmcm9tIFwic2FwL20vT3ZlcmZsb3dUb29sYmFyTGF5b3V0RGF0YVwiO1xuaW1wb3J0IFRpdGxlIGZyb20gXCJzYXAvbS9UaXRsZVwiO1xuaW1wb3J0IFRvb2xiYXJTcGFjZXIgZnJvbSBcInNhcC9tL1Rvb2xiYXJTcGFjZXJcIjtcbmltcG9ydCBWQm94IGZyb20gXCJzYXAvbS9WQm94XCI7XG5pbXBvcnQgeyBPdmVyZmxvd1Rvb2xiYXJQcmlvcml0eSB9IGZyb20gXCJzYXAvbS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgQ3VzdG9tRGF0YSBmcm9tIFwic2FwL3VpL2NvcmUvQ3VzdG9tRGF0YVwiO1xuaW1wb3J0IHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvbWRjL0NvbnRyb2xcIjtcbmltcG9ydCBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIFZpc3VhbEZpbHRlckNvbnRyb2wgfSBmcm9tIFwiLi4vY29udHJvbHMvZmlsdGVyYmFyL1Zpc3VhbEZpbHRlclwiO1xuaW1wb3J0IEludGVyYWN0aXZlQ2hhcnRIZWxwZXIgZnJvbSBcIi4vSW50ZXJhY3RpdmVDaGFydEhlbHBlclwiO1xuaW1wb3J0IFZpc3VhbEZpbHRlclJ1bnRpbWUgZnJvbSBcIi4vVmlzdWFsRmlsdGVyUnVudGltZVwiO1xuaW1wb3J0IHsgZ2V0VmlzdWFsRmlsdGVyQ2hhcnQgfSBmcm9tIFwiLi9mcmFnbWVudHMvSW50ZXJhY3RpdmVDaGFydHNcIjtcbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgZm9yIGNyZWF0aW5nIGEgVmlzdWFsRmlsdGVyIGJhc2VkIG9uIHRoZSBtZXRhZGF0YSBwcm92aWRlZCBieSBPRGF0YSBWNC5cbiAqIDxicj5cbiAqIEEgQ2hhcnQgYW5ub3RhdGlvbiBpcyByZXF1aXJlZCB0byBicmluZyB1cCBhbiBpbnRlcmFjdGl2ZSBjaGFydFxuICpcbiAqXG4gKiBVc2FnZSBleGFtcGxlOlxuICogPHByZT5cbiAqICZsdDttYWNyb3M6VmlzdWFsRmlsdGVyXG4gKiBjb2xsZWN0aW9uPVwie2VudGl0eVNldCZndDt9XCJcbiAqIGNoYXJ0QW5ub3RhdGlvbj1cIntjaGFydEFubm90YXRpb24mZ3Q7fVwiXG4gKiBpZD1cInNvbWVJRFwiXG4gKiBncm91cElkPVwic29tZUdyb3VwSURcIlxuICogdGl0bGU9XCJzb21lIFRpdGxlXCJcbiAqIC8mZ3Q7XG4gKiA8L3ByZT5cbiAqIEBwcml2YXRlXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MudmlzdWFsZmlsdGVycy5WaXN1YWxGaWx0ZXJcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZpc3VhbEZpbHRlciBleHRlbmRzIEJ1aWxkaW5nQmxvY2s8VmlzdWFsRmlsdGVyQ29udHJvbD4ge1xuXHRAaW1wbGVtZW50SW50ZXJmYWNlKFwic2FwLnVpLmNvcmUuSUZvcm1Db250ZW50XCIpXG5cdF9faW1wbGVtZW50c19fc2FwX3VpX2NvcmVfSUZvcm1Db250ZW50ID0gdHJ1ZTtcblxuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiXG5cdH0pXG5cdHNob3dWYWx1ZUhlbHAhOiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIlxuXHR9KVxuXHR2YWx1ZUhlbHBJY29uU3JjITogc3RyaW5nO1xuXG5cdEBldmVudCgpXG5cdHZhbHVlSGVscFJlcXVlc3QhOiBGdW5jdGlvbjtcblxuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0cmVxdWlyZWQ6IHRydWVcblx0fSlcblx0aWQhOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdHRpdGxlID0gXCJcIjtcblxuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0cmVxdWlyZWQ6IHRydWVcblx0fSlcblx0cHVibGljIGNvbnRleHRQYXRoITogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRyZXF1aXJlZDogdHJ1ZVxuXHR9KVxuXHRwdWJsaWMgbWV0YVBhdGghOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdG91dFBhcmFtZXRlcj86IHN0cmluZztcblxuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0dmFsdWVsaXN0UHJvcGVydHk/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdHNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJhcnJheVwiXG5cdH0pXG5cdGluUGFyYW1ldGVycz86IFBhcmFtZXRlclR5cGVbXTtcblxuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiXG5cdH0pXG5cdG11bHRpcGxlU2VsZWN0aW9uQWxsb3dlZD86IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIlxuXHR9KVxuXHRyZXF1aXJlZD86IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIlxuXHR9KVxuXHRzaG93T3ZlcmxheUluaXRpYWxseT86IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIlxuXHR9KVxuXHRyZW5kZXJMaW5lQ2hhcnQ/OiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJhcnJheVwiXG5cdH0pXG5cdHJlcXVpcmVkUHJvcGVydGllcz86IHN0cmluZ1tdO1xuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIlxuXHR9KVxuXHRmaWx0ZXJCYXJFbnRpdHlUeXBlPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0c2hvd0Vycm9yPzogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0Y2hhcnRNZWFzdXJlPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0VW9NSGFzQ3VzdG9tQWdncmVnYXRlPzogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiXG5cdH0pXG5cdHNob3dWYWx1ZUhlbHBCdXR0b24/OiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0Y3VzdG9tQWdncmVnYXRlID0gZmFsc2U7XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdGdyb3VwSWQgPSBcIiRhdXRvLnZpc3VhbEZpbHRlcnNcIjtcblxuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0ZXJyb3JNZXNzYWdlVGl0bGU/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdGVycm9yTWVzc2FnZT86IHN0cmluZztcblxuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0X2NvbnRlbnRJZD86IHN0cmluZztcblxuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiXG5cdH0pXG5cdGRyYWZ0U3VwcG9ydGVkPzogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiXG5cdH0pXG5cdGlzVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG5cdC8qKlxuXHQgKiBFbmFibGUgb3IgZGlzYWJsZSBjaGFydCBiaW5kaW5nXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0ZW5hYmxlQ2hhcnRCaW5kaW5nID0gdHJ1ZTtcblxuXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cdCAqIEludGVybmFsIFByb3BlcnRpZXNcblx0ICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5cdGFnZ3JlZ2F0ZVByb3BlcnRpZXM6IEFnZ3JlZ2F0ZWRQcm9wZXJ0eVR5cGUgfCB1bmRlZmluZWQ7XG5cblx0Y2hhcnRUeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0cGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdG1lYXN1cmVEaW1lbnNpb25UaXRsZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdHRvb2xUaXA6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuXHRVb01WaXNpYmlsaXR5OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG5cdHNjYWxlVW9NVGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuXHRmaWx0ZXJDb3VudEJpbmRpbmc6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuXHRjaGFydEFubm90YXRpb24/OiBDaGFydDtcblx0X3Jlc29sdmVkQ29udGV4dFBhdGg/OiBzdHJpbmc7XG5cblx0c29ydE9yZGVyPzogU29ydE9yZGVyVHlwZVtdO1xuXHRjb2xsZWN0aW9uPzogRGF0YU1vZGVsT2JqZWN0UGF0aDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+O1xuXHRzZWxlY3Rpb25WYXJpYW50OiBTZWxlY3Rpb25WYXJpYW50IHwgdW5kZWZpbmVkO1xuXG5cdC8qKlxuXHQgKiBGbGFnIHRvIGluZGljYXRlIGlmIHRoZSBpbi1wYXJhbWV0ZXJzIGFuZCBjb25kaXRpb25zIHVwZGF0ZSBpcyBwZW5kaW5nLlxuXHQgKi9cblx0cHJpdmF0ZSBpblBhcmFtQ29uZGl0aW9uVXBkYXRlUGVuZGluZyA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBJbml0aWFsIHJlbmRlcmluZyBpcyBwZW5kaW5nLlxuXHQgKi9cblx0cHJpdmF0ZSByZW5kZXJpbmdVcGRhdGVQZW5kaW5nID0gdHJ1ZTtcblxuXHRjb25zdHJ1Y3Rvcihwcm9wczogJENvbnRyb2xTZXR0aW5ncyAmIFByb3BlcnRpZXNPZjxWaXN1YWxGaWx0ZXJDb250cm9sPiwgb3RoZXJzPzogJENvbnRyb2xTZXR0aW5ncykge1xuXHRcdHN1cGVyKHByb3BzLCBvdGhlcnMpO1xuXHR9XG5cblx0cHVibGljIG9uTWV0YWRhdGFBdmFpbGFibGUoX293bmVyQ29tcG9uZW50OiBUZW1wbGF0ZUNvbXBvbmVudCk6IHZvaWQge1xuXHRcdHRoaXMuZ3JvdXBJZCA9IFwiJGF1dG8udmlzdWFsRmlsdGVyc1wiO1xuXHRcdHRoaXMucGF0aCA9IHRoaXMubWV0YVBhdGg7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdHRoaXMuY29udGV4dFBhdGggPSB0aGlzLmNvbnRleHRQYXRoID8/IG93bmVyPy5wcmVwcm9jZXNzb3JDb250ZXh0Py5mdWxsQ29udGV4dFBhdGg7XG5cdFx0Y29uc3QgY29udGV4dE9iamVjdFBhdGggPSB0aGlzLmdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoPFByZXNlbnRhdGlvblZhcmlhbnQ+KHRoaXMubWV0YVBhdGgsIHRoaXMuY29udGV4dFBhdGgpO1xuXHRcdGlmICh0aGlzLmNvbnRleHRQYXRoKSB7XG5cdFx0XHR0aGlzLl9yZXNvbHZlZENvbnRleHRQYXRoID0gdGhpcy5jb250ZXh0UGF0aC5lbmRzV2l0aChcIi9cIikgPyB0aGlzLmNvbnRleHRQYXRoIDogdGhpcy5jb250ZXh0UGF0aCArIFwiL1wiO1xuXHRcdH1cblx0XHRjb25zdCBtZXRhTW9kZWwgPSB0aGlzLmdldE1ldGFNb2RlbCgpIGFzIE9EYXRhTWV0YU1vZGVsO1xuXG5cdFx0Y29uc3QgZGlhZ25vc3RpY3MgPSB0aGlzLmdldEFwcENvbXBvbmVudCgpPy5nZXREaWFnbm9zdGljcygpID8/ICh7fSBhcyBEaWFnbm9zdGljcyk7XG5cdFx0Y29uc3Qgdmlld0RhdGEgPVxuXHRcdFx0dGhpcy5fZ2V0T3duZXIoKT8uZ2V0Um9vdENvbnRyb2xsZXIoKT8uZ2V0VmlldygpLmdldFZpZXdEYXRhKCkgPz8gKHRoaXMuX2dldE93bmVyKCk/LmdldFZpZXdEYXRhKCkgYXMgdW5rbm93biBhcyBWaWV3RGF0YSk7XG5cdFx0Y29uc3QgY29udmVydGVyQ29udGV4dCA9IENvbnZlcnRlckNvbnRleHQuY3JlYXRlQ29udmVydGVyQ29udGV4dEZvck1hY3JvKFxuXHRcdFx0Y29udGV4dE9iamVjdFBhdGg/LnN0YXJ0aW5nRW50aXR5U2V0Py5uYW1lIGFzIHN0cmluZyxcblx0XHRcdG1ldGFNb2RlbCxcblx0XHRcdGRpYWdub3N0aWNzLFxuXHRcdFx0bWVyZ2UsXG5cdFx0XHRjb250ZXh0T2JqZWN0UGF0aD8uY29udGV4dExvY2F0aW9uLFxuXHRcdFx0bmV3IE1hbmlmZXN0V3JhcHBlcih2aWV3RGF0YSBhcyBCYXNlTWFuaWZlc3RTZXR0aW5ncywgdGhpcy5nZXRBcHBDb21wb25lbnQoKSlcblx0XHQpO1xuXHRcdGNvbnN0IGFnZ3JlZ2F0aW9uSGVscGVyID0gbmV3IEFnZ3JlZ2F0aW9uSGVscGVyKGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpLCBjb252ZXJ0ZXJDb250ZXh0KTtcblx0XHRjb25zdCBjdXN0b21BZ2dyZWdhdGVzID0gYWdncmVnYXRpb25IZWxwZXIuZ2V0Q3VzdG9tQWdncmVnYXRlRGVmaW5pdGlvbnMoKTtcblx0XHRjb25zdCBwdkFubm90YXRpb24gPSBjb250ZXh0T2JqZWN0UGF0aD8udGFyZ2V0T2JqZWN0O1xuXHRcdGxldCBtZWFzdXJlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdFx0Y29uc3QgdmlzdWFsaXphdGlvbnMgPSBwdkFubm90YXRpb24gJiYgcHZBbm5vdGF0aW9uLlZpc3VhbGl6YXRpb25zO1xuXHRcdHRoaXMuZ2V0Q2hhcnRBbm5vdGF0aW9uKHZpc3VhbGl6YXRpb25zLCBjb252ZXJ0ZXJDb250ZXh0KTtcblx0XHRsZXQgYWdncmVnYXRpb25zOiBBZ2dyZWdhdGVkUHJvcGVydHlUeXBlW10gPSBbXSxcblx0XHRcdGN1c3RBZ2dNZWFzdXJlID0gW107XG5cblx0XHRpZiAodGhpcy5jaGFydEFubm90YXRpb24/Lk1lYXN1cmVzPy5sZW5ndGgpIHtcblx0XHRcdGN1c3RBZ2dNZWFzdXJlID0gY3VzdG9tQWdncmVnYXRlcy5maWx0ZXIoKGN1c3RBZ2cpID0+IHtcblx0XHRcdFx0cmV0dXJuIGN1c3RBZ2cucXVhbGlmaWVyID09PSB0aGlzLmNoYXJ0QW5ub3RhdGlvbj8uTWVhc3VyZXNbMF0udmFsdWU7XG5cdFx0XHR9KTtcblx0XHRcdG1lYXN1cmUgPSBjdXN0QWdnTWVhc3VyZS5sZW5ndGggPiAwID8gY3VzdEFnZ01lYXN1cmVbMF0ucXVhbGlmaWVyIDogdGhpcy5jaGFydEFubm90YXRpb24uTWVhc3VyZXNbMF0udmFsdWU7XG5cdFx0XHRhZ2dyZWdhdGlvbnMgPSBhZ2dyZWdhdGlvbkhlbHBlci5nZXRBZ2dyZWdhdGVkUHJvcGVydGllcygpWzBdO1xuXHRcdH1cblx0XHQvLyBpZiB0aGVyZSBhcmUgQWdncmVnYXRlZFByb3BlcnR5IG9iamVjdHMgYnV0IG5vIGR5bmFtaWMgbWVhc3VyZXMsIHJhdGhlciB0aGVyZSBhcmUgdHJhbnNmb3JtYXRpb24gYWdncmVnYXRlcyBmb3VuZCBpbiBtZWFzdXJlc1xuXHRcdGlmIChcblx0XHRcdGFnZ3JlZ2F0aW9ucyAmJlxuXHRcdFx0YWdncmVnYXRpb25zLmxlbmd0aCA+IDAgJiZcblx0XHRcdCF0aGlzLmNoYXJ0QW5ub3RhdGlvbj8uRHluYW1pY01lYXN1cmVzICYmXG5cdFx0XHRjdXN0QWdnTWVhc3VyZS5sZW5ndGggPT09IDAgJiZcblx0XHRcdHRoaXMuY2hhcnRBbm5vdGF0aW9uPy5NZWFzdXJlcyAmJlxuXHRcdFx0dGhpcy5jaGFydEFubm90YXRpb24/Lk1lYXN1cmVzLmxlbmd0aCA+IDBcblx0XHQpIHtcblx0XHRcdExvZy53YXJuaW5nKFxuXHRcdFx0XHRcIlRoZSB0cmFuc2Zvcm1hdGlvbmFsIGFnZ3JlZ2F0ZSBtZWFzdXJlcyBhcmUgY29uZmlndXJlZCBhcyBDaGFydC5NZWFzdXJlcyBidXQgc2hvdWxkIGJlIGNvbmZpZ3VyZWQgYXMgQ2hhcnQuRHluYW1pY01lYXN1cmVzIGluc3RlYWQuIFBsZWFzZSBjaGVjayB0aGUgU0FQIEhlbHAgZG9jdW1lbnRhdGlvbiBhbmQgY29ycmVjdCB0aGUgY29uZmlndXJhdGlvbiBhY2NvcmRpbmdseS5cIlxuXHRcdFx0KTtcblx0XHR9XG5cdFx0Ly9pZiB0aGUgY2hhcnQgaGFzIGR5bmFtaWMgbWVhc3VyZXMsIGJ1dCB3aXRoIG5vIG90aGVyIGN1c3RvbSBhZ2dyZWdhdGUgbWVhc3VyZXMgdGhlbiBjb25zaWRlciB0aGUgZHluYW1pYyBtZWFzdXJlc1xuXHRcdGlmICh0aGlzLmNoYXJ0QW5ub3RhdGlvbj8uRHluYW1pY01lYXN1cmVzKSB7XG5cdFx0XHRpZiAoY3VzdEFnZ01lYXN1cmUubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRcdG1lYXN1cmUgPSBjb252ZXJ0ZXJDb250ZXh0XG5cdFx0XHRcdFx0LmdldENvbnZlcnRlckNvbnRleHRGb3I8QWdncmVnYXRlZFByb3BlcnR5Pihcblx0XHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0QWJzb2x1dGVBbm5vdGF0aW9uUGF0aCh0aGlzLmNoYXJ0QW5ub3RhdGlvbi5EeW5hbWljTWVhc3VyZXNbMF0udmFsdWUpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHRcdC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKClcblx0XHRcdFx0XHQudGFyZ2V0T2JqZWN0Py5OYW1lLnRvU3RyaW5nKCk7XG5cdFx0XHRcdGFnZ3JlZ2F0aW9ucyA9IGFnZ3JlZ2F0aW9uSGVscGVyLmdldEFnZ3JlZ2F0ZWRQcm9wZXJ0eSgpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0TG9nLndhcm5pbmcoXG5cdFx0XHRcdFx0XCJUaGUgZHluYW1pYyBtZWFzdXJlcyBoYXZlIGJlZW4gaWdub3JlZCBhcyB2aXN1YWwgZmlsdGVycyBjYW4gZGVhbCB3aXRoIG9ubHkgMSBtZWFzdXJlIGFuZCB0aGUgZmlyc3QgKGN1c3RvbSBhZ2dyZWdhdGUpIG1lYXN1cmUgZGVmaW5lZCB1bmRlciBDaGFydC5NZWFzdXJlcyBpcyBjb25zaWRlcmVkLlwiXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChcblx0XHRcdGN1c3RvbUFnZ3JlZ2F0ZXMuc29tZShmdW5jdGlvbiAoY3VzdEFnZykge1xuXHRcdFx0XHRyZXR1cm4gY3VzdEFnZy5xdWFsaWZpZXIgPT09IG1lYXN1cmU7XG5cdFx0XHR9KVxuXHRcdCkge1xuXHRcdFx0dGhpcy5jdXN0b21BZ2dyZWdhdGUgPSB0cnVlO1xuXHRcdH1cblxuXHRcdGNvbnN0IGRlZmF1bHRTZWxlY3Rpb25WYXJpYW50ID0gZ2V0RGVmYXVsdFNlbGVjdGlvblZhcmlhbnQoY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKCkpO1xuXHRcdHRoaXMuY2hlY2tTZWxlY3Rpb25WYXJpYW50KGRlZmF1bHRTZWxlY3Rpb25WYXJpYW50KTtcblx0XHRjb25zdCBhZ2dyZWdhdGlvbiA9IHRoaXMuZ2V0QWdncmVnYXRlUHJvcGVydGllcyhhZ2dyZWdhdGlvbnMsIG1lYXN1cmUpO1xuXHRcdGlmIChhZ2dyZWdhdGlvbikge1xuXHRcdFx0dGhpcy5hZ2dyZWdhdGVQcm9wZXJ0aWVzID0gYWdncmVnYXRpb247XG5cdFx0fVxuXHRcdGNvbnN0IHByb3BlcnR5QW5ub3RhdGlvbnMgPVxuXHRcdFx0dmlzdWFsaXphdGlvbnMgJiYgdGhpcy5jaGFydEFubm90YXRpb24/Lk1lYXN1cmVzICYmIHRoaXMuY2hhcnRBbm5vdGF0aW9uPy5NZWFzdXJlc1swXT8uJHRhcmdldD8uYW5ub3RhdGlvbnM7XG5cdFx0Y29uc3QgYWdncmVnYXRhYmxlUHJvcGVydHlBbm5vdGF0aW9ucyA9IGFnZ3JlZ2F0aW9uPy5BZ2dyZWdhdGFibGVQcm9wZXJ0eT8uJHRhcmdldD8uYW5ub3RhdGlvbnM7XG5cdFx0dGhpcy5jaGVja0lmVU9NSGFzQ3VzdG9tQWdncmVnYXRlKGN1c3RvbUFnZ3JlZ2F0ZXMsIHByb3BlcnR5QW5ub3RhdGlvbnMsIGFnZ3JlZ2F0YWJsZVByb3BlcnR5QW5ub3RhdGlvbnMpO1xuXHRcdGNvbnN0IHByb3BlcnR5SGlkZGVuID0gcHJvcGVydHlBbm5vdGF0aW9ucz8uVUk/LkhpZGRlbjtcblx0XHRjb25zdCBoaWRkZW5NZWFzdXJlID0gcHJvcGVydHlIaWRkZW4/LnZhbHVlT2YoKTtcblx0XHRjb25zdCBjaGFydFR5cGUgPSB0aGlzLmNoYXJ0QW5ub3RhdGlvbj8uQ2hhcnRUeXBlO1xuXHRcdHRoaXMuY2hhcnRUeXBlID0gY2hhcnRUeXBlO1xuXHRcdHRoaXMuc2hvd1ZhbHVlSGVscEJ1dHRvbiA9IHRoaXMuZ2V0c2hvd1ZhbHVlSGVscEJ1dHRvbihjaGFydFR5cGUsIGhpZGRlbk1lYXN1cmUpO1xuXHRcdHRoaXMuZHJhZnRTdXBwb3J0ZWQgPSBNb2RlbEhlbHBlci5pc0RyYWZ0U3VwcG9ydGVkKG1ldGFNb2RlbCwgdGhpcy5jb250ZXh0UGF0aCk7XG5cdFx0LyoqXG5cdFx0ICogSWYgdGhlIG1lYXN1cmUgb2YgdGhlIGNoYXJ0IGlzIG1hcmtlZCBhcyAnaGlkZGVuJywgb3IgaWYgdGhlIGNoYXJ0IHR5cGUgaXMgaW52YWxpZCwgb3IgaWYgdGhlIGRhdGEgdHlwZSBmb3IgdGhlIGxpbmUgY2hhcnQgaXMgaW52YWxpZCxcblx0XHQgKiB0aGUgY2FsbCBpcyBtYWRlIHRvIHRoZSBJbnRlcmFjdGl2ZUNoYXJ0V2l0aEVycm9yIGZyYWdtZW50ICh1c2luZyBlcnJvci1tZXNzYWdlIHJlbGF0ZWQgQVBJcywgYnV0IGF2b2lkaW5nIGJhdGNoIGNhbGxzKVxuXHRcdCAqL1xuXHRcdHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5nZXRFcnJvck1lc3NhZ2UoaGlkZGVuTWVhc3VyZSwgbWVhc3VyZSk7XG5cdFx0dGhpcy5jaGFydE1lYXN1cmUgPSBtZWFzdXJlO1xuXHRcdHRoaXMubWVhc3VyZURpbWVuc2lvblRpdGxlID0gSW50ZXJhY3RpdmVDaGFydEhlbHBlci5nZXRNZWFzdXJlRGltZW5zaW9uVGl0bGUoXG5cdFx0XHR0aGlzLmNoYXJ0QW5ub3RhdGlvbixcblx0XHRcdHRoaXMuY3VzdG9tQWdncmVnYXRlLFxuXHRcdFx0dGhpcy5hZ2dyZWdhdGVQcm9wZXJ0aWVzXG5cdFx0KTtcblx0XHRjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5nZXREYXRhTW9kZWxPYmplY3RGb3JNZXRhUGF0aDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+KHRoaXMuY29udGV4dFBhdGgpO1xuXHRcdHRoaXMudG9vbFRpcCA9IEludGVyYWN0aXZlQ2hhcnRIZWxwZXIuZ2V0VG9vbFRpcChcblx0XHRcdHRoaXMuY2hhcnRBbm5vdGF0aW9uLFxuXHRcdFx0Y29sbGVjdGlvbixcblx0XHRcdHRoaXMucGF0aCxcblx0XHRcdHRoaXMuY3VzdG9tQWdncmVnYXRlLFxuXHRcdFx0dGhpcy5hZ2dyZWdhdGVQcm9wZXJ0aWVzLFxuXHRcdFx0dGhpcy5yZW5kZXJMaW5lQ2hhcnRcblx0XHQpO1xuXHRcdHRoaXMuVW9NVmlzaWJpbGl0eSA9IEludGVyYWN0aXZlQ2hhcnRIZWxwZXIuZ2V0VW9NVmlzaWJsaXR5KHRoaXMuY2hhcnRBbm5vdGF0aW9uLCB0aGlzLnNob3dFcnJvcik7XG5cdFx0dGhpcy5zY2FsZVVvTVRpdGxlID0gSW50ZXJhY3RpdmVDaGFydEhlbHBlci5nZXRTY2FsZVVvTVRpdGxlKFxuXHRcdFx0dGhpcy5jaGFydEFubm90YXRpb24sXG5cdFx0XHRjb2xsZWN0aW9uLFxuXHRcdFx0dGhpcy5wYXRoLFxuXHRcdFx0dGhpcy5jdXN0b21BZ2dyZWdhdGUsXG5cdFx0XHR0aGlzLmFnZ3JlZ2F0ZVByb3BlcnRpZXNcblx0XHQpO1xuXHRcdHRoaXMuY29sbGVjdGlvbiA9IGNvbGxlY3Rpb247XG5cdFx0dGhpcy5zb3J0T3JkZXIgPSBwdkFubm90YXRpb24/LlNvcnRPcmRlcjtcblx0XHR0aGlzLmZpbHRlckNvdW50QmluZGluZyA9IEludGVyYWN0aXZlQ2hhcnRIZWxwZXIuZ2V0ZmlsdGVyQ291bnRCaW5kaW5nKHRoaXMuY2hhcnRBbm5vdGF0aW9uKTtcblx0XHRjb25zdCB2aWV3SWQgPSB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCk/LmdldFZpZXcoKS5nZXRJZCgpO1xuXHRcdGlmICh0aGlzLl9jb250ZW50SWQpIHtcblx0XHRcdHRoaXMuX2NvbnRlbnRJZCA9IGAke3ZpZXdJZH0tLSR7dGhpcy5fY29udGVudElkfWA7XG5cdFx0fSBlbHNlIGlmICh0aGlzLmlkKSB7XG5cdFx0XHR0aGlzLl9jb250ZW50SWQgPSBgJHt0aGlzLmlkfS1jb250ZW50YDtcblx0XHR9XG5cdFx0dGhpcy5zZWxlY3Rpb25WYXJpYW50ID0gdGhpcy5zZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvblxuXHRcdFx0PyB0aGlzLmdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoPFNlbGVjdGlvblZhcmlhbnQ+KHRoaXMuc2VsZWN0aW9uVmFyaWFudEFubm90YXRpb24pPy50YXJnZXRPYmplY3Rcblx0XHRcdDogdW5kZWZpbmVkO1xuXHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlQ29udGVudCgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrIGlmIHRoZSBVb00gaGFzIGN1c3RvbSBhZ2dyZWdhdGVcblx0ICogQHBhcmFtIGN1c3RvbUFnZ3JlZ2F0ZXMgLSBDdXN0b20gYWdncmVnYXRlc1xuXHQgKiBAcGFyYW0gcHJvcGVydHlBbm5vdGF0aW9ucyAtIFByb3BlcnR5IGFubm90YXRpb25zXG5cdCAqIEBwYXJhbSBhZ2dyZWdhdGFibGVQcm9wZXJ0eUFubm90YXRpb25zIC0gQWdncmVnYXRhYmxlIHByb3BlcnR5IGFubm90YXRpb25zXG5cdCAqL1xuXHRjaGVja0lmVU9NSGFzQ3VzdG9tQWdncmVnYXRlKFxuXHRcdGN1c3RvbUFnZ3JlZ2F0ZXM6IEFycmF5PEN1c3RvbUFnZ3JlZ2F0ZT4sXG5cdFx0cHJvcGVydHlBbm5vdGF0aW9uczogUHJvcGVydHlBbm5vdGF0aW9ucyB8IHVuZGVmaW5lZCxcblx0XHRhZ2dyZWdhdGFibGVQcm9wZXJ0eUFubm90YXRpb25zPzogUHJvcGVydHlBbm5vdGF0aW9uc1xuXHQpOiB2b2lkIHtcblx0XHRjb25zdCBtZWFzdXJlcyA9IHByb3BlcnR5QW5ub3RhdGlvbnM/Lk1lYXN1cmVzO1xuXHRcdGNvbnN0IGFnZ3JlZ2F0YWJsZVByb3BlcnR5TWVhc3VyZXMgPSBhZ2dyZWdhdGFibGVQcm9wZXJ0eUFubm90YXRpb25zPy5NZWFzdXJlcztcblx0XHRjb25zdCBVT00gPSB0aGlzLmdldFVvTShtZWFzdXJlcywgYWdncmVnYXRhYmxlUHJvcGVydHlNZWFzdXJlcyk7XG5cdFx0aWYgKFxuXHRcdFx0VU9NICYmXG5cdFx0XHRjdXN0b21BZ2dyZWdhdGVzLnNvbWUoZnVuY3Rpb24gKGN1c3RBZ2c6IEN1c3RvbUFnZ3JlZ2F0ZSkge1xuXHRcdFx0XHRyZXR1cm4gY3VzdEFnZy5xdWFsaWZpZXIgPT09IFVPTTtcblx0XHRcdH0pXG5cdFx0KSB7XG5cdFx0XHR0aGlzLlVvTUhhc0N1c3RvbUFnZ3JlZ2F0ZSA9IHRydWU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuVW9NSGFzQ3VzdG9tQWdncmVnYXRlID0gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgY2hhcnQgYW5ub3RhdGlvbi5cblx0ICogQHBhcmFtIHZpc3VhbGl6YXRpb25zIFZpc3VhbGl6YXRpb25zXG5cdCAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0IENvbnZlcnRlciBjb250ZXh0XG5cdCAqL1xuXHRnZXRDaGFydEFubm90YXRpb24oXG5cdFx0dmlzdWFsaXphdGlvbnM6IEFycmF5PEFubm90YXRpb25QYXRoPENoYXJ0IHwgRGF0YVBvaW50IHwgTGluZUl0ZW0+PiB8IHVuZGVmaW5lZCxcblx0XHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0XG5cdCk6IHZvaWQge1xuXHRcdGlmICh2aXN1YWxpemF0aW9ucykge1xuXHRcdFx0Zm9yIChsZXQgdmlzdWFsaXphdGlvbiBvZiB2aXN1YWxpemF0aW9ucykge1xuXHRcdFx0XHRjb25zdCBzQW5ub3RhdGlvblBhdGggPSB2aXN1YWxpemF0aW9uICYmIHZpc3VhbGl6YXRpb24udmFsdWU7XG5cdFx0XHRcdHRoaXMuY2hhcnRBbm5vdGF0aW9uID1cblx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGVBbm5vdGF0aW9uPENoYXJ0PihzQW5ub3RhdGlvblBhdGgpICYmXG5cdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlQW5ub3RhdGlvbjxDaGFydD4oc0Fubm90YXRpb25QYXRoKS5hbm5vdGF0aW9uO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBmbGFnIHRvIHNob3cgb3IgaGlkZSB0aGUgdmFsdWUgaGVscCBmb3IgdGhlIHZpc3VhbCBmaWx0ZXIuXG5cdCAqIEBwYXJhbSBiU2hvd1ZhbHVlSGVscCBGbGFnIGluZGljYXRpbmcgd2hldGhlciB0byBzaG93IG9yIGhpZGUgdGhlIHZhbHVlIGhlbHAuXG5cdCAqL1xuXHRzZXRTaG93VmFsdWVIZWxwKGJTaG93VmFsdWVIZWxwOiBib29sZWFuKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuY29udGVudD8uaXNBPFZpc3VhbEZpbHRlckNvbnRyb2w+KFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5maWx0ZXJiYXIuVmlzdWFsRmlsdGVyXCIpKSB7XG5cdFx0XHRpZiAodGhpcy5jb250ZW50Py5nZXRJdGVtcygpLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0Y29uc3Qgb1Zpc3VhbEZpbHRlckNvbnRyb2wgPSB0aGlzLmdldFZpc3VhbEZpbHRlckNvbnRyb2woKTtcblx0XHRcdFx0b1Zpc3VhbEZpbHRlckNvbnRyb2w/LmdldENvbnRlbnQoKS5zb21lKGZ1bmN0aW9uIChvSW5uZXJDb250cm9sOiBDb250cm9sKSB7XG5cdFx0XHRcdFx0aWYgKG9Jbm5lckNvbnRyb2wuaXNBPEJ1dHRvbj4oXCJzYXAubS5CdXR0b25cIikpIHtcblx0XHRcdFx0XHRcdG9Jbm5lckNvbnRyb2wuc2V0VmlzaWJsZShiU2hvd1ZhbHVlSGVscCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdFx0dGhpcy5zZXRQcm9wZXJ0eShcInNob3dWYWx1ZUhlbHBcIiwgYlNob3dWYWx1ZUhlbHApO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBzb3VyY2Ugb2YgdGhlIHZhbHVlIGhlbHAgaWNvbi5cblx0ICogQHBhcmFtIHNJY29uU3JjIFRoZSBzb3VyY2Ugb2YgdGhlIHZhbHVlIGhlbHAgaWNvblxuXHQgKi9cblx0c2V0VmFsdWVIZWxwSWNvblNyYyhzSWNvblNyYzogc3RyaW5nKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuY29udGVudD8uaXNBPFZpc3VhbEZpbHRlckNvbnRyb2w+KFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5maWx0ZXJiYXIuVmlzdWFsRmlsdGVyXCIpKSB7XG5cdFx0XHRpZiAodGhpcy5jb250ZW50Py5nZXRJdGVtcygpLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0Y29uc3Qgb1Zpc3VhbEZpbHRlckNvbnRyb2wgPSB0aGlzLmdldFZpc3VhbEZpbHRlckNvbnRyb2woKTtcblx0XHRcdFx0b1Zpc3VhbEZpbHRlckNvbnRyb2w/LmdldENvbnRlbnQoKS5zb21lKGZ1bmN0aW9uIChvSW5uZXJDb250cm9sOiBDb250cm9sKSB7XG5cdFx0XHRcdFx0aWYgKG9Jbm5lckNvbnRyb2wuaXNBPEJ1dHRvbj4oXCJzYXAubS5CdXR0b25cIikpIHtcblx0XHRcdFx0XHRcdG9Jbm5lckNvbnRyb2wuc2V0SWNvbihzSWNvblNyYyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdFx0dGhpcy5zZXRQcm9wZXJ0eShcInZhbHVlSGVscEljb25TcmNcIiwgc0ljb25TcmMpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIHZpc3VhbCBmaWx0ZXIgY29udHJvbCBmcm9tIHRoZSBjb250ZW50LlxuXHQgKiBAcmV0dXJucyBUaGUgdmlzdWFsIGZpbHRlciBjb250cm9sIG9yIHVuZGVmaW5lZCBpZiBub3QgZm91bmRcblx0ICovXG5cdGdldFZpc3VhbEZpbHRlckNvbnRyb2woKTogT3ZlcmZsb3dUb29sYmFyIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAodGhpcy5jb250ZW50Py5pc0E8VmlzdWFsRmlsdGVyQ29udHJvbD4oXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLmZpbHRlcmJhci5WaXN1YWxGaWx0ZXJcIikpIHtcblx0XHRcdHJldHVybiAodGhpcy5jb250ZW50Py5nZXRJdGVtcygpWzBdIGFzIFZCb3gpLmdldEl0ZW1zKClbMF0gYXMgT3ZlcmZsb3dUb29sYmFyO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGVycm9yIG1lc3NhZ2UgZm9yIGEgaGlkZGVuIG1lYXN1cmUuXG5cdCAqIEBwYXJhbSBoaWRkZW5NZWFzdXJlIFRoZSBoaWRkZW4gbWVhc3VyZSBvYmplY3Rcblx0ICogQHBhcmFtIG1lYXN1cmUgVGhlIG1lYXN1cmUgbmFtZVxuXHQgKiBAcmV0dXJucyBUaGUgZXJyb3IgbWVzc2FnZSwgaWYgYW55XG5cdCAqL1xuXHRnZXRFcnJvck1lc3NhZ2UoaGlkZGVuTWVhc3VyZTogT2JqZWN0IHwgdW5kZWZpbmVkLCBtZWFzdXJlPzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRsZXQgdmFsaWRDaGFydFR5cGU7XG5cdFx0aWYgKHRoaXMuY2hhcnRBbm5vdGF0aW9uKSB7XG5cdFx0XHRpZiAodGhpcy5jaGFydEFubm90YXRpb24uQ2hhcnRUeXBlID09PSBcIlVJLkNoYXJ0VHlwZS9MaW5lXCIgfHwgdGhpcy5jaGFydEFubm90YXRpb24uQ2hhcnRUeXBlID09PSBcIlVJLkNoYXJ0VHlwZS9CYXJcIikge1xuXHRcdFx0XHR2YWxpZENoYXJ0VHlwZSA9IHRydWU7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR2YWxpZENoYXJ0VHlwZSA9IGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoKHR5cGVvZiBoaWRkZW5NZWFzdXJlID09PSBcImJvb2xlYW5cIiAmJiBoaWRkZW5NZWFzdXJlKSB8fCAhdmFsaWRDaGFydFR5cGUgfHwgdGhpcy5yZW5kZXJMaW5lQ2hhcnQgPT09IGZhbHNlKSB7XG5cdFx0XHR0aGlzLnNob3dFcnJvciA9IHRydWU7XG5cdFx0XHR0aGlzLmVycm9yTWVzc2FnZVRpdGxlID1cblx0XHRcdFx0aGlkZGVuTWVhc3VyZSB8fCAhdmFsaWRDaGFydFR5cGVcblx0XHRcdFx0XHQ/IHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJNX1ZJU1VBTF9GSUxURVJTX0VSUk9SX01FU1NBR0VfVElUTEVcIilcblx0XHRcdFx0XHQ6IHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJNX1ZJU1VBTF9GSUxURVJfTElORV9DSEFSVF9JTlZBTElEX0RBVEFUWVBFXCIpO1xuXHRcdFx0aWYgKGhpZGRlbk1lYXN1cmUpIHtcblx0XHRcdFx0cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJNX1ZJU1VBTF9GSUxURVJfSElEREVOX01FQVNVUkVcIiwgW21lYXN1cmVdKTtcblx0XHRcdH0gZWxzZSBpZiAoIXZhbGlkQ2hhcnRUeXBlKSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiTV9WSVNVQUxfRklMVEVSX1VOU1VQUE9SVEVEX0NIQVJUX1RZUEVcIik7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIk1fVklTVUFMX0ZJTFRFUl9MSU5FX0NIQVJUX1VOU1VQUE9SVEVEX0RJTUVOU0lPTlwiKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHNob3cgdGhlIHZhbHVlIGhlbHAgYnV0dG9uIGZvciB0aGUgdmlzdWFsIGZpbHRlci5cblx0ICpcblx0ICogQHBhcmFtIGNoYXJ0VHlwZSBUaGUgdHlwZSBvZiBjaGFydCB1c2VkIGluIHRoZSB2aXN1YWwgZmlsdGVyXG5cdCAqIEBwYXJhbSBoaWRkZW5NZWFzdXJlIFRoZSBoaWRkZW4gbWVhc3VyZSBvYmplY3Rcblx0ICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0byBzaG93IHRoZSB2YWx1ZSBoZWxwIGJ1dHRvblxuXHQgKi9cblx0Z2V0c2hvd1ZhbHVlSGVscEJ1dHRvbihjaGFydFR5cGU/OiBzdHJpbmcsIGhpZGRlbk1lYXN1cmU/OiBPYmplY3QpOiBib29sZWFuIHtcblx0XHRjb25zdCBzRGltZW5zaW9uVHlwZSA9XG5cdFx0XHR0aGlzLmNoYXJ0QW5ub3RhdGlvbj8uRGltZW5zaW9uc1swXSAmJlxuXHRcdFx0dGhpcy5jaGFydEFubm90YXRpb24/LkRpbWVuc2lvbnNbMF0uJHRhcmdldCAmJlxuXHRcdFx0dGhpcy5jaGFydEFubm90YXRpb24uRGltZW5zaW9uc1swXS4kdGFyZ2V0LnR5cGU7XG5cdFx0aWYgKHNEaW1lbnNpb25UeXBlID09PSBcIkVkbS5EYXRlXCIgfHwgc0RpbWVuc2lvblR5cGUgPT09IFwiRWRtLlRpbWVcIiB8fCBzRGltZW5zaW9uVHlwZSA9PT0gXCJFZG0uRGF0ZVRpbWVPZmZzZXRcIikge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH0gZWxzZSBpZiAodHlwZW9mIGhpZGRlbk1lYXN1cmUgPT09IFwiYm9vbGVhblwiICYmIGhpZGRlbk1lYXN1cmUpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9IGVsc2UgaWYgKCEoY2hhcnRUeXBlID09PSBcIlVJLkNoYXJ0VHlwZS9CYXJcIiB8fCBjaGFydFR5cGUgPT09IFwiVUkuQ2hhcnRUeXBlL0xpbmVcIikpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9IGVsc2UgaWYgKHRoaXMucmVuZGVyTGluZUNoYXJ0ID09PSBmYWxzZSAmJiBjaGFydFR5cGUgPT09IFwiVUkuQ2hhcnRUeXBlL0xpbmVcIikge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5pc1ZhbHVlTGlzdFdpdGhGaXhlZFZhbHVlcyA9PT0gdHJ1ZSkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIHRoZSBzZWxlY3Rpb24gdmFyaWFudCBmb3IgdGhlIHZpc3VhbCBmaWx0ZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSBkZWZhdWx0U2VsZWN0aW9uVmFyaWFudCBUaGUgZGVmYXVsdCBzZWxlY3Rpb24gdmFyaWFudCB0byBiZSBjaGVja2VkXG5cdCAqIEByZXR1cm5zIHZvaWRcblx0ICovXG5cdGNoZWNrU2VsZWN0aW9uVmFyaWFudChkZWZhdWx0U2VsZWN0aW9uVmFyaWFudD86IFNlbGVjdGlvblZhcmlhbnQpOiB2b2lkIHtcblx0XHRsZXQgc2VsZWN0aW9uVmFyaWFudDtcblx0XHRpZiAodGhpcy5zZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvbikge1xuXHRcdFx0c2VsZWN0aW9uVmFyaWFudCA9IHRoaXMuZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGg8U2VsZWN0aW9uVmFyaWFudD4odGhpcy5zZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvbik/LnRhcmdldE9iamVjdDtcblx0XHR9XG5cdFx0aWYgKCFzZWxlY3Rpb25WYXJpYW50ICYmIGRlZmF1bHRTZWxlY3Rpb25WYXJpYW50KSB7XG5cdFx0XHRzZWxlY3Rpb25WYXJpYW50ID0gZGVmYXVsdFNlbGVjdGlvblZhcmlhbnQ7XG5cdFx0fVxuXHRcdGlmIChzZWxlY3Rpb25WYXJpYW50ICYmIHNlbGVjdGlvblZhcmlhbnQuU2VsZWN0T3B0aW9ucyAmJiAhdGhpcy5tdWx0aXBsZVNlbGVjdGlvbkFsbG93ZWQpIHtcblx0XHRcdGZvciAoY29uc3Qgc2VsZWN0T3B0aW9uIG9mIHNlbGVjdGlvblZhcmlhbnQuU2VsZWN0T3B0aW9ucykge1xuXHRcdFx0XHRpZiAoc2VsZWN0T3B0aW9uLlByb3BlcnR5TmFtZT8udmFsdWUgPT09IHRoaXMuY2hhcnRBbm5vdGF0aW9uPy5EaW1lbnNpb25zWzBdLnZhbHVlKSB7XG5cdFx0XHRcdFx0aWYgKHNlbGVjdE9wdGlvbi5SYW5nZXMubGVuZ3RoID4gMSkge1xuXHRcdFx0XHRcdFx0TG9nLmVycm9yKFwiTXVsdGlwbGUgU2VsZWN0T3B0aW9ucyBmb3IgRmlsdGVyRmllbGQgaGF2aW5nIFNpbmdsZVZhbHVlIEFsbG93ZWQgRXhwcmVzc2lvblwiKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBhZ2dyZWdhdGUgcHJvcGVydGllcyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgYWdncmVnYXRpb25zIGFuZCBtZWFzdXJlLlxuXHQgKiBAcGFyYW0gYWdncmVnYXRpb25zIFRoZSBsaXN0IG9mIGFnZ3JlZ2F0ZWQgcHJvcGVydGllc1xuXHQgKiBAcGFyYW0gbWVhc3VyZSBUaGUgb3B0aW9uYWwgbWVhc3VyZSB0byBmaWx0ZXIgdGhlIGFnZ3JlZ2F0ZWQgcHJvcGVydGllc1xuXHQgKiBAcmV0dXJucyBUaGUgbWF0Y2hpbmcgYWdncmVnYXRlZCBwcm9wZXJ0eSwgaWYgZm91bmQ7IG90aGVyd2lzZSwgdW5kZWZpbmVkXG5cdCAqL1xuXHRnZXRBZ2dyZWdhdGVQcm9wZXJ0aWVzKGFnZ3JlZ2F0aW9uczogQWdncmVnYXRlZFByb3BlcnR5VHlwZVtdLCBtZWFzdXJlPzogc3RyaW5nKTogQWdncmVnYXRlZFByb3BlcnR5VHlwZSB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IG1hdGNoZWRBZ2dyZWdhdGU6IEFnZ3JlZ2F0ZWRQcm9wZXJ0eVR5cGUgfCB1bmRlZmluZWQ7XG5cdFx0aWYgKCFhZ2dyZWdhdGlvbnMpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0YWdncmVnYXRpb25zLnNvbWUoZnVuY3Rpb24gKGFnZ3JlZ2F0ZSkge1xuXHRcdFx0aWYgKGFnZ3JlZ2F0ZS5OYW1lID09PSBtZWFzdXJlKSB7XG5cdFx0XHRcdG1hdGNoZWRBZ2dyZWdhdGUgPSBhZ2dyZWdhdGU7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHJldHVybiBtYXRjaGVkQWdncmVnYXRlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgdW5pdCBvZiBtZWFzdXJlIChVb00pIGZvciB0aGUgdmlzdWFsIGZpbHRlci5cblx0ICpcblx0ICogQHBhcmFtIG1lYXN1cmVzIFRoZSBtZWFzdXJlcyBmb3IgdGhlIHZpc3VhbCBmaWx0ZXJcblx0ICogQHBhcmFtIGFnZ3JlZ2F0YWJsZVByb3BlcnR5TWVhc3VyZXMgVGhlIGFnZ3JlZ2F0YWJsZSBwcm9wZXJ0eSBtZWFzdXJlcyBmb3IgdGhlIHZpc3VhbCBmaWx0ZXJcblx0ICogQHJldHVybnMgVGhlIHVuaXQgb2YgbWVhc3VyZSBmb3IgdGhlIHZpc3VhbCBmaWx0ZXJcblx0ICovXG5cdGdldFVvTShtZWFzdXJlcz86IFByb3BlcnR5QW5ub3RhdGlvbnNfTWVhc3VyZXMsIGFnZ3JlZ2F0YWJsZVByb3BlcnR5TWVhc3VyZXM/OiBQcm9wZXJ0eUFubm90YXRpb25zX01lYXN1cmVzKTogc3RyaW5nIHtcblx0XHRsZXQgSVNPQ3VycmVuY3kgPSBtZWFzdXJlcz8uSVNPQ3VycmVuY3k7XG5cdFx0bGV0IHVuaXQgPSBtZWFzdXJlcz8uVW5pdDtcblx0XHRpZiAoIUlTT0N1cnJlbmN5ICYmICF1bml0ICYmIGFnZ3JlZ2F0YWJsZVByb3BlcnR5TWVhc3VyZXMpIHtcblx0XHRcdElTT0N1cnJlbmN5ID0gYWdncmVnYXRhYmxlUHJvcGVydHlNZWFzdXJlcy5JU09DdXJyZW5jeTtcblx0XHRcdHVuaXQgPSBhZ2dyZWdhdGFibGVQcm9wZXJ0eU1lYXN1cmVzLlVuaXQ7XG5cdFx0fVxuXHRcdHJldHVybiAoXG5cdFx0XHQoSVNPQ3VycmVuY3kgYXMgdW5rbm93biBhcyBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb248c3RyaW5nPik/LnBhdGggfHxcblx0XHRcdCh1bml0IGFzIHVua25vd24gYXMgUGF0aEFubm90YXRpb25FeHByZXNzaW9uPHN0cmluZz4pPy5wYXRoXG5cdFx0KTtcblx0fVxuXG5cdGdldFJlcXVpcmVkKCk6IHN0cmluZyB7XG5cdFx0aWYgKHRoaXMucmVxdWlyZWQpIHtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdDxMYWJlbCB0ZXh0PVwiXCIgd2lkdGg9XCIwLjVyZW1cIiByZXF1aXJlZD1cInRydWVcIj5cblx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0bGF5b3V0RGF0YTogPE92ZXJmbG93VG9vbGJhckxheW91dERhdGEgcHJpb3JpdHk9e092ZXJmbG93VG9vbGJhclByaW9yaXR5Lk5ldmVyT3ZlcmZsb3d9IC8+XG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0PC9MYWJlbD5cblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBcIlwiO1xuXHRcdH1cblx0fVxuXG5cdGdldFRpdGxlKCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgdGl0bGVDb250cm9sID0gKFxuXHRcdFx0PFRpdGxlXG5cdFx0XHRcdGlkPXtnZW5lcmF0ZShbdGhpcy5fY29udGVudElkLCBcIk1lYXN1cmVEaW1lbnNpb25UaXRsZVwiXSl9XG5cdFx0XHRcdHRleHQ9e3RoaXMubWVhc3VyZURpbWVuc2lvblRpdGxlfVxuXHRcdFx0XHR0b29sdGlwPXt0aGlzLnRvb2xUaXB9XG5cdFx0XHRcdHRpdGxlU3R5bGU9XCJINlwiXG5cdFx0XHRcdGxldmVsPVwiSDNcIlxuXHRcdFx0XHRjbGFzcz1cInNhcFVpVGlueU1hcmdpbkVuZCBzYXBVaU5vTWFyZ2luQmVnaW5cIlxuXHRcdFx0PjwvVGl0bGU+XG5cdFx0KTtcblxuXHRcdC8vIEF0dGFjaCBldmVudCBkZWxlZ2F0ZXMgYWZ0ZXIgdGhlIGNvbnRyb2xzIGFyZSByZW5kZXJlZCBhbmQgdmlldyBpcyBhdmFpbGFibGVcblx0XHR0aGlzLl9hdHRhY2hUaXRsZUV2ZW50RGVsZWdhdGVzKHRpdGxlQ29udHJvbCk7XG5cdFx0cmV0dXJuIHRpdGxlQ29udHJvbDtcblx0fVxuXG5cdGdldFVvTVRpdGxlKHNob3dFcnJvckV4cHJlc3Npb246IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0aWYgKHRoaXMuVW9NVmlzaWJpbGl0eSkge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PFRpdGxlXG5cdFx0XHRcdFx0aWQ9e2dlbmVyYXRlKFt0aGlzLl9jb250ZW50SWQsIFwiU2NhbGVVb01UaXRsZVwiXSl9XG5cdFx0XHRcdFx0dmlzaWJsZT17c2hvd0Vycm9yRXhwcmVzc2lvbn1cblx0XHRcdFx0XHR0ZXh0PXt0aGlzLnNjYWxlVW9NVGl0bGV9XG5cdFx0XHRcdFx0dGl0bGVTdHlsZT1cIkg2XCJcblx0XHRcdFx0XHRsZXZlbD1cIkgzXCJcblx0XHRcdFx0XHR3aWR0aD17XG5cdFx0XHRcdFx0XHR0aGlzLnNjYWxlVW9NVGl0bGVcblx0XHRcdFx0XHRcdFx0PyBjb21waWxlRXhwcmVzc2lvbihpZkVsc2UocmVzb2x2ZUJpbmRpbmdTdHJpbmcodGhpcy5zY2FsZVVvTVRpdGxlKSwgXCI0LjE1cmVtXCIsIHVuZGVmaW5lZCkpXG5cdFx0XHRcdFx0XHRcdDogdW5kZWZpbmVkXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQ+PC9UaXRsZT5cblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBcIlwiO1xuXHRcdH1cblx0fVxuXG5cdGdldFRvb2xCYXJTcGFjZXIoKTogc3RyaW5nIHtcblx0XHRpZiAodGhpcy5zaG93VmFsdWVIZWxwQnV0dG9uKSB7XG5cdFx0XHRyZXR1cm4gPFRvb2xiYXJTcGFjZXI+PC9Ub29sYmFyU3BhY2VyPjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIFwiXCI7XG5cdFx0fVxuXHR9XG5cblx0Z2V0VmFsdWVIZWxwKHNob3dFcnJvckV4cHJlc3Npb246IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0aWYgKHRoaXMuc2hvd1ZhbHVlSGVscEJ1dHRvbikge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdGlkPXtnZW5lcmF0ZShbdGhpcy5fY29udGVudElkLCBcIlZpc3VhbEZpbHRlclZhbHVlSGVscEJ1dHRvblwiXSl9XG5cdFx0XHRcdFx0dHlwZT1cIlRyYW5zcGFyZW50XCJcblx0XHRcdFx0XHRhcmlhSGFzUG9wdXA9XCJEaWFsb2dcIlxuXHRcdFx0XHRcdHRleHQ9e3RoaXMuZmlsdGVyQ291bnRCaW5kaW5nfVxuXHRcdFx0XHRcdGVuYWJsZWQ9e3Nob3dFcnJvckV4cHJlc3Npb259XG5cdFx0XHRcdFx0cHJlc3M9eyhldmVudCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0VmlzdWFsRmlsdGVyUnVudGltZS5maXJlVmFsdWVIZWxwKGV2ZW50KTtcblx0XHRcdFx0XHR9fVxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdGxheW91dERhdGE6IDxPdmVyZmxvd1Rvb2xiYXJMYXlvdXREYXRhIHByaW9yaXR5PXtPdmVyZmxvd1Rvb2xiYXJQcmlvcml0eS5OZXZlck92ZXJmbG93fSAvPixcblx0XHRcdFx0XHRcdGN1c3RvbURhdGE6IDxDdXN0b21EYXRhIGtleT17XCJtdWx0aXBsZVNlbGVjdGlvbkFsbG93ZWRcIn0gdmFsdWU9e3RoaXMubXVsdGlwbGVTZWxlY3Rpb25BbGxvd2VkfSAvPlxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvQnV0dG9uPlxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIFwiXCI7XG5cdFx0fVxuXHR9XG5cblx0Z2V0VG9vbGJhcihzaG93RXJyb3JFeHByZXNzaW9uOiBzdHJpbmcpOiBPdmVyZmxvd1Rvb2xiYXIgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8T3ZlcmZsb3dUb29sYmFyIHN0eWxlPVwiQ2xlYXJcIj5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRjb250ZW50OiAoXG5cdFx0XHRcdFx0XHQ8PlxuXHRcdFx0XHRcdFx0XHR7dGhpcy5nZXRSZXF1aXJlZCgpfVxuXHRcdFx0XHRcdFx0XHR7dGhpcy5nZXRUaXRsZSgpfVxuXHRcdFx0XHRcdFx0XHR7dGhpcy5nZXRVb01UaXRsZShzaG93RXJyb3JFeHByZXNzaW9uKX1cblx0XHRcdFx0XHRcdFx0e3RoaXMuZ2V0VG9vbEJhclNwYWNlcigpfVxuXHRcdFx0XHRcdFx0XHR7dGhpcy5nZXRWYWx1ZUhlbHAoc2hvd0Vycm9yRXhwcmVzc2lvbil9XG5cdFx0XHRcdFx0XHQ8Lz5cblx0XHRcdFx0XHQpXG5cdFx0XHRcdH19XG5cdFx0XHQ8L092ZXJmbG93VG9vbGJhcj5cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXMgaW5wYXJhbWV0ZXJzIGNoYW5nZXMgZHVyaW5nIHRoZSBlbmFibGVtZW50IG9mIHRoZSB2aXN1YWwgZmlsdGVyIGNoYXJ0IGJpbmRpbmcgYmFzZWQgb24gdGhlIGNoYW5nZWQgZmlsdGVyIGZpZWxkIHBhdGhzLlxuXHQgKlxuXHQgKiBUaGlzIG1ldGhvZCBjaGVja3MgaWYgdGhlIGluLXBhcmFtZXRlcnMgb2YgdGhlIHZpc3VhbCBmaWx0ZXIgYXJlIGFmZmVjdGVkIGJ5IHRoZSBjaGFuZ2VkIGZpbHRlciBmaWVsZCBwYXRocy5cblx0ICogSWYgYW55IG9mIHRoZSBpbi1wYXJhbWV0ZXJzIGFyZSBhZmZlY3RlZCwgd2Ugc2V0cyB0aCBpbnRlcm5hbCBjb25kaXRpb24gdXBkYXRlIHBlbmRpbmcgZmxhZyB0byB0cnVlLlxuXHQgKiBTdWJzZXF1ZW50bHksIHRoZSBjaGFydCBiaW5kaW5nIHdpbGwgYmUgZW5hYmxlZCBvbmx5IGFmdGVyIHRoZSBjb25kaXRpb24gbW9kZWwgaXMgdXBkYXRlZCBmb3IgdGhlIHZpc3VhbCBmaWx0ZXIgd2l0aCB0aGUgaW5wYXJhbWV0ZXIgc2VsZWN0aW9ucy5cblx0ICogQHBhcmFtIGNoYW5nZWRGaWx0ZXJGaWVsZFBhdGhzIEFycmF5IG9mIGNoYW5nZWQgZmlsdGVyIGZpZWxkIHBhdGhzLlxuXHQgKi9cblx0X2hhbmRsZUluUGFyYW1zQ2hhcnRCaW5kaW5nRW5hYmxlbWVudChjaGFuZ2VkRmlsdGVyRmllbGRQYXRoczogc3RyaW5nW10pOiB2b2lkIHtcblx0XHRjb25zdCBpblBhcmFtZXRlcnMgPSB0aGlzLmdldFByb3BlcnR5KFwiaW5QYXJhbWV0ZXJzXCIpLmN1c3RvbURhdGEgYXMgUGFyYW1ldGVyVHlwZVtdO1xuXHRcdGNvbnN0IGluUGFyYW1ldGVyTG9jYWxEYXRhUHJvcGVydGllcyA9IGluUGFyYW1ldGVycy5tYXAoKGluUGFyYW1ldGVyKSA9PiBpblBhcmFtZXRlci5sb2NhbERhdGFQcm9wZXJ0eSk7XG5cdFx0Y29uc3QgdmZJblBhcmFtZXRlclVwZGF0ZUV4cGVjdGVkID0gY2hhbmdlZEZpbHRlckZpZWxkUGF0aHMuc29tZSgocGF0aCkgPT4gaW5QYXJhbWV0ZXJMb2NhbERhdGFQcm9wZXJ0aWVzLmluY2x1ZGVzKHBhdGgpKTtcblx0XHRpZiAodmZJblBhcmFtZXRlclVwZGF0ZUV4cGVjdGVkKSB7XG5cdFx0XHQvLyBJZiB0aGUgaW5QYXJhbWV0ZXJzIG9mIHRoZSB2aXN1YWwgZmlsdGVyIGFyZSBjaGFuZ2VkKGRpZmZTdGF0ZSksIHdlIG5lZWQgdG8gd2FpdCBmb3IgY29uZGl0aW9ucyBtb2RlbCB0byBiZSB1cGRhdGVkIGZvciB0aGUgdmlzdWFsIGZpbHRlciB0byBmaWx0ZXIgY2hhcnQgYmluZGluZy5cblx0XHRcdHRoaXMuX3NldEludGVybmFsVXBkYXRlUGVuZGluZyh0cnVlKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQXR0YWNoZXMgbW91c2VvdmVyIGFuZCBtb3VzZW91dCBldmVudCBkZWxlZ2F0ZXMgdG8gdGhlIG1lYXN1cmUgZGltZW5zaW9uIHRpdGxlLlxuXHQgKiBUaGlzIGNyZWF0ZXMgZHluYW1pYyB0b29sdGlwcyB0aGF0IGNvbWJpbmUgbWVhc3VyZSB0aXRsZXMgd2l0aCBzY2FsZS9VT00gaW5mb3JtYXRpb24uXG5cdCAqIEBwYXJhbSB0aXRsZWNvbnRyb2wgVGhlIHRpdGxlIGNvbnRyb2wgdG8gd2hpY2ggZXZlbnQgZGVsZWdhdGVzIGFyZSBhdHRhY2hlZC5cblx0ICovXG5cdHByaXZhdGUgX2F0dGFjaFRpdGxlRXZlbnREZWxlZ2F0ZXModGl0bGVjb250cm9sOiBUaXRsZSk6IHZvaWQge1xuXHRcdHRpdGxlY29udHJvbC5hZGRFdmVudERlbGVnYXRlKFxuXHRcdFx0e1xuXHRcdFx0XHRvbm1vdXNlb3ZlcjogKF9ldnQ6IE1vdXNlRXZlbnQpID0+IHtcblx0XHRcdFx0XHRjb25zdCB0b29sdGlwID0gdGl0bGVjb250cm9sLmdldFRvb2x0aXAoKSBhcyBzdHJpbmc7XG5cdFx0XHRcdFx0dGl0bGVjb250cm9sLmdldERvbVJlZigpPy5zZXRBdHRyaWJ1dGUoXCJ0aXRsZVwiLCB0b29sdGlwKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdHRoaXNcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIGVuYWJsZW1lbnQgb2YgdGhlIHZpc3VhbCBmaWx0ZXIgY2hhcnQgYmluZGluZy5cblx0ICogQHBhcmFtIGVuYWJsZUJpbmRpbmcgQm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gZW5hYmxlIG9yIGRpc2FibGUgdGhlIGNoYXJ0IGJpbmRpbmcuXG5cdCAqIEBwYXJhbSBjaGFuZ2VkRmlsdGVyRmllbGRQYXRocyBBcnJheSBvZiBjaGFuZ2VkIGZpbHRlciBmaWVsZCBwYXRocyB0aGF0IG1heSBhZmZlY3QgdGhlIGluLXBhcmFtZXRlcnMgb2YgdGhlIHZpc3VhbCBmaWx0ZXIuXG5cdCAqL1xuXHRzZXRFbmFibGVDaGFydEJpbmRpbmcoZW5hYmxlQmluZGluZzogYm9vbGVhbiwgY2hhbmdlZEZpbHRlckZpZWxkUGF0aHM6IHN0cmluZ1tdID0gW10pOiB2b2lkIHtcblx0XHRpZiAoZW5hYmxlQmluZGluZyAmJiBjaGFuZ2VkRmlsdGVyRmllbGRQYXRocy5sZW5ndGggPiAwKSB7XG5cdFx0XHQvLyBJZiBpbnBhcmFtZXRlcnMgYXJlIGNoYW5nZWQsIHdlIG5lZWQgdG8gd2FpdCB0aWxsIHRoZSBjb25kaXRpb24gbW9kZWwgdG8gYmUgdXBkYXRlZCBiZWZvcmUgd2Ugc2VuZCByZXN1bWUgdGhlIGJpbmRpbmcgd2l0aCB0aGUgaW5wYXJhbWV0ZXIgc2VsZWN0aW9ucyBhcyBmaWx0ZXJzIHRvIHRoZSBjaGFydCBiaW5kaW5nIGFuZCBzZW5kIHRoZSByZXF1ZXN0LlxuXHRcdFx0dGhpcy5faGFuZGxlSW5QYXJhbXNDaGFydEJpbmRpbmdFbmFibGVtZW50KGNoYW5nZWRGaWx0ZXJGaWVsZFBhdGhzKTtcblx0XHR9XG5cblx0XHQvLyBUaGUgYmluZGluZyBpcyBleHBlY3RlZCB0byBiZSBlbmFibGVkIG9ubHkgd2hlbiB2aXN1YWwgZmlsdGVyIGlzIHJlYWR5XG5cdFx0Ly8gMS4gaW50ZXJuYWxseShpbnBhcmFtZXRlciBjb25kaXRpb25zIGFyZSB1cGRhdGVkIGFuZCB2aXN1YWwgZmlsdGVyIGlzIHJlbmRlcmVkKVxuXHRcdC8vIDIuIGFuZCBleHRlcm5hbGx5KGVuYWJsZUNoYXJ0QmluZGluZykuIExpa2UsIHhBcHBTdGF0ZSBvciBpQXBwU3RhdGUgaXMgYXBwbGllZCB0byBwYXJlbnQgZmlsdGVyIGJhci5cblx0XHRjb25zdCBpbnRlcm5hbFVwZGF0ZVBlbmRpbmcgPSB0aGlzLmluUGFyYW1Db25kaXRpb25VcGRhdGVQZW5kaW5nIHx8IHRoaXMucmVuZGVyaW5nVXBkYXRlUGVuZGluZztcblxuXHRcdGNvbnN0IG92ZXJhbGxFbmFibGVCaW5kaW5nID0gZW5hYmxlQmluZGluZyAmJiAhaW50ZXJuYWxVcGRhdGVQZW5kaW5nO1xuXHRcdGNvbnN0IGNoYXJ0QmluZGluZyA9IHRoaXMuY29udGVudD8uZ2V0Q2hhcnRCaW5kaW5nKCk7XG5cdFx0aWYgKGNoYXJ0QmluZGluZykge1xuXHRcdFx0aWYgKG92ZXJhbGxFbmFibGVCaW5kaW5nICYmIGNoYXJ0QmluZGluZy5pc1N1c3BlbmRlZCgpKSB7XG5cdFx0XHRcdGNoYXJ0QmluZGluZy5yZXN1bWUoKTtcblx0XHRcdH0gZWxzZSBpZiAoIW92ZXJhbGxFbmFibGVCaW5kaW5nICYmICFjaGFydEJpbmRpbmcuaXNTdXNwZW5kZWQoKSkge1xuXHRcdFx0XHRjaGFydEJpbmRpbmcuc3VzcGVuZCgpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHR0aGlzLnNldFByb3BlcnR5KFwiZW5hYmxlQ2hhcnRCaW5kaW5nXCIsIGVuYWJsZUJpbmRpbmcsIHRydWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIGludGVybmFsIHVwZGF0ZSBwZW5kaW5nIGZsYWdzIGZvciB0aGUgdmlzdWFsIGZpbHRlci5cblx0ICogVGhpcyBtZXRob2QgaXMgdXNlZCB0byBtYW5hZ2UgdGhlIGludGVybmFsIHN0YXRlIG9mIHRoZSB2aXN1YWwgZmlsdGVyLCBzcGVjaWZpY2FsbHkgd2hlbiB0aGUgaW4tcGFyYW1ldGVycyBhbmQgcmVuZGVyaW5nIHVwZGF0ZXMgYXJlIHBlbmRpbmcuXG5cdCAqIEBwYXJhbSBjb25kaXRpb25VcGRhdGVQZW5kaW5nIFdoZXRoZXIgdGhlIGNvbmRpdGlvbiB1cGRhdGUgaXMgcGVuZGluZyBvciBub3QuIERlZmF1bHRzIHRvIHRoZSBjdXJyZW50IGluUGFyYW1Db25kaXRpb25VcGRhdGVQZW5kaW5nIHN0YXRlLlxuXHQgKiBAcGFyYW0gcmVuZGVyaW5nVXBkYXRlUGVuZGluZyBXaGV0aGVyIHRoZSByZW5kZXJpbmcgdXBkYXRlIGlzIHBlbmRpbmcgb3Igbm90LiBEZWZhdWx0cyB0byB0aGUgY3VycmVudCByZW5kZXJpbmdVcGRhdGVQZW5kaW5nIHN0YXRlLlxuXHQgKi9cblx0X3NldEludGVybmFsVXBkYXRlUGVuZGluZyhcblx0XHRjb25kaXRpb25VcGRhdGVQZW5kaW5nID0gdGhpcy5pblBhcmFtQ29uZGl0aW9uVXBkYXRlUGVuZGluZyxcblx0XHRyZW5kZXJpbmdVcGRhdGVQZW5kaW5nID0gdGhpcy5yZW5kZXJpbmdVcGRhdGVQZW5kaW5nXG5cdCk6IHZvaWQge1xuXHRcdC8vIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gaW50ZXJuYWxseSBieSB2aXN1YWwgZmlsdGVyIHRvIGVuYWJsZSBhbmQgZGlzYWJsZSBiaW5kaW5ncy5cblx0XHRjb25zdCBpc0JpbmRpbmdFbmFibGVkRm9yVmlzdWFsRmlsdGVyRXh0ZXJuYWxseSA9IHRoaXMuZW5hYmxlQ2hhcnRCaW5kaW5nO1xuXHRcdGNvbnN0IGNoYXJ0QmluZGluZyA9IHRoaXMuY29udGVudD8uZ2V0Q2hhcnRCaW5kaW5nKCk7XG5cdFx0Y29uc3QgdXBkYXRlUGVuZGluZyA9IGNvbmRpdGlvblVwZGF0ZVBlbmRpbmcgfHwgcmVuZGVyaW5nVXBkYXRlUGVuZGluZztcblx0XHRpZiAoIXVwZGF0ZVBlbmRpbmcgJiYgaXNCaW5kaW5nRW5hYmxlZEZvclZpc3VhbEZpbHRlckV4dGVybmFsbHkgJiYgY2hhcnRCaW5kaW5nICYmIGNoYXJ0QmluZGluZy5pc1N1c3BlbmRlZCgpKSB7XG5cdFx0XHQvLyBJbnRlcm5hbCB1cGRhdGUgaXMgZG9uZSwgYmluZGluZyBpcyBlbmFibGVkIGV4dGVybmFsbHksIHNvIHJlc3VtZSB0aGUgYmluZGluZy5cblx0XHRcdGNoYXJ0QmluZGluZy5yZXN1bWUoKTtcblx0XHR9IGVsc2UgaWYgKHVwZGF0ZVBlbmRpbmcgJiYgY2hhcnRCaW5kaW5nICYmICFjaGFydEJpbmRpbmcuaXNTdXNwZW5kZWQoKSkge1xuXHRcdFx0Ly8gSW50ZXJuYWwgdXBkYXRlIGlzIHBlbmRpbmcvaW4gcHJvZ3Jlc3MsIHNvIHdlIHN1c3BlbmQgdGhlIGJpbmRpbmcuXG5cdFx0XHRjaGFydEJpbmRpbmcuc3VzcGVuZCgpO1xuXHRcdH1cblx0XHQvLyBVcGRhdGUgdGhlIGludGVybmFsIGZsYWdzIGZvciBjb25kaXRpb24gYW5kIHJlbmRlcmluZyB1cGRhdGUgcGVuZGluZy5cblx0XHR0aGlzLmluUGFyYW1Db25kaXRpb25VcGRhdGVQZW5kaW5nID0gY29uZGl0aW9uVXBkYXRlUGVuZGluZztcblx0XHR0aGlzLnJlbmRlcmluZ1VwZGF0ZVBlbmRpbmcgPSByZW5kZXJpbmdVcGRhdGVQZW5kaW5nO1xuXHR9XG5cblx0Y3JlYXRlQ29udGVudCgpOiBWaXN1YWxGaWx0ZXJDb250cm9sIHtcblx0XHRjb25zdCBpZCA9IGdlbmVyYXRlKFt0aGlzLnBhdGhdKTtcblx0XHRjb25zdCBzaG93RXJyb3JFeHByZXNzaW9uID0gXCJ7PSAhJHtpbnRlcm5hbD5cIiArIGlkICsgXCIvc2hvd0Vycm9yfX1cIjtcblx0XHRjb25zdCBjb3p5TW9kZSA9IGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKFwic2FwVWlTaXplQ296eVwiKTtcblx0XHRjb25zdCBvdmVyYWxsSGVpZ2h0ID0gY296eU1vZGUgPyBcIjEzcmVtXCIgOiBcIjEwMCVcIjtcblx0XHRjb25zdCBjaGFydEhlaWdodCA9IGNvenlNb2RlID8gXCIxMDAlXCIgOiBcIjcuNXJlbVwiO1xuXHRcdGNvbnN0IG92ZXJhbGxXaWR0aCA9IGNvenlNb2RlID8gXCIxN3JlbVwiIDogXCIyMC41cmVtXCI7XG5cdFx0Y29uc3QgY2hhcnRDbGFzc01hcmdpbiA9IGNvenlNb2RlID8gXCJcIiA6IFwic2FwVWlUaW55TWFyZ2luQmVnaW5FbmRcIjtcblx0XHRjb25zdCB2ZkNvbnRyb2xJZCA9IHRoaXMuX2NvbnRlbnRJZCA/IGdlbmVyYXRlKFt0aGlzLl9jb250ZW50SWRdKSA6IHVuZGVmaW5lZDtcblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8VmlzdWFsRmlsdGVyQ29udHJvbCBpZD17dmZDb250cm9sSWR9IGhlaWdodD17b3ZlcmFsbEhlaWdodH0gd2lkdGg9e292ZXJhbGxXaWR0aH0gY2xhc3M9e2NoYXJ0Q2xhc3NNYXJnaW59PlxuXHRcdFx0XHR7e1xuXHRcdFx0XHRcdGN1c3RvbURhdGE6IDxDdXN0b21EYXRhIGtleT17XCJpbmZvUGF0aFwifSB2YWx1ZT17Z2VuZXJhdGUoW3RoaXMucGF0aF0pfSAvPixcblx0XHRcdFx0XHRpdGVtczogKFxuXHRcdFx0XHRcdFx0PD5cblx0XHRcdFx0XHRcdFx0PFZCb3ggaGVpZ2h0PVwiMnJlbVwiIGNsYXNzPVwic2FwVWlUaW55TWFyZ2luVG9wQm90dG9tXCI+XG5cdFx0XHRcdFx0XHRcdFx0e3RoaXMuZ2V0VG9vbGJhcihzaG93RXJyb3JFeHByZXNzaW9uKX1cblx0XHRcdFx0XHRcdFx0PC9WQm94PlxuXHRcdFx0XHRcdFx0XHQ8VkJveCBoZWlnaHQ9e2NoYXJ0SGVpZ2h0fSB3aWR0aD1cIjEwMCVcIj5cblx0XHRcdFx0XHRcdFx0XHR7Z2V0VmlzdWFsRmlsdGVyQ2hhcnQodGhpcyl9XG5cdFx0XHRcdFx0XHRcdDwvVkJveD5cblx0XHRcdFx0XHRcdDwvPlxuXHRcdFx0XHRcdClcblx0XHRcdFx0fX1cblx0XHRcdDwvVmlzdWFsRmlsdGVyQ29udHJvbD5cblx0XHQpO1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBeUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQWpCQSxJQW1CcUJBLFlBQVksSUFBQUMsSUFBQSxHQURoQ0MsY0FBYyxDQUFDLDBDQUEwQyxDQUFDLEVBQUFDLEtBQUEsR0FFekRDLGtCQUFrQixDQUFDLDBCQUEwQixDQUFDLEVBQUFDLEtBQUEsR0FHOUNDLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUdERixRQUFRLENBQUM7SUFDVEMsSUFBSSxFQUFFO0VBQ1AsQ0FBQyxDQUFDLEVBQUFFLEtBQUEsR0FHREMsS0FBSyxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUdQTCxRQUFRLENBQUM7SUFDVEMsSUFBSSxFQUFFLFFBQVE7SUFDZEssUUFBUSxFQUFFO0VBQ1gsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FHRFAsUUFBUSxDQUFDO0lBQ1RDLElBQUksRUFBRTtFQUNQLENBQUMsQ0FBQyxFQUFBTyxLQUFBLEdBR0RSLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUUsUUFBUTtJQUNkSyxRQUFRLEVBQUU7RUFDWCxDQUFDLENBQUMsRUFBQUcsS0FBQSxHQUdEVCxRQUFRLENBQUM7SUFDVEMsSUFBSSxFQUFFLFFBQVE7SUFDZEssUUFBUSxFQUFFO0VBQ1gsQ0FBQyxDQUFDLEVBQUFJLE1BQUEsR0FHRFYsUUFBUSxDQUFDO0lBQ1RDLElBQUksRUFBRTtFQUNQLENBQUMsQ0FBQyxFQUFBVSxNQUFBLEdBR0RYLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQVcsTUFBQSxHQUdEWixRQUFRLENBQUM7SUFDVEMsSUFBSSxFQUFFO0VBQ1AsQ0FBQyxDQUFDLEVBQUFZLE1BQUEsR0FHRGIsUUFBUSxDQUFDO0lBQ1RDLElBQUksRUFBRTtFQUNQLENBQUMsQ0FBQyxFQUFBYSxNQUFBLEdBR0RkLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQWMsTUFBQSxHQUdEZixRQUFRLENBQUM7SUFDVEMsSUFBSSxFQUFFO0VBQ1AsQ0FBQyxDQUFDLEVBQUFlLE1BQUEsR0FHRGhCLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQWdCLE1BQUEsR0FHRGpCLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQWlCLE1BQUEsR0FHRGxCLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQWtCLE1BQUEsR0FHRG5CLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQW1CLE1BQUEsR0FHRHBCLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQW9CLE1BQUEsR0FHRHJCLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQXFCLE1BQUEsR0FHRHRCLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQXNCLE1BQUEsR0FHRHZCLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQXVCLE1BQUEsR0FHRHhCLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQXdCLE1BQUEsR0FHRHpCLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQXlCLE1BQUEsR0FHRDFCLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQTBCLE1BQUEsR0FHRDNCLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQTJCLE1BQUEsR0FHRDVCLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQTRCLE1BQUEsR0FHRDdCLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQTZCLE1BQUEsR0FHRDlCLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQThCLE1BQUEsR0FPRC9CLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQU4sSUFBQSxDQUFBcUMsTUFBQSxJQUFBQyxPQUFBLDBCQUFBQyxjQUFBO0lBd0NGLFNBQUF4Qyxh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
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import type { AnnotationPath,
|
|
1
|
+
import type { AnnotationPath,PathAnnotationExpression } from "@sap-ux/vocabularies-types";
|
|
2
2
|
import type { CustomAggregate } from "@sap-ux/vocabularies-types/vocabularies/Aggregation";
|
|
3
|
-
import type { AggregatedProperty,
|
|
3
|
+
import type { AggregatedProperty,AggregatedPropertyType } from "@sap-ux/vocabularies-types/vocabularies/Analytics";
|
|
4
4
|
import { SortOrderType } from "@sap-ux/vocabularies-types/vocabularies/Common";
|
|
5
5
|
import type { PropertyAnnotations } from "@sap-ux/vocabularies-types/vocabularies/Edm_Types";
|
|
6
6
|
import type { PropertyAnnotations_Measures } from "@sap-ux/vocabularies-types/vocabularies/Measures_Edm";
|
|
7
|
-
import type { Chart,
|
|
7
|
+
import type { Chart,DataPoint,LineItem,PresentationVariant,SelectionVariant } from "@sap-ux/vocabularies-types/vocabularies/UI";
|
|
8
8
|
import Log from "sap/base/Log";
|
|
9
9
|
import merge from "sap/base/util/merge";
|
|
10
|
-
import { compileExpression,
|
|
11
|
-
import { defineUI5Class,
|
|
10
|
+
import { compileExpression,ifElse,resolveBindingString } from "sap/fe/base/BindingToolkit";
|
|
11
|
+
import { defineUI5Class,event,implementInterface,property,type PropertiesOf } from "sap/fe/base/ClassSupport";
|
|
12
12
|
import TemplateComponent from "sap/fe/core/TemplateComponent";
|
|
13
13
|
import BuildingBlock from "sap/fe/core/buildingBlocks/BuildingBlock";
|
|
14
14
|
import ConverterContext from "sap/fe/core/converters/ConverterContext";
|
|
@@ -616,7 +616,7 @@ export default class VisualFilter extends BuildingBlock<VisualFilterControl> {
|
|
|
616
616
|
}
|
|
617
617
|
|
|
618
618
|
getTitle(): string {
|
|
619
|
-
|
|
619
|
+
const titleControl = (
|
|
620
620
|
<Title
|
|
621
621
|
id={generate([this._contentId, "MeasureDimensionTitle"])}
|
|
622
622
|
text={this.measureDimensionTitle}
|
|
@@ -626,6 +626,10 @@ export default class VisualFilter extends BuildingBlock<VisualFilterControl> {
|
|
|
626
626
|
class="sapUiTinyMarginEnd sapUiNoMarginBegin"
|
|
627
627
|
></Title>
|
|
628
628
|
);
|
|
629
|
+
|
|
630
|
+
// Attach event delegates after the controls are rendered and view is available
|
|
631
|
+
this._attachTitleEventDelegates(titleControl);
|
|
632
|
+
return titleControl;
|
|
629
633
|
}
|
|
630
634
|
|
|
631
635
|
getUoMTitle(showErrorExpression: string): string {
|
|
@@ -717,6 +721,23 @@ export default class VisualFilter extends BuildingBlock<VisualFilterControl> {
|
|
|
717
721
|
}
|
|
718
722
|
}
|
|
719
723
|
|
|
724
|
+
/**
|
|
725
|
+
* Attaches mouseover and mouseout event delegates to the measure dimension title.
|
|
726
|
+
* This creates dynamic tooltips that combine measure titles with scale/UOM information.
|
|
727
|
+
* @param titlecontrol The title control to which event delegates are attached.
|
|
728
|
+
*/
|
|
729
|
+
private _attachTitleEventDelegates(titlecontrol: Title): void {
|
|
730
|
+
titlecontrol.addEventDelegate(
|
|
731
|
+
{
|
|
732
|
+
onmouseover: (_evt: MouseEvent) => {
|
|
733
|
+
const tooltip = titlecontrol.getTooltip() as string;
|
|
734
|
+
titlecontrol.getDomRef()?.setAttribute("title", tooltip);
|
|
735
|
+
}
|
|
736
|
+
},
|
|
737
|
+
this
|
|
738
|
+
);
|
|
739
|
+
}
|
|
740
|
+
|
|
720
741
|
/**
|
|
721
742
|
* Sets the enablement of the visual filter chart binding.
|
|
722
743
|
* @param enableBinding Boolean indicating whether to enable or disable the chart binding.
|
|
@@ -780,6 +801,7 @@ export default class VisualFilter extends BuildingBlock<VisualFilterControl> {
|
|
|
780
801
|
const overallWidth = cozyMode ? "17rem" : "20.5rem";
|
|
781
802
|
const chartClassMargin = cozyMode ? "" : "sapUiTinyMarginBeginEnd";
|
|
782
803
|
const vfControlId = this._contentId ? generate([this._contentId]) : undefined;
|
|
804
|
+
|
|
783
805
|
return (
|
|
784
806
|
<VisualFilterControl id={vfControlId} height={overallHeight} width={overallWidth} class={chartClassMargin}>
|
|
785
807
|
{{
|