@sapui5/sap.fe.macros 1.102.0 → 1.103.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/macros/.library +1 -1
- package/src/sap/fe/macros/Chart.metadata.js +0 -2
- package/src/sap/fe/macros/ChartAPI.js +2 -2
- package/src/sap/fe/macros/ChartAPI.ts +2 -2
- package/src/sap/fe/macros/ChartDelegate.js +24 -21
- package/src/sap/fe/macros/ChartDelegate.ts +26 -24
- package/src/sap/fe/macros/CommonHelper.js +149 -296
- package/src/sap/fe/macros/CommonHelper.ts +146 -349
- package/src/sap/fe/macros/Contact.metadata.js +2 -5
- package/src/sap/fe/macros/ContactHelper.js +4 -4
- package/src/sap/fe/macros/ContactHelper.ts +4 -4
- package/src/sap/fe/macros/DelegateUtil.js +8 -8
- package/src/sap/fe/macros/DelegateUtil.ts +14 -14
- package/src/sap/fe/macros/DraftIndicator.fragment.xml +7 -8
- package/src/sap/fe/macros/DraftIndicator.metadata.js +1 -4
- package/src/sap/fe/macros/DraftIndicatorRuntime.js +10 -10
- package/src/sap/fe/macros/DraftIndicatorRuntime.ts +13 -13
- package/src/sap/fe/macros/Field.metadata.js +8 -9
- package/src/sap/fe/macros/Field.metadata.ts +3 -4
- package/src/sap/fe/macros/FieldAPI.js +13 -16
- package/src/sap/fe/macros/FieldAPI.ts +18 -20
- package/src/sap/fe/macros/FieldBaseDelegate.js +11 -11
- package/src/sap/fe/macros/FieldBaseDelegate.ts +10 -10
- package/src/sap/fe/macros/FieldValueHelpDelegate.js +13 -13
- package/src/sap/fe/macros/FieldValueHelpDelegate.ts +12 -12
- package/src/sap/fe/macros/FilterBar.metadata.js +4 -4
- package/src/sap/fe/macros/FilterBarAPI.js +5 -6
- package/src/sap/fe/macros/FilterBarAPI.ts +6 -7
- package/src/sap/fe/macros/FilterBarDelegate.js +22 -20
- package/src/sap/fe/macros/FilterBarDelegate.ts +24 -20
- package/src/sap/fe/macros/FlexibleColumnLayoutActions.metadata.js +1 -3
- package/src/sap/fe/macros/Form.designtime.js +3 -2
- package/src/sap/fe/macros/Form.designtime.ts +2 -1
- package/src/sap/fe/macros/Form.fragment.xml +5 -1
- package/src/sap/fe/macros/Form.metadata.js +18 -10
- package/src/sap/fe/macros/Form.metadata.ts +13 -6
- package/src/sap/fe/macros/FormContainer.fragment.xml +46 -19
- package/src/sap/fe/macros/FormContainer.metadata.js +10 -2
- package/src/sap/fe/macros/FormContainer.metadata.ts +8 -2
- package/src/sap/fe/macros/FormElement.metadata.js +14 -9
- package/src/sap/fe/macros/FormElement.metadata.ts +9 -4
- package/src/sap/fe/macros/KPITag.metadata.js +9 -10
- package/src/sap/fe/macros/KPITag.metadata.ts +9 -15
- package/src/sap/fe/macros/MacroAPI.js +3 -5
- package/src/sap/fe/macros/MacroAPI.ts +12 -12
- package/src/sap/fe/macros/MacroMetadata.js +4 -5
- package/src/sap/fe/macros/MacroMetadata.ts +3 -4
- package/src/sap/fe/macros/MacroTemplating.js +1 -1
- package/src/sap/fe/macros/MacroTemplating.ts +2 -2
- package/src/sap/fe/macros/MicroChart.metadata.js +1 -4
- package/src/sap/fe/macros/ODataMetaModelUtil.js +22 -22
- package/src/sap/fe/macros/ODataMetaModelUtil.ts +40 -40
- package/src/sap/fe/macros/Paginator.metadata.js +1 -3
- package/src/sap/fe/macros/QuickViewForm.metadata.js +3 -5
- package/src/sap/fe/macros/ResourceModel.js +8 -8
- package/src/sap/fe/macros/ResourceModel.ts +9 -9
- package/src/sap/fe/macros/Share.metadata.js +1 -4
- package/src/sap/fe/macros/SizeHelper.js +24 -20
- package/src/sap/fe/macros/SizeHelper.ts +23 -20
- package/src/sap/fe/macros/Table.metadata.js +13 -2
- package/src/sap/fe/macros/TableAPI.js +47 -31
- package/src/sap/fe/macros/TableAPI.ts +56 -36
- package/src/sap/fe/macros/ValueHelp.metadata.js +1 -4
- package/src/sap/fe/macros/ValueHelpDelegate.js +29 -30
- package/src/sap/fe/macros/ValueHelpDelegate.ts +39 -38
- package/src/sap/fe/macros/VisualFilter.fragment.xml +2 -2
- package/src/sap/fe/macros/VisualFilter.metadata.js +2 -4
- package/src/sap/fe/macros/chart/ChartHelper.js +19 -19
- package/src/sap/fe/macros/chart/ChartHelper.ts +19 -22
- package/src/sap/fe/macros/chart/ChartRuntime.js +10 -10
- package/src/sap/fe/macros/chart/ChartRuntime.ts +11 -11
- package/src/sap/fe/macros/chart/ChartUtils.js +26 -27
- package/src/sap/fe/macros/chart/ChartUtils.ts +29 -29
- package/src/sap/fe/macros/field/FieldHelper.js +222 -176
- package/src/sap/fe/macros/field/FieldHelper.ts +248 -173
- package/src/sap/fe/macros/field/FieldRuntime.js +30 -28
- package/src/sap/fe/macros/field/FieldRuntime.ts +44 -43
- package/src/sap/fe/macros/field/FieldTemplating.js +100 -170
- package/src/sap/fe/macros/field/FieldTemplating.ts +124 -210
- package/src/sap/fe/macros/field/QuickViewLinkDelegate.js +71 -63
- package/src/sap/fe/macros/field/QuickViewLinkDelegate.ts +82 -99
- package/src/sap/fe/macros/filter/CustomFilter.fragment.xml +3 -2
- package/src/sap/fe/macros/filter/DraftEditState.js +9 -3
- package/src/sap/fe/macros/filter/DraftEditState.ts +7 -3
- package/src/sap/fe/macros/filter/FilterFieldHelper.js +20 -16
- package/src/sap/fe/macros/filter/FilterFieldHelper.ts +18 -15
- package/src/sap/fe/macros/filter/FilterFieldTemplating.js +55 -17
- package/src/sap/fe/macros/filter/FilterFieldTemplating.ts +43 -6
- package/src/sap/fe/macros/filter/FilterUtils.js +33 -25
- package/src/sap/fe/macros/filter/FilterUtils.ts +39 -32
- package/src/sap/fe/macros/filter/type/MultiValue.js +9 -9
- package/src/sap/fe/macros/filter/type/MultiValue.ts +9 -9
- package/src/sap/fe/macros/filter/type/Range.js +7 -7
- package/src/sap/fe/macros/filter/type/Range.ts +7 -7
- package/src/sap/fe/macros/filter/type/Value.js +31 -32
- package/src/sap/fe/macros/filter/type/Value.ts +33 -37
- package/src/sap/fe/macros/flexibility/FormDelegate.js +16 -16
- package/src/sap/fe/macros/flexibility/FormDelegate.ts +16 -16
- package/src/sap/fe/macros/form/AddressSection.fragment.xml +5 -2
- package/src/sap/fe/macros/form/DataFieldCollection.fragment.xml +2 -0
- package/src/sap/fe/macros/form/FormHelper.js +47 -10
- package/src/sap/fe/macros/form/FormHelper.ts +38 -8
- package/src/sap/fe/macros/fpm/CustomFragment.metadata.js +1 -4
- package/src/sap/fe/macros/fpm/CustomSection.metadata.js +1 -4
- package/src/sap/fe/macros/internal/CollectionField.metadata.js +12 -13
- package/src/sap/fe/macros/internal/CollectionField.metadata.ts +12 -14
- package/src/sap/fe/macros/internal/DataPoint.fragment.xml +1 -0
- package/src/sap/fe/macros/internal/DataPoint.metadata.js +188 -220
- package/src/sap/fe/macros/internal/DataPoint.metadata.ts +191 -0
- package/src/sap/fe/macros/internal/Field.fragment.xml +0 -2
- package/src/sap/fe/macros/internal/Field.metadata.js +34 -29
- package/src/sap/fe/macros/internal/Field.metadata.ts +61 -47
- package/src/sap/fe/macros/internal/FilterField.fragment.xml +4 -3
- package/src/sap/fe/macros/internal/FilterField.metadata.js +1 -4
- package/src/sap/fe/macros/internal/collaborationHelper.js +4 -5
- package/src/sap/fe/macros/internal/collaborationHelper.ts +5 -6
- package/src/sap/fe/macros/internal/field/ConnectedDataField.fragment.xml +1 -2
- package/src/sap/fe/macros/internal/field/displayStyle/AmountWithCurrency.fragment.xml +28 -25
- package/src/sap/fe/macros/internal/field/displayStyle/ObjectIdentifier.fragment.xml +1 -1
- package/src/sap/fe/macros/internal/field/displayStyle/ObjectStatus.fragment.xml +14 -13
- package/src/sap/fe/macros/internal/field/displayStyle/SemanticKeyWithDraftIndicator.fragment.xml +3 -3
- package/src/sap/fe/macros/internal/field/editStyle/InputWithUnit.fragment.xml +1 -3
- package/src/sap/fe/macros/internal/form/FormTemplating.js +11 -10
- package/src/sap/fe/macros/internal/form/FormTemplating.ts +12 -10
- package/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +52 -66
- package/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +72 -83
- package/src/sap/fe/macros/internal/helpers/TableTemplating.js +11 -11
- package/src/sap/fe/macros/internal/helpers/TableTemplating.ts +6 -5
- package/src/sap/fe/macros/internal/situations/SituationsIndicator.fragment.js +49 -18
- package/src/sap/fe/macros/internal/situations/SituationsIndicator.fragment.ts +39 -14
- package/src/sap/fe/macros/internal/situations/SituationsPopover.js +2 -3
- package/src/sap/fe/macros/internal/situations/SituationsPopover.ts +8 -8
- package/src/sap/fe/macros/internal/situations/SituationsText.js +30 -10
- package/src/sap/fe/macros/internal/situations/SituationsText.ts +30 -12
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +72 -13
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +87 -16
- package/src/sap/fe/macros/internal/valuehelp/ValueHelpContent.fragment.xml +0 -1
- package/src/sap/fe/macros/internal/valuehelp/ValueHelpTemplating.js +20 -23
- package/src/sap/fe/macros/internal/valuehelp/ValueHelpTemplating.ts +31 -32
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +134 -110
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +131 -140
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelperNew.js +31 -35
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelperNew.ts +43 -59
- package/src/sap/fe/macros/library.js +11 -2
- package/src/sap/fe/macros/library.ts +9 -0
- package/src/sap/fe/macros/messagebundle.properties +1 -1
- package/src/sap/fe/macros/messagebundle_ar.properties +3 -3
- package/src/sap/fe/macros/messagebundle_bg.properties +3 -3
- package/src/sap/fe/macros/messagebundle_ca.properties +2 -2
- package/src/sap/fe/macros/messagebundle_cs.properties +3 -3
- package/src/sap/fe/macros/messagebundle_cy.properties +4 -4
- package/src/sap/fe/macros/messagebundle_da.properties +3 -3
- package/src/sap/fe/macros/messagebundle_de.properties +4 -4
- package/src/sap/fe/macros/messagebundle_el.properties +3 -3
- package/src/sap/fe/macros/messagebundle_en.properties +1 -1
- package/src/sap/fe/macros/messagebundle_en_GB.properties +2 -2
- package/src/sap/fe/macros/messagebundle_en_US_sappsd.properties +1 -1
- package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +1 -1
- package/src/sap/fe/macros/messagebundle_en_US_saptrc.properties +8 -3
- package/src/sap/fe/macros/messagebundle_es.properties +2 -2
- package/src/sap/fe/macros/messagebundle_es_MX.properties +2 -2
- package/src/sap/fe/macros/messagebundle_et.properties +3 -3
- package/src/sap/fe/macros/messagebundle_fi.properties +4 -4
- package/src/sap/fe/macros/messagebundle_fr.properties +3 -3
- package/src/sap/fe/macros/messagebundle_fr_CA.properties +3 -3
- package/src/sap/fe/macros/messagebundle_hi.properties +4 -4
- package/src/sap/fe/macros/messagebundle_hr.properties +4 -4
- package/src/sap/fe/macros/messagebundle_hu.properties +3 -3
- package/src/sap/fe/macros/messagebundle_id.properties +3 -3
- package/src/sap/fe/macros/messagebundle_it.properties +11 -11
- package/src/sap/fe/macros/messagebundle_iw.properties +3 -3
- package/src/sap/fe/macros/messagebundle_ja.properties +4 -4
- package/src/sap/fe/macros/messagebundle_kk.properties +3 -3
- package/src/sap/fe/macros/messagebundle_ko.properties +3 -3
- package/src/sap/fe/macros/messagebundle_lt.properties +3 -3
- package/src/sap/fe/macros/messagebundle_lv.properties +4 -4
- package/src/sap/fe/macros/messagebundle_ms.properties +3 -3
- package/src/sap/fe/macros/messagebundle_nl.properties +3 -3
- package/src/sap/fe/macros/messagebundle_no.properties +3 -3
- package/src/sap/fe/macros/messagebundle_pl.properties +3 -3
- package/src/sap/fe/macros/messagebundle_pt.properties +3 -3
- package/src/sap/fe/macros/messagebundle_pt_PT.properties +3 -3
- package/src/sap/fe/macros/messagebundle_ro.properties +3 -3
- package/src/sap/fe/macros/messagebundle_ru.properties +3 -3
- package/src/sap/fe/macros/messagebundle_sh.properties +3 -3
- package/src/sap/fe/macros/messagebundle_sk.properties +3 -3
- package/src/sap/fe/macros/messagebundle_sl.properties +4 -4
- package/src/sap/fe/macros/messagebundle_sv.properties +4 -4
- package/src/sap/fe/macros/messagebundle_th.properties +3 -3
- package/src/sap/fe/macros/messagebundle_tr.properties +3 -3
- package/src/sap/fe/macros/messagebundle_uk.properties +3 -3
- package/src/sap/fe/macros/messagebundle_vi.properties +3 -3
- package/src/sap/fe/macros/messagebundle_zh_CN.properties +4 -4
- package/src/sap/fe/macros/messagebundle_zh_TW.properties +3 -3
- package/src/sap/fe/macros/microchart/MicroChartContainer.js +4 -4
- package/src/sap/fe/macros/microchart/MicroChartContainer.ts +7 -7
- package/src/sap/fe/macros/microchart/MicroChartHelper.js +113 -75
- package/src/sap/fe/macros/microchart/MicroChartHelper.ts +129 -78
- package/src/sap/fe/macros/microchart/fragments/AreaMicroChart.fragment.xml +11 -10
- package/src/sap/fe/macros/microchart/fragments/LineMicroChart.fragment.xml +2 -1
- package/src/sap/fe/macros/table/Actions.fragment.xml +2 -2
- package/src/sap/fe/macros/table/BasicSearch.js +1 -1
- package/src/sap/fe/macros/table/BasicSearch.ts +2 -2
- package/src/sap/fe/macros/table/Column.fragment.xml +8 -8
- package/src/sap/fe/macros/table/ColumnContent.fragment.xml +3 -0
- package/src/sap/fe/macros/table/QuickFilterContainer.js +3 -3
- package/src/sap/fe/macros/table/QuickFilterContainer.ts +5 -5
- package/src/sap/fe/macros/table/Table.fragment.xml +13 -9
- package/src/sap/fe/macros/table/TableFullScreenUtil.js +5 -8
- package/src/sap/fe/macros/table/TableFullScreenUtil.ts +2 -3
- package/src/sap/fe/macros/table/TableHelper.js +161 -134
- package/src/sap/fe/macros/table/TableHelper.ts +169 -141
- package/src/sap/fe/macros/table/TableRuntime.js +3 -3
- package/src/sap/fe/macros/table/TableRuntime.ts +3 -3
- package/src/sap/fe/macros/table/Utils.js +21 -22
- package/src/sap/fe/macros/table/Utils.ts +25 -26
- package/src/sap/fe/macros/table/delegates/ALPTableDelegateBaseMixin.js +2 -2
- package/src/sap/fe/macros/table/delegates/ALPTableDelegateBaseMixin.ts +1 -1
- package/src/sap/fe/macros/table/delegates/AnalyticalTableDelegate.js +3 -3
- package/src/sap/fe/macros/table/delegates/AnalyticalTableDelegate.ts +2 -2
- package/src/sap/fe/macros/table/delegates/TableDelegate.js +52 -44
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +53 -48
- package/src/sap/fe/macros/valuehelp/ValueHelpFilterBar.metadata.js +8 -11
- package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.js +27 -33
- package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.ts +34 -36
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +12 -15
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +17 -20
package/package.json
CHANGED
|
@@ -18,7 +18,6 @@ sap.ui.define(
|
|
|
18
18
|
/**
|
|
19
19
|
* @classdesc
|
|
20
20
|
* The building block for creating a chart based on the metadata provided by OData V4.
|
|
21
|
-
*
|
|
22
21
|
* @class sap.fe.macros.Chart
|
|
23
22
|
* @hideconstructor
|
|
24
23
|
* @private
|
|
@@ -188,7 +187,6 @@ sap.ui.define(
|
|
|
188
187
|
aVisualizations.forEach(function (oVisualization) {
|
|
189
188
|
if (oVisualization.$AnnotationPath.indexOf("@com.sap.vocabularies.UI.v1.Chart") > -1) {
|
|
190
189
|
sVisualizationPath = oVisualization.$AnnotationPath;
|
|
191
|
-
return;
|
|
192
190
|
}
|
|
193
191
|
});
|
|
194
192
|
}
|
|
@@ -92,7 +92,7 @@ sap.ui.define(["sap/base/util/merge", "sap/fe/core/helpers/ClassSupport", "./Mac
|
|
|
92
92
|
var chart = this.getContent();
|
|
93
93
|
var showMessageStrip = {};
|
|
94
94
|
var sChartEntityPath = chart.data("entitySet"),
|
|
95
|
-
sCacheKey = sChartEntityPath
|
|
95
|
+
sCacheKey = "".concat(sChartEntityPath, "Chart"),
|
|
96
96
|
oBindingContext = view.getBindingContext();
|
|
97
97
|
showMessageStrip[sCacheKey] = chart.data("draftSupported") === "true" && !!oBindingContext && !oBindingContext.getObject("IsActiveEntity");
|
|
98
98
|
internalModelContext.setProperty("controls/showMessageStrip", showMessageStrip);
|
|
@@ -151,4 +151,4 @@ sap.ui.define(["sap/base/util/merge", "sap/fe/core/helpers/ClassSupport", "./Mac
|
|
|
151
151
|
}), _applyDecoratedDescriptor(_class2.prototype, "handleSelectionChange", [_dec10], Object.getOwnPropertyDescriptor(_class2.prototype, "handleSelectionChange"), _class2.prototype)), _class2)) || _class);
|
|
152
152
|
return ChartAPI;
|
|
153
153
|
}, false);
|
|
154
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
154
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNoYXJ0QVBJLnRzIl0sIm5hbWVzIjpbIkNoYXJ0QVBJIiwiZGVmaW5lVUk1Q2xhc3MiLCJwcm9wZXJ0eSIsInR5cGUiLCJyZXF1aXJlZCIsImRlZmF1bHRWYWx1ZSIsImV2ZW50IiwieG1sRXZlbnRIYW5kbGVyIiwib25BZnRlclJlbmRlcmluZyIsInZpZXciLCJnZXRDb250cm9sbGVyIiwiZ2V0VmlldyIsImludGVybmFsTW9kZWxDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJjaGFydCIsImdldENvbnRlbnQiLCJzaG93TWVzc2FnZVN0cmlwIiwic0NoYXJ0RW50aXR5UGF0aCIsImRhdGEiLCJzQ2FjaGVLZXkiLCJvQmluZGluZ0NvbnRleHQiLCJnZXRPYmplY3QiLCJzZXRQcm9wZXJ0eSIsImhhbmRsZVNlbGVjdGlvbkNoYW5nZSIsIm9FdmVudCIsImFEYXRhIiwiZ2V0UGFyYW1ldGVyIiwiYlNlbGVjdGVkIiwiZmlyZVNlbGVjdGlvbkNoYW5nZSIsIm1lcmdlIiwic2VsZWN0ZWQiLCJNYWNyb0FQSSJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO01BRU1BLFEsV0FETEMsY0FBYyxDQUFDLHdCQUFELEMsVUFRYkMsUUFBUSxDQUFDO0FBQUVDLElBQUFBLElBQUksRUFBRTtBQUFSLEdBQUQsQyxVQVFSRCxRQUFRLENBQUM7QUFBRUMsSUFBQUEsSUFBSSxFQUFFLFFBQVI7QUFBa0JDLElBQUFBLFFBQVEsRUFBRTtBQUE1QixHQUFELEMsVUFRUkYsUUFBUSxDQUFDO0FBQUVDLElBQUFBLElBQUksRUFBRSxRQUFSO0FBQWtCQyxJQUFBQSxRQUFRLEVBQUU7QUFBNUIsR0FBRCxDLFVBUVJGLFFBQVEsQ0FBQztBQUFFQyxJQUFBQSxJQUFJLEVBQUUsUUFBUjtBQUFrQkUsSUFBQUEsWUFBWSxFQUFFO0FBQWhDLEdBQUQsQyxVQVFSSCxRQUFRLENBQUM7QUFBRUMsSUFBQUEsSUFBSSxFQUFFO0FBQVIsR0FBRCxDLFVBUVJELFFBQVEsQ0FBQztBQUFFQyxJQUFBQSxJQUFJLEVBQUU7QUFBUixHQUFELEMsVUFRUkcsS0FBSyxFLFVBVUxBLEtBQUssRSxXQWdCTEMsZUFBZSxFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7V0FiaEJDLGdCLEdBQUEsNEJBQW1CO0FBQ2xCLFVBQU1DLElBQUksR0FBRyxLQUFLQyxhQUFMLEdBQXFCQyxPQUFyQixFQUFiO0FBQ0EsVUFBTUMsb0JBQXlCLEdBQUdILElBQUksQ0FBQ0ksaUJBQUwsQ0FBdUIsVUFBdkIsQ0FBbEM7QUFDQSxVQUFNQyxLQUFLLEdBQUksSUFBRCxDQUFjQyxVQUFkLEVBQWQ7QUFDQSxVQUFNQyxnQkFBcUIsR0FBRyxFQUE5QjtBQUNBLFVBQU1DLGdCQUFnQixHQUFHSCxLQUFLLENBQUNJLElBQU4sQ0FBVyxXQUFYLENBQXpCO0FBQUEsVUFDQ0MsU0FBUyxhQUFNRixnQkFBTixVQURWO0FBQUEsVUFFQ0csZUFBZSxHQUFHWCxJQUFJLENBQUNJLGlCQUFMLEVBRm5CO0FBR0FHLE1BQUFBLGdCQUFnQixDQUFDRyxTQUFELENBQWhCLEdBQ0NMLEtBQUssQ0FBQ0ksSUFBTixDQUFXLGdCQUFYLE1BQWlDLE1BQWpDLElBQTJDLENBQUMsQ0FBQ0UsZUFBN0MsSUFBZ0UsQ0FBQ0EsZUFBZSxDQUFDQyxTQUFoQixDQUEwQixnQkFBMUIsQ0FEbEU7QUFFQVQsTUFBQUEsb0JBQW9CLENBQUNVLFdBQXJCLENBQWlDLDJCQUFqQyxFQUE4RE4sZ0JBQTlEO0FBQ0EsSzs7V0FHRE8scUIsR0FEQSwrQkFDc0JDLE1BRHRCLEVBQ3dDO0FBQ3ZDLFVBQU1DLEtBQUssR0FBR0QsTUFBTSxDQUFDRSxZQUFQLENBQW9CLE1BQXBCLENBQWQ7QUFDQSxVQUFNQyxTQUFTLEdBQUdILE1BQU0sQ0FBQ0UsWUFBUCxDQUFvQixNQUFwQixNQUFnQyxZQUFsRDtBQUNDLFVBQUQsQ0FBY0UsbUJBQWQsQ0FBa0NDLEtBQUssQ0FBQyxFQUFELEVBQUs7QUFBRVgsUUFBQUEsSUFBSSxFQUFFTyxLQUFSO0FBQWVLLFFBQUFBLFFBQVEsRUFBRUg7QUFBekIsT0FBTCxDQUF2QztBQUNBLEs7OztJQXRGcUJJLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBeUZSL0IsUSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1lcmdlIGZyb20gXCJzYXAvYmFzZS91dGlsL21lcmdlXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgZXZlbnQsIHByb3BlcnR5LCB4bWxFdmVudEhhbmRsZXIgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIFVJNUV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IE1hY3JvQVBJIGZyb20gXCIuL01hY3JvQVBJXCI7XG4vKipcbiAqIEJ1aWxkaW5nIGJsb2NrIHVzZWQgdG8gY3JlYXRlIGEgY2hhcnQgYmFzZWQgb24gdGhlIG1ldGFkYXRhIHByb3ZpZGVkIGJ5IE9EYXRhIFY0LlxuICogPGJyPlxuICogVXN1YWxseSwgYSBjb250ZXh0UGF0aCBhbmQgbWV0YVBhdGggaXMgZXhwZWN0ZWQuXG4gKlxuICpcbiAqIFVzYWdlIGV4YW1wbGU6XG4gKiA8cHJlPlxuICogJmx0O21hY3JvOkNoYXJ0IGlkPVwiTXljaGFydFwiIGNvbnRleHRQYXRoPVwiL1Jvb3RFbnRpdHlcIiBtZXRhUGF0aD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5DaGFydFwiIC8mZ3Q7XG4gKiA8L3ByZT5cbiAqXG4gKiBAYWxpYXMgc2FwLmZlLm1hY3Jvcy5DaGFydFxuICogQHB1YmxpY1xuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUubWFjcm9zLkNoYXJ0QVBJXCIpXG5jbGFzcyBDaGFydEFQSSBleHRlbmRzIE1hY3JvQVBJIHtcblx0LyoqXG5cdCAqXG5cdCAqIElEIG9mIHRoZSBjaGFydFxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGlkITogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBNZXRhZGF0YSBwYXRoIHRvIHRoZSBwcmVzZW50YXRpb24gKFVJLkNoYXJ0IHcgb3Igdy9vIHF1YWxpZmllcilcblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiwgcmVxdWlyZWQ6IHRydWUgfSlcblx0bWV0YVBhdGghOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIE1ldGFkYXRhIHBhdGggdG8gdGhlIGVudGl0eVNldCBvciBuYXZpZ2F0aW9uUHJvcGVydHlcblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiwgcmVxdWlyZWQ6IHRydWUgfSlcblx0Y29udGV4dFBhdGghOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyB0aGUgc2VsZWN0aW9uIG1vZGVcblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiwgZGVmYXVsdFZhbHVlOiBcIk1VTFRJUExFXCIgfSlcblx0c2VsZWN0aW9uTW9kZSE6IHN0cmluZztcblxuXHQvKipcblx0ICogSWQgb2YgdGhlIEZpbHRlckJhciBidWlsZGluZyBibG9jayBhc3NvY2lhdGVkIHdpdGggdGhlIGNoYXJ0LlxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGZpbHRlckJhciE6IHN0cmluZztcblxuXHQvKipcblx0ICogUGFyYW1ldGVyIHdoaWNoIHNldHMgdGhlIHBlcnNvbmFsaXphdGlvbiBvZiB0aGUgTURDIGNoYXJ0XG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhbnxzdHJpbmdcIiB9KVxuXHRwZXJzb25hbGl6YXRpb24hOiBib29sZWFuIHwgc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBBbiBldmVudCB0cmlnZ2VyZWQgd2hlbiBjaGFydCBzZWxlY3Rpb25zIGFyZSBjaGFuZ2VkLiBUaGUgZXZlbnQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRhdGEgc2VsZWN0ZWQvZGVzZWxlY3RlZCBhbmQgdGhlIEJvb2xlYW4gZmxhZyB0aGF0IGluZGljYXRlcyB3aGV0aGVyIGRhdGEgaXMgc2VsZWN0ZWQgb3IgZGVzZWxlY3RlZC5cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGV2ZW50KClcblx0c2VsZWN0aW9uQ2hhbmdlITogRnVuY3Rpb247XG5cblx0LyoqXG5cdCAqIEFuIGV2ZW50IHRyaWdnZXJlZCB3aGVuIHRoZSBjaGFydCBzdGF0ZSBjaGFuZ2VzLlxuXHQgKlxuXHQgKiBZb3UgY2FuIHNldCB0aGlzIGluIG9yZGVyIHRvIHN0b3JlIHRoZSBjaGFydCBzdGF0ZSBpbiB0aGUgaUFwcHN0YXRlLlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0QGV2ZW50KClcblx0c3RhdGVDaGFuZ2UhOiBGdW5jdGlvbjtcblxuXHRvbkFmdGVyUmVuZGVyaW5nKCkge1xuXHRcdGNvbnN0IHZpZXcgPSB0aGlzLmdldENvbnRyb2xsZXIoKS5nZXRWaWV3KCk7XG5cdFx0Y29uc3QgaW50ZXJuYWxNb2RlbENvbnRleHQ6IGFueSA9IHZpZXcuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKTtcblx0XHRjb25zdCBjaGFydCA9ICh0aGlzIGFzIGFueSkuZ2V0Q29udGVudCgpO1xuXHRcdGNvbnN0IHNob3dNZXNzYWdlU3RyaXA6IGFueSA9IHt9O1xuXHRcdGNvbnN0IHNDaGFydEVudGl0eVBhdGggPSBjaGFydC5kYXRhKFwiZW50aXR5U2V0XCIpLFxuXHRcdFx0c0NhY2hlS2V5ID0gYCR7c0NoYXJ0RW50aXR5UGF0aH1DaGFydGAsXG5cdFx0XHRvQmluZGluZ0NvbnRleHQgPSB2aWV3LmdldEJpbmRpbmdDb250ZXh0KCk7XG5cdFx0c2hvd01lc3NhZ2VTdHJpcFtzQ2FjaGVLZXldID1cblx0XHRcdGNoYXJ0LmRhdGEoXCJkcmFmdFN1cHBvcnRlZFwiKSA9PT0gXCJ0cnVlXCIgJiYgISFvQmluZGluZ0NvbnRleHQgJiYgIW9CaW5kaW5nQ29udGV4dC5nZXRPYmplY3QoXCJJc0FjdGl2ZUVudGl0eVwiKTtcblx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImNvbnRyb2xzL3Nob3dNZXNzYWdlU3RyaXBcIiwgc2hvd01lc3NhZ2VTdHJpcCk7XG5cdH1cblxuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0aGFuZGxlU2VsZWN0aW9uQ2hhbmdlKG9FdmVudDogVUk1RXZlbnQpIHtcblx0XHRjb25zdCBhRGF0YSA9IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJkYXRhXCIpO1xuXHRcdGNvbnN0IGJTZWxlY3RlZCA9IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJuYW1lXCIpID09PSBcInNlbGVjdERhdGFcIjtcblx0XHQodGhpcyBhcyBhbnkpLmZpcmVTZWxlY3Rpb25DaGFuZ2UobWVyZ2Uoe30sIHsgZGF0YTogYURhdGEsIHNlbGVjdGVkOiBiU2VsZWN0ZWQgfSkpO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENoYXJ0QVBJO1xuIl19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import merge from "sap/base/util/merge";
|
|
2
2
|
import { defineUI5Class, event, property, xmlEventHandler } from "sap/fe/core/helpers/ClassSupport";
|
|
3
|
-
import UI5Event from "sap/ui/base/Event";
|
|
3
|
+
import type UI5Event from "sap/ui/base/Event";
|
|
4
4
|
import MacroAPI from "./MacroAPI";
|
|
5
5
|
/**
|
|
6
6
|
* Building block used to create a chart based on the metadata provided by OData V4.
|
|
@@ -91,7 +91,7 @@ class ChartAPI extends MacroAPI {
|
|
|
91
91
|
const chart = (this as any).getContent();
|
|
92
92
|
const showMessageStrip: any = {};
|
|
93
93
|
const sChartEntityPath = chart.data("entitySet"),
|
|
94
|
-
sCacheKey = sChartEntityPath
|
|
94
|
+
sCacheKey = `${sChartEntityPath}Chart`,
|
|
95
95
|
oBindingContext = view.getBindingContext();
|
|
96
96
|
showMessageStrip[sCacheKey] =
|
|
97
97
|
chart.data("draftSupported") === "true" && !!oBindingContext && !oBindingContext.getObject("IsActiveEntity");
|
|
@@ -42,12 +42,10 @@ sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/fe/core/CommonUtils",
|
|
|
42
42
|
} else {
|
|
43
43
|
sNoDataKey = "T_TABLE_AND_CHART_NO_DATA_TEXT";
|
|
44
44
|
}
|
|
45
|
+
} else if (oChartFilterInfo.search || oChartFilterInfo.filters && oChartFilterInfo.filters.length) {
|
|
46
|
+
sNoDataKey = _getNoDataTextWithFilters();
|
|
45
47
|
} else {
|
|
46
|
-
|
|
47
|
-
sNoDataKey = _getNoDataTextWithFilters();
|
|
48
|
-
} else {
|
|
49
|
-
sNoDataKey = "M_TABLE_AND_CHART_NO_FILTERS_NO_DATA_TEXT";
|
|
50
|
-
}
|
|
48
|
+
sNoDataKey = "M_TABLE_AND_CHART_NO_FILTERS_NO_DATA_TEXT";
|
|
51
49
|
}
|
|
52
50
|
|
|
53
51
|
return oChart.getModel("sap.fe.i18n").getResourceBundle().then(function (oResourceBundle) {
|
|
@@ -64,7 +62,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/fe/core/CommonUtils",
|
|
|
64
62
|
var oFilterRestrictions = mEntitySetAnnotations["@Org.OData.Capabilities.V1.FilterRestrictions"];
|
|
65
63
|
var oFilterRestrictionsInfo = ODataMetaModelUtil.getFilterRestrictionsInfo(oFilterRestrictions);
|
|
66
64
|
var oObj = this.getModel().getObject(this.getPath());
|
|
67
|
-
var sKey = this.getModel().getObject(this.getPath()
|
|
65
|
+
var sKey = this.getModel().getObject("".concat(this.getPath(), "@sapui.name"));
|
|
68
66
|
var oMetaModel = this.getModel();
|
|
69
67
|
|
|
70
68
|
if (oObj && oObj.$kind === "Property") {
|
|
@@ -77,7 +75,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/fe/core/CommonUtils",
|
|
|
77
75
|
return;
|
|
78
76
|
}
|
|
79
77
|
|
|
80
|
-
var oPropertyAnnotations = oMetaModel.getObject(this.getPath()
|
|
78
|
+
var oPropertyAnnotations = oMetaModel.getObject("".concat(this.getPath(), "@"));
|
|
81
79
|
var sPath = oMetaModel.getObject("@sapui.name", oMetaModel.getMetaContext(this.getPath()));
|
|
82
80
|
var aGroupableProperties = oApplySupported && oApplySupported.GroupableProperties;
|
|
83
81
|
var aAggregatableProperties = oApplySupported && oApplySupported.AggregatableProperties;
|
|
@@ -129,12 +127,12 @@ sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/fe/core/CommonUtils",
|
|
|
129
127
|
var bIsNavigationText = false;
|
|
130
128
|
|
|
131
129
|
if (sName && sName.indexOf("/") > -1) {
|
|
132
|
-
Log.error("$expand is not yet supported. Property: "
|
|
130
|
+
Log.error("$expand is not yet supported. Property: ".concat(sName, " from an association cannot be used"));
|
|
133
131
|
return;
|
|
134
132
|
}
|
|
135
133
|
|
|
136
134
|
if (sTextProperty && sTextProperty.indexOf("/") > -1) {
|
|
137
|
-
Log.error("$expand is not yet supported. Text Property: "
|
|
135
|
+
Log.error("$expand is not yet supported. Text Property: ".concat(sTextProperty, " from an association cannot be used"));
|
|
138
136
|
bIsNavigationText = true;
|
|
139
137
|
}
|
|
140
138
|
|
|
@@ -164,9 +162,9 @@ sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/fe/core/CommonUtils",
|
|
|
164
162
|
var oTextArrangementAnnotation = this.textFormatter;
|
|
165
163
|
|
|
166
164
|
if (oTextArrangementAnnotation.$EnumMember === "com.sap.vocabularies.UI.v1.TextArrangementType/TextFirst") {
|
|
167
|
-
return oValue2
|
|
165
|
+
return "".concat(oValue2, " (").concat(oValue1, ")");
|
|
168
166
|
} else if (oTextArrangementAnnotation.$EnumMember === "com.sap.vocabularies.UI.v1.TextArrangementType/TextLast") {
|
|
169
|
-
return oValue1
|
|
167
|
+
return "".concat(oValue1, " (").concat(oValue2, ")");
|
|
170
168
|
} else if (oTextArrangementAnnotation.$EnumMember === "com.sap.vocabularies.UI.v1.TextArrangementType/TextOnly") {
|
|
171
169
|
return oValue2;
|
|
172
170
|
}
|
|
@@ -220,6 +218,12 @@ sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/fe/core/CommonUtils",
|
|
|
220
218
|
} else if (oBindingInfo.parameters.$search) {
|
|
221
219
|
delete oBindingInfo.parameters.$search;
|
|
222
220
|
}
|
|
221
|
+
} else {
|
|
222
|
+
if (!oBindingInfo) {
|
|
223
|
+
oBindingInfo = {};
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
oBindingInfo.sorter = this.getSorters(oChart);
|
|
223
227
|
}
|
|
224
228
|
|
|
225
229
|
ChartDelegate._checkAndAddDraftFilter(oChart, oBindingInfo);
|
|
@@ -237,8 +241,8 @@ sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/fe/core/CommonUtils",
|
|
|
237
241
|
oMDCChart.attachModelContextChange({
|
|
238
242
|
resolver: resolve
|
|
239
243
|
}, onModelContextChange, _this);
|
|
240
|
-
}).then(function (
|
|
241
|
-
return _this._createPropertyInfos(oMDCChart,
|
|
244
|
+
}).then(function (oRetrievedModel) {
|
|
245
|
+
return _this._createPropertyInfos(oMDCChart, oRetrievedModel);
|
|
242
246
|
});
|
|
243
247
|
} else {
|
|
244
248
|
pCreatePropertyInfos = this._createPropertyInfos(oMDCChart, oModel);
|
|
@@ -265,9 +269,9 @@ sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/fe/core/CommonUtils",
|
|
|
265
269
|
}
|
|
266
270
|
|
|
267
271
|
ChartDelegate._createPropertyInfos = function (oMDCChart, oModel) {
|
|
268
|
-
var sEntitySetPath = "/"
|
|
272
|
+
var sEntitySetPath = "/".concat(oMDCChart.data("entitySet"));
|
|
269
273
|
var oMetaModel = oModel.getMetaModel();
|
|
270
|
-
return Promise.all([oMetaModel.requestObject(sEntitySetPath
|
|
274
|
+
return Promise.all([oMetaModel.requestObject("".concat(sEntitySetPath, "/")), oMetaModel.requestObject("".concat(sEntitySetPath, "@"))]).then(function (aResults) {
|
|
271
275
|
var aProperties = [];
|
|
272
276
|
var oEntityType = aResults[0],
|
|
273
277
|
mEntitySetAnnotations = aResults[1];
|
|
@@ -321,7 +325,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/fe/core/CommonUtils",
|
|
|
321
325
|
|
|
322
326
|
for (var sKey in oEntityType) {
|
|
323
327
|
if (sKey.indexOf("$") !== 0) {
|
|
324
|
-
aPropertyPromise.push(MetaModelUtil.fetchCriticality(oMetaModel, oMetaModel.createBindingContext(sEntitySetPath
|
|
328
|
+
aPropertyPromise.push(MetaModelUtil.fetchCriticality(oMetaModel, oMetaModel.createBindingContext("".concat(sEntitySetPath, "/").concat(sKey))).then(ChartDelegate._handleProperty.bind(oMetaModel.getMetaContext("".concat(sEntitySetPath, "/").concat(sKey)), oMDCChart, mEntitySetAnnotations, mKnownAggregatableProps, mCustomAggregates, aProperties)));
|
|
325
329
|
}
|
|
326
330
|
}
|
|
327
331
|
|
|
@@ -339,7 +343,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/fe/core/CommonUtils",
|
|
|
339
343
|
aAggregateProperties.push({
|
|
340
344
|
name: mKnownAggregatableProps[sKey][sAggregatable].name,
|
|
341
345
|
propertyPath: sKey,
|
|
342
|
-
label: mKnownAggregatableProps[sKey][sAggregatable].label || oPropertyAnnotations["@com.sap.vocabularies.Common.v1.Label"]
|
|
346
|
+
label: mKnownAggregatableProps[sKey][sAggregatable].label || "".concat(oPropertyAnnotations["@com.sap.vocabularies.Common.v1.Label"], " (").concat(sAggregatable, ")") || "".concat(sKey, " (").concat(sAggregatable, ")"),
|
|
343
347
|
sortable: oSortRestrictionsInfo[sKey] ? oSortRestrictionsInfo[sKey].sortable : true,
|
|
344
348
|
filterable: oFilterRestrictionsInfo[sKey] ? oFilterRestrictionsInfo[sKey].filterable : true,
|
|
345
349
|
groupable: false,
|
|
@@ -421,7 +425,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/fe/core/CommonUtils",
|
|
|
421
425
|
var oMetadataInfo = oMDCChart.getDelegate().payload;
|
|
422
426
|
var oMetaModel = oMDCChart.getModel() && oMDCChart.getModel().getMetaModel();
|
|
423
427
|
var sTargetCollectionPath = oMDCChart.data("targetCollectionPath");
|
|
424
|
-
var sEntitySetPath = (oMetaModel.getObject(sTargetCollectionPath
|
|
428
|
+
var sEntitySetPath = (oMetaModel.getObject("".concat(sTargetCollectionPath, "/$kind")) !== "NavigationProperty" ? "/" : "") + oMetadataInfo.contextPath;
|
|
425
429
|
var oParams = merge({}, oMetadataInfo.parameters, {
|
|
426
430
|
entitySet: oMDCChart.data("entitySet"),
|
|
427
431
|
useBatchRequests: true,
|
|
@@ -429,11 +433,10 @@ sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/fe/core/CommonUtils",
|
|
|
429
433
|
provideTotalResultSize: true,
|
|
430
434
|
noPaging: true
|
|
431
435
|
});
|
|
432
|
-
|
|
436
|
+
return {
|
|
433
437
|
path: sEntitySetPath,
|
|
434
438
|
parameters: oParams
|
|
435
439
|
};
|
|
436
|
-
return oBindingInfo;
|
|
437
440
|
};
|
|
438
441
|
|
|
439
442
|
ChartDelegate.removeItemFromInnerChart = function (oMDCChart, oMDCChartItem) {
|
|
@@ -474,4 +477,4 @@ sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/fe/core/CommonUtils",
|
|
|
474
477
|
|
|
475
478
|
return ChartDelegate;
|
|
476
479
|
}, false);
|
|
477
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNoYXJ0RGVsZWdhdGUudHMiXSwibmFtZXMiOlsiQ2hhcnRJdGVtUm9sZVR5cGUiLCJNRENMaWIiLCJDaGFydERlbGVnYXRlIiwiT2JqZWN0IiwiYXNzaWduIiwiQmFzZUNoYXJ0RGVsZWdhdGUiLCJfc2V0Q2hhcnROb0RhdGFUZXh0Iiwib0NoYXJ0Iiwib0JpbmRpbmdJbmZvIiwic05vRGF0YUtleSIsIm9DaGFydEZpbHRlckluZm8iLCJDaGFydFV0aWxzIiwiZ2V0QWxsRmlsdGVySW5mbyIsInN1ZmZpeFJlc291cmNlS2V5IiwicGF0aCIsInN0YXJ0c1dpdGgiLCJzdWJzdHIiLCJfZ2V0Tm9EYXRhVGV4dFdpdGhGaWx0ZXJzIiwiZGF0YSIsImdldEZpbHRlciIsInNlYXJjaCIsImZpbHRlcnMiLCJsZW5ndGgiLCJnZXRNb2RlbCIsImdldFJlc291cmNlQnVuZGxlIiwidGhlbiIsIm9SZXNvdXJjZUJ1bmRsZSIsInNldE5vRGF0YVRleHQiLCJDb21tb25VdGlscyIsImdldFRyYW5zbGF0ZWRUZXh0IiwiY2F0Y2giLCJlcnJvciIsIkxvZyIsIl9oYW5kbGVQcm9wZXJ0eSIsIm9NRENDaGFydCIsIm1FbnRpdHlTZXRBbm5vdGF0aW9ucyIsIm1Lbm93bkFnZ3JlZ2F0YWJsZVByb3BzIiwibUN1c3RvbUFnZ3JlZ2F0ZXMiLCJhUHJvcGVydGllcyIsInNDcml0aWNhbGl0eSIsIm9BcHBseVN1cHBvcnRlZCIsIkNvbW1vbkhlbHBlciIsInBhcnNlQ3VzdG9tRGF0YSIsIm9Tb3J0UmVzdHJpY3Rpb25zIiwib1NvcnRSZXN0cmljdGlvbnNJbmZvIiwiT0RhdGFNZXRhTW9kZWxVdGlsIiwiZ2V0U29ydFJlc3RyaWN0aW9uc0luZm8iLCJvRmlsdGVyUmVzdHJpY3Rpb25zIiwib0ZpbHRlclJlc3RyaWN0aW9uc0luZm8iLCJnZXRGaWx0ZXJSZXN0cmljdGlvbnNJbmZvIiwib09iaiIsImdldE9iamVjdCIsImdldFBhdGgiLCJzS2V5Iiwib01ldGFNb2RlbCIsIiRraW5kIiwiJGlzQ29sbGVjdGlvbiIsIm9Qcm9wZXJ0eUFubm90YXRpb25zIiwic1BhdGgiLCJnZXRNZXRhQ29udGV4dCIsImFHcm91cGFibGVQcm9wZXJ0aWVzIiwiR3JvdXBhYmxlUHJvcGVydGllcyIsImFBZ2dyZWdhdGFibGVQcm9wZXJ0aWVzIiwiQWdncmVnYXRhYmxlUHJvcGVydGllcyIsImJHcm91cGFibGUiLCJiQWdncmVnYXRhYmxlIiwiaSIsIiRQcm9wZXJ0eVBhdGgiLCJqIiwiUHJvcGVydHkiLCJhQWdncmVnYXRlUHJvcGVydGllcyIsIl9jcmVhdGVQcm9wZXJ0eUluZm9zRm9yQWdncmVnYXRhYmxlIiwiZm9yRWFjaCIsIm9BZ2dyZWdhdGVQcm9wZXJ0eSIsInB1c2giLCJzTmFtZSIsInNUZXh0UHJvcGVydHkiLCIkUGF0aCIsImJJc05hdmlnYXRpb25UZXh0IiwiaW5kZXhPZiIsIm5hbWUiLCJwcm9wZXJ0eVBhdGgiLCJsYWJlbCIsInNvcnRhYmxlIiwiX2dldFNvcnRhYmxlIiwiZmlsdGVyYWJsZSIsImdyb3VwYWJsZSIsImFnZ3JlZ2F0YWJsZSIsIm1heENvbmRpdGlvbnMiLCJpc011bHRpVmFsdWVGaWx0ZXJFeHByZXNzaW9uIiwicHJvcGVydHlJbmZvIiwic29ydEtleSIsInJvbGUiLCJjYXRlZ29yeSIsImNyaXRpY2FsaXR5IiwidGV4dFByb3BlcnR5IiwidGV4dEZvcm1hdHRlciIsIl9mb3JtYXRUZXh0Iiwib1ZhbHVlMSIsIm9WYWx1ZTIiLCJvVGV4dEFycmFuZ2VtZW50QW5ub3RhdGlvbiIsIiRFbnVtTWVtYmVyIiwidXBkYXRlQmluZGluZ0luZm8iLCJvRmlsdGVyIiwic2FwIiwidWkiLCJnZXRDb3JlIiwiYnlJZCIsIm1Db25kaXRpb25zIiwiZ2V0Q29uZGl0aW9ucyIsInNvcnRlciIsImdldFNvcnRlcnMiLCJvSW5uZXJDaGFydCIsImdldENvbnRyb2xEZWxlZ2F0ZSIsImdldElubmVyQ2hhcnQiLCJvRmlsdGVySW5mbyIsImdldENoYXJ0U2VsZWN0aW9uc0V4aXN0IiwiZ2V0RmlsdGVyQmFyRmlsdGVySW5mbyIsInNQYXJhbWV0ZXJQYXRoIiwiRGVsZWdhdGVVdGlsIiwiZ2V0UGFyYW1ldGVyc0luZm8iLCJvSW5mbyIsIkZpbHRlclV0aWxzIiwiZ2V0RmlsdGVySW5mbyIsImVuYWJsZVNlYXJjaCIsInBhcmFtZXRlcnMiLCIkc2VhcmNoIiwibm9ybWFsaXplU2VhcmNoVGVybSIsIl9jaGVja0FuZEFkZERyYWZ0RmlsdGVyIiwiZmV0Y2hQcm9wZXJ0aWVzIiwib01vZGVsIiwiX2dldE1vZGVsIiwicENyZWF0ZVByb3BlcnR5SW5mb3MiLCJQcm9taXNlIiwicmVzb2x2ZSIsImF0dGFjaE1vZGVsQ29udGV4dENoYW5nZSIsInJlc29sdmVyIiwib25Nb2RlbENvbnRleHRDaGFuZ2UiLCJfY3JlYXRlUHJvcGVydHlJbmZvcyIsIm9FdmVudCIsIm9EYXRhIiwiZ2V0U291cmNlIiwiZGV0YWNoTW9kZWxDb250ZXh0Q2hhbmdlIiwic0VudGl0eVNldFBhdGgiLCJnZXRNZXRhTW9kZWwiLCJhbGwiLCJyZXF1ZXN0T2JqZWN0IiwiYVJlc3VsdHMiLCJvRW50aXR5VHlwZSIsInNBbm5vIiwiYVByb3BlcnR5UHJvbWlzZSIsInNBbm5vS2V5IiwicmVwbGFjZSIsImFBbm5vIiwic3BsaXQiLCJhRGltZW5zaW9ucyIsImFNZWFzdXJlcyIsImtleXMiLCJhQ2hhcnRJdGVtcyIsImdldEl0ZW1zIiwia2V5IiwiaXNBIiwiZ2V0S2V5IiwiZmlsdGVyIiwidmFsIiwibVR5cGVBZ2dyZWdhdGFibGVQcm9wcyIsInNBZ2dyZWdhdGFibGUiLCJzUHJvcEtleSIsImFnZ3JlZ2F0aW9uTWV0aG9kIiwiTWV0YU1vZGVsVXRpbCIsImZldGNoQ3JpdGljYWxpdHkiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsImJpbmQiLCJheGlzMSIsImRhdGFwb2ludCIsInNDdXN0b20iLCJvSXRlbSIsIm1lcmdlIiwicmViaW5kIiwic1NlYXJjaCIsIm9DaGFydEJpbmRpbmciLCJnZXRCaW5kaW5nIiwic3VzcGVuZCIsInNldEFnZ3JlZ2F0aW9uIiwib0lubmVyQ2hhcnREZWxlZ2F0ZSIsIm9uQmVmb3JlUmVuZGVyaW5nIiwicmVzdW1lIiwicmVtb3ZlRXZlbnREZWxlZ2F0ZSIsImFkZEV2ZW50RGVsZWdhdGUiLCJfc2V0Q2hhcnQiLCJvQ2hhcnRBUEkiLCJnZXRQYXJlbnQiLCJzZXRWaXpQcm9wZXJ0aWVzIiwiZGV0YWNoU2VsZWN0RGF0YSIsImhhbmRsZVNlbGVjdGlvbkNoYW5nZSIsImRldGFjaERlc2VsZWN0RGF0YSIsImRldGFjaERyaWxsZWRVcCIsImF0dGFjaFNlbGVjdERhdGEiLCJhdHRhY2hEZXNlbGVjdERhdGEiLCJhdHRhY2hEcmlsbGVkVXAiLCJzZXRTZWxlY3Rpb25Nb2RlIiwiZ2V0UGF5bG9hZCIsInNlbGVjdGlvbk1vZGUiLCJ0b1VwcGVyQ2FzZSIsIl9nZXRCaW5kaW5nSW5mbyIsIl9nZXRCaW5kaW5nSW5mb0Zyb21TdGF0ZSIsIm9NZXRhZGF0YUluZm8iLCJnZXREZWxlZ2F0ZSIsInBheWxvYWQiLCJzVGFyZ2V0Q29sbGVjdGlvblBhdGgiLCJjb250ZXh0UGF0aCIsIm9QYXJhbXMiLCJlbnRpdHlTZXQiLCJ1c2VCYXRjaFJlcXVlc3RzIiwicHJvdmlkZUdyYW5kVG90YWxzIiwicHJvdmlkZVRvdGFsUmVzdWx0U2l6ZSIsIm5vUGFnaW5nIiwicmVtb3ZlSXRlbUZyb21Jbm5lckNoYXJ0Iiwib01EQ0NoYXJ0SXRlbSIsImNhbGwiLCJnZXRUeXBlIiwiX2dldENoYXJ0IiwiZmlyZURlc2VsZWN0RGF0YSIsImJJc1RyYW5zQWdncmVnYXRlIiwiRmlsdGVyIiwiRmlsdGVyT3BlcmF0b3IiLCJFUSJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7OztBQWNBLE1BQU1BLGlCQUFpQixHQUFJQyxNQUFELENBQWdCRCxpQkFBMUMsQyxDQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxNQUFNRSxhQUFhLEdBQUdD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Q3RHLFFBQUlBLGlCQUFKLEVBQXVCO0FBQ3RCLFVBQUk3TCxTQUFTLENBQUNoQixJQUFWLENBQWUsZ0JBQWYsTUFBcUMsTUFBekMsRUFBaUQ7QUFDaEQsZUFBTyxLQUFQO0FBQ0EsT0FGRCxNQUVPO0FBQ04sZUFBT3lCLGlCQUFpQixHQUFHQSxpQkFBaUIsQ0FBQ3dDLFFBQXJCLEdBQWdDLElBQXhEO0FBQ0E7QUFDRDs7QUFDRCxXQUFPeEMsaUJBQWlCLEdBQUdBLGlCQUFpQixDQUFDd0MsUUFBckIsR0FBZ0MsSUFBeEQ7QUFDQSxHQVREOztBQVVBakYsRUFBQUEsYUFBYSxDQUFDOEgsdUJBQWQsR0FBd0MsVUFBVXpILE1BQVYsRUFBdUJDLFlBQXZCLEVBQTBDO0FBQ2pGLFFBQUlELE1BQU0sQ0FBQ1csSUFBUCxDQUFZLGdCQUFaLE1BQWtDLE1BQXRDLEVBQThDO0FBQzdDLFVBQUksQ0FBQ1YsWUFBTCxFQUFtQjtBQUNsQkEsUUFBQUEsWUFBWSxHQUFHLEVBQWY7QUFDQTs7QUFDRCxVQUFJLENBQUNBLFlBQVksQ0FBQ2EsT0FBbEIsRUFBMkI7QUFDMUJiLFFBQUFBLFlBQVksQ0FBQ2EsT0FBYixHQUF1QixFQUF2QjtBQUNBOztBQUNEYixNQUFBQSxZQUFZLENBQUNhLE9BQWIsQ0FBcUJxRCxJQUFyQixDQUEwQixJQUFJc0osTUFBSixDQUFXLGdCQUFYLEVBQTZCQyxjQUFjLENBQUNDLEVBQTVDLEVBQWdELElBQWhELENBQTFCO0FBQ0E7QUFDRCxHQVZEOztTQVllaE8sYSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlc291cmNlQnVuZGxlIGZyb20gXCJzYXAvYmFzZS9pMThuL1Jlc291cmNlQnVuZGxlXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBtZXJnZSBmcm9tIFwic2FwL2Jhc2UvdXRpbC9tZXJnZVwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IENoYXJ0VXRpbHMgZnJvbSBcInNhcC9mZS9tYWNyb3MvY2hhcnQvQ2hhcnRVdGlsc1wiO1xuaW1wb3J0IENvbW1vbkhlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9Db21tb25IZWxwZXJcIjtcbmltcG9ydCBGaWx0ZXJVdGlscyBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXIvRmlsdGVyVXRpbHNcIjtcbmltcG9ydCBNZXRhTW9kZWxVdGlsIGZyb20gXCJzYXAvZmUvbWFjcm9zL09EYXRhTWV0YU1vZGVsVXRpbFwiO1xuaW1wb3J0IENoYXJ0IGZyb20gXCJzYXAvdWkvbWRjL0NoYXJ0XCI7XG5pbXBvcnQgTURDTGliIGZyb20gXCJzYXAvdWkvbWRjL2xpYnJhcnlcIjtcbmltcG9ydCBPRGF0YU1ldGFNb2RlbFV0aWwgZnJvbSBcInNhcC91aS9tZGMvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxVdGlsXCI7XG5pbXBvcnQgRGVsZWdhdGVVdGlsIGZyb20gXCJzYXAvdWkvbWRjL29kYXRhL3Y0L3V0aWwvRGVsZWdhdGVVdGlsXCI7XG5pbXBvcnQgQmFzZUNoYXJ0RGVsZWdhdGUgZnJvbSBcInNhcC91aS9tZGMvb2RhdGEvdjQvdml6Q2hhcnQvQ2hhcnREZWxlZ2F0ZVwiO1xuaW1wb3J0IEZpbHRlciBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlclwiO1xuaW1wb3J0IEZpbHRlck9wZXJhdG9yIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyT3BlcmF0b3JcIjtcblxuY29uc3QgQ2hhcnRJdGVtUm9sZVR5cGUgPSAoTURDTGliIGFzIGFueSkuQ2hhcnRJdGVtUm9sZVR5cGU7XG4vLyAvKipcbi8vICAqIEhlbHBlciBjbGFzcyBmb3Igc2FwLnVpLm1kYy5DaGFydC5cbi8vICAqIDxoMz48Yj5Ob3RlOjwvYj48L2gzPlxuLy8gICogVGhlIGNsYXNzIGlzIGV4cGVyaW1lbnRhbCBhbmQgdGhlIEFQSS9iZWhhdmlvdXIgaXMgbm90IGZpbmFsaXNlZFxuLy8gICogYW5kIGhlbmNlIHRoaXMgc2hvdWxkIG5vdCBiZSB1c2VkIGZvciBwcm9kdWN0aXZlIHVzYWdlLlxuLy8gICogRXNwZWNpYWxseSB0aGlzIGNsYXNzIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciB0aGUgRkUgc2NlbmFyaW8sXG4vLyAgKiBoZXJlIHdlIHNoYWxsIHVzZSBzYXAuZmUubWFjcm9zLkNoYXJ0RGVsZWdhdGUgdGhhdCBpcyBlc3BlY2lhbGx5IHRhaWxvcmVkIGZvciBWNFxuLy8gICogbWV0YSBtb2RlbFxuLy8gICpcbi8vICAqIEBhdXRob3IgU0FQIFNFXG4vLyAgKiBAcHJpdmF0ZVxuLy8gICogQGV4cGVyaW1lbnRhbFxuLy8gICogQHNpbmNlIDEuNjJcbi8vICAqIEBhbGlhcyBzYXAuZmUubWFjcm9zLkNoYXJ0RGVsZWdhdGVcbi8vICAqL1xuY29uc3QgQ2hhcnREZWxlZ2F0ZSA9IE9iamVjdC5hc3NpZ24oe30sIEJhc2VDaGFydERlbGVnYXRlKTtcblxuQ2hhcnREZWxlZ2F0ZS5fc2V0Q2hhcnROb0RhdGFUZXh0ID0gZnVuY3Rpb24gKG9DaGFydDogYW55LCBvQmluZGluZ0luZm86IGFueSkge1xuXHRsZXQgc05vRGF0YUtleSA9IFwiXCI7XG5cdGNvbnN0IG9DaGFydEZpbHRlckluZm8gPSBDaGFydFV0aWxzLmdldEFsbEZpbHRlckluZm8ob0NoYXJ0KSxcblx0XHRzdWZmaXhSZXNvdXJjZUtleSA9IG9CaW5kaW5nSW5mby5wYXRoLnN0YXJ0c1dpdGgoXCIvXCIpID8gb0JpbmRpbmdJbmZvLnBhdGguc3Vic3RyKDEpIDogb0JpbmRpbmdJbmZvLnBhdGg7XG5cdGNvbnN0IF9nZXROb0RhdGFUZXh0V2l0aEZpbHRlcnMgPSBmdW5jdGlvbiAoKSB7XG5cdFx0aWYgKG9DaGFydC5kYXRhKFwibXVsdGlWaWV3c1wiKSkge1xuXHRcdFx0cmV0dXJuIFwiTV9UQUJMRV9BTkRfQ0hBUlRfTk9fREFUQV9URVhUX01VTFRJX1ZJRVdcIjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIFwiVF9UQUJMRV9BTkRfQ0hBUlRfTk9fREFUQV9URVhUX1dJVEhfRklMVEVSXCI7XG5cdFx0fVxuXHR9O1xuXHRpZiAob0NoYXJ0LmdldEZpbHRlcigpKSB7XG5cdFx0aWYgKG9DaGFydEZpbHRlckluZm8uc2VhcmNoIHx8IChvQ2hhcnRGaWx0ZXJJbmZvLmZpbHRlcnMgJiYgb0NoYXJ0RmlsdGVySW5mby5maWx0ZXJzLmxlbmd0aCkpIHtcblx0XHRcdHNOb0RhdGFLZXkgPSBfZ2V0Tm9EYXRhVGV4dFdpdGhGaWx0ZXJzKCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHNOb0RhdGFLZXkgPSBcIlRfVEFCTEVfQU5EX0NIQVJUX05PX0RBVEFfVEVYVFwiO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRpZiAob0NoYXJ0RmlsdGVySW5mby5zZWFyY2ggfHwgKG9DaGFydEZpbHRlckluZm8uZmlsdGVycyAmJiBvQ2hhcnRGaWx0ZXJJbmZvLmZpbHRlcnMubGVuZ3RoKSkge1xuXHRcdFx0c05vRGF0YUtleSA9IF9nZXROb0RhdGFUZXh0V2l0aEZpbHRlcnMoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c05vRGF0YUtleSA9IFwiTV9UQUJMRV9BTkRfQ0hBUlRfTk9fRklMVEVSU19OT19EQVRBX1RFWFRcIjtcblx0XHR9XG5cdH1cblx0cmV0dXJuIChvQ2hhcnQuZ2V0TW9kZWwoXCJzYXAuZmUuaTE4blwiKS5nZXRSZXNvdXJjZUJ1bmRsZSgpIGFzIFByb21pc2U8UmVzb3VyY2VCdW5kbGU+KVxuXHRcdC50aGVuKGZ1bmN0aW9uIChvUmVzb3VyY2VCdW5kbGUpIHtcblx0XHRcdG9DaGFydC5zZXROb0RhdGFUZXh0KENvbW1vblV0aWxzLmdldFRyYW5zbGF0ZWRUZXh0KHNOb0RhdGFLZXksIG9SZXNvdXJjZUJ1bmRsZSwgbnVsbCwgc3VmZml4UmVzb3VyY2VLZXkpKTtcblx0XHR9KVxuXHRcdC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcblx0XHRcdExvZy5lcnJvcihlcnJvcik7XG5cdFx0fSk7XG59O1xuXG5DaGFydERlbGVnYXRlLl9oYW5kbGVQcm9wZXJ0eSA9IGZ1bmN0aW9uIChcblx0b01EQ0NoYXJ0OiBDaGFydCxcblx0bUVudGl0eVNldEFubm90YXRpb25zOiBhbnksXG5cdG1Lbm93bkFnZ3JlZ2F0YWJsZVByb3BzOiBhbnksXG5cdG1DdXN0b21BZ2dyZWdhdGVzOiBhbnksXG5cdGFQcm9wZXJ0aWVzOiBhbnlbXSxcblx0c0NyaXRpY2FsaXR5OiBzdHJpbmdcbikge1xuXHRjb25zdCBvQXBwbHlTdXBwb3J0ZWQgPSBDb21tb25IZWxwZXIucGFyc2VDdXN0b21EYXRhKG9NRENDaGFydC5kYXRhKFwiYXBwbHlTdXBwb3J0ZWRcIikpO1xuXHRjb25zdCBvU29ydFJlc3RyaWN0aW9ucyA9IG1FbnRpdHlTZXRBbm5vdGF0aW9uc1tcIkBPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLlNvcnRSZXN0cmljdGlvbnNcIl0gfHwge307XG5cdGNvbnN0IG9Tb3J0UmVzdHJpY3Rpb25zSW5mbyA9IE9EYXRhTWV0YU1vZGVsVXRpbC5nZXRTb3J0UmVzdHJpY3Rpb25zSW5mbyhvU29ydFJlc3RyaWN0aW9ucyk7XG5cdGNvbnN0IG9GaWx0ZXJSZXN0cmljdGlvbnMgPSBtRW50aXR5U2V0QW5ub3RhdGlvbnNbXCJAT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5GaWx0ZXJSZXN0cmljdGlvbnNcIl07XG5cdGNvbnN0IG9GaWx0ZXJSZXN0cmljdGlvbnNJbmZvID0gT0RhdGFNZXRhTW9kZWxVdGlsLmdldEZpbHRlclJlc3RyaWN0aW9uc0luZm8ob0ZpbHRlclJlc3RyaWN0aW9ucyk7XG5cdGNvbnN0IG9PYmogPSB0aGlzLmdldE1vZGVsKCkuZ2V0T2JqZWN0KHRoaXMuZ2V0UGF0aCgpKTtcblx0Y29uc3Qgc0tleSA9IHRoaXMuZ2V0TW9kZWwoKS5nZXRPYmplY3QodGhpcy5nZXRQYXRoKCkgKyBcIkBzYXB1aS5uYW1lXCIpO1xuXHRjb25zdCBvTWV0YU1vZGVsID0gdGhpcy5nZXRNb2RlbCgpO1xuXHRpZiAob09iaiAmJiBvT2JqLiRraW5kID09PSBcIlByb3BlcnR5XCIpIHtcblx0XHQvLyBpZ25vcmUgKGFzIGZvciBub3cpIGFsbCBjb21wbGV4IHByb3BlcnRpZXNcblx0XHQvLyBub3QgY2xlYXIgaWYgdGhleSBtaWdodCBiZSBuZXN0aW5nIChjb21wbGV4IGluIGNvbXBsZXgpXG5cdFx0Ly8gbm90IGNsZWFyIGhvdyB0aGV5IGFyZSByZXByZXNlbnRlZCBpbiBub24tZmlsdGVyYWJsZSBhbm5vdGF0aW9uXG5cdFx0Ly8gZXRjLlxuXHRcdGlmIChvT2JqLiRpc0NvbGxlY3Rpb24pIHtcblx0XHRcdC8vTG9nLndhcm5pbmcoXCJDb21wbGV4IHByb3BlcnR5IHdpdGggdHlwZSBcIiArIG9PYmouJFR5cGUgKyBcIiBoYXMgYmVlbiBpZ25vcmVkXCIpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IG9Qcm9wZXJ0eUFubm90YXRpb25zID0gb01ldGFNb2RlbC5nZXRPYmplY3QodGhpcy5nZXRQYXRoKCkgKyBcIkBcIik7XG5cdFx0Y29uc3Qgc1BhdGggPSBvTWV0YU1vZGVsLmdldE9iamVjdChcIkBzYXB1aS5uYW1lXCIsIG9NZXRhTW9kZWwuZ2V0TWV0YUNvbnRleHQodGhpcy5nZXRQYXRoKCkpKTtcblxuXHRcdGNvbnN0IGFHcm91cGFibGVQcm9wZXJ0aWVzID0gb0FwcGx5U3VwcG9ydGVkICYmIG9BcHBseVN1cHBvcnRlZC5Hcm91cGFibGVQcm9wZXJ0aWVzO1xuXHRcdGNvbnN0IGFBZ2dyZWdhdGFibGVQcm9wZXJ0aWVzID0gb0FwcGx5U3VwcG9ydGVkICYmIG9BcHBseVN1cHBvcnRlZC5BZ2dyZWdhdGFibGVQcm9wZXJ0aWVzO1xuXHRcdGxldCBiR3JvdXBhYmxlID0gZmFsc2UsXG5cdFx0XHRiQWdncmVnYXRhYmxlID0gZmFsc2U7XG5cdFx0aWYgKGFHcm91cGFibGVQcm9wZXJ0aWVzICYmIGFHcm91cGFibGVQcm9wZXJ0aWVzLmxlbmd0aCkge1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhR3JvdXBhYmxlUHJvcGVydGllcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRpZiAoYUdyb3VwYWJsZVByb3BlcnRpZXNbaV0uJFByb3BlcnR5UGF0aCA9PT0gc1BhdGgpIHtcblx0XHRcdFx0XHRiR3JvdXBhYmxlID0gdHJ1ZTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoYUFnZ3JlZ2F0YWJsZVByb3BlcnRpZXMgJiYgYUFnZ3JlZ2F0YWJsZVByb3BlcnRpZXMubGVuZ3RoKSB7XG5cdFx0XHRmb3IgKGxldCBqID0gMDsgaiA8IGFBZ2dyZWdhdGFibGVQcm9wZXJ0aWVzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdGlmIChhQWdncmVnYXRhYmxlUHJvcGVydGllc1tqXS5Qcm9wZXJ0eS4kUHJvcGVydHlQYXRoID09PSBzUGF0aCkge1xuXHRcdFx0XHRcdGJBZ2dyZWdhdGFibGUgPSB0cnVlO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmICghYUdyb3VwYWJsZVByb3BlcnRpZXMgfHwgKGFHcm91cGFibGVQcm9wZXJ0aWVzICYmICFhR3JvdXBhYmxlUHJvcGVydGllcy5sZW5ndGgpKSB7XG5cdFx0XHRiR3JvdXBhYmxlID0gb1Byb3BlcnR5QW5ub3RhdGlvbnNbXCJAT3JnLk9EYXRhLkFnZ3JlZ2F0aW9uLlYxLkdyb3VwYWJsZVwiXTtcblx0XHR9XG5cdFx0aWYgKCFhQWdncmVnYXRhYmxlUHJvcGVydGllcyB8fCAoYUFnZ3JlZ2F0YWJsZVByb3BlcnRpZXMgJiYgIWFBZ2dyZWdhdGFibGVQcm9wZXJ0aWVzLmxlbmd0aCkpIHtcblx0XHRcdGJBZ2dyZWdhdGFibGUgPSBvUHJvcGVydHlBbm5vdGF0aW9uc1tcIkBPcmcuT0RhdGEuQWdncmVnYXRpb24uVjEuQWdncmVnYXRhYmxlXCJdO1xuXHRcdH1cblxuXHRcdC8vUmlnaHQgbm93OiBza2lwIHRoZW0sIHNpbmNlIHdlIGNhbid0IGNyZWF0ZSBhIGNoYXJ0IGZyb20gaXRcblx0XHRpZiAoIWJHcm91cGFibGUgJiYgIWJBZ2dyZWdhdGFibGUpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoYkFnZ3JlZ2F0YWJsZSkge1xuXHRcdFx0Y29uc3QgYUFnZ3JlZ2F0ZVByb3BlcnRpZXMgPSBDaGFydERlbGVnYXRlLl9jcmVhdGVQcm9wZXJ0eUluZm9zRm9yQWdncmVnYXRhYmxlKFxuXHRcdFx0XHRvTURDQ2hhcnQsXG5cdFx0XHRcdHNLZXksXG5cdFx0XHRcdG9Qcm9wZXJ0eUFubm90YXRpb25zLFxuXHRcdFx0XHRvRmlsdGVyUmVzdHJpY3Rpb25zSW5mbyxcblx0XHRcdFx0b1NvcnRSZXN0cmljdGlvbnNJbmZvLFxuXHRcdFx0XHRtS25vd25BZ2dyZWdhdGFibGVQcm9wcyxcblx0XHRcdFx0bUN1c3RvbUFnZ3JlZ2F0ZXNcblx0XHRcdCk7XG5cdFx0XHRhQWdncmVnYXRlUHJvcGVydGllcy5mb3JFYWNoKGZ1bmN0aW9uIChvQWdncmVnYXRlUHJvcGVydHk6IGFueSkge1xuXHRcdFx0XHRhUHJvcGVydGllcy5wdXNoKG9BZ2dyZWdhdGVQcm9wZXJ0eSk7XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRpZiAoYkdyb3VwYWJsZSkge1xuXHRcdFx0Y29uc3Qgc05hbWUgPSBzS2V5IHx8IFwiXCIsXG5cdFx0XHRcdHNUZXh0UHJvcGVydHkgPSBvUHJvcGVydHlBbm5vdGF0aW9uc1tcIkBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVGV4dFwiXVxuXHRcdFx0XHRcdD8gb1Byb3BlcnR5QW5ub3RhdGlvbnNbXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlRleHRcIl0uJFBhdGhcblx0XHRcdFx0XHQ6IG51bGw7XG5cdFx0XHRsZXQgYklzTmF2aWdhdGlvblRleHQgPSBmYWxzZTtcblx0XHRcdGlmIChzTmFtZSAmJiBzTmFtZS5pbmRleE9mKFwiL1wiKSA+IC0xKSB7XG5cdFx0XHRcdExvZy5lcnJvcihcIiRleHBhbmQgaXMgbm90IHlldCBzdXBwb3J0ZWQuIFByb3BlcnR5OiBcIiArIHNOYW1lICsgXCIgZnJvbSBhbiBhc3NvY2lhdGlvbiBjYW5ub3QgYmUgdXNlZFwiKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHNUZXh0UHJvcGVydHkgJiYgc1RleHRQcm9wZXJ0eS5pbmRleE9mKFwiL1wiKSA+IC0xKSB7XG5cdFx0XHRcdExvZy5lcnJvcihcIiRleHBhbmQgaXMgbm90IHlldCBzdXBwb3J0ZWQuIFRleHQgUHJvcGVydHk6IFwiICsgc1RleHRQcm9wZXJ0eSArIFwiIGZyb20gYW4gYXNzb2NpYXRpb24gY2Fubm90IGJlIHVzZWRcIik7XG5cdFx0XHRcdGJJc05hdmlnYXRpb25UZXh0ID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdGFQcm9wZXJ0aWVzLnB1c2goe1xuXHRcdFx0XHRuYW1lOiBzS2V5LFxuXHRcdFx0XHRwcm9wZXJ0eVBhdGg6IHNLZXksXG5cdFx0XHRcdGxhYmVsOiBvUHJvcGVydHlBbm5vdGF0aW9uc1tcIkBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuTGFiZWxcIl0gfHwgc0tleSxcblx0XHRcdFx0c29ydGFibGU6IENoYXJ0RGVsZWdhdGUuX2dldFNvcnRhYmxlKG9NRENDaGFydCwgb1NvcnRSZXN0cmljdGlvbnNJbmZvW3NLZXldLCBmYWxzZSksXG5cdFx0XHRcdGZpbHRlcmFibGU6IG9GaWx0ZXJSZXN0cmljdGlvbnNJbmZvW3NLZXldID8gb0ZpbHRlclJlc3RyaWN0aW9uc0luZm9bc0tleV0uZmlsdGVyYWJsZSA6IHRydWUsXG5cdFx0XHRcdGdyb3VwYWJsZTogdHJ1ZSxcblx0XHRcdFx0YWdncmVnYXRhYmxlOiBmYWxzZSxcblx0XHRcdFx0bWF4Q29uZGl0aW9uczogT0RhdGFNZXRhTW9kZWxVdGlsLmlzTXVsdGlWYWx1ZUZpbHRlckV4cHJlc3Npb24ob0ZpbHRlclJlc3RyaWN0aW9uc0luZm8ucHJvcGVydHlJbmZvW3NLZXldKSA/IC0xIDogMSxcblx0XHRcdFx0c29ydEtleTogc0tleSxcblx0XHRcdFx0cm9sZTogQ2hhcnRJdGVtUm9sZVR5cGUuY2F0ZWdvcnksIC8vc3RhbmRhcmQsIG5vcm1hbGx5IHRoaXMgc2hvdWxkIGJlIGludGVycHJldGVkIGZyb20gVUkuQ2hhcnQgYW5ub3RhdGlvblxuXHRcdFx0XHRjcml0aWNhbGl0eTogc0NyaXRpY2FsaXR5LCAvL1RvIGJlIGltcGxlbWVudGVkIGJ5IEZFXG5cdFx0XHRcdHRleHRQcm9wZXJ0eTpcblx0XHRcdFx0XHQhYklzTmF2aWdhdGlvblRleHQgJiYgb1Byb3BlcnR5QW5ub3RhdGlvbnNbXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlRleHRcIl1cblx0XHRcdFx0XHRcdD8gb1Byb3BlcnR5QW5ub3RhdGlvbnNbXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlRleHRcIl0uJFBhdGhcblx0XHRcdFx0XHRcdDogbnVsbCwgLy9UbyBiZSBpbXBsZW1lbnRlZCBieSBGRVxuXHRcdFx0XHR0ZXh0Rm9ybWF0dGVyOiBvUHJvcGVydHlBbm5vdGF0aW9uc1tcIkBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVGV4dEBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5UZXh0QXJyYW5nZW1lbnRcIl1cblx0XHRcdH0pO1xuXHRcdH1cblx0fVxufTtcblxuQ2hhcnREZWxlZ2F0ZS5fZm9ybWF0VGV4dCA9IGZ1bmN0aW9uIChvVmFsdWUxOiBhbnksIG9WYWx1ZTI6IGFueSkge1xuXHRjb25zdCBvVGV4dEFycmFuZ2VtZW50QW5ub3RhdGlvbiA9IHRoaXMudGV4dEZvcm1hdHRlcjtcblx0aWYgKG9UZXh0QXJyYW5nZW1lbnRBbm5vdGF0aW9uLiRFbnVtTWVtYmVyID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlRleHRBcnJhbmdlbWVudFR5cGUvVGV4dEZpcnN0XCIpIHtcblx0XHRyZXR1cm4gb1ZhbHVlMiArIFwiIChcIiArIG9WYWx1ZTEgKyBcIilcIjtcblx0fSBlbHNlIGlmIChvVGV4dEFycmFuZ2VtZW50QW5ub3RhdGlvbi4kRW51bU1lbWJlciA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5UZXh0QXJyYW5nZW1lbnRUeXBlL1RleHRMYXN0XCIpIHtcblx0XHRyZXR1cm4gb1ZhbHVlMSArIFwiIChcIiArIG9WYWx1ZTIgKyBcIilcIjtcblx0fSBlbHNlIGlmIChvVGV4dEFycmFuZ2VtZW50QW5ub3RhdGlvbi4kRW51bU1lbWJlciA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5UZXh0QXJyYW5nZW1lbnRUeXBlL1RleHRPbmx5XCIpIHtcblx0XHRyZXR1cm4gb1ZhbHVlMjtcblx0fVxuXHRyZXR1cm4gb1ZhbHVlMiA/IG9WYWx1ZTIgOiBvVmFsdWUxO1xufTtcblxuQ2hhcnREZWxlZ2F0ZS51cGRhdGVCaW5kaW5nSW5mbyA9IGZ1bmN0aW9uIChvQ2hhcnQ6IGFueSwgb0JpbmRpbmdJbmZvOiBhbnkpIHtcblx0Q2hhcnREZWxlZ2F0ZS5fc2V0Q2hhcnROb0RhdGFUZXh0KG9DaGFydCwgb0JpbmRpbmdJbmZvKTtcblxuXHRjb25zdCBvRmlsdGVyID0gc2FwLnVpLmdldENvcmUoKS5ieUlkKG9DaGFydC5nZXRGaWx0ZXIoKSkgYXMgYW55O1xuXHRpZiAob0ZpbHRlcikge1xuXHRcdGNvbnN0IG1Db25kaXRpb25zID0gb0ZpbHRlci5nZXRDb25kaXRpb25zKCk7XG5cblx0XHRpZiAobUNvbmRpdGlvbnMpIHtcblx0XHRcdGlmICghb0JpbmRpbmdJbmZvKSB7XG5cdFx0XHRcdG9CaW5kaW5nSW5mbyA9IHt9O1xuXHRcdFx0fVxuXHRcdFx0b0JpbmRpbmdJbmZvLnNvcnRlciA9IHRoaXMuZ2V0U29ydGVycyhvQ2hhcnQpO1xuXHRcdFx0Y29uc3Qgb0lubmVyQ2hhcnQgPSBvQ2hhcnQuZ2V0Q29udHJvbERlbGVnYXRlKCkuZ2V0SW5uZXJDaGFydChvQ2hhcnQpO1xuXHRcdFx0bGV0IG9GaWx0ZXJJbmZvO1xuXHRcdFx0aWYgKG9Jbm5lckNoYXJ0KSB7XG5cdFx0XHRcdC8vIGlmIHRoZSBhY3Rpb24gaXMgYSBkcmlsbCBkb3duLCBjaGFydCBzZWxlY3Rpb25zIG11c3QgYmUgY29uc2lkZXJlZFxuXHRcdFx0XHRpZiAoQ2hhcnRVdGlscy5nZXRDaGFydFNlbGVjdGlvbnNFeGlzdChvQ2hhcnQpKSB7XG5cdFx0XHRcdFx0b0ZpbHRlckluZm8gPSBDaGFydFV0aWxzLmdldEFsbEZpbHRlckluZm8ob0NoYXJ0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0b0ZpbHRlckluZm8gPSBvRmlsdGVySW5mbyA/IG9GaWx0ZXJJbmZvIDogQ2hhcnRVdGlscy5nZXRGaWx0ZXJCYXJGaWx0ZXJJbmZvKG9DaGFydCk7XG5cdFx0XHRpZiAob0ZpbHRlckluZm8pIHtcblx0XHRcdFx0b0JpbmRpbmdJbmZvLmZpbHRlcnMgPSBvRmlsdGVySW5mby5maWx0ZXJzO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBzUGFyYW1ldGVyUGF0aCA9IERlbGVnYXRlVXRpbC5nZXRQYXJhbWV0ZXJzSW5mbyhvRmlsdGVyLCBtQ29uZGl0aW9ucyk7XG5cdFx0XHRpZiAoc1BhcmFtZXRlclBhdGgpIHtcblx0XHRcdFx0b0JpbmRpbmdJbmZvLnBhdGggPSBzUGFyYW1ldGVyUGF0aDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBTZWFyY2hcblx0XHRjb25zdCBvSW5mbyA9IEZpbHRlclV0aWxzLmdldEZpbHRlckluZm8ob0ZpbHRlciwge30pO1xuXHRcdGNvbnN0IG9BcHBseVN1cHBvcnRlZCA9IENvbW1vbkhlbHBlci5wYXJzZUN1c3RvbURhdGEob0NoYXJ0LmRhdGEoXCJhcHBseVN1cHBvcnRlZFwiKSk7XG5cdFx0aWYgKG9BcHBseVN1cHBvcnRlZCAmJiBvQXBwbHlTdXBwb3J0ZWQuZW5hYmxlU2VhcmNoICYmIG9JbmZvLnNlYXJjaCkge1xuXHRcdFx0b0JpbmRpbmdJbmZvLnBhcmFtZXRlcnMuJHNlYXJjaCA9IENvbW1vblV0aWxzLm5vcm1hbGl6ZVNlYXJjaFRlcm0ob0luZm8uc2VhcmNoKTtcblx0XHR9IGVsc2UgaWYgKG9CaW5kaW5nSW5mby5wYXJhbWV0ZXJzLiRzZWFyY2gpIHtcblx0XHRcdGRlbGV0ZSBvQmluZGluZ0luZm8ucGFyYW1ldGVycy4kc2VhcmNoO1xuXHRcdH1cblx0fVxuXHRDaGFydERlbGVnYXRlLl9jaGVja0FuZEFkZERyYWZ0RmlsdGVyKG9DaGFydCwgb0JpbmRpbmdJbmZvKTtcbn07XG5cbkNoYXJ0RGVsZWdhdGUuZmV0Y2hQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKG9NRENDaGFydDogQ2hhcnQpIHtcblx0Y29uc3Qgb01vZGVsID0gdGhpcy5fZ2V0TW9kZWwob01EQ0NoYXJ0KTtcblx0bGV0IHBDcmVhdGVQcm9wZXJ0eUluZm9zO1xuXG5cdGlmICghb01vZGVsKSB7XG5cdFx0cENyZWF0ZVByb3BlcnR5SW5mb3MgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZTogYW55KSA9PiB7XG5cdFx0XHRvTURDQ2hhcnQuYXR0YWNoTW9kZWxDb250ZXh0Q2hhbmdlKFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0cmVzb2x2ZXI6IHJlc29sdmVcblx0XHRcdFx0fSxcblx0XHRcdFx0b25Nb2RlbENvbnRleHRDaGFuZ2UgYXMgYW55LFxuXHRcdFx0XHR0aGlzXG5cdFx0XHQpO1xuXHRcdH0pLnRoZW4oKG9Nb2RlbDogYW55KSA9PiB7XG5cdFx0XHRyZXR1cm4gdGhpcy5fY3JlYXRlUHJvcGVydHlJbmZvcyhvTURDQ2hhcnQsIG9Nb2RlbCk7XG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0cENyZWF0ZVByb3BlcnR5SW5mb3MgPSB0aGlzLl9jcmVhdGVQcm9wZXJ0eUluZm9zKG9NRENDaGFydCwgb01vZGVsKTtcblx0fVxuXG5cdHJldHVybiBwQ3JlYXRlUHJvcGVydHlJbmZvcy50aGVuKGZ1bmN0aW9uIChhUHJvcGVydGllczogYW55KSB7XG5cdFx0aWYgKG9NRENDaGFydC5kYXRhKSB7XG5cdFx0XHRvTURDQ2hhcnQuZGF0YShcIiRtZGNDaGFydFByb3BlcnR5SW5mb1wiLCBhUHJvcGVydGllcyk7XG5cdFx0fVxuXHRcdHJldHVybiBhUHJvcGVydGllcztcblx0fSk7XG59O1xuZnVuY3Rpb24gb25Nb2RlbENvbnRleHRDaGFuZ2UodGhpczogdHlwZW9mIENoYXJ0RGVsZWdhdGUsIG9FdmVudDogYW55LCBvRGF0YTogYW55KSB7XG5cdGNvbnN0IG9NRENDaGFydCA9IG9FdmVudC5nZXRTb3VyY2UoKTtcblx0Y29uc3Qgb01vZGVsID0gdGhpcy5fZ2V0TW9kZWwob01EQ0NoYXJ0KTtcblxuXHRpZiAob01vZGVsKSB7XG5cdFx0b01EQ0NoYXJ0LmRldGFjaE1vZGVsQ29udGV4dENoYW5nZShvbk1vZGVsQ29udGV4dENoYW5nZSk7XG5cdFx0b0RhdGEucmVzb2x2ZXIob01vZGVsKTtcblx0fVxufVxuQ2hhcnREZWxlZ2F0ZS5fY3JlYXRlUHJvcGVydHlJbmZvcyA9IGZ1bmN0aW9uIChvTURDQ2hhcnQ6IGFueSwgb01vZGVsOiBhbnkpIHtcblx0Y29uc3Qgc0VudGl0eVNldFBhdGggPSBcIi9cIiArIG9NRENDaGFydC5kYXRhKFwiZW50aXR5U2V0XCIpO1xuXHRjb25zdCBvTWV0YU1vZGVsID0gb01vZGVsLmdldE1ldGFNb2RlbCgpO1xuXG5cdHJldHVybiBQcm9taXNlLmFsbChbb01ldGFNb2RlbC5yZXF1ZXN0T2JqZWN0KHNFbnRpdHlTZXRQYXRoICsgXCIvXCIpLCBvTWV0YU1vZGVsLnJlcXVlc3RPYmplY3Qoc0VudGl0eVNldFBhdGggKyBcIkBcIildKS50aGVuKGZ1bmN0aW9uIChcblx0XHRhUmVzdWx0czogW2FueSwgYW55XVxuXHQpIHtcblx0XHRjb25zdCBhUHJvcGVydGllczogYW55W10gPSBbXTtcblx0XHRjb25zdCBvRW50aXR5VHlwZSA9IGFSZXN1bHRzWzBdLFxuXHRcdFx0bUVudGl0eVNldEFubm90YXRpb25zID0gYVJlc3VsdHNbMV07XG5cdFx0Y29uc3QgbUN1c3RvbUFnZ3JlZ2F0ZXMgPSBDb21tb25IZWxwZXIucGFyc2VDdXN0b21EYXRhKG9NRENDaGFydC5kYXRhKFwiY3VzdG9tQWdnXCIpKTtcblx0XHRsZXQgc0Fubm87XG5cdFx0Y29uc3QgYVByb3BlcnR5UHJvbWlzZSA9IFtdO1xuXHRcdGZvciAoY29uc3Qgc0Fubm9LZXkgaW4gbUVudGl0eVNldEFubm90YXRpb25zKSB7XG5cdFx0XHRpZiAoc0Fubm9LZXkuc3RhcnRzV2l0aChcIkBPcmcuT0RhdGEuQWdncmVnYXRpb24uVjEuQ3VzdG9tQWdncmVnYXRlXCIpKSB7XG5cdFx0XHRcdHNBbm5vID0gc0Fubm9LZXkucmVwbGFjZShcIkBPcmcuT0RhdGEuQWdncmVnYXRpb24uVjEuQ3VzdG9tQWdncmVnYXRlI1wiLCBcIlwiKTtcblx0XHRcdFx0Y29uc3QgYUFubm8gPSBzQW5uby5zcGxpdChcIkBcIik7XG5cblx0XHRcdFx0aWYgKGFBbm5vLmxlbmd0aCA9PSAyICYmIGFBbm5vWzFdID09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkxhYmVsXCIpIHtcblx0XHRcdFx0XHRtQ3VzdG9tQWdncmVnYXRlc1thQW5ub1swXV0gPSBtRW50aXR5U2V0QW5ub3RhdGlvbnNbc0Fubm9LZXldO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGNvbnN0IGFEaW1lbnNpb25zOiBhbnlbXSA9IFtdLFxuXHRcdFx0YU1lYXN1cmVzID0gW107XG5cdFx0aWYgKE9iamVjdC5rZXlzKG1DdXN0b21BZ2dyZWdhdGVzKS5sZW5ndGggPj0gMSkge1xuXHRcdFx0Y29uc3QgYUNoYXJ0SXRlbXMgPSBvTURDQ2hhcnQuZ2V0SXRlbXMoKTtcblx0XHRcdGZvciAoY29uc3Qga2V5IGluIGFDaGFydEl0ZW1zKSB7XG5cdFx0XHRcdGlmIChhQ2hhcnRJdGVtc1trZXldLmlzQShcInNhcC51aS5tZGMuY2hhcnQuRGltZW5zaW9uSXRlbVwiKSkge1xuXHRcdFx0XHRcdGFEaW1lbnNpb25zLnB1c2goYUNoYXJ0SXRlbXNba2V5XS5nZXRLZXkoKSk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYUNoYXJ0SXRlbXNba2V5XS5pc0EoXCJzYXAudWkubWRjLmNoYXJ0Lk1lYXN1cmVJdGVtXCIpKSB7XG5cdFx0XHRcdFx0YU1lYXN1cmVzLnB1c2goYUNoYXJ0SXRlbXNba2V5XS5nZXRLZXkoKSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChcblx0XHRcdFx0YU1lYXN1cmVzLmZpbHRlcihmdW5jdGlvbiAodmFsOiBhbnkpIHtcblx0XHRcdFx0XHRyZXR1cm4gYURpbWVuc2lvbnMuaW5kZXhPZih2YWwpICE9IC0xO1xuXHRcdFx0XHR9KS5sZW5ndGggPj0gMVxuXHRcdFx0KSB7XG5cdFx0XHRcdExvZy5lcnJvcihcIkRpbWVuc2lvbiBhbmQgTWVhc3VyZSBoYXMgdGhlIHNhbWVQcm9wZXJ0eSBDb25maWd1cmVkXCIpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGNvbnN0IG1UeXBlQWdncmVnYXRhYmxlUHJvcHMgPSBDb21tb25IZWxwZXIucGFyc2VDdXN0b21EYXRhKG9NRENDaGFydC5kYXRhKFwidHJhbnNBZ2dcIikpO1xuXHRcdGNvbnN0IG1Lbm93bkFnZ3JlZ2F0YWJsZVByb3BzOiBhbnkgPSB7fTtcblx0XHRmb3IgKGNvbnN0IHNBZ2dyZWdhdGFibGUgaW4gbVR5cGVBZ2dyZWdhdGFibGVQcm9wcykge1xuXHRcdFx0Y29uc3Qgc1Byb3BLZXkgPSBtVHlwZUFnZ3JlZ2F0YWJsZVByb3BzW3NBZ2dyZWdhdGFibGVdLnByb3BlcnR5UGF0aDtcblx0XHRcdG1Lbm93bkFnZ3JlZ2F0YWJsZVByb3BzW3NQcm9wS2V5XSA9IG1Lbm93bkFnZ3JlZ2F0YWJsZVByb3BzW3NQcm9wS2V5XSB8fCB7fTtcblx0XHRcdG1Lbm93bkFnZ3JlZ2F0YWJsZVByb3BzW3NQcm9wS2V5XVttVHlwZUFnZ3JlZ2F0YWJsZVByb3BzW3NBZ2dyZWdhdGFibGVdLmFnZ3JlZ2F0aW9uTWV0aG9kXSA9IHtcblx0XHRcdFx0bmFtZTogbVR5cGVBZ2dyZWdhdGFibGVQcm9wc1tzQWdncmVnYXRhYmxlXS5uYW1lLFxuXHRcdFx0XHRsYWJlbDogbVR5cGVBZ2dyZWdhdGFibGVQcm9wc1tzQWdncmVnYXRhYmxlXS5sYWJlbFxuXHRcdFx0fTtcblx0XHR9XG5cdFx0Zm9yIChjb25zdCBzS2V5IGluIG9FbnRpdHlUeXBlKSB7XG5cdFx0XHRpZiAoc0tleS5pbmRleE9mKFwiJFwiKSAhPT0gMCkge1xuXHRcdFx0XHRhUHJvcGVydHlQcm9taXNlLnB1c2goXG5cdFx0XHRcdFx0TWV0YU1vZGVsVXRpbC5mZXRjaENyaXRpY2FsaXR5KG9NZXRhTW9kZWwsIG9NZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoc0VudGl0eVNldFBhdGggKyBcIi9cIiArIHNLZXkpKS50aGVuKFxuXHRcdFx0XHRcdFx0Q2hhcnREZWxlZ2F0ZS5faGFuZGxlUHJvcGVydHkuYmluZChcblx0XHRcdFx0XHRcdFx0b01ldGFNb2RlbC5nZXRNZXRhQ29udGV4dChzRW50aXR5U2V0UGF0aCArIFwiL1wiICsgc0tleSksXG5cdFx0XHRcdFx0XHRcdG9NRENDaGFydCxcblx0XHRcdFx0XHRcdFx0bUVudGl0eVNldEFubm90YXRpb25zLFxuXHRcdFx0XHRcdFx0XHRtS25vd25BZ2dyZWdhdGFibGVQcm9wcyxcblx0XHRcdFx0XHRcdFx0bUN1c3RvbUFnZ3JlZ2F0ZXMsXG5cdFx0XHRcdFx0XHRcdGFQcm9wZXJ0aWVzXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoYVByb3BlcnR5UHJvbWlzZSkudGhlbihmdW5jdGlvbiAoKSB7XG5cdFx0XHRyZXR1cm4gYVByb3BlcnRpZXM7XG5cdFx0fSk7XG5cdH0pO1xufTtcblxuQ2hhcnREZWxlZ2F0ZS5fY3JlYXRlUHJvcGVydHlJbmZvc0ZvckFnZ3JlZ2F0YWJsZSA9IGZ1bmN0aW9uIChcblx0b01EQ0NoYXJ0OiBDaGFydCxcblx0c0tleTogc3RyaW5nLFxuXHRvUHJvcGVydHlBbm5vdGF0aW9uczogYW55LFxuXHRvRmlsdGVyUmVzdHJpY3Rpb25zSW5mbzogYW55LFxuXHRvU29ydFJlc3RyaWN0aW9uc0luZm86IGFueSxcblx0bUtub3duQWdncmVnYXRhYmxlUHJvcHM6IGFueSxcblx0bUN1c3RvbUFnZ3JlZ2F0ZXM6IGFueVxuKSB7XG5cdGNvbnN0IGFBZ2dyZWdhdGVQcm9wZXJ0aWVzID0gW107XG5cdGlmIChPYmplY3Qua2V5cyhtS25vd25BZ2dyZWdhdGFibGVQcm9wcykuaW5kZXhPZihzS2V5KSA+IC0xKSB7XG5cdFx0Zm9yIChjb25zdCBzQWdncmVnYXRhYmxlIGluIG1Lbm93bkFnZ3JlZ2F0YWJsZVByb3BzW3NLZXldKSB7XG5cdFx0XHRhQWdncmVnYXRlUHJvcGVydGllcy5wdXNoKHtcblx0XHRcdFx0bmFtZTogbUtub3duQWdncmVnYXRhYmxlUHJvcHNbc0tleV1bc0FnZ3JlZ2F0YWJsZV0ubmFtZSxcblx0XHRcdFx0cHJvcGVydHlQYXRoOiBzS2V5LFxuXHRcdFx0XHRsYWJlbDpcblx0XHRcdFx0XHRtS25vd25BZ2dyZWdhdGFibGVQcm9wc1tzS2V5XVtzQWdncmVnYXRhYmxlXS5sYWJlbCB8fFxuXHRcdFx0XHRcdG9Qcm9wZXJ0eUFubm90YXRpb25zW1wiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5MYWJlbFwiXSArIFwiIChcIiArIHNBZ2dyZWdhdGFibGUgKyBcIilcIiB8fFxuXHRcdFx0XHRcdHNLZXkgKyBcIiAoXCIgKyBzQWdncmVnYXRhYmxlICsgXCIpXCIsXG5cdFx0XHRcdHNvcnRhYmxlOiBvU29ydFJlc3RyaWN0aW9uc0luZm9bc0tleV0gPyBvU29ydFJlc3RyaWN0aW9uc0luZm9bc0tleV0uc29ydGFibGUgOiB0cnVlLFxuXHRcdFx0XHRmaWx0ZXJhYmxlOiBvRmlsdGVyUmVzdHJpY3Rpb25zSW5mb1tzS2V5XSA/IG9GaWx0ZXJSZXN0cmljdGlvbnNJbmZvW3NLZXldLmZpbHRlcmFibGUgOiB0cnVlLFxuXHRcdFx0XHRncm91cGFibGU6IGZhbHNlLFxuXHRcdFx0XHRhZ2dyZWdhdGFibGU6IHRydWUsXG5cdFx0XHRcdGFnZ3JlZ2F0aW9uTWV0aG9kOiBzQWdncmVnYXRhYmxlLFxuXHRcdFx0XHRtYXhDb25kaXRpb25zOiBPRGF0YU1ldGFNb2RlbFV0aWwuaXNNdWx0aVZhbHVlRmlsdGVyRXhwcmVzc2lvbihvRmlsdGVyUmVzdHJpY3Rpb25zSW5mby5wcm9wZXJ0eUluZm9bc0tleV0pID8gLTEgOiAxLFxuXHRcdFx0XHRyb2xlOiBDaGFydEl0ZW1Sb2xlVHlwZS5heGlzMSxcblx0XHRcdFx0ZGF0YXBvaW50OiBudWxsIC8vVG8gYmUgaW1wbGVtZW50ZWQgYnkgRkVcblx0XHRcdH0pO1xuXHRcdH1cblx0fSBlbHNlIGlmIChPYmplY3Qua2V5cyhtQ3VzdG9tQWdncmVnYXRlcykuaW5kZXhPZihzS2V5KSA+IC0xKSB7XG5cdFx0Zm9yIChjb25zdCBzQ3VzdG9tIGluIG1DdXN0b21BZ2dyZWdhdGVzKSB7XG5cdFx0XHRpZiAoc0N1c3RvbSA9PT0gc0tleSkge1xuXHRcdFx0XHRjb25zdCBvSXRlbSA9IG1lcmdlKHt9LCBtQ3VzdG9tQWdncmVnYXRlc1tzQ3VzdG9tXSwge1xuXHRcdFx0XHRcdGdyb3VwYWJsZTogZmFsc2UsXG5cdFx0XHRcdFx0YWdncmVnYXRhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdHJvbGU6IENoYXJ0SXRlbVJvbGVUeXBlLmF4aXMxLFxuXHRcdFx0XHRcdGRhdGFwb2ludDogbnVsbCAvL1RvIGJlIGltcGxlbWVudGVkIGJ5IEZFXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRhQWdncmVnYXRlUHJvcGVydGllcy5wdXNoKG9JdGVtKTtcblxuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cmV0dXJuIGFBZ2dyZWdhdGVQcm9wZXJ0aWVzO1xufTtcbkNoYXJ0RGVsZWdhdGUucmViaW5kID0gZnVuY3Rpb24gKG9NRENDaGFydDogYW55LCBvQmluZGluZ0luZm86IGFueSkge1xuXHRjb25zdCBzU2VhcmNoID0gb0JpbmRpbmdJbmZvLnBhcmFtZXRlcnMuJHNlYXJjaDtcblxuXHRpZiAoc1NlYXJjaCkge1xuXHRcdGRlbGV0ZSBvQmluZGluZ0luZm8ucGFyYW1ldGVycy4kc2VhcmNoO1xuXHR9XG5cblx0QmFzZUNoYXJ0RGVsZWdhdGUucmViaW5kKG9NRENDaGFydCwgb0JpbmRpbmdJbmZvKTtcblxuXHRpZiAoc1NlYXJjaCkge1xuXHRcdGNvbnN0IG9Jbm5lckNoYXJ0ID0gb01EQ0NoYXJ0LmdldENvbnRyb2xEZWxlZ2F0ZSgpLmdldElubmVyQ2hhcnQob01EQ0NoYXJ0KSxcblx0XHRcdG9DaGFydEJpbmRpbmcgPSBvSW5uZXJDaGFydCAmJiBvSW5uZXJDaGFydC5nZXRCaW5kaW5nKFwiZGF0YVwiKTtcblxuXHRcdC8vIFRlbXBvcmFyeSB3b3JrYXJvdW5kIHVudGlsIHRoaXMgaXMgZml4ZWQgaW4gTURDQ2hhcnQgLyBVSTUgQ2hhcnRcblx0XHQvLyBJbiBvcmRlciB0byBhdm9pZCBoYXZpbmcgMiBPRGF0YSByZXF1ZXN0cywgd2UgbmVlZCB0byBzdXNwZW5kIHRoZSBiaW5kaW5nIGJlZm9yZSBzZXR0aW5nIHNvbWUgYWdncmVnYXRpb24gcHJvcGVydGllc1xuXHRcdC8vIGFuZCByZXN1bWUgaXQgb25jZSB0aGUgY2hhcnQgaGFzIGFkZGVkIG90aGVyIGFnZ3JlZ2F0aW9uIHByb3BlcnRpZXMgKGluIG9uQmVmb3JlUmVuZGVyaW5nKVxuXHRcdG9DaGFydEJpbmRpbmcuc3VzcGVuZCgpO1xuXHRcdG9DaGFydEJpbmRpbmcuc2V0QWdncmVnYXRpb24oeyBzZWFyY2g6IHNTZWFyY2ggfSk7XG5cblx0XHRjb25zdCBvSW5uZXJDaGFydERlbGVnYXRlID0ge1xuXHRcdFx0b25CZWZvcmVSZW5kZXJpbmc6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0b0NoYXJ0QmluZGluZy5yZXN1bWUoKTtcblx0XHRcdFx0b0lubmVyQ2hhcnQucmVtb3ZlRXZlbnREZWxlZ2F0ZShvSW5uZXJDaGFydERlbGVnYXRlKTtcblx0XHRcdH1cblx0XHR9O1xuXHRcdG9Jbm5lckNoYXJ0LmFkZEV2ZW50RGVsZWdhdGUob0lubmVyQ2hhcnREZWxlZ2F0ZSk7XG5cdH1cbn07XG5DaGFydERlbGVnYXRlLl9zZXRDaGFydCA9IGZ1bmN0aW9uIChvTURDQ2hhcnQ6IGFueSwgb0lubmVyQ2hhcnQ6IGFueSkge1xuXHRjb25zdCBvQ2hhcnRBUEkgPSBvTURDQ2hhcnQuZ2V0UGFyZW50KCk7XG5cdG9Jbm5lckNoYXJ0LnNldFZpelByb3BlcnRpZXMob01EQ0NoYXJ0LmRhdGEoXCJ2aXpQcm9wZXJ0aWVzXCIpKTtcblx0b0lubmVyQ2hhcnQuZGV0YWNoU2VsZWN0RGF0YShvQ2hhcnRBUEkuaGFuZGxlU2VsZWN0aW9uQ2hhbmdlLmJpbmQob0NoYXJ0QVBJKSk7XG5cdG9Jbm5lckNoYXJ0LmRldGFjaERlc2VsZWN0RGF0YShvQ2hhcnRBUEkuaGFuZGxlU2VsZWN0aW9uQ2hhbmdlLmJpbmQob0NoYXJ0QVBJKSk7XG5cdG9Jbm5lckNoYXJ0LmRldGFjaERyaWxsZWRVcChvQ2hhcnRBUEkuaGFuZGxlU2VsZWN0aW9uQ2hhbmdlLmJpbmQob0NoYXJ0QVBJKSk7XG5cdG9Jbm5lckNoYXJ0LmF0dGFjaFNlbGVjdERhdGEob0NoYXJ0QVBJLmhhbmRsZVNlbGVjdGlvbkNoYW5nZS5iaW5kKG9DaGFydEFQSSkpO1xuXHRvSW5uZXJDaGFydC5hdHRhY2hEZXNlbGVjdERhdGEob0NoYXJ0QVBJLmhhbmRsZVNlbGVjdGlvbkNoYW5nZS5iaW5kKG9DaGFydEFQSSkpO1xuXHRvSW5uZXJDaGFydC5hdHRhY2hEcmlsbGVkVXAob0NoYXJ0QVBJLmhhbmRsZVNlbGVjdGlvbkNoYW5nZS5iaW5kKG9DaGFydEFQSSkpO1xuXG5cdG9Jbm5lckNoYXJ0LnNldFNlbGVjdGlvbk1vZGUob01EQ0NoYXJ0LmdldFBheWxvYWQoKS5zZWxlY3Rpb25Nb2RlLnRvVXBwZXJDYXNlKCkpO1xuXHRCYXNlQ2hhcnREZWxlZ2F0ZS5fc2V0Q2hhcnQob01EQ0NoYXJ0LCBvSW5uZXJDaGFydCk7XG59O1xuQ2hhcnREZWxlZ2F0ZS5fZ2V0QmluZGluZ0luZm8gPSBmdW5jdGlvbiAob01EQ0NoYXJ0OiBhbnkpIHtcblx0aWYgKHRoaXMuX2dldEJpbmRpbmdJbmZvRnJvbVN0YXRlKG9NRENDaGFydCkpIHtcblx0XHRyZXR1cm4gdGhpcy5fZ2V0QmluZGluZ0luZm9Gcm9tU3RhdGUob01EQ0NoYXJ0KTtcblx0fVxuXG5cdGNvbnN0IG9NZXRhZGF0YUluZm8gPSBvTURDQ2hhcnQuZ2V0RGVsZWdhdGUoKS5wYXlsb2FkO1xuXHRjb25zdCBvTWV0YU1vZGVsID0gb01EQ0NoYXJ0LmdldE1vZGVsKCkgJiYgb01EQ0NoYXJ0LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCk7XG5cdGNvbnN0IHNUYXJnZXRDb2xsZWN0aW9uUGF0aCA9IG9NRENDaGFydC5kYXRhKFwidGFyZ2V0Q29sbGVjdGlvblBhdGhcIik7XG5cdGNvbnN0IHNFbnRpdHlTZXRQYXRoID1cblx0XHQob01ldGFNb2RlbC5nZXRPYmplY3Qoc1RhcmdldENvbGxlY3Rpb25QYXRoICsgXCIvJGtpbmRcIikgIT09IFwiTmF2aWdhdGlvblByb3BlcnR5XCIgPyBcIi9cIiA6IFwiXCIpICsgb01ldGFkYXRhSW5mby5jb250ZXh0UGF0aDtcblx0Y29uc3Qgb1BhcmFtcyA9IG1lcmdlKHt9LCBvTWV0YWRhdGFJbmZvLnBhcmFtZXRlcnMsIHtcblx0XHRlbnRpdHlTZXQ6IG9NRENDaGFydC5kYXRhKFwiZW50aXR5U2V0XCIpLFxuXHRcdHVzZUJhdGNoUmVxdWVzdHM6IHRydWUsXG5cdFx0cHJvdmlkZUdyYW5kVG90YWxzOiB0cnVlLFxuXHRcdHByb3ZpZGVUb3RhbFJlc3VsdFNpemU6IHRydWUsXG5cdFx0bm9QYWdpbmc6IHRydWVcblx0fSk7XG5cdGNvbnN0IG9CaW5kaW5nSW5mbyA9IHtcblx0XHRwYXRoOiBzRW50aXR5U2V0UGF0aCxcblx0XHRwYXJhbWV0ZXJzOiBvUGFyYW1zXG5cdH07XG5cdHJldHVybiBvQmluZGluZ0luZm87XG59O1xuQ2hhcnREZWxlZ2F0ZS5yZW1vdmVJdGVtRnJvbUlubmVyQ2hhcnQgPSBmdW5jdGlvbiAob01EQ0NoYXJ0OiBhbnksIG9NRENDaGFydEl0ZW06IGFueSkge1xuXHRCYXNlQ2hhcnREZWxlZ2F0ZS5yZW1vdmVJdGVtRnJvbUlubmVyQ2hhcnQuY2FsbCh0aGlzLCBvTURDQ2hhcnQsIG9NRENDaGFydEl0ZW0pO1xuXHRpZiAob01EQ0NoYXJ0SXRlbS5nZXRUeXBlKCkgPT09IFwiZ3JvdXBhYmxlXCIpIHtcblx0XHRjb25zdCBvSW5uZXJDaGFydCA9IHRoaXMuX2dldENoYXJ0KG9NRENDaGFydCk7XG5cdFx0b0lubmVyQ2hhcnQuZmlyZURlc2VsZWN0RGF0YSgpO1xuXHR9XG59O1xuQ2hhcnREZWxlZ2F0ZS5fZ2V0U29ydGFibGUgPSBmdW5jdGlvbiAob01EQ0NoYXJ0OiBhbnksIG9Tb3J0UmVzdHJpY3Rpb25zOiBhbnksIGJJc1RyYW5zQWdncmVnYXRlOiBhbnkpIHtcblx0aWYgKGJJc1RyYW5zQWdncmVnYXRlKSB7XG5cdFx0aWYgKG9NRENDaGFydC5kYXRhKFwiZHJhZnRTdXBwb3J0ZWRcIikgPT09IFwidHJ1ZVwiKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBvU29ydFJlc3RyaWN0aW9ucyA/IG9Tb3J0UmVzdHJpY3Rpb25zLnNvcnRhYmxlIDogdHJ1ZTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIG9Tb3J0UmVzdHJpY3Rpb25zID8gb1NvcnRSZXN0cmljdGlvbnMuc29ydGFibGUgOiB0cnVlO1xufTtcbkNoYXJ0RGVsZWdhdGUuX2NoZWNrQW5kQWRkRHJhZnRGaWx0ZXIgPSBmdW5jdGlvbiAob0NoYXJ0OiBhbnksIG9CaW5kaW5nSW5mbzogYW55KSB7XG5cdGlmIChvQ2hhcnQuZGF0YShcImRyYWZ0U3VwcG9ydGVkXCIpID09PSBcInRydWVcIikge1xuXHRcdGlmICghb0JpbmRpbmdJbmZvKSB7XG5cdFx0XHRvQmluZGluZ0luZm8gPSB7fTtcblx0XHR9XG5cdFx0aWYgKCFvQmluZGluZ0luZm8uZmlsdGVycykge1xuXHRcdFx0b0JpbmRpbmdJbmZvLmZpbHRlcnMgPSBbXTtcblx0XHR9XG5cdFx0b0JpbmRpbmdJbmZvLmZpbHRlcnMucHVzaChuZXcgRmlsdGVyKFwiSXNBY3RpdmVFbnRpdHlcIiwgRmlsdGVyT3BlcmF0b3IuRVEsIHRydWUpKTtcblx0fVxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hhcnREZWxlZ2F0ZTtcbiJdfQ==
|
|
480
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNoYXJ0RGVsZWdhdGUudHMiXSwibmFtZXMiOlsiQ2hhcnRJdGVtUm9sZVR5cGUiLCJNRENMaWIiLCJDaGFydERlbGVnYXRlIiwiT2JqZWN0IiwiYXNzaWduIiwiQmFzZUNoYXJ0RGVsZWdhdGUiLCJfc2V0Q2hhcnROb0RhdGFUZXh0Iiwib0NoYXJ0Iiwib0JpbmRpbmdJbmZvIiwic05vRGF0YUtleSIsIm9DaGFydEZpbHRlckluZm8iLCJDaGFydFV0aWxzIiwiZ2V0QWxsRmlsdGVySW5mbyIsInN1ZmZpeFJlc291cmNlS2V5IiwicGF0aCIsInN0YXJ0c1dpdGgiLCJzdWJzdHIiLCJfZ2V0Tm9EYXRhVGV4dFdpdGhGaWx0ZXJzIiwiZGF0YSIsImdldEZpbHRlciIsInNlYXJjaCIsImZpbHRlcnMiLCJsZW5ndGgiLCJnZXRNb2RlbCIsImdldFJlc291cmNlQnVuZGxlIiwidGhlbiIsIm9SZXNvdXJjZUJ1bmRsZSIsInNldE5vRGF0YVRleHQiLCJDb21tb25VdGlscyIsImdldFRyYW5zbGF0ZWRUZXh0IiwiY2F0Y2giLCJlcnJvciIsIkxvZyIsIl9oYW5kbGVQcm9wZXJ0eSIsIm9NRENDaGFydCIsIm1FbnRpdHlTZXRBbm5vdGF0aW9ucyIsIm1Lbm93bkFnZ3JlZ2F0YWJsZVByb3BzIiwibUN1c3RvbUFnZ3JlZ2F0ZXMiLCJhUHJvcGVydGllcyIsInNDcml0aWNhbGl0eSIsIm9BcHBseVN1cHBvcnRlZCIsIkNvbW1vbkhlbHBlciIsInBhcnNlQ3VzdG9tRGF0YSIsIm9Tb3J0UmVzdHJpY3Rpb25zIiwib1NvcnRSZXN0cmljdGlvbnNJbmZvIiwiT0RhdGFNZXRhTW9kZWxVdGlsIiwiZ2V0U29ydFJlc3RyaWN0aW9uc0luZm8iLCJvRmlsdGVyUmVzdHJpY3Rpb25zIiwib0ZpbHRlclJlc3RyaWN0aW9uc0luZm8iLCJnZXRGaWx0ZXJSZXN0cmljdGlvbnNJbmZvIiwib09iaiIsImdldE9iamVjdCIsImdldFBhdGgiLCJzS2V5Iiwib01ldGFNb2RlbCIsIiRraW5kIiwiJGlzQ29sbGVjdGlvbiIsIm9Qcm9wZXJ0eUFubm90YXRpb25zIiwic1BhdGgiLCJnZXRNZXRhQ29udGV4dCIsImFHcm91cGFibGVQcm9wZXJ0aWVzIiwiR3JvdXBhYmxlUHJvcGVydGllcyIsImFBZ2dyZWdhdGFibGVQcm9wZXJ0aWVzIiwiQWdncmVnYXRhYmxlUHJvcGVydGllcyIsImJHcm91cGFibGUiLCJiQWdncmVnYXRhYmxlIiwiaSIsIiRQcm9wZXJ0eVBhdGgiLCJqIiwiUHJvcGVydHkiLCJhQWdncmVnYXRlUHJvcGVydGllcyIsIl9jcmVhdGVQcm9wZXJ0eUluZm9zRm9yQWdncmVnYXRhYmxlIiwiZm9yRWFjaCIsIm9BZ2dyZWdhdGVQcm9wZXJ0eSIsInB1c2giLCJzTmFtZSIsInNUZXh0UHJvcGVydHkiLCIkUGF0aCIsImJJc05hdmlnYXRpb25UZXh0IiwiaW5kZXhPZiIsIm5hbWUiLCJwcm9wZXJ0eVBhdGgiLCJsYWJlbCIsInNvcnRhYmxlIiwiX2dldFNvcnRhYmxlIiwiZmlsdGVyYWJsZSIsImdyb3VwYWJsZSIsImFnZ3JlZ2F0YWJsZSIsIm1heENvbmRpdGlvbnMiLCJpc011bHRpVmFsdWVGaWx0ZXJFeHByZXNzaW9uIiwicHJvcGVydHlJbmZvIiwic29ydEtleSIsInJvbGUiLCJjYXRlZ29yeSIsImNyaXRpY2FsaXR5IiwidGV4dFByb3BlcnR5IiwidGV4dEZvcm1hdHRlciIsIl9mb3JtYXRUZXh0Iiwib1ZhbHVlMSIsIm9WYWx1ZTIiLCJvVGV4dEFycmFuZ2VtZW50QW5ub3RhdGlvbiIsIiRFbnVtTWVtYmVyIiwidXBkYXRlQmluZGluZ0luZm8iLCJvRmlsdGVyIiwic2FwIiwidWkiLCJnZXRDb3JlIiwiYnlJZCIsIm1Db25kaXRpb25zIiwiZ2V0Q29uZGl0aW9ucyIsInNvcnRlciIsImdldFNvcnRlcnMiLCJvSW5uZXJDaGFydCIsImdldENvbnRyb2xEZWxlZ2F0ZSIsImdldElubmVyQ2hhcnQiLCJvRmlsdGVySW5mbyIsImdldENoYXJ0U2VsZWN0aW9uc0V4aXN0IiwiZ2V0RmlsdGVyQmFyRmlsdGVySW5mbyIsInNQYXJhbWV0ZXJQYXRoIiwiRGVsZWdhdGVVdGlsIiwiZ2V0UGFyYW1ldGVyc0luZm8iLCJvSW5mbyIsIkZpbHRlclV0aWxzIiwiZ2V0RmlsdGVySW5mbyIsImVuYWJsZVNlYXJjaCIsInBhcmFtZXRlcnMiLCIkc2VhcmNoIiwibm9ybWFsaXplU2VhcmNoVGVybSIsIl9jaGVja0FuZEFkZERyYWZ0RmlsdGVyIiwiZmV0Y2hQcm9wZXJ0aWVzIiwib01vZGVsIiwiX2dldE1vZGVsIiwicENyZWF0ZVByb3BlcnR5SW5mb3MiLCJQcm9taXNlIiwicmVzb2x2ZSIsImF0dGFjaE1vZGVsQ29udGV4dENoYW5nZSIsInJlc29sdmVyIiwib25Nb2RlbENvbnRleHRDaGFuZ2UiLCJvUmV0cmlldmVkTW9kZWwiLCJfY3JlYXRlUHJvcGVydHlJbmZvcyIsIm9FdmVudCIsIm9EYXRhIiwiZ2V0U291cmNlIiwiZGV0YWNoTW9kZWxDb250ZXh0Q2hhbmdlIiwic0VudGl0eVNldFBhdGgiLCJnZXRNZXRhTW9kZWwiLCJhbGwiLCJyZXF1ZXN0T2JqZWN0IiwiYVJlc3VsdHMiLCJvRW50aXR5VHlwZSIsInNBbm5vIiwiYVByb3BlcnR5UHJvbWlzZSIsInNBbm5vS2V5IiwicmVwbGFjZSIsImFBbm5vIiwic3BsaXQiLCJhRGltZW5zaW9ucyIsImFNZWFzdXJlcyIsImtleXMiLCJhQ2hhcnRJdGVtcyIsImdldEl0ZW1zIiwia2V5IiwiaXNBIiwiZ2V0S2V5IiwiZmlsdGVyIiwidmFsIiwibVR5cGVBZ2dyZWdhdGFibGVQcm9wcyIsInNBZ2dyZWdhdGFibGUiLCJzUHJvcEtleSIsImFnZ3JlZ2F0aW9uTWV0aG9kIiwiTWV0YU1vZGVsVXRpbCIsImZldGNoQ3JpdGljYWxpdHkiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsImJpbmQiLCJheGlzMSIsImRhdGFwb2ludCIsInNDdXN0b20iLCJvSXRlbSIsIm1lcmdlIiwicmViaW5kIiwic1NlYXJjaCIsIm9DaGFydEJpbmRpbmciLCJnZXRCaW5kaW5nIiwic3VzcGVuZCIsInNldEFnZ3JlZ2F0aW9uIiwib0lubmVyQ2hhcnREZWxlZ2F0ZSIsIm9uQmVmb3JlUmVuZGVyaW5nIiwicmVzdW1lIiwicmVtb3ZlRXZlbnREZWxlZ2F0ZSIsImFkZEV2ZW50RGVsZWdhdGUiLCJfc2V0Q2hhcnQiLCJvQ2hhcnRBUEkiLCJnZXRQYXJlbnQiLCJzZXRWaXpQcm9wZXJ0aWVzIiwiZGV0YWNoU2VsZWN0RGF0YSIsImhhbmRsZVNlbGVjdGlvbkNoYW5nZSIsImRldGFjaERlc2VsZWN0RGF0YSIsImRldGFjaERyaWxsZWRVcCIsImF0dGFjaFNlbGVjdERhdGEiLCJhdHRhY2hEZXNlbGVjdERhdGEiLCJhdHRhY2hEcmlsbGVkVXAiLCJzZXRTZWxlY3Rpb25Nb2RlIiwiZ2V0UGF5bG9hZCIsInNlbGVjdGlvbk1vZGUiLCJ0b1VwcGVyQ2FzZSIsIl9nZXRCaW5kaW5nSW5mbyIsIl9nZXRCaW5kaW5nSW5mb0Zyb21TdGF0ZSIsIm9NZXRhZGF0YUluZm8iLCJnZXREZWxlZ2F0ZSIsInBheWxvYWQiLCJzVGFyZ2V0Q29sbGVjdGlvblBhdGgiLCJjb250ZXh0UGF0aCIsIm9QYXJhbXMiLCJlbnRpdHlTZXQiLCJ1c2VCYXRjaFJlcXVlc3RzIiwicHJvdmlkZUdyYW5kVG90YWxzIiwicHJvdmlkZVRvdGFsUmVzdWx0U2l6ZSIsIm5vUGFnaW5nIiwicmVtb3ZlSXRlbUZyb21Jbm5lckNoYXJ0Iiwib01EQ0NoYXJ0SXRlbSIsImNhbGwiLCJnZXRUeXBlIiwiX2dldENoYXJ0IiwiZmlyZURlc2VsZWN0RGF0YSIsImJJc1RyYW5zQWdncmVnYXRlIiwiRmlsdGVyIiwiRmlsdGVyT3BlcmF0b3IiLCJFUSJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7OztBQWNBLE1BQU1BLGlCQUFpQixHQUFJQyxNQUFELENBQWdCRCxpQkFBMUMsQyxDQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFD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ZSxnQkFBZixNQUFxQyxNQUF6QyxFQUFpRDtBQUNoRCxlQUFPLEtBQVA7QUFDQSxPQUZELE1BRU87QUFDTixlQUFPeUIsaUJBQWlCLEdBQUdBLGlCQUFpQixDQUFDd0MsUUFBckIsR0FBZ0MsSUFBeEQ7QUFDQTtBQUNEOztBQUNELFdBQU94QyxpQkFBaUIsR0FBR0EsaUJBQWlCLENBQUN3QyxRQUFyQixHQUFnQyxJQUF4RDtBQUNBLEdBVEQ7O0FBVUFqRixFQUFBQSxhQUFhLENBQUM4SCx1QkFBZCxHQUF3QyxVQUFVekgsTUFBVixFQUF1QkMsWUFBdkIsRUFBMEM7QUFDakYsUUFBSUQsTUFBTSxDQUFDVyxJQUFQLENBQVksZ0JBQVosTUFBa0MsTUFBdEMsRUFBOEM7QUFDN0MsVUFBSSxDQUFDVixZQUFMLEVBQW1CO0FBQ2xCQSxRQUFBQSxZQUFZLEdBQUcsRUFBZjtBQUNBOztBQUNELFVBQUksQ0FBQ0EsWUFBWSxDQUFDYSxPQUFsQixFQUEyQjtBQUMxQmIsUUFBQUEsWUFBWSxDQUFDYSxPQUFiLEdBQXVCLEVBQXZCO0FBQ0E7O0FBQ0RiLE1BQUFBLFlBQVksQ0FBQ2EsT0FBYixDQUFxQnFELElBQXJCLENBQTBCLElBQUl1SixNQUFKLENBQVcsZ0JBQVgsRUFBNkJDLGNBQWMsQ0FBQ0MsRUFBNUMsRUFBZ0QsSUFBaEQsQ0FBMUI7QUFDQTtBQUNELEdBVkQ7O1NBWWVqTyxhIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBSZXNvdXJjZUJ1bmRsZSBmcm9tIFwic2FwL2Jhc2UvaTE4bi9SZXNvdXJjZUJ1bmRsZVwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgbWVyZ2UgZnJvbSBcInNhcC9iYXNlL3V0aWwvbWVyZ2VcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCBDaGFydFV0aWxzIGZyb20gXCJzYXAvZmUvbWFjcm9zL2NoYXJ0L0NoYXJ0VXRpbHNcIjtcbmltcG9ydCBDb21tb25IZWxwZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvQ29tbW9uSGVscGVyXCI7XG5pbXBvcnQgRmlsdGVyVXRpbHMgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyL0ZpbHRlclV0aWxzXCI7XG5pbXBvcnQgTWV0YU1vZGVsVXRpbCBmcm9tIFwic2FwL2ZlL21hY3Jvcy9PRGF0YU1ldGFNb2RlbFV0aWxcIjtcbmltcG9ydCB0eXBlIENoYXJ0IGZyb20gXCJzYXAvdWkvbWRjL0NoYXJ0XCI7XG5pbXBvcnQgTURDTGliIGZyb20gXCJzYXAvdWkvbWRjL2xpYnJhcnlcIjtcbmltcG9ydCBPRGF0YU1ldGFNb2RlbFV0aWwgZnJvbSBcInNhcC91aS9tZGMvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxVdGlsXCI7XG5pbXBvcnQgRGVsZWdhdGVVdGlsIGZyb20gXCJzYXAvdWkvbWRjL29kYXRhL3Y0L3V0aWwvRGVsZWdhdGVVdGlsXCI7XG5pbXBvcnQgQmFzZUNoYXJ0RGVsZWdhdGUgZnJvbSBcInNhcC91aS9tZGMvb2RhdGEvdjQvdml6Q2hhcnQvQ2hhcnREZWxlZ2F0ZVwiO1xuaW1wb3J0IEZpbHRlciBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlclwiO1xuaW1wb3J0IEZpbHRlck9wZXJhdG9yIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyT3BlcmF0b3JcIjtcblxuY29uc3QgQ2hhcnRJdGVtUm9sZVR5cGUgPSAoTURDTGliIGFzIGFueSkuQ2hhcnRJdGVtUm9sZVR5cGU7XG4vLyAvKipcbi8vICAqIEhlbHBlciBjbGFzcyBmb3Igc2FwLnVpLm1kYy5DaGFydC5cbi8vICAqIDxoMz48Yj5Ob3RlOjwvYj48L2gzPlxuLy8gICogVGhlIGNsYXNzIGlzIGV4cGVyaW1lbnRhbCBhbmQgdGhlIEFQSS9iZWhhdmlvdXIgaXMgbm90IGZpbmFsaXNlZFxuLy8gICogYW5kIGhlbmNlIHRoaXMgc2hvdWxkIG5vdCBiZSB1c2VkIGZvciBwcm9kdWN0aXZlIHVzYWdlLlxuLy8gICogRXNwZWNpYWxseSB0aGlzIGNsYXNzIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciB0aGUgRkUgc2NlbmFyaW8sXG4vLyAgKiBoZXJlIHdlIHNoYWxsIHVzZSBzYXAuZmUubWFjcm9zLkNoYXJ0RGVsZWdhdGUgdGhhdCBpcyBlc3BlY2lhbGx5IHRhaWxvcmVkIGZvciBWNFxuLy8gICogbWV0YSBtb2RlbFxuLy8gICpcbi8vICAqIEBhdXRob3IgU0FQIFNFXG4vLyAgKiBAcHJpdmF0ZVxuLy8gICogQGV4cGVyaW1lbnRhbFxuLy8gICogQHNpbmNlIDEuNjJcbi8vICAqIEBhbGlhcyBzYXAuZmUubWFjcm9zLkNoYXJ0RGVsZWdhdGVcbi8vICAqL1xuY29uc3QgQ2hhcnREZWxlZ2F0ZSA9IE9iamVjdC5hc3NpZ24oe30sIEJhc2VDaGFydERlbGVnYXRlKTtcblxuQ2hhcnREZWxlZ2F0ZS5fc2V0Q2hhcnROb0RhdGFUZXh0ID0gZnVuY3Rpb24gKG9DaGFydDogYW55LCBvQmluZGluZ0luZm86IGFueSkge1xuXHRsZXQgc05vRGF0YUtleSA9IFwiXCI7XG5cdGNvbnN0IG9DaGFydEZpbHRlckluZm8gPSBDaGFydFV0aWxzLmdldEFsbEZpbHRlckluZm8ob0NoYXJ0KSxcblx0XHRzdWZmaXhSZXNvdXJjZUtleSA9IG9CaW5kaW5nSW5mby5wYXRoLnN0YXJ0c1dpdGgoXCIvXCIpID8gb0JpbmRpbmdJbmZvLnBhdGguc3Vic3RyKDEpIDogb0JpbmRpbmdJbmZvLnBhdGg7XG5cdGNvbnN0IF9nZXROb0RhdGFUZXh0V2l0aEZpbHRlcnMgPSBmdW5jdGlvbiAoKSB7XG5cdFx0aWYgKG9DaGFydC5kYXRhKFwibXVsdGlWaWV3c1wiKSkge1xuXHRcdFx0cmV0dXJuIFwiTV9UQUJMRV9BTkRfQ0hBUlRfTk9fREFUQV9URVhUX01VTFRJX1ZJRVdcIjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIFwiVF9UQUJMRV9BTkRfQ0hBUlRfTk9fREFUQV9URVhUX1dJVEhfRklMVEVSXCI7XG5cdFx0fVxuXHR9O1xuXHRpZiAob0NoYXJ0LmdldEZpbHRlcigpKSB7XG5cdFx0aWYgKG9DaGFydEZpbHRlckluZm8uc2VhcmNoIHx8IChvQ2hhcnRGaWx0ZXJJbmZvLmZpbHRlcnMgJiYgb0NoYXJ0RmlsdGVySW5mby5maWx0ZXJzLmxlbmd0aCkpIHtcblx0XHRcdHNOb0RhdGFLZXkgPSBfZ2V0Tm9EYXRhVGV4dFdpdGhGaWx0ZXJzKCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHNOb0RhdGFLZXkgPSBcIlRfVEFCTEVfQU5EX0NIQVJUX05PX0RBVEFfVEVYVFwiO1xuXHRcdH1cblx0fSBlbHNlIGlmIChvQ2hhcnRGaWx0ZXJJbmZvLnNlYXJjaCB8fCAob0NoYXJ0RmlsdGVySW5mby5maWx0ZXJzICYmIG9DaGFydEZpbHRlckluZm8uZmlsdGVycy5sZW5ndGgpKSB7XG5cdFx0c05vRGF0YUtleSA9IF9nZXROb0RhdGFUZXh0V2l0aEZpbHRlcnMoKTtcblx0fSBlbHNlIHtcblx0XHRzTm9EYXRhS2V5ID0gXCJNX1RBQkxFX0FORF9DSEFSVF9OT19GSUxURVJTX05PX0RBVEFfVEVYVFwiO1xuXHR9XG5cdHJldHVybiAob0NoYXJ0LmdldE1vZGVsKFwic2FwLmZlLmkxOG5cIikuZ2V0UmVzb3VyY2VCdW5kbGUoKSBhcyBQcm9taXNlPFJlc291cmNlQnVuZGxlPilcblx0XHQudGhlbihmdW5jdGlvbiAob1Jlc291cmNlQnVuZGxlKSB7XG5cdFx0XHRvQ2hhcnQuc2V0Tm9EYXRhVGV4dChDb21tb25VdGlscy5nZXRUcmFuc2xhdGVkVGV4dChzTm9EYXRhS2V5LCBvUmVzb3VyY2VCdW5kbGUsIG51bGwsIHN1ZmZpeFJlc291cmNlS2V5KSk7XG5cdFx0fSlcblx0XHQuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG5cdFx0XHRMb2cuZXJyb3IoZXJyb3IpO1xuXHRcdH0pO1xufTtcblxuQ2hhcnREZWxlZ2F0ZS5faGFuZGxlUHJvcGVydHkgPSBmdW5jdGlvbiAoXG5cdG9NRENDaGFydDogQ2hhcnQsXG5cdG1FbnRpdHlTZXRBbm5vdGF0aW9uczogYW55LFxuXHRtS25vd25BZ2dyZWdhdGFibGVQcm9wczogYW55LFxuXHRtQ3VzdG9tQWdncmVnYXRlczogYW55LFxuXHRhUHJvcGVydGllczogYW55W10sXG5cdHNDcml0aWNhbGl0eTogc3RyaW5nXG4pIHtcblx0Y29uc3Qgb0FwcGx5U3VwcG9ydGVkID0gQ29tbW9uSGVscGVyLnBhcnNlQ3VzdG9tRGF0YShvTURDQ2hhcnQuZGF0YShcImFwcGx5U3VwcG9ydGVkXCIpKTtcblx0Y29uc3Qgb1NvcnRSZXN0cmljdGlvbnMgPSBtRW50aXR5U2V0QW5ub3RhdGlvbnNbXCJAT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5Tb3J0UmVzdHJpY3Rpb25zXCJdIHx8IHt9O1xuXHRjb25zdCBvU29ydFJlc3RyaWN0aW9uc0luZm8gPSBPRGF0YU1ldGFNb2RlbFV0aWwuZ2V0U29ydFJlc3RyaWN0aW9uc0luZm8ob1NvcnRSZXN0cmljdGlvbnMpO1xuXHRjb25zdCBvRmlsdGVyUmVzdHJpY3Rpb25zID0gbUVudGl0eVNldEFubm90YXRpb25zW1wiQE9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuRmlsdGVyUmVzdHJpY3Rpb25zXCJdO1xuXHRjb25zdCBvRmlsdGVyUmVzdHJpY3Rpb25zSW5mbyA9IE9EYXRhTWV0YU1vZGVsVXRpbC5nZXRGaWx0ZXJSZXN0cmljdGlvbnNJbmZvKG9GaWx0ZXJSZXN0cmljdGlvbnMpO1xuXHRjb25zdCBvT2JqID0gdGhpcy5nZXRNb2RlbCgpLmdldE9iamVjdCh0aGlzLmdldFBhdGgoKSk7XG5cdGNvbnN0IHNLZXkgPSB0aGlzLmdldE1vZGVsKCkuZ2V0T2JqZWN0KGAke3RoaXMuZ2V0UGF0aCgpfUBzYXB1aS5uYW1lYCk7XG5cdGNvbnN0IG9NZXRhTW9kZWwgPSB0aGlzLmdldE1vZGVsKCk7XG5cdGlmIChvT2JqICYmIG9PYmouJGtpbmQgPT09IFwiUHJvcGVydHlcIikge1xuXHRcdC8vIGlnbm9yZSAoYXMgZm9yIG5vdykgYWxsIGNvbXBsZXggcHJvcGVydGllc1xuXHRcdC8vIG5vdCBjbGVhciBpZiB0aGV5IG1pZ2h0IGJlIG5lc3RpbmcgKGNvbXBsZXggaW4gY29tcGxleClcblx0XHQvLyBub3QgY2xlYXIgaG93IHRoZXkgYXJlIHJlcHJlc2VudGVkIGluIG5vbi1maWx0ZXJhYmxlIGFubm90YXRpb25cblx0XHQvLyBldGMuXG5cdFx0aWYgKG9PYmouJGlzQ29sbGVjdGlvbikge1xuXHRcdFx0Ly9Mb2cud2FybmluZyhcIkNvbXBsZXggcHJvcGVydHkgd2l0aCB0eXBlIFwiICsgb09iai4kVHlwZSArIFwiIGhhcyBiZWVuIGlnbm9yZWRcIik7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3Qgb1Byb3BlcnR5QW5ub3RhdGlvbnMgPSBvTWV0YU1vZGVsLmdldE9iamVjdChgJHt0aGlzLmdldFBhdGgoKX1AYCk7XG5cdFx0Y29uc3Qgc1BhdGggPSBvTWV0YU1vZGVsLmdldE9iamVjdChcIkBzYXB1aS5uYW1lXCIsIG9NZXRhTW9kZWwuZ2V0TWV0YUNvbnRleHQodGhpcy5nZXRQYXRoKCkpKTtcblxuXHRcdGNvbnN0IGFHcm91cGFibGVQcm9wZXJ0aWVzID0gb0FwcGx5U3VwcG9ydGVkICYmIG9BcHBseVN1cHBvcnRlZC5Hcm91cGFibGVQcm9wZXJ0aWVzO1xuXHRcdGNvbnN0IGFBZ2dyZWdhdGFibGVQcm9wZXJ0aWVzID0gb0FwcGx5U3VwcG9ydGVkICYmIG9BcHBseVN1cHBvcnRlZC5BZ2dyZWdhdGFibGVQcm9wZXJ0aWVzO1xuXHRcdGxldCBiR3JvdXBhYmxlID0gZmFsc2UsXG5cdFx0XHRiQWdncmVnYXRhYmxlID0gZmFsc2U7XG5cdFx0aWYgKGFHcm91cGFibGVQcm9wZXJ0aWVzICYmIGFHcm91cGFibGVQcm9wZXJ0aWVzLmxlbmd0aCkge1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhR3JvdXBhYmxlUHJvcGVydGllcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRpZiAoYUdyb3VwYWJsZVByb3BlcnRpZXNbaV0uJFByb3BlcnR5UGF0aCA9PT0gc1BhdGgpIHtcblx0XHRcdFx0XHRiR3JvdXBhYmxlID0gdHJ1ZTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoYUFnZ3JlZ2F0YWJsZVByb3BlcnRpZXMgJiYgYUFnZ3JlZ2F0YWJsZVByb3BlcnRpZXMubGVuZ3RoKSB7XG5cdFx0XHRmb3IgKGxldCBqID0gMDsgaiA8IGFBZ2dyZWdhdGFibGVQcm9wZXJ0aWVzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdGlmIChhQWdncmVnYXRhYmxlUHJvcGVydGllc1tqXS5Qcm9wZXJ0eS4kUHJvcGVydHlQYXRoID09PSBzUGF0aCkge1xuXHRcdFx0XHRcdGJBZ2dyZWdhdGFibGUgPSB0cnVlO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmICghYUdyb3VwYWJsZVByb3BlcnRpZXMgfHwgKGFHcm91cGFibGVQcm9wZXJ0aWVzICYmICFhR3JvdXBhYmxlUHJvcGVydGllcy5sZW5ndGgpKSB7XG5cdFx0XHRiR3JvdXBhYmxlID0gb1Byb3BlcnR5QW5ub3RhdGlvbnNbXCJAT3JnLk9EYXRhLkFnZ3JlZ2F0aW9uLlYxLkdyb3VwYWJsZVwiXTtcblx0XHR9XG5cdFx0aWYgKCFhQWdncmVnYXRhYmxlUHJvcGVydGllcyB8fCAoYUFnZ3JlZ2F0YWJsZVByb3BlcnRpZXMgJiYgIWFBZ2dyZWdhdGFibGVQcm9wZXJ0aWVzLmxlbmd0aCkpIHtcblx0XHRcdGJBZ2dyZWdhdGFibGUgPSBvUHJvcGVydHlBbm5vdGF0aW9uc1tcIkBPcmcuT0RhdGEuQWdncmVnYXRpb24uVjEuQWdncmVnYXRhYmxlXCJdO1xuXHRcdH1cblxuXHRcdC8vUmlnaHQgbm93OiBza2lwIHRoZW0sIHNpbmNlIHdlIGNhbid0IGNyZWF0ZSBhIGNoYXJ0IGZyb20gaXRcblx0XHRpZiAoIWJHcm91cGFibGUgJiYgIWJBZ2dyZWdhdGFibGUpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoYkFnZ3JlZ2F0YWJsZSkge1xuXHRcdFx0Y29uc3QgYUFnZ3JlZ2F0ZVByb3BlcnRpZXMgPSBDaGFydERlbGVnYXRlLl9jcmVhdGVQcm9wZXJ0eUluZm9zRm9yQWdncmVnYXRhYmxlKFxuXHRcdFx0XHRvTURDQ2hhcnQsXG5cdFx0XHRcdHNLZXksXG5cdFx0XHRcdG9Qcm9wZXJ0eUFubm90YXRpb25zLFxuXHRcdFx0XHRvRmlsdGVyUmVzdHJpY3Rpb25zSW5mbyxcblx0XHRcdFx0b1NvcnRSZXN0cmljdGlvbnNJbmZvLFxuXHRcdFx0XHRtS25vd25BZ2dyZWdhdGFibGVQcm9wcyxcblx0XHRcdFx0bUN1c3RvbUFnZ3JlZ2F0ZXNcblx0XHRcdCk7XG5cdFx0XHRhQWdncmVnYXRlUHJvcGVydGllcy5mb3JFYWNoKGZ1bmN0aW9uIChvQWdncmVnYXRlUHJvcGVydHk6IGFueSkge1xuXHRcdFx0XHRhUHJvcGVydGllcy5wdXNoKG9BZ2dyZWdhdGVQcm9wZXJ0eSk7XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRpZiAoYkdyb3VwYWJsZSkge1xuXHRcdFx0Y29uc3Qgc05hbWUgPSBzS2V5IHx8IFwiXCIsXG5cdFx0XHRcdHNUZXh0UHJvcGVydHkgPSBvUHJvcGVydHlBbm5vdGF0aW9uc1tcIkBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVGV4dFwiXVxuXHRcdFx0XHRcdD8gb1Byb3BlcnR5QW5ub3RhdGlvbnNbXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlRleHRcIl0uJFBhdGhcblx0XHRcdFx0XHQ6IG51bGw7XG5cdFx0XHRsZXQgYklzTmF2aWdhdGlvblRleHQgPSBmYWxzZTtcblx0XHRcdGlmIChzTmFtZSAmJiBzTmFtZS5pbmRleE9mKFwiL1wiKSA+IC0xKSB7XG5cdFx0XHRcdExvZy5lcnJvcihgJGV4cGFuZCBpcyBub3QgeWV0IHN1cHBvcnRlZC4gUHJvcGVydHk6ICR7c05hbWV9IGZyb20gYW4gYXNzb2NpYXRpb24gY2Fubm90IGJlIHVzZWRgKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHNUZXh0UHJvcGVydHkgJiYgc1RleHRQcm9wZXJ0eS5pbmRleE9mKFwiL1wiKSA+IC0xKSB7XG5cdFx0XHRcdExvZy5lcnJvcihgJGV4cGFuZCBpcyBub3QgeWV0IHN1cHBvcnRlZC4gVGV4dCBQcm9wZXJ0eTogJHtzVGV4dFByb3BlcnR5fSBmcm9tIGFuIGFzc29jaWF0aW9uIGNhbm5vdCBiZSB1c2VkYCk7XG5cdFx0XHRcdGJJc05hdmlnYXRpb25UZXh0ID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdGFQcm9wZXJ0aWVzLnB1c2goe1xuXHRcdFx0XHRuYW1lOiBzS2V5LFxuXHRcdFx0XHRwcm9wZXJ0eVBhdGg6IHNLZXksXG5cdFx0XHRcdGxhYmVsOiBvUHJvcGVydHlBbm5vdGF0aW9uc1tcIkBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuTGFiZWxcIl0gfHwgc0tleSxcblx0XHRcdFx0c29ydGFibGU6IENoYXJ0RGVsZWdhdGUuX2dldFNvcnRhYmxlKG9NRENDaGFydCwgb1NvcnRSZXN0cmljdGlvbnNJbmZvW3NLZXldLCBmYWxzZSksXG5cdFx0XHRcdGZpbHRlcmFibGU6IG9GaWx0ZXJSZXN0cmljdGlvbnNJbmZvW3NLZXldID8gb0ZpbHRlclJlc3RyaWN0aW9uc0luZm9bc0tleV0uZmlsdGVyYWJsZSA6IHRydWUsXG5cdFx0XHRcdGdyb3VwYWJsZTogdHJ1ZSxcblx0XHRcdFx0YWdncmVnYXRhYmxlOiBmYWxzZSxcblx0XHRcdFx0bWF4Q29uZGl0aW9uczogT0RhdGFNZXRhTW9kZWxVdGlsLmlzTXVsdGlWYWx1ZUZpbHRlckV4cHJlc3Npb24ob0ZpbHRlclJlc3RyaWN0aW9uc0luZm8ucHJvcGVydHlJbmZvW3NLZXldKSA/IC0xIDogMSxcblx0XHRcdFx0c29ydEtleTogc0tleSxcblx0XHRcdFx0cm9sZTogQ2hhcnRJdGVtUm9sZVR5cGUuY2F0ZWdvcnksIC8vc3RhbmRhcmQsIG5vcm1hbGx5IHRoaXMgc2hvdWxkIGJlIGludGVycHJldGVkIGZyb20gVUkuQ2hhcnQgYW5ub3RhdGlvblxuXHRcdFx0XHRjcml0aWNhbGl0eTogc0NyaXRpY2FsaXR5LCAvL1RvIGJlIGltcGxlbWVudGVkIGJ5IEZFXG5cdFx0XHRcdHRleHRQcm9wZXJ0eTpcblx0XHRcdFx0XHQhYklzTmF2aWdhdGlvblRleHQgJiYgb1Byb3BlcnR5QW5ub3RhdGlvbnNbXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlRleHRcIl1cblx0XHRcdFx0XHRcdD8gb1Byb3BlcnR5QW5ub3RhdGlvbnNbXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlRleHRcIl0uJFBhdGhcblx0XHRcdFx0XHRcdDogbnVsbCwgLy9UbyBiZSBpbXBsZW1lbnRlZCBieSBGRVxuXHRcdFx0XHR0ZXh0Rm9ybWF0dGVyOiBvUHJvcGVydHlBbm5vdGF0aW9uc1tcIkBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVGV4dEBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5UZXh0QXJyYW5nZW1lbnRcIl1cblx0XHRcdH0pO1xuXHRcdH1cblx0fVxufTtcblxuQ2hhcnREZWxlZ2F0ZS5fZm9ybWF0VGV4dCA9IGZ1bmN0aW9uIChvVmFsdWUxOiBhbnksIG9WYWx1ZTI6IGFueSkge1xuXHRjb25zdCBvVGV4dEFycmFuZ2VtZW50QW5ub3RhdGlvbiA9IHRoaXMudGV4dEZvcm1hdHRlcjtcblx0aWYgKG9UZXh0QXJyYW5nZW1lbnRBbm5vdGF0aW9uLiRFbnVtTWVtYmVyID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlRleHRBcnJhbmdlbWVudFR5cGUvVGV4dEZpcnN0XCIpIHtcblx0XHRyZXR1cm4gYCR7b1ZhbHVlMn0gKCR7b1ZhbHVlMX0pYDtcblx0fSBlbHNlIGlmIChvVGV4dEFycmFuZ2VtZW50QW5ub3RhdGlvbi4kRW51bU1lbWJlciA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5UZXh0QXJyYW5nZW1lbnRUeXBlL1RleHRMYXN0XCIpIHtcblx0XHRyZXR1cm4gYCR7b1ZhbHVlMX0gKCR7b1ZhbHVlMn0pYDtcblx0fSBlbHNlIGlmIChvVGV4dEFycmFuZ2VtZW50QW5ub3RhdGlvbi4kRW51bU1lbWJlciA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5UZXh0QXJyYW5nZW1lbnRUeXBlL1RleHRPbmx5XCIpIHtcblx0XHRyZXR1cm4gb1ZhbHVlMjtcblx0fVxuXHRyZXR1cm4gb1ZhbHVlMiA/IG9WYWx1ZTIgOiBvVmFsdWUxO1xufTtcblxuQ2hhcnREZWxlZ2F0ZS51cGRhdGVCaW5kaW5nSW5mbyA9IGZ1bmN0aW9uIChvQ2hhcnQ6IGFueSwgb0JpbmRpbmdJbmZvOiBhbnkpIHtcblx0Q2hhcnREZWxlZ2F0ZS5fc2V0Q2hhcnROb0RhdGFUZXh0KG9DaGFydCwgb0JpbmRpbmdJbmZvKTtcblxuXHRjb25zdCBvRmlsdGVyID0gc2FwLnVpLmdldENvcmUoKS5ieUlkKG9DaGFydC5nZXRGaWx0ZXIoKSkgYXMgYW55O1xuXHRpZiAob0ZpbHRlcikge1xuXHRcdGNvbnN0IG1Db25kaXRpb25zID0gb0ZpbHRlci5nZXRDb25kaXRpb25zKCk7XG5cblx0XHRpZiAobUNvbmRpdGlvbnMpIHtcblx0XHRcdGlmICghb0JpbmRpbmdJbmZvKSB7XG5cdFx0XHRcdG9CaW5kaW5nSW5mbyA9IHt9O1xuXHRcdFx0fVxuXHRcdFx0b0JpbmRpbmdJbmZvLnNvcnRlciA9IHRoaXMuZ2V0U29ydGVycyhvQ2hhcnQpO1xuXHRcdFx0Y29uc3Qgb0lubmVyQ2hhcnQgPSBvQ2hhcnQuZ2V0Q29udHJvbERlbGVnYXRlKCkuZ2V0SW5uZXJDaGFydChvQ2hhcnQpO1xuXHRcdFx0bGV0IG9GaWx0ZXJJbmZvO1xuXHRcdFx0aWYgKG9Jbm5lckNoYXJ0KSB7XG5cdFx0XHRcdC8vIGlmIHRoZSBhY3Rpb24gaXMgYSBkcmlsbCBkb3duLCBjaGFydCBzZWxlY3Rpb25zIG11c3QgYmUgY29uc2lkZXJlZFxuXHRcdFx0XHRpZiAoQ2hhcnRVdGlscy5nZXRDaGFydFNlbGVjdGlvbnNFeGlzdChvQ2hhcnQpKSB7XG5cdFx0XHRcdFx0b0ZpbHRlckluZm8gPSBDaGFydFV0aWxzLmdldEFsbEZpbHRlckluZm8ob0NoYXJ0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0b0ZpbHRlckluZm8gPSBvRmlsdGVySW5mbyA/IG9GaWx0ZXJJbmZvIDogQ2hhcnRVdGlscy5nZXRGaWx0ZXJCYXJGaWx0ZXJJbmZvKG9DaGFydCk7XG5cdFx0XHRpZiAob0ZpbHRlckluZm8pIHtcblx0XHRcdFx0b0JpbmRpbmdJbmZvLmZpbHRlcnMgPSBvRmlsdGVySW5mby5maWx0ZXJzO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBzUGFyYW1ldGVyUGF0aCA9IERlbGVnYXRlVXRpbC5nZXRQYXJhbWV0ZXJzSW5mbyhvRmlsdGVyLCBtQ29uZGl0aW9ucyk7XG5cdFx0XHRpZiAoc1BhcmFtZXRlclBhdGgpIHtcblx0XHRcdFx0b0JpbmRpbmdJbmZvLnBhdGggPSBzUGFyYW1ldGVyUGF0aDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBTZWFyY2hcblx0XHRjb25zdCBvSW5mbyA9IEZpbHRlclV0aWxzLmdldEZpbHRlckluZm8ob0ZpbHRlciwge30pO1xuXHRcdGNvbnN0IG9BcHBseVN1cHBvcnRlZCA9IENvbW1vbkhlbHBlci5wYXJzZUN1c3RvbURhdGEob0NoYXJ0LmRhdGEoXCJhcHBseVN1cHBvcnRlZFwiKSk7XG5cdFx0aWYgKG9BcHBseVN1cHBvcnRlZCAmJiBvQXBwbHlTdXBwb3J0ZWQuZW5hYmxlU2VhcmNoICYmIG9JbmZvLnNlYXJjaCkge1xuXHRcdFx0b0JpbmRpbmdJbmZvLnBhcmFtZXRlcnMuJHNlYXJjaCA9IENvbW1vblV0aWxzLm5vcm1hbGl6ZVNlYXJjaFRlcm0ob0luZm8uc2VhcmNoKTtcblx0XHR9IGVsc2UgaWYgKG9CaW5kaW5nSW5mby5wYXJhbWV0ZXJzLiRzZWFyY2gpIHtcblx0XHRcdGRlbGV0ZSBvQmluZGluZ0luZm8ucGFyYW1ldGVycy4kc2VhcmNoO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRpZiAoIW9CaW5kaW5nSW5mbykge1xuXHRcdFx0b0JpbmRpbmdJbmZvID0ge307XG5cdFx0fVxuXHRcdG9CaW5kaW5nSW5mby5zb3J0ZXIgPSB0aGlzLmdldFNvcnRlcnMob0NoYXJ0KTtcblx0fVxuXHRDaGFydERlbGVnYXRlLl9jaGVja0FuZEFkZERyYWZ0RmlsdGVyKG9DaGFydCwgb0JpbmRpbmdJbmZvKTtcbn07XG5cbkNoYXJ0RGVsZWdhdGUuZmV0Y2hQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKG9NRENDaGFydDogQ2hhcnQpIHtcblx0Y29uc3Qgb01vZGVsID0gdGhpcy5fZ2V0TW9kZWwob01EQ0NoYXJ0KTtcblx0bGV0IHBDcmVhdGVQcm9wZXJ0eUluZm9zO1xuXG5cdGlmICghb01vZGVsKSB7XG5cdFx0cENyZWF0ZVByb3BlcnR5SW5mb3MgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZTogYW55KSA9PiB7XG5cdFx0XHRvTURDQ2hhcnQuYXR0YWNoTW9kZWxDb250ZXh0Q2hhbmdlKFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0cmVzb2x2ZXI6IHJlc29sdmVcblx0XHRcdFx0fSxcblx0XHRcdFx0b25Nb2RlbENvbnRleHRDaGFuZ2UgYXMgYW55LFxuXHRcdFx0XHR0aGlzXG5cdFx0XHQpO1xuXHRcdH0pLnRoZW4oKG9SZXRyaWV2ZWRNb2RlbDogYW55KSA9PiB7XG5cdFx0XHRyZXR1cm4gdGhpcy5fY3JlYXRlUHJvcGVydHlJbmZvcyhvTURDQ2hhcnQsIG9SZXRyaWV2ZWRNb2RlbCk7XG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0cENyZWF0ZVByb3BlcnR5SW5mb3MgPSB0aGlzLl9jcmVhdGVQcm9wZXJ0eUluZm9zKG9NRENDaGFydCwgb01vZGVsKTtcblx0fVxuXG5cdHJldHVybiBwQ3JlYXRlUHJvcGVydHlJbmZvcy50aGVuKGZ1bmN0aW9uIChhUHJvcGVydGllczogYW55KSB7XG5cdFx0aWYgKG9NRENDaGFydC5kYXRhKSB7XG5cdFx0XHRvTURDQ2hhcnQuZGF0YShcIiRtZGNDaGFydFByb3BlcnR5SW5mb1wiLCBhUHJvcGVydGllcyk7XG5cdFx0fVxuXHRcdHJldHVybiBhUHJvcGVydGllcztcblx0fSk7XG59O1xuZnVuY3Rpb24gb25Nb2RlbENvbnRleHRDaGFuZ2UodGhpczogdHlwZW9mIENoYXJ0RGVsZWdhdGUsIG9FdmVudDogYW55LCBvRGF0YTogYW55KSB7XG5cdGNvbnN0IG9NRENDaGFydCA9IG9FdmVudC5nZXRTb3VyY2UoKTtcblx0Y29uc3Qgb01vZGVsID0gdGhpcy5fZ2V0TW9kZWwob01EQ0NoYXJ0KTtcblxuXHRpZiAob01vZGVsKSB7XG5cdFx0b01EQ0NoYXJ0LmRldGFjaE1vZGVsQ29udGV4dENoYW5nZShvbk1vZGVsQ29udGV4dENoYW5nZSk7XG5cdFx0b0RhdGEucmVzb2x2ZXIob01vZGVsKTtcblx0fVxufVxuQ2hhcnREZWxlZ2F0ZS5fY3JlYXRlUHJvcGVydHlJbmZvcyA9IGZ1bmN0aW9uIChvTURDQ2hhcnQ6IGFueSwgb01vZGVsOiBhbnkpIHtcblx0Y29uc3Qgc0VudGl0eVNldFBhdGggPSBgLyR7b01EQ0NoYXJ0LmRhdGEoXCJlbnRpdHlTZXRcIil9YDtcblx0Y29uc3Qgb01ldGFNb2RlbCA9IG9Nb2RlbC5nZXRNZXRhTW9kZWwoKTtcblxuXHRyZXR1cm4gUHJvbWlzZS5hbGwoW29NZXRhTW9kZWwucmVxdWVzdE9iamVjdChgJHtzRW50aXR5U2V0UGF0aH0vYCksIG9NZXRhTW9kZWwucmVxdWVzdE9iamVjdChgJHtzRW50aXR5U2V0UGF0aH1AYCldKS50aGVuKGZ1bmN0aW9uIChcblx0XHRhUmVzdWx0czogW2FueSwgYW55XVxuXHQpIHtcblx0XHRjb25zdCBhUHJvcGVydGllczogYW55W10gPSBbXTtcblx0XHRjb25zdCBvRW50aXR5VHlwZSA9IGFSZXN1bHRzWzBdLFxuXHRcdFx0bUVudGl0eVNldEFubm90YXRpb25zID0gYVJlc3VsdHNbMV07XG5cdFx0Y29uc3QgbUN1c3RvbUFnZ3JlZ2F0ZXMgPSBDb21tb25IZWxwZXIucGFyc2VDdXN0b21EYXRhKG9NRENDaGFydC5kYXRhKFwiY3VzdG9tQWdnXCIpKTtcblx0XHRsZXQgc0Fubm87XG5cdFx0Y29uc3QgYVByb3BlcnR5UHJvbWlzZSA9IFtdO1xuXHRcdGZvciAoY29uc3Qgc0Fubm9LZXkgaW4gbUVudGl0eVNldEFubm90YXRpb25zKSB7XG5cdFx0XHRpZiAoc0Fubm9LZXkuc3RhcnRzV2l0aChcIkBPcmcuT0RhdGEuQWdncmVnYXRpb24uVjEuQ3VzdG9tQWdncmVnYXRlXCIpKSB7XG5cdFx0XHRcdHNBbm5vID0gc0Fubm9LZXkucmVwbGFjZShcIkBPcmcuT0RhdGEuQWdncmVnYXRpb24uVjEuQ3VzdG9tQWdncmVnYXRlI1wiLCBcIlwiKTtcblx0XHRcdFx0Y29uc3QgYUFubm8gPSBzQW5uby5zcGxpdChcIkBcIik7XG5cblx0XHRcdFx0aWYgKGFBbm5vLmxlbmd0aCA9PSAyICYmIGFBbm5vWzFdID09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkxhYmVsXCIpIHtcblx0XHRcdFx0XHRtQ3VzdG9tQWdncmVnYXRlc1thQW5ub1swXV0gPSBtRW50aXR5U2V0QW5ub3RhdGlvbnNbc0Fubm9LZXldO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGNvbnN0IGFEaW1lbnNpb25zOiBhbnlbXSA9IFtdLFxuXHRcdFx0YU1lYXN1cmVzID0gW107XG5cdFx0aWYgKE9iamVjdC5rZXlzKG1DdXN0b21BZ2dyZWdhdGVzKS5sZW5ndGggPj0gMSkge1xuXHRcdFx0Y29uc3QgYUNoYXJ0SXRlbXMgPSBvTURDQ2hhcnQuZ2V0SXRlbXMoKTtcblx0XHRcdGZvciAoY29uc3Qga2V5IGluIGFDaGFydEl0ZW1zKSB7XG5cdFx0XHRcdGlmIChhQ2hhcnRJdGVtc1trZXldLmlzQShcInNhcC51aS5tZGMuY2hhcnQuRGltZW5zaW9uSXRlbVwiKSkge1xuXHRcdFx0XHRcdGFEaW1lbnNpb25zLnB1c2goYUNoYXJ0SXRlbXNba2V5XS5nZXRLZXkoKSk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYUNoYXJ0SXRlbXNba2V5XS5pc0EoXCJzYXAudWkubWRjLmNoYXJ0Lk1lYXN1cmVJdGVtXCIpKSB7XG5cdFx0XHRcdFx0YU1lYXN1cmVzLnB1c2goYUNoYXJ0SXRlbXNba2V5XS5nZXRLZXkoKSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChcblx0XHRcdFx0YU1lYXN1cmVzLmZpbHRlcihmdW5jdGlvbiAodmFsOiBhbnkpIHtcblx0XHRcdFx0XHRyZXR1cm4gYURpbWVuc2lvbnMuaW5kZXhPZih2YWwpICE9IC0xO1xuXHRcdFx0XHR9KS5sZW5ndGggPj0gMVxuXHRcdFx0KSB7XG5cdFx0XHRcdExvZy5lcnJvcihcIkRpbWVuc2lvbiBhbmQgTWVhc3VyZSBoYXMgdGhlIHNhbWVQcm9wZXJ0eSBDb25maWd1cmVkXCIpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGNvbnN0IG1UeXBlQWdncmVnYXRhYmxlUHJvcHMgPSBDb21tb25IZWxwZXIucGFyc2VDdXN0b21EYXRhKG9NRENDaGFydC5kYXRhKFwidHJhbnNBZ2dcIikpO1xuXHRcdGNvbnN0IG1Lbm93bkFnZ3JlZ2F0YWJsZVByb3BzOiBhbnkgPSB7fTtcblx0XHRmb3IgKGNvbnN0IHNBZ2dyZWdhdGFibGUgaW4gbVR5cGVBZ2dyZWdhdGFibGVQcm9wcykge1xuXHRcdFx0Y29uc3Qgc1Byb3BLZXkgPSBtVHlwZUFnZ3JlZ2F0YWJsZVByb3BzW3NBZ2dyZWdhdGFibGVdLnByb3BlcnR5UGF0aDtcblx0XHRcdG1Lbm93bkFnZ3JlZ2F0YWJsZVByb3BzW3NQcm9wS2V5XSA9IG1Lbm93bkFnZ3JlZ2F0YWJsZVByb3BzW3NQcm9wS2V5XSB8fCB7fTtcblx0XHRcdG1Lbm93bkFnZ3JlZ2F0YWJsZVByb3BzW3NQcm9wS2V5XVttVHlwZUFnZ3JlZ2F0YWJsZVByb3BzW3NBZ2dyZWdhdGFibGVdLmFnZ3JlZ2F0aW9uTWV0aG9kXSA9IHtcblx0XHRcdFx0bmFtZTogbVR5cGVBZ2dyZWdhdGFibGVQcm9wc1tzQWdncmVnYXRhYmxlXS5uYW1lLFxuXHRcdFx0XHRsYWJlbDogbVR5cGVBZ2dyZWdhdGFibGVQcm9wc1tzQWdncmVnYXRhYmxlXS5sYWJlbFxuXHRcdFx0fTtcblx0XHR9XG5cdFx0Zm9yIChjb25zdCBzS2V5IGluIG9FbnRpdHlUeXBlKSB7XG5cdFx0XHRpZiAoc0tleS5pbmRleE9mKFwiJFwiKSAhPT0gMCkge1xuXHRcdFx0XHRhUHJvcGVydHlQcm9taXNlLnB1c2goXG5cdFx0XHRcdFx0TWV0YU1vZGVsVXRpbC5mZXRjaENyaXRpY2FsaXR5KG9NZXRhTW9kZWwsIG9NZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoYCR7c0VudGl0eVNldFBhdGh9LyR7c0tleX1gKSkudGhlbihcblx0XHRcdFx0XHRcdENoYXJ0RGVsZWdhdGUuX2hhbmRsZVByb3BlcnR5LmJpbmQoXG5cdFx0XHRcdFx0XHRcdG9NZXRhTW9kZWwuZ2V0TWV0YUNvbnRleHQoYCR7c0VudGl0eVNldFBhdGh9LyR7c0tleX1gKSxcblx0XHRcdFx0XHRcdFx0b01EQ0NoYXJ0LFxuXHRcdFx0XHRcdFx0XHRtRW50aXR5U2V0QW5ub3RhdGlvbnMsXG5cdFx0XHRcdFx0XHRcdG1Lbm93bkFnZ3JlZ2F0YWJsZVByb3BzLFxuXHRcdFx0XHRcdFx0XHRtQ3VzdG9tQWdncmVnYXRlcyxcblx0XHRcdFx0XHRcdFx0YVByb3BlcnRpZXNcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBQcm9taXNlLmFsbChhUHJvcGVydHlQcm9taXNlKS50aGVuKGZ1bmN0aW9uICgpIHtcblx0XHRcdHJldHVybiBhUHJvcGVydGllcztcblx0XHR9KTtcblx0fSk7XG59O1xuXG5DaGFydERlbGVnYXRlLl9jcmVhdGVQcm9wZXJ0eUluZm9zRm9yQWdncmVnYXRhYmxlID0gZnVuY3Rpb24gKFxuXHRvTURDQ2hhcnQ6IENoYXJ0LFxuXHRzS2V5OiBzdHJpbmcsXG5cdG9Qcm9wZXJ0eUFubm90YXRpb25zOiBhbnksXG5cdG9GaWx0ZXJSZXN0cmljdGlvbnNJbmZvOiBhbnksXG5cdG9Tb3J0UmVzdHJpY3Rpb25zSW5mbzogYW55LFxuXHRtS25vd25BZ2dyZWdhdGFibGVQcm9wczogYW55LFxuXHRtQ3VzdG9tQWdncmVnYXRlczogYW55XG4pIHtcblx0Y29uc3QgYUFnZ3JlZ2F0ZVByb3BlcnRpZXMgPSBbXTtcblx0aWYgKE9iamVjdC5rZXlzKG1Lbm93bkFnZ3JlZ2F0YWJsZVByb3BzKS5pbmRleE9mKHNLZXkpID4gLTEpIHtcblx0XHRmb3IgKGNvbnN0IHNBZ2dyZWdhdGFibGUgaW4gbUtub3duQWdncmVnYXRhYmxlUHJvcHNbc0tleV0pIHtcblx0XHRcdGFBZ2dyZWdhdGVQcm9wZXJ0aWVzLnB1c2goe1xuXHRcdFx0XHRuYW1lOiBtS25vd25BZ2dyZWdhdGFibGVQcm9wc1tzS2V5XVtzQWdncmVnYXRhYmxlXS5uYW1lLFxuXHRcdFx0XHRwcm9wZXJ0eVBhdGg6IHNLZXksXG5cdFx0XHRcdGxhYmVsOlxuXHRcdFx0XHRcdG1Lbm93bkFnZ3JlZ2F0YWJsZVByb3BzW3NLZXldW3NBZ2dyZWdhdGFibGVdLmxhYmVsIHx8XG5cdFx0XHRcdFx0YCR7b1Byb3BlcnR5QW5ub3RhdGlvbnNbXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkxhYmVsXCJdfSAoJHtzQWdncmVnYXRhYmxlfSlgIHx8XG5cdFx0XHRcdFx0YCR7c0tleX0gKCR7c0FnZ3JlZ2F0YWJsZX0pYCxcblx0XHRcdFx0c29ydGFibGU6IG9Tb3J0UmVzdHJpY3Rpb25zSW5mb1tzS2V5XSA/IG9Tb3J0UmVzdHJpY3Rpb25zSW5mb1tzS2V5XS5zb3J0YWJsZSA6IHRydWUsXG5cdFx0XHRcdGZpbHRlcmFibGU6IG9GaWx0ZXJSZXN0cmljdGlvbnNJbmZvW3NLZXldID8gb0ZpbHRlclJlc3RyaWN0aW9uc0luZm9bc0tleV0uZmlsdGVyYWJsZSA6IHRydWUsXG5cdFx0XHRcdGdyb3VwYWJsZTogZmFsc2UsXG5cdFx0XHRcdGFnZ3JlZ2F0YWJsZTogdHJ1ZSxcblx0XHRcdFx0YWdncmVnYXRpb25NZXRob2Q6IHNBZ2dyZWdhdGFibGUsXG5cdFx0XHRcdG1heENvbmRpdGlvbnM6IE9EYXRhTWV0YU1vZGVsVXRpbC5pc011bHRpVmFsdWVGaWx0ZXJFeHByZXNzaW9uKG9GaWx0ZXJSZXN0cmljdGlvbnNJbmZvLnByb3BlcnR5SW5mb1tzS2V5XSkgPyAtMSA6IDEsXG5cdFx0XHRcdHJvbGU6IENoYXJ0SXRlbVJvbGVUeXBlLmF4aXMxLFxuXHRcdFx0XHRkYXRhcG9pbnQ6IG51bGwgLy9UbyBiZSBpbXBsZW1lbnRlZCBieSBGRVxuXHRcdFx0fSk7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKE9iamVjdC5rZXlzKG1DdXN0b21BZ2dyZWdhdGVzKS5pbmRleE9mKHNLZXkpID4gLTEpIHtcblx0XHRmb3IgKGNvbnN0IHNDdXN0b20gaW4gbUN1c3RvbUFnZ3JlZ2F0ZXMpIHtcblx0XHRcdGlmIChzQ3VzdG9tID09PSBzS2V5KSB7XG5cdFx0XHRcdGNvbnN0IG9JdGVtID0gbWVyZ2Uoe30sIG1DdXN0b21BZ2dyZWdhdGVzW3NDdXN0b21dLCB7XG5cdFx0XHRcdFx0Z3JvdXBhYmxlOiBmYWxzZSxcblx0XHRcdFx0XHRhZ2dyZWdhdGFibGU6IHRydWUsXG5cdFx0XHRcdFx0cm9sZTogQ2hhcnRJdGVtUm9sZVR5cGUuYXhpczEsXG5cdFx0XHRcdFx0ZGF0YXBvaW50OiBudWxsIC8vVG8gYmUgaW1wbGVtZW50ZWQgYnkgRkVcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGFBZ2dyZWdhdGVQcm9wZXJ0aWVzLnB1c2gob0l0ZW0pO1xuXG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRyZXR1cm4gYUFnZ3JlZ2F0ZVByb3BlcnRpZXM7XG59O1xuQ2hhcnREZWxlZ2F0ZS5yZWJpbmQgPSBmdW5jdGlvbiAob01EQ0NoYXJ0OiBhbnksIG9CaW5kaW5nSW5mbzogYW55KSB7XG5cdGNvbnN0IHNTZWFyY2ggPSBvQmluZGluZ0luZm8ucGFyYW1ldGVycy4kc2VhcmNoO1xuXG5cdGlmIChzU2VhcmNoKSB7XG5cdFx0ZGVsZXRlIG9CaW5kaW5nSW5mby5wYXJhbWV0ZXJzLiRzZWFyY2g7XG5cdH1cblxuXHRCYXNlQ2hhcnREZWxlZ2F0ZS5yZWJpbmQob01EQ0NoYXJ0LCBvQmluZGluZ0luZm8pO1xuXG5cdGlmIChzU2VhcmNoKSB7XG5cdFx0Y29uc3Qgb0lubmVyQ2hhcnQgPSBvTURDQ2hhcnQuZ2V0Q29udHJvbERlbGVnYXRlKCkuZ2V0SW5uZXJDaGFydChvTURDQ2hhcnQpLFxuXHRcdFx0b0NoYXJ0QmluZGluZyA9IG9Jbm5lckNoYXJ0ICYmIG9Jbm5lckNoYXJ0LmdldEJpbmRpbmcoXCJkYXRhXCIpO1xuXG5cdFx0Ly8gVGVtcG9yYXJ5IHdvcmthcm91bmQgdW50aWwgdGhpcyBpcyBmaXhlZCBpbiBNRENDaGFydCAvIFVJNSBDaGFydFxuXHRcdC8vIEluIG9yZGVyIHRvIGF2b2lkIGhhdmluZyAyIE9EYXRhIHJlcXVlc3RzLCB3ZSBuZWVkIHRvIHN1c3BlbmQgdGhlIGJpbmRpbmcgYmVmb3JlIHNldHRpbmcgc29tZSBhZ2dyZWdhdGlvbiBwcm9wZXJ0aWVzXG5cdFx0Ly8gYW5kIHJlc3VtZSBpdCBvbmNlIHRoZSBjaGFydCBoYXMgYWRkZWQgb3RoZXIgYWdncmVnYXRpb24gcHJvcGVydGllcyAoaW4gb25CZWZvcmVSZW5kZXJpbmcpXG5cdFx0b0NoYXJ0QmluZGluZy5zdXNwZW5kKCk7XG5cdFx0b0NoYXJ0QmluZGluZy5zZXRBZ2dyZWdhdGlvbih7IHNlYXJjaDogc1NlYXJjaCB9KTtcblxuXHRcdGNvbnN0IG9Jbm5lckNoYXJ0RGVsZWdhdGUgPSB7XG5cdFx0XHRvbkJlZm9yZVJlbmRlcmluZzogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRvQ2hhcnRCaW5kaW5nLnJlc3VtZSgpO1xuXHRcdFx0XHRvSW5uZXJDaGFydC5yZW1vdmVFdmVudERlbGVnYXRlKG9Jbm5lckNoYXJ0RGVsZWdhdGUpO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0b0lubmVyQ2hhcnQuYWRkRXZlbnREZWxlZ2F0ZShvSW5uZXJDaGFydERlbGVnYXRlKTtcblx0fVxufTtcbkNoYXJ0RGVsZWdhdGUuX3NldENoYXJ0ID0gZnVuY3Rpb24gKG9NRENDaGFydDogYW55LCBvSW5uZXJDaGFydDogYW55KSB7XG5cdGNvbnN0IG9DaGFydEFQSSA9IG9NRENDaGFydC5nZXRQYXJlbnQoKTtcblx0b0lubmVyQ2hhcnQuc2V0Vml6UHJvcGVydGllcyhvTURDQ2hhcnQuZGF0YShcInZpelByb3BlcnRpZXNcIikpO1xuXHRvSW5uZXJDaGFydC5kZXRhY2hTZWxlY3REYXRhKG9DaGFydEFQSS5oYW5kbGVTZWxlY3Rpb25DaGFuZ2UuYmluZChvQ2hhcnRBUEkpKTtcblx0b0lubmVyQ2hhcnQuZGV0YWNoRGVzZWxlY3REYXRhKG9DaGFydEFQSS5oYW5kbGVTZWxlY3Rpb25DaGFuZ2UuYmluZChvQ2hhcnRBUEkpKTtcblx0b0lubmVyQ2hhcnQuZGV0YWNoRHJpbGxlZFVwKG9DaGFydEFQSS5oYW5kbGVTZWxlY3Rpb25DaGFuZ2UuYmluZChvQ2hhcnRBUEkpKTtcblx0b0lubmVyQ2hhcnQuYXR0YWNoU2VsZWN0RGF0YShvQ2hhcnRBUEkuaGFuZGxlU2VsZWN0aW9uQ2hhbmdlLmJpbmQob0NoYXJ0QVBJKSk7XG5cdG9Jbm5lckNoYXJ0LmF0dGFjaERlc2VsZWN0RGF0YShvQ2hhcnRBUEkuaGFuZGxlU2VsZWN0aW9uQ2hhbmdlLmJpbmQob0NoYXJ0QVBJKSk7XG5cdG9Jbm5lckNoYXJ0LmF0dGFjaERyaWxsZWRVcChvQ2hhcnRBUEkuaGFuZGxlU2VsZWN0aW9uQ2hhbmdlLmJpbmQob0NoYXJ0QVBJKSk7XG5cblx0b0lubmVyQ2hhcnQuc2V0U2VsZWN0aW9uTW9kZShvTURDQ2hhcnQuZ2V0UGF5bG9hZCgpLnNlbGVjdGlvbk1vZGUudG9VcHBlckNhc2UoKSk7XG5cdEJhc2VDaGFydERlbGVnYXRlLl9zZXRDaGFydChvTURDQ2hhcnQsIG9Jbm5lckNoYXJ0KTtcbn07XG5DaGFydERlbGVnYXRlLl9nZXRCaW5kaW5nSW5mbyA9IGZ1bmN0aW9uIChvTURDQ2hhcnQ6IGFueSkge1xuXHRpZiAodGhpcy5fZ2V0QmluZGluZ0luZm9Gcm9tU3RhdGUob01EQ0NoYXJ0KSkge1xuXHRcdHJldHVybiB0aGlzLl9nZXRCaW5kaW5nSW5mb0Zyb21TdGF0ZShvTURDQ2hhcnQpO1xuXHR9XG5cblx0Y29uc3Qgb01ldGFkYXRhSW5mbyA9IG9NRENDaGFydC5nZXREZWxlZ2F0ZSgpLnBheWxvYWQ7XG5cdGNvbnN0IG9NZXRhTW9kZWwgPSBvTURDQ2hhcnQuZ2V0TW9kZWwoKSAmJiBvTURDQ2hhcnQuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKTtcblx0Y29uc3Qgc1RhcmdldENvbGxlY3Rpb25QYXRoID0gb01EQ0NoYXJ0LmRhdGEoXCJ0YXJnZXRDb2xsZWN0aW9uUGF0aFwiKTtcblx0Y29uc3Qgc0VudGl0eVNldFBhdGggPVxuXHRcdChvTWV0YU1vZGVsLmdldE9iamVjdChgJHtzVGFyZ2V0Q29sbGVjdGlvblBhdGh9LyRraW5kYCkgIT09IFwiTmF2aWdhdGlvblByb3BlcnR5XCIgPyBcIi9cIiA6IFwiXCIpICsgb01ldGFkYXRhSW5mby5jb250ZXh0UGF0aDtcblx0Y29uc3Qgb1BhcmFtcyA9IG1lcmdlKHt9LCBvTWV0YWRhdGFJbmZvLnBhcmFtZXRlcnMsIHtcblx0XHRlbnRpdHlTZXQ6IG9NRENDaGFydC5kYXRhKFwiZW50aXR5U2V0XCIpLFxuXHRcdHVzZUJhdGNoUmVxdWVzdHM6IHRydWUsXG5cdFx0cHJvdmlkZUdyYW5kVG90YWxzOiB0cnVlLFxuXHRcdHByb3ZpZGVUb3RhbFJlc3VsdFNpemU6IHRydWUsXG5cdFx0bm9QYWdpbmc6IHRydWVcblx0fSk7XG5cdHJldHVybiB7XG5cdFx0cGF0aDogc0VudGl0eVNldFBhdGgsXG5cdFx0cGFyYW1ldGVyczogb1BhcmFtc1xuXHR9O1xufTtcbkNoYXJ0RGVsZWdhdGUucmVtb3ZlSXRlbUZyb21Jbm5lckNoYXJ0ID0gZnVuY3Rpb24gKG9NRENDaGFydDogYW55LCBvTURDQ2hhcnRJdGVtOiBhbnkpIHtcblx0QmFzZUNoYXJ0RGVsZWdhdGUucmVtb3ZlSXRlbUZyb21Jbm5lckNoYXJ0LmNhbGwodGhpcywgb01EQ0NoYXJ0LCBvTURDQ2hhcnRJdGVtKTtcblx0aWYgKG9NRENDaGFydEl0ZW0uZ2V0VHlwZSgpID09PSBcImdyb3VwYWJsZVwiKSB7XG5cdFx0Y29uc3Qgb0lubmVyQ2hhcnQgPSB0aGlzLl9nZXRDaGFydChvTURDQ2hhcnQpO1xuXHRcdG9Jbm5lckNoYXJ0LmZpcmVEZXNlbGVjdERhdGEoKTtcblx0fVxufTtcbkNoYXJ0RGVsZWdhdGUuX2dldFNvcnRhYmxlID0gZnVuY3Rpb24gKG9NRENDaGFydDogYW55LCBvU29ydFJlc3RyaWN0aW9uczogYW55LCBiSXNUcmFuc0FnZ3JlZ2F0ZTogYW55KSB7XG5cdGlmIChiSXNUcmFuc0FnZ3JlZ2F0ZSkge1xuXHRcdGlmIChvTURDQ2hhcnQuZGF0YShcImRyYWZ0U3VwcG9ydGVkXCIpID09PSBcInRydWVcIikge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gb1NvcnRSZXN0cmljdGlvbnMgPyBvU29ydFJlc3RyaWN0aW9ucy5zb3J0YWJsZSA6IHRydWU7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBvU29ydFJlc3RyaWN0aW9ucyA/IG9Tb3J0UmVzdHJpY3Rpb25zLnNvcnRhYmxlIDogdHJ1ZTtcbn07XG5DaGFydERlbGVnYXRlLl9jaGVja0FuZEFkZERyYWZ0RmlsdGVyID0gZnVuY3Rpb24gKG9DaGFydDogYW55LCBvQmluZGluZ0luZm86IGFueSkge1xuXHRpZiAob0NoYXJ0LmRhdGEoXCJkcmFmdFN1cHBvcnRlZFwiKSA9PT0gXCJ0cnVlXCIpIHtcblx0XHRpZiAoIW9CaW5kaW5nSW5mbykge1xuXHRcdFx0b0JpbmRpbmdJbmZvID0ge307XG5cdFx0fVxuXHRcdGlmICghb0JpbmRpbmdJbmZvLmZpbHRlcnMpIHtcblx0XHRcdG9CaW5kaW5nSW5mby5maWx0ZXJzID0gW107XG5cdFx0fVxuXHRcdG9CaW5kaW5nSW5mby5maWx0ZXJzLnB1c2gobmV3IEZpbHRlcihcIklzQWN0aXZlRW50aXR5XCIsIEZpbHRlck9wZXJhdG9yLkVRLCB0cnVlKSk7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IENoYXJ0RGVsZWdhdGU7XG4iXX0=
|