@sapui5/sap.fe.macros 1.138.0 → 1.139.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/macros/.library +1 -1
- package/src/sap/fe/macros/Breadcrumbs.js +269 -0
- package/src/sap/fe/macros/Breadcrumbs.tsx +243 -0
- package/src/sap/fe/macros/CommonHelper.js +2 -2
- package/src/sap/fe/macros/CommonHelper.ts +1 -1
- package/src/sap/fe/macros/Field.js +21 -4
- package/src/sap/fe/macros/Field.ts +21 -3
- package/src/sap/fe/macros/FooterContent.js +40 -10
- package/src/sap/fe/macros/FooterContent.tsx +44 -8
- package/src/sap/fe/macros/FormElement.js +2 -2
- package/src/sap/fe/macros/FormElement.ts +1 -2
- package/src/sap/fe/macros/MultiValueField.js +17 -4
- package/src/sap/fe/macros/MultiValueField.tsx +7 -2
- package/src/sap/fe/macros/RichTextEditor.js +30 -5
- package/src/sap/fe/macros/RichTextEditor.tsx +34 -6
- package/src/sap/fe/macros/Share.js +73 -40
- package/src/sap/fe/macros/Share.tsx +29 -1
- package/src/sap/fe/macros/ValueHelp.js +3 -4
- package/src/sap/fe/macros/ValueHelp.tsx +2 -3
- package/src/sap/fe/macros/ai/EasyFillButton.js +10 -4
- package/src/sap/fe/macros/ai/EasyFillButton.tsx +8 -1
- package/src/sap/fe/macros/ai/EasyFillDialog.js +25 -10
- package/src/sap/fe/macros/ai/EasyFillDialog.tsx +32 -23
- package/src/sap/fe/macros/ai/EasyFilterBar.js +30 -30
- package/src/sap/fe/macros/ai/EasyFilterBar.tsx +40 -43
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +11 -5
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +14 -5
- package/src/sap/fe/macros/chart/ChartDelegate.js +4 -4
- package/src/sap/fe/macros/chart/ChartDelegate.ts +3 -3
- package/src/sap/fe/macros/chart/MdcChartTemplate.js +19 -3
- package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +15 -4
- package/src/sap/fe/macros/controls/FieldWrapper.js +9 -3
- package/src/sap/fe/macros/controls/FieldWrapper.ts +11 -2
- package/src/sap/fe/macros/controls/FilterBar.js +49 -2
- package/src/sap/fe/macros/controls/FilterBar.ts +55 -1
- package/src/sap/fe/macros/controls/RequiredFlexBox.js +62 -0
- package/src/sap/fe/macros/controls/RequiredFlexBox.tsx +20 -0
- package/src/sap/fe/macros/controls/filterbar/VisualFilter.js +21 -11
- package/src/sap/fe/macros/controls/filterbar/VisualFilter.ts +25 -11
- package/src/sap/fe/macros/controls/filterbar/VisualFilterContainer.js +11 -2
- package/src/sap/fe/macros/controls/filterbar/VisualFilterContainer.ts +12 -1
- package/src/sap/fe/macros/controls/filterbar/utils/VisualFilterUtils.js +18 -1
- package/src/sap/fe/macros/controls/filterbar/utils/VisualFilterUtils.ts +20 -0
- package/src/sap/fe/macros/coreUI/CreateDialog.js +2 -2
- package/src/sap/fe/macros/coreUI/CreateDialog.tsx +1 -1
- package/src/sap/fe/macros/designtime/Designtime.helper.js +12 -2
- package/src/sap/fe/macros/designtime/Designtime.helper.ts +12 -0
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +15 -4
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +5 -0
- package/src/sap/fe/macros/field/FieldBaseDelegate.js +9 -3
- package/src/sap/fe/macros/field/FieldBaseDelegate.ts +22 -1
- package/src/sap/fe/macros/field/FieldFormatOptions.js +73 -44
- package/src/sap/fe/macros/field/FieldFormatOptions.ts +20 -2
- package/src/sap/fe/macros/filterBar/FilterBar.block.js +8 -2
- package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +2 -5
- package/src/sap/fe/macros/filterBar/FilterBarAPI.js +8 -8
- package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +8 -8
- package/src/sap/fe/macros/filterBar/designtime/FilterBar.designtime.js +3 -1
- package/src/sap/fe/macros/filterBar/designtime/FilterBar.designtime.ts +2 -0
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +1 -1
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +1 -1
- package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -2
- package/src/sap/fe/macros/form/FormContainer.fragment.xml +40 -0
- package/src/sap/fe/macros/form/FormContainerAPI.js +14 -16
- package/src/sap/fe/macros/form/FormContainerAPI.ts +13 -15
- package/src/sap/fe/macros/formatters/TableFormatter.js +10 -1
- package/src/sap/fe/macros/formatters/TableFormatter.ts +14 -5
- package/src/sap/fe/macros/inlineEdit/InlineEdit.js +15 -3
- package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +14 -2
- package/src/sap/fe/macros/internal/DataPoint.js +2 -1
- package/src/sap/fe/macros/internal/DataPoint.tsx +1 -0
- package/src/sap/fe/macros/internal/DataPointFormatOptions.js +11 -2
- package/src/sap/fe/macros/internal/DataPointFormatOptions.ts +3 -0
- package/src/sap/fe/macros/internal/FilterField.block.js +4 -2
- package/src/sap/fe/macros/internal/FilterField.block.ts +3 -1
- package/src/sap/fe/macros/internal/field/CheckBoxGroup.fragment.xml +25 -0
- package/src/sap/fe/macros/internal/field/DisplayStyle.js +49 -11
- package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +51 -4
- package/src/sap/fe/macros/internal/field/EditStyle.js +5 -1
- package/src/sap/fe/macros/internal/field/EditStyle.tsx +4 -0
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +9 -2
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +10 -0
- package/src/sap/fe/macros/internal/field/FieldStyles.js +1 -1
- package/src/sap/fe/macros/internal/field/FieldStyles.tsx +2 -1
- package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +1 -0
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +7 -3
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +8 -7
- package/src/sap/fe/macros/internal/valuehelp/ValueListTable.fragment.xml +1 -0
- package/src/sap/fe/macros/library.js +1 -1
- package/src/sap/fe/macros/mdc/adapter/StateHelper.js +7 -2
- package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +7 -3
- package/src/sap/fe/macros/messagebundle.properties +37 -29
- package/src/sap/fe/macros/messagebundle_ar.properties +5 -3
- package/src/sap/fe/macros/messagebundle_bg.properties +6 -4
- package/src/sap/fe/macros/messagebundle_ca.properties +8 -6
- package/src/sap/fe/macros/messagebundle_cnr.properties +5 -3
- package/src/sap/fe/macros/messagebundle_cs.properties +4 -2
- package/src/sap/fe/macros/messagebundle_cy.properties +7 -5
- package/src/sap/fe/macros/messagebundle_da.properties +6 -4
- package/src/sap/fe/macros/messagebundle_de.properties +11 -9
- package/src/sap/fe/macros/messagebundle_el.properties +7 -5
- package/src/sap/fe/macros/messagebundle_en.properties +8 -6
- package/src/sap/fe/macros/messagebundle_en_GB.properties +8 -6
- package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +8 -6
- package/src/sap/fe/macros/messagebundle_es.properties +6 -4
- package/src/sap/fe/macros/messagebundle_es_MX.properties +6 -4
- package/src/sap/fe/macros/messagebundle_et.properties +5 -3
- package/src/sap/fe/macros/messagebundle_fi.properties +8 -6
- package/src/sap/fe/macros/messagebundle_fr.properties +6 -4
- package/src/sap/fe/macros/messagebundle_fr_CA.properties +8 -6
- package/src/sap/fe/macros/messagebundle_hi.properties +6 -4
- package/src/sap/fe/macros/messagebundle_hr.properties +6 -4
- package/src/sap/fe/macros/messagebundle_hu.properties +4 -2
- package/src/sap/fe/macros/messagebundle_id.properties +8 -6
- package/src/sap/fe/macros/messagebundle_it.properties +4 -2
- package/src/sap/fe/macros/messagebundle_iw.properties +5 -3
- package/src/sap/fe/macros/messagebundle_ja.properties +5 -3
- package/src/sap/fe/macros/messagebundle_kk.properties +5 -3
- package/src/sap/fe/macros/messagebundle_ko.properties +4 -2
- package/src/sap/fe/macros/messagebundle_lt.properties +6 -4
- package/src/sap/fe/macros/messagebundle_lv.properties +5 -3
- package/src/sap/fe/macros/messagebundle_mk.properties +5 -3
- package/src/sap/fe/macros/messagebundle_ms.properties +8 -6
- package/src/sap/fe/macros/messagebundle_nl.properties +7 -5
- package/src/sap/fe/macros/messagebundle_no.properties +6 -4
- package/src/sap/fe/macros/messagebundle_pl.properties +6 -4
- package/src/sap/fe/macros/messagebundle_pt.properties +7 -5
- package/src/sap/fe/macros/messagebundle_pt_PT.properties +6 -4
- package/src/sap/fe/macros/messagebundle_ro.properties +7 -5
- package/src/sap/fe/macros/messagebundle_ru.properties +4 -2
- package/src/sap/fe/macros/messagebundle_sh.properties +5 -3
- package/src/sap/fe/macros/messagebundle_sk.properties +5 -3
- package/src/sap/fe/macros/messagebundle_sl.properties +6 -4
- package/src/sap/fe/macros/messagebundle_sr.properties +5 -3
- package/src/sap/fe/macros/messagebundle_sv.properties +5 -3
- package/src/sap/fe/macros/messagebundle_th.properties +4 -2
- package/src/sap/fe/macros/messagebundle_tr.properties +4 -2
- package/src/sap/fe/macros/messagebundle_uk.properties +10 -8
- package/src/sap/fe/macros/messagebundle_vi.properties +6 -4
- package/src/sap/fe/macros/messagebundle_zh_CN.properties +5 -3
- package/src/sap/fe/macros/messagebundle_zh_TW.properties +5 -3
- package/src/sap/fe/macros/messages/MessageButton.js +17 -19
- package/src/sap/fe/macros/messages/MessageButton.ts +24 -22
- package/src/sap/fe/macros/table/Action.js +24 -2
- package/src/sap/fe/macros/table/Action.ts +13 -0
- package/src/sap/fe/macros/table/ActionGroup.js +24 -2
- package/src/sap/fe/macros/table/ActionGroup.ts +13 -0
- package/src/sap/fe/macros/table/ActionGroupOverride.js +24 -2
- package/src/sap/fe/macros/table/ActionGroupOverride.ts +13 -0
- package/src/sap/fe/macros/table/ActionOverride.js +24 -2
- package/src/sap/fe/macros/table/ActionOverride.ts +13 -0
- package/src/sap/fe/macros/table/ActionsTemplating.js +73 -12
- package/src/sap/fe/macros/table/ActionsTemplating.tsx +69 -13
- package/src/sap/fe/macros/table/Column.js +3 -3
- package/src/sap/fe/macros/table/Column.ts +2 -2
- package/src/sap/fe/macros/table/MdcTableTemplate.js +18 -8
- package/src/sap/fe/macros/table/MdcTableTemplate.tsx +30 -5
- package/src/sap/fe/macros/table/QuickFilterSelector.js +35 -14
- package/src/sap/fe/macros/table/QuickFilterSelector.tsx +22 -3
- package/src/sap/fe/macros/table/Table.block.js +137 -108
- package/src/sap/fe/macros/table/Table.block.tsx +29 -2
- package/src/sap/fe/macros/table/TableAPI.js +143 -133
- package/src/sap/fe/macros/table/TableAPI.ts +5 -1
- package/src/sap/fe/macros/table/TableDefinition.js +4 -2
- package/src/sap/fe/macros/table/TableDefinition.ts +3 -1
- package/src/sap/fe/macros/table/TableRuntime.js +3 -3
- package/src/sap/fe/macros/table/TableRuntime.ts +2 -2
- package/src/sap/fe/macros/table/delegates/TableDelegate.js +25 -19
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +25 -23
- package/src/sap/fe/macros/table/designtime/Table.designtime.js +3 -1
- package/src/sap/fe/macros/table/designtime/Table.designtime.ts +2 -0
- package/src/sap/fe/macros/table/massEdit/designtime/MassEdit.designtime.js +3 -1
- package/src/sap/fe/macros/table/massEdit/designtime/MassEdit.designtime.ts +2 -1
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +2 -1
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +1 -0
- package/src/sap/fe/macros/table/mixin/TableHierarchy.js +4 -1
- package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +3 -0
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +11 -6
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +19 -14
- package/src/sap/fe/macros/visualfilters/VisualFilter.js +95 -6
- package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +93 -2
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +15 -3
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +17 -2
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2025 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/base/util/deepClone", "sap/fe/core/CommonUtils", "sap/m/Button", "sap/m/CheckBox", "sap/m/Dialog", "sap/m/Input", "sap/m/InputListItem", "sap/m/List", "sap/m/MessageStrip", "sap/m/MultiInput", "sap/m/Select", "sap/m/Token", "sap/ui/core/Item", "sap/ui/model/json/JSONModel"], function (deepClone, CommonUtils, Button, CheckBox, Dialog, Input, InputListItem, List, MessageStrip, MultiInput, Select, Token, Item, JSONModel) {
|
|
5
|
+
sap.ui.define(["sap/base/util/deepClone", "sap/fe/core/CommonUtils", "sap/m/Button", "sap/m/CheckBox", "sap/m/Dialog", "sap/m/Input", "sap/m/InputListItem", "sap/m/List", "sap/m/MessageStrip", "sap/m/MultiInput", "sap/m/Select", "sap/m/Token", "sap/ui/core/Component", "sap/ui/core/Item", "sap/ui/model/json/JSONModel"], function (deepClone, CommonUtils, Button, CheckBox, Dialog, Input, InputListItem, List, MessageStrip, MultiInput, Select, Token, Component, Item, JSONModel) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _exports = {};
|
|
@@ -438,6 +438,16 @@ sap.ui.define(["sap/base/util/deepClone", "sap/fe/core/CommonUtils", "sap/m/Butt
|
|
|
438
438
|
return props;
|
|
439
439
|
}
|
|
440
440
|
_exports.getPropertyNamesAndDescriptions = getPropertyNamesAndDescriptions;
|
|
441
|
+
function isManifestChangesEnabled(control) {
|
|
442
|
+
let owner = Component.getOwnerComponentFor(control);
|
|
443
|
+
if (owner === undefined && control.getParent()) {
|
|
444
|
+
// In case of MassEdit, control is a sap.m.Dialog for which there is now OwnerComponent, so we need to consider its parent control
|
|
445
|
+
owner = Component.getOwnerComponentFor(control.getParent());
|
|
446
|
+
}
|
|
447
|
+
const sapFeManifest = owner?.getAppComponent().getManifestEntry("sap.fe");
|
|
448
|
+
return sapFeManifest?.app?.disableManifestChanges !== true;
|
|
449
|
+
}
|
|
450
|
+
_exports.isManifestChangesEnabled = isManifestChangesEnabled;
|
|
441
451
|
return _exports;
|
|
442
452
|
}, false);
|
|
443
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRDaGFuZ2VkUHJvcGVydHlWYWx1ZXMiLCJkZXNpZ250aW1lU2V0dGluZ3MiLCJ1bmNoYW5nZWREYXRhIiwicHJvcGVydHlWYWx1ZXMiLCJwcm9wZXJ0eUNoYW5nZXMiLCJmb3JFYWNoIiwic2V0dGluZyIsImlkIiwiSlNPTiIsInN0cmluZ2lmeSIsIndyaXRlT2JqZWN0Iiwid3JpdGVPYmplY3RGb3IiLCJjaGFuZ2VPYmplY3QiLCJsZW5ndGgiLCJzZXR0aW5nc1RvZ2V0aGVyIiwicGF0aCIsInNraXBDaGFuZ2UiLCJfZXhwb3J0cyIsImdldENoYW5nZVN0cnVjdHVyZSIsImFwcENvbXBvbmVudCIsInBhZ2UiLCJwcm9wZXJ0eVBhdGgiLCJzZWxlY3RvciIsImNoYW5nZVNwZWNpZmljRGF0YSIsImFwcERlc2NyaXB0b3JDaGFuZ2VUeXBlIiwiY29udGVudCIsInBhcmFtZXRlcnMiLCJlbnRpdHlQcm9wZXJ0eUNoYW5nZSIsIm9wZXJhdGlvbiIsInByb3BlcnR5VmFsdWUiLCJzZXRMb2NhbFRleHQiLCJpdGVtIiwicmVzb3VyY2VNb2RlbCIsImtleSIsImdldFRleHQiLCJzZXRMb2NhbFRleHRzIiwibW9kZWwiLCJzZXR0aW5nc0RhdGEiLCJnZXREYXRhIiwiY29udHJvbCIsImNvbnRyb2xEYXRhIiwiZW51bSIsImVudW1EYXRhIiwiY3JlYXRlQWRhcHRpb25EaWFsb2dDb250ZW50IiwiY29uZmlnQ29udGV4dCIsImNvbmZpZ1BhdGgiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJzZXR0aW5nc01vZGVsIiwiSlNPTk1vZGVsIiwic2V0RGF0YSIsImRlZXBDbG9uZSIsImdldFByb3BlcnR5IiwibGlzdCIsIkxpc3QiLCJzZXRNb2RlbCIsImxpc3RJdGVtIiwiSW5wdXRMaXN0SXRlbSIsImxhYmVsIiwiYmluZENvbnRlbnQiLCJmYWN0b3J5IiwiY29udGV4dCIsInR5cGUiLCJJdGVtIiwidGV4dCIsInNlbGVjdCIsIlNlbGVjdCIsInNlbGVjdGVkS2V5IiwiY2hhbmdlIiwiZXZlbnQiLCJkYXRhIiwiZ2V0UGFyYW1ldGVyIiwiZ2V0S2V5IiwiYmluZEl0ZW1zIiwidGVtcGxhdGUiLCJJbnB1dCIsInZhbHVlIiwib011bHRpSW5wdXQiLCJNdWx0aUlucHV0Iiwid2lkdGgiLCJzaG93VmFsdWVIZWxwIiwic2hvd0NsZWFySWNvbiIsInRva2VucyIsIm5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwibWFwIiwibmF2aWdhdGlvblByb3BlcnR5IiwiVG9rZW4iLCJ0b2tlblVwZGF0ZSIsImFycmF5IiwicHVzaCIsInNwbGljZSIsImluZGV4T2YiLCJhZGRWYWxpZGF0b3IiLCJhcmdzIiwiQ2hlY2tCb3giLCJzZWxlY3RlZCIsInRvTG93ZXJDYXNlIiwicGFyc2UiLCJ0b1N0cmluZyIsIm9wZW5BZGFwdGlvbkRpYWxvZyIsInRpdGxlIiwiaW5mb1RleHQiLCJzaXplIiwiaW5mb3JtYXRpb25NZXNzYWdlIiwiTWVzc2FnZVN0cmlwIiwic2hvd0ljb24iLCJhZGRTdHlsZUNsYXNzIiwibGlzdEluZGV4IiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJkaWFsb2ciLCJEaWFsb2ciLCJjb250ZW50V2lkdGgiLCJjb250ZW50SGVpZ2h0IiwiaGVpZ2h0IiwiYnV0dG9ucyIsIkJ1dHRvbiIsInByZXNzIiwidXBkYXRlQ29uZmlnTW9kZWwiLCJnZXRDb250ZW50IiwiZ2V0TW9kZWwiLCJjbG9zZSIsIm9wZW4iLCJwcm9jZXNzQ2hhbmdlcyIsInNpbmdsZUNoYW5nZSIsImNoYW5nZXMiLCJPYmplY3QiLCJlbnRyaWVzIiwiZ2V0Q2hhbmdlIiwicHJvY2Vzc0dsb2JhbENoYW5nZXMiLCJrZXlzIiwic2VwYXJhdGVDaGFuZ2VzIiwiQ29tbW9uVXRpbHMiLCJnZXRBcHBDb21wb25lbnQiLCJnZXRQYWdlIiwiZ2V0UGFyZW50Iiwic2VwYXJhdGVHbG9iYWxDaGFuZ2VzIiwidmlld0lkIiwiZ2V0VGFyZ2V0VmlldyIsImdldElkIiwic3BsaXQiLCJleHRyYWN0Q2hhbmdlcyIsInByb3BlcnR5VmFsdWVzRW50ZXJlZCIsImdsb2JhbFNldHRpbmdzIiwiZ2xvYmFsQ2hhbmdlcyIsImdsb2JhbCIsImNvbmNhdCIsIm5vQ2hhbmdlcyIsImlzRmlvcmlUb29sc1J0YU1vZGUiLCJ1cmxQYXJhbXMiLCJzaGVsbFNlcnZpY2UiLCJnZXRTaGVsbFNlcnZpY2VzIiwicGFyc2VQYXJhbWV0ZXJzIiwid2luZG93IiwibG9jYXRpb24iLCJzZWFyY2giLCJpc1JUQU1vZGUiLCJnZXRTZXR0aW5nc0lmS2V5VXNlciIsIml0ZW1zIiwiZmlsdGVyIiwia2V5VXNlciIsImlzQ29uZmlnTW9kZWxQcmVwYXJlZCIsInByZXBhcmVDb25maWdNb2RlbCIsInNldFByb3BlcnR5IiwiZ2V0UGVyc29uYWxpemF0aW9uU2V0dGluZyIsInNldHRpbmdzIiwiZ2V0T2JqZWN0IiwicGVyc29uYWxpemF0aW9uU2V0dGluZyIsImZpbmQiLCJ1cGRhdGVkU2V0dGluZ3MiLCJnZXRQcm9wZXJ0eU5hbWVzQW5kRGVzY3JpcHRpb25zIiwicHJvcHMiLCJwcm9wIiwibmFtZSIsImRlc2NyaXB0aW9uIiwiZW51bXMiLCJlbnVtbSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRGVzaWdudGltZS5oZWxwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBSZXVzZSBmdW5jdGlvbnMgZm9yIGRlc2lnbnRpbWUgYWRhcHRpb25cbiAqL1xuXG5pbXBvcnQgZGVlcENsb25lIGZyb20gXCJzYXAvYmFzZS91dGlsL2RlZXBDbG9uZVwiO1xuaW1wb3J0IHR5cGUgQXBwQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9BcHBDb21wb25lbnRcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIFJlc291cmNlTW9kZWwgZnJvbSBcInNhcC9mZS9jb3JlL1Jlc291cmNlTW9kZWxcIjtcbmltcG9ydCB0eXBlIHsgVGVtcGxhdGVUeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IEJ1dHRvbiBmcm9tIFwic2FwL20vQnV0dG9uXCI7XG5pbXBvcnQgQ2hlY2tCb3ggZnJvbSBcInNhcC9tL0NoZWNrQm94XCI7XG5pbXBvcnQgRGlhbG9nIGZyb20gXCJzYXAvbS9EaWFsb2dcIjtcbmltcG9ydCBJbnB1dCBmcm9tIFwic2FwL20vSW5wdXRcIjtcbmltcG9ydCBJbnB1dExpc3RJdGVtIGZyb20gXCJzYXAvbS9JbnB1dExpc3RJdGVtXCI7XG5pbXBvcnQgTGlzdCBmcm9tIFwic2FwL20vTGlzdFwiO1xuaW1wb3J0IE1lc3NhZ2VTdHJpcCBmcm9tIFwic2FwL20vTWVzc2FnZVN0cmlwXCI7XG5pbXBvcnQgdHlwZSB7IE11bHRpSW5wdXQkVG9rZW5VcGRhdGVFdmVudCB9IGZyb20gXCJzYXAvbS9NdWx0aUlucHV0XCI7XG5pbXBvcnQgTXVsdGlJbnB1dCBmcm9tIFwic2FwL20vTXVsdGlJbnB1dFwiO1xuaW1wb3J0IFNlbGVjdCBmcm9tIFwic2FwL20vU2VsZWN0XCI7XG5pbXBvcnQgVG9rZW4gZnJvbSBcInNhcC9tL1Rva2VuXCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgSXRlbSBmcm9tIFwic2FwL3VpL2NvcmUvSXRlbVwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuXG5leHBvcnQgdHlwZSBhZGFwdGlvbkNoYW5nZSA9IHtcblx0YXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQ7XG5cdHNlbGVjdG9yOiBBcHBDb21wb25lbnQ7XG5cdGNoYW5nZVNwZWNpZmljRGF0YToge1xuXHRcdGFwcERlc2NyaXB0b3JDaGFuZ2VUeXBlOiBcImFwcGRlc2NyX2ZlX2NoYW5nZVBhZ2VDb25maWd1cmF0aW9uXCI7XG5cdFx0Y29udGVudDoge1xuXHRcdFx0cGFyYW1ldGVyczoge1xuXHRcdFx0XHRwYWdlOiBzdHJpbmc7XG5cdFx0XHRcdGVudGl0eVByb3BlcnR5Q2hhbmdlOiB7XG5cdFx0XHRcdFx0cHJvcGVydHlQYXRoOiBzdHJpbmc7XG5cdFx0XHRcdFx0b3BlcmF0aW9uOiBzdHJpbmc7XG5cdFx0XHRcdFx0cHJvcGVydHlWYWx1ZTogc3RyaW5nIHwgc3RyaW5nW10gfCBib29sZWFuIHwgbnVtYmVyIHwgb2JqZWN0IHwgdW5kZWZpbmVkO1xuXHRcdFx0XHR9O1xuXHRcdFx0fTtcblx0XHR9O1xuXHR9O1xufTtcblxuZXhwb3J0IHR5cGUgRGVzaWdudGltZVNldHRpbmdFbnVtcyA9IHtcblx0aWQ6IHN0cmluZztcblx0bmFtZTogc3RyaW5nO1xuXHRkZXNjcmlwdGlvbj86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIERlc2lnbnRpbWVTZXR0aW5nID0ge1xuXHRpZDogc3RyaW5nO1xuXHRwYXRoPzogc3RyaW5nO1xuXHRuYW1lOiBzdHJpbmc7XG5cdGRlc2NyaXB0aW9uOiBzdHJpbmc7XG5cdHJlc3RyaWN0ZWRUbz86IFRlbXBsYXRlVHlwZVtdO1xuXHR2YWx1ZTogdW5rbm93bjtcblx0dHlwZT86IHN0cmluZztcblx0ZW51bXM/OiBEZXNpZ250aW1lU2V0dGluZ0VudW1zW107XG5cdHNraXBDaGFuZ2U/OiBib29sZWFuO1xuXHR3cml0ZU9iamVjdEZvcj86IHN0cmluZztcblx0d3JpdGVPYmplY3Q/OiB7IGlkOiBzdHJpbmc7IHBhdGg/OiBzdHJpbmcgfVtdO1xuXHRrZXlVc2VyPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFByb3BlcnR5VmFsdWUgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXSB8IGJvb2xlYW4gfCBudW1iZXIgfCBvYmplY3QgfCB1bmRlZmluZWQ+O1xuXG5leHBvcnQgdHlwZSBTZXR0aW5nc0RhdGEgPSB7XG5cdGxhYmVsOiBzdHJpbmc7XG5cdHRvb2x0aXA6IHN0cmluZztcblx0Y29udHJvbDogQ29udHJvbERhdGFbXTtcblx0a2V5VXNlcj86IGJvb2xlYW47XG59O1xuXG50eXBlIENvbnRyb2xEYXRhID0ge1xuXHR0eXBlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdGVudW06IERlc2lnbnRpbWVTZXR0aW5nRW51bXNbXSB8IHVuZGVmaW5lZDtcblx0dmFsdWU6IHVua25vd247XG5cdGlkOiBzdHJpbmc7XG59O1xuXG50eXBlIHByb3BLZXlBbmRWYWx1ZSA9IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfCBib29sZWFuIHwgbnVtYmVyIHwgb2JqZWN0IHwgdW5kZWZpbmVkIH07XG5cbi8qKlxuICogSWRlbnRpZnkgd2hpY2ggc2V0dGluZ3MgaGF2ZSBjaGFuZ2VkLlxuICogQHBhcmFtIGRlc2lnbnRpbWVTZXR0aW5nc1xuICogQHBhcmFtIHVuY2hhbmdlZERhdGFcbiAqIEBwYXJhbSBwcm9wZXJ0eVZhbHVlc1xuICogIEByZXR1cm5zIFRoZSBjb25maWd1cmF0aW9uIHByb3BlcnRpZXMgd2hlcmUgdGhlIHZhbHVlcyBoYXZlIGJlZW4gY2hhbmdlZCBjb21wYXJlZCB0byB0aGUgc3RhcnRpbmcgdmFsdWVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGFuZ2VkUHJvcGVydHlWYWx1ZXMoXG5cdGRlc2lnbnRpbWVTZXR0aW5nczogRGVzaWdudGltZVNldHRpbmdbXSxcblx0dW5jaGFuZ2VkRGF0YTogUHJvcGVydHlWYWx1ZSxcblx0cHJvcGVydHlWYWx1ZXM6IFByb3BlcnR5VmFsdWVcbik6IFByb3BlcnR5VmFsdWUge1xuXHRjb25zdCBwcm9wZXJ0eUNoYW5nZXM6IFByb3BlcnR5VmFsdWUgPSB7fTtcblxuXHRkZXNpZ250aW1lU2V0dGluZ3MuZm9yRWFjaChmdW5jdGlvbiAoc2V0dGluZykge1xuXHRcdGlmIChcblx0XHRcdCh0eXBlb2YgdW5jaGFuZ2VkRGF0YVtzZXR0aW5nLmlkXSAhPT0gXCJvYmplY3RcIiAmJiB1bmNoYW5nZWREYXRhW3NldHRpbmcuaWRdICE9PSBwcm9wZXJ0eVZhbHVlc1tzZXR0aW5nLmlkXSkgfHxcblx0XHRcdCh0eXBlb2YgdW5jaGFuZ2VkRGF0YVtzZXR0aW5nLmlkXSA9PT0gXCJvYmplY3RcIiAmJlxuXHRcdFx0XHRKU09OLnN0cmluZ2lmeSh1bmNoYW5nZWREYXRhW3NldHRpbmcuaWRdKSAhPT0gSlNPTi5zdHJpbmdpZnkocHJvcGVydHlWYWx1ZXNbc2V0dGluZy5pZF0pKVxuXHRcdCkge1xuXHRcdFx0aWYgKHNldHRpbmcud3JpdGVPYmplY3QgJiYgcHJvcGVydHlWYWx1ZXNbc2V0dGluZy5pZF0gPT09IHNldHRpbmcud3JpdGVPYmplY3RGb3IpIHtcblx0XHRcdFx0Ly8gV2Ugd3JpdGUgYW4gb2JqZWN0IGZvciB0aGlzIHNldHRpbmdcblx0XHRcdFx0Y29uc3QgY2hhbmdlT2JqZWN0OiBQcm9wZXJ0eVZhbHVlID0ge307XG5cdFx0XHRcdGlmIChzZXR0aW5nLndyaXRlT2JqZWN0ICYmIHNldHRpbmcud3JpdGVPYmplY3Q/Lmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRzZXR0aW5nLndyaXRlT2JqZWN0LmZvckVhY2goZnVuY3Rpb24gKHNldHRpbmdzVG9nZXRoZXIpIHtcblx0XHRcdFx0XHRcdGNoYW5nZU9iamVjdFtzZXR0aW5nc1RvZ2V0aGVyLnBhdGggPyBzZXR0aW5nc1RvZ2V0aGVyLnBhdGggOiBzZXR0aW5nc1RvZ2V0aGVyLmlkXSA9XG5cdFx0XHRcdFx0XHRcdHByb3BlcnR5VmFsdWVzW3NldHRpbmdzVG9nZXRoZXIuaWRdO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHByb3BlcnR5Q2hhbmdlc1tzZXR0aW5nLnBhdGggPyBzZXR0aW5nLnBhdGggOiBzZXR0aW5nLmlkXSA9IGNoYW5nZU9iamVjdDtcblx0XHRcdH0gZWxzZSBpZiAoIXNldHRpbmcuc2tpcENoYW5nZSkge1xuXHRcdFx0XHRwcm9wZXJ0eUNoYW5nZXNbc2V0dGluZy5wYXRoID8gc2V0dGluZy5wYXRoIDogc2V0dGluZy5pZF0gPSBwcm9wZXJ0eVZhbHVlc1tzZXR0aW5nLmlkXTtcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gcHJvcGVydHlDaGFuZ2VzO1xufVxuLyoqXG4gKiBDb252ZXJ0IHNhcC5mZSBjaGFuZ2UgaW50byBhIHN0cnVjdHVyZSByZXF1aXJlZCBieSB0aGUgZmxleGliaWxpdHkgdG9vbHMuXG4gKiBAcGFyYW0gYXBwQ29tcG9uZW50XG4gKiBAcGFyYW0gcGFnZVxuICogQHBhcmFtIHByb3BlcnR5UGF0aFxuICogQHBhcmFtIHByb3BlcnR5Q2hhbmdlc1xuICogQHJldHVybnMgVGhlIGNoYW5nZSBzdHJ1Y3R1cmUgdXNlZCBieSBmbGV4aWJpbGl0eSB0b29sc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2hhbmdlU3RydWN0dXJlKFxuXHRhcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudCxcblx0cGFnZTogc3RyaW5nLFxuXHRwcm9wZXJ0eVBhdGg6IHN0cmluZyxcblx0cHJvcGVydHlDaGFuZ2VzOiBzdHJpbmcgfCBzdHJpbmdbXSB8IGJvb2xlYW4gfCBudW1iZXIgfCBvYmplY3QgfCB1bmRlZmluZWRcbik6IGFkYXB0aW9uQ2hhbmdlIHtcblx0cmV0dXJuIHtcblx0XHRhcHBDb21wb25lbnQ6IGFwcENvbXBvbmVudCxcblx0XHRzZWxlY3RvcjogYXBwQ29tcG9uZW50LFxuXHRcdGNoYW5nZVNwZWNpZmljRGF0YToge1xuXHRcdFx0YXBwRGVzY3JpcHRvckNoYW5nZVR5cGU6IFwiYXBwZGVzY3JfZmVfY2hhbmdlUGFnZUNvbmZpZ3VyYXRpb25cIixcblx0XHRcdGNvbnRlbnQ6IHtcblx0XHRcdFx0cGFyYW1ldGVyczoge1xuXHRcdFx0XHRcdHBhZ2U6IHBhZ2UsXG5cdFx0XHRcdFx0ZW50aXR5UHJvcGVydHlDaGFuZ2U6IHtcblx0XHRcdFx0XHRcdHByb3BlcnR5UGF0aDogcHJvcGVydHlQYXRoLFxuXHRcdFx0XHRcdFx0b3BlcmF0aW9uOiBcIlVQU0VSVFwiLFxuXHRcdFx0XHRcdFx0cHJvcGVydHlWYWx1ZTogcHJvcGVydHlDaGFuZ2VzXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xufVxuXG5mdW5jdGlvbiBzZXRMb2NhbFRleHQoaXRlbTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHJlc291cmNlTW9kZWw6IFJlc291cmNlTW9kZWwpOiB2b2lkIHtcblx0Zm9yIChjb25zdCBrZXkgaW4gaXRlbSkge1xuXHRcdGlmIChrZXkgIT09IFwiaWRcIiAmJiB0eXBlb2YgaXRlbVtrZXldID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRpdGVtW2tleV0gPSByZXNvdXJjZU1vZGVsLmdldFRleHQoaXRlbVtrZXldIGFzIHN0cmluZyk7XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIHNldExvY2FsVGV4dHMobW9kZWw6IEpTT05Nb2RlbCwgcmVzb3VyY2VNb2RlbDogUmVzb3VyY2VNb2RlbCk6IHZvaWQge1xuXHRjb25zdCBzZXR0aW5nc0RhdGEgPSBtb2RlbC5nZXREYXRhKCkgYXMgU2V0dGluZ3NEYXRhW107XG5cdHNldHRpbmdzRGF0YS5mb3JFYWNoKChzZXR0aW5nKSA9PiB7XG5cdFx0c2V0TG9jYWxUZXh0KHNldHRpbmcsIHJlc291cmNlTW9kZWwpO1xuXHRcdHNldHRpbmcuY29udHJvbC5mb3JFYWNoKChjb250cm9sRGF0YSkgPT4ge1xuXHRcdFx0c2V0TG9jYWxUZXh0KGNvbnRyb2xEYXRhLCByZXNvdXJjZU1vZGVsKTtcblx0XHRcdGNvbnRyb2xEYXRhLmVudW0/LmZvckVhY2goKGVudW1EYXRhKSA9PiB7XG5cdFx0XHRcdHNldExvY2FsVGV4dChlbnVtRGF0YSwgcmVzb3VyY2VNb2RlbCk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBZGFwdGlvbkRpYWxvZ0NvbnRlbnQoXG5cdGNvbmZpZ0NvbnRleHQ6IENvbnRleHQsXG5cdHByb3BlcnR5VmFsdWVzOiBQcm9wZXJ0eVZhbHVlLFxuXHRyZXNvdXJjZU1vZGVsOiBSZXNvdXJjZU1vZGVsLFxuXHRjb25maWdQYXRoID0gXCJydGEvY29uZmlnU2V0dGluZ3NcIlxuKTogTGlzdCB7XG5cdGNvbnN0IHNldHRpbmdzTW9kZWwgPSBuZXcgSlNPTk1vZGVsKCk7XG5cdHNldHRpbmdzTW9kZWwuc2V0RGF0YShkZWVwQ2xvbmUoY29uZmlnQ29udGV4dC5nZXRQcm9wZXJ0eShjb25maWdQYXRoKSkpO1xuXHRzZXRMb2NhbFRleHRzKHNldHRpbmdzTW9kZWwsIHJlc291cmNlTW9kZWwpO1xuXHRjb25zdCBsaXN0ID0gbmV3IExpc3QoKTtcblx0bGlzdC5zZXRNb2RlbChzZXR0aW5nc01vZGVsKTtcblxuXHRjb25zdCBsaXN0SXRlbSA9IG5ldyBJbnB1dExpc3RJdGVtKHtcblx0XHRsYWJlbDogXCJ7bGFiZWx9XCJcblx0fSk7XG5cblx0bGlzdEl0ZW0uYmluZENvbnRlbnQoe1xuXHRcdHBhdGg6IFwiY29udHJvbFwiLFxuXHRcdGZhY3Rvcnk6IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGNvbnRleHQ6IHsgZ2V0UHJvcGVydHkobmFtZTogc3RyaW5nKTogc3RyaW5nIH0gLyogc2FwLnVpLm1vZGVsLkNvbnRleHQgKi8pIHtcblx0XHRcdGNvbnN0IHR5cGUgPSBjb250ZXh0LmdldFByb3BlcnR5KFwidHlwZVwiKTtcblx0XHRcdGNvbnN0IGlkID0gY29udGV4dC5nZXRQcm9wZXJ0eShcImlkXCIpO1xuXG5cdFx0XHRzd2l0Y2ggKHR5cGUpIHtcblx0XHRcdFx0Y2FzZSBcInN0cmluZ1wiOlxuXHRcdFx0XHRcdGlmIChjb250ZXh0LmdldFByb3BlcnR5KFwiZW51bVwiKSkge1xuXHRcdFx0XHRcdFx0Ly8gQ3JlYXRlIGEgc2VsZWN0IGxpc3QgZm9yIG11bHRpcGxlIG9wdGlvbnMgdG8gc2VsZWN0XG5cdFx0XHRcdFx0XHRjb25zdCBpdGVtID0gbmV3IEl0ZW0oe1xuXHRcdFx0XHRcdFx0XHR0ZXh0OiBcIntuYW1lfVwiLFxuXHRcdFx0XHRcdFx0XHRrZXk6IFwie2lkfVwiXG5cdFx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdFx0Y29uc3Qgc2VsZWN0ID0gbmV3IFNlbGVjdCh7XG5cdFx0XHRcdFx0XHRcdHNlbGVjdGVkS2V5OiBcInt2YWx1ZX1cIixcblx0XHRcdFx0XHRcdFx0Y2hhbmdlOiBmdW5jdGlvbiAoZXZlbnQpOiB2b2lkIHtcblx0XHRcdFx0XHRcdFx0XHRwcm9wZXJ0eVZhbHVlc1sodGhpcyBhcyBTZWxlY3QpLmRhdGEoXCJpZFwiKSBhcyBrZXlvZiBQcm9wZXJ0eVZhbHVlXSA9IChcblx0XHRcdFx0XHRcdFx0XHRcdGV2ZW50LmdldFBhcmFtZXRlcihcInNlbGVjdGVkSXRlbVwiKSBhcyBJdGVtXG5cdFx0XHRcdFx0XHRcdFx0KS5nZXRLZXkoKSBhcyBzdHJpbmcgJiBib29sZWFuO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9KS5kYXRhKFwiaWRcIiwgaWQpO1xuXG5cdFx0XHRcdFx0XHRzZWxlY3QuYmluZEl0ZW1zKHtcblx0XHRcdFx0XHRcdFx0cGF0aDogXCJlbnVtXCIsXG5cdFx0XHRcdFx0XHRcdHRlbXBsYXRlOiBpdGVtXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdHJldHVybiBzZWxlY3Q7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdC8vIENyZWF0ZSBhbiBJbnB1dCBmb3IgdGV4dCBjaGFuZ2VzXG5cdFx0XHRcdFx0XHRyZXR1cm4gbmV3IElucHV0KHtcblx0XHRcdFx0XHRcdFx0dmFsdWU6IFwie3ZhbHVlfVwiLFxuXHRcdFx0XHRcdFx0XHRjaGFuZ2U6IGZ1bmN0aW9uIChldmVudCk6IHZvaWQge1xuXHRcdFx0XHRcdFx0XHRcdHByb3BlcnR5VmFsdWVzWyh0aGlzIGFzIElucHV0KS5kYXRhKFwiaWRcIikgYXMga2V5b2YgUHJvcGVydHlWYWx1ZV0gPSBldmVudC5nZXRQYXJhbWV0ZXIoXCJ2YWx1ZVwiKSBhcyBzdHJpbmcgJlxuXHRcdFx0XHRcdFx0XHRcdFx0Ym9vbGVhbjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSkuZGF0YShcImlkXCIsIGlkKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdGNhc2UgXCJzdHJpbmdbXVwiOlxuXHRcdFx0XHRcdC8vIENyZWF0ZSBhbiBtdWx0aSBpbnB1dCBmaWVsZCBmb3IgdGhlIG5hdmlnYXRpb24gcHJvcGVydGllc1xuXHRcdFx0XHRcdGNvbnN0IG9NdWx0aUlucHV0ID0gbmV3IE11bHRpSW5wdXQoe1xuXHRcdFx0XHRcdFx0d2lkdGg6IFwiNzAlXCIsXG5cdFx0XHRcdFx0XHRzaG93VmFsdWVIZWxwOiBmYWxzZSxcblx0XHRcdFx0XHRcdHNob3dDbGVhckljb246IHRydWUsXG5cdFx0XHRcdFx0XHR0b2tlbnM6IChwcm9wZXJ0eVZhbHVlcz8ubmF2aWdhdGlvblByb3BlcnRpZXMgYXMgc3RyaW5nW10pLm1hcCgobmF2aWdhdGlvblByb3BlcnR5KSA9PiB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBuZXcgVG9rZW4oeyB0ZXh0OiBuYXZpZ2F0aW9uUHJvcGVydHksIGtleTogbmF2aWdhdGlvblByb3BlcnR5IH0pO1xuXHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHR0b2tlblVwZGF0ZTogZnVuY3Rpb24gKGV2ZW50OiBNdWx0aUlucHV0JFRva2VuVXBkYXRlRXZlbnQpOiB2b2lkIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgYXJyYXkgPSBwcm9wZXJ0eVZhbHVlc1sodGhpcyBhcyBNdWx0aUlucHV0KS5kYXRhKFwiaWRcIildIGFzIHN0cmluZ1tdO1xuXHRcdFx0XHRcdFx0XHRpZiAoKGV2ZW50LmdldFBhcmFtZXRlcihcImFkZGVkVG9rZW5zXCIpIGFzIFRva2VuW10pPy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0YXJyYXkucHVzaCgoZXZlbnQ/LmdldFBhcmFtZXRlcihcImFkZGVkVG9rZW5zXCIpIGFzIFRva2VuW10pWzBdPy5nZXRQcm9wZXJ0eShcImtleVwiKSk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoKGV2ZW50LmdldFBhcmFtZXRlcihcInJlbW92ZWRUb2tlbnNcIikgYXMgVG9rZW5bXSk/Lmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRcdFx0XHRhcnJheS5zcGxpY2UoYXJyYXkuaW5kZXhPZigoZXZlbnQ/LmdldFBhcmFtZXRlcihcInJlbW92ZWRUb2tlbnNcIikgYXMgVG9rZW5bXSlbMF0/LmdldFByb3BlcnR5KFwia2V5XCIpKSwgMSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KS5kYXRhKFwiaWRcIiwgaWQpO1xuXHRcdFx0XHRcdG9NdWx0aUlucHV0LmFkZFZhbGlkYXRvcihmdW5jdGlvbiAoYXJnczogeyB0ZXh0OiBzdHJpbmcgfSkge1xuXHRcdFx0XHRcdFx0Y29uc3QgdGV4dCA9IGFyZ3MudGV4dDtcblx0XHRcdFx0XHRcdHJldHVybiBuZXcgVG9rZW4oe1xuXHRcdFx0XHRcdFx0XHRrZXk6IHRleHQsXG5cdFx0XHRcdFx0XHRcdHRleHQ6IHRleHRcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdHJldHVybiBvTXVsdGlJbnB1dDtcblx0XHRcdFx0Y2FzZSBcIm51bWJlclwiOlxuXHRcdFx0XHRcdC8vIENyZWF0ZSBhbiBJbnB1dCBmb3IgbnVtYmVyIGNoYW5nZXNcblx0XHRcdFx0XHRyZXR1cm4gbmV3IElucHV0KHtcblx0XHRcdFx0XHRcdHZhbHVlOiBcInt2YWx1ZX1cIixcblx0XHRcdFx0XHRcdHR5cGU6IFwiTnVtYmVyXCIsXG5cdFx0XHRcdFx0XHRjaGFuZ2U6IGZ1bmN0aW9uIChldmVudCk6IHZvaWQge1xuXHRcdFx0XHRcdFx0XHRwcm9wZXJ0eVZhbHVlc1sodGhpcyBhcyBJbnB1dCkuZGF0YShcImlkXCIpIGFzIGtleW9mIFByb3BlcnR5VmFsdWVdID0gZXZlbnQuZ2V0UGFyYW1ldGVyKFwidmFsdWVcIikgYXMgc3RyaW5nICZcblx0XHRcdFx0XHRcdFx0XHRib29sZWFuO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pLmRhdGEoXCJpZFwiLCBpZCk7XG5cdFx0XHRcdGNhc2UgXCJib29sZWFuXCI6XG5cdFx0XHRcdFx0Ly8gQ3JlYXRlIGEgY2hlY2tib3ggZm9yIHRydWUvZmFsc2UgdmFsdWVzXG5cdFx0XHRcdFx0cmV0dXJuIG5ldyBDaGVja0JveCh7XG5cdFx0XHRcdFx0XHRzZWxlY3RlZDogXCJ7dmFsdWV9XCIsXG5cdFx0XHRcdFx0XHRzZWxlY3Q6IGZ1bmN0aW9uIChldmVudCk6IHZvaWQge1xuXHRcdFx0XHRcdFx0XHRwcm9wZXJ0eVZhbHVlc1sodGhpcyBhcyBDaGVja0JveCkuZGF0YShcImlkXCIpIGFzIGtleW9mIFByb3BlcnR5VmFsdWVdID0gZXZlbnQuZ2V0UGFyYW1ldGVyKFxuXHRcdFx0XHRcdFx0XHRcdFwic2VsZWN0ZWRcIlxuXHRcdFx0XHRcdFx0XHQpIGFzIHN0cmluZyAmIGJvb2xlYW47XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSkuZGF0YShcImlkXCIsIGlkKTtcblx0XHRcdFx0Y2FzZSBcImJvb2xlYW5PclN0cmluZ1wiOlxuXHRcdFx0XHRcdC8vIENyZWF0ZSBhIHNlbGVjdCBsaXN0IGZvciBib29sZWFuIGFuZCBzdHJpbmcgb3B0aW9ucyB0byBzZWxlY3Rcblx0XHRcdFx0XHQvLyBUaGlzIHR5cGUgaXMgYXQgdGhlIG1vbWVudCBvbmx5IHVzZWQgZm9yIHBlcnNvbmFsaXphdGlvbiBzZXR0aW5ncyB3aGljaCBjYW4gYmUgdW5kZWZpbmVkLCB0cnVlLCBmYWxzZSBvciBhbiBvYmplY3Rcblx0XHRcdFx0XHQvLyBUaGUgc2VsZWN0IGxpc3QgaXMgdXNlZCB0byBzZWxlY3QgYmV0d2VlbiB0cnVlLCBmYWxzZSBhbmQgXCJPd24gU2V0dGluZ3NcIlxuXHRcdFx0XHRcdC8vIElmIFwiT3duIFNldHRpbmdzXCIgaXMgc2VsZWN0ZWQsIHRoZSBwZXJzb25hbGl6YXRpb24gb2JqZWN0IGlzIHdyaXR0ZW4sIG90aGVyd2lzZSB0aGUgYm9vbGVhbiBpcyB3cml0dGVuICh1bmRlZmluZWQgY2Fubm90IGJlIHdyaXR0ZW4gaW4gYSBtYW5pZmVzdCBjaGFuZ2UpXG5cdFx0XHRcdFx0Y29uc3QgaXRlbSA9IG5ldyBJdGVtKHtcblx0XHRcdFx0XHRcdHRleHQ6IFwie25hbWV9XCIsXG5cdFx0XHRcdFx0XHRrZXk6IFwie2lkfVwiXG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRjb25zdCBzZWxlY3QgPSBuZXcgU2VsZWN0KHtcblx0XHRcdFx0XHRcdHNlbGVjdGVkS2V5OiBcInt2YWx1ZX1cIixcblx0XHRcdFx0XHRcdGNoYW5nZTogZnVuY3Rpb24gKGV2ZW50KTogdm9pZCB7XG5cdFx0XHRcdFx0XHRcdGxldCB2YWx1ZSA9IChldmVudC5nZXRQYXJhbWV0ZXIoXCJzZWxlY3RlZEl0ZW1cIikgYXMgSXRlbSkuZ2V0S2V5KCk7XG5cdFx0XHRcdFx0XHRcdC8vIENvbnZlcnQgc3RyaW5nIHRvIGJvb2xlYW4gaWYgbmVjZXNzYXJ5XG5cdFx0XHRcdFx0XHRcdGlmICh2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSBcImZhbHNlXCIgfHwgdmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gXCJ0cnVlXCIpIHtcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZSA9IEpTT04ucGFyc2UodmFsdWUudG9Mb3dlckNhc2UoKSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cHJvcGVydHlWYWx1ZXNbKHRoaXMgYXMgU2VsZWN0KS5kYXRhKFwiaWRcIikgYXMga2V5b2YgUHJvcGVydHlWYWx1ZV0gPSB2YWx1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KS5kYXRhKFwiaWRcIiwgaWQpO1xuXG5cdFx0XHRcdFx0c2VsZWN0LmJpbmRJdGVtcyh7XG5cdFx0XHRcdFx0XHRwYXRoOiBcImVudW1cIixcblx0XHRcdFx0XHRcdHRlbXBsYXRlOiBpdGVtXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0cmV0dXJuIHNlbGVjdDtcblx0XHRcdFx0Y2FzZSBcImpzb25cIjpcblx0XHRcdFx0XHQvLyBDcmVhdGUgYW4gaW5wdXQgZm9yIGpzb24gb2JqZWN0IGRlc2NyaXB0aW9uc1xuXHRcdFx0XHRcdC8vIEEgdGV4dCBhcmVhIHdvdWxkIGhhdmUgYmVlbiBiZXR0ZXIgYnV0IHRoaXMgZG9lcyBub3Qgd29yayB3aXRoIHRoZSBJbnB1dExpc3RJdGVtXG5cdFx0XHRcdFx0Ly8gd2Ugd291bGQgaGF2ZSBuZWVkZWQgYSBDdXN0b21MaXN0SXRlbSBpbnN0ZWFkXG5cdFx0XHRcdFx0Ly8gd2hpY2ggd291bGQgaGF2ZSBiZWVuIHRvbyBtdWNoIGVmZm9ydCBhcyB3ZSB3b3VsZCBoYXZlIG5lZWRlZCB0byBjaGFuZ2UgdGhlIHdob2xlIHN0cnVjdHVyZVxuXHRcdFx0XHRcdHJldHVybiBuZXcgSW5wdXQoe1xuXHRcdFx0XHRcdFx0dmFsdWU6IFwie3ZhbHVlfVwiLFxuXHRcdFx0XHRcdFx0Y2hhbmdlOiBmdW5jdGlvbiAoZXZlbnQpOiB2b2lkIHtcblx0XHRcdFx0XHRcdFx0cHJvcGVydHlWYWx1ZXNbKHRoaXMgYXMgSW5wdXQpLmRhdGEoXCJpZFwiKSBhcyBrZXlvZiBQcm9wZXJ0eVZhbHVlXSA9IEpTT04ucGFyc2UoXG5cdFx0XHRcdFx0XHRcdFx0ZXZlbnQuZ2V0UGFyYW1ldGVyKFwidmFsdWVcIik/LnRvU3RyaW5nKCkgYXMgc3RyaW5nXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSkuZGF0YShcImlkXCIsIGlkKTtcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xuXG5cdGxpc3QuYmluZEl0ZW1zKHtcblx0XHRwYXRoOiBcIi9cIixcblx0XHR0ZW1wbGF0ZTogbGlzdEl0ZW1cblx0fSk7XG5cblx0cmV0dXJuIGxpc3Q7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBvcGVuQWRhcHRpb25EaWFsb2coXG5cdGNvbmZpZ0NvbnRleHQ6IENvbnRleHQsXG5cdHByb3BlcnR5VmFsdWVzOiBQcm9wZXJ0eVZhbHVlLFxuXHR0aXRsZTogc3RyaW5nLFxuXHRyZXNvdXJjZU1vZGVsOiBSZXNvdXJjZU1vZGVsLFxuXHRjb25maWdQYXRoID0gXCJydGEvY29uZmlnU2V0dGluZ3NcIixcblx0aW5mb1RleHQgPSBcIntzYXAuZmUuaTE4bj5SVEFfQ09ORklHVVJBVElPTl9JTkZPX01FU1NBR0V9XCIsXG5cdHNpemU/OiB7IHdpZHRoOiBzdHJpbmc7IGhlaWdodDogc3RyaW5nIH1cbik6IFByb21pc2U8UHJvcGVydHlWYWx1ZT4ge1xuXHRjb25zdCBsaXN0ID0gY3JlYXRlQWRhcHRpb25EaWFsb2dDb250ZW50KGNvbmZpZ0NvbnRleHQsIHByb3BlcnR5VmFsdWVzLCByZXNvdXJjZU1vZGVsLCBjb25maWdQYXRoKTtcblx0Y29uc3QgY29udGVudDogKExpc3QgfCBNZXNzYWdlU3RyaXApW10gPSBbXTtcblx0Y29uc3QgaW5mb3JtYXRpb25NZXNzYWdlID0gbmV3IE1lc3NhZ2VTdHJpcCh7XG5cdFx0c2hvd0ljb246IHRydWUsXG5cdFx0dHlwZTogXCJJbmZvcm1hdGlvblwiLFxuXHRcdHRleHQ6IGluZm9UZXh0XG5cdH0pO1xuXHRpbmZvcm1hdGlvbk1lc3NhZ2UuYWRkU3R5bGVDbGFzcyhcInNhcFVpU21hbGxNYXJnaW5Cb3R0b21cIik7XG5cdGNvbnRlbnQucHVzaChpbmZvcm1hdGlvbk1lc3NhZ2UpO1xuXHRjb250ZW50LnB1c2gobGlzdCk7XG5cdGNvbnN0IGxpc3RJbmRleCA9IGNvbnRlbnQuaW5kZXhPZihsaXN0KTtcblx0cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcblx0XHRjb25zdCBkaWFsb2cgPSBuZXcgRGlhbG9nKHtcblx0XHRcdHRpdGxlOiB0aXRsZSxcblx0XHRcdGNvbnRlbnRXaWR0aDogc2l6ZSA/IHNpemUud2lkdGggOiBcIjU1MHB4XCIsXG5cdFx0XHRjb250ZW50SGVpZ2h0OiBzaXplID8gc2l6ZS5oZWlnaHQgOiBcIjMwMHB4XCIsXG5cdFx0XHRjb250ZW50OiBjb250ZW50LFxuXHRcdFx0YnV0dG9uczogW1xuXHRcdFx0XHRuZXcgQnV0dG9uKHtcblx0XHRcdFx0XHR0ZXh0OiBcIntzYXAuZmUuaTE4bj5SVEFfQ09ORklHVVJBVElPTl9BUFBMWX1cIixcblx0XHRcdFx0XHR0eXBlOiBcIkVtcGhhc2l6ZWRcIixcblx0XHRcdFx0XHRwcmVzczogZnVuY3Rpb24gKCk6IHZvaWQge1xuXHRcdFx0XHRcdFx0Ly8gcGVyc2lzdCBjaGFuZ2VzIGRvbmVcblx0XHRcdFx0XHRcdHVwZGF0ZUNvbmZpZ01vZGVsKGNvbmZpZ0NvbnRleHQsIGRpYWxvZy5nZXRDb250ZW50KClbbGlzdEluZGV4XS5nZXRNb2RlbCgpIGFzIEpTT05Nb2RlbCwgY29uZmlnUGF0aCk7XG5cdFx0XHRcdFx0XHRkaWFsb2cuY2xvc2UoKTtcblx0XHRcdFx0XHRcdHJlc29sdmUocHJvcGVydHlWYWx1ZXMpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSksXG5cdFx0XHRcdG5ldyBCdXR0b24oe1xuXHRcdFx0XHRcdHRleHQ6IFwie3NhcC5mZS5pMThuPlJUQV9DT05GSUdVUkFUSU9OX0NBTkNFTH1cIixcblx0XHRcdFx0XHRwcmVzczogZnVuY3Rpb24gKCk6IHZvaWQge1xuXHRcdFx0XHRcdFx0ZGlhbG9nLmNsb3NlKCk7XG5cdFx0XHRcdFx0XHRyZWplY3QoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHRdXG5cdFx0fSk7XG5cdFx0ZGlhbG9nLnNldE1vZGVsKHJlc291cmNlTW9kZWwsIFwic2FwLmZlLmkxOG5cIik7XG5cdFx0ZGlhbG9nLmFkZFN0eWxlQ2xhc3MoXCJzYXBVaUNvbnRlbnRQYWRkaW5nXCIpO1xuXHRcdGRpYWxvZy5hZGRTdHlsZUNsYXNzKFwic2FwVWlSVEFCb3JkZXJcIik7XG5cdFx0ZGlhbG9nLm9wZW4oKTtcblx0XHRyZXR1cm47XG5cdH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2Vzc0NoYW5nZXMoXG5cdHByb3BlcnR5Q2hhbmdlczogcHJvcEtleUFuZFZhbHVlLFxuXHRhcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudCxcblx0cGFnZTogc3RyaW5nLFxuXHRwcm9wZXJ0eVBhdGg6IHN0cmluZ1xuKTogYWRhcHRpb25DaGFuZ2VbXSB7XG5cdGxldCBzaW5nbGVDaGFuZ2U6IHByb3BLZXlBbmRWYWx1ZSA9IHt9O1xuXHRjb25zdCBjaGFuZ2VzID0gW107XG5cdGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHByb3BlcnR5Q2hhbmdlcykpIHtcblx0XHRzaW5nbGVDaGFuZ2UgPSB7fTtcblx0XHRzaW5nbGVDaGFuZ2Vba2V5XSA9IHZhbHVlO1xuXHRcdGNoYW5nZXMucHVzaChnZXRDaGFuZ2Uoc2luZ2xlQ2hhbmdlLCBhcHBDb21wb25lbnQsIHBhZ2UsIHByb3BlcnR5UGF0aCkpO1xuXHR9XG5cdHJldHVybiBjaGFuZ2VzO1xufVxuXG4vKipcbiAqIEZvcm1hdCBlYWNoIGNoYW5nZSBtYWRlIHRvIGdsb2JhbCBzZXR0aW5ncyBcInNhcC5mZVwiXG4gKiBUaGUgc2V0IG9mIGNoYW5nZXMgYXJlIHB1dCBpbnRvIGluZGl2aWR1YWwgY2hhbmdlcyB0byBlbnN1cmVcbiAqIHRoYXQgZWFybGllciBjaGFuZ2VzIGFyZSBub3QgbG9zdCB3aGVuIHRoZXNlIGFyZSBsb2FkZWQgYXQgcnVudGltZS5cbiAqIEBwYXJhbSBwcm9wZXJ0eUNoYW5nZXNcbiAqIEBwYXJhbSBhcHBDb21wb25lbnRcbiAqIEBwYXJhbSBwYWdlXG4gKiBAcGFyYW0gcHJvcGVydHlQYXRoXG4gKiBAcmV0dXJucyBUaGUgY2hhbmdlIHN0cnVjdHVyZSB1c2VkIGJ5IGZsZXhpYmlsaXR5IHRvb2xzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZXNzR2xvYmFsQ2hhbmdlcyhcblx0cHJvcGVydHlDaGFuZ2VzOiBwcm9wS2V5QW5kVmFsdWUsXG5cdGFwcENvbXBvbmVudDogQXBwQ29tcG9uZW50LFxuXHRwYWdlOiBzdHJpbmcsXG5cdHByb3BlcnR5UGF0aDogc3RyaW5nXG4pOiBhZGFwdGlvbkNoYW5nZVtdIHtcblx0bGV0IHNpbmdsZUNoYW5nZTogcHJvcEtleUFuZFZhbHVlID0ge307XG5cdGNvbnN0IGNoYW5nZXMgPSBbXTtcblx0Zm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocHJvcGVydHlDaGFuZ2VzKSkge1xuXHRcdHNpbmdsZUNoYW5nZSA9IHt9O1xuXHRcdHNpbmdsZUNoYW5nZVtrZXldID0gdmFsdWU7XG5cdFx0Y2hhbmdlcy5wdXNoKGdldENoYW5nZShzaW5nbGVDaGFuZ2UsIGFwcENvbXBvbmVudCwgcGFnZSwgcHJvcGVydHlQYXRoKSk7XG5cdH1cblx0cmV0dXJuIGNoYW5nZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGFuZ2UoXG5cdHByb3BlcnR5Q2hhbmdlczogcHJvcEtleUFuZFZhbHVlLFxuXHRhcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudCxcblx0cGFnZTogc3RyaW5nLFxuXHRwcm9wZXJ0eVBhdGg6IHN0cmluZ1xuKTogYWRhcHRpb25DaGFuZ2Uge1xuXHQvLyBDaGFuZ2VzIGZvciBjb250cm9scyBoYXZlIGEgcGF0aCBzdGFydGluZyB3aXRoIGNvbnRyb2xDb25maWd1cmF0aW9uLCBmb2xsb3dlZCBieSBhbiBhbm5vdGF0aW9uIHBhdGhcblx0Ly8gRm9yIHRoZSBsaXN0IHJlcG9ydCBjaGFuZ2VzLCB0aGVyZSBpcyBubyBwYXRoIGJlY2F1c2UgdGhlIHByb3BlcnRpZXMgYXJlIGRpcmVjdGx5IHVuZGVyIFNldHRpbmdzXG5cdC8vIGZvciB0aGUgXCJzYXAuZmUudGVtcGxhdGVzLkxpc3RSZXBvcnRcIiBpbiB0aGUgbWFuaWZlc3QuXG5cdGlmIChwcm9wZXJ0eVBhdGggPT09IFwiXCIpIHtcblx0XHRwcm9wZXJ0eVBhdGggPSBPYmplY3Qua2V5cyhwcm9wZXJ0eUNoYW5nZXMpWzBdO1xuXHR9IGVsc2Uge1xuXHRcdHByb3BlcnR5UGF0aCA9IHByb3BlcnR5UGF0aCArIFwiL1wiICsgT2JqZWN0LmtleXMocHJvcGVydHlDaGFuZ2VzKVswXTtcblx0fVxuXHRjb25zdCB2YWx1ZSA9IHByb3BlcnR5Q2hhbmdlc1tPYmplY3Qua2V5cyhwcm9wZXJ0eUNoYW5nZXMpWzBdXTtcblxuXHRyZXR1cm4gZ2V0Q2hhbmdlU3RydWN0dXJlKGFwcENvbXBvbmVudCwgcGFnZSwgcHJvcGVydHlQYXRoLCB2YWx1ZSk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBwYXJhbWV0ZXJzIG90aGVyIHRoYW4gdGhlIGNvbnRyb2wgc2V0dGluZ3MgdGhhdCBhcmUgbmVlZGVkXG4gKiBmb3IgdGhlIGNoYW5nZSBzdHJ1Y3R1cmUuXG4gKiBAcGFyYW0gcHJvcGVydHlDaGFuZ2VzXG4gKiBAcGFyYW0gcHJvcGVydHlQYXRoXG4gKiBAcGFyYW0gY29udHJvbFxuICogQHJldHVybnMgVGhlIGNoYW5nZXMgaW4gYSBzdHJ1Y3R1cmUgdXNlZCBieSBmbGV4aWJpbGl0eSB0b29sc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2VwYXJhdGVDaGFuZ2VzKHByb3BlcnR5Q2hhbmdlczogUHJvcGVydHlWYWx1ZSwgcHJvcGVydHlQYXRoOiBzdHJpbmcsIGNvbnRyb2w6IENvbnRyb2wpOiBhZGFwdGlvbkNoYW5nZVtdIHtcblx0Y29uc3QgYXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KGNvbnRyb2wpO1xuXHRjb25zdCBwYWdlID0gZ2V0UGFnZShjb250cm9sLmdldFBhcmVudCgpIGFzIENvbnRyb2wpO1xuXHRyZXR1cm4gcHJvY2Vzc0NoYW5nZXMocHJvcGVydHlDaGFuZ2VzLCBhcHBDb21wb25lbnQsIHBhZ2UsIHByb3BlcnR5UGF0aCk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBwYXJhbWV0ZXJzIG90aGVyIHRoYW4gdGhlIGdsb2JhbCBzZXR0aW5ncyB0aGF0IGFyZSBuZWVkZWRcbiAqIGZvciB0aGUgY2hhbmdlIHN0cnVjdHVyZS5cbiAqIEBwYXJhbSBwcm9wZXJ0eUNoYW5nZXNcbiAqIEBwYXJhbSBwcm9wZXJ0eVBhdGhcbiAqIEBwYXJhbSBjb250cm9sXG4gKiBAcmV0dXJucyBUaGUgY2hhbmdlcyBpbiBhIHN0cnVjdHVyZSB1c2VkIGJ5IGZsZXhpYmlsaXR5IHRvb2xzXG4gKi9cbmZ1bmN0aW9uIHNlcGFyYXRlR2xvYmFsQ2hhbmdlcyhwcm9wZXJ0eUNoYW5nZXM6IFByb3BlcnR5VmFsdWUsIHByb3BlcnR5UGF0aDogc3RyaW5nLCBjb250cm9sOiBDb250cm9sKTogYWRhcHRpb25DaGFuZ2VbXSB7XG5cdGNvbnN0IGFwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudChjb250cm9sKTtcblx0Y29uc3QgcGFnZSA9IFwic2FwLmZlXCI7XG5cdHJldHVybiBwcm9jZXNzR2xvYmFsQ2hhbmdlcyhwcm9wZXJ0eUNoYW5nZXMsIGFwcENvbXBvbmVudCwgcGFnZSwgcHJvcGVydHlQYXRoKTtcbn1cblxuZnVuY3Rpb24gZ2V0UGFnZShjb250cm9sOiBDb250cm9sKTogc3RyaW5nIHtcblx0Y29uc3Qgdmlld0lkID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0Vmlldyhjb250cm9sKS5nZXRJZCgpLnNwbGl0KFwiOjpcIik7XG5cdHJldHVybiB2aWV3SWRbdmlld0lkLmxlbmd0aCAtIDFdO1xufVxuXG5leHBvcnQgY29uc3QgZXh0cmFjdENoYW5nZXMgPSBmdW5jdGlvbiAoXG5cdGRlc2lnbnRpbWVTZXR0aW5nczogRGVzaWdudGltZVNldHRpbmdbXSxcblx0dW5jaGFuZ2VkRGF0YTogUHJvcGVydHlWYWx1ZSxcblx0cHJvcGVydHlWYWx1ZXNFbnRlcmVkOiBQcm9wZXJ0eVZhbHVlLFxuXHRwcm9wZXJ0eVBhdGg6IHN0cmluZyxcblx0Y29udHJvbDogQ29udHJvbCxcblx0Z2xvYmFsU2V0dGluZ3M/OiBEZXNpZ250aW1lU2V0dGluZ1tdXG4pOiBhZGFwdGlvbkNoYW5nZVtdIHtcblx0Y29uc3QgcHJvcGVydHlDaGFuZ2VzID0gZ2V0Q2hhbmdlZFByb3BlcnR5VmFsdWVzKGRlc2lnbnRpbWVTZXR0aW5ncywgdW5jaGFuZ2VkRGF0YSwgcHJvcGVydHlWYWx1ZXNFbnRlcmVkKTtcblx0Ly8gUHV0IGVhY2ggcHJvcGVydHkgaW50byBpdHMgb3duIGNoYW5nZS4gVGhpcyBlbnN1cmVzIHRoYXQgd2UgZG9uJ3QgbG9zZSBwcmV2aW91cyBjaGFuZ2VzLlxuXHRsZXQgY2hhbmdlcyA9IHNlcGFyYXRlQ2hhbmdlcyhwcm9wZXJ0eUNoYW5nZXMsIHByb3BlcnR5UGF0aCwgY29udHJvbCk7XG5cdGlmIChnbG9iYWxTZXR0aW5ncykge1xuXHRcdGNvbnN0IGdsb2JhbENoYW5nZXMgPSBnZXRDaGFuZ2VkUHJvcGVydHlWYWx1ZXMoZ2xvYmFsU2V0dGluZ3MsIHVuY2hhbmdlZERhdGEsIHByb3BlcnR5VmFsdWVzRW50ZXJlZCk7XG5cdFx0Y29uc3QgZ2xvYmFsID0gc2VwYXJhdGVHbG9iYWxDaGFuZ2VzKGdsb2JhbENoYW5nZXMsIHByb3BlcnR5UGF0aCwgY29udHJvbCk7XG5cdFx0Y2hhbmdlcyA9IGNoYW5nZXMuY29uY2F0KGdsb2JhbCk7XG5cdH1cblx0aWYgKGNoYW5nZXMubGVuZ3RoID4gMCkge1xuXHRcdHJldHVybiBjaGFuZ2VzO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBbXTtcblx0fVxufTtcblxuZXhwb3J0IGNvbnN0IG5vQ2hhbmdlcyA9IGZ1bmN0aW9uICgpOiBbXSB7XG5cdHJldHVybiBbXTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Zpb3JpVG9vbHNSdGFNb2RlKGFwcENvbXBvbmVudDogQXBwQ29tcG9uZW50KTogYm9vbGVhbiB7XG5cdC8vIENoZWNrIGlmIHJ0YSBtb2RlIGhhcyBiZWVuIHNwZWNpZmllZCBvbiB1cmwgKGZvciBsb2NhbCB0ZXN0aW5nKVxuXHRsZXQgdXJsUGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7fTtcblx0Y29uc3Qgc2hlbGxTZXJ2aWNlID0gYXBwQ29tcG9uZW50LmdldFNoZWxsU2VydmljZXMoKTtcblx0dXJsUGFyYW1zID0gc2hlbGxTZXJ2aWNlPy5wYXJzZVBhcmFtZXRlcnM/Lih3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcblx0cmV0dXJuICEhdXJsUGFyYW1zICYmIHVybFBhcmFtc1tcImZpb3JpLXRvb2xzLXJ0YS1tb2RlXCJdPy5bMF0gPT09IFwiZm9yQWRhcHRhdGlvblwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNSVEFNb2RlKGFwcENvbXBvbmVudDogQXBwQ29tcG9uZW50KTogYm9vbGVhbiB7XG5cdC8vIENoZWNrIGlmIHJ0YSBtb2RlIGhhcyBiZWVuIHNwZWNpZmllZCBvbiB1cmwgKGZvciBsb2NhbCB0ZXN0aW5nKVxuXHRsZXQgdXJsUGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7fTtcblx0Y29uc3Qgc2hlbGxTZXJ2aWNlID0gYXBwQ29tcG9uZW50LmdldFNoZWxsU2VydmljZXMoKTtcblx0dXJsUGFyYW1zID0gc2hlbGxTZXJ2aWNlPy5wYXJzZVBhcmFtZXRlcnM/Lih3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcblx0cmV0dXJuICEhdXJsUGFyYW1zICYmIHVybFBhcmFtc1tcInNhcC1mZS1ydGEtbW9kZVwiXT8uWzBdID09PSBcInRydWVcIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNldHRpbmdzSWZLZXlVc2VyKGFwcENvbXBvbmVudDogQXBwQ29tcG9uZW50LCBpdGVtczogU2V0dGluZ3NEYXRhW10pOiBTZXR0aW5nc0RhdGFbXSB7XG5cdGlmICghaXNGaW9yaVRvb2xzUnRhTW9kZShhcHBDb21wb25lbnQpKSB7XG5cdFx0Ly8gbm90IHRvb2xzID0+IGtleSB1c2VyXG5cdFx0cmV0dXJuIGl0ZW1zLmZpbHRlcigoc2V0dGluZykgPT4ge1xuXHRcdFx0cmV0dXJuIHNldHRpbmcua2V5VXNlcjtcblx0XHR9KTtcblx0fVxuXHRyZXR1cm4gaXRlbXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbmZpZ01vZGVsUHJlcGFyZWQoY29uZmlnQ29udGV4dDogQ29udGV4dCwgcGF0aCA9IFwicnRhL2NvbmZpZ1NldHRpbmdzXCIpOiBib29sZWFuIHtcblx0aWYgKGNvbmZpZ0NvbnRleHQuZ2V0UHJvcGVydHkocGF0aCkpIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXHRyZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlQ29uZmlnTW9kZWwoaXRlbXM6IFNldHRpbmdzRGF0YVtdLCBjb25maWdDb250ZXh0OiBDb250ZXh0LCBwYXRoID0gXCJydGEvY29uZmlnU2V0dGluZ3NcIik6IHZvaWQge1xuXHRpZiAoIWNvbmZpZ0NvbnRleHQuZ2V0UHJvcGVydHkocGF0aCkpIHtcblx0XHRjb25maWdDb250ZXh0LnNldFByb3BlcnR5KHBhdGgsIGl0ZW1zKTtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGVyc29uYWxpemF0aW9uU2V0dGluZyhjb25maWdDb250ZXh0OiBDb250ZXh0LCBwYXRoID0gXCJydGEvY29uZmlnU2V0dGluZ3NcIik6IGJvb2xlYW4gfCBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRjb25zdCBzZXR0aW5ncyA9IGNvbmZpZ0NvbnRleHQuZ2V0T2JqZWN0KHBhdGgpO1xuXHRjb25zdCBwZXJzb25hbGl6YXRpb25TZXR0aW5nID0gc2V0dGluZ3MuZmluZCgoc2V0dGluZzogU2V0dGluZ3NEYXRhKSA9PiB7XG5cdFx0cmV0dXJuIHNldHRpbmc/LmNvbnRyb2xbMF0/LmlkID09PSBcInBlcnNvbmFsaXphdGlvblwiO1xuXHR9KTtcblx0aWYgKHBlcnNvbmFsaXphdGlvblNldHRpbmcpIHtcblx0XHRyZXR1cm4gcGVyc29uYWxpemF0aW9uU2V0dGluZy5jb250cm9sWzBdLnZhbHVlO1xuXHR9XG5cdHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVDb25maWdNb2RlbChjb25maWdDb250ZXh0OiBDb250ZXh0LCBzZXR0aW5nc01vZGVsOiBKU09OTW9kZWwsIHBhdGggPSBcInJ0YS9jb25maWdTZXR0aW5nc1wiKTogdm9pZCB7XG5cdGNvbnN0IHVwZGF0ZWRTZXR0aW5ncyA9IGRlZXBDbG9uZShzZXR0aW5nc01vZGVsLmdldERhdGEoKSk7XG5cdGNvbmZpZ0NvbnRleHQuc2V0UHJvcGVydHkocGF0aCwgdXBkYXRlZFNldHRpbmdzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFByb3BlcnR5TmFtZXNBbmREZXNjcmlwdGlvbnMocHJvcHM6IERlc2lnbnRpbWVTZXR0aW5nW10sIHJlc291cmNlTW9kZWw6IFJlc291cmNlTW9kZWwpOiBEZXNpZ250aW1lU2V0dGluZ1tdIHtcblx0cHJvcHMuZm9yRWFjaChmdW5jdGlvbiAocHJvcCkge1xuXHRcdHByb3AubmFtZSA9IHJlc291cmNlTW9kZWwuZ2V0VGV4dChwcm9wLm5hbWUpO1xuXHRcdHByb3AuZGVzY3JpcHRpb24gPSByZXNvdXJjZU1vZGVsLmdldFRleHQocHJvcC5kZXNjcmlwdGlvbik7XG5cdFx0aWYgKHByb3AuZW51bXMpIHtcblx0XHRcdHByb3AuZW51bXMuZm9yRWFjaChmdW5jdGlvbiAoZW51bW0pIHtcblx0XHRcdFx0ZW51bW0ubmFtZSA9IHJlc291cmNlTW9kZWwuZ2V0VGV4dChlbnVtbS5uYW1lKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fSk7XG5cblx0cmV0dXJuIHByb3BzO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztFQUFBO0FBQ0E7QUFDQTtFQWdGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNPLFNBQVNBLHdCQUF3QkEsQ0FDdkNDLGtCQUF1QyxFQUN2Q0MsYUFBNEIsRUFDNUJDLGNBQTZCLEVBQ2I7SUFDaEIsTUFBTUMsZUFBOEIsR0FBRyxDQUFDLENBQUM7SUFFekNILGtCQUFrQixDQUFDSSxPQUFPLENBQUMsVUFBVUMsT0FBTyxFQUFFO01BQzdDLElBQ0UsT0FBT0osYUFBYSxDQUFDSSxPQUFPLENBQUNDLEVBQUUsQ0FBQyxLQUFLLFFBQVEsSUFBSUwsYUFBYSxDQUFDSSxPQUFPLENBQUNDLEVBQUUsQ0FB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
|
|
453
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRDaGFuZ2VkUHJvcGVydHlWYWx1ZXMiLCJkZXNpZ250aW1lU2V0dGluZ3MiLCJ1bmNoYW5nZWREYXRhIiwicHJvcGVydHlWYWx1ZXMiLCJwcm9wZXJ0eUNoYW5nZXMiLCJmb3JFYWNoIiwic2V0dGluZyIsImlkIiwiSlNPTiIsInN0cmluZ2lmeSIsIndyaXRlT2JqZWN0Iiwid3JpdGVPYmplY3RGb3IiLCJjaGFuZ2VPYmplY3QiLCJsZW5ndGgiLCJzZXR0aW5nc1RvZ2V0aGVyIiwicGF0aCIsInNraXBDaGFuZ2UiLCJfZXhwb3J0cyIsImdldENoYW5nZVN0cnVjdHVyZSIsImFwcENvbXBvbmVudCIsInBhZ2UiLCJwcm9wZXJ0eVBhdGgiLCJzZWxlY3RvciIsImNoYW5nZVNwZWNpZmljRGF0YSIsImFwcERlc2NyaXB0b3JDaGFuZ2VUeXBlIiwiY29udGVudCIsInBhcmFtZXRlcnMiLCJlbnRpdHlQcm9wZXJ0eUNoYW5nZSIsIm9wZXJhdGlvbiIsInByb3BlcnR5VmFsdWUiLCJzZXRMb2NhbFRleHQiLCJpdGVtIiwicmVzb3VyY2VNb2RlbCIsImtleSIsImdldFRleHQiLCJzZXRMb2NhbFRleHRzIiwibW9kZWwiLCJzZXR0aW5nc0RhdGEiLCJnZXREYXRhIiwiY29udHJvbCIsImNvbnRyb2xEYXRhIiwiZW51bSIsImVudW1EYXRhIiwiY3JlYXRlQWRhcHRpb25EaWFsb2dDb250ZW50IiwiY29uZmlnQ29udGV4dCIsImNvbmZpZ1BhdGgiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJzZXR0aW5nc01vZGVsIiwiSlNPTk1vZGVsIiwic2V0RGF0YSIsImRlZXBDbG9uZSIsImdldFByb3BlcnR5IiwibGlzdCIsIkxpc3QiLCJzZXRNb2RlbCIsImxpc3RJdGVtIiwiSW5wdXRMaXN0SXRlbSIsImxhYmVsIiwiYmluZENvbnRlbnQiLCJmYWN0b3J5IiwiY29udGV4dCIsInR5cGUiLCJJdGVtIiwidGV4dCIsInNlbGVjdCIsIlNlbGVjdCIsInNlbGVjdGVkS2V5IiwiY2hhbmdlIiwiZXZlbnQiLCJkYXRhIiwiZ2V0UGFyYW1ldGVyIiwiZ2V0S2V5IiwiYmluZEl0ZW1zIiwidGVtcGxhdGUiLCJJbnB1dCIsInZhbHVlIiwib011bHRpSW5wdXQiLCJNdWx0aUlucHV0Iiwid2lkdGgiLCJzaG93VmFsdWVIZWxwIiwic2hvd0NsZWFySWNvbiIsInRva2VucyIsIm5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwibWFwIiwibmF2aWdhdGlvblByb3BlcnR5IiwiVG9rZW4iLCJ0b2tlblVwZGF0ZSIsImFycmF5IiwicHVzaCIsInNwbGljZSIsImluZGV4T2YiLCJhZGRWYWxpZGF0b3IiLCJhcmdzIiwiQ2hlY2tCb3giLCJzZWxlY3RlZCIsInRvTG93ZXJDYXNlIiwicGFyc2UiLCJ0b1N0cmluZyIsIm9wZW5BZGFwdGlvbkRpYWxvZyIsInRpdGxlIiwiaW5mb1RleHQiLCJzaXplIiwiaW5mb3JtYXRpb25NZXNzYWdlIiwiTWVzc2FnZVN0cmlwIiwic2hvd0ljb24iLCJhZGRTdHlsZUNsYXNzIiwibGlzdEluZGV4IiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJkaWFsb2ciLCJEaWFsb2ciLCJjb250ZW50V2lkdGgiLCJjb250ZW50SGVpZ2h0IiwiaGVpZ2h0IiwiYnV0dG9ucyIsIkJ1dHRvbiIsInByZXNzIiwidXBkYXRlQ29uZmlnTW9kZWwiLCJnZXRDb250ZW50IiwiZ2V0TW9kZWwiLCJjbG9zZSIsIm9wZW4iLCJwcm9jZXNzQ2hhbmdlcyIsInNpbmdsZUNoYW5nZSIsImNoYW5nZXMiLCJPYmplY3QiLCJlbnRyaWVzIiwiZ2V0Q2hhbmdlIiwicHJvY2Vzc0dsb2JhbENoYW5nZXMiLCJrZXlzIiwic2VwYXJhdGVDaGFuZ2VzIiwiQ29tbW9uVXRpbHMiLCJnZXRBcHBDb21wb25lbnQiLCJnZXRQYWdlIiwiZ2V0UGFyZW50Iiwic2VwYXJhdGVHbG9iYWxDaGFuZ2VzIiwidmlld0lkIiwiZ2V0VGFyZ2V0VmlldyIsImdldElkIiwic3BsaXQiLCJleHRyYWN0Q2hhbmdlcyIsInByb3BlcnR5VmFsdWVzRW50ZXJlZCIsImdsb2JhbFNldHRpbmdzIiwiZ2xvYmFsQ2hhbmdlcyIsImdsb2JhbCIsImNvbmNhdCIsIm5vQ2hhbmdlcyIsImlzRmlvcmlUb29sc1J0YU1vZGUiLCJ1cmxQYXJhbXMiLCJzaGVsbFNlcnZpY2UiLCJnZXRTaGVsbFNlcnZpY2VzIiwicGFyc2VQYXJhbWV0ZXJzIiwid2luZG93IiwibG9jYXRpb24iLCJzZWFyY2giLCJpc1JUQU1vZGUiLCJnZXRTZXR0aW5nc0lmS2V5VXNlciIsIml0ZW1zIiwiZmlsdGVyIiwia2V5VXNlciIsImlzQ29uZmlnTW9kZWxQcmVwYXJlZCIsInByZXBhcmVDb25maWdNb2RlbCIsInNldFByb3BlcnR5IiwiZ2V0UGVyc29uYWxpemF0aW9uU2V0dGluZyIsInNldHRpbmdzIiwiZ2V0T2JqZWN0IiwicGVyc29uYWxpemF0aW9uU2V0dGluZyIsImZpbmQiLCJ1cGRhdGVkU2V0dGluZ3MiLCJnZXRQcm9wZXJ0eU5hbWVzQW5kRGVzY3JpcHRpb25zIiwicHJvcHMiLCJwcm9wIiwibmFtZSIsImRlc2NyaXB0aW9uIiwiZW51bXMiLCJlbnVtbSIsImlzTWFuaWZlc3RDaGFuZ2VzRW5hYmxlZCIsIm93bmVyIiwiQ29tcG9uZW50IiwiZ2V0T3duZXJDb21wb25lbnRGb3IiLCJzYXBGZU1hbmlmZXN0IiwiZ2V0TWFuaWZlc3RFbnRyeSIsImFwcCIsImRpc2FibGVNYW5pZmVzdENoYW5nZXMiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkRlc2lnbnRpbWUuaGVscGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogUmV1c2UgZnVuY3Rpb25zIGZvciBkZXNpZ250aW1lIGFkYXB0aW9uXG4gKi9cblxuaW1wb3J0IGRlZXBDbG9uZSBmcm9tIFwic2FwL2Jhc2UvdXRpbC9kZWVwQ2xvbmVcIjtcbmltcG9ydCB0eXBlIEFwcENvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwQ29tcG9uZW50XCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBSZXNvdXJjZU1vZGVsIGZyb20gXCJzYXAvZmUvY29yZS9SZXNvdXJjZU1vZGVsXCI7XG5pbXBvcnQgdHlwZSBUZW1wbGF0ZUNvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvVGVtcGxhdGVDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgVGVtcGxhdGVUeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IEJ1dHRvbiBmcm9tIFwic2FwL20vQnV0dG9uXCI7XG5pbXBvcnQgQ2hlY2tCb3ggZnJvbSBcInNhcC9tL0NoZWNrQm94XCI7XG5pbXBvcnQgRGlhbG9nIGZyb20gXCJzYXAvbS9EaWFsb2dcIjtcbmltcG9ydCBJbnB1dCBmcm9tIFwic2FwL20vSW5wdXRcIjtcbmltcG9ydCBJbnB1dExpc3RJdGVtIGZyb20gXCJzYXAvbS9JbnB1dExpc3RJdGVtXCI7XG5pbXBvcnQgTGlzdCBmcm9tIFwic2FwL20vTGlzdFwiO1xuaW1wb3J0IE1lc3NhZ2VTdHJpcCBmcm9tIFwic2FwL20vTWVzc2FnZVN0cmlwXCI7XG5pbXBvcnQgdHlwZSB7IE11bHRpSW5wdXQkVG9rZW5VcGRhdGVFdmVudCB9IGZyb20gXCJzYXAvbS9NdWx0aUlucHV0XCI7XG5pbXBvcnQgTXVsdGlJbnB1dCBmcm9tIFwic2FwL20vTXVsdGlJbnB1dFwiO1xuaW1wb3J0IFNlbGVjdCBmcm9tIFwic2FwL20vU2VsZWN0XCI7XG5pbXBvcnQgVG9rZW4gZnJvbSBcInNhcC9tL1Rva2VuXCI7XG5pbXBvcnQgQ29tcG9uZW50IGZyb20gXCJzYXAvdWkvY29yZS9Db21wb25lbnRcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBJdGVtIGZyb20gXCJzYXAvdWkvY29yZS9JdGVtXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuaW1wb3J0IEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5cbmV4cG9ydCB0eXBlIGFkYXB0aW9uQ2hhbmdlID0ge1xuXHRhcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudDtcblx0c2VsZWN0b3I6IEFwcENvbXBvbmVudDtcblx0Y2hhbmdlU3BlY2lmaWNEYXRhOiB7XG5cdFx0YXBwRGVzY3JpcHRvckNoYW5nZVR5cGU6IFwiYXBwZGVzY3JfZmVfY2hhbmdlUGFnZUNvbmZpZ3VyYXRpb25cIjtcblx0XHRjb250ZW50OiB7XG5cdFx0XHRwYXJhbWV0ZXJzOiB7XG5cdFx0XHRcdHBhZ2U6IHN0cmluZztcblx0XHRcdFx0ZW50aXR5UHJvcGVydHlDaGFuZ2U6IHtcblx0XHRcdFx0XHRwcm9wZXJ0eVBhdGg6IHN0cmluZztcblx0XHRcdFx0XHRvcGVyYXRpb246IHN0cmluZztcblx0XHRcdFx0XHRwcm9wZXJ0eVZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSB8IGJvb2xlYW4gfCBudW1iZXIgfCBvYmplY3QgfCB1bmRlZmluZWQ7XG5cdFx0XHRcdH07XG5cdFx0XHR9O1xuXHRcdH07XG5cdH07XG59O1xuXG5leHBvcnQgdHlwZSBEZXNpZ250aW1lU2V0dGluZ0VudW1zID0ge1xuXHRpZDogc3RyaW5nO1xuXHRuYW1lOiBzdHJpbmc7XG5cdGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgRGVzaWdudGltZVNldHRpbmcgPSB7XG5cdGlkOiBzdHJpbmc7XG5cdHBhdGg/OiBzdHJpbmc7XG5cdG5hbWU6IHN0cmluZztcblx0ZGVzY3JpcHRpb246IHN0cmluZztcblx0cmVzdHJpY3RlZFRvPzogVGVtcGxhdGVUeXBlW107XG5cdHZhbHVlOiB1bmtub3duO1xuXHR0eXBlPzogc3RyaW5nO1xuXHRlbnVtcz86IERlc2lnbnRpbWVTZXR0aW5nRW51bXNbXTtcblx0c2tpcENoYW5nZT86IGJvb2xlYW47XG5cdHdyaXRlT2JqZWN0Rm9yPzogc3RyaW5nO1xuXHR3cml0ZU9iamVjdD86IHsgaWQ6IHN0cmluZzsgcGF0aD86IHN0cmluZyB9W107XG5cdGtleVVzZXI/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgUHJvcGVydHlWYWx1ZSA9IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHN0cmluZ1tdIHwgYm9vbGVhbiB8IG51bWJlciB8IG9iamVjdCB8IHVuZGVmaW5lZD47XG5cbmV4cG9ydCB0eXBlIFNldHRpbmdzRGF0YSA9IHtcblx0bGFiZWw6IHN0cmluZztcblx0dG9vbHRpcDogc3RyaW5nO1xuXHRjb250cm9sOiBDb250cm9sRGF0YVtdO1xuXHRrZXlVc2VyPzogYm9vbGVhbjtcbn07XG5cbnR5cGUgQ29udHJvbERhdGEgPSB7XG5cdHR5cGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0ZW51bTogRGVzaWdudGltZVNldHRpbmdFbnVtc1tdIHwgdW5kZWZpbmVkO1xuXHR2YWx1ZTogdW5rbm93bjtcblx0aWQ6IHN0cmluZztcbn07XG5cbnR5cGUgcHJvcEtleUFuZFZhbHVlID0geyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB8IGJvb2xlYW4gfCBudW1iZXIgfCBvYmplY3QgfCB1bmRlZmluZWQgfTtcblxuLyoqXG4gKiBJZGVudGlmeSB3aGljaCBzZXR0aW5ncyBoYXZlIGNoYW5nZWQuXG4gKiBAcGFyYW0gZGVzaWdudGltZVNldHRpbmdzXG4gKiBAcGFyYW0gdW5jaGFuZ2VkRGF0YVxuICogQHBhcmFtIHByb3BlcnR5VmFsdWVzXG4gKiAgQHJldHVybnMgVGhlIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllcyB3aGVyZSB0aGUgdmFsdWVzIGhhdmUgYmVlbiBjaGFuZ2VkIGNvbXBhcmVkIHRvIHRoZSBzdGFydGluZyB2YWx1ZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENoYW5nZWRQcm9wZXJ0eVZhbHVlcyhcblx0ZGVzaWdudGltZVNldHRpbmdzOiBEZXNpZ250aW1lU2V0dGluZ1tdLFxuXHR1bmNoYW5nZWREYXRhOiBQcm9wZXJ0eVZhbHVlLFxuXHRwcm9wZXJ0eVZhbHVlczogUHJvcGVydHlWYWx1ZVxuKTogUHJvcGVydHlWYWx1ZSB7XG5cdGNvbnN0IHByb3BlcnR5Q2hhbmdlczogUHJvcGVydHlWYWx1ZSA9IHt9O1xuXG5cdGRlc2lnbnRpbWVTZXR0aW5ncy5mb3JFYWNoKGZ1bmN0aW9uIChzZXR0aW5nKSB7XG5cdFx0aWYgKFxuXHRcdFx0KHR5cGVvZiB1bmNoYW5nZWREYXRhW3NldHRpbmcuaWRdICE9PSBcIm9iamVjdFwiICYmIHVuY2hhbmdlZERhdGFbc2V0dGluZy5pZF0gIT09IHByb3BlcnR5VmFsdWVzW3NldHRpbmcuaWRdKSB8fFxuXHRcdFx0KHR5cGVvZiB1bmNoYW5nZWREYXRhW3NldHRpbmcuaWRdID09PSBcIm9iamVjdFwiICYmXG5cdFx0XHRcdEpTT04uc3RyaW5naWZ5KHVuY2hhbmdlZERhdGFbc2V0dGluZy5pZF0pICE9PSBKU09OLnN0cmluZ2lmeShwcm9wZXJ0eVZhbHVlc1tzZXR0aW5nLmlkXSkpXG5cdFx0KSB7XG5cdFx0XHRpZiAoc2V0dGluZy53cml0ZU9iamVjdCAmJiBwcm9wZXJ0eVZhbHVlc1tzZXR0aW5nLmlkXSA9PT0gc2V0dGluZy53cml0ZU9iamVjdEZvcikge1xuXHRcdFx0XHQvLyBXZSB3cml0ZSBhbiBvYmplY3QgZm9yIHRoaXMgc2V0dGluZ1xuXHRcdFx0XHRjb25zdCBjaGFuZ2VPYmplY3Q6IFByb3BlcnR5VmFsdWUgPSB7fTtcblx0XHRcdFx0aWYgKHNldHRpbmcud3JpdGVPYmplY3QgJiYgc2V0dGluZy53cml0ZU9iamVjdD8ubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdHNldHRpbmcud3JpdGVPYmplY3QuZm9yRWFjaChmdW5jdGlvbiAoc2V0dGluZ3NUb2dldGhlcikge1xuXHRcdFx0XHRcdFx0Y2hhbmdlT2JqZWN0W3NldHRpbmdzVG9nZXRoZXIucGF0aCA/IHNldHRpbmdzVG9nZXRoZXIucGF0aCA6IHNldHRpbmdzVG9nZXRoZXIuaWRdID1cblx0XHRcdFx0XHRcdFx0cHJvcGVydHlWYWx1ZXNbc2V0dGluZ3NUb2dldGhlci5pZF07XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cHJvcGVydHlDaGFuZ2VzW3NldHRpbmcucGF0aCA/IHNldHRpbmcucGF0aCA6IHNldHRpbmcuaWRdID0gY2hhbmdlT2JqZWN0O1xuXHRcdFx0fSBlbHNlIGlmICghc2V0dGluZy5za2lwQ2hhbmdlKSB7XG5cdFx0XHRcdHByb3BlcnR5Q2hhbmdlc1tzZXR0aW5nLnBhdGggPyBzZXR0aW5nLnBhdGggOiBzZXR0aW5nLmlkXSA9IHByb3BlcnR5VmFsdWVzW3NldHRpbmcuaWRdO1xuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG5cdHJldHVybiBwcm9wZXJ0eUNoYW5nZXM7XG59XG4vKipcbiAqIENvbnZlcnQgc2FwLmZlIGNoYW5nZSBpbnRvIGEgc3RydWN0dXJlIHJlcXVpcmVkIGJ5IHRoZSBmbGV4aWJpbGl0eSB0b29scy5cbiAqIEBwYXJhbSBhcHBDb21wb25lbnRcbiAqIEBwYXJhbSBwYWdlXG4gKiBAcGFyYW0gcHJvcGVydHlQYXRoXG4gKiBAcGFyYW0gcHJvcGVydHlDaGFuZ2VzXG4gKiBAcmV0dXJucyBUaGUgY2hhbmdlIHN0cnVjdHVyZSB1c2VkIGJ5IGZsZXhpYmlsaXR5IHRvb2xzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGFuZ2VTdHJ1Y3R1cmUoXG5cdGFwcENvbXBvbmVudDogQXBwQ29tcG9uZW50LFxuXHRwYWdlOiBzdHJpbmcsXG5cdHByb3BlcnR5UGF0aDogc3RyaW5nLFxuXHRwcm9wZXJ0eUNoYW5nZXM6IHN0cmluZyB8IHN0cmluZ1tdIHwgYm9vbGVhbiB8IG51bWJlciB8IG9iamVjdCB8IHVuZGVmaW5lZFxuKTogYWRhcHRpb25DaGFuZ2Uge1xuXHRyZXR1cm4ge1xuXHRcdGFwcENvbXBvbmVudDogYXBwQ29tcG9uZW50LFxuXHRcdHNlbGVjdG9yOiBhcHBDb21wb25lbnQsXG5cdFx0Y2hhbmdlU3BlY2lmaWNEYXRhOiB7XG5cdFx0XHRhcHBEZXNjcmlwdG9yQ2hhbmdlVHlwZTogXCJhcHBkZXNjcl9mZV9jaGFuZ2VQYWdlQ29uZmlndXJhdGlvblwiLFxuXHRcdFx0Y29udGVudDoge1xuXHRcdFx0XHRwYXJhbWV0ZXJzOiB7XG5cdFx0XHRcdFx0cGFnZTogcGFnZSxcblx0XHRcdFx0XHRlbnRpdHlQcm9wZXJ0eUNoYW5nZToge1xuXHRcdFx0XHRcdFx0cHJvcGVydHlQYXRoOiBwcm9wZXJ0eVBhdGgsXG5cdFx0XHRcdFx0XHRvcGVyYXRpb246IFwiVVBTRVJUXCIsXG5cdFx0XHRcdFx0XHRwcm9wZXJ0eVZhbHVlOiBwcm9wZXJ0eUNoYW5nZXNcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH07XG59XG5cbmZ1bmN0aW9uIHNldExvY2FsVGV4dChpdGVtOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgcmVzb3VyY2VNb2RlbDogUmVzb3VyY2VNb2RlbCk6IHZvaWQge1xuXHRmb3IgKGNvbnN0IGtleSBpbiBpdGVtKSB7XG5cdFx0aWYgKGtleSAhPT0gXCJpZFwiICYmIHR5cGVvZiBpdGVtW2tleV0gPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdGl0ZW1ba2V5XSA9IHJlc291cmNlTW9kZWwuZ2V0VGV4dChpdGVtW2tleV0gYXMgc3RyaW5nKTtcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gc2V0TG9jYWxUZXh0cyhtb2RlbDogSlNPTk1vZGVsLCByZXNvdXJjZU1vZGVsOiBSZXNvdXJjZU1vZGVsKTogdm9pZCB7XG5cdGNvbnN0IHNldHRpbmdzRGF0YSA9IG1vZGVsLmdldERhdGEoKSBhcyBTZXR0aW5nc0RhdGFbXTtcblx0c2V0dGluZ3NEYXRhLmZvckVhY2goKHNldHRpbmcpID0+IHtcblx0XHRzZXRMb2NhbFRleHQoc2V0dGluZywgcmVzb3VyY2VNb2RlbCk7XG5cdFx0c2V0dGluZy5jb250cm9sLmZvckVhY2goKGNvbnRyb2xEYXRhKSA9PiB7XG5cdFx0XHRzZXRMb2NhbFRleHQoY29udHJvbERhdGEsIHJlc291cmNlTW9kZWwpO1xuXHRcdFx0Y29udHJvbERhdGEuZW51bT8uZm9yRWFjaCgoZW51bURhdGEpID0+IHtcblx0XHRcdFx0c2V0TG9jYWxUZXh0KGVudW1EYXRhLCByZXNvdXJjZU1vZGVsKTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFkYXB0aW9uRGlhbG9nQ29udGVudChcblx0Y29uZmlnQ29udGV4dDogQ29udGV4dCxcblx0cHJvcGVydHlWYWx1ZXM6IFByb3BlcnR5VmFsdWUsXG5cdHJlc291cmNlTW9kZWw6IFJlc291cmNlTW9kZWwsXG5cdGNvbmZpZ1BhdGggPSBcInJ0YS9jb25maWdTZXR0aW5nc1wiXG4pOiBMaXN0IHtcblx0Y29uc3Qgc2V0dGluZ3NNb2RlbCA9IG5ldyBKU09OTW9kZWwoKTtcblx0c2V0dGluZ3NNb2RlbC5zZXREYXRhKGRlZXBDbG9uZShjb25maWdDb250ZXh0LmdldFByb3BlcnR5KGNvbmZpZ1BhdGgpKSk7XG5cdHNldExvY2FsVGV4dHMoc2V0dGluZ3NNb2RlbCwgcmVzb3VyY2VNb2RlbCk7XG5cdGNvbnN0IGxpc3QgPSBuZXcgTGlzdCgpO1xuXHRsaXN0LnNldE1vZGVsKHNldHRpbmdzTW9kZWwpO1xuXG5cdGNvbnN0IGxpc3RJdGVtID0gbmV3IElucHV0TGlzdEl0ZW0oe1xuXHRcdGxhYmVsOiBcIntsYWJlbH1cIlxuXHR9KTtcblxuXHRsaXN0SXRlbS5iaW5kQ29udGVudCh7XG5cdFx0cGF0aDogXCJjb250cm9sXCIsXG5cdFx0ZmFjdG9yeTogZnVuY3Rpb24gKHBhdGg6IHN0cmluZywgY29udGV4dDogeyBnZXRQcm9wZXJ0eShuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfSAvKiBzYXAudWkubW9kZWwuQ29udGV4dCAqLykge1xuXHRcdFx0Y29uc3QgdHlwZSA9IGNvbnRleHQuZ2V0UHJvcGVydHkoXCJ0eXBlXCIpO1xuXHRcdFx0Y29uc3QgaWQgPSBjb250ZXh0LmdldFByb3BlcnR5KFwiaWRcIik7XG5cblx0XHRcdHN3aXRjaCAodHlwZSkge1xuXHRcdFx0XHRjYXNlIFwic3RyaW5nXCI6XG5cdFx0XHRcdFx0aWYgKGNvbnRleHQuZ2V0UHJvcGVydHkoXCJlbnVtXCIpKSB7XG5cdFx0XHRcdFx0XHQvLyBDcmVhdGUgYSBzZWxlY3QgbGlzdCBmb3IgbXVsdGlwbGUgb3B0aW9ucyB0byBzZWxlY3Rcblx0XHRcdFx0XHRcdGNvbnN0IGl0ZW0gPSBuZXcgSXRlbSh7XG5cdFx0XHRcdFx0XHRcdHRleHQ6IFwie25hbWV9XCIsXG5cdFx0XHRcdFx0XHRcdGtleTogXCJ7aWR9XCJcblx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRjb25zdCBzZWxlY3QgPSBuZXcgU2VsZWN0KHtcblx0XHRcdFx0XHRcdFx0c2VsZWN0ZWRLZXk6IFwie3ZhbHVlfVwiLFxuXHRcdFx0XHRcdFx0XHRjaGFuZ2U6IGZ1bmN0aW9uIChldmVudCk6IHZvaWQge1xuXHRcdFx0XHRcdFx0XHRcdHByb3BlcnR5VmFsdWVzWyh0aGlzIGFzIFNlbGVjdCkuZGF0YShcImlkXCIpIGFzIGtleW9mIFByb3BlcnR5VmFsdWVdID0gKFxuXHRcdFx0XHRcdFx0XHRcdFx0ZXZlbnQuZ2V0UGFyYW1ldGVyKFwic2VsZWN0ZWRJdGVtXCIpIGFzIEl0ZW1cblx0XHRcdFx0XHRcdFx0XHQpLmdldEtleSgpIGFzIHN0cmluZyAmIGJvb2xlYW47XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0pLmRhdGEoXCJpZFwiLCBpZCk7XG5cblx0XHRcdFx0XHRcdHNlbGVjdC5iaW5kSXRlbXMoe1xuXHRcdFx0XHRcdFx0XHRwYXRoOiBcImVudW1cIixcblx0XHRcdFx0XHRcdFx0dGVtcGxhdGU6IGl0ZW1cblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNlbGVjdDtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Ly8gQ3JlYXRlIGFuIElucHV0IGZvciB0ZXh0IGNoYW5nZXNcblx0XHRcdFx0XHRcdHJldHVybiBuZXcgSW5wdXQoe1xuXHRcdFx0XHRcdFx0XHR2YWx1ZTogXCJ7dmFsdWV9XCIsXG5cdFx0XHRcdFx0XHRcdGNoYW5nZTogZnVuY3Rpb24gKGV2ZW50KTogdm9pZCB7XG5cdFx0XHRcdFx0XHRcdFx0cHJvcGVydHlWYWx1ZXNbKHRoaXMgYXMgSW5wdXQpLmRhdGEoXCJpZFwiKSBhcyBrZXlvZiBQcm9wZXJ0eVZhbHVlXSA9IGV2ZW50LmdldFBhcmFtZXRlcihcInZhbHVlXCIpIGFzIHN0cmluZyAmXG5cdFx0XHRcdFx0XHRcdFx0XHRib29sZWFuO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9KS5kYXRhKFwiaWRcIiwgaWQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0Y2FzZSBcInN0cmluZ1tdXCI6XG5cdFx0XHRcdFx0Ly8gQ3JlYXRlIGFuIG11bHRpIGlucHV0IGZpZWxkIGZvciB0aGUgbmF2aWdhdGlvbiBwcm9wZXJ0aWVzXG5cdFx0XHRcdFx0Y29uc3Qgb011bHRpSW5wdXQgPSBuZXcgTXVsdGlJbnB1dCh7XG5cdFx0XHRcdFx0XHR3aWR0aDogXCI3MCVcIixcblx0XHRcdFx0XHRcdHNob3dWYWx1ZUhlbHA6IGZhbHNlLFxuXHRcdFx0XHRcdFx0c2hvd0NsZWFySWNvbjogdHJ1ZSxcblx0XHRcdFx0XHRcdHRva2VuczogKHByb3BlcnR5VmFsdWVzPy5uYXZpZ2F0aW9uUHJvcGVydGllcyBhcyBzdHJpbmdbXSkubWFwKChuYXZpZ2F0aW9uUHJvcGVydHkpID0+IHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG5ldyBUb2tlbih7IHRleHQ6IG5hdmlnYXRpb25Qcm9wZXJ0eSwga2V5OiBuYXZpZ2F0aW9uUHJvcGVydHkgfSk7XG5cdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdHRva2VuVXBkYXRlOiBmdW5jdGlvbiAoZXZlbnQ6IE11bHRpSW5wdXQkVG9rZW5VcGRhdGVFdmVudCk6IHZvaWQge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBhcnJheSA9IHByb3BlcnR5VmFsdWVzWyh0aGlzIGFzIE11bHRpSW5wdXQpLmRhdGEoXCJpZFwiKV0gYXMgc3RyaW5nW107XG5cdFx0XHRcdFx0XHRcdGlmICgoZXZlbnQuZ2V0UGFyYW1ldGVyKFwiYWRkZWRUb2tlbnNcIikgYXMgVG9rZW5bXSk/Lmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRcdFx0XHRhcnJheS5wdXNoKChldmVudD8uZ2V0UGFyYW1ldGVyKFwiYWRkZWRUb2tlbnNcIikgYXMgVG9rZW5bXSlbMF0/LmdldFByb3BlcnR5KFwia2V5XCIpKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmICgoZXZlbnQuZ2V0UGFyYW1ldGVyKFwicmVtb3ZlZFRva2Vuc1wiKSBhcyBUb2tlbltdKT8ubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0XHRcdGFycmF5LnNwbGljZShhcnJheS5pbmRleE9mKChldmVudD8uZ2V0UGFyYW1ldGVyKFwicmVtb3ZlZFRva2Vuc1wiKSBhcyBUb2tlbltdKVswXT8uZ2V0UHJvcGVydHkoXCJrZXlcIikpLCAxKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pLmRhdGEoXCJpZFwiLCBpZCk7XG5cdFx0XHRcdFx0b011bHRpSW5wdXQuYWRkVmFsaWRhdG9yKGZ1bmN0aW9uIChhcmdzOiB7IHRleHQ6IHN0cmluZyB9KSB7XG5cdFx0XHRcdFx0XHRjb25zdCB0ZXh0ID0gYXJncy50ZXh0O1xuXHRcdFx0XHRcdFx0cmV0dXJuIG5ldyBUb2tlbih7XG5cdFx0XHRcdFx0XHRcdGtleTogdGV4dCxcblx0XHRcdFx0XHRcdFx0dGV4dDogdGV4dFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0cmV0dXJuIG9NdWx0aUlucHV0O1xuXHRcdFx0XHRjYXNlIFwibnVtYmVyXCI6XG5cdFx0XHRcdFx0Ly8gQ3JlYXRlIGFuIElucHV0IGZvciBudW1iZXIgY2hhbmdlc1xuXHRcdFx0XHRcdHJldHVybiBuZXcgSW5wdXQoe1xuXHRcdFx0XHRcdFx0dmFsdWU6IFwie3ZhbHVlfVwiLFxuXHRcdFx0XHRcdFx0dHlwZTogXCJOdW1iZXJcIixcblx0XHRcdFx0XHRcdGNoYW5nZTogZnVuY3Rpb24gKGV2ZW50KTogdm9pZCB7XG5cdFx0XHRcdFx0XHRcdHByb3BlcnR5VmFsdWVzWyh0aGlzIGFzIElucHV0KS5kYXRhKFwiaWRcIikgYXMga2V5b2YgUHJvcGVydHlWYWx1ZV0gPSBldmVudC5nZXRQYXJhbWV0ZXIoXCJ2YWx1ZVwiKSBhcyBzdHJpbmcgJlxuXHRcdFx0XHRcdFx0XHRcdGJvb2xlYW47XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSkuZGF0YShcImlkXCIsIGlkKTtcblx0XHRcdFx0Y2FzZSBcImJvb2xlYW5cIjpcblx0XHRcdFx0XHQvLyBDcmVhdGUgYSBjaGVja2JveCBmb3IgdHJ1ZS9mYWxzZSB2YWx1ZXNcblx0XHRcdFx0XHRyZXR1cm4gbmV3IENoZWNrQm94KHtcblx0XHRcdFx0XHRcdHNlbGVjdGVkOiBcInt2YWx1ZX1cIixcblx0XHRcdFx0XHRcdHNlbGVjdDogZnVuY3Rpb24gKGV2ZW50KTogdm9pZCB7XG5cdFx0XHRcdFx0XHRcdHByb3BlcnR5VmFsdWVzWyh0aGlzIGFzIENoZWNrQm94KS5kYXRhKFwiaWRcIikgYXMga2V5b2YgUHJvcGVydHlWYWx1ZV0gPSBldmVudC5nZXRQYXJhbWV0ZXIoXG5cdFx0XHRcdFx0XHRcdFx0XCJzZWxlY3RlZFwiXG5cdFx0XHRcdFx0XHRcdCkgYXMgc3RyaW5nICYgYm9vbGVhbjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KS5kYXRhKFwiaWRcIiwgaWQpO1xuXHRcdFx0XHRjYXNlIFwiYm9vbGVhbk9yU3RyaW5nXCI6XG5cdFx0XHRcdFx0Ly8gQ3JlYXRlIGEgc2VsZWN0IGxpc3QgZm9yIGJvb2xlYW4gYW5kIHN0cmluZyBvcHRpb25zIHRvIHNlbGVjdFxuXHRcdFx0XHRcdC8vIFRoaXMgdHlwZSBpcyBhdCB0aGUgbW9tZW50IG9ubHkgdXNlZCBmb3IgcGVyc29uYWxpemF0aW9uIHNldHRpbmdzIHdoaWNoIGNhbiBiZSB1bmRlZmluZWQsIHRydWUsIGZhbHNlIG9yIGFuIG9iamVjdFxuXHRcdFx0XHRcdC8vIFRoZSBzZWxlY3QgbGlzdCBpcyB1c2VkIHRvIHNlbGVjdCBiZXR3ZWVuIHRydWUsIGZhbHNlIGFuZCBcIk93biBTZXR0aW5nc1wiXG5cdFx0XHRcdFx0Ly8gSWYgXCJPd24gU2V0dGluZ3NcIiBpcyBzZWxlY3RlZCwgdGhlIHBlcnNvbmFsaXphdGlvbiBvYmplY3QgaXMgd3JpdHRlbiwgb3RoZXJ3aXNlIHRoZSBib29sZWFuIGlzIHdyaXR0ZW4gKHVuZGVmaW5lZCBjYW5ub3QgYmUgd3JpdHRlbiBpbiBhIG1hbmlmZXN0IGNoYW5nZSlcblx0XHRcdFx0XHRjb25zdCBpdGVtID0gbmV3IEl0ZW0oe1xuXHRcdFx0XHRcdFx0dGV4dDogXCJ7bmFtZX1cIixcblx0XHRcdFx0XHRcdGtleTogXCJ7aWR9XCJcblx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdGNvbnN0IHNlbGVjdCA9IG5ldyBTZWxlY3Qoe1xuXHRcdFx0XHRcdFx0c2VsZWN0ZWRLZXk6IFwie3ZhbHVlfVwiLFxuXHRcdFx0XHRcdFx0Y2hhbmdlOiBmdW5jdGlvbiAoZXZlbnQpOiB2b2lkIHtcblx0XHRcdFx0XHRcdFx0bGV0IHZhbHVlID0gKGV2ZW50LmdldFBhcmFtZXRlcihcInNlbGVjdGVkSXRlbVwiKSBhcyBJdGVtKS5nZXRLZXkoKTtcblx0XHRcdFx0XHRcdFx0Ly8gQ29udmVydCBzdHJpbmcgdG8gYm9vbGVhbiBpZiBuZWNlc3Nhcnlcblx0XHRcdFx0XHRcdFx0aWYgKHZhbHVlLnRvTG93ZXJDYXNlKCkgPT09IFwiZmFsc2VcIiB8fCB2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSBcInRydWVcIikge1xuXHRcdFx0XHRcdFx0XHRcdHZhbHVlID0gSlNPTi5wYXJzZSh2YWx1ZS50b0xvd2VyQ2FzZSgpKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRwcm9wZXJ0eVZhbHVlc1sodGhpcyBhcyBTZWxlY3QpLmRhdGEoXCJpZFwiKSBhcyBrZXlvZiBQcm9wZXJ0eVZhbHVlXSA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pLmRhdGEoXCJpZFwiLCBpZCk7XG5cblx0XHRcdFx0XHRzZWxlY3QuYmluZEl0ZW1zKHtcblx0XHRcdFx0XHRcdHBhdGg6IFwiZW51bVwiLFxuXHRcdFx0XHRcdFx0dGVtcGxhdGU6IGl0ZW1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRyZXR1cm4gc2VsZWN0O1xuXHRcdFx0XHRjYXNlIFwianNvblwiOlxuXHRcdFx0XHRcdC8vIENyZWF0ZSBhbiBpbnB1dCBmb3IganNvbiBvYmplY3QgZGVzY3JpcHRpb25zXG5cdFx0XHRcdFx0Ly8gQSB0ZXh0IGFyZWEgd291bGQgaGF2ZSBiZWVuIGJldHRlciBidXQgdGhpcyBkb2VzIG5vdCB3b3JrIHdpdGggdGhlIElucHV0TGlzdEl0ZW1cblx0XHRcdFx0XHQvLyB3ZSB3b3VsZCBoYXZlIG5lZWRlZCBhIEN1c3RvbUxpc3RJdGVtIGluc3RlYWRcblx0XHRcdFx0XHQvLyB3aGljaCB3b3VsZCBoYXZlIGJlZW4gdG9vIG11Y2ggZWZmb3J0IGFzIHdlIHdvdWxkIGhhdmUgbmVlZGVkIHRvIGNoYW5nZSB0aGUgd2hvbGUgc3RydWN0dXJlXG5cdFx0XHRcdFx0cmV0dXJuIG5ldyBJbnB1dCh7XG5cdFx0XHRcdFx0XHR2YWx1ZTogXCJ7dmFsdWV9XCIsXG5cdFx0XHRcdFx0XHRjaGFuZ2U6IGZ1bmN0aW9uIChldmVudCk6IHZvaWQge1xuXHRcdFx0XHRcdFx0XHRwcm9wZXJ0eVZhbHVlc1sodGhpcyBhcyBJbnB1dCkuZGF0YShcImlkXCIpIGFzIGtleW9mIFByb3BlcnR5VmFsdWVdID0gSlNPTi5wYXJzZShcblx0XHRcdFx0XHRcdFx0XHRldmVudC5nZXRQYXJhbWV0ZXIoXCJ2YWx1ZVwiKT8udG9TdHJpbmcoKSBhcyBzdHJpbmdcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KS5kYXRhKFwiaWRcIiwgaWQpO1xuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG5cblx0bGlzdC5iaW5kSXRlbXMoe1xuXHRcdHBhdGg6IFwiL1wiLFxuXHRcdHRlbXBsYXRlOiBsaXN0SXRlbVxuXHR9KTtcblxuXHRyZXR1cm4gbGlzdDtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9wZW5BZGFwdGlvbkRpYWxvZyhcblx0Y29uZmlnQ29udGV4dDogQ29udGV4dCxcblx0cHJvcGVydHlWYWx1ZXM6IFByb3BlcnR5VmFsdWUsXG5cdHRpdGxlOiBzdHJpbmcsXG5cdHJlc291cmNlTW9kZWw6IFJlc291cmNlTW9kZWwsXG5cdGNvbmZpZ1BhdGggPSBcInJ0YS9jb25maWdTZXR0aW5nc1wiLFxuXHRpbmZvVGV4dCA9IFwie3NhcC5mZS5pMThuPlJUQV9DT05GSUdVUkFUSU9OX0lORk9fTUVTU0FHRX1cIixcblx0c2l6ZT86IHsgd2lkdGg6IHN0cmluZzsgaGVpZ2h0OiBzdHJpbmcgfVxuKTogUHJvbWlzZTxQcm9wZXJ0eVZhbHVlPiB7XG5cdGNvbnN0IGxpc3QgPSBjcmVhdGVBZGFwdGlvbkRpYWxvZ0NvbnRlbnQoY29uZmlnQ29udGV4dCwgcHJvcGVydHlWYWx1ZXMsIHJlc291cmNlTW9kZWwsIGNvbmZpZ1BhdGgpO1xuXHRjb25zdCBjb250ZW50OiAoTGlzdCB8IE1lc3NhZ2VTdHJpcClbXSA9IFtdO1xuXHRjb25zdCBpbmZvcm1hdGlvbk1lc3NhZ2UgPSBuZXcgTWVzc2FnZVN0cmlwKHtcblx0XHRzaG93SWNvbjogdHJ1ZSxcblx0XHR0eXBlOiBcIkluZm9ybWF0aW9uXCIsXG5cdFx0dGV4dDogaW5mb1RleHRcblx0fSk7XG5cdGluZm9ybWF0aW9uTWVzc2FnZS5hZGRTdHlsZUNsYXNzKFwic2FwVWlTbWFsbE1hcmdpbkJvdHRvbVwiKTtcblx0Y29udGVudC5wdXNoKGluZm9ybWF0aW9uTWVzc2FnZSk7XG5cdGNvbnRlbnQucHVzaChsaXN0KTtcblx0Y29uc3QgbGlzdEluZGV4ID0gY29udGVudC5pbmRleE9mKGxpc3QpO1xuXHRyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuXHRcdGNvbnN0IGRpYWxvZyA9IG5ldyBEaWFsb2coe1xuXHRcdFx0dGl0bGU6IHRpdGxlLFxuXHRcdFx0Y29udGVudFdpZHRoOiBzaXplID8gc2l6ZS53aWR0aCA6IFwiNTUwcHhcIixcblx0XHRcdGNvbnRlbnRIZWlnaHQ6IHNpemUgPyBzaXplLmhlaWdodCA6IFwiMzAwcHhcIixcblx0XHRcdGNvbnRlbnQ6IGNvbnRlbnQsXG5cdFx0XHRidXR0b25zOiBbXG5cdFx0XHRcdG5ldyBCdXR0b24oe1xuXHRcdFx0XHRcdHRleHQ6IFwie3NhcC5mZS5pMThuPlJUQV9DT05GSUdVUkFUSU9OX0FQUExZfVwiLFxuXHRcdFx0XHRcdHR5cGU6IFwiRW1waGFzaXplZFwiLFxuXHRcdFx0XHRcdHByZXNzOiBmdW5jdGlvbiAoKTogdm9pZCB7XG5cdFx0XHRcdFx0XHQvLyBwZXJzaXN0IGNoYW5nZXMgZG9uZVxuXHRcdFx0XHRcdFx0dXBkYXRlQ29uZmlnTW9kZWwoY29uZmlnQ29udGV4dCwgZGlhbG9nLmdldENvbnRlbnQoKVtsaXN0SW5kZXhdLmdldE1vZGVsKCkgYXMgSlNPTk1vZGVsLCBjb25maWdQYXRoKTtcblx0XHRcdFx0XHRcdGRpYWxvZy5jbG9zZSgpO1xuXHRcdFx0XHRcdFx0cmVzb2x2ZShwcm9wZXJ0eVZhbHVlcyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KSxcblx0XHRcdFx0bmV3IEJ1dHRvbih7XG5cdFx0XHRcdFx0dGV4dDogXCJ7c2FwLmZlLmkxOG4+UlRBX0NPTkZJR1VSQVRJT05fQ0FOQ0VMfVwiLFxuXHRcdFx0XHRcdHByZXNzOiBmdW5jdGlvbiAoKTogdm9pZCB7XG5cdFx0XHRcdFx0XHRkaWFsb2cuY2xvc2UoKTtcblx0XHRcdFx0XHRcdHJlamVjdCgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdF1cblx0XHR9KTtcblx0XHRkaWFsb2cuc2V0TW9kZWwocmVzb3VyY2VNb2RlbCwgXCJzYXAuZmUuaTE4blwiKTtcblx0XHRkaWFsb2cuYWRkU3R5bGVDbGFzcyhcInNhcFVpQ29udGVudFBhZGRpbmdcIik7XG5cdFx0ZGlhbG9nLmFkZFN0eWxlQ2xhc3MoXCJzYXBVaVJUQUJvcmRlclwiKTtcblx0XHRkaWFsb2cub3BlbigpO1xuXHRcdHJldHVybjtcblx0fSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZXNzQ2hhbmdlcyhcblx0cHJvcGVydHlDaGFuZ2VzOiBwcm9wS2V5QW5kVmFsdWUsXG5cdGFwcENvbXBvbmVudDogQXBwQ29tcG9uZW50LFxuXHRwYWdlOiBzdHJpbmcsXG5cdHByb3BlcnR5UGF0aDogc3RyaW5nXG4pOiBhZGFwdGlvbkNoYW5nZVtdIHtcblx0bGV0IHNpbmdsZUNoYW5nZTogcHJvcEtleUFuZFZhbHVlID0ge307XG5cdGNvbnN0IGNoYW5nZXMgPSBbXTtcblx0Zm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocHJvcGVydHlDaGFuZ2VzKSkge1xuXHRcdHNpbmdsZUNoYW5nZSA9IHt9O1xuXHRcdHNpbmdsZUNoYW5nZVtrZXldID0gdmFsdWU7XG5cdFx0Y2hhbmdlcy5wdXNoKGdldENoYW5nZShzaW5nbGVDaGFuZ2UsIGFwcENvbXBvbmVudCwgcGFnZSwgcHJvcGVydHlQYXRoKSk7XG5cdH1cblx0cmV0dXJuIGNoYW5nZXM7XG59XG5cbi8qKlxuICogRm9ybWF0IGVhY2ggY2hhbmdlIG1hZGUgdG8gZ2xvYmFsIHNldHRpbmdzIFwic2FwLmZlXCJcbiAqIFRoZSBzZXQgb2YgY2hhbmdlcyBhcmUgcHV0IGludG8gaW5kaXZpZHVhbCBjaGFuZ2VzIHRvIGVuc3VyZVxuICogdGhhdCBlYXJsaWVyIGNoYW5nZXMgYXJlIG5vdCBsb3N0IHdoZW4gdGhlc2UgYXJlIGxvYWRlZCBhdCBydW50aW1lLlxuICogQHBhcmFtIHByb3BlcnR5Q2hhbmdlc1xuICogQHBhcmFtIGFwcENvbXBvbmVudFxuICogQHBhcmFtIHBhZ2VcbiAqIEBwYXJhbSBwcm9wZXJ0eVBhdGhcbiAqIEByZXR1cm5zIFRoZSBjaGFuZ2Ugc3RydWN0dXJlIHVzZWQgYnkgZmxleGliaWxpdHkgdG9vbHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb2Nlc3NHbG9iYWxDaGFuZ2VzKFxuXHRwcm9wZXJ0eUNoYW5nZXM6IHByb3BLZXlBbmRWYWx1ZSxcblx0YXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQsXG5cdHBhZ2U6IHN0cmluZyxcblx0cHJvcGVydHlQYXRoOiBzdHJpbmdcbik6IGFkYXB0aW9uQ2hhbmdlW10ge1xuXHRsZXQgc2luZ2xlQ2hhbmdlOiBwcm9wS2V5QW5kVmFsdWUgPSB7fTtcblx0Y29uc3QgY2hhbmdlcyA9IFtdO1xuXHRmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwcm9wZXJ0eUNoYW5nZXMpKSB7XG5cdFx0c2luZ2xlQ2hhbmdlID0ge307XG5cdFx0c2luZ2xlQ2hhbmdlW2tleV0gPSB2YWx1ZTtcblx0XHRjaGFuZ2VzLnB1c2goZ2V0Q2hhbmdlKHNpbmdsZUNoYW5nZSwgYXBwQ29tcG9uZW50LCBwYWdlLCBwcm9wZXJ0eVBhdGgpKTtcblx0fVxuXHRyZXR1cm4gY2hhbmdlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENoYW5nZShcblx0cHJvcGVydHlDaGFuZ2VzOiBwcm9wS2V5QW5kVmFsdWUsXG5cdGFwcENvbXBvbmVudDogQXBwQ29tcG9uZW50LFxuXHRwYWdlOiBzdHJpbmcsXG5cdHByb3BlcnR5UGF0aDogc3RyaW5nXG4pOiBhZGFwdGlvbkNoYW5nZSB7XG5cdC8vIENoYW5nZXMgZm9yIGNvbnRyb2xzIGhhdmUgYSBwYXRoIHN0YXJ0aW5nIHdpdGggY29udHJvbENvbmZpZ3VyYXRpb24sIGZvbGxvd2VkIGJ5IGFuIGFubm90YXRpb24gcGF0aFxuXHQvLyBGb3IgdGhlIGxpc3QgcmVwb3J0IGNoYW5nZXMsIHRoZXJlIGlzIG5vIHBhdGggYmVjYXVzZSB0aGUgcHJvcGVydGllcyBhcmUgZGlyZWN0bHkgdW5kZXIgU2V0dGluZ3Ncblx0Ly8gZm9yIHRoZSBcInNhcC5mZS50ZW1wbGF0ZXMuTGlzdFJlcG9ydFwiIGluIHRoZSBtYW5pZmVzdC5cblx0aWYgKHByb3BlcnR5UGF0aCA9PT0gXCJcIikge1xuXHRcdHByb3BlcnR5UGF0aCA9IE9iamVjdC5rZXlzKHByb3BlcnR5Q2hhbmdlcylbMF07XG5cdH0gZWxzZSB7XG5cdFx0cHJvcGVydHlQYXRoID0gcHJvcGVydHlQYXRoICsgXCIvXCIgKyBPYmplY3Qua2V5cyhwcm9wZXJ0eUNoYW5nZXMpWzBdO1xuXHR9XG5cdGNvbnN0IHZhbHVlID0gcHJvcGVydHlDaGFuZ2VzW09iamVjdC5rZXlzKHByb3BlcnR5Q2hhbmdlcylbMF1dO1xuXG5cdHJldHVybiBnZXRDaGFuZ2VTdHJ1Y3R1cmUoYXBwQ29tcG9uZW50LCBwYWdlLCBwcm9wZXJ0eVBhdGgsIHZhbHVlKTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHBhcmFtZXRlcnMgb3RoZXIgdGhhbiB0aGUgY29udHJvbCBzZXR0aW5ncyB0aGF0IGFyZSBuZWVkZWRcbiAqIGZvciB0aGUgY2hhbmdlIHN0cnVjdHVyZS5cbiAqIEBwYXJhbSBwcm9wZXJ0eUNoYW5nZXNcbiAqIEBwYXJhbSBwcm9wZXJ0eVBhdGhcbiAqIEBwYXJhbSBjb250cm9sXG4gKiBAcmV0dXJucyBUaGUgY2hhbmdlcyBpbiBhIHN0cnVjdHVyZSB1c2VkIGJ5IGZsZXhpYmlsaXR5IHRvb2xzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXBhcmF0ZUNoYW5nZXMocHJvcGVydHlDaGFuZ2VzOiBQcm9wZXJ0eVZhbHVlLCBwcm9wZXJ0eVBhdGg6IHN0cmluZywgY29udHJvbDogQ29udHJvbCk6IGFkYXB0aW9uQ2hhbmdlW10ge1xuXHRjb25zdCBhcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQoY29udHJvbCk7XG5cdGNvbnN0IHBhZ2UgPSBnZXRQYWdlKGNvbnRyb2wuZ2V0UGFyZW50KCkgYXMgQ29udHJvbCk7XG5cdHJldHVybiBwcm9jZXNzQ2hhbmdlcyhwcm9wZXJ0eUNoYW5nZXMsIGFwcENvbXBvbmVudCwgcGFnZSwgcHJvcGVydHlQYXRoKTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHBhcmFtZXRlcnMgb3RoZXIgdGhhbiB0aGUgZ2xvYmFsIHNldHRpbmdzIHRoYXQgYXJlIG5lZWRlZFxuICogZm9yIHRoZSBjaGFuZ2Ugc3RydWN0dXJlLlxuICogQHBhcmFtIHByb3BlcnR5Q2hhbmdlc1xuICogQHBhcmFtIHByb3BlcnR5UGF0aFxuICogQHBhcmFtIGNvbnRyb2xcbiAqIEByZXR1cm5zIFRoZSBjaGFuZ2VzIGluIGEgc3RydWN0dXJlIHVzZWQgYnkgZmxleGliaWxpdHkgdG9vbHNcbiAqL1xuZnVuY3Rpb24gc2VwYXJhdGVHbG9iYWxDaGFuZ2VzKHByb3BlcnR5Q2hhbmdlczogUHJvcGVydHlWYWx1ZSwgcHJvcGVydHlQYXRoOiBzdHJpbmcsIGNvbnRyb2w6IENvbnRyb2wpOiBhZGFwdGlvbkNoYW5nZVtdIHtcblx0Y29uc3QgYXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KGNvbnRyb2wpO1xuXHRjb25zdCBwYWdlID0gXCJzYXAuZmVcIjtcblx0cmV0dXJuIHByb2Nlc3NHbG9iYWxDaGFuZ2VzKHByb3BlcnR5Q2hhbmdlcywgYXBwQ29tcG9uZW50LCBwYWdlLCBwcm9wZXJ0eVBhdGgpO1xufVxuXG5mdW5jdGlvbiBnZXRQYWdlKGNvbnRyb2w6IENvbnRyb2wpOiBzdHJpbmcge1xuXHRjb25zdCB2aWV3SWQgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KGNvbnRyb2wpLmdldElkKCkuc3BsaXQoXCI6OlwiKTtcblx0cmV0dXJuIHZpZXdJZFt2aWV3SWQubGVuZ3RoIC0gMV07XG59XG5cbmV4cG9ydCBjb25zdCBleHRyYWN0Q2hhbmdlcyA9IGZ1bmN0aW9uIChcblx0ZGVzaWdudGltZVNldHRpbmdzOiBEZXNpZ250aW1lU2V0dGluZ1tdLFxuXHR1bmNoYW5nZWREYXRhOiBQcm9wZXJ0eVZhbHVlLFxuXHRwcm9wZXJ0eVZhbHVlc0VudGVyZWQ6IFByb3BlcnR5VmFsdWUsXG5cdHByb3BlcnR5UGF0aDogc3RyaW5nLFxuXHRjb250cm9sOiBDb250cm9sLFxuXHRnbG9iYWxTZXR0aW5ncz86IERlc2lnbnRpbWVTZXR0aW5nW11cbik6IGFkYXB0aW9uQ2hhbmdlW10ge1xuXHRjb25zdCBwcm9wZXJ0eUNoYW5nZXMgPSBnZXRDaGFuZ2VkUHJvcGVydHlWYWx1ZXMoZGVzaWdudGltZVNldHRpbmdzLCB1bmNoYW5nZWREYXRhLCBwcm9wZXJ0eVZhbHVlc0VudGVyZWQpO1xuXHQvLyBQdXQgZWFjaCBwcm9wZXJ0eSBpbnRvIGl0cyBvd24gY2hhbmdlLiBUaGlzIGVuc3VyZXMgdGhhdCB3ZSBkb24ndCBsb3NlIHByZXZpb3VzIGNoYW5nZXMuXG5cdGxldCBjaGFuZ2VzID0gc2VwYXJhdGVDaGFuZ2VzKHByb3BlcnR5Q2hhbmdlcywgcHJvcGVydHlQYXRoLCBjb250cm9sKTtcblx0aWYgKGdsb2JhbFNldHRpbmdzKSB7XG5cdFx0Y29uc3QgZ2xvYmFsQ2hhbmdlcyA9IGdldENoYW5nZWRQcm9wZXJ0eVZhbHVlcyhnbG9iYWxTZXR0aW5ncywgdW5jaGFuZ2VkRGF0YSwgcHJvcGVydHlWYWx1ZXNFbnRlcmVkKTtcblx0XHRjb25zdCBnbG9iYWwgPSBzZXBhcmF0ZUdsb2JhbENoYW5nZXMoZ2xvYmFsQ2hhbmdlcywgcHJvcGVydHlQYXRoLCBjb250cm9sKTtcblx0XHRjaGFuZ2VzID0gY2hhbmdlcy5jb25jYXQoZ2xvYmFsKTtcblx0fVxuXHRpZiAoY2hhbmdlcy5sZW5ndGggPiAwKSB7XG5cdFx0cmV0dXJuIGNoYW5nZXM7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIFtdO1xuXHR9XG59O1xuXG5leHBvcnQgY29uc3Qgbm9DaGFuZ2VzID0gZnVuY3Rpb24gKCk6IFtdIHtcblx0cmV0dXJuIFtdO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzRmlvcmlUb29sc1J0YU1vZGUoYXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQpOiBib29sZWFuIHtcblx0Ly8gQ2hlY2sgaWYgcnRhIG1vZGUgaGFzIGJlZW4gc3BlY2lmaWVkIG9uIHVybCAoZm9yIGxvY2FsIHRlc3RpbmcpXG5cdGxldCB1cmxQYXJhbXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9O1xuXHRjb25zdCBzaGVsbFNlcnZpY2UgPSBhcHBDb21wb25lbnQuZ2V0U2hlbGxTZXJ2aWNlcygpO1xuXHR1cmxQYXJhbXMgPSBzaGVsbFNlcnZpY2U/LnBhcnNlUGFyYW1ldGVycz8uKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuXHRyZXR1cm4gISF1cmxQYXJhbXMgJiYgdXJsUGFyYW1zW1wiZmlvcmktdG9vbHMtcnRhLW1vZGVcIl0/LlswXSA9PT0gXCJmb3JBZGFwdGF0aW9uXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1JUQU1vZGUoYXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQpOiBib29sZWFuIHtcblx0Ly8gQ2hlY2sgaWYgcnRhIG1vZGUgaGFzIGJlZW4gc3BlY2lmaWVkIG9uIHVybCAoZm9yIGxvY2FsIHRlc3RpbmcpXG5cdGxldCB1cmxQYXJhbXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9O1xuXHRjb25zdCBzaGVsbFNlcnZpY2UgPSBhcHBDb21wb25lbnQuZ2V0U2hlbGxTZXJ2aWNlcygpO1xuXHR1cmxQYXJhbXMgPSBzaGVsbFNlcnZpY2U/LnBhcnNlUGFyYW1ldGVycz8uKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuXHRyZXR1cm4gISF1cmxQYXJhbXMgJiYgdXJsUGFyYW1zW1wic2FwLWZlLXJ0YS1tb2RlXCJdPy5bMF0gPT09IFwidHJ1ZVwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2V0dGluZ3NJZktleVVzZXIoYXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQsIGl0ZW1zOiBTZXR0aW5nc0RhdGFbXSk6IFNldHRpbmdzRGF0YVtdIHtcblx0aWYgKCFpc0Zpb3JpVG9vbHNSdGFNb2RlKGFwcENvbXBvbmVudCkpIHtcblx0XHQvLyBub3QgdG9vbHMgPT4ga2V5IHVzZXJcblx0XHRyZXR1cm4gaXRlbXMuZmlsdGVyKChzZXR0aW5nKSA9PiB7XG5cdFx0XHRyZXR1cm4gc2V0dGluZy5rZXlVc2VyO1xuXHRcdH0pO1xuXHR9XG5cdHJldHVybiBpdGVtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29uZmlnTW9kZWxQcmVwYXJlZChjb25maWdDb250ZXh0OiBDb250ZXh0LCBwYXRoID0gXCJydGEvY29uZmlnU2V0dGluZ3NcIik6IGJvb2xlYW4ge1xuXHRpZiAoY29uZmlnQ29udGV4dC5nZXRQcm9wZXJ0eShwYXRoKSkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cdHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVDb25maWdNb2RlbChpdGVtczogU2V0dGluZ3NEYXRhW10sIGNvbmZpZ0NvbnRleHQ6IENvbnRleHQsIHBhdGggPSBcInJ0YS9jb25maWdTZXR0aW5nc1wiKTogdm9pZCB7XG5cdGlmICghY29uZmlnQ29udGV4dC5nZXRQcm9wZXJ0eShwYXRoKSkge1xuXHRcdGNvbmZpZ0NvbnRleHQuc2V0UHJvcGVydHkocGF0aCwgaXRlbXMpO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQZXJzb25hbGl6YXRpb25TZXR0aW5nKGNvbmZpZ0NvbnRleHQ6IENvbnRleHQsIHBhdGggPSBcInJ0YS9jb25maWdTZXR0aW5nc1wiKTogYm9vbGVhbiB8IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGNvbnN0IHNldHRpbmdzID0gY29uZmlnQ29udGV4dC5nZXRPYmplY3QocGF0aCk7XG5cdGNvbnN0IHBlcnNvbmFsaXphdGlvblNldHRpbmcgPSBzZXR0aW5ncy5maW5kKChzZXR0aW5nOiBTZXR0aW5nc0RhdGEpID0+IHtcblx0XHRyZXR1cm4gc2V0dGluZz8uY29udHJvbFswXT8uaWQgPT09IFwicGVyc29uYWxpemF0aW9uXCI7XG5cdH0pO1xuXHRpZiAocGVyc29uYWxpemF0aW9uU2V0dGluZykge1xuXHRcdHJldHVybiBwZXJzb25hbGl6YXRpb25TZXR0aW5nLmNvbnRyb2xbMF0udmFsdWU7XG5cdH1cblx0cmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUNvbmZpZ01vZGVsKGNvbmZpZ0NvbnRleHQ6IENvbnRleHQsIHNldHRpbmdzTW9kZWw6IEpTT05Nb2RlbCwgcGF0aCA9IFwicnRhL2NvbmZpZ1NldHRpbmdzXCIpOiB2b2lkIHtcblx0Y29uc3QgdXBkYXRlZFNldHRpbmdzID0gZGVlcENsb25lKHNldHRpbmdzTW9kZWwuZ2V0RGF0YSgpKTtcblx0Y29uZmlnQ29udGV4dC5zZXRQcm9wZXJ0eShwYXRoLCB1cGRhdGVkU2V0dGluZ3MpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvcGVydHlOYW1lc0FuZERlc2NyaXB0aW9ucyhwcm9wczogRGVzaWdudGltZVNldHRpbmdbXSwgcmVzb3VyY2VNb2RlbDogUmVzb3VyY2VNb2RlbCk6IERlc2lnbnRpbWVTZXR0aW5nW10ge1xuXHRwcm9wcy5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XG5cdFx0cHJvcC5uYW1lID0gcmVzb3VyY2VNb2RlbC5nZXRUZXh0KHByb3AubmFtZSk7XG5cdFx0cHJvcC5kZXNjcmlwdGlvbiA9IHJlc291cmNlTW9kZWwuZ2V0VGV4dChwcm9wLmRlc2NyaXB0aW9uKTtcblx0XHRpZiAocHJvcC5lbnVtcykge1xuXHRcdFx0cHJvcC5lbnVtcy5mb3JFYWNoKGZ1bmN0aW9uIChlbnVtbSkge1xuXHRcdFx0XHRlbnVtbS5uYW1lID0gcmVzb3VyY2VNb2RlbC5nZXRUZXh0KGVudW1tLm5hbWUpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9KTtcblxuXHRyZXR1cm4gcHJvcHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc01hbmlmZXN0Q2hhbmdlc0VuYWJsZWQoY29udHJvbDogQ29udHJvbCk6IGJvb2xlYW4ge1xuXHRsZXQgb3duZXIgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IoY29udHJvbCkgYXMgVGVtcGxhdGVDb21wb25lbnQ7XG5cdGlmIChvd25lciA9PT0gdW5kZWZpbmVkICYmIGNvbnRyb2wuZ2V0UGFyZW50KCkpIHtcblx0XHQvLyBJbiBjYXNlIG9mIE1hc3NFZGl0LCBjb250cm9sIGlzIGEgc2FwLm0uRGlhbG9nIGZvciB3aGljaCB0aGVyZSBpcyBub3cgT3duZXJDb21wb25lbnQsIHNvIHdlIG5lZWQgdG8gY29uc2lkZXIgaXRzIHBhcmVudCBjb250cm9sXG5cdFx0b3duZXIgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IoY29udHJvbC5nZXRQYXJlbnQoKSEpIGFzIFRlbXBsYXRlQ29tcG9uZW50O1xuXHR9XG5cdGNvbnN0IHNhcEZlTWFuaWZlc3QgPSBvd25lcj8uZ2V0QXBwQ29tcG9uZW50KCkuZ2V0TWFuaWZlc3RFbnRyeShcInNhcC5mZVwiKTtcblx0cmV0dXJuIHNhcEZlTWFuaWZlc3Q/LmFwcD8uZGlzYWJsZU1hbmlmZXN0Q2hhbmdlcyAhPT0gdHJ1ZTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7RUFBQTtBQUNBO0FBQ0E7RUFrRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDTyxTQUFTQSx3QkFBd0JBLENBQ3ZDQyxrQkFBdUMsRUFDdkNDLGFBQTRCLEVBQzVCQyxjQUE2QixFQUNiO0lBQ2hCLE1BQU1DLGVBQThCLEdBQUcsQ0FBQyxDQUFDO0lBRXpDSCxrQkFBa0IsQ0FBQ0ksT0FBTyxDQUFDLFVBQVVDLE9BQU8sRUFBRTtNQUM3QyxJQUNFLE9BQU9KLGFBQWEsQ0FBQ0ksT0FBTyxDQUFDQyxFQUFFLENBQUMsS0FBSyxRQUFRLElBQUlMLGFBQWEsQ0FBQ0ksT0FBTyxDQUFDQyxFQUFFLENBQUMsS0FBS0osY0FBYyxDQUFDRyxPQUFPLENBQUNDLEVBQUUsQ0FBQyxJQUN6RyxPQUFPTCxhQUFhLENBQUNJLE9B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
|
|
@@ -6,6 +6,7 @@ import deepClone from "sap/base/util/deepClone";
|
|
|
6
6
|
import type AppComponent from "sap/fe/core/AppComponent";
|
|
7
7
|
import CommonUtils from "sap/fe/core/CommonUtils";
|
|
8
8
|
import type ResourceModel from "sap/fe/core/ResourceModel";
|
|
9
|
+
import type TemplateComponent from "sap/fe/core/TemplateComponent";
|
|
9
10
|
import type { TemplateType } from "sap/fe/core/converters/ManifestSettings";
|
|
10
11
|
import Button from "sap/m/Button";
|
|
11
12
|
import CheckBox from "sap/m/CheckBox";
|
|
@@ -18,6 +19,7 @@ import type { MultiInput$TokenUpdateEvent } from "sap/m/MultiInput";
|
|
|
18
19
|
import MultiInput from "sap/m/MultiInput";
|
|
19
20
|
import Select from "sap/m/Select";
|
|
20
21
|
import Token from "sap/m/Token";
|
|
22
|
+
import Component from "sap/ui/core/Component";
|
|
21
23
|
import type Control from "sap/ui/core/Control";
|
|
22
24
|
import Item from "sap/ui/core/Item";
|
|
23
25
|
import type Context from "sap/ui/model/Context";
|
|
@@ -569,3 +571,13 @@ export function getPropertyNamesAndDescriptions(props: DesigntimeSetting[], reso
|
|
|
569
571
|
|
|
570
572
|
return props;
|
|
571
573
|
}
|
|
574
|
+
|
|
575
|
+
export function isManifestChangesEnabled(control: Control): boolean {
|
|
576
|
+
let owner = Component.getOwnerComponentFor(control) as TemplateComponent;
|
|
577
|
+
if (owner === undefined && control.getParent()) {
|
|
578
|
+
// In case of MassEdit, control is a sap.m.Dialog for which there is now OwnerComponent, so we need to consider its parent control
|
|
579
|
+
owner = Component.getOwnerComponentFor(control.getParent()!) as TemplateComponent;
|
|
580
|
+
}
|
|
581
|
+
const sapFeManifest = owner?.getAppComponent().getManifestEntry("sap.fe");
|
|
582
|
+
return sapFeManifest?.app?.disableManifestChanges !== true;
|
|
583
|
+
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
sap.ui.define(["sap/base/strings/formatMessage", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUtils", "sap/fe/core/buildingBlocks/BuildingBlock", "sap/fe/core/helpers/BindingHelper", "sap/m/Button", "sap/m/ObjectMarker", "sap/m/Popover", "sap/m/Text", "sap/m/VBox", "sap/m/library", "sap/ui/core/Lib", "sap/fe/base/jsx-runtime/jsx", "sap/fe/base/jsx-runtime/jsxs"], function (formatMessage, BindingToolkit, ClassSupport, CommonUtils, BuildingBlock, BindingHelper, Button, ObjectMarker, Popover, Text, VBox, library, Library, _jsx, _jsxs) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6;
|
|
8
|
+
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7;
|
|
9
9
|
var _exports = {};
|
|
10
10
|
var ObjectMarkerVisibility = library.ObjectMarkerVisibility;
|
|
11
11
|
var ObjectMarkerType = library.ObjectMarkerType;
|
|
@@ -48,6 +48,9 @@ sap.ui.define(["sap/base/strings/formatMessage", "sap/fe/base/BindingToolkit", "
|
|
|
48
48
|
type: "boolean"
|
|
49
49
|
}), _dec7 = property({
|
|
50
50
|
type: "boolean"
|
|
51
|
+
}), _dec8 = property({
|
|
52
|
+
type: "string",
|
|
53
|
+
allowedValues: ["Inline", "Overlay"]
|
|
51
54
|
}), _dec(_class = (_class2 = /*#__PURE__*/function (_BuildingBlock) {
|
|
52
55
|
function DraftIndicator(properties, others) {
|
|
53
56
|
var _this;
|
|
@@ -61,6 +64,7 @@ sap.ui.define(["sap/base/strings/formatMessage", "sap/fe/base/BindingToolkit", "
|
|
|
61
64
|
_initializerDefineProperty(_this, "class", _descriptor4, _this);
|
|
62
65
|
_initializerDefineProperty(_this, "usedInTable", _descriptor5, _this);
|
|
63
66
|
_initializerDefineProperty(_this, "usedInAnalyticalTable", _descriptor6, _this);
|
|
67
|
+
_initializerDefineProperty(_this, "reactiveAreaMode", _descriptor7, _this);
|
|
64
68
|
return _this;
|
|
65
69
|
}
|
|
66
70
|
_exports = DraftIndicator;
|
|
@@ -280,7 +284,8 @@ sap.ui.define(["sap/base/strings/formatMessage", "sap/fe/base/BindingToolkit", "
|
|
|
280
284
|
visibility: visibility,
|
|
281
285
|
additionalInfo: this.getIconAndTextAdditionalInfoBindingExpression(),
|
|
282
286
|
ariaLabelledBy: this.ariaLabelledBy ? this.ariaLabelledBy : [],
|
|
283
|
-
class: this.class
|
|
287
|
+
class: this.class,
|
|
288
|
+
reactiveAreaMode: this.reactiveAreaMode
|
|
284
289
|
});
|
|
285
290
|
}
|
|
286
291
|
|
|
@@ -303,7 +308,8 @@ sap.ui.define(["sap/base/strings/formatMessage", "sap/fe/base/BindingToolkit", "
|
|
|
303
308
|
visibility: ObjectMarkerVisibility.IconOnly,
|
|
304
309
|
visible: visible,
|
|
305
310
|
ariaLabelledBy: this.ariaLabelledBy ? this.ariaLabelledBy : [],
|
|
306
|
-
class: this.class
|
|
311
|
+
class: this.class,
|
|
312
|
+
reactiveAreaMode: this.reactiveAreaMode
|
|
307
313
|
});
|
|
308
314
|
}
|
|
309
315
|
|
|
@@ -353,8 +359,13 @@ sap.ui.define(["sap/base/strings/formatMessage", "sap/fe/base/BindingToolkit", "
|
|
|
353
359
|
enumerable: true,
|
|
354
360
|
writable: true,
|
|
355
361
|
initializer: null
|
|
362
|
+
}), _descriptor7 = _applyDecoratedDescriptor(_class2.prototype, "reactiveAreaMode", [_dec8], {
|
|
363
|
+
configurable: true,
|
|
364
|
+
enumerable: true,
|
|
365
|
+
writable: true,
|
|
366
|
+
initializer: null
|
|
356
367
|
}), _class2)) || _class);
|
|
357
368
|
_exports = DraftIndicator;
|
|
358
369
|
return _exports;
|
|
359
370
|
}, false);
|
|
360
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEcmFmdEluZGljYXRvciIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwicHJvcGVydHkiLCJ0eXBlIiwiX2RlYzMiLCJfZGVjNCIsInJlcXVpcmVkIiwiX2RlYzUiLCJfZGVjNiIsIl9kZWM3IiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9CdWlsZGluZ0Jsb2NrIiwicHJvcGVydGllcyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwic2V0RHJhZnRJbmRpY2F0b3JUeXBlIiwiaW5kaWNhdG9yIiwiT2JqZWN0TWFya2VyVmlzaWJpbGl0eSIsIkljb25Pbmx5IiwiSWNvbkFuZFRleHQiLCJpbmNsdWRlcyIsInNldFByb3BlcnR5IiwiRXJyb3IiLCJhZGRBcmlhTGFiZWxsZWRCeUZvckRyYWZ0SW5kaWNhdG9yIiwiZWxlbWVudCIsImFyaWFMYWJlbGxlZEJ5cyIsImNvbnRlbnQiLCJnZXRBcmlhTGFiZWxsZWRCeSIsImFkZEFyaWFMYWJlbGxlZEJ5Iiwib25NZXRhZGF0YUF2YWlsYWJsZSIsImNyZWF0ZUNvbnRlbnQiLCJmb3JtYXREcmFmdE93bmVyVGV4dEluUG9wb3ZlciIsImhhc0RyYWZ0RW50aXR5IiwiZHJhZnRJblByb2Nlc3NCeVVzZXIiLCJkcmFmdExhc3RDaGFuZ2VkQnlVc2VyIiwiZHJhZnRJblByb2Nlc3NCeVVzZXJEZXNjIiwiZHJhZnRMYXN0Q2hhbmdlZEJ5VXNlckRlc2MiLCJtYWNyb1Jlc291cmNlQnVuZGxlIiwiTGlicmFyeSIsImdldFJlc291cmNlQnVuZGxlRm9yIiwidXNlckRlc2NyaXB0aW9uIiwiZ2V0VGV4dCIsImdldERyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhUHJvcGVydGllcyIsIm1ldGFEYXRhIiwiZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCIsImNvbnRleHRQYXRoIiwiZHJhZnRBZG1pbkVsZW1lbnQiLCJ0YXJnZXRFbnRpdHlUeXBlIiwibmF2aWdhdGlvblByb3BlcnRpZXMiLCJmaW5kIiwiYSIsIm5hbWUiLCJkcmFmdEFkbWluUHJvcGVydGllcyIsInRhcmdldFR5cGUiLCJlbnRpdHlQcm9wZXJ0aWVzIiwibWFwIiwib0RyYWZ0QWRtaW5Qcm9wZXJ0eSIsImdldFBvcG92ZXJUaXRsZUJpbmRpbmdFeHByZXNzaW9uIiwiaWZFbHNlIiwibm90IiwiRW50aXR5IiwiSXNBY3RpdmUiLCJpc0hpZGRlbkRyYWZ0RW5hYmxlZCIsInBhdGhJbk1vZGVsIiwiSGFzRHJhZnQiLCJpc0VtcHR5IiwiZHJhZnRJbmRpY2F0b3JUeXBlIiwiZ2V0RHJhZnRPd25lclRleHRCaW5kaW5nRXhwcmVzc2lvbiIsImRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhUHJvcGVydGllcyIsInBhcnRzIiwicGF0aCIsInB1c2giLCJmb3JtYXR0ZXIiLCJjcmVhdGVQb3BvdmVyIiwiY29udHJvbCIsImlzRHJhZnRXaXRoTm9DaGFuZ2VzQmluZGluZyIsImFuZCIsImRyYWZ0V2l0aE5vQ2hhbmdlc1RleHRCaW5kaW5nIiwiaXNEcmFmdFdpdGhDaGFuZ2VzQmluZGluZyIsImRyYWZ0V2l0aENoYW5nZXNUZXh0QmluZGluZyIsIm1vZGVsIiwiZm9ybWF0TWVzc2FnZSIsImlzQWN0aXZlSW5zdGFuY2VCaW5kaW5nIiwiYWN0aXZlSW5zdGFuY2VUZXh0QmluZGluZyIsInBvcG92ZXIiLCJfanN4IiwiUG9wb3ZlciIsInRpdGxlIiwic2hvd0hlYWRlciIsInZlcnRpY2FsU2Nyb2xsaW5nIiwiY2xhc3MiLCJwbGFjZW1lbnQiLCJlbmRCdXR0b24iLCJCdXR0b24iLCJpY29uIiwicHJlc3MiLCJkcmFmdFBvcG92ZXIiLCJjbG9zZSIsImNoaWxkcmVuIiwiX2pzeHMiLCJWQm94IiwidmlzaWJsZSIsIlRleHQiLCJ0ZXh0IiwiQ29tbW9uVXRpbHMiLCJnZXRUYXJnZXRWaWV3IiwiYWRkRGVwZW5kZW50Iiwib25PYmplY3RNYXJrZXJQcmVzc2VkIiwiZXZlbnQiLCJzb3VyY2UiLCJnZXRTb3VyY2UiLCJiaW5kaW5nQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0Iiwic2V0QmluZGluZ0NvbnRleHQiLCJvcGVuQnkiLCJnZXRJY29uQW5kVGV4dEFkZGl0aW9uYWxJbmZvQmluZGluZ0V4cHJlc3Npb24iLCJvckJpbmRpbmdzIiwib3IiLCJnZXRJY29uQW5kVGV4dENvbnRlbnQiLCJnZXRBcHBDb21wb25lbnQiLCJnZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcyIsImdldENhcGFiaWxpdGllcyIsIkhpZGRlbkRyYWZ0IiwiZW5hYmxlZCIsIm9iak1hcmtlclR5cGUiLCJPYmplY3RNYXJrZXJUeXBlIiwiVW5zYXZlZCIsIkRyYWZ0IiwiTG9ja2VkQnkiLCJVbnNhdmVkQnkiLCJGbGFnZ2VkIiwidmlzaWJpbGl0eSIsIlRleHRPbmx5IiwiT2JqZWN0TWFya2VyIiwiYmluZCIsImFkZGl0aW9uYWxJbmZvIiwiYXJpYUxhYmVsbGVkQnkiLCJnZXRJY29uT25seUNvbnRlbnQiLCJ1c2VkSW5BbmFseXRpY2FsVGFibGUiLCJMb2NrZWQiLCJ1c2VkSW5UYWJsZSIsIlVJIiwiSXNFZGl0YWJsZSIsInVuZGVmaW5lZCIsIkJ1aWxkaW5nQmxvY2siLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkRyYWZ0SW5kaWNhdG9yLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgZm9ybWF0TWVzc2FnZSBmcm9tIFwic2FwL2Jhc2Uvc3RyaW5ncy9mb3JtYXRNZXNzYWdlXCI7XG5pbXBvcnQgdHlwZSB7IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiwgUHJpbWl0aXZlVHlwZSB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgYW5kLCBpZkVsc2UsIGlzRW1wdHksIG5vdCwgb3IsIHBhdGhJbk1vZGVsIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBwcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrIGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy9CdWlsZGluZ0Jsb2NrXCI7XG5pbXBvcnQgdHlwZSB7IEhpZGRlbkRyYWZ0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgRW50aXR5LCBVSSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCBCdXR0b24gZnJvbSBcInNhcC9tL0J1dHRvblwiO1xuaW1wb3J0IHR5cGUgeyBPYmplY3RNYXJrZXIkUHJlc3NFdmVudCB9IGZyb20gXCJzYXAvbS9PYmplY3RNYXJrZXJcIjtcbmltcG9ydCBPYmplY3RNYXJrZXIgZnJvbSBcInNhcC9tL09iamVjdE1hcmtlclwiO1xuaW1wb3J0IFBvcG92ZXIgZnJvbSBcInNhcC9tL1BvcG92ZXJcIjtcbmltcG9ydCBUZXh0IGZyb20gXCJzYXAvbS9UZXh0XCI7XG5pbXBvcnQgVkJveCBmcm9tIFwic2FwL20vVkJveFwiO1xuaW1wb3J0IHsgT2JqZWN0TWFya2VyVHlwZSwgT2JqZWN0TWFya2VyVmlzaWJpbGl0eSB9IGZyb20gXCJzYXAvbS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSB7ICRDb250cm9sU2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IExpYnJhcnkgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHR5cGUgT0RhdGFWNENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5cbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgZm9yIGNyZWF0aW5nIGEgRHJhZnRJbmRpY2F0b3IgYmFzZWQgb24gdGhlIG1ldGFkYXRhIHByb3ZpZGVkIGJ5IE9EYXRhIFY0LlxuICpcbiAqIFVzYWdlIGV4YW1wbGU6XG4gKiA8cHJlPlxuICogJmx0O21hY3JvczpEcmFmdEluZGljYXRvclxuICogaWQ9XCJTb21lSURcIlxuICogLyZndDtcbiAqIDwvcHJlPlxuICogQHByaXZhdGVcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLm1hY3Jvcy5kcmFmdEluZGljYXRvci5EcmFmdEluZGljYXRvclwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRHJhZnRJbmRpY2F0b3IgZXh0ZW5kcyBCdWlsZGluZ0Jsb2NrPENvbnRyb2w+IHtcblx0LyoqXG5cdCAqIElEIG9mIHRoZSBEcmFmdEluZGljYXRvclxuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdHB1YmxpYyBpZD86IHN0cmluZztcblxuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0cHVibGljIGRyYWZ0SW5kaWNhdG9yVHlwZT86IE9iamVjdE1hcmtlclZpc2liaWxpdHkuSWNvbk9ubHkgfCBPYmplY3RNYXJrZXJWaXNpYmlsaXR5Lkljb25BbmRUZXh0ID0gT2JqZWN0TWFya2VyVmlzaWJpbGl0eS5JY29uQW5kVGV4dDtcblxuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0cmVxdWlyZWQ6IHRydWVcblx0fSlcblx0Y29udGV4dFBhdGghOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdHB1YmxpYyBjbGFzcyA9IFwiXCI7XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIlxuXHR9KVxuXHRwdWJsaWMgdXNlZEluVGFibGU/OiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0cHVibGljIHVzZWRJbkFuYWx5dGljYWxUYWJsZT86IGJvb2xlYW47XG5cblx0ZHJhZnRQb3BvdmVyPzogUG9wb3ZlcjtcblxuXHRwcml2YXRlIGlzSGlkZGVuRHJhZnRFbmFibGVkPzogYm9vbGVhbjtcblxuXHRjb25zdHJ1Y3Rvcihwcm9wZXJ0aWVzOiAkQ29udHJvbFNldHRpbmdzICYgUHJvcGVydGllc09mPERyYWZ0SW5kaWNhdG9yPiwgb3RoZXJzPzogJENvbnRyb2xTZXR0aW5ncykge1xuXHRcdHN1cGVyKHByb3BlcnRpZXMsIG90aGVycyk7XG5cdH1cblxuXHRzZXREcmFmdEluZGljYXRvclR5cGUoXG5cdFx0aW5kaWNhdG9yOiBPYmplY3RNYXJrZXJWaXNpYmlsaXR5Lkljb25Pbmx5IHwgT2JqZWN0TWFya2VyVmlzaWJpbGl0eS5JY29uQW5kVGV4dCB8IE9iamVjdE1hcmtlclZpc2liaWxpdHkuVGV4dE9ubHlcblx0KTogdm9pZCB7XG5cdFx0aWYgKFtPYmplY3RNYXJrZXJWaXNpYmlsaXR5Lkljb25Pbmx5LCBPYmplY3RNYXJrZXJWaXNpYmlsaXR5Lkljb25BbmRUZXh0XS5pbmNsdWRlcyhpbmRpY2F0b3IpKSB7XG5cdFx0XHR0aGlzLnNldFByb3BlcnR5KFwiZHJhZnRJbmRpY2F0b3JUeXBlXCIsIGluZGljYXRvcik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgQWxsb3dlZCB2YWx1ZSAke2luZGljYXRvcn0gZG9lcyBub3QgbWF0Y2hgKTtcblx0XHR9XG5cdH1cblxuXHRhZGRBcmlhTGFiZWxsZWRCeUZvckRyYWZ0SW5kaWNhdG9yKGVsZW1lbnQ6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IGFyaWFMYWJlbGxlZEJ5cyA9ICh0aGlzLmNvbnRlbnQgYXMgdW5rbm93biBhcyBPYmplY3RNYXJrZXIpPy5nZXRBcmlhTGFiZWxsZWRCeSgpID8/IFtdO1xuXHRcdGlmICghYXJpYUxhYmVsbGVkQnlzLmluY2x1ZGVzKGVsZW1lbnQpKSB7XG5cdFx0XHQodGhpcy5jb250ZW50IGFzIHVua25vd24gYXMgT2JqZWN0TWFya2VyKT8uYWRkQXJpYUxhYmVsbGVkQnkoZWxlbWVudCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXIgZm9yIHRoZSBvbk1ldGFkYXRhQXZhaWxhYmxlIGV2ZW50LlxuXHQgKi9cblx0b25NZXRhZGF0YUF2YWlsYWJsZSgpOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuY29udGVudCkge1xuXHRcdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJ1bnRpbWUgZm9ybWF0dGVyIGZ1bmN0aW9uIHRvIGZvcm1hdCB0aGUgY29ycmVjdCB0ZXh0IHRoYXQgZGlzcGxheXMgdGhlIG93bmVyIG9mIGEgZHJhZnQuXG5cdCAqXG5cdCAqIFRoaXMgaXMgdXNlZCBpbiBjYXNlIHRoZSBEcmFmdEluZGljYXRvciBpcyBzaG93biBmb3IgYW4gYWN0aXZlIGVudGl0eSB0aGF0IGhhcyBhIGRyYWZ0IG9mIGFub3RoZXIgdXNlci5cblx0ICogQHBhcmFtIGhhc0RyYWZ0RW50aXR5XG5cdCAqIEBwYXJhbSBkcmFmdEluUHJvY2Vzc0J5VXNlclxuXHQgKiBAcGFyYW0gZHJhZnRMYXN0Q2hhbmdlZEJ5VXNlclxuXHQgKiBAcGFyYW0gZHJhZnRJblByb2Nlc3NCeVVzZXJEZXNjXG5cdCAqIEBwYXJhbSBkcmFmdExhc3RDaGFuZ2VkQnlVc2VyRGVzY1xuXHQgKiBAcmV0dXJucyBUZXh0IHRvIGRpc3BsYXlcblx0ICovXG5cdHN0YXRpYyBmb3JtYXREcmFmdE93bmVyVGV4dEluUG9wb3Zlcihcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWludmFsaWQtdm9pZC10eXBlXG5cdFx0dGhpczogdm9pZCxcblx0XHRoYXNEcmFmdEVudGl0eTogYm9vbGVhbixcblx0XHRkcmFmdEluUHJvY2Vzc0J5VXNlcjogc3RyaW5nLFxuXHRcdGRyYWZ0TGFzdENoYW5nZWRCeVVzZXI6IHN0cmluZyxcblx0XHRkcmFmdEluUHJvY2Vzc0J5VXNlckRlc2M6IHN0cmluZyxcblx0XHRkcmFmdExhc3RDaGFuZ2VkQnlVc2VyRGVzYzogc3RyaW5nXG5cdCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgbWFjcm9SZXNvdXJjZUJ1bmRsZSA9IExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUubWFjcm9zXCIpO1xuXHRcdGlmICghbWFjcm9SZXNvdXJjZUJ1bmRsZSkge1xuXHRcdFx0cmV0dXJuIFwiXCI7XG5cdFx0fVxuXHRcdGlmIChoYXNEcmFmdEVudGl0eSkge1xuXHRcdFx0Y29uc3QgdXNlckRlc2NyaXB0aW9uID1cblx0XHRcdFx0ZHJhZnRJblByb2Nlc3NCeVVzZXJEZXNjIHx8IGRyYWZ0SW5Qcm9jZXNzQnlVc2VyIHx8IGRyYWZ0TGFzdENoYW5nZWRCeVVzZXJEZXNjIHx8IGRyYWZ0TGFzdENoYW5nZWRCeVVzZXI7XG5cblx0XHRcdGlmICghdXNlckRlc2NyaXB0aW9uKSB7XG5cdFx0XHRcdHJldHVybiBtYWNyb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0ZJRUxEX1JVTlRJTUVfRFJBRlRfUE9QT1ZFUl9VTlNBVkVEX0NIQU5HRVNfQllfVU5LTk9XTlwiKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiBkcmFmdEluUHJvY2Vzc0J5VXNlclxuXHRcdFx0XHRcdD8gbWFjcm9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9GSUVMRF9SVU5USU1FX0RSQUZUX1BPUE9WRVJfTE9DS0VEX0JZX0tOT1dOXCIsIFt1c2VyRGVzY3JpcHRpb25dKVxuXHRcdFx0XHRcdDogbWFjcm9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9GSUVMRF9SVU5USU1FX0RSQUZUX1BPUE9WRVJfVU5TQVZFRF9DSEFOR0VTX0JZX0tOT1dOXCIsIFt1c2VyRGVzY3JpcHRpb25dKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIG1hY3JvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRklFTERfUlVOVElNRV9EUkFGVF9QT1BPVkVSX05PX0RBVEFfVEVYVFwiKTtcblx0XHR9XG5cdH1cblxuXHQvKioqXG5cdCAqIEdldHMgdGhlIHByb3BlcnRpZXMgb2YgdGhlIERyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhIGVudGl0eSBjb25uZWN0ZWQgdG8gdGhlIGdpdmVuIGVudGl0eSBzZXRcblx0ICpcblx0ICogQHJldHVybnMgTGlzdCBvZiBwcm9wZXJ0eSBuYW1lc1xuXHQgKi9cblx0Z2V0RHJhZnRBZG1pbmlzdHJhdGl2ZURhdGFQcm9wZXJ0aWVzKCk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBtZXRhRGF0YTogRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eT4gfCB1bmRlZmluZWQgPSB0aGlzLmdldERhdGFNb2RlbE9iamVjdFBhdGgodGhpcy5jb250ZXh0UGF0aCk7XG5cdFx0Y29uc3QgZHJhZnRBZG1pbkVsZW1lbnQgPSBtZXRhRGF0YT8udGFyZ2V0RW50aXR5VHlwZS5uYXZpZ2F0aW9uUHJvcGVydGllcy5maW5kKChhKSA9PiBhLm5hbWUgPT09IFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGFcIik7XG5cdFx0Y29uc3QgZHJhZnRBZG1pblByb3BlcnRpZXMgPSBkcmFmdEFkbWluRWxlbWVudD8udGFyZ2V0VHlwZS5lbnRpdHlQcm9wZXJ0aWVzO1xuXHRcdHJldHVybiBkcmFmdEFkbWluUHJvcGVydGllcz8ubWFwKChvRHJhZnRBZG1pblByb3BlcnR5KSA9PiBvRHJhZnRBZG1pblByb3BlcnR5Lm5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnN0cnVjdHMgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbiBmb3IgdGhlIHRleHQgZGlzcGxheWVkIGFzIHRpdGxlIG9mIHRoZSBwb3B1cC5cblx0ICogQHJldHVybnMgVGhlIGJpbmRpbmcgZXhwcmVzc2lvblxuXHQgKi9cblx0Z2V0UG9wb3ZlclRpdGxlQmluZGluZ0V4cHJlc3Npb24oKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPFByaW1pdGl2ZVR5cGU+IHtcblx0XHRyZXR1cm4gaWZFbHNlKFxuXHRcdFx0bm90KEVudGl0eS5Jc0FjdGl2ZSksXG5cdFx0XHR0aGlzLmlzSGlkZGVuRHJhZnRFbmFibGVkXG5cdFx0XHRcdD8gcGF0aEluTW9kZWwoXCJNX0RSQUZUX1BPUE9WRVJfQURNSU5fVU5TQVZFRF9PQkpFQ1RcIiwgXCJzYXAuZmUuaTE4blwiKVxuXHRcdFx0XHQ6IHBhdGhJbk1vZGVsKFwiTV9DT01NT05fRFJBRlRfT0JKRUNUXCIsIFwic2FwLmZlLmkxOG5cIiksXG5cdFx0XHRpZkVsc2UoXG5cdFx0XHRcdEVudGl0eS5IYXNEcmFmdCxcblx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdG5vdChpc0VtcHR5KHBhdGhJbk1vZGVsKFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvSW5Qcm9jZXNzQnlVc2VyXCIpKSksXG5cdFx0XHRcdFx0cGF0aEluTW9kZWwoXCJNX0NPTU1PTl9EUkFGVF9MT0NLRURfT0JKRUNUXCIsIFwic2FwLmZlLmkxOG5cIiksXG5cdFx0XHRcdFx0cGF0aEluTW9kZWwoXCJNX0RSQUZUX1BPUE9WRVJfQURNSU5fVU5TQVZFRF9PQkpFQ1RcIiwgXCJzYXAuZmUuaTE4blwiKVxuXHRcdFx0XHQpLFxuXHRcdFx0XHR0aGlzLmRyYWZ0SW5kaWNhdG9yVHlwZSA9PT0gT2JqZWN0TWFya2VyVmlzaWJpbGl0eS5JY29uQW5kVGV4dFxuXHRcdFx0XHRcdD8gXCIgXCJcblx0XHRcdFx0XHQ6IHBhdGhJbk1vZGVsKFwiQ19EUkFGVF9QT1BPVkVSX0FETUlOX0RBVEFfRFJBRlRJTkZPX0ZMQUdHRURfT0JKRUNUXCIsIFwic2FwLmZlLmkxOG5cIilcblx0XHRcdClcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnN0cnVjdHMgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbiBmb3IgdGhlIHRleHQgZGlzcGxheWVkIHRvIGlkZW50aWZ5IHRoZSBkcmFmdCBvd25lciBpbiB0aGUgcG9wdXAuXG5cdCAqIFRoaXMgYmluZGluZyBpcyBjb25maWd1cmVkIHRvIGNhbGwgZm9ybWF0RHJhZnRPd25lclRleHRJblBvcG92ZXIgYXQgcnVudGltZS5cblx0ICpcblx0ICogV2UgY2Fubm90IHJlZmVyZW5jZSBmb3JtYXREcmFmdE93bmVyVGV4dEluUG9wb3ZlciBkaXJlY3RseSBhcyB3ZSBuZWVkIHRvIGNvbmRpdGlvbmFsbHkgcGFzcyBwcm9wZXJ0aWVzIHRoYXQgbWlnaHQgZXhpc3Qgb3Igbm90LFxuXHQgKiBhbmQgcmVmZXJyaW5nIHRvIG5vbi1leGlzdGluZyBwcm9wZXJ0aWVzIGZhaWxzIHRoZSBiaW5kaW5nLlxuXHQgKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9uXG5cdCAqL1xuXHRnZXREcmFmdE93bmVyVGV4dEJpbmRpbmdFeHByZXNzaW9uKCk6IHtcblx0XHRwYXJ0czogdW5rbm93bltdO1xuXHRcdGZvcm1hdHRlcjogKFxuXHRcdFx0aGFzRHJhZnRFbnRpdHk6IGJvb2xlYW4sXG5cdFx0XHRkcmFmdEluUHJvY2Vzc0J5VXNlcjogc3RyaW5nLFxuXHRcdFx0ZHJhZnRMYXN0Q2hhbmdlZEJ5VXNlcjogc3RyaW5nLFxuXHRcdFx0ZHJhZnRJblByb2Nlc3NCeVVzZXJEZXNjOiBzdHJpbmcsXG5cdFx0XHRkcmFmdExhc3RDaGFuZ2VkQnlVc2VyRGVzYzogc3RyaW5nXG5cdFx0KSA9PiBzdHJpbmc7XG5cdH0ge1xuXHRcdGNvbnN0IGRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhUHJvcGVydGllcyA9IHRoaXMuZ2V0RHJhZnRBZG1pbmlzdHJhdGl2ZURhdGFQcm9wZXJ0aWVzKCk7XG5cblx0XHRjb25zdCBwYXJ0cyA9IFtcblx0XHRcdHsgcGF0aDogXCJIYXNEcmFmdEVudGl0eVwiLCB0YXJnZXRUeXBlOiBcImFueVwiIH0sXG5cdFx0XHR7IHBhdGg6IFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvSW5Qcm9jZXNzQnlVc2VyXCIgfSxcblx0XHRcdHsgcGF0aDogXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9MYXN0Q2hhbmdlZEJ5VXNlclwiIH1cblx0XHRdO1xuXHRcdGlmIChkcmFmdEFkbWluaXN0cmF0aXZlRGF0YVByb3BlcnRpZXM/LmluY2x1ZGVzKFwiSW5Qcm9jZXNzQnlVc2VyRGVzY3JpcHRpb25cIikpIHtcblx0XHRcdHBhcnRzLnB1c2goeyBwYXRoOiBcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhL0luUHJvY2Vzc0J5VXNlckRlc2NyaXB0aW9uXCIgfSk7XG5cdFx0fVxuXHRcdGlmIChkcmFmdEFkbWluaXN0cmF0aXZlRGF0YVByb3BlcnRpZXM/LmluY2x1ZGVzKFwiTGFzdENoYW5nZWRCeVVzZXJEZXNjcmlwdGlvblwiKSkge1xuXHRcdFx0cGFydHMucHVzaCh7IHBhdGg6IFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvTGFzdENoYW5nZWRCeVVzZXJEZXNjcmlwdGlvblwiIH0pO1xuXHRcdH1cblxuXHRcdC8vcGFydHMucHVzaCh7cGF0aDogXCJzYXAuZmUuaTE4bj5cIn0pXG5cblx0XHRyZXR1cm4geyBwYXJ0cywgZm9ybWF0dGVyOiBEcmFmdEluZGljYXRvci5mb3JtYXREcmFmdE93bmVyVGV4dEluUG9wb3ZlciB9O1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBwb3BvdmVyIGNvbnRyb2wgdG8gZGlzcGxheSBkcmFmdCBpbmZvcm1hdGlvbi5cblx0ICogQHBhcmFtIGNvbnRyb2wgQ29udHJvbCB0aGF0IHRoZSBwb3BvdmVyIGlzIHRvIGJlIGNyZWF0ZWQgZm9yXG5cdCAqIEByZXR1cm5zIFRoZSBjcmVhdGVkIHBvcG92ZXIgY29udHJvbFxuXHQgKi9cblx0Y3JlYXRlUG9wb3Zlcihjb250cm9sOiBDb250cm9sKTogUG9wb3ZlciB7XG5cdFx0Y29uc3QgaXNEcmFmdFdpdGhOb0NoYW5nZXNCaW5kaW5nID0gYW5kKG5vdChFbnRpdHkuSXNBY3RpdmUpLCBpc0VtcHR5KHBhdGhJbk1vZGVsKFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvTGFzdENoYW5nZURhdGVUaW1lXCIpKSk7XG5cdFx0Y29uc3QgZHJhZnRXaXRoTm9DaGFuZ2VzVGV4dEJpbmRpbmcgPVxuXHRcdFx0dGhpcy5kcmFmdEluZGljYXRvclR5cGUgPT09IE9iamVjdE1hcmtlclZpc2liaWxpdHkuSWNvbkFuZFRleHRcblx0XHRcdFx0PyBwYXRoSW5Nb2RlbChcIk1fRFJBRlRfUE9QT1ZFUl9BRE1JTl9HRU5FUklDX0xPQ0tFRF9PQkpFQ1RfUE9QT1ZFUl9URVhUXCIsIFwic2FwLmZlLmkxOG5cIilcblx0XHRcdFx0OiBwYXRoSW5Nb2RlbChcIkNfRFJBRlRfUE9QT1ZFUl9BRE1JTl9EQVRBX0RSQUZUSU5GT19QT1BPVkVSX05PX0RBVEFfVEVYVFwiLCBcInNhcC5mZS5pMThuXCIpO1xuXG5cdFx0Y29uc3QgaXNEcmFmdFdpdGhDaGFuZ2VzQmluZGluZyA9IGFuZChcblx0XHRcdG5vdChFbnRpdHkuSXNBY3RpdmUpLFxuXHRcdFx0bm90KGlzRW1wdHkocGF0aEluTW9kZWwoXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9MYXN0Q2hhbmdlRGF0ZVRpbWVcIikpKVxuXHRcdCk7XG5cdFx0Y29uc3QgZHJhZnRXaXRoQ2hhbmdlc1RleHRCaW5kaW5nID0ge1xuXHRcdFx0cGFydHM6IFtcblx0XHRcdFx0eyBwYXRoOiBcIk1fRFJBRlRfUE9QT1ZFUl9BRE1JTl9MQVNUX0NIQU5HRV9URVhUXCIsIG1vZGVsOiBcInNhcC5mZS5pMThuXCIgfSxcblx0XHRcdFx0eyBwYXRoOiBcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhL0xhc3RDaGFuZ2VEYXRlVGltZVwiIH1cblx0XHRcdF0sXG5cdFx0XHRmb3JtYXR0ZXI6IGZvcm1hdE1lc3NhZ2Vcblx0XHR9O1xuXG5cdFx0Y29uc3QgaXNBY3RpdmVJbnN0YW5jZUJpbmRpbmcgPSBhbmQoRW50aXR5LklzQWN0aXZlLCBub3QoaXNFbXB0eShwYXRoSW5Nb2RlbChcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhL0xhc3RDaGFuZ2VEYXRlVGltZVwiKSkpKTtcblx0XHRjb25zdCBhY3RpdmVJbnN0YW5jZVRleHRCaW5kaW5nID0geyAuLi5kcmFmdFdpdGhDaGFuZ2VzVGV4dEJpbmRpbmcgfTtcblxuXHRcdGNvbnN0IHBvcG92ZXI6IFBvcG92ZXIgPSAoXG5cdFx0XHQ8UG9wb3ZlclxuXHRcdFx0XHR0aXRsZT17dGhpcy5nZXRQb3BvdmVyVGl0bGVCaW5kaW5nRXhwcmVzc2lvbigpfVxuXHRcdFx0XHRzaG93SGVhZGVyPXt0cnVlfVxuXHRcdFx0XHR2ZXJ0aWNhbFNjcm9sbGluZz17ZmFsc2V9XG5cdFx0XHRcdGNsYXNzPXtcInNhcFVpQ29udGVudFBhZGRpbmdcIn1cblx0XHRcdFx0cGxhY2VtZW50PXtcIkF1dG9cIn1cblx0XHRcdFx0ZW5kQnV0dG9uPXtcblx0XHRcdFx0XHQoXG5cdFx0XHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0XHRcdGljb249e1wic2FwLWljb246Ly9kZWNsaW5lXCJ9XG5cdFx0XHRcdFx0XHRcdHByZXNzPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5kcmFmdFBvcG92ZXI/LmNsb3NlKCk7XG5cdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdCkgYXMgQnV0dG9uXG5cdFx0XHRcdH1cblx0XHRcdD5cblx0XHRcdFx0PFZCb3ggY2xhc3M9e1wic2FwVWlDb250ZW50UGFkZGluZ1wifT5cblx0XHRcdFx0XHQ8VkJveCB2aXNpYmxlPXtpc0RyYWZ0V2l0aE5vQ2hhbmdlc0JpbmRpbmd9PlxuXHRcdFx0XHRcdFx0PFRleHQgdGV4dD17ZHJhZnRXaXRoTm9DaGFuZ2VzVGV4dEJpbmRpbmd9IC8+XG5cdFx0XHRcdFx0PC9WQm94PlxuXHRcdFx0XHRcdDxWQm94IHZpc2libGU9e2lzRHJhZnRXaXRoQ2hhbmdlc0JpbmRpbmd9PlxuXHRcdFx0XHRcdFx0PFRleHQgdGV4dD17ZHJhZnRXaXRoQ2hhbmdlc1RleHRCaW5kaW5nfSAvPlxuXHRcdFx0XHRcdDwvVkJveD5cblx0XHRcdFx0XHQ8VkJveCB2aXNpYmxlPXtpc0FjdGl2ZUluc3RhbmNlQmluZGluZ30+XG5cdFx0XHRcdFx0XHQ8VGV4dCB0ZXh0PXt0aGlzLmdldERyYWZ0T3duZXJUZXh0QmluZGluZ0V4cHJlc3Npb24oKX0gLz5cblx0XHRcdFx0XHRcdDxUZXh0IGNsYXNzPXtcInNhcFVpU21hbGxNYXJnaW5Ub3BcIn0gdGV4dD17YWN0aXZlSW5zdGFuY2VUZXh0QmluZGluZ30gLz5cblx0XHRcdFx0XHQ8L1ZCb3g+XG5cdFx0XHRcdDwvVkJveD5cblx0XHRcdDwvUG9wb3Zlcj5cblx0XHQpIGFzIFBvcG92ZXI7XG5cblx0XHRDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KGNvbnRyb2wpLmFkZERlcGVuZGVudChwb3BvdmVyKTtcblx0XHRyZXR1cm4gcG9wb3Zlcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHByZXNzaW5nIG9mIHRoZSBvYmplY3QgbWFya2VyIGJ5IG9wZW5pbmcgYSBjb3JyZXNwb25kaW5nIHBvcG92ZXIuXG5cdCAqIEBwYXJhbSBldmVudCBFdmVudCBvYmplY3QgcGFzc2VkIGZyb20gdGhlIHByZXNzIGV2ZW50XG5cdCAqL1xuXHRvbk9iamVjdE1hcmtlclByZXNzZWQoZXZlbnQ6IE9iamVjdE1hcmtlciRQcmVzc0V2ZW50KTogdm9pZCB7XG5cdFx0Y29uc3Qgc291cmNlID0gZXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0Y29uc3QgYmluZGluZ0NvbnRleHQgPSBzb3VyY2UuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBPRGF0YVY0Q29udGV4dDtcblxuXHRcdHRoaXMuZHJhZnRQb3BvdmVyID8/PSB0aGlzLmNyZWF0ZVBvcG92ZXIoc291cmNlKTtcblxuXHRcdHRoaXMuZHJhZnRQb3BvdmVyLnNldEJpbmRpbmdDb250ZXh0KGJpbmRpbmdDb250ZXh0KTtcblx0XHR0aGlzLmRyYWZ0UG9wb3Zlci5vcGVuQnkoc291cmNlLCBmYWxzZSk7XG5cdH1cblxuXHQvKipcblx0ICogQ29uc3RydWN0cyB0aGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgXCJhZGRpdGlvbmFsSW5mb1wiIGF0dHJpYnV0ZSBpbiB0aGUgXCJJY29uQW5kVGV4dFwiIGNhc2UuXG5cdCAqIEByZXR1cm5zIFRoZSBiaW5kaW5nIGV4cHJlc3Npb25cblx0ICovXG5cdGdldEljb25BbmRUZXh0QWRkaXRpb25hbEluZm9CaW5kaW5nRXhwcmVzc2lvbigpOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiB7XG5cdFx0Y29uc3QgZHJhZnRBZG1pbmlzdHJhdGl2ZURhdGFQcm9wZXJ0aWVzID0gdGhpcy5nZXREcmFmdEFkbWluaXN0cmF0aXZlRGF0YVByb3BlcnRpZXMoKTtcblxuXHRcdGNvbnN0IG9yQmluZGluZ3MgPSBbXTtcblx0XHRpZiAoZHJhZnRBZG1pbmlzdHJhdGl2ZURhdGFQcm9wZXJ0aWVzPy5pbmNsdWRlcyhcIkluUHJvY2Vzc0J5VXNlckRlc2NyaXB0aW9uXCIpKSB7XG5cdFx0XHRvckJpbmRpbmdzLnB1c2gocGF0aEluTW9kZWwoXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9JblByb2Nlc3NCeVVzZXJEZXNjcmlwdGlvblwiKSk7XG5cdFx0fVxuXHRcdG9yQmluZGluZ3MucHVzaChwYXRoSW5Nb2RlbChcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhL0luUHJvY2Vzc0J5VXNlclwiKSk7XG5cdFx0aWYgKGRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhUHJvcGVydGllcz8uaW5jbHVkZXMoXCJMYXN0Q2hhbmdlZEJ5VXNlckRlc2NyaXB0aW9uXCIpKSB7XG5cdFx0XHRvckJpbmRpbmdzLnB1c2gocGF0aEluTW9kZWwoXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9MYXN0Q2hhbmdlZEJ5VXNlckRlc2NyaXB0aW9uXCIpKTtcblx0XHR9XG5cdFx0b3JCaW5kaW5ncy5wdXNoKHBhdGhJbk1vZGVsKFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvTGFzdENoYW5nZWRCeVVzZXJcIikpO1xuXG5cdFx0cmV0dXJuIGlmRWxzZTxzdHJpbmc+KEVudGl0eS5IYXNEcmFmdCwgb3IoLi4ub3JCaW5kaW5ncykgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4sIFwiXCIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGNvbnRlbnQgb2YgdGhpcyBidWlsZGluZyBibG9jayBmb3IgdGhlIFwiSWNvbkFuZFRleHRcIiB0eXBlLlxuXHQgKiBAcmV0dXJucyBUaGUgY29udHJvbCB0cmVlXG5cdCAqL1xuXHRnZXRJY29uQW5kVGV4dENvbnRlbnQoKTogT2JqZWN0TWFya2VyIHtcblx0XHR0aGlzLmlzSGlkZGVuRHJhZnRFbmFibGVkID0gKHRoaXMuZ2V0QXBwQ29tcG9uZW50KCk/LmdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzKCkuZ2V0Q2FwYWJpbGl0aWVzKCkuSGlkZGVuRHJhZnQgYXMgSGlkZGVuRHJhZnQpXG5cdFx0XHQ/LmVuYWJsZWQ7XG5cdFx0Y29uc3Qgb2JqTWFya2VyVHlwZSA9IHRoaXMuaXNIaWRkZW5EcmFmdEVuYWJsZWQgPyBPYmplY3RNYXJrZXJUeXBlLlVuc2F2ZWQgOiBPYmplY3RNYXJrZXJUeXBlLkRyYWZ0O1xuXHRcdGNvbnN0IHR5cGUgPSBpZkVsc2UoXG5cdFx0XHRub3QoRW50aXR5LklzQWN0aXZlKSxcblx0XHRcdG9iak1hcmtlclR5cGUsXG5cdFx0XHRpZkVsc2UoXG5cdFx0XHRcdEVudGl0eS5IYXNEcmFmdCxcblx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdHBhdGhJbk1vZGVsKFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvSW5Qcm9jZXNzQnlVc2VyXCIpLFxuXHRcdFx0XHRcdE9iamVjdE1hcmtlclR5cGUuTG9ja2VkQnksXG5cdFx0XHRcdFx0aWZFbHNlKHBhdGhJbk1vZGVsKFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvTGFzdENoYW5nZWRCeVVzZXJcIiksIE9iamVjdE1hcmtlclR5cGUuVW5zYXZlZEJ5LCBPYmplY3RNYXJrZXJUeXBlLlVuc2F2ZWQpXG5cdFx0XHRcdCksXG5cdFx0XHRcdE9iamVjdE1hcmtlclR5cGUuRmxhZ2dlZFxuXHRcdFx0KVxuXHRcdCk7XG5cblx0XHRjb25zdCB2aXNpYmlsaXR5ID0gaWZFbHNlKG5vdChFbnRpdHkuSGFzRHJhZnQpLCBPYmplY3RNYXJrZXJWaXNpYmlsaXR5LlRleHRPbmx5LCBPYmplY3RNYXJrZXJWaXNpYmlsaXR5Lkljb25BbmRUZXh0KTtcblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8T2JqZWN0TWFya2VyXG5cdFx0XHRcdHR5cGU9e3R5cGV9XG5cdFx0XHRcdHByZXNzPXt0aGlzLm9uT2JqZWN0TWFya2VyUHJlc3NlZC5iaW5kKHRoaXMpfVxuXHRcdFx0XHR2aXNpYmlsaXR5PXt2aXNpYmlsaXR5fVxuXHRcdFx0XHRhZGRpdGlvbmFsSW5mbz17dGhpcy5nZXRJY29uQW5kVGV4dEFkZGl0aW9uYWxJbmZvQmluZGluZ0V4cHJlc3Npb24oKX1cblx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e3RoaXMuYXJpYUxhYmVsbGVkQnkgPyB0aGlzLmFyaWFMYWJlbGxlZEJ5IDogW119XG5cdFx0XHRcdGNsYXNzPXt0aGlzLmNsYXNzfVxuXHRcdFx0Lz5cblx0XHQpIGFzIE9iamVjdE1hcmtlcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBjb250ZW50IG9mIHRoaXMgYnVpbGRpbmcgYmxvY2sgZm9yIHRoZSBcIkljb25Pbmx5XCIgdHlwZS5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Z2V0SWNvbk9ubHlDb250ZW50KCk6IE9iamVjdE1hcmtlciB7XG5cdFx0Y29uc3QgdHlwZSA9IGlmRWxzZShcblx0XHRcdG5vdChFbnRpdHkuSXNBY3RpdmUpLFxuXHRcdFx0T2JqZWN0TWFya2VyVHlwZS5EcmFmdCxcblx0XHRcdGlmRWxzZShcblx0XHRcdFx0RW50aXR5Lkhhc0RyYWZ0LFxuXHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0ISF0aGlzLnVzZWRJbkFuYWx5dGljYWxUYWJsZSxcblx0XHRcdFx0XHRPYmplY3RNYXJrZXJUeXBlLkxvY2tlZCxcblx0XHRcdFx0XHRpZkVsc2UocGF0aEluTW9kZWwoXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9JblByb2Nlc3NCeVVzZXJcIiksIE9iamVjdE1hcmtlclR5cGUuTG9ja2VkLCBPYmplY3RNYXJrZXJUeXBlLlVuc2F2ZWQpXG5cdFx0XHRcdCksXG5cdFx0XHRcdE9iamVjdE1hcmtlclR5cGUuRmxhZ2dlZFxuXHRcdFx0KVxuXHRcdCk7XG5cblx0XHRsZXQgdmlzaWJsZTtcblx0XHRpZiAodGhpcy51c2VkSW5UYWJsZSA9PT0gdHJ1ZSkge1xuXHRcdFx0dmlzaWJsZSA9IG9yKG5vdChFbnRpdHkuSXNBY3RpdmUpLCBhbmQoRW50aXR5LklzQWN0aXZlLCBFbnRpdHkuSGFzRHJhZnQpKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gSWYgRW50aXR5Lkhhc0RyYWZ0IGlzIGVtcHR5LCB0aGVyZSBpcyBubyBjb250ZXh0IGF0IGFsbCwgc28gZG9uJ3Qgc2hvdyB0aGUgaW5kaWNhdG9yXG5cdFx0XHR2aXNpYmxlID0gYW5kKFxuXHRcdFx0XHRub3QoaXNFbXB0eShFbnRpdHkuSGFzRHJhZnQpKSxcblx0XHRcdFx0bm90KFVJLklzRWRpdGFibGUpLFxuXHRcdFx0XHRFbnRpdHkuSGFzRHJhZnQsXG5cdFx0XHRcdG5vdChwYXRoSW5Nb2RlbChcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhL0RyYWZ0SXNDcmVhdGVkQnlNZVwiKSlcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIChcblx0XHRcdDxPYmplY3RNYXJrZXJcblx0XHRcdFx0dHlwZT17dHlwZX1cblx0XHRcdFx0cHJlc3M9eyF0aGlzLnVzZWRJbkFuYWx5dGljYWxUYWJsZSA/IHRoaXMub25PYmplY3RNYXJrZXJQcmVzc2VkLmJpbmQodGhpcykgOiB1bmRlZmluZWR9XG5cdFx0XHRcdHZpc2liaWxpdHk9e09iamVjdE1hcmtlclZpc2liaWxpdHkuSWNvbk9ubHl9XG5cdFx0XHRcdHZpc2libGU9e3Zpc2libGV9XG5cdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXt0aGlzLmFyaWFMYWJlbGxlZEJ5ID8gdGhpcy5hcmlhTGFiZWxsZWRCeSA6IFtdfVxuXHRcdFx0XHRjbGFzcz17dGhpcy5jbGFzc31cblx0XHRcdC8+XG5cdFx0KSBhcyBPYmplY3RNYXJrZXI7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgY29udGVudCBvZiB0aGlzIGJ1aWxkaW5nIGJsb2NrLlxuXHQgKiBAcmV0dXJucyBUaGUgY29udHJvbCB0cmVlXG5cdCAqL1xuXHRjcmVhdGVDb250ZW50KCk6IE9iamVjdE1hcmtlciB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKHRoaXMuZHJhZnRJbmRpY2F0b3JUeXBlID09PSBPYmplY3RNYXJrZXJWaXNpYmlsaXR5Lkljb25BbmRUZXh0KSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5nZXRJY29uQW5kVGV4dENvbnRlbnQoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHRoaXMuZ2V0SWNvbk9ubHlDb250ZW50KCk7XG5cdFx0fVxuXHR9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
|
|
371
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEcmFmdEluZGljYXRvciIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwicHJvcGVydHkiLCJ0eXBlIiwiX2RlYzMiLCJfZGVjNCIsInJlcXVpcmVkIiwiX2RlYzUiLCJfZGVjNiIsIl9kZWM3IiwiX2RlYzgiLCJhbGxvd2VkVmFsdWVzIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9CdWlsZGluZ0Jsb2NrIiwicHJvcGVydGllcyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJfZGVzY3JpcHRvcjciLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwic2V0RHJhZnRJbmRpY2F0b3JUeXBlIiwiaW5kaWNhdG9yIiwiT2JqZWN0TWFya2VyVmlzaWJpbGl0eSIsIkljb25Pbmx5IiwiSWNvbkFuZFRleHQiLCJpbmNsdWRlcyIsInNldFByb3BlcnR5IiwiRXJyb3IiLCJhZGRBcmlhTGFiZWxsZWRCeUZvckRyYWZ0SW5kaWNhdG9yIiwiZWxlbWVudCIsImFyaWFMYWJlbGxlZEJ5cyIsImNvbnRlbnQiLCJnZXRBcmlhTGFiZWxsZWRCeSIsImFkZEFyaWFMYWJlbGxlZEJ5Iiwib25NZXRhZGF0YUF2YWlsYWJsZSIsImNyZWF0ZUNvbnRlbnQiLCJmb3JtYXREcmFmdE93bmVyVGV4dEluUG9wb3ZlciIsImhhc0RyYWZ0RW50aXR5IiwiZHJhZnRJblByb2Nlc3NCeVVzZXIiLCJkcmFmdExhc3RDaGFuZ2VkQnlVc2VyIiwiZHJhZnRJblByb2Nlc3NCeVVzZXJEZXNjIiwiZHJhZnRMYXN0Q2hhbmdlZEJ5VXNlckRlc2MiLCJtYWNyb1Jlc291cmNlQnVuZGxlIiwiTGlicmFyeSIsImdldFJlc291cmNlQnVuZGxlRm9yIiwidXNlckRlc2NyaXB0aW9uIiwiZ2V0VGV4dCIsImdldERyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhUHJvcGVydGllcyIsIm1ldGFEYXRhIiwiZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCIsImNvbnRleHRQYXRoIiwiZHJhZnRBZG1pbkVsZW1lbnQiLCJ0YXJnZXRFbnRpdHlUeXBlIiwibmF2aWdhdGlvblByb3BlcnRpZXMiLCJmaW5kIiwiYSIsIm5hbWUiLCJkcmFmdEFkbWluUHJvcGVydGllcyIsInRhcmdldFR5cGUiLCJlbnRpdHlQcm9wZXJ0aWVzIiwibWFwIiwib0RyYWZ0QWRtaW5Qcm9wZXJ0eSIsImdldFBvcG92ZXJUaXRsZUJpbmRpbmdFeHByZXNzaW9uIiwiaWZFbHNlIiwibm90IiwiRW50aXR5IiwiSXNBY3RpdmUiLCJpc0hpZGRlbkRyYWZ0RW5hYmxlZCIsInBhdGhJbk1vZGVsIiwiSGFzRHJhZnQiLCJpc0VtcHR5IiwiZHJhZnRJbmRpY2F0b3JUeXBlIiwiZ2V0RHJhZnRPd25lclRleHRCaW5kaW5nRXhwcmVzc2lvbiIsImRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhUHJvcGVydGllcyIsInBhcnRzIiwicGF0aCIsInB1c2giLCJmb3JtYXR0ZXIiLCJjcmVhdGVQb3BvdmVyIiwiY29udHJvbCIsImlzRHJhZnRXaXRoTm9DaGFuZ2VzQmluZGluZyIsImFuZCIsImRyYWZ0V2l0aE5vQ2hhbmdlc1RleHRCaW5kaW5nIiwiaXNEcmFmdFdpdGhDaGFuZ2VzQmluZGluZyIsImRyYWZ0V2l0aENoYW5nZXNUZXh0QmluZGluZyIsIm1vZGVsIiwiZm9ybWF0TWVzc2FnZSIsImlzQWN0aXZlSW5zdGFuY2VCaW5kaW5nIiwiYWN0aXZlSW5zdGFuY2VUZXh0QmluZGluZyIsInBvcG92ZXIiLCJfanN4IiwiUG9wb3ZlciIsInRpdGxlIiwic2hvd0hlYWRlciIsInZlcnRpY2FsU2Nyb2xsaW5nIiwiY2xhc3MiLCJwbGFjZW1lbnQiLCJlbmRCdXR0b24iLCJCdXR0b24iLCJpY29uIiwicHJlc3MiLCJkcmFmdFBvcG92ZXIiLCJjbG9zZSIsImNoaWxkcmVuIiwiX2pzeHMiLCJWQm94IiwidmlzaWJsZSIsIlRleHQiLCJ0ZXh0IiwiQ29tbW9uVXRpbHMiLCJnZXRUYXJnZXRWaWV3IiwiYWRkRGVwZW5kZW50Iiwib25PYmplY3RNYXJrZXJQcmVzc2VkIiwiZXZlbnQiLCJzb3VyY2UiLCJnZXRTb3VyY2UiLCJiaW5kaW5nQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0Iiwic2V0QmluZGluZ0NvbnRleHQiLCJvcGVuQnkiLCJnZXRJY29uQW5kVGV4dEFkZGl0aW9uYWxJbmZvQmluZGluZ0V4cHJlc3Npb24iLCJvckJpbmRpbmdzIiwib3IiLCJnZXRJY29uQW5kVGV4dENvbnRlbnQiLCJnZXRBcHBDb21wb25lbnQiLCJnZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcyIsImdldENhcGFiaWxpdGllcyIsIkhpZGRlbkRyYWZ0IiwiZW5hYmxlZCIsIm9iak1hcmtlclR5cGUiLCJPYmplY3RNYXJrZXJUeXBlIiwiVW5zYXZlZCIsIkRyYWZ0IiwiTG9ja2VkQnkiLCJVbnNhdmVkQnkiLCJGbGFnZ2VkIiwidmlzaWJpbGl0eSIsIlRleHRPbmx5IiwiT2JqZWN0TWFya2VyIiwiYmluZCIsImFkZGl0aW9uYWxJbmZvIiwiYXJpYUxhYmVsbGVkQnkiLCJyZWFjdGl2ZUFyZWFNb2RlIiwiZ2V0SWNvbk9ubHlDb250ZW50IiwidXNlZEluQW5hbHl0aWNhbFRhYmxlIiwiTG9ja2VkIiwidXNlZEluVGFibGUiLCJVSSIsIklzRWRpdGFibGUiLCJ1bmRlZmluZWQiLCJCdWlsZGluZ0Jsb2NrIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJEcmFmdEluZGljYXRvci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IGZvcm1hdE1lc3NhZ2UgZnJvbSBcInNhcC9iYXNlL3N0cmluZ3MvZm9ybWF0TWVzc2FnZVwiO1xuaW1wb3J0IHR5cGUgeyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24sIFByaW1pdGl2ZVR5cGUgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGFuZCwgaWZFbHNlLCBpc0VtcHR5LCBub3QsIG9yLCBwYXRoSW5Nb2RlbCB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgcHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9jayBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1wiO1xuaW1wb3J0IHR5cGUgeyBIaWRkZW5EcmFmdCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IEVudGl0eSwgVUkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCB0eXBlIHsgT2JqZWN0TWFya2VyJFByZXNzRXZlbnQgfSBmcm9tIFwic2FwL20vT2JqZWN0TWFya2VyXCI7XG5pbXBvcnQgT2JqZWN0TWFya2VyIGZyb20gXCJzYXAvbS9PYmplY3RNYXJrZXJcIjtcbmltcG9ydCBQb3BvdmVyIGZyb20gXCJzYXAvbS9Qb3BvdmVyXCI7XG5pbXBvcnQgVGV4dCBmcm9tIFwic2FwL20vVGV4dFwiO1xuaW1wb3J0IFZCb3ggZnJvbSBcInNhcC9tL1ZCb3hcIjtcbmltcG9ydCB7IE9iamVjdE1hcmtlclR5cGUsIE9iamVjdE1hcmtlclZpc2liaWxpdHkgfSBmcm9tIFwic2FwL20vbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgeyAkQ29udHJvbFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBMaWJyYXJ5IGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCB0eXBlIE9EYXRhVjRDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuXG4vKipcbiAqIEJ1aWxkaW5nIGJsb2NrIGZvciBjcmVhdGluZyBhIERyYWZ0SW5kaWNhdG9yIGJhc2VkIG9uIHRoZSBtZXRhZGF0YSBwcm92aWRlZCBieSBPRGF0YSBWNC5cbiAqXG4gKiBVc2FnZSBleGFtcGxlOlxuICogPHByZT5cbiAqICZsdDttYWNyb3M6RHJhZnRJbmRpY2F0b3JcbiAqIGlkPVwiU29tZUlEXCJcbiAqIC8mZ3Q7XG4gKiA8L3ByZT5cbiAqIEBwcml2YXRlXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MuZHJhZnRJbmRpY2F0b3IuRHJhZnRJbmRpY2F0b3JcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERyYWZ0SW5kaWNhdG9yIGV4dGVuZHMgQnVpbGRpbmdCbG9jazxDb250cm9sPiB7XG5cdC8qKlxuXHQgKiBJRCBvZiB0aGUgRHJhZnRJbmRpY2F0b3Jcblx0ICovXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIlxuXHR9KVxuXHRwdWJsaWMgaWQ/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdHB1YmxpYyBkcmFmdEluZGljYXRvclR5cGU/OiBPYmplY3RNYXJrZXJWaXNpYmlsaXR5Lkljb25Pbmx5IHwgT2JqZWN0TWFya2VyVmlzaWJpbGl0eS5JY29uQW5kVGV4dCA9IE9iamVjdE1hcmtlclZpc2liaWxpdHkuSWNvbkFuZFRleHQ7XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdHJlcXVpcmVkOiB0cnVlXG5cdH0pXG5cdGNvbnRleHRQYXRoITogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIlxuXHR9KVxuXHRwdWJsaWMgY2xhc3MgPSBcIlwiO1xuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0cHVibGljIHVzZWRJblRhYmxlPzogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiXG5cdH0pXG5cdHB1YmxpYyB1c2VkSW5BbmFseXRpY2FsVGFibGU/OiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGFsbG93ZWRWYWx1ZXM6IFtcIklubGluZVwiLCBcIk92ZXJsYXlcIl0gfSlcblx0cmVhY3RpdmVBcmVhTW9kZT86IFwiSW5saW5lXCIgfCBcIk92ZXJsYXlcIjtcblxuXHRkcmFmdFBvcG92ZXI/OiBQb3BvdmVyO1xuXG5cdHByaXZhdGUgaXNIaWRkZW5EcmFmdEVuYWJsZWQ/OiBib29sZWFuO1xuXG5cdGNvbnN0cnVjdG9yKHByb3BlcnRpZXM6ICRDb250cm9sU2V0dGluZ3MgJiBQcm9wZXJ0aWVzT2Y8RHJhZnRJbmRpY2F0b3I+LCBvdGhlcnM/OiAkQ29udHJvbFNldHRpbmdzKSB7XG5cdFx0c3VwZXIocHJvcGVydGllcywgb3RoZXJzKTtcblx0fVxuXG5cdHNldERyYWZ0SW5kaWNhdG9yVHlwZShcblx0XHRpbmRpY2F0b3I6IE9iamVjdE1hcmtlclZpc2liaWxpdHkuSWNvbk9ubHkgfCBPYmplY3RNYXJrZXJWaXNpYmlsaXR5Lkljb25BbmRUZXh0IHwgT2JqZWN0TWFya2VyVmlzaWJpbGl0eS5UZXh0T25seVxuXHQpOiB2b2lkIHtcblx0XHRpZiAoW09iamVjdE1hcmtlclZpc2liaWxpdHkuSWNvbk9ubHksIE9iamVjdE1hcmtlclZpc2liaWxpdHkuSWNvbkFuZFRleHRdLmluY2x1ZGVzKGluZGljYXRvcikpIHtcblx0XHRcdHRoaXMuc2V0UHJvcGVydHkoXCJkcmFmdEluZGljYXRvclR5cGVcIiwgaW5kaWNhdG9yKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBBbGxvd2VkIHZhbHVlICR7aW5kaWNhdG9yfSBkb2VzIG5vdCBtYXRjaGApO1xuXHRcdH1cblx0fVxuXG5cdGFkZEFyaWFMYWJlbGxlZEJ5Rm9yRHJhZnRJbmRpY2F0b3IoZWxlbWVudDogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3QgYXJpYUxhYmVsbGVkQnlzID0gKHRoaXMuY29udGVudCBhcyB1bmtub3duIGFzIE9iamVjdE1hcmtlcik/LmdldEFyaWFMYWJlbGxlZEJ5KCkgPz8gW107XG5cdFx0aWYgKCFhcmlhTGFiZWxsZWRCeXMuaW5jbHVkZXMoZWxlbWVudCkpIHtcblx0XHRcdCh0aGlzLmNvbnRlbnQgYXMgdW5rbm93biBhcyBPYmplY3RNYXJrZXIpPy5hZGRBcmlhTGFiZWxsZWRCeShlbGVtZW50KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlciBmb3IgdGhlIG9uTWV0YWRhdGFBdmFpbGFibGUgZXZlbnQuXG5cdCAqL1xuXHRvbk1ldGFkYXRhQXZhaWxhYmxlKCk6IHZvaWQge1xuXHRcdGlmICghdGhpcy5jb250ZW50KSB7XG5cdFx0XHR0aGlzLmNvbnRlbnQgPSB0aGlzLmNyZWF0ZUNvbnRlbnQoKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUnVudGltZSBmb3JtYXR0ZXIgZnVuY3Rpb24gdG8gZm9ybWF0IHRoZSBjb3JyZWN0IHRleHQgdGhhdCBkaXNwbGF5cyB0aGUgb3duZXIgb2YgYSBkcmFmdC5cblx0ICpcblx0ICogVGhpcyBpcyB1c2VkIGluIGNhc2UgdGhlIERyYWZ0SW5kaWNhdG9yIGlzIHNob3duIGZvciBhbiBhY3RpdmUgZW50aXR5IHRoYXQgaGFzIGEgZHJhZnQgb2YgYW5vdGhlciB1c2VyLlxuXHQgKiBAcGFyYW0gaGFzRHJhZnRFbnRpdHlcblx0ICogQHBhcmFtIGRyYWZ0SW5Qcm9jZXNzQnlVc2VyXG5cdCAqIEBwYXJhbSBkcmFmdExhc3RDaGFuZ2VkQnlVc2VyXG5cdCAqIEBwYXJhbSBkcmFmdEluUHJvY2Vzc0J5VXNlckRlc2Ncblx0ICogQHBhcmFtIGRyYWZ0TGFzdENoYW5nZWRCeVVzZXJEZXNjXG5cdCAqIEByZXR1cm5zIFRleHQgdG8gZGlzcGxheVxuXHQgKi9cblx0c3RhdGljIGZvcm1hdERyYWZ0T3duZXJUZXh0SW5Qb3BvdmVyKFxuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8taW52YWxpZC12b2lkLXR5cGVcblx0XHR0aGlzOiB2b2lkLFxuXHRcdGhhc0RyYWZ0RW50aXR5OiBib29sZWFuLFxuXHRcdGRyYWZ0SW5Qcm9jZXNzQnlVc2VyOiBzdHJpbmcsXG5cdFx0ZHJhZnRMYXN0Q2hhbmdlZEJ5VXNlcjogc3RyaW5nLFxuXHRcdGRyYWZ0SW5Qcm9jZXNzQnlVc2VyRGVzYzogc3RyaW5nLFxuXHRcdGRyYWZ0TGFzdENoYW5nZWRCeVVzZXJEZXNjOiBzdHJpbmdcblx0KTogc3RyaW5nIHtcblx0XHRjb25zdCBtYWNyb1Jlc291cmNlQnVuZGxlID0gTGlicmFyeS5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5tYWNyb3NcIik7XG5cdFx0aWYgKCFtYWNyb1Jlc291cmNlQnVuZGxlKSB7XG5cdFx0XHRyZXR1cm4gXCJcIjtcblx0XHR9XG5cdFx0aWYgKGhhc0RyYWZ0RW50aXR5KSB7XG5cdFx0XHRjb25zdCB1c2VyRGVzY3JpcHRpb24gPVxuXHRcdFx0XHRkcmFmdEluUHJvY2Vzc0J5VXNlckRlc2MgfHwgZHJhZnRJblByb2Nlc3NCeVVzZXIgfHwgZHJhZnRMYXN0Q2hhbmdlZEJ5VXNlckRlc2MgfHwgZHJhZnRMYXN0Q2hhbmdlZEJ5VXNlcjtcblxuXHRcdFx0aWYgKCF1c2VyRGVzY3JpcHRpb24pIHtcblx0XHRcdFx0cmV0dXJuIG1hY3JvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRklFTERfUlVOVElNRV9EUkFGVF9QT1BPVkVSX1VOU0FWRURfQ0hBTkdFU19CWV9VTktOT1dOXCIpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIGRyYWZ0SW5Qcm9jZXNzQnlVc2VyXG5cdFx0XHRcdFx0PyBtYWNyb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0ZJRUxEX1JVTlRJTUVfRFJBRlRfUE9QT1ZFUl9MT0NLRURfQllfS05PV05cIiwgW3VzZXJEZXNjcmlwdGlvbl0pXG5cdFx0XHRcdFx0OiBtYWNyb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0ZJRUxEX1JVTlRJTUVfRFJBRlRfUE9QT1ZFUl9VTlNBVkVEX0NIQU5HRVNfQllfS05PV05cIiwgW3VzZXJEZXNjcmlwdGlvbl0pO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gbWFjcm9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9GSUVMRF9SVU5USU1FX0RSQUZUX1BPUE9WRVJfTk9fREFUQV9URVhUXCIpO1xuXHRcdH1cblx0fVxuXG5cdC8qKipcblx0ICogR2V0cyB0aGUgcHJvcGVydGllcyBvZiB0aGUgRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEgZW50aXR5IGNvbm5lY3RlZCB0byB0aGUgZ2l2ZW4gZW50aXR5IHNldFxuXHQgKlxuXHQgKiBAcmV0dXJucyBMaXN0IG9mIHByb3BlcnR5IG5hbWVzXG5cdCAqL1xuXHRnZXREcmFmdEFkbWluaXN0cmF0aXZlRGF0YVByb3BlcnRpZXMoKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG1ldGFEYXRhOiBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5PiB8IHVuZGVmaW5lZCA9IHRoaXMuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCh0aGlzLmNvbnRleHRQYXRoKTtcblx0XHRjb25zdCBkcmFmdEFkbWluRWxlbWVudCA9IG1ldGFEYXRhPy50YXJnZXRFbnRpdHlUeXBlLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmZpbmQoKGEpID0+IGEubmFtZSA9PT0gXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YVwiKTtcblx0XHRjb25zdCBkcmFmdEFkbWluUHJvcGVydGllcyA9IGRyYWZ0QWRtaW5FbGVtZW50Py50YXJnZXRUeXBlLmVudGl0eVByb3BlcnRpZXM7XG5cdFx0cmV0dXJuIGRyYWZ0QWRtaW5Qcm9wZXJ0aWVzPy5tYXAoKG9EcmFmdEFkbWluUHJvcGVydHkpID0+IG9EcmFmdEFkbWluUHJvcGVydHkubmFtZSk7XG5cdH1cblxuXHQvKipcblx0ICogQ29uc3RydWN0cyB0aGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgdGV4dCBkaXNwbGF5ZWQgYXMgdGl0bGUgb2YgdGhlIHBvcHVwLlxuXHQgKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9uXG5cdCAqL1xuXHRnZXRQb3BvdmVyVGl0bGVCaW5kaW5nRXhwcmVzc2lvbigpOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248UHJpbWl0aXZlVHlwZT4ge1xuXHRcdHJldHVybiBpZkVsc2UoXG5cdFx0XHRub3QoRW50aXR5LklzQWN0aXZlKSxcblx0XHRcdHRoaXMuaXNIaWRkZW5EcmFmdEVuYWJsZWRcblx0XHRcdFx0PyBwYXRoSW5Nb2RlbChcIk1fRFJBRlRfUE9QT1ZFUl9BRE1JTl9VTlNBVkVEX09CSkVDVFwiLCBcInNhcC5mZS5pMThuXCIpXG5cdFx0XHRcdDogcGF0aEluTW9kZWwoXCJNX0NPTU1PTl9EUkFGVF9PQkpFQ1RcIiwgXCJzYXAuZmUuaTE4blwiKSxcblx0XHRcdGlmRWxzZShcblx0XHRcdFx0RW50aXR5Lkhhc0RyYWZ0LFxuXHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0bm90KGlzRW1wdHkocGF0aEluTW9kZWwoXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9JblByb2Nlc3NCeVVzZXJcIikpKSxcblx0XHRcdFx0XHRwYXRoSW5Nb2RlbChcIk1fQ09NTU9OX0RSQUZUX0xPQ0tFRF9PQkpFQ1RcIiwgXCJzYXAuZmUuaTE4blwiKSxcblx0XHRcdFx0XHRwYXRoSW5Nb2RlbChcIk1fRFJBRlRfUE9QT1ZFUl9BRE1JTl9VTlNBVkVEX09CSkVDVFwiLCBcInNhcC5mZS5pMThuXCIpXG5cdFx0XHRcdCksXG5cdFx0XHRcdHRoaXMuZHJhZnRJbmRpY2F0b3JUeXBlID09PSBPYmplY3RNYXJrZXJWaXNpYmlsaXR5Lkljb25BbmRUZXh0XG5cdFx0XHRcdFx0PyBcIiBcIlxuXHRcdFx0XHRcdDogcGF0aEluTW9kZWwoXCJDX0RSQUZUX1BPUE9WRVJfQURNSU5fREFUQV9EUkFGVElORk9fRkxBR0dFRF9PQkpFQ1RcIiwgXCJzYXAuZmUuaTE4blwiKVxuXHRcdFx0KVxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogQ29uc3RydWN0cyB0aGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgdGV4dCBkaXNwbGF5ZWQgdG8gaWRlbnRpZnkgdGhlIGRyYWZ0IG93bmVyIGluIHRoZSBwb3B1cC5cblx0ICogVGhpcyBiaW5kaW5nIGlzIGNvbmZpZ3VyZWQgdG8gY2FsbCBmb3JtYXREcmFmdE93bmVyVGV4dEluUG9wb3ZlciBhdCBydW50aW1lLlxuXHQgKlxuXHQgKiBXZSBjYW5ub3QgcmVmZXJlbmNlIGZvcm1hdERyYWZ0T3duZXJUZXh0SW5Qb3BvdmVyIGRpcmVjdGx5IGFzIHdlIG5lZWQgdG8gY29uZGl0aW9uYWxseSBwYXNzIHByb3BlcnRpZXMgdGhhdCBtaWdodCBleGlzdCBvciBub3QsXG5cdCAqIGFuZCByZWZlcnJpbmcgdG8gbm9uLWV4aXN0aW5nIHByb3BlcnRpZXMgZmFpbHMgdGhlIGJpbmRpbmcuXG5cdCAqIEByZXR1cm5zIFRoZSBiaW5kaW5nIGV4cHJlc3Npb25cblx0ICovXG5cdGdldERyYWZ0T3duZXJUZXh0QmluZGluZ0V4cHJlc3Npb24oKToge1xuXHRcdHBhcnRzOiB1bmtub3duW107XG5cdFx0Zm9ybWF0dGVyOiAoXG5cdFx0XHRoYXNEcmFmdEVudGl0eTogYm9vbGVhbixcblx0XHRcdGRyYWZ0SW5Qcm9jZXNzQnlVc2VyOiBzdHJpbmcsXG5cdFx0XHRkcmFmdExhc3RDaGFuZ2VkQnlVc2VyOiBzdHJpbmcsXG5cdFx0XHRkcmFmdEluUHJvY2Vzc0J5VXNlckRlc2M6IHN0cmluZyxcblx0XHRcdGRyYWZ0TGFzdENoYW5nZWRCeVVzZXJEZXNjOiBzdHJpbmdcblx0XHQpID0+IHN0cmluZztcblx0fSB7XG5cdFx0Y29uc3QgZHJhZnRBZG1pbmlzdHJhdGl2ZURhdGFQcm9wZXJ0aWVzID0gdGhpcy5nZXREcmFmdEFkbWluaXN0cmF0aXZlRGF0YVByb3BlcnRpZXMoKTtcblxuXHRcdGNvbnN0IHBhcnRzID0gW1xuXHRcdFx0eyBwYXRoOiBcIkhhc0RyYWZ0RW50aXR5XCIsIHRhcmdldFR5cGU6IFwiYW55XCIgfSxcblx0XHRcdHsgcGF0aDogXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9JblByb2Nlc3NCeVVzZXJcIiB9LFxuXHRcdFx0eyBwYXRoOiBcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhL0xhc3RDaGFuZ2VkQnlVc2VyXCIgfVxuXHRcdF07XG5cdFx0aWYgKGRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhUHJvcGVydGllcz8uaW5jbHVkZXMoXCJJblByb2Nlc3NCeVVzZXJEZXNjcmlwdGlvblwiKSkge1xuXHRcdFx0cGFydHMucHVzaCh7IHBhdGg6IFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvSW5Qcm9jZXNzQnlVc2VyRGVzY3JpcHRpb25cIiB9KTtcblx0XHR9XG5cdFx0aWYgKGRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhUHJvcGVydGllcz8uaW5jbHVkZXMoXCJMYXN0Q2hhbmdlZEJ5VXNlckRlc2NyaXB0aW9uXCIpKSB7XG5cdFx0XHRwYXJ0cy5wdXNoKHsgcGF0aDogXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9MYXN0Q2hhbmdlZEJ5VXNlckRlc2NyaXB0aW9uXCIgfSk7XG5cdFx0fVxuXG5cdFx0Ly9wYXJ0cy5wdXNoKHtwYXRoOiBcInNhcC5mZS5pMThuPlwifSlcblxuXHRcdHJldHVybiB7IHBhcnRzLCBmb3JtYXR0ZXI6IERyYWZ0SW5kaWNhdG9yLmZvcm1hdERyYWZ0T3duZXJUZXh0SW5Qb3BvdmVyIH07XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIHBvcG92ZXIgY29udHJvbCB0byBkaXNwbGF5IGRyYWZ0IGluZm9ybWF0aW9uLlxuXHQgKiBAcGFyYW0gY29udHJvbCBDb250cm9sIHRoYXQgdGhlIHBvcG92ZXIgaXMgdG8gYmUgY3JlYXRlZCBmb3Jcblx0ICogQHJldHVybnMgVGhlIGNyZWF0ZWQgcG9wb3ZlciBjb250cm9sXG5cdCAqL1xuXHRjcmVhdGVQb3BvdmVyKGNvbnRyb2w6IENvbnRyb2wpOiBQb3BvdmVyIHtcblx0XHRjb25zdCBpc0RyYWZ0V2l0aE5vQ2hhbmdlc0JpbmRpbmcgPSBhbmQobm90KEVudGl0eS5Jc0FjdGl2ZSksIGlzRW1wdHkocGF0aEluTW9kZWwoXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9MYXN0Q2hhbmdlRGF0ZVRpbWVcIikpKTtcblx0XHRjb25zdCBkcmFmdFdpdGhOb0NoYW5nZXNUZXh0QmluZGluZyA9XG5cdFx0XHR0aGlzLmRyYWZ0SW5kaWNhdG9yVHlwZSA9PT0gT2JqZWN0TWFya2VyVmlzaWJpbGl0eS5JY29uQW5kVGV4dFxuXHRcdFx0XHQ/IHBhdGhJbk1vZGVsKFwiTV9EUkFGVF9QT1BPVkVSX0FETUlOX0dFTkVSSUNfTE9DS0VEX09CSkVDVF9QT1BPVkVSX1RFWFRcIiwgXCJzYXAuZmUuaTE4blwiKVxuXHRcdFx0XHQ6IHBhdGhJbk1vZGVsKFwiQ19EUkFGVF9QT1BPVkVSX0FETUlOX0RBVEFfRFJBRlRJTkZPX1BPUE9WRVJfTk9fREFUQV9URVhUXCIsIFwic2FwLmZlLmkxOG5cIik7XG5cblx0XHRjb25zdCBpc0RyYWZ0V2l0aENoYW5nZXNCaW5kaW5nID0gYW5kKFxuXHRcdFx0bm90KEVudGl0eS5Jc0FjdGl2ZSksXG5cdFx0XHRub3QoaXNFbXB0eShwYXRoSW5Nb2RlbChcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhL0xhc3RDaGFuZ2VEYXRlVGltZVwiKSkpXG5cdFx0KTtcblx0XHRjb25zdCBkcmFmdFdpdGhDaGFuZ2VzVGV4dEJpbmRpbmcgPSB7XG5cdFx0XHRwYXJ0czogW1xuXHRcdFx0XHR7IHBhdGg6IFwiTV9EUkFGVF9QT1BPVkVSX0FETUlOX0xBU1RfQ0hBTkdFX1RFWFRcIiwgbW9kZWw6IFwic2FwLmZlLmkxOG5cIiB9LFxuXHRcdFx0XHR7IHBhdGg6IFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvTGFzdENoYW5nZURhdGVUaW1lXCIgfVxuXHRcdFx0XSxcblx0XHRcdGZvcm1hdHRlcjogZm9ybWF0TWVzc2FnZVxuXHRcdH07XG5cblx0XHRjb25zdCBpc0FjdGl2ZUluc3RhbmNlQmluZGluZyA9IGFuZChFbnRpdHkuSXNBY3RpdmUsIG5vdChpc0VtcHR5KHBhdGhJbk1vZGVsKFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvTGFzdENoYW5nZURhdGVUaW1lXCIpKSkpO1xuXHRcdGNvbnN0IGFjdGl2ZUluc3RhbmNlVGV4dEJpbmRpbmcgPSB7IC4uLmRyYWZ0V2l0aENoYW5nZXNUZXh0QmluZGluZyB9O1xuXG5cdFx0Y29uc3QgcG9wb3ZlcjogUG9wb3ZlciA9IChcblx0XHRcdDxQb3BvdmVyXG5cdFx0XHRcdHRpdGxlPXt0aGlzLmdldFBvcG92ZXJUaXRsZUJpbmRpbmdFeHByZXNzaW9uKCl9XG5cdFx0XHRcdHNob3dIZWFkZXI9e3RydWV9XG5cdFx0XHRcdHZlcnRpY2FsU2Nyb2xsaW5nPXtmYWxzZX1cblx0XHRcdFx0Y2xhc3M9e1wic2FwVWlDb250ZW50UGFkZGluZ1wifVxuXHRcdFx0XHRwbGFjZW1lbnQ9e1wiQXV0b1wifVxuXHRcdFx0XHRlbmRCdXR0b249e1xuXHRcdFx0XHRcdChcblx0XHRcdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRcdFx0aWNvbj17XCJzYXAtaWNvbjovL2RlY2xpbmVcIn1cblx0XHRcdFx0XHRcdFx0cHJlc3M9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmRyYWZ0UG9wb3Zlcj8uY2xvc2UoKTtcblx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0KSBhcyBCdXR0b25cblx0XHRcdFx0fVxuXHRcdFx0PlxuXHRcdFx0XHQ8VkJveCBjbGFzcz17XCJzYXBVaUNvbnRlbnRQYWRkaW5nXCJ9PlxuXHRcdFx0XHRcdDxWQm94IHZpc2libGU9e2lzRHJhZnRXaXRoTm9DaGFuZ2VzQmluZGluZ30+XG5cdFx0XHRcdFx0XHQ8VGV4dCB0ZXh0PXtkcmFmdFdpdGhOb0NoYW5nZXNUZXh0QmluZGluZ30gLz5cblx0XHRcdFx0XHQ8L1ZCb3g+XG5cdFx0XHRcdFx0PFZCb3ggdmlzaWJsZT17aXNEcmFmdFdpdGhDaGFuZ2VzQmluZGluZ30+XG5cdFx0XHRcdFx0XHQ8VGV4dCB0ZXh0PXtkcmFmdFdpdGhDaGFuZ2VzVGV4dEJpbmRpbmd9IC8+XG5cdFx0XHRcdFx0PC9WQm94PlxuXHRcdFx0XHRcdDxWQm94IHZpc2libGU9e2lzQWN0aXZlSW5zdGFuY2VCaW5kaW5nfT5cblx0XHRcdFx0XHRcdDxUZXh0IHRleHQ9e3RoaXMuZ2V0RHJhZnRPd25lclRleHRCaW5kaW5nRXhwcmVzc2lvbigpfSAvPlxuXHRcdFx0XHRcdFx0PFRleHQgY2xhc3M9e1wic2FwVWlTbWFsbE1hcmdpblRvcFwifSB0ZXh0PXthY3RpdmVJbnN0YW5jZVRleHRCaW5kaW5nfSAvPlxuXHRcdFx0XHRcdDwvVkJveD5cblx0XHRcdFx0PC9WQm94PlxuXHRcdFx0PC9Qb3BvdmVyPlxuXHRcdCkgYXMgUG9wb3ZlcjtcblxuXHRcdENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcoY29udHJvbCkuYWRkRGVwZW5kZW50KHBvcG92ZXIpO1xuXHRcdHJldHVybiBwb3BvdmVyO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXMgcHJlc3Npbmcgb2YgdGhlIG9iamVjdCBtYXJrZXIgYnkgb3BlbmluZyBhIGNvcnJlc3BvbmRpbmcgcG9wb3Zlci5cblx0ICogQHBhcmFtIGV2ZW50IEV2ZW50IG9iamVjdCBwYXNzZWQgZnJvbSB0aGUgcHJlc3MgZXZlbnRcblx0ICovXG5cdG9uT2JqZWN0TWFya2VyUHJlc3NlZChldmVudDogT2JqZWN0TWFya2VyJFByZXNzRXZlbnQpOiB2b2lkIHtcblx0XHRjb25zdCBzb3VyY2UgPSBldmVudC5nZXRTb3VyY2UoKTtcblx0XHRjb25zdCBiaW5kaW5nQ29udGV4dCA9IHNvdXJjZS5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIE9EYXRhVjRDb250ZXh0O1xuXG5cdFx0dGhpcy5kcmFmdFBvcG92ZXIgPz89IHRoaXMuY3JlYXRlUG9wb3Zlcihzb3VyY2UpO1xuXG5cdFx0dGhpcy5kcmFmdFBvcG92ZXIuc2V0QmluZGluZ0NvbnRleHQoYmluZGluZ0NvbnRleHQpO1xuXHRcdHRoaXMuZHJhZnRQb3BvdmVyLm9wZW5CeShzb3VyY2UsIGZhbHNlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb25zdHJ1Y3RzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSBcImFkZGl0aW9uYWxJbmZvXCIgYXR0cmlidXRlIGluIHRoZSBcIkljb25BbmRUZXh0XCIgY2FzZS5cblx0ICogQHJldHVybnMgVGhlIGJpbmRpbmcgZXhwcmVzc2lvblxuXHQgKi9cblx0Z2V0SWNvbkFuZFRleHRBZGRpdGlvbmFsSW5mb0JpbmRpbmdFeHByZXNzaW9uKCk6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+IHtcblx0XHRjb25zdCBkcmFmdEFkbWluaXN0cmF0aXZlRGF0YVByb3BlcnRpZXMgPSB0aGlzLmdldERyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhUHJvcGVydGllcygpO1xuXG5cdFx0Y29uc3Qgb3JCaW5kaW5ncyA9IFtdO1xuXHRcdGlmIChkcmFmdEFkbWluaXN0cmF0aXZlRGF0YVByb3BlcnRpZXM/LmluY2x1ZGVzKFwiSW5Qcm9jZXNzQnlVc2VyRGVzY3JpcHRpb25cIikpIHtcblx0XHRcdG9yQmluZGluZ3MucHVzaChwYXRoSW5Nb2RlbChcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhL0luUHJvY2Vzc0J5VXNlckRlc2NyaXB0aW9uXCIpKTtcblx0XHR9XG5cdFx0b3JCaW5kaW5ncy5wdXNoKHBhdGhJbk1vZGVsKFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvSW5Qcm9jZXNzQnlVc2VyXCIpKTtcblx0XHRpZiAoZHJhZnRBZG1pbmlzdHJhdGl2ZURhdGFQcm9wZXJ0aWVzPy5pbmNsdWRlcyhcIkxhc3RDaGFuZ2VkQnlVc2VyRGVzY3JpcHRpb25cIikpIHtcblx0XHRcdG9yQmluZGluZ3MucHVzaChwYXRoSW5Nb2RlbChcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhL0xhc3RDaGFuZ2VkQnlVc2VyRGVzY3JpcHRpb25cIikpO1xuXHRcdH1cblx0XHRvckJpbmRpbmdzLnB1c2gocGF0aEluTW9kZWwoXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9MYXN0Q2hhbmdlZEJ5VXNlclwiKSk7XG5cblx0XHRyZXR1cm4gaWZFbHNlPHN0cmluZz4oRW50aXR5Lkhhc0RyYWZ0LCBvciguLi5vckJpbmRpbmdzKSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiwgXCJcIik7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgY29udGVudCBvZiB0aGlzIGJ1aWxkaW5nIGJsb2NrIGZvciB0aGUgXCJJY29uQW5kVGV4dFwiIHR5cGUuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250cm9sIHRyZWVcblx0ICovXG5cdGdldEljb25BbmRUZXh0Q29udGVudCgpOiBPYmplY3RNYXJrZXIge1xuXHRcdHRoaXMuaXNIaWRkZW5EcmFmdEVuYWJsZWQgPSAodGhpcy5nZXRBcHBDb21wb25lbnQoKT8uZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKS5nZXRDYXBhYmlsaXRpZXMoKS5IaWRkZW5EcmFmdCBhcyBIaWRkZW5EcmFmdClcblx0XHRcdD8uZW5hYmxlZDtcblx0XHRjb25zdCBvYmpNYXJrZXJUeXBlID0gdGhpcy5pc0hpZGRlbkRyYWZ0RW5hYmxlZCA/IE9iamVjdE1hcmtlclR5cGUuVW5zYXZlZCA6IE9iamVjdE1hcmtlclR5cGUuRHJhZnQ7XG5cdFx0Y29uc3QgdHlwZSA9IGlmRWxzZShcblx0XHRcdG5vdChFbnRpdHkuSXNBY3RpdmUpLFxuXHRcdFx0b2JqTWFya2VyVHlwZSxcblx0XHRcdGlmRWxzZShcblx0XHRcdFx0RW50aXR5Lkhhc0RyYWZ0LFxuXHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0cGF0aEluTW9kZWwoXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9JblByb2Nlc3NCeVVzZXJcIiksXG5cdFx0XHRcdFx0T2JqZWN0TWFya2VyVHlwZS5Mb2NrZWRCeSxcblx0XHRcdFx0XHRpZkVsc2UocGF0aEluTW9kZWwoXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9MYXN0Q2hhbmdlZEJ5VXNlclwiKSwgT2JqZWN0TWFya2VyVHlwZS5VbnNhdmVkQnksIE9iamVjdE1hcmtlclR5cGUuVW5zYXZlZClcblx0XHRcdFx0KSxcblx0XHRcdFx0T2JqZWN0TWFya2VyVHlwZS5GbGFnZ2VkXG5cdFx0XHQpXG5cdFx0KTtcblxuXHRcdGNvbnN0IHZpc2liaWxpdHkgPSBpZkVsc2Uobm90KEVudGl0eS5IYXNEcmFmdCksIE9iamVjdE1hcmtlclZpc2liaWxpdHkuVGV4dE9ubHksIE9iamVjdE1hcmtlclZpc2liaWxpdHkuSWNvbkFuZFRleHQpO1xuXG5cdFx0cmV0dXJuIChcblx0XHRcdDxPYmplY3RNYXJrZXJcblx0XHRcdFx0dHlwZT17dHlwZX1cblx0XHRcdFx0cHJlc3M9e3RoaXMub25PYmplY3RNYXJrZXJQcmVzc2VkLmJpbmQodGhpcyl9XG5cdFx0XHRcdHZpc2liaWxpdHk9e3Zpc2liaWxpdHl9XG5cdFx0XHRcdGFkZGl0aW9uYWxJbmZvPXt0aGlzLmdldEljb25BbmRUZXh0QWRkaXRpb25hbEluZm9CaW5kaW5nRXhwcmVzc2lvbigpfVxuXHRcdFx0XHRhcmlhTGFiZWxsZWRCeT17dGhpcy5hcmlhTGFiZWxsZWRCeSA/IHRoaXMuYXJpYUxhYmVsbGVkQnkgOiBbXX1cblx0XHRcdFx0Y2xhc3M9e3RoaXMuY2xhc3N9XG5cdFx0XHRcdHJlYWN0aXZlQXJlYU1vZGU9e3RoaXMucmVhY3RpdmVBcmVhTW9kZX1cblx0XHRcdC8+XG5cdFx0KSBhcyBPYmplY3RNYXJrZXI7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgY29udGVudCBvZiB0aGlzIGJ1aWxkaW5nIGJsb2NrIGZvciB0aGUgXCJJY29uT25seVwiIHR5cGUuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250cm9sIHRyZWVcblx0ICovXG5cdGdldEljb25Pbmx5Q29udGVudCgpOiBPYmplY3RNYXJrZXIge1xuXHRcdGNvbnN0IHR5cGUgPSBpZkVsc2UoXG5cdFx0XHRub3QoRW50aXR5LklzQWN0aXZlKSxcblx0XHRcdE9iamVjdE1hcmtlclR5cGUuRHJhZnQsXG5cdFx0XHRpZkVsc2UoXG5cdFx0XHRcdEVudGl0eS5IYXNEcmFmdCxcblx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdCEhdGhpcy51c2VkSW5BbmFseXRpY2FsVGFibGUsXG5cdFx0XHRcdFx0T2JqZWN0TWFya2VyVHlwZS5Mb2NrZWQsXG5cdFx0XHRcdFx0aWZFbHNlKHBhdGhJbk1vZGVsKFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvSW5Qcm9jZXNzQnlVc2VyXCIpLCBPYmplY3RNYXJrZXJUeXBlLkxvY2tlZCwgT2JqZWN0TWFya2VyVHlwZS5VbnNhdmVkKVxuXHRcdFx0XHQpLFxuXHRcdFx0XHRPYmplY3RNYXJrZXJUeXBlLkZsYWdnZWRcblx0XHRcdClcblx0XHQpO1xuXG5cdFx0bGV0IHZpc2libGU7XG5cdFx0aWYgKHRoaXMudXNlZEluVGFibGUgPT09IHRydWUpIHtcblx0XHRcdHZpc2libGUgPSBvcihub3QoRW50aXR5LklzQWN0aXZlKSwgYW5kKEVudGl0eS5Jc0FjdGl2ZSwgRW50aXR5Lkhhc0RyYWZ0KSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIElmIEVudGl0eS5IYXNEcmFmdCBpcyBlbXB0eSwgdGhlcmUgaXMgbm8gY29udGV4dCBhdCBhbGwsIHNvIGRvbid0IHNob3cgdGhlIGluZGljYXRvclxuXHRcdFx0dmlzaWJsZSA9IGFuZChcblx0XHRcdFx0bm90KGlzRW1wdHkoRW50aXR5Lkhhc0RyYWZ0KSksXG5cdFx0XHRcdG5vdChVSS5Jc0VkaXRhYmxlKSxcblx0XHRcdFx0RW50aXR5Lkhhc0RyYWZ0LFxuXHRcdFx0XHRub3QocGF0aEluTW9kZWwoXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9EcmFmdElzQ3JlYXRlZEJ5TWVcIikpXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8T2JqZWN0TWFya2VyXG5cdFx0XHRcdHR5cGU9e3R5cGV9XG5cdFx0XHRcdHByZXNzPXshdGhpcy51c2VkSW5BbmFseXRpY2FsVGFibGUgPyB0aGlzLm9uT2JqZWN0TWFya2VyUHJlc3NlZC5iaW5kKHRoaXMpIDogdW5kZWZpbmVkfVxuXHRcdFx0XHR2aXNpYmlsaXR5PXtPYmplY3RNYXJrZXJWaXNpYmlsaXR5Lkljb25Pbmx5fVxuXHRcdFx0XHR2aXNpYmxlPXt2aXNpYmxlfVxuXHRcdFx0XHRhcmlhTGFiZWxsZWRCeT17dGhpcy5hcmlhTGFiZWxsZWRCeSA/IHRoaXMuYXJpYUxhYmVsbGVkQnkgOiBbXX1cblx0XHRcdFx0Y2xhc3M9e3RoaXMuY2xhc3N9XG5cdFx0XHRcdHJlYWN0aXZlQXJlYU1vZGU9e3RoaXMucmVhY3RpdmVBcmVhTW9kZX1cblx0XHRcdC8+XG5cdFx0KSBhcyBPYmplY3RNYXJrZXI7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgY29udGVudCBvZiB0aGlzIGJ1aWxkaW5nIGJsb2NrLlxuXHQgKiBAcmV0dXJucyBUaGUgY29udHJvbCB0cmVlXG5cdCAqL1xuXHRjcmVhdGVDb250ZW50KCk6IE9iamVjdE1hcmtlciB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKHRoaXMuZHJhZnRJbmRpY2F0b3JUeXBlID09PSBPYmplY3RNYXJrZXJWaXNpYmlsaXR5Lkljb25BbmRUZXh0KSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5nZXRJY29uQW5kVGV4dENvbnRlbnQoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHRoaXMuZ2V0SWNvbk9ubHlDb250ZW50KCk7XG5cdFx0fVxuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBdUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFWQSxJQVlxQkEsY0FBYyxJQUFBQyxJQUFBLEdBRGxDQyxjQUFjLENBQUMsNkNBQTZDLENBQUMsRUFBQUMsS0FBQSxHQUs1REMsUUFBUSxDQUFDO0lBQ1RDLElBQUksRUFBRTtFQUNQLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBR0RGLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQUUsS0FBQSxHQUdESCxRQUFRLENBQUM7SUFDVEMsSUFBSSxFQUFFLFFBQVE7SUFDZEcsUUFBUSxFQUFFO0VBQ1gsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FHREwsUUFBUSxDQUFDO0lBQ1RDLElBQUksRUFBRTtFQUNQLENBQUMsQ0FBQyxFQUFBSyxLQUFBLEdBR0ROLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQU0sS0FBQSxHQUdEUCxRQUFRLENBQUM7SUFDVEMsSUFBSSxFQUFFO0VBQ1AsQ0FBQyxDQUFDLEVBQUFPLEtBQUEsR0FHRFIsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRSxRQUFRO0lBQUVRLGFBQWEsRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTO0VB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
|
|
@@ -68,6 +68,9 @@ export default class DraftIndicator extends BuildingBlock<Control> {
|
|
|
68
68
|
})
|
|
69
69
|
public usedInAnalyticalTable?: boolean;
|
|
70
70
|
|
|
71
|
+
@property({ type: "string", allowedValues: ["Inline", "Overlay"] })
|
|
72
|
+
reactiveAreaMode?: "Inline" | "Overlay";
|
|
73
|
+
|
|
71
74
|
draftPopover?: Popover;
|
|
72
75
|
|
|
73
76
|
private isHiddenDraftEnabled?: boolean;
|
|
@@ -345,6 +348,7 @@ export default class DraftIndicator extends BuildingBlock<Control> {
|
|
|
345
348
|
additionalInfo={this.getIconAndTextAdditionalInfoBindingExpression()}
|
|
346
349
|
ariaLabelledBy={this.ariaLabelledBy ? this.ariaLabelledBy : []}
|
|
347
350
|
class={this.class}
|
|
351
|
+
reactiveAreaMode={this.reactiveAreaMode}
|
|
348
352
|
/>
|
|
349
353
|
) as ObjectMarker;
|
|
350
354
|
}
|
|
@@ -389,6 +393,7 @@ export default class DraftIndicator extends BuildingBlock<Control> {
|
|
|
389
393
|
visible={visible}
|
|
390
394
|
ariaLabelledBy={this.ariaLabelledBy ? this.ariaLabelledBy : []}
|
|
391
395
|
class={this.class}
|
|
396
|
+
reactiveAreaMode={this.reactiveAreaMode}
|
|
392
397
|
/>
|
|
393
398
|
) as ObjectMarker;
|
|
394
399
|
}
|