@sapui5/sap.fe.core 1.136.1 → 1.138.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/core/.library +1 -1
- package/src/sap/fe/core/ActionRuntime.js +76 -28
- package/src/sap/fe/core/ActionRuntime.ts +106 -30
- package/src/sap/fe/core/AppComponent.js +11 -1
- package/src/sap/fe/core/AppComponent.ts +10 -0
- package/src/sap/fe/core/AppStateHandler.js +9 -2
- package/src/sap/fe/core/AppStateHandler.ts +8 -2
- package/src/sap/fe/core/CommonUtils.js +15 -3
- package/src/sap/fe/core/CommonUtils.ts +13 -2
- package/src/sap/fe/core/PageController.controller.js +10 -0
- package/src/sap/fe/core/PageController.controller.ts +3 -0
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +3 -4
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +2 -2
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.js +3 -3
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.ts +2 -2
- package/src/sap/fe/core/controllerextensions/EditFlow.js +25 -12
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +27 -16
- package/src/sap/fe/core/controllerextensions/InlineEditFlow.js +27 -41
- package/src/sap/fe/core/controllerextensions/InlineEditFlow.ts +27 -41
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +2 -1
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +2 -1
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +2 -1
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +1 -0
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +4 -4
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +22 -15
- package/src/sap/fe/core/controllerextensions/Paginator.js +20 -5
- package/src/sap/fe/core/controllerextensions/Paginator.ts +19 -0
- package/src/sap/fe/core/controllerextensions/SideEffects.js +3 -2
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +2 -2
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +2 -1
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +1 -0
- package/src/sap/fe/core/controllerextensions/dialog/ODataStrictDialog.js +9 -5
- package/src/sap/fe/core/controllerextensions/dialog/ODataStrictDialog.tsx +8 -3
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js +4 -2
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.tsx +7 -2
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +178 -125
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +222 -174
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +5 -3
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +2 -3
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.js +39 -5
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.ts +51 -11
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.js +16 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.ts +17 -2
- package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.js +88 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.ts +106 -7
- package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationMessage.js +16 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationMessage.ts +15 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationParameters.js +25 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationParameters.ts +24 -0
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +11 -8
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +13 -10
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +7 -4
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +7 -3
- package/src/sap/fe/core/controls/DataWatcher.js +2 -2
- package/src/sap/fe/core/controls/DataWatcher.tsx +1 -1
- package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.js +11 -6
- package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.tsx +13 -9
- package/src/sap/fe/core/controls/inlineEditFlow/InlineEditExitDialog.js +144 -0
- package/src/sap/fe/core/controls/inlineEditFlow/{BeforeNavigationDialog.tsx → InlineEditExitDialog.tsx} +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +4 -0
- package/src/sap/fe/core/converters/MetaModelConverter.js +3 -2
- package/src/sap/fe/core/converters/MetaModelConverter.ts +12 -4
- package/src/sap/fe/core/converters/controls/Common/Action.js +42 -5
- package/src/sap/fe/core/converters/controls/Common/Action.ts +42 -5
- package/src/sap/fe/core/converters/controls/Common/Chart.js +4 -1
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +2 -1
- package/src/sap/fe/core/converters/controls/Common/Table.js +46 -13
- package/src/sap/fe/core/converters/controls/Common/Table.ts +50 -11
- package/src/sap/fe/core/converters/controls/Common/table/Columns.js +11 -10
- package/src/sap/fe/core/converters/controls/Common/table/Columns.ts +13 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +2 -2
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +2 -1
- package/src/sap/fe/core/fpm/manifest.json +1 -1
- package/src/sap/fe/core/helpers/DeleteHelper.js +9 -9
- package/src/sap/fe/core/helpers/DeleteHelper.ts +8 -9
- package/src/sap/fe/core/helpers/FPMHelper.js +2 -2
- package/src/sap/fe/core/helpers/FPMHelper.ts +1 -1
- package/src/sap/fe/core/helpers/ModelHelper.js +4 -4
- package/src/sap/fe/core/helpers/ModelHelper.ts +8 -4
- package/src/sap/fe/core/helpers/PasteHelper.js +2 -2
- package/src/sap/fe/core/helpers/PasteHelper.ts +1 -1
- package/src/sap/fe/core/library.js +33 -4
- package/src/sap/fe/core/library.ts +33 -2
- package/src/sap/fe/core/messagebundle.properties +18 -2
- package/src/sap/fe/core/messagebundle_ar.properties +3 -2
- package/src/sap/fe/core/messagebundle_bg.properties +2 -1
- package/src/sap/fe/core/messagebundle_ca.properties +2 -1
- package/src/sap/fe/core/messagebundle_cnr.properties +2 -1
- package/src/sap/fe/core/messagebundle_cs.properties +4 -3
- package/src/sap/fe/core/messagebundle_cy.properties +2 -1
- package/src/sap/fe/core/messagebundle_da.properties +2 -1
- package/src/sap/fe/core/messagebundle_de.properties +8 -7
- package/src/sap/fe/core/messagebundle_el.properties +2 -1
- package/src/sap/fe/core/messagebundle_en.properties +2 -1
- package/src/sap/fe/core/messagebundle_en_GB.properties +2 -1
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +2 -1
- package/src/sap/fe/core/messagebundle_es.properties +5 -4
- package/src/sap/fe/core/messagebundle_es_MX.properties +2 -1
- package/src/sap/fe/core/messagebundle_et.properties +2 -1
- package/src/sap/fe/core/messagebundle_fi.properties +2 -1
- package/src/sap/fe/core/messagebundle_fr.properties +2 -1
- package/src/sap/fe/core/messagebundle_fr_CA.properties +2 -1
- package/src/sap/fe/core/messagebundle_hi.properties +2 -1
- package/src/sap/fe/core/messagebundle_hr.properties +2 -1
- package/src/sap/fe/core/messagebundle_hu.properties +2 -1
- package/src/sap/fe/core/messagebundle_id.properties +2 -1
- package/src/sap/fe/core/messagebundle_it.properties +2 -1
- package/src/sap/fe/core/messagebundle_iw.properties +2 -1
- package/src/sap/fe/core/messagebundle_ja.properties +3 -2
- package/src/sap/fe/core/messagebundle_kk.properties +2 -1
- package/src/sap/fe/core/messagebundle_ko.properties +2 -1
- package/src/sap/fe/core/messagebundle_lt.properties +2 -1
- package/src/sap/fe/core/messagebundle_lv.properties +2 -1
- package/src/sap/fe/core/messagebundle_mk.properties +2 -1
- package/src/sap/fe/core/messagebundle_ms.properties +2 -1
- package/src/sap/fe/core/messagebundle_nl.properties +2 -1
- package/src/sap/fe/core/messagebundle_no.properties +3 -2
- package/src/sap/fe/core/messagebundle_pl.properties +2 -1
- package/src/sap/fe/core/messagebundle_pt.properties +2 -1
- package/src/sap/fe/core/messagebundle_pt_PT.properties +2 -1
- package/src/sap/fe/core/messagebundle_ro.properties +2 -1
- package/src/sap/fe/core/messagebundle_ru.properties +2 -1
- package/src/sap/fe/core/messagebundle_sh.properties +2 -1
- package/src/sap/fe/core/messagebundle_sk.properties +2 -1
- package/src/sap/fe/core/messagebundle_sl.properties +2 -1
- package/src/sap/fe/core/messagebundle_sr.properties +2 -1
- package/src/sap/fe/core/messagebundle_sv.properties +2 -1
- package/src/sap/fe/core/messagebundle_th.properties +2 -1
- package/src/sap/fe/core/messagebundle_tr.properties +2 -1
- package/src/sap/fe/core/messagebundle_uk.properties +2 -1
- package/src/sap/fe/core/messagebundle_vi.properties +2 -1
- package/src/sap/fe/core/messagebundle_zh_CN.properties +2 -1
- package/src/sap/fe/core/messagebundle_zh_TW.properties +2 -1
- package/src/sap/fe/core/rootView/RootViewBaseController.js +6 -6
- package/src/sap/fe/core/rootView/RootViewBaseController.ts +5 -5
- package/src/sap/fe/core/services/RoutingServiceFactory.js +3 -3
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +2 -2
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +4 -1
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +3 -0
- package/src/sap/fe/core/services/collaborativeDraftServiceFactory.js +8 -2
- package/src/sap/fe/core/services/collaborativeDraftServiceFactory.ts +7 -1
- package/src/sap/fe/core/templating/EntitySetHelper.js +75 -90
- package/src/sap/fe/core/templating/EntitySetHelper.ts +92 -118
- package/src/sap/fe/core/templating/UIFormatters.js +3 -3
- package/src/sap/fe/core/templating/UIFormatters.ts +1 -2
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +0 -81
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +0 -126
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +0 -10
- package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +0 -2
- package/src/sap/fe/core/controls/inlineEditFlow/BeforeActionDialog.js +0 -68
- package/src/sap/fe/core/controls/inlineEditFlow/BeforeActionDialog.tsx +0 -52
- package/src/sap/fe/core/controls/inlineEditFlow/BeforeNavigationDialog.js +0 -144
|
@@ -620,11 +620,11 @@ function updateMenuButtonVisiblity(IBNActions: UI5Element[]): void {
|
|
|
620
620
|
const menuButtonWithIBNAction: MenuButton[] = [];
|
|
621
621
|
IBNActions.forEach(function (IBNAction) {
|
|
622
622
|
if (IBNAction.isA<MenuButton>("sap.m.MenuItem")) {
|
|
623
|
-
menuButtonWithIBNAction.push(IBNAction.getParent()?.getParent() as MenuButton);
|
|
623
|
+
menuButtonWithIBNAction.push(IBNAction.getParent()?.getParent()?.getParent()?.getParent()?.getParent() as MenuButton);
|
|
624
624
|
}
|
|
625
625
|
});
|
|
626
626
|
menuButtonWithIBNAction.forEach(function (menuAction) {
|
|
627
|
-
const menuItems = menuAction
|
|
627
|
+
const menuItems = menuAction?.getMenu().getItems();
|
|
628
628
|
const visibleMenuItems = menuItems.filter(function (menuItem) {
|
|
629
629
|
return menuItem.getVisible();
|
|
630
630
|
});
|
|
@@ -1482,6 +1482,17 @@ function getConverterContextForPath(
|
|
|
1482
1482
|
return ConverterContext?.createConverterContextForMacro(sEntitySet, oContext || oMetaModel, oDiagnostics, mergeObjects);
|
|
1483
1483
|
}
|
|
1484
1484
|
|
|
1485
|
+
/**
|
|
1486
|
+
* Gets the context of the DraftRoot path.
|
|
1487
|
+
* If a view has been created with the draft Root Path, this method returns its bindingContext.
|
|
1488
|
+
* Where no view is found a new created context is returned.
|
|
1489
|
+
* The new created context request the key of the entity in order to get the Etag of this entity.
|
|
1490
|
+
* @param programmingModel
|
|
1491
|
+
* @param view
|
|
1492
|
+
* @param appComponent
|
|
1493
|
+
* @param bindingParameters
|
|
1494
|
+
* @returns Returns a Promise
|
|
1495
|
+
*/
|
|
1485
1496
|
async function createRootContext(
|
|
1486
1497
|
programmingModel: string,
|
|
1487
1498
|
view: View,
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
|
+
* (c) Copyright 2009-2025 SAP SE. All rights reserved
|
|
4
|
+
*/
|
|
5
|
+
sap.ui.define(["sap/fe/core/PageController"], function (PageController) {
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
return PageController;
|
|
9
|
+
}, false);
|
|
10
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYWdlQ29udHJvbGxlciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiUGFnZUNvbnRyb2xsZXIuY29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5cbmV4cG9ydCBkZWZhdWx0IFBhZ2VDb250cm9sbGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O1NBRWVBLGNBQWM7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -2,10 +2,9 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2025 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/base/Log", "sap/ui/base/
|
|
5
|
+
sap.ui.define(["sap/base/Log", "sap/ui/base/BindingInfo", "sap/ui/core/util/XMLPreprocessor"], function (Log, BindingInfo, XMLPreprocessor) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
var bindingParser = ManagedObject.bindingParser;
|
|
9
8
|
//Trace information
|
|
10
9
|
const aTraceInfo = [
|
|
11
10
|
/* Structure for a macro
|
|
@@ -88,7 +87,7 @@ sap.ui.define(["sap/base/Log", "sap/ui/base/ManagedObject", "sap/ui/core/util/XM
|
|
|
88
87
|
let aContexts;
|
|
89
88
|
const aPromises = [];
|
|
90
89
|
try {
|
|
91
|
-
aContexts =
|
|
90
|
+
aContexts = BindingInfo.parse(sValue) || [];
|
|
92
91
|
} catch (e) {
|
|
93
92
|
aContexts = [];
|
|
94
93
|
}
|
|
@@ -412,4 +411,4 @@ sap.ui.define(["sap/base/Log", "sap/ui/base/ManagedObject", "sap/ui/core/util/XM
|
|
|
412
411
|
getTraceInfo: getTraceInfo
|
|
413
412
|
};
|
|
414
413
|
}, true);
|
|
415
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhVHJhY2VJbmZvIiwidHJhY2VOYW1lc3BhY2UiLCJ4bWxucyIsInRyYWNlSXNPbiIsImxvY2F0aW9uIiwic2VhcmNoIiwiaW5jbHVkZXMiLCJhTmFtZXNwYWNlcyIsIm9DYWxsYmFja3MiLCJmbkNsb25lIiwib09iamVjdCIsIkpTT04iLCJwYXJzZSIsInN0cmluZ2lmeSIsImNvbGxlY3RDb250ZXh0SW5mbyIsInNWYWx1ZSIsIm9Db250ZXh0cyIsIm9WaXNpdG9yIiwib05vZGUiLCJhQ29udGV4dHMiLCJhUHJvbWlzZXMiLCJiaW5kaW5nUGFyc2VyIiwidW5kZWZpbmVkIiwiZSIsIkFycmF5IiwiaXNBcnJheSIsImZpbHRlciIsIm9Db250ZXh0IiwicGF0aCIsInBhcnRzIiwiZm9yRWFjaCIsImFQYXJ0cyIsIm9QYXJ0Q29udGV4dCIsIm9Nb2RlbCIsIm1vZGVsIiwic1NpbXBsZVBhdGgiLCJvUmVhbENvbnRleHQiLCJhSW5uZXJQYXJ0cyIsInNwbGl0IiwiZ2V0Q29udGV4dCIsInZpc2l0b3JSZXN1bHQiLCJnZXRSZXN1bHQiLCJwdXNoIiwidGhlbiIsIm9SZXN1bHQiLCJnZXRNb2RlbCIsImdldE1ldGFkYXRhIiwiZ2V0TmFtZSIsImdldFBhdGgiLCJkYXRhIiwiY2F0Y2giLCJiaW5kaW5nRm9yIiwiZXhjIiwiUHJvbWlzZSIsImFsbCIsImZpbGxBdHRyaWJ1dGVzIiwib1Jlc3VsdHMiLCJvQXR0cmlidXRlcyIsInNOYW1lIiwicmVzdWx0Iiwib3JpZ2luYWxWYWx1ZSIsInJlc29sdmVkVmFsdWUiLCJlcnJvciIsInN0YWNrIiwidG9TdHJpbmciLCJjb2xsZWN0SW5mbyIsImkiLCJhdHRyaWJ1dGVzIiwibGVuZ3RoIiwib0F0dHJpYnV0ZSIsIm5vZGVOYW1lIiwiZ2V0QXR0cmlidXRlIiwicHJvcGVydGllcyIsImNvbnRleHRzIiwicmVzb2x2ZSIsInNDb250cm9sTmFtZSIsImJJc0NvbnRyb2wiLCJ0ZXN0Iiwib1RyYWNlTWV0YWRhdGFDb250ZXh0IiwiaXNFcnJvciIsImNvbnRyb2wiLCJuYW1lc3BhY2VVUkkiLCJtZXRhRGF0YUNvbnRleHRzIiwiZmlyc3RDaGlsZCIsIm93bmVyRG9jdW1lbnQiLCJjaGlsZHJlbiIsImZpbmQiLCJub2RlIiwic3RhcnRzV2l0aCIsInNldEF0dHJpYnV0ZU5TIiwiYlJlbGV2YW50IiwiT2JqZWN0Iiwia2V5cyIsImFzc2lnbiIsInZpZXdJbmZvIiwiZ2V0Vmlld0luZm8iLCJtYWNyb0luZm8iLCJnZXRTZXR0aW5ncyIsInRyYWNlSUQiLCJ2aXNpdEF0dHJpYnV0ZXMiLCJ2aXNpdENoaWxkTm9kZXMiLCJleGNlcHRpb24iLCJYTUxTZXJpYWxpemVyIiwic2VyaWFsaXplVG9TdHJpbmciLCJMb2ciLCJtZXNzYWdlIiwibmFtZXNwYWNlIiwiWE1MUHJlcHJvY2Vzc29yIiwicGx1Z0luIiwiYmluZCIsInRyYWNlTWFjcm9DYWxscyIsIm9NZXRhZGF0YSIsIm1Db250ZXh0cyIsImFNZXRhZGF0YUNvbnRleHRLZXlzIiwibWV0YWRhdGFDb250ZXh0cyIsImFQcm9wZXJ0aWVzIiwibWFjcm8iLCJuYW1lIiwic0tleSIsIm9NZXRhRGF0YUNvbnRleHQiLCJvUHJvcGVydHkiLCJ0aGlzIiwiZ2V0T2JqZWN0IiwicGFyZW50TWFjcm9JRCIsIm1hY3JvSUQiLCJjb250ZXh0UGF0aCIsImdldFRyYWNlSW5mbyIsImlkIiwiYUVycm9ycyIsInRyYWNlSW5mbyIsImlzVHJhY2VJbmZvQWN0aXZlIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJUcmFjZUluZm8udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSB7XG5cdElWaXNpdG9yQ2FsbGJhY2ssXG5cdFRyYW5zZm9ybWVkQnVpbGRpbmdCbG9ja01ldGFkYXRhXG59IGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy90ZW1wbGF0aW5nL0J1aWxkaW5nQmxvY2tUZW1wbGF0ZVByb2Nlc3NvclwiO1xuaW1wb3J0IHsgYmluZGluZ1BhcnNlciB9IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgWE1MUHJlcHJvY2Vzc29yIGZyb20gXCJzYXAvdWkvY29yZS91dGlsL1hNTFByZXByb2Nlc3NvclwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbi8vVHJhY2UgaW5mb3JtYXRpb25cbmNvbnN0IGFUcmFjZUluZm86IFRyYWNlTWV0YWRhdGFDb250ZXh0W10gPSBbXG5cdC8qIFN0cnVjdHVyZSBmb3IgYSBtYWNyb1xuXHRcdFx0e1xuXHRcdFx0XHRtYWNybzogJycsIC8vbmFtZSBvZiBtYWNyb1xuXHRcdFx0XHRtZXRhRGF0YUNvbnRleHRzOiBbIC8vUHJvcGVydGllcyBvZiB0eXBlIHNhcC51aS5tb2RlbC5Db250ZXh0XG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bmFtZTogJycsIC8vY29udGV4dCBwcm9wZXJ0eSBuYW1lIC8ga2V5XG5cdFx0XHRcdFx0XHRwYXRoOiAnJywgLy9mcm9tIG9Db250ZXh0LmdldFBhdGgoKVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XSxcblx0XHRcdFx0cHJvcGVydGllczogeyAvLyBPdGhlciBwcm9wZXJ0aWVzIHdoaWNoIGJlY29tZSBwYXJ0IG9mIHt0aGlzPn1cblx0XHRcdFx0XHRwcm9wZXJ0eTE6IHZhbHVlLFxuXHRcdFx0XHRcdHByb3BlcnR5MjogdmFsdWVcblx0XHRcdFx0fVxuXHRcdFx0XHR2aWV3SW5mbzoge1xuXHRcdFx0XHRcdHZpZXdJbmZvOiB7fSAvLyBBcyBzcGVjaWZpZWQgaW4gdmlldyBvciBmcmFnbWVudCBjcmVhdGlvblxuXHRcdFx0XHR9LFxuXHRcdFx0XHR0cmFjZUlEOiB0aGlzLmluZGV4LCAvL0lEIGZvciB0aGlzIHRyYWNlIGluZm9ybWF0aW9uLFxuXHRcdFx0XHRtYWNyb0luZm86IHtcblx0XHRcdFx0XHRtYWNyb0lEOiBpbmRleCwgLy8gdHJhY2VJRCBvZiB0aGlzIG1hY3JvIChyZWR1bmRhbnQgZm9yIG1hY3Jvcylcblx0XHRcdFx0XHRwYXJlbnRNYWNyb0lELCBpbmRleCAvLyB0cmFjZUlEIG9mIHRoZSBwYXJlbnQgbWFjcm8gKGlmIGl0IGhhcyBhIHBhcmVudClcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Ly8gU3RydWN0dXJlIGZvciBhIGNvbnRyb2xcblx0XHRcdHtcblx0XHRcdFx0Y29udHJvbDogJycsIC8vY29udHJvbCBjbGFzc1xuXHRcdFx0XHRwcm9wZXJ0aWVzOiB7IC8vIE90aGVyIHByb3BlcnRpZXMgd2hpY2ggYmVjb21lIHBhcnQgb2Yge3RoaXM+fVxuXHRcdFx0XHRcdHByb3BlcnR5MToge1xuXHRcdFx0XHRcdFx0b3JpZ2luYWxWYWx1ZTogJycsIC8vVmFsdWUgYmVmb3JlIHRlbXBsYXRpbmdcblx0XHRcdFx0XHRcdHJlc29sdmVkVmFsdWU6ICcnIC8vVmFsdWUgYWZ0ZXIgdGVtcGxhdGluZ1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRjb250ZXh0czogeyAvL01vZGVscyBhbmQgQ29udGV4dHMgdXNlZCBkdXJpbmcgdGVtcGxhdGluZ1xuXHRcdFx0XHRcdC8vIE1vZGVsIG9yIGNvbnRleHQgbmFtZSB1c2VkIGZvciB0aGlzIGNvbnRyb2xcblx0XHRcdFx0XHRtb2RlbE5hbWUxOiB7IC8vIEZvciBPRGF0YU1ldGFNb2RlbFxuXHRcdFx0XHRcdFx0cGF0aDE6IHtcblx0XHRcdFx0XHRcdFx0cGF0aDogJycsIC8vYWJzb2x1dCBwYXRoIHdpdGhpbiBtZXRhbW9kZWxcblx0XHRcdFx0XHRcdFx0ZGF0YTogJycsIC8vZGF0YSBvZiBwYXRoIHVubGVzcyB0eXBlIE9iamVjdFxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdG1vZGVsTmFtZTI6IHtcblx0XHRcdFx0XHRcdC8vIGZvciBvdGhlciBtb2RlbCB0eXBlc1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRwcm9wZXJ0eTE6IHZhbHVlLFxuXHRcdFx0XHRcdFx0XHRwcm9wZXJ0eTI6IHZhbHVlXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQvLyBJbiBjYXNlIGJpbmRpbmcgY2Fubm90IGJlIHJlc29sdmVkIC0+IG1hcmsgYXMgcnVudGltZSBiaW5kaW5nXG5cdFx0XHRcdFx0XHQvLyBUaGlzIGlzIG5vdCBhbHdheXMgdHJ1ZSwgZS5nLiBpbiBjYXNlIHRoZSBwYXRoIGlzIG1ldGFtb2RlbHBhdGhcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XCJiaW5kaW5nRm9yXCI6IFwiUnVudGltZVwiXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHR2aWV3SW5mbzoge1xuXHRcdFx0XHRcdHZpZXdJbmZvOiB7fSAvLyBBcyBzcGVjaWZpZWQgaW4gdmlldyBvciBmcmFnbWVudCBjcmVhdGlvblxuXHRcdFx0XHR9LFxuXHRcdFx0XHRtYWNyb0luZm86IHtcblx0XHRcdFx0XHRtYWNyb0lEOiBpbmRleCwgLy8gdHJhY2VJRCBvZiB0aGUgbWFjcm8gdGhhdCBjcmVhdGVkIHRoaXMgY29udHJvbFxuXHRcdFx0XHRcdHBhcmVudE1hY3JvSUQsIGluZGV4IC8vIHRyYWNlSUQgb2YgdGhlIG1hY3JvJ3MgcGFyZW50IG1hY3JvXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHRyYWNlSUQ6IHRoaXMuaW5kZXggLy9JRCBmb3IgdGhpcyB0cmFjZSBpbmZvcm1hdGlvblxuXHRcdFx0fVxuXHRcdFx0Ki9cbl07XG5jb25zdCB0cmFjZU5hbWVzcGFjZSA9IFwiaHR0cDovL3NjaGVtYXMuc2FwLmNvbS9zYXB1aTUvZXh0ZW5zaW9uL3NhcC5mZS5pbmZvLzFcIixcblx0eG1sbnMgPSBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvXCIsXG5cdC8qKlxuXHQgKiBTd2l0Y2ggaXMgY3VycmVudGx5IGJhc2VkIG9uIHVybCBwYXJhbWV0ZXJcblx0ICovXG5cdHRyYWNlSXNPbiA9IGxvY2F0aW9uLnNlYXJjaC5pbmNsdWRlcyhcInNhcC11aS14eC1mZVRyYWNlSW5mbz10cnVlXCIpLFxuXHQvKipcblx0ICogU3BlY2lmeSBhbGwgbmFtZXNwYWNlcyB0aGF0IHNoYWxsIGJlIHRyYWNlZCBkdXJpbmcgdGVtcGxhdGluZ1xuXHQgKi9cblx0YU5hbWVzcGFjZXMgPSBbXG5cdFx0XCJzYXAubVwiLFxuXHRcdFwic2FwLnV4YXBcIixcblx0XHRcInNhcC51aS51bmlmaWVkXCIsXG5cdFx0XCJzYXAuZlwiLFxuXHRcdFwic2FwLnVpLnRhYmxlXCIsXG5cdFx0XCJzYXAuc3VpdGUudWkubWljcm9jaGFydFwiLFxuXHRcdFwic2FwLnVpLmxheW91dC5mb3JtXCIsXG5cdFx0XCJzYXAudWkubWRjXCIsXG5cdFx0XCJzYXAudWkubWRjLmxpbmtcIixcblx0XHRcInNhcC51aS5tZGMuZmllbGRcIixcblx0XHRcInNhcC5mZS5mcG1cIlxuXHRdLFxuXHRvQ2FsbGJhY2tzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXG5mdW5jdGlvbiBmbkNsb25lKG9PYmplY3Q6IG9iamVjdCk6IHVua25vd24ge1xuXHRyZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvT2JqZWN0KSk7XG59XG50eXBlIFRyYWNlQ29udGV4dCA9IHtcblx0cGF0aDogc3RyaW5nO1xuXHRtb2RlbDogc3RyaW5nO1xuXHRwYXJ0czogVHJhY2VDb250ZXh0W107XG59O1xuYXN5bmMgZnVuY3Rpb24gY29sbGVjdENvbnRleHRJbmZvKFxuXHRzVmFsdWU6IHN0cmluZyB8IG51bGwsXG5cdG9Db250ZXh0czogUmVjb3JkPHN0cmluZywgVHJhY2VDb250ZXh0Pixcblx0b1Zpc2l0b3I6IElWaXNpdG9yQ2FsbGJhY2ssXG5cdG9Ob2RlOiBFbGVtZW50XG4pOiBQcm9taXNlPHVua25vd25bXT4ge1xuXHRsZXQgYUNvbnRleHRzOiBUcmFjZUNvbnRleHRbXTtcblx0Y29uc3QgYVByb21pc2VzOiBQcm9taXNlPHVua25vd24+W10gPSBbXTtcblx0dHJ5IHtcblx0XHRhQ29udGV4dHMgPSBiaW5kaW5nUGFyc2VyKHNWYWx1ZSwgdW5kZWZpbmVkLCBmYWxzZSwgdHJ1ZSkgfHwgW107XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRhQ29udGV4dHMgPSBbXTtcblx0fVxuXHRhQ29udGV4dHMgPSBBcnJheS5pc0FycmF5KGFDb250ZXh0cykgPyBhQ29udGV4dHMgOiBbYUNvbnRleHRzXTtcblx0YUNvbnRleHRzXG5cdFx0LmZpbHRlcihmdW5jdGlvbiAob0NvbnRleHQpIHtcblx0XHRcdHJldHVybiBvQ29udGV4dC5wYXRoIHx8IG9Db250ZXh0LnBhcnRzO1xuXHRcdH0pXG5cdFx0LmZvckVhY2goZnVuY3Rpb24gKG9Db250ZXh0OiBUcmFjZUNvbnRleHQpIHtcblx0XHRcdGNvbnN0IGFQYXJ0cyA9IG9Db250ZXh0LnBhcnRzIHx8IFtvQ29udGV4dF07XG5cdFx0XHRhUGFydHNcblx0XHRcdFx0LmZpbHRlcihmdW5jdGlvbiAob1BhcnRDb250ZXh0OiBUcmFjZUNvbnRleHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gb1BhcnRDb250ZXh0LnBhdGg7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5mb3JFYWNoKGZ1bmN0aW9uIChvUGFydENvbnRleHQ6IFRyYWNlQ29udGV4dCkge1xuXHRcdFx0XHRcdGNvbnN0IG9Nb2RlbDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSAob0NvbnRleHRzW29QYXJ0Q29udGV4dC5tb2RlbF0gPSBvQ29udGV4dHNbb1BhcnRDb250ZXh0Lm1vZGVsXSB8fCB7fSk7XG5cdFx0XHRcdFx0Y29uc3Qgc1NpbXBsZVBhdGggPSAhb1BhcnRDb250ZXh0LnBhdGguaW5jbHVkZXMoXCI+XCIpXG5cdFx0XHRcdFx0XHQ/IChvUGFydENvbnRleHQubW9kZWwgJiYgYCR7b1BhcnRDb250ZXh0Lm1vZGVsfT5gKSArIG9QYXJ0Q29udGV4dC5wYXRoXG5cdFx0XHRcdFx0XHQ6IG9QYXJ0Q29udGV4dC5wYXRoO1xuXHRcdFx0XHRcdGxldCBvUmVhbENvbnRleHQ6IENvbnRleHQgfCB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0bGV0IGFJbm5lclBhcnRzO1xuXG5cdFx0XHRcdFx0aWYgKHR5cGVvZiBvUGFydENvbnRleHQubW9kZWwgPT09IFwidW5kZWZpbmVkXCIgJiYgc1NpbXBsZVBhdGguaW5jbHVkZXMoXCI+XCIpKSB7XG5cdFx0XHRcdFx0XHRhSW5uZXJQYXJ0cyA9IHNTaW1wbGVQYXRoLnNwbGl0KFwiPlwiKTtcblx0XHRcdFx0XHRcdG9QYXJ0Q29udGV4dC5tb2RlbCA9IGFJbm5lclBhcnRzWzBdO1xuXHRcdFx0XHRcdFx0b1BhcnRDb250ZXh0LnBhdGggPSBhSW5uZXJQYXJ0c1sxXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdG9SZWFsQ29udGV4dCA9IG9WaXNpdG9yLmdldENvbnRleHQoc1NpbXBsZVBhdGgpO1xuXG5cdFx0XHRcdFx0XHRjb25zdCB2aXNpdG9yUmVzdWx0ID0gb1Zpc2l0b3IuZ2V0UmVzdWx0KGB7JHtzU2ltcGxlUGF0aH19YCwgb05vZGUpITtcblx0XHRcdFx0XHRcdGFQcm9taXNlcy5wdXNoKFxuXHRcdFx0XHRcdFx0XHR2aXNpdG9yUmVzdWx0XG5cdFx0XHRcdFx0XHRcdFx0LnRoZW4oZnVuY3Rpb24gKG9SZXN1bHQ6IENvbnRleHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChvUmVhbENvbnRleHQ/LmdldE1vZGVsKCkuZ2V0TWV0YWRhdGEoKS5nZXROYW1lKCkgPT09IFwic2FwLnVpLm1vZGVsLmpzb24uSlNPTk1vZGVsXCIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFvUmVzdWx0LmdldE1vZGVsKCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvTW9kZWxbb1BhcnRDb250ZXh0LnBhdGhdID0gb1Jlc3VsdDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvTW9kZWxbb1BhcnRDb250ZXh0LnBhdGhdID0gYENvbnRleHQgZnJvbSAke29SZXN1bHQuZ2V0UGF0aCgpfWA7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG9Nb2RlbFtvUGFydENvbnRleHQucGF0aF0gPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cGF0aDogb1JlYWxDb250ZXh0IS5nZXRQYXRoKCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGF0YTogdHlwZW9mIG9SZXN1bHQgPT09IFwib2JqZWN0XCIgPyBcIltjdHJsL2NtZC1jbGlja10gb24gcGF0aCB0byBzZWUgZGF0YVwiIDogb1Jlc3VsdFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0LmNhdGNoKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdG9Nb2RlbFtvUGFydENvbnRleHQucGF0aF0gPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJpbmRpbmdGb3I6IFwiUnVudGltZVwiXG5cdFx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKGV4Yykge1xuXHRcdFx0XHRcdFx0b01vZGVsW29QYXJ0Q29udGV4dC5wYXRoXSA9IHtcblx0XHRcdFx0XHRcdFx0YmluZGluZ0ZvcjogXCJSdW50aW1lXCJcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHR9KTtcblx0cmV0dXJuIFByb21pc2UuYWxsKGFQcm9taXNlcyk7XG59XG5hc3luYyBmdW5jdGlvbiBmaWxsQXR0cmlidXRlcyhcblx0b1Jlc3VsdHM6IFByb21pc2U8dW5rbm93bj4sXG5cdG9BdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcblx0c05hbWU6IHN0cmluZyxcblx0c1ZhbHVlOiB1bmtub3duXG4pOiBQcm9taXNlPHZvaWQ+IHtcblx0cmV0dXJuIG9SZXN1bHRzXG5cdFx0LnRoZW4oZnVuY3Rpb24gKHJlc3VsdDogdW5rbm93bikge1xuXHRcdFx0b0F0dHJpYnV0ZXNbc05hbWVdID1cblx0XHRcdFx0c1ZhbHVlICE9PSByZXN1bHRcblx0XHRcdFx0XHQ/IHtcblx0XHRcdFx0XHRcdFx0b3JpZ2luYWxWYWx1ZTogc1ZhbHVlLFxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlZFZhbHVlOiByZXN1bHRcblx0XHRcdFx0XHQgIH1cblx0XHRcdFx0XHQ6IHNWYWx1ZTtcblx0XHRcdHJldHVybjtcblx0XHR9KVxuXHRcdC5jYXRjaChmdW5jdGlvbiAoZTogdW5rbm93bikge1xuXHRcdFx0Y29uc3QgZXJyb3IgPSBlIGFzIEVycm9yO1xuXHRcdFx0b0F0dHJpYnV0ZXNbc05hbWVdID0ge1xuXHRcdFx0XHRvcmlnaW5hbFZhbHVlOiBzVmFsdWUsXG5cdFx0XHRcdGVycm9yOiAoZXJyb3Iuc3RhY2sgJiYgZXJyb3Iuc3RhY2sudG9TdHJpbmcoKSkgfHwgZVxuXHRcdFx0fTtcblx0XHR9KTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGNvbGxlY3RJbmZvKG9Ob2RlOiBFbGVtZW50LCBvVmlzaXRvcjogSVZpc2l0b3JDYWxsYmFjayk6IFByb21pc2U8eyBwcm9wZXJ0aWVzOiB7fTsgY29udGV4dHM6IHt9IH0+IHtcblx0Y29uc3Qgb0F0dHJpYnV0ZXMgPSB7fTtcblx0Y29uc3QgYVByb21pc2VzID0gW107XG5cdGNvbnN0IG9Db250ZXh0cyA9IHt9O1xuXHRsZXQgb1Jlc3VsdHM7XG5cdGZvciAobGV0IGkgPSBvTm9kZS5hdHRyaWJ1dGVzLmxlbmd0aCA+Pj4gMDsgaS0tOyApIHtcblx0XHRjb25zdCBvQXR0cmlidXRlID0gb05vZGUuYXR0cmlidXRlc1tpXSxcblx0XHRcdHNOYW1lID0gb0F0dHJpYnV0ZS5ub2RlTmFtZSxcblx0XHRcdHNWYWx1ZSA9IG9Ob2RlLmdldEF0dHJpYnV0ZShzTmFtZSkhO1xuXHRcdGlmICghW1wiY29yZTpyZXF1aXJlXCJdLmluY2x1ZGVzKHNOYW1lKSkge1xuXHRcdFx0YVByb21pc2VzLnB1c2goY29sbGVjdENvbnRleHRJbmZvKHNWYWx1ZSwgb0NvbnRleHRzLCBvVmlzaXRvciwgb05vZGUpKTtcblx0XHRcdG9SZXN1bHRzID0gb1Zpc2l0b3IuZ2V0UmVzdWx0KHNWYWx1ZSwgb05vZGUpO1xuXHRcdFx0aWYgKG9SZXN1bHRzKSB7XG5cdFx0XHRcdGFQcm9taXNlcy5wdXNoKGZpbGxBdHRyaWJ1dGVzKG9SZXN1bHRzLCBvQXR0cmlidXRlcywgc05hbWUsIHNWYWx1ZSkpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly9XaGF0XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdHJldHVybiBQcm9taXNlLmFsbChhUHJvbWlzZXMpLnRoZW4oZnVuY3Rpb24gKCkge1xuXHRcdHJldHVybiB7IHByb3BlcnRpZXM6IG9BdHRyaWJ1dGVzLCBjb250ZXh0czogb0NvbnRleHRzIH07XG5cdH0pO1xufVxuZXhwb3J0IHR5cGUgVHJhY2VNZXRhZGF0YUNvbnRleHQgPSB7XG5cdGlzRXJyb3I6IGJvb2xlYW47XG5cdG1hY3JvPzogc3RyaW5nO1xuXHRjb250cm9sPzogc3RyaW5nO1xuXHRuYW1lPzogc3RyaW5nO1xuXHRjb250ZXh0UGF0aD86IHN0cmluZztcblx0dmlld0luZm8/OiB1bmtub3duO1xuXHRtYWNyb0luZm8/OiBNYWNyb0luZm87XG5cdHRyYWNlSUQ/OiBudW1iZXI7XG5cdGVycm9yPzoge1xuXHRcdGV4Y2VwdGlvbjogRXJyb3I7XG5cdFx0bm9kZTogc3RyaW5nO1xuXHR9O1xuXHRtZXRhRGF0YUNvbnRleHRzOiB7IG5hbWU6IHN0cmluZzsgcGF0aDogc3RyaW5nIH1bXTtcblx0cHJvcGVydGllczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59O1xuYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZShvTm9kZTogRWxlbWVudCwgb1Zpc2l0b3I6IElWaXNpdG9yQ2FsbGJhY2spOiBQcm9taXNlPHZvaWQ+IHtcblx0dHJ5IHtcblx0XHRjb25zdCBzQ29udHJvbE5hbWUgPSBvTm9kZS5ub2RlTmFtZS5zcGxpdChcIjpcIilbMV0gfHwgb05vZGUubm9kZU5hbWUsXG5cdFx0XHRiSXNDb250cm9sID0gL15bQS1aXS8udGVzdChzQ29udHJvbE5hbWUpLFxuXHRcdFx0b1RyYWNlTWV0YWRhdGFDb250ZXh0OiBUcmFjZU1ldGFkYXRhQ29udGV4dCA9IHtcblx0XHRcdFx0aXNFcnJvcjogZmFsc2UsXG5cdFx0XHRcdGNvbnRyb2w6IGAke29Ob2RlLm5hbWVzcGFjZVVSSX0uJHtvTm9kZS5ub2RlTmFtZS5zcGxpdChcIjpcIilbMV0gfHwgb05vZGUubm9kZU5hbWV9YCxcblx0XHRcdFx0bWV0YURhdGFDb250ZXh0czogW10sXG5cdFx0XHRcdHByb3BlcnRpZXM6IHt9XG5cdFx0XHR9O1xuXG5cdFx0aWYgKGJJc0NvbnRyb2wpIHtcblx0XHRcdGNvbnN0IGZpcnN0Q2hpbGQgPSBbLi4uKG9Ob2RlLm93bmVyRG9jdW1lbnQuY2hpbGRyZW4gYXMgdW5rbm93biBhcyBFbGVtZW50W10pXS5maW5kKChub2RlKSA9PiAhbm9kZS5ub2RlTmFtZS5zdGFydHNXaXRoKFwiI1wiKSk7XG5cdFx0XHRpZiAoZmlyc3RDaGlsZCAmJiAhZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoXCJ4bWxuczp0cmFjZVwiKSkge1xuXHRcdFx0XHRmaXJzdENoaWxkLnNldEF0dHJpYnV0ZU5TKHhtbG5zLCBcInhtbG5zOnRyYWNlXCIsIHRyYWNlTmFtZXNwYWNlKTtcblx0XHRcdFx0Zmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGVOUyh0cmFjZU5hbWVzcGFjZSwgXCJ0cmFjZTppc1wiLCBcIm9uXCIpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGF3YWl0IGNvbGxlY3RJbmZvKG9Ob2RlLCBvVmlzaXRvcilcblx0XHRcdFx0LnRoZW4oYXN5bmMgZnVuY3Rpb24gKHJlc3VsdDogeyBwcm9wZXJ0aWVzOiB7fTsgY29udGV4dHM6IHt9IH0pOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRcdFx0XHRjb25zdCBiUmVsZXZhbnQgPSBPYmplY3Qua2V5cyhyZXN1bHQuY29udGV4dHMpLmxlbmd0aCA+IDA7IC8vSWYgbm8gY29udGV4dCB3YXMgdXNlZCBpdCBpcyBub3QgcmVsZXZhbnQgc28gd2UgaWdub3JlIE9iamVjdC5rZXlzKHJlc3VsdC5wcm9wZXJ0aWVzKS5sZW5ndGhcblx0XHRcdFx0XHRpZiAoYlJlbGV2YW50KSB7XG5cdFx0XHRcdFx0XHRPYmplY3QuYXNzaWduKG9UcmFjZU1ldGFkYXRhQ29udGV4dCwgcmVzdWx0KTtcblx0XHRcdFx0XHRcdG9UcmFjZU1ldGFkYXRhQ29udGV4dC52aWV3SW5mbyA9IG9WaXNpdG9yLmdldFZpZXdJbmZvKCk7XG5cdFx0XHRcdFx0XHRvVHJhY2VNZXRhZGF0YUNvbnRleHQubWFjcm9JbmZvID0gb1Zpc2l0b3IuZ2V0U2V0dGluZ3MoKVtcIl9tYWNyb0luZm9cIl07XG5cdFx0XHRcdFx0XHRvVHJhY2VNZXRhZGF0YUNvbnRleHQudHJhY2VJRCA9IGFUcmFjZUluZm8ubGVuZ3RoO1xuXHRcdFx0XHRcdFx0b05vZGUuc2V0QXR0cmlidXRlTlModHJhY2VOYW1lc3BhY2UsIFwidHJhY2U6dHJhY2VJRFwiLCBvVHJhY2VNZXRhZGF0YUNvbnRleHQudHJhY2VJRC50b1N0cmluZygpKTtcblx0XHRcdFx0XHRcdGFUcmFjZUluZm8ucHVzaChvVHJhY2VNZXRhZGF0YUNvbnRleHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gb1Zpc2l0b3IudmlzaXRBdHRyaWJ1dGVzKG9Ob2RlKTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LnRoZW4oYXN5bmMgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdHJldHVybiBvVmlzaXRvci52aXNpdENoaWxkTm9kZXMob05vZGUpO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKGV4YzogdW5rbm93bikge1xuXHRcdFx0XHRcdG9UcmFjZU1ldGFkYXRhQ29udGV4dC5lcnJvciA9IHtcblx0XHRcdFx0XHRcdGV4Y2VwdGlvbjogZXhjIGFzIEVycm9yLFxuXHRcdFx0XHRcdFx0bm9kZTogbmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyhvTm9kZSlcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0YXdhaXQgb1Zpc2l0b3IudmlzaXRBdHRyaWJ1dGVzKG9Ob2RlKTtcblx0XHRcdGF3YWl0IG9WaXNpdG9yLnZpc2l0Q2hpbGROb2RlcyhvTm9kZSk7XG5cdFx0fVxuXHR9IGNhdGNoIChleGM6IHVua25vd24pIHtcblx0XHRMb2cuZXJyb3IoYEVycm9yIHdoaWxlIHRyYWNpbmcgJyR7b05vZGU/Lm5vZGVOYW1lfSc6ICR7KGV4YyBhcyBFcnJvcikubWVzc2FnZX1gLCBcIlRyYWNlSW5mb1wiKTtcblx0XHRyZXR1cm4gb1Zpc2l0b3IudmlzaXRBdHRyaWJ1dGVzKG9Ob2RlKS50aGVuKGFzeW5jIGZ1bmN0aW9uICgpIHtcblx0XHRcdHJldHVybiBvVmlzaXRvci52aXNpdENoaWxkTm9kZXMob05vZGUpO1xuXHRcdH0pO1xuXHR9XG59XG4vKipcbiAqIFJlZ2lzdGVyIHBhdGgtdGhyb3VnaCBYTUxQcmVwcm9jZXNzb3IgcGx1Z2luIGZvciBhbGwgbmFtZXNwYWNlc1xuICogZ2l2ZW4gYWJvdmUgaW4gYU5hbWVzcGFjZXNcbiAqL1xuaWYgKHRyYWNlSXNPbikge1xuXHRhTmFtZXNwYWNlcy5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lc3BhY2U6IHN0cmluZykge1xuXHRcdG9DYWxsYmFja3NbbmFtZXNwYWNlXSA9IFhNTFByZXByb2Nlc3Nvci5wbHVnSW4ocmVzb2x2ZS5iaW5kKG5hbWVzcGFjZSksIG5hbWVzcGFjZSk7XG5cdH0pO1xufVxuXG4vKipcbiAqIEFkZHMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHByb2Nlc3Npbmcgb2Ygb25lIG1hY3JvIHRvIHRoZSBjb2xsZWN0aW9uLlxuICogQHBhcmFtIHNOYW1lIE1hY3JvIGNsYXNzIG5hbWVcbiAqIEBwYXJhbSBvTWV0YWRhdGEgRGVmaW5pdGlvbiBmcm9tIG1hY3JvXG4gKiBAcGFyYW0gbUNvbnRleHRzIEF2YWlsYWJsZSBuYW1lZCBjb250ZXh0c1xuICogQHBhcmFtIG9Ob2RlXG4gKiBAcGFyYW0gb1Zpc2l0b3JcbiAqIEByZXR1cm5zIFRoZSB0cmFjZWQgbWV0YWRhdGEgY29udGV4dFxuICovXG5leHBvcnQgdHlwZSBNYWNyb0luZm8gPSB7XG5cdHBhcmVudE1hY3JvSUQ6IHN0cmluZztcblx0bWFjcm9JRDogc3RyaW5nO1xufTtcbmZ1bmN0aW9uIHRyYWNlTWFjcm9DYWxscyhcblx0c05hbWU6IHN0cmluZyxcblx0b01ldGFkYXRhOiBUcmFuc2Zvcm1lZEJ1aWxkaW5nQmxvY2tNZXRhZGF0YSxcblx0bUNvbnRleHRzOiBSZWNvcmQ8c3RyaW5nLCBDb250ZXh0Pixcblx0b05vZGU6IEVsZW1lbnQsXG5cdG9WaXNpdG9yOiBJVmlzaXRvckNhbGxiYWNrXG4pOiBUcmFjZU1ldGFkYXRhQ29udGV4dCB7XG5cdHRyeSB7XG5cdFx0bGV0IGFNZXRhZGF0YUNvbnRleHRLZXlzID0gKG9NZXRhZGF0YS5tZXRhZGF0YUNvbnRleHRzICYmIE9iamVjdC5rZXlzKG9NZXRhZGF0YS5tZXRhZGF0YUNvbnRleHRzKSkgfHwgW107XG5cdFx0Y29uc3QgYVByb3BlcnRpZXMgPSAob01ldGFkYXRhLnByb3BlcnRpZXMgJiYgT2JqZWN0LmtleXMob01ldGFkYXRhLnByb3BlcnRpZXMpKSB8fCBbXTtcblx0XHRjb25zdCBtYWNyb0luZm86IE1hY3JvSW5mbyA9IGZuQ2xvbmUob1Zpc2l0b3IuZ2V0U2V0dGluZ3MoKVtcIl9tYWNyb0luZm9cIl0gfHwge30pIGFzIE1hY3JvSW5mbztcblx0XHRjb25zdCBvVHJhY2VNZXRhZGF0YUNvbnRleHQ6IFRyYWNlTWV0YWRhdGFDb250ZXh0ID0ge1xuXHRcdFx0aXNFcnJvcjogZmFsc2UsXG5cdFx0XHRtYWNybzogc05hbWUsXG5cdFx0XHRtZXRhRGF0YUNvbnRleHRzOiBbXSxcblx0XHRcdHByb3BlcnRpZXM6IHt9XG5cdFx0fTtcblxuXHRcdGlmIChhTWV0YWRhdGFDb250ZXh0S2V5cy5sZW5ndGggPT09IDApIHtcblx0XHRcdC8vSW4gY2FzZSB0aGUgbWFjcm8gaGFzIG5vIG1ldGFkYXRhLmpzIHdlIHRha2UgYWxsIG1ldGFkYXRhQ29udGV4dHMgZXhjZXB0IHRoaXNcblx0XHRcdGFNZXRhZGF0YUNvbnRleHRLZXlzID0gT2JqZWN0LmtleXMobUNvbnRleHRzKS5maWx0ZXIoZnVuY3Rpb24gKG5hbWU6IHN0cmluZykge1xuXHRcdFx0XHRyZXR1cm4gbmFtZSAhPT0gXCJ0aGlzXCI7XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRpZiAoIW9Ob2RlLmdldEF0dHJpYnV0ZShcInhtbG5zOnRyYWNlXCIpKSB7XG5cdFx0XHRvTm9kZS5zZXRBdHRyaWJ1dGVOUyh4bWxucywgXCJ4bWxuczp0cmFjZVwiLCB0cmFjZU5hbWVzcGFjZSk7XG5cdFx0fVxuXG5cdFx0aWYgKGFNZXRhZGF0YUNvbnRleHRLZXlzLmxlbmd0aCA+IDApIHtcblx0XHRcdGFNZXRhZGF0YUNvbnRleHRLZXlzLmZvckVhY2goZnVuY3Rpb24gKHNLZXk6IHN0cmluZykge1xuXHRcdFx0XHRjb25zdCBvQ29udGV4dCA9IG1Db250ZXh0c1tzS2V5XSxcblx0XHRcdFx0XHRvTWV0YURhdGFDb250ZXh0ID0gb0NvbnRleHQgJiYge1xuXHRcdFx0XHRcdFx0bmFtZTogc0tleSxcblx0XHRcdFx0XHRcdHBhdGg6IG9Db250ZXh0LmdldFBhdGgoKVxuXHRcdFx0XHRcdFx0Ly9kYXRhOiBKU09OLnN0cmluZ2lmeShvQ29udGV4dC5nZXRPYmplY3QoKSxudWxsLDIpXG5cdFx0XHRcdFx0fTtcblxuXHRcdFx0XHRpZiAob01ldGFEYXRhQ29udGV4dCkge1xuXHRcdFx0XHRcdG9UcmFjZU1ldGFkYXRhQ29udGV4dC5tZXRhRGF0YUNvbnRleHRzLnB1c2gob01ldGFEYXRhQ29udGV4dCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXG5cdFx0XHRhUHJvcGVydGllcy5mb3JFYWNoKGZ1bmN0aW9uIChzS2V5OiBzdHJpbmcpIHtcblx0XHRcdFx0Y29uc3Qgb1Byb3BlcnR5ID0gbUNvbnRleHRzLnRoaXMuZ2V0T2JqZWN0KHNLZXkpO1xuXG5cdFx0XHRcdGlmIChvUHJvcGVydHkpIHtcblx0XHRcdFx0XHRvVHJhY2VNZXRhZGF0YUNvbnRleHQucHJvcGVydGllc1tzS2V5XSA9IG9Qcm9wZXJ0eTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRvVHJhY2VNZXRhZGF0YUNvbnRleHQudmlld0luZm8gPSBvVmlzaXRvci5nZXRWaWV3SW5mbygpO1xuXHRcdFx0b1RyYWNlTWV0YWRhdGFDb250ZXh0LnRyYWNlSUQgPSBhVHJhY2VJbmZvLmxlbmd0aDtcblx0XHRcdG1hY3JvSW5mby5wYXJlbnRNYWNyb0lEID0gbWFjcm9JbmZvLm1hY3JvSUQ7XG5cdFx0XHRtYWNyb0luZm8ubWFjcm9JRCA9IG9UcmFjZU1ldGFkYXRhQ29udGV4dC50cmFjZUlELnRvU3RyaW5nKCk7XG5cdFx0XHRvVHJhY2VNZXRhZGF0YUNvbnRleHQubWFjcm9JbmZvID0gbWFjcm9JbmZvO1xuXHRcdFx0b05vZGUuc2V0QXR0cmlidXRlTlModHJhY2VOYW1lc3BhY2UsIFwidHJhY2U6bWFjcm9JRFwiLCBvVHJhY2VNZXRhZGF0YUNvbnRleHQudHJhY2VJRC50b1N0cmluZygpKTtcblx0XHRcdGFUcmFjZUluZm8ucHVzaChvVHJhY2VNZXRhZGF0YUNvbnRleHQpO1xuXHRcdH1cblx0XHRyZXR1cm4gb1RyYWNlTWV0YWRhdGFDb250ZXh0O1xuXHR9IGNhdGNoIChleGMpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0aXNFcnJvcjogdHJ1ZSxcblx0XHRcdGVycm9yOiB7XG5cdFx0XHRcdGV4Y2VwdGlvbjogZXhjIGFzIEVycm9yLFxuXHRcdFx0XHRub2RlOiBuZXcgWE1MU2VyaWFsaXplcigpLnNlcmlhbGl6ZVRvU3RyaW5nKG9Ob2RlKVxuXHRcdFx0fSxcblx0XHRcdG5hbWU6IHNOYW1lLFxuXHRcdFx0Y29udGV4dFBhdGg6IG9WaXNpdG9yPy5nZXRDb250ZXh0KCk/LmdldFBhdGgoKSxcblx0XHRcdG1ldGFEYXRhQ29udGV4dHM6IFtdLFxuXHRcdFx0cHJvcGVydGllczoge31cblx0XHR9O1xuXHR9XG59XG4vKipcbiAqIFJldHVybnMgdGhlIGdsb2JhbGx5IHN0b3JlZCB0cmFjZSBpbmZvcm1hdGlvbiBmb3IgdGhlIG1hY3JvIG9yXG4gKiBjb250cm9sIG1hcmtlZCB3aXRoIHRoZSBnaXZlbiBpZC5cbiAqXG4gKiBSZXR1cm5zIGFsbCB0cmFjZSBpbmZvcm1hdGlvbiBpZiBubyBpZCBpcyBzcGVjaWZpZWRcbiAqXG4gKlxuICogPHByZT5TdHJ1Y3R1cmUgZm9yIGEgbWFjcm9cbiAqIHtcbiAqIG1hY3JvOiAnJywgLy9uYW1lIG9mIG1hY3JvXG4gKiBtZXRhRGF0YUNvbnRleHRzOiBbIC8vUHJvcGVydGllcyBvZiB0eXBlIHNhcC51aS5tb2RlbC5Db250ZXh0XG4gKiB7XG4gKiBuYW1lOiAnJywgLy9jb250ZXh0IHByb3BlcnR5IG5hbWUgLyBrZXlcbiAqIHBhdGg6ICcnLCAvL2Zyb20gb0NvbnRleHQuZ2V0UGF0aCgpXG4gKiB9XG4gKiBdLFxuICogcHJvcGVydGllczogeyAvLyBPdGhlciBwcm9wZXJ0aWVzIHdoaWNoIGJlY29tZSBwYXJ0IG9mIHt0aGlzPn1cbiAqIHByb3BlcnR5MTogdmFsdWUsXG4gKiBwcm9wZXJ0eTI6IHZhbHVlXG4gKiB9XG4gKiB2aWV3SW5mbzoge1xuICogdmlld0luZm86IHt9IC8vIEFzIHNwZWNpZmllZCBpbiB2aWV3IG9yIGZyYWdtZW50IGNyZWF0aW9uXG4gKiB9LFxuICogdHJhY2VJRDogdGhpcy5pbmRleCwgLy9JRCBmb3IgdGhpcyB0cmFjZSBpbmZvcm1hdGlvbixcbiAqIG1hY3JvSW5mbzoge1xuICogbWFjcm9JRDogaW5kZXgsIC8vIHRyYWNlSUQgb2YgdGhpcyBtYWNybyAocmVkdW5kYW50IGZvciBtYWNyb3MpXG4gKiBwYXJlbnRNYWNyb0lELCBpbmRleCAvLyB0cmFjZUlEIG9mIHRoZSBwYXJlbnQgbWFjcm8gKGlmIGl0IGhhcyBhIHBhcmVudClcbiAqIH1cbiAqIH1cbiAqIFN0cnVjdHVyZSBmb3IgYSBjb250cm9sXG4gKiB7XG4gKiBjb250cm9sOiAnJywgLy9jb250cm9sIGNsYXNzXG4gKiBwcm9wZXJ0aWVzOiB7IC8vIE90aGVyIHByb3BlcnRpZXMgd2hpY2ggYmVjb21lIHBhcnQgb2Yge3RoaXM+fVxuICogcHJvcGVydHkxOiB7XG4gKiBvcmlnaW5hbFZhbHVlOiAnJywgLy9WYWx1ZSBiZWZvcmUgdGVtcGxhdGluZ1xuICogcmVzb2x2ZWRWYWx1ZTogJycgLy9WYWx1ZSBhZnRlciB0ZW1wbGF0aW5nXG4gKiB9XG4gKiB9XG4gKiBjb250ZXh0czogeyAvL01vZGVscyBhbmQgQ29udGV4dHMgdXNlZCBkdXJpbmcgdGVtcGxhdGluZ1xuICogLy8gTW9kZWwgb3IgY29udGV4dCBuYW1lIHVzZWQgZm9yIHRoaXMgY29udHJvbFxuICogbW9kZWxOYW1lMTogeyAvLyBGb3IgT0RhdGFNZXRhTW9kZWxcbiAqIHBhdGgxOiB7XG4gKiBwYXRoOiAnJywgLy9hYnNvbHV0IHBhdGggd2l0aGluIG1ldGFtb2RlbFxuICogZGF0YTogJycsIC8vZGF0YSBvZiBwYXRoIHVubGVzcyB0eXBlIE9iamVjdFxuICogfVxuICogbW9kZWxOYW1lMjoge1xuICogLy8gZm9yIG90aGVyIG1vZGVsIHR5cGVzXG4gKiB7XG4gKiBwcm9wZXJ0eTE6IHZhbHVlLFxuICogcHJvcGVydHkyOiB2YWx1ZVxuICogfVxuICogLy8gSW4gY2FzZSBiaW5kaW5nIGNhbm5vdCBiZSByZXNvbHZlZCAtPiBtYXJrIGFzIHJ1bnRpbWUgYmluZGluZ1xuICogLy8gVGhpcyBpcyBub3QgYWx3YXlzIHRydWUsIGUuZy4gaW4gY2FzZSB0aGUgcGF0aCBpcyBtZXRhbW9kZWxwYXRoXG4gKiB7XG4gKiBcImJpbmRpbmdGb3JcIjogXCJSdW50aW1lXCJcbiAqIH1cbiAqIH1cbiAqIH0sXG4gKiB2aWV3SW5mbzoge1xuICogdmlld0luZm86IHt9IC8vIEFzIHNwZWNpZmllZCBpbiB2aWV3IG9yIGZyYWdtZW50IGNyZWF0aW9uXG4gKiB9LFxuICogbWFjcm9JbmZvOiB7XG4gKiBtYWNyb0lEOiBpbmRleCwgLy8gdHJhY2VJRCBvZiB0aGUgbWFjcm8gdGhhdCBjcmVhdGVkIHRoaXMgY29udHJvbFxuICogcGFyZW50TWFjcm9JRCwgaW5kZXggLy8gdHJhY2VJRCBvZiB0aGUgbWFjcm8ncyBwYXJlbnQgbWFjcm9cbiAqIH0sXG4gKiB0cmFjZUlEOiB0aGlzLmluZGV4IC8vSUQgZm9yIHRoaXMgdHJhY2UgaW5mb3JtYXRpb25cbiAqIH08L3ByZT4uXG4gKiBAcGFyYW0gaWQgVHJhY2VJbmZvIGlkXG4gKiBAcmV0dXJucyBPYmplY3QgLyBBcnJheSBmb3IgVHJhY2VJbmZvXG4gKi9cbmZ1bmN0aW9uIGdldFRyYWNlSW5mbyhpZDogbnVtYmVyKTogVHJhY2VNZXRhZGF0YUNvbnRleHQgfCBUcmFjZU1ldGFkYXRhQ29udGV4dFtdIHtcblx0aWYgKGlkKSB7XG5cdFx0cmV0dXJuIGFUcmFjZUluZm9baWRdO1xuXHR9XG5cdGNvbnN0IGFFcnJvcnMgPSBhVHJhY2VJbmZvLmZpbHRlcihmdW5jdGlvbiAodHJhY2VJbmZvOiBUcmFjZU1ldGFkYXRhQ29udGV4dCkge1xuXHRcdHJldHVybiB0cmFjZUluZm8uZXJyb3I7XG5cdH0pO1xuXHRyZXR1cm4gKGFFcnJvcnMubGVuZ3RoID4gMCAmJiBhRXJyb3JzKSB8fCBhVHJhY2VJbmZvO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgVHJhY2VJbmZvIGlzIGFjdGl2ZS5cbiAqIEByZXR1cm5zIGB0cnVlYCB3aGVuIGFjdGl2ZVxuICovXG5mdW5jdGlvbiBpc1RyYWNlSW5mb0FjdGl2ZSgpOiBib29sZWFuIHtcblx0cmV0dXJuIHRyYWNlSXNPbjtcbn1cbi8qKlxuICogQHR5cGVkZWYgc2FwLmZlLm1hY3Jvcy5UcmFjZUluZm9cbiAqIFRyYWNlSW5mbyBmb3IgU0FQIEZpb3JpIGVsZW1lbnRzXG4gKlxuICogT25jZSB0cmFjZXMgaXMgc3dpdGNoZWQsIGluZm9ybWF0aW9uIGFib3V0IG1hY3JvcyBhbmQgY29udHJvbHNcbiAqIHRoYXQgYXJlIHByb2Nlc3NlZCBkdXJpbmcgeG1sIHByZXByb2Nlc3NpbmcgKCBAc2VlIHtAbGluayBzYXAudWkuY29yZS51dGlsLlhNTFByZXByb2Nlc3Nvcn0pXG4gKiB3aWxsIGJlIGNvbGxlY3RlZCB3aXRoaW4gdGhpcyBzaW5nbGV0b25cbiAqIEBuYW1lc3BhY2VcbiAqIEBnbG9iYWxcbiAqIEBleHBlcmltZW50YWwgVGhpcyBtb2R1bGUgaXMgb25seSBmb3IgZXhwZXJpbWVudGFsIHVzZSEgPGJyLz48Yj5UaGlzIGlzIG9ubHkgYSBQT0MgYW5kIG1heWJlIGRlbGV0ZWQ8L2I+XG4gKiBAc2luY2UgMS43NC4wXG4gKi9cbmV4cG9ydCBkZWZhdWx0IHtcblx0aXNUcmFjZUluZm9BY3RpdmU6IGlzVHJhY2VJbmZvQWN0aXZlLFxuXHR0cmFjZU1hY3JvQ2FsbHM6IHRyYWNlTWFjcm9DYWxscyxcblx0Z2V0VHJhY2VJbmZvOiBnZXRUcmFjZUluZm9cbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0VBUUE7RUFDQSxNQUFNQSxVQUFrQyxHQUFHO0lBQzFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBNURDLENBNkRB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
|
|
414
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhVHJhY2VJbmZvIiwidHJhY2VOYW1lc3BhY2UiLCJ4bWxucyIsInRyYWNlSXNPbiIsImxvY2F0aW9uIiwic2VhcmNoIiwiaW5jbHVkZXMiLCJhTmFtZXNwYWNlcyIsIm9DYWxsYmFja3MiLCJmbkNsb25lIiwib09iamVjdCIsIkpTT04iLCJwYXJzZSIsInN0cmluZ2lmeSIsImNvbGxlY3RDb250ZXh0SW5mbyIsInNWYWx1ZSIsIm9Db250ZXh0cyIsIm9WaXNpdG9yIiwib05vZGUiLCJhQ29udGV4dHMiLCJhUHJvbWlzZXMiLCJCaW5kaW5nSW5mbyIsImUiLCJBcnJheSIsImlzQXJyYXkiLCJmaWx0ZXIiLCJvQ29udGV4dCIsInBhdGgiLCJwYXJ0cyIsImZvckVhY2giLCJhUGFydHMiLCJvUGFydENvbnRleHQiLCJvTW9kZWwiLCJtb2RlbCIsInNTaW1wbGVQYXRoIiwib1JlYWxDb250ZXh0IiwiYUlubmVyUGFydHMiLCJzcGxpdCIsImdldENvbnRleHQiLCJ2aXNpdG9yUmVzdWx0IiwiZ2V0UmVzdWx0IiwicHVzaCIsInRoZW4iLCJvUmVzdWx0IiwiZ2V0TW9kZWwiLCJnZXRNZXRhZGF0YSIsImdldE5hbWUiLCJnZXRQYXRoIiwiZGF0YSIsImNhdGNoIiwiYmluZGluZ0ZvciIsImV4YyIsIlByb21pc2UiLCJhbGwiLCJmaWxsQXR0cmlidXRlcyIsIm9SZXN1bHRzIiwib0F0dHJpYnV0ZXMiLCJzTmFtZSIsInJlc3VsdCIsIm9yaWdpbmFsVmFsdWUiLCJyZXNvbHZlZFZhbHVlIiwiZXJyb3IiLCJzdGFjayIsInRvU3RyaW5nIiwiY29sbGVjdEluZm8iLCJpIiwiYXR0cmlidXRlcyIsImxlbmd0aCIsIm9BdHRyaWJ1dGUiLCJub2RlTmFtZSIsImdldEF0dHJpYnV0ZSIsInByb3BlcnRpZXMiLCJjb250ZXh0cyIsInJlc29sdmUiLCJzQ29udHJvbE5hbWUiLCJiSXNDb250cm9sIiwidGVzdCIsIm9UcmFjZU1ldGFkYXRhQ29udGV4dCIsImlzRXJyb3IiLCJjb250cm9sIiwibmFtZXNwYWNlVVJJIiwibWV0YURhdGFDb250ZXh0cyIsImZpcnN0Q2hpbGQiLCJvd25lckRvY3VtZW50IiwiY2hpbGRyZW4iLCJmaW5kIiwibm9kZSIsInN0YXJ0c1dpdGgiLCJzZXRBdHRyaWJ1dGVOUyIsImJSZWxldmFudCIsIk9iamVjdCIsImtleXMiLCJhc3NpZ24iLCJ2aWV3SW5mbyIsImdldFZpZXdJbmZvIiwibWFjcm9JbmZvIiwiZ2V0U2V0dGluZ3MiLCJ0cmFjZUlEIiwidmlzaXRBdHRyaWJ1dGVzIiwidmlzaXRDaGlsZE5vZGVzIiwiZXhjZXB0aW9uIiwiWE1MU2VyaWFsaXplciIsInNlcmlhbGl6ZVRvU3RyaW5nIiwiTG9nIiwibWVzc2FnZSIsIm5hbWVzcGFjZSIsIlhNTFByZXByb2Nlc3NvciIsInBsdWdJbiIsImJpbmQiLCJ0cmFjZU1hY3JvQ2FsbHMiLCJvTWV0YWRhdGEiLCJtQ29udGV4dHMiLCJhTWV0YWRhdGFDb250ZXh0S2V5cyIsIm1ldGFkYXRhQ29udGV4dHMiLCJhUHJvcGVydGllcyIsIm1hY3JvIiwibmFtZSIsInNLZXkiLCJvTWV0YURhdGFDb250ZXh0Iiwib1Byb3BlcnR5IiwidGhpcyIsImdldE9iamVjdCIsInBhcmVudE1hY3JvSUQiLCJtYWNyb0lEIiwiY29udGV4dFBhdGgiLCJnZXRUcmFjZUluZm8iLCJpZCIsImFFcnJvcnMiLCJ0cmFjZUluZm8iLCJpc1RyYWNlSW5mb0FjdGl2ZSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiVHJhY2VJbmZvLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUge1xuXHRJVmlzaXRvckNhbGxiYWNrLFxuXHRUcmFuc2Zvcm1lZEJ1aWxkaW5nQmxvY2tNZXRhZGF0YVxufSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvdGVtcGxhdGluZy9CdWlsZGluZ0Jsb2NrVGVtcGxhdGVQcm9jZXNzb3JcIjtcbmltcG9ydCBCaW5kaW5nSW5mbyBmcm9tIFwic2FwL3VpL2Jhc2UvQmluZGluZ0luZm9cIjtcbmltcG9ydCBYTUxQcmVwcm9jZXNzb3IgZnJvbSBcInNhcC91aS9jb3JlL3V0aWwvWE1MUHJlcHJvY2Vzc29yXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuLy9UcmFjZSBpbmZvcm1hdGlvblxuY29uc3QgYVRyYWNlSW5mbzogVHJhY2VNZXRhZGF0YUNvbnRleHRbXSA9IFtcblx0LyogU3RydWN0dXJlIGZvciBhIG1hY3JvXG5cdFx0XHR7XG5cdFx0XHRcdG1hY3JvOiAnJywgLy9uYW1lIG9mIG1hY3JvXG5cdFx0XHRcdG1ldGFEYXRhQ29udGV4dHM6IFsgLy9Qcm9wZXJ0aWVzIG9mIHR5cGUgc2FwLnVpLm1vZGVsLkNvbnRleHRcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRuYW1lOiAnJywgLy9jb250ZXh0IHByb3BlcnR5IG5hbWUgLyBrZXlcblx0XHRcdFx0XHRcdHBhdGg6ICcnLCAvL2Zyb20gb0NvbnRleHQuZ2V0UGF0aCgpXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRdLFxuXHRcdFx0XHRwcm9wZXJ0aWVzOiB7IC8vIE90aGVyIHByb3BlcnRpZXMgd2hpY2ggYmVjb21lIHBhcnQgb2Yge3RoaXM+fVxuXHRcdFx0XHRcdHByb3BlcnR5MTogdmFsdWUsXG5cdFx0XHRcdFx0cHJvcGVydHkyOiB2YWx1ZVxuXHRcdFx0XHR9XG5cdFx0XHRcdHZpZXdJbmZvOiB7XG5cdFx0XHRcdFx0dmlld0luZm86IHt9IC8vIEFzIHNwZWNpZmllZCBpbiB2aWV3IG9yIGZyYWdtZW50IGNyZWF0aW9uXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHRyYWNlSUQ6IHRoaXMuaW5kZXgsIC8vSUQgZm9yIHRoaXMgdHJhY2UgaW5mb3JtYXRpb24sXG5cdFx0XHRcdG1hY3JvSW5mbzoge1xuXHRcdFx0XHRcdG1hY3JvSUQ6IGluZGV4LCAvLyB0cmFjZUlEIG9mIHRoaXMgbWFjcm8gKHJlZHVuZGFudCBmb3IgbWFjcm9zKVxuXHRcdFx0XHRcdHBhcmVudE1hY3JvSUQsIGluZGV4IC8vIHRyYWNlSUQgb2YgdGhlIHBhcmVudCBtYWNybyAoaWYgaXQgaGFzIGEgcGFyZW50KVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQvLyBTdHJ1Y3R1cmUgZm9yIGEgY29udHJvbFxuXHRcdFx0e1xuXHRcdFx0XHRjb250cm9sOiAnJywgLy9jb250cm9sIGNsYXNzXG5cdFx0XHRcdHByb3BlcnRpZXM6IHsgLy8gT3RoZXIgcHJvcGVydGllcyB3aGljaCBiZWNvbWUgcGFydCBvZiB7dGhpcz59XG5cdFx0XHRcdFx0cHJvcGVydHkxOiB7XG5cdFx0XHRcdFx0XHRvcmlnaW5hbFZhbHVlOiAnJywgLy9WYWx1ZSBiZWZvcmUgdGVtcGxhdGluZ1xuXHRcdFx0XHRcdFx0cmVzb2x2ZWRWYWx1ZTogJycgLy9WYWx1ZSBhZnRlciB0ZW1wbGF0aW5nXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnRleHRzOiB7IC8vTW9kZWxzIGFuZCBDb250ZXh0cyB1c2VkIGR1cmluZyB0ZW1wbGF0aW5nXG5cdFx0XHRcdFx0Ly8gTW9kZWwgb3IgY29udGV4dCBuYW1lIHVzZWQgZm9yIHRoaXMgY29udHJvbFxuXHRcdFx0XHRcdG1vZGVsTmFtZTE6IHsgLy8gRm9yIE9EYXRhTWV0YU1vZGVsXG5cdFx0XHRcdFx0XHRwYXRoMToge1xuXHRcdFx0XHRcdFx0XHRwYXRoOiAnJywgLy9hYnNvbHV0IHBhdGggd2l0aGluIG1ldGFtb2RlbFxuXHRcdFx0XHRcdFx0XHRkYXRhOiAnJywgLy9kYXRhIG9mIHBhdGggdW5sZXNzIHR5cGUgT2JqZWN0XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0bW9kZWxOYW1lMjoge1xuXHRcdFx0XHRcdFx0Ly8gZm9yIG90aGVyIG1vZGVsIHR5cGVzXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHByb3BlcnR5MTogdmFsdWUsXG5cdFx0XHRcdFx0XHRcdHByb3BlcnR5MjogdmFsdWVcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdC8vIEluIGNhc2UgYmluZGluZyBjYW5ub3QgYmUgcmVzb2x2ZWQgLT4gbWFyayBhcyBydW50aW1lIGJpbmRpbmdcblx0XHRcdFx0XHRcdC8vIFRoaXMgaXMgbm90IGFsd2F5cyB0cnVlLCBlLmcuIGluIGNhc2UgdGhlIHBhdGggaXMgbWV0YW1vZGVscGF0aFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcImJpbmRpbmdGb3JcIjogXCJSdW50aW1lXCJcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHZpZXdJbmZvOiB7XG5cdFx0XHRcdFx0dmlld0luZm86IHt9IC8vIEFzIHNwZWNpZmllZCBpbiB2aWV3IG9yIGZyYWdtZW50IGNyZWF0aW9uXG5cdFx0XHRcdH0sXG5cdFx0XHRcdG1hY3JvSW5mbzoge1xuXHRcdFx0XHRcdG1hY3JvSUQ6IGluZGV4LCAvLyB0cmFjZUlEIG9mIHRoZSBtYWNybyB0aGF0IGNyZWF0ZWQgdGhpcyBjb250cm9sXG5cdFx0XHRcdFx0cGFyZW50TWFjcm9JRCwgaW5kZXggLy8gdHJhY2VJRCBvZiB0aGUgbWFjcm8ncyBwYXJlbnQgbWFjcm9cblx0XHRcdFx0fSxcblx0XHRcdFx0dHJhY2VJRDogdGhpcy5pbmRleCAvL0lEIGZvciB0aGlzIHRyYWNlIGluZm9ybWF0aW9uXG5cdFx0XHR9XG5cdFx0XHQqL1xuXTtcbmNvbnN0IHRyYWNlTmFtZXNwYWNlID0gXCJodHRwOi8vc2NoZW1hcy5zYXAuY29tL3NhcHVpNS9leHRlbnNpb24vc2FwLmZlLmluZm8vMVwiLFxuXHR4bWxucyA9IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy9cIixcblx0LyoqXG5cdCAqIFN3aXRjaCBpcyBjdXJyZW50bHkgYmFzZWQgb24gdXJsIHBhcmFtZXRlclxuXHQgKi9cblx0dHJhY2VJc09uID0gbG9jYXRpb24uc2VhcmNoLmluY2x1ZGVzKFwic2FwLXVpLXh4LWZlVHJhY2VJbmZvPXRydWVcIiksXG5cdC8qKlxuXHQgKiBTcGVjaWZ5IGFsbCBuYW1lc3BhY2VzIHRoYXQgc2hhbGwgYmUgdHJhY2VkIGR1cmluZyB0ZW1wbGF0aW5nXG5cdCAqL1xuXHRhTmFtZXNwYWNlcyA9IFtcblx0XHRcInNhcC5tXCIsXG5cdFx0XCJzYXAudXhhcFwiLFxuXHRcdFwic2FwLnVpLnVuaWZpZWRcIixcblx0XHRcInNhcC5mXCIsXG5cdFx0XCJzYXAudWkudGFibGVcIixcblx0XHRcInNhcC5zdWl0ZS51aS5taWNyb2NoYXJ0XCIsXG5cdFx0XCJzYXAudWkubGF5b3V0LmZvcm1cIixcblx0XHRcInNhcC51aS5tZGNcIixcblx0XHRcInNhcC51aS5tZGMubGlua1wiLFxuXHRcdFwic2FwLnVpLm1kYy5maWVsZFwiLFxuXHRcdFwic2FwLmZlLmZwbVwiXG5cdF0sXG5cdG9DYWxsYmFja3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cbmZ1bmN0aW9uIGZuQ2xvbmUob09iamVjdDogb2JqZWN0KTogdW5rbm93biB7XG5cdHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9PYmplY3QpKTtcbn1cbnR5cGUgVHJhY2VDb250ZXh0ID0ge1xuXHRwYXRoOiBzdHJpbmc7XG5cdG1vZGVsOiBzdHJpbmc7XG5cdHBhcnRzOiBUcmFjZUNvbnRleHRbXTtcbn07XG5hc3luYyBmdW5jdGlvbiBjb2xsZWN0Q29udGV4dEluZm8oXG5cdHNWYWx1ZTogc3RyaW5nIHwgbnVsbCxcblx0b0NvbnRleHRzOiBSZWNvcmQ8c3RyaW5nLCBUcmFjZUNvbnRleHQ+LFxuXHRvVmlzaXRvcjogSVZpc2l0b3JDYWxsYmFjayxcblx0b05vZGU6IEVsZW1lbnRcbik6IFByb21pc2U8dW5rbm93bltdPiB7XG5cdGxldCBhQ29udGV4dHM6IFRyYWNlQ29udGV4dFtdO1xuXHRjb25zdCBhUHJvbWlzZXM6IFByb21pc2U8dW5rbm93bj5bXSA9IFtdO1xuXHR0cnkge1xuXHRcdGFDb250ZXh0cyA9IEJpbmRpbmdJbmZvLnBhcnNlKHNWYWx1ZSkgfHwgW107XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRhQ29udGV4dHMgPSBbXTtcblx0fVxuXHRhQ29udGV4dHMgPSBBcnJheS5pc0FycmF5KGFDb250ZXh0cykgPyBhQ29udGV4dHMgOiBbYUNvbnRleHRzXTtcblx0YUNvbnRleHRzXG5cdFx0LmZpbHRlcihmdW5jdGlvbiAob0NvbnRleHQpIHtcblx0XHRcdHJldHVybiBvQ29udGV4dC5wYXRoIHx8IG9Db250ZXh0LnBhcnRzO1xuXHRcdH0pXG5cdFx0LmZvckVhY2goZnVuY3Rpb24gKG9Db250ZXh0OiBUcmFjZUNvbnRleHQpIHtcblx0XHRcdGNvbnN0IGFQYXJ0cyA9IG9Db250ZXh0LnBhcnRzIHx8IFtvQ29udGV4dF07XG5cdFx0XHRhUGFydHNcblx0XHRcdFx0LmZpbHRlcihmdW5jdGlvbiAob1BhcnRDb250ZXh0OiBUcmFjZUNvbnRleHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gb1BhcnRDb250ZXh0LnBhdGg7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5mb3JFYWNoKGZ1bmN0aW9uIChvUGFydENvbnRleHQ6IFRyYWNlQ29udGV4dCkge1xuXHRcdFx0XHRcdGNvbnN0IG9Nb2RlbDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSAob0NvbnRleHRzW29QYXJ0Q29udGV4dC5tb2RlbF0gPSBvQ29udGV4dHNbb1BhcnRDb250ZXh0Lm1vZGVsXSB8fCB7fSk7XG5cdFx0XHRcdFx0Y29uc3Qgc1NpbXBsZVBhdGggPSAhb1BhcnRDb250ZXh0LnBhdGguaW5jbHVkZXMoXCI+XCIpXG5cdFx0XHRcdFx0XHQ/IChvUGFydENvbnRleHQubW9kZWwgJiYgYCR7b1BhcnRDb250ZXh0Lm1vZGVsfT5gKSArIG9QYXJ0Q29udGV4dC5wYXRoXG5cdFx0XHRcdFx0XHQ6IG9QYXJ0Q29udGV4dC5wYXRoO1xuXHRcdFx0XHRcdGxldCBvUmVhbENvbnRleHQ6IENvbnRleHQgfCB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0bGV0IGFJbm5lclBhcnRzO1xuXG5cdFx0XHRcdFx0aWYgKHR5cGVvZiBvUGFydENvbnRleHQubW9kZWwgPT09IFwidW5kZWZpbmVkXCIgJiYgc1NpbXBsZVBhdGguaW5jbHVkZXMoXCI+XCIpKSB7XG5cdFx0XHRcdFx0XHRhSW5uZXJQYXJ0cyA9IHNTaW1wbGVQYXRoLnNwbGl0KFwiPlwiKTtcblx0XHRcdFx0XHRcdG9QYXJ0Q29udGV4dC5tb2RlbCA9IGFJbm5lclBhcnRzWzBdO1xuXHRcdFx0XHRcdFx0b1BhcnRDb250ZXh0LnBhdGggPSBhSW5uZXJQYXJ0c1sxXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdG9SZWFsQ29udGV4dCA9IG9WaXNpdG9yLmdldENvbnRleHQoc1NpbXBsZVBhdGgpO1xuXG5cdFx0XHRcdFx0XHRjb25zdCB2aXNpdG9yUmVzdWx0ID0gb1Zpc2l0b3IuZ2V0UmVzdWx0KGB7JHtzU2ltcGxlUGF0aH19YCwgb05vZGUpITtcblx0XHRcdFx0XHRcdGFQcm9taXNlcy5wdXNoKFxuXHRcdFx0XHRcdFx0XHR2aXNpdG9yUmVzdWx0XG5cdFx0XHRcdFx0XHRcdFx0LnRoZW4oZnVuY3Rpb24gKG9SZXN1bHQ6IENvbnRleHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChvUmVhbENvbnRleHQ/LmdldE1vZGVsKCkuZ2V0TWV0YWRhdGEoKS5nZXROYW1lKCkgPT09IFwic2FwLnVpLm1vZGVsLmpzb24uSlNPTk1vZGVsXCIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFvUmVzdWx0LmdldE1vZGVsKCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvTW9kZWxbb1BhcnRDb250ZXh0LnBhdGhdID0gb1Jlc3VsdDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvTW9kZWxbb1BhcnRDb250ZXh0LnBhdGhdID0gYENvbnRleHQgZnJvbSAke29SZXN1bHQuZ2V0UGF0aCgpfWA7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG9Nb2RlbFtvUGFydENvbnRleHQucGF0aF0gPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cGF0aDogb1JlYWxDb250ZXh0IS5nZXRQYXRoKCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGF0YTogdHlwZW9mIG9SZXN1bHQgPT09IFwib2JqZWN0XCIgPyBcIltjdHJsL2NtZC1jbGlja10gb24gcGF0aCB0byBzZWUgZGF0YVwiIDogb1Jlc3VsdFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0LmNhdGNoKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdG9Nb2RlbFtvUGFydENvbnRleHQucGF0aF0gPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJpbmRpbmdGb3I6IFwiUnVudGltZVwiXG5cdFx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKGV4Yykge1xuXHRcdFx0XHRcdFx0b01vZGVsW29QYXJ0Q29udGV4dC5wYXRoXSA9IHtcblx0XHRcdFx0XHRcdFx0YmluZGluZ0ZvcjogXCJSdW50aW1lXCJcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHR9KTtcblx0cmV0dXJuIFByb21pc2UuYWxsKGFQcm9taXNlcyk7XG59XG5hc3luYyBmdW5jdGlvbiBmaWxsQXR0cmlidXRlcyhcblx0b1Jlc3VsdHM6IFByb21pc2U8dW5rbm93bj4sXG5cdG9BdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcblx0c05hbWU6IHN0cmluZyxcblx0c1ZhbHVlOiB1bmtub3duXG4pOiBQcm9taXNlPHZvaWQ+IHtcblx0cmV0dXJuIG9SZXN1bHRzXG5cdFx0LnRoZW4oZnVuY3Rpb24gKHJlc3VsdDogdW5rbm93bikge1xuXHRcdFx0b0F0dHJpYnV0ZXNbc05hbWVdID1cblx0XHRcdFx0c1ZhbHVlICE9PSByZXN1bHRcblx0XHRcdFx0XHQ/IHtcblx0XHRcdFx0XHRcdFx0b3JpZ2luYWxWYWx1ZTogc1ZhbHVlLFxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlZFZhbHVlOiByZXN1bHRcblx0XHRcdFx0XHQgIH1cblx0XHRcdFx0XHQ6IHNWYWx1ZTtcblx0XHRcdHJldHVybjtcblx0XHR9KVxuXHRcdC5jYXRjaChmdW5jdGlvbiAoZTogdW5rbm93bikge1xuXHRcdFx0Y29uc3QgZXJyb3IgPSBlIGFzIEVycm9yO1xuXHRcdFx0b0F0dHJpYnV0ZXNbc05hbWVdID0ge1xuXHRcdFx0XHRvcmlnaW5hbFZhbHVlOiBzVmFsdWUsXG5cdFx0XHRcdGVycm9yOiAoZXJyb3Iuc3RhY2sgJiYgZXJyb3Iuc3RhY2sudG9TdHJpbmcoKSkgfHwgZVxuXHRcdFx0fTtcblx0XHR9KTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGNvbGxlY3RJbmZvKG9Ob2RlOiBFbGVtZW50LCBvVmlzaXRvcjogSVZpc2l0b3JDYWxsYmFjayk6IFByb21pc2U8eyBwcm9wZXJ0aWVzOiB7fTsgY29udGV4dHM6IHt9IH0+IHtcblx0Y29uc3Qgb0F0dHJpYnV0ZXMgPSB7fTtcblx0Y29uc3QgYVByb21pc2VzID0gW107XG5cdGNvbnN0IG9Db250ZXh0cyA9IHt9O1xuXHRsZXQgb1Jlc3VsdHM7XG5cdGZvciAobGV0IGkgPSBvTm9kZS5hdHRyaWJ1dGVzLmxlbmd0aCA+Pj4gMDsgaS0tOyApIHtcblx0XHRjb25zdCBvQXR0cmlidXRlID0gb05vZGUuYXR0cmlidXRlc1tpXSxcblx0XHRcdHNOYW1lID0gb0F0dHJpYnV0ZS5ub2RlTmFtZSxcblx0XHRcdHNWYWx1ZSA9IG9Ob2RlLmdldEF0dHJpYnV0ZShzTmFtZSkhO1xuXHRcdGlmICghW1wiY29yZTpyZXF1aXJlXCJdLmluY2x1ZGVzKHNOYW1lKSkge1xuXHRcdFx0YVByb21pc2VzLnB1c2goY29sbGVjdENvbnRleHRJbmZvKHNWYWx1ZSwgb0NvbnRleHRzLCBvVmlzaXRvciwgb05vZGUpKTtcblx0XHRcdG9SZXN1bHRzID0gb1Zpc2l0b3IuZ2V0UmVzdWx0KHNWYWx1ZSwgb05vZGUpO1xuXHRcdFx0aWYgKG9SZXN1bHRzKSB7XG5cdFx0XHRcdGFQcm9taXNlcy5wdXNoKGZpbGxBdHRyaWJ1dGVzKG9SZXN1bHRzLCBvQXR0cmlidXRlcywgc05hbWUsIHNWYWx1ZSkpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly9XaGF0XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdHJldHVybiBQcm9taXNlLmFsbChhUHJvbWlzZXMpLnRoZW4oZnVuY3Rpb24gKCkge1xuXHRcdHJldHVybiB7IHByb3BlcnRpZXM6IG9BdHRyaWJ1dGVzLCBjb250ZXh0czogb0NvbnRleHRzIH07XG5cdH0pO1xufVxuZXhwb3J0IHR5cGUgVHJhY2VNZXRhZGF0YUNvbnRleHQgPSB7XG5cdGlzRXJyb3I6IGJvb2xlYW47XG5cdG1hY3JvPzogc3RyaW5nO1xuXHRjb250cm9sPzogc3RyaW5nO1xuXHRuYW1lPzogc3RyaW5nO1xuXHRjb250ZXh0UGF0aD86IHN0cmluZztcblx0dmlld0luZm8/OiB1bmtub3duO1xuXHRtYWNyb0luZm8/OiBNYWNyb0luZm87XG5cdHRyYWNlSUQ/OiBudW1iZXI7XG5cdGVycm9yPzoge1xuXHRcdGV4Y2VwdGlvbjogRXJyb3I7XG5cdFx0bm9kZTogc3RyaW5nO1xuXHR9O1xuXHRtZXRhRGF0YUNvbnRleHRzOiB7IG5hbWU6IHN0cmluZzsgcGF0aDogc3RyaW5nIH1bXTtcblx0cHJvcGVydGllczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59O1xuYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZShvTm9kZTogRWxlbWVudCwgb1Zpc2l0b3I6IElWaXNpdG9yQ2FsbGJhY2spOiBQcm9taXNlPHZvaWQ+IHtcblx0dHJ5IHtcblx0XHRjb25zdCBzQ29udHJvbE5hbWUgPSBvTm9kZS5ub2RlTmFtZS5zcGxpdChcIjpcIilbMV0gfHwgb05vZGUubm9kZU5hbWUsXG5cdFx0XHRiSXNDb250cm9sID0gL15bQS1aXS8udGVzdChzQ29udHJvbE5hbWUpLFxuXHRcdFx0b1RyYWNlTWV0YWRhdGFDb250ZXh0OiBUcmFjZU1ldGFkYXRhQ29udGV4dCA9IHtcblx0XHRcdFx0aXNFcnJvcjogZmFsc2UsXG5cdFx0XHRcdGNvbnRyb2w6IGAke29Ob2RlLm5hbWVzcGFjZVVSSX0uJHtvTm9kZS5ub2RlTmFtZS5zcGxpdChcIjpcIilbMV0gfHwgb05vZGUubm9kZU5hbWV9YCxcblx0XHRcdFx0bWV0YURhdGFDb250ZXh0czogW10sXG5cdFx0XHRcdHByb3BlcnRpZXM6IHt9XG5cdFx0XHR9O1xuXG5cdFx0aWYgKGJJc0NvbnRyb2wpIHtcblx0XHRcdGNvbnN0IGZpcnN0Q2hpbGQgPSBbLi4uKG9Ob2RlLm93bmVyRG9jdW1lbnQuY2hpbGRyZW4gYXMgdW5rbm93biBhcyBFbGVtZW50W10pXS5maW5kKChub2RlKSA9PiAhbm9kZS5ub2RlTmFtZS5zdGFydHNXaXRoKFwiI1wiKSk7XG5cdFx0XHRpZiAoZmlyc3RDaGlsZCAmJiAhZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoXCJ4bWxuczp0cmFjZVwiKSkge1xuXHRcdFx0XHRmaXJzdENoaWxkLnNldEF0dHJpYnV0ZU5TKHhtbG5zLCBcInhtbG5zOnRyYWNlXCIsIHRyYWNlTmFtZXNwYWNlKTtcblx0XHRcdFx0Zmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGVOUyh0cmFjZU5hbWVzcGFjZSwgXCJ0cmFjZTppc1wiLCBcIm9uXCIpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGF3YWl0IGNvbGxlY3RJbmZvKG9Ob2RlLCBvVmlzaXRvcilcblx0XHRcdFx0LnRoZW4oYXN5bmMgZnVuY3Rpb24gKHJlc3VsdDogeyBwcm9wZXJ0aWVzOiB7fTsgY29udGV4dHM6IHt9IH0pOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRcdFx0XHRjb25zdCBiUmVsZXZhbnQgPSBPYmplY3Qua2V5cyhyZXN1bHQuY29udGV4dHMpLmxlbmd0aCA+IDA7IC8vSWYgbm8gY29udGV4dCB3YXMgdXNlZCBpdCBpcyBub3QgcmVsZXZhbnQgc28gd2UgaWdub3JlIE9iamVjdC5rZXlzKHJlc3VsdC5wcm9wZXJ0aWVzKS5sZW5ndGhcblx0XHRcdFx0XHRpZiAoYlJlbGV2YW50KSB7XG5cdFx0XHRcdFx0XHRPYmplY3QuYXNzaWduKG9UcmFjZU1ldGFkYXRhQ29udGV4dCwgcmVzdWx0KTtcblx0XHRcdFx0XHRcdG9UcmFjZU1ldGFkYXRhQ29udGV4dC52aWV3SW5mbyA9IG9WaXNpdG9yLmdldFZpZXdJbmZvKCk7XG5cdFx0XHRcdFx0XHRvVHJhY2VNZXRhZGF0YUNvbnRleHQubWFjcm9JbmZvID0gb1Zpc2l0b3IuZ2V0U2V0dGluZ3MoKVtcIl9tYWNyb0luZm9cIl07XG5cdFx0XHRcdFx0XHRvVHJhY2VNZXRhZGF0YUNvbnRleHQudHJhY2VJRCA9IGFUcmFjZUluZm8ubGVuZ3RoO1xuXHRcdFx0XHRcdFx0b05vZGUuc2V0QXR0cmlidXRlTlModHJhY2VOYW1lc3BhY2UsIFwidHJhY2U6dHJhY2VJRFwiLCBvVHJhY2VNZXRhZGF0YUNvbnRleHQudHJhY2VJRC50b1N0cmluZygpKTtcblx0XHRcdFx0XHRcdGFUcmFjZUluZm8ucHVzaChvVHJhY2VNZXRhZGF0YUNvbnRleHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gb1Zpc2l0b3IudmlzaXRBdHRyaWJ1dGVzKG9Ob2RlKTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LnRoZW4oYXN5bmMgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdHJldHVybiBvVmlzaXRvci52aXNpdENoaWxkTm9kZXMob05vZGUpO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKGV4YzogdW5rbm93bikge1xuXHRcdFx0XHRcdG9UcmFjZU1ldGFkYXRhQ29udGV4dC5lcnJvciA9IHtcblx0XHRcdFx0XHRcdGV4Y2VwdGlvbjogZXhjIGFzIEVycm9yLFxuXHRcdFx0XHRcdFx0bm9kZTogbmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyhvTm9kZSlcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0YXdhaXQgb1Zpc2l0b3IudmlzaXRBdHRyaWJ1dGVzKG9Ob2RlKTtcblx0XHRcdGF3YWl0IG9WaXNpdG9yLnZpc2l0Q2hpbGROb2RlcyhvTm9kZSk7XG5cdFx0fVxuXHR9IGNhdGNoIChleGM6IHVua25vd24pIHtcblx0XHRMb2cuZXJyb3IoYEVycm9yIHdoaWxlIHRyYWNpbmcgJyR7b05vZGU/Lm5vZGVOYW1lfSc6ICR7KGV4YyBhcyBFcnJvcikubWVzc2FnZX1gLCBcIlRyYWNlSW5mb1wiKTtcblx0XHRyZXR1cm4gb1Zpc2l0b3IudmlzaXRBdHRyaWJ1dGVzKG9Ob2RlKS50aGVuKGFzeW5jIGZ1bmN0aW9uICgpIHtcblx0XHRcdHJldHVybiBvVmlzaXRvci52aXNpdENoaWxkTm9kZXMob05vZGUpO1xuXHRcdH0pO1xuXHR9XG59XG4vKipcbiAqIFJlZ2lzdGVyIHBhdGgtdGhyb3VnaCBYTUxQcmVwcm9jZXNzb3IgcGx1Z2luIGZvciBhbGwgbmFtZXNwYWNlc1xuICogZ2l2ZW4gYWJvdmUgaW4gYU5hbWVzcGFjZXNcbiAqL1xuaWYgKHRyYWNlSXNPbikge1xuXHRhTmFtZXNwYWNlcy5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lc3BhY2U6IHN0cmluZykge1xuXHRcdG9DYWxsYmFja3NbbmFtZXNwYWNlXSA9IFhNTFByZXByb2Nlc3Nvci5wbHVnSW4ocmVzb2x2ZS5iaW5kKG5hbWVzcGFjZSksIG5hbWVzcGFjZSk7XG5cdH0pO1xufVxuXG4vKipcbiAqIEFkZHMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHByb2Nlc3Npbmcgb2Ygb25lIG1hY3JvIHRvIHRoZSBjb2xsZWN0aW9uLlxuICogQHBhcmFtIHNOYW1lIE1hY3JvIGNsYXNzIG5hbWVcbiAqIEBwYXJhbSBvTWV0YWRhdGEgRGVmaW5pdGlvbiBmcm9tIG1hY3JvXG4gKiBAcGFyYW0gbUNvbnRleHRzIEF2YWlsYWJsZSBuYW1lZCBjb250ZXh0c1xuICogQHBhcmFtIG9Ob2RlXG4gKiBAcGFyYW0gb1Zpc2l0b3JcbiAqIEByZXR1cm5zIFRoZSB0cmFjZWQgbWV0YWRhdGEgY29udGV4dFxuICovXG5leHBvcnQgdHlwZSBNYWNyb0luZm8gPSB7XG5cdHBhcmVudE1hY3JvSUQ6IHN0cmluZztcblx0bWFjcm9JRDogc3RyaW5nO1xufTtcbmZ1bmN0aW9uIHRyYWNlTWFjcm9DYWxscyhcblx0c05hbWU6IHN0cmluZyxcblx0b01ldGFkYXRhOiBUcmFuc2Zvcm1lZEJ1aWxkaW5nQmxvY2tNZXRhZGF0YSxcblx0bUNvbnRleHRzOiBSZWNvcmQ8c3RyaW5nLCBDb250ZXh0Pixcblx0b05vZGU6IEVsZW1lbnQsXG5cdG9WaXNpdG9yOiBJVmlzaXRvckNhbGxiYWNrXG4pOiBUcmFjZU1ldGFkYXRhQ29udGV4dCB7XG5cdHRyeSB7XG5cdFx0bGV0IGFNZXRhZGF0YUNvbnRleHRLZXlzID0gKG9NZXRhZGF0YS5tZXRhZGF0YUNvbnRleHRzICYmIE9iamVjdC5rZXlzKG9NZXRhZGF0YS5tZXRhZGF0YUNvbnRleHRzKSkgfHwgW107XG5cdFx0Y29uc3QgYVByb3BlcnRpZXMgPSAob01ldGFkYXRhLnByb3BlcnRpZXMgJiYgT2JqZWN0LmtleXMob01ldGFkYXRhLnByb3BlcnRpZXMpKSB8fCBbXTtcblx0XHRjb25zdCBtYWNyb0luZm86IE1hY3JvSW5mbyA9IGZuQ2xvbmUob1Zpc2l0b3IuZ2V0U2V0dGluZ3MoKVtcIl9tYWNyb0luZm9cIl0gfHwge30pIGFzIE1hY3JvSW5mbztcblx0XHRjb25zdCBvVHJhY2VNZXRhZGF0YUNvbnRleHQ6IFRyYWNlTWV0YWRhdGFDb250ZXh0ID0ge1xuXHRcdFx0aXNFcnJvcjogZmFsc2UsXG5cdFx0XHRtYWNybzogc05hbWUsXG5cdFx0XHRtZXRhRGF0YUNvbnRleHRzOiBbXSxcblx0XHRcdHByb3BlcnRpZXM6IHt9XG5cdFx0fTtcblxuXHRcdGlmIChhTWV0YWRhdGFDb250ZXh0S2V5cy5sZW5ndGggPT09IDApIHtcblx0XHRcdC8vSW4gY2FzZSB0aGUgbWFjcm8gaGFzIG5vIG1ldGFkYXRhLmpzIHdlIHRha2UgYWxsIG1ldGFkYXRhQ29udGV4dHMgZXhjZXB0IHRoaXNcblx0XHRcdGFNZXRhZGF0YUNvbnRleHRLZXlzID0gT2JqZWN0LmtleXMobUNvbnRleHRzKS5maWx0ZXIoZnVuY3Rpb24gKG5hbWU6IHN0cmluZykge1xuXHRcdFx0XHRyZXR1cm4gbmFtZSAhPT0gXCJ0aGlzXCI7XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRpZiAoIW9Ob2RlLmdldEF0dHJpYnV0ZShcInhtbG5zOnRyYWNlXCIpKSB7XG5cdFx0XHRvTm9kZS5zZXRBdHRyaWJ1dGVOUyh4bWxucywgXCJ4bWxuczp0cmFjZVwiLCB0cmFjZU5hbWVzcGFjZSk7XG5cdFx0fVxuXG5cdFx0aWYgKGFNZXRhZGF0YUNvbnRleHRLZXlzLmxlbmd0aCA+IDApIHtcblx0XHRcdGFNZXRhZGF0YUNvbnRleHRLZXlzLmZvckVhY2goZnVuY3Rpb24gKHNLZXk6IHN0cmluZykge1xuXHRcdFx0XHRjb25zdCBvQ29udGV4dCA9IG1Db250ZXh0c1tzS2V5XSxcblx0XHRcdFx0XHRvTWV0YURhdGFDb250ZXh0ID0gb0NvbnRleHQgJiYge1xuXHRcdFx0XHRcdFx0bmFtZTogc0tleSxcblx0XHRcdFx0XHRcdHBhdGg6IG9Db250ZXh0LmdldFBhdGgoKVxuXHRcdFx0XHRcdFx0Ly9kYXRhOiBKU09OLnN0cmluZ2lmeShvQ29udGV4dC5nZXRPYmplY3QoKSxudWxsLDIpXG5cdFx0XHRcdFx0fTtcblxuXHRcdFx0XHRpZiAob01ldGFEYXRhQ29udGV4dCkge1xuXHRcdFx0XHRcdG9UcmFjZU1ldGFkYXRhQ29udGV4dC5tZXRhRGF0YUNvbnRleHRzLnB1c2gob01ldGFEYXRhQ29udGV4dCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXG5cdFx0XHRhUHJvcGVydGllcy5mb3JFYWNoKGZ1bmN0aW9uIChzS2V5OiBzdHJpbmcpIHtcblx0XHRcdFx0Y29uc3Qgb1Byb3BlcnR5ID0gbUNvbnRleHRzLnRoaXMuZ2V0T2JqZWN0KHNLZXkpO1xuXG5cdFx0XHRcdGlmIChvUHJvcGVydHkpIHtcblx0XHRcdFx0XHRvVHJhY2VNZXRhZGF0YUNvbnRleHQucHJvcGVydGllc1tzS2V5XSA9IG9Qcm9wZXJ0eTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRvVHJhY2VNZXRhZGF0YUNvbnRleHQudmlld0luZm8gPSBvVmlzaXRvci5nZXRWaWV3SW5mbygpO1xuXHRcdFx0b1RyYWNlTWV0YWRhdGFDb250ZXh0LnRyYWNlSUQgPSBhVHJhY2VJbmZvLmxlbmd0aDtcblx0XHRcdG1hY3JvSW5mby5wYXJlbnRNYWNyb0lEID0gbWFjcm9JbmZvLm1hY3JvSUQ7XG5cdFx0XHRtYWNyb0luZm8ubWFjcm9JRCA9IG9UcmFjZU1ldGFkYXRhQ29udGV4dC50cmFjZUlELnRvU3RyaW5nKCk7XG5cdFx0XHRvVHJhY2VNZXRhZGF0YUNvbnRleHQubWFjcm9JbmZvID0gbWFjcm9JbmZvO1xuXHRcdFx0b05vZGUuc2V0QXR0cmlidXRlTlModHJhY2VOYW1lc3BhY2UsIFwidHJhY2U6bWFjcm9JRFwiLCBvVHJhY2VNZXRhZGF0YUNvbnRleHQudHJhY2VJRC50b1N0cmluZygpKTtcblx0XHRcdGFUcmFjZUluZm8ucHVzaChvVHJhY2VNZXRhZGF0YUNvbnRleHQpO1xuXHRcdH1cblx0XHRyZXR1cm4gb1RyYWNlTWV0YWRhdGFDb250ZXh0O1xuXHR9IGNhdGNoIChleGMpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0aXNFcnJvcjogdHJ1ZSxcblx0XHRcdGVycm9yOiB7XG5cdFx0XHRcdGV4Y2VwdGlvbjogZXhjIGFzIEVycm9yLFxuXHRcdFx0XHRub2RlOiBuZXcgWE1MU2VyaWFsaXplcigpLnNlcmlhbGl6ZVRvU3RyaW5nKG9Ob2RlKVxuXHRcdFx0fSxcblx0XHRcdG5hbWU6IHNOYW1lLFxuXHRcdFx0Y29udGV4dFBhdGg6IG9WaXNpdG9yPy5nZXRDb250ZXh0KCk/LmdldFBhdGgoKSxcblx0XHRcdG1ldGFEYXRhQ29udGV4dHM6IFtdLFxuXHRcdFx0cHJvcGVydGllczoge31cblx0XHR9O1xuXHR9XG59XG4vKipcbiAqIFJldHVybnMgdGhlIGdsb2JhbGx5IHN0b3JlZCB0cmFjZSBpbmZvcm1hdGlvbiBmb3IgdGhlIG1hY3JvIG9yXG4gKiBjb250cm9sIG1hcmtlZCB3aXRoIHRoZSBnaXZlbiBpZC5cbiAqXG4gKiBSZXR1cm5zIGFsbCB0cmFjZSBpbmZvcm1hdGlvbiBpZiBubyBpZCBpcyBzcGVjaWZpZWRcbiAqXG4gKlxuICogPHByZT5TdHJ1Y3R1cmUgZm9yIGEgbWFjcm9cbiAqIHtcbiAqIG1hY3JvOiAnJywgLy9uYW1lIG9mIG1hY3JvXG4gKiBtZXRhRGF0YUNvbnRleHRzOiBbIC8vUHJvcGVydGllcyBvZiB0eXBlIHNhcC51aS5tb2RlbC5Db250ZXh0XG4gKiB7XG4gKiBuYW1lOiAnJywgLy9jb250ZXh0IHByb3BlcnR5IG5hbWUgLyBrZXlcbiAqIHBhdGg6ICcnLCAvL2Zyb20gb0NvbnRleHQuZ2V0UGF0aCgpXG4gKiB9XG4gKiBdLFxuICogcHJvcGVydGllczogeyAvLyBPdGhlciBwcm9wZXJ0aWVzIHdoaWNoIGJlY29tZSBwYXJ0IG9mIHt0aGlzPn1cbiAqIHByb3BlcnR5MTogdmFsdWUsXG4gKiBwcm9wZXJ0eTI6IHZhbHVlXG4gKiB9XG4gKiB2aWV3SW5mbzoge1xuICogdmlld0luZm86IHt9IC8vIEFzIHNwZWNpZmllZCBpbiB2aWV3IG9yIGZyYWdtZW50IGNyZWF0aW9uXG4gKiB9LFxuICogdHJhY2VJRDogdGhpcy5pbmRleCwgLy9JRCBmb3IgdGhpcyB0cmFjZSBpbmZvcm1hdGlvbixcbiAqIG1hY3JvSW5mbzoge1xuICogbWFjcm9JRDogaW5kZXgsIC8vIHRyYWNlSUQgb2YgdGhpcyBtYWNybyAocmVkdW5kYW50IGZvciBtYWNyb3MpXG4gKiBwYXJlbnRNYWNyb0lELCBpbmRleCAvLyB0cmFjZUlEIG9mIHRoZSBwYXJlbnQgbWFjcm8gKGlmIGl0IGhhcyBhIHBhcmVudClcbiAqIH1cbiAqIH1cbiAqIFN0cnVjdHVyZSBmb3IgYSBjb250cm9sXG4gKiB7XG4gKiBjb250cm9sOiAnJywgLy9jb250cm9sIGNsYXNzXG4gKiBwcm9wZXJ0aWVzOiB7IC8vIE90aGVyIHByb3BlcnRpZXMgd2hpY2ggYmVjb21lIHBhcnQgb2Yge3RoaXM+fVxuICogcHJvcGVydHkxOiB7XG4gKiBvcmlnaW5hbFZhbHVlOiAnJywgLy9WYWx1ZSBiZWZvcmUgdGVtcGxhdGluZ1xuICogcmVzb2x2ZWRWYWx1ZTogJycgLy9WYWx1ZSBhZnRlciB0ZW1wbGF0aW5nXG4gKiB9XG4gKiB9XG4gKiBjb250ZXh0czogeyAvL01vZGVscyBhbmQgQ29udGV4dHMgdXNlZCBkdXJpbmcgdGVtcGxhdGluZ1xuICogLy8gTW9kZWwgb3IgY29udGV4dCBuYW1lIHVzZWQgZm9yIHRoaXMgY29udHJvbFxuICogbW9kZWxOYW1lMTogeyAvLyBGb3IgT0RhdGFNZXRhTW9kZWxcbiAqIHBhdGgxOiB7XG4gKiBwYXRoOiAnJywgLy9hYnNvbHV0IHBhdGggd2l0aGluIG1ldGFtb2RlbFxuICogZGF0YTogJycsIC8vZGF0YSBvZiBwYXRoIHVubGVzcyB0eXBlIE9iamVjdFxuICogfVxuICogbW9kZWxOYW1lMjoge1xuICogLy8gZm9yIG90aGVyIG1vZGVsIHR5cGVzXG4gKiB7XG4gKiBwcm9wZXJ0eTE6IHZhbHVlLFxuICogcHJvcGVydHkyOiB2YWx1ZVxuICogfVxuICogLy8gSW4gY2FzZSBiaW5kaW5nIGNhbm5vdCBiZSByZXNvbHZlZCAtPiBtYXJrIGFzIHJ1bnRpbWUgYmluZGluZ1xuICogLy8gVGhpcyBpcyBub3QgYWx3YXlzIHRydWUsIGUuZy4gaW4gY2FzZSB0aGUgcGF0aCBpcyBtZXRhbW9kZWxwYXRoXG4gKiB7XG4gKiBcImJpbmRpbmdGb3JcIjogXCJSdW50aW1lXCJcbiAqIH1cbiAqIH1cbiAqIH0sXG4gKiB2aWV3SW5mbzoge1xuICogdmlld0luZm86IHt9IC8vIEFzIHNwZWNpZmllZCBpbiB2aWV3IG9yIGZyYWdtZW50IGNyZWF0aW9uXG4gKiB9LFxuICogbWFjcm9JbmZvOiB7XG4gKiBtYWNyb0lEOiBpbmRleCwgLy8gdHJhY2VJRCBvZiB0aGUgbWFjcm8gdGhhdCBjcmVhdGVkIHRoaXMgY29udHJvbFxuICogcGFyZW50TWFjcm9JRCwgaW5kZXggLy8gdHJhY2VJRCBvZiB0aGUgbWFjcm8ncyBwYXJlbnQgbWFjcm9cbiAqIH0sXG4gKiB0cmFjZUlEOiB0aGlzLmluZGV4IC8vSUQgZm9yIHRoaXMgdHJhY2UgaW5mb3JtYXRpb25cbiAqIH08L3ByZT4uXG4gKiBAcGFyYW0gaWQgVHJhY2VJbmZvIGlkXG4gKiBAcmV0dXJucyBPYmplY3QgLyBBcnJheSBmb3IgVHJhY2VJbmZvXG4gKi9cbmZ1bmN0aW9uIGdldFRyYWNlSW5mbyhpZDogbnVtYmVyKTogVHJhY2VNZXRhZGF0YUNvbnRleHQgfCBUcmFjZU1ldGFkYXRhQ29udGV4dFtdIHtcblx0aWYgKGlkKSB7XG5cdFx0cmV0dXJuIGFUcmFjZUluZm9baWRdO1xuXHR9XG5cdGNvbnN0IGFFcnJvcnMgPSBhVHJhY2VJbmZvLmZpbHRlcihmdW5jdGlvbiAodHJhY2VJbmZvOiBUcmFjZU1ldGFkYXRhQ29udGV4dCkge1xuXHRcdHJldHVybiB0cmFjZUluZm8uZXJyb3I7XG5cdH0pO1xuXHRyZXR1cm4gKGFFcnJvcnMubGVuZ3RoID4gMCAmJiBhRXJyb3JzKSB8fCBhVHJhY2VJbmZvO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgVHJhY2VJbmZvIGlzIGFjdGl2ZS5cbiAqIEByZXR1cm5zIGB0cnVlYCB3aGVuIGFjdGl2ZVxuICovXG5mdW5jdGlvbiBpc1RyYWNlSW5mb0FjdGl2ZSgpOiBib29sZWFuIHtcblx0cmV0dXJuIHRyYWNlSXNPbjtcbn1cbi8qKlxuICogQHR5cGVkZWYgc2FwLmZlLm1hY3Jvcy5UcmFjZUluZm9cbiAqIFRyYWNlSW5mbyBmb3IgU0FQIEZpb3JpIGVsZW1lbnRzXG4gKlxuICogT25jZSB0cmFjZXMgaXMgc3dpdGNoZWQsIGluZm9ybWF0aW9uIGFib3V0IG1hY3JvcyBhbmQgY29udHJvbHNcbiAqIHRoYXQgYXJlIHByb2Nlc3NlZCBkdXJpbmcgeG1sIHByZXByb2Nlc3NpbmcgKCBAc2VlIHtAbGluayBzYXAudWkuY29yZS51dGlsLlhNTFByZXByb2Nlc3Nvcn0pXG4gKiB3aWxsIGJlIGNvbGxlY3RlZCB3aXRoaW4gdGhpcyBzaW5nbGV0b25cbiAqIEBuYW1lc3BhY2VcbiAqIEBnbG9iYWxcbiAqIEBleHBlcmltZW50YWwgVGhpcyBtb2R1bGUgaXMgb25seSBmb3IgZXhwZXJpbWVudGFsIHVzZSEgPGJyLz48Yj5UaGlzIGlzIG9ubHkgYSBQT0MgYW5kIG1heWJlIGRlbGV0ZWQ8L2I+XG4gKiBAc2luY2UgMS43NC4wXG4gKi9cbmV4cG9ydCBkZWZhdWx0IHtcblx0aXNUcmFjZUluZm9BY3RpdmU6IGlzVHJhY2VJbmZvQWN0aXZlLFxuXHR0cmFjZU1hY3JvQ2FsbHM6IHRyYWNlTWFjcm9DYWxscyxcblx0Z2V0VHJhY2VJbmZvOiBnZXRUcmFjZUluZm9cbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7RUFRQTtFQUNBLE1BQU1BLFVBQWtDLEdBQUc7SUFDMUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUE1REMsQ0E2REE7RUFDRCxNQUFNQyxjQUFjLEdBQUcsdURBQXVEO0lBQzdFQyxLQUFLLEdB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
|
|
@@ -3,7 +3,7 @@ import type {
|
|
|
3
3
|
IVisitorCallback,
|
|
4
4
|
TransformedBuildingBlockMetadata
|
|
5
5
|
} from "sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor";
|
|
6
|
-
import
|
|
6
|
+
import BindingInfo from "sap/ui/base/BindingInfo";
|
|
7
7
|
import XMLPreprocessor from "sap/ui/core/util/XMLPreprocessor";
|
|
8
8
|
import type Context from "sap/ui/model/Context";
|
|
9
9
|
//Trace information
|
|
@@ -111,7 +111,7 @@ async function collectContextInfo(
|
|
|
111
111
|
let aContexts: TraceContext[];
|
|
112
112
|
const aPromises: Promise<unknown>[] = [];
|
|
113
113
|
try {
|
|
114
|
-
aContexts =
|
|
114
|
+
aContexts = BindingInfo.parse(sValue) || [];
|
|
115
115
|
} catch (e) {
|
|
116
116
|
aContexts = [];
|
|
117
117
|
}
|