@sapui5/sap.fe.core 1.136.10 → 1.136.11
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/PageController.controller.js +10 -0
- package/src/sap/fe/core/PageController.controller.ts +3 -0
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +23 -13
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +34 -13
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +7 -6
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +8 -5
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.js +2 -1
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.tsx +1 -0
- package/src/sap/fe/core/converters/controls/Common/Action.js +15 -1
- package/src/sap/fe/core/converters/controls/Common/Action.ts +21 -1
- package/src/sap/fe/core/converters/controls/Common/Table.js +54 -46
- package/src/sap/fe/core/converters/controls/Common/Table.ts +65 -45
- package/src/sap/fe/core/converters/controls/Common/table/Columns.js +26 -6
- package/src/sap/fe/core/converters/controls/Common/table/Columns.ts +32 -10
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +12 -18
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +13 -27
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +5 -2
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +7 -1
- package/src/sap/fe/core/designtime/AnnotationBasedChanges.js +8 -3
- package/src/sap/fe/core/designtime/AnnotationBasedChanges.ts +7 -2
- package/src/sap/fe/core/fpm/manifest.json +1 -1
- package/src/sap/fe/core/helpers/AppStartupHelper.js +75 -18
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +79 -25
- package/src/sap/fe/core/helpers/MetaModelFunction.js +10 -3
- package/src/sap/fe/core/helpers/MetaModelFunction.ts +9 -3
- package/src/sap/fe/core/library.js +1 -1
- package/src/sap/fe/core/messagebundle_es.properties +1 -1
- package/src/sap/fe/core/messagebundle_fr.properties +1 -1
- package/src/sap/fe/core/messagebundle_ko.properties +1 -1
- package/src/sap/fe/core/messagebundle_no.properties +2 -2
- package/src/sap/fe/core/services/RoutingServiceFactory.js +4 -2
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +5 -2
- package/ui5.yaml +1 -0
|
@@ -213,6 +213,7 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/core/helpers/ResourceModelHel
|
|
|
213
213
|
state: ValueState.Warning,
|
|
214
214
|
type: "Message",
|
|
215
215
|
contentWidth: "22rem",
|
|
216
|
+
escapeHandler: () => this.close(),
|
|
216
217
|
ref: this.dataLossDialog,
|
|
217
218
|
children: {
|
|
218
219
|
content: _jsxs(_Fragment, {
|
|
@@ -250,4 +251,4 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/core/helpers/ResourceModelHel
|
|
|
250
251
|
_exports = DraftDataLossDialog;
|
|
251
252
|
return _exports;
|
|
252
253
|
}, false);
|
|
253
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEcmFmdERhdGFMb3NzRGlhbG9nIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJkZWZpbmVSZWZlcmVuY2UiLCJfZGVjMyIsIl9jbGFzcyIsIl9jbGFzczIiLCJfTWFuYWdlZE9iamVjdCIsIl90aGlzIiwiX2xlbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsInNoYWxsRm9yY2VEcmFmdFNhdmVPckRpc2NhcmQiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwib3BlbiIsImNvbnRyb2xsZXIiLCJ2aWV3IiwiZ2V0VmlldyIsImFwcENvbXBvbmVudCIsIkNvbW1vblV0aWxzIiwiZ2V0QXBwQ29tcG9uZW50IiwiaXNIaWRkZW5EcmFmdCIsImdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwiZ2V0Q2FwYWJpbGl0aWVzIiwiSGlkZGVuRHJhZnQiLCJlbmFibGVkIiwidmlld0NvbnRleHQiLCJnZXRCaW5kaW5nQ29udGV4dCIsImlzUm9vdENvbnRleHROZXciLCJlZGl0RmxvdyIsImRhdGFMb3NzUmVzb3VyY2VNb2RlbCIsImdldFJlc291cmNlTW9kZWwiLCJjcmVhdGVDb250ZW50IiwiZGF0YUxvc3NDb25maXJtIiwiaGFuZGxlRGF0YUxvc3NPayIsIm9wdGlvbnNMaXN0IiwiY3VycmVudCIsImFkZEV2ZW50RGVsZWdhdGUiLCJvbmtleXVwIiwiZSIsImtleSIsImFkZERlcGVuZGVudCIsImRhdGFMb3NzRGlhbG9nIiwic2VsZWN0QW5kRm9jdXNGaXJzdEVudHJ5IiwiUHJvbWlzZSIsInJlc29sdmUiLCJwcm9taXNlUmVzb2x2ZSIsImNsb3NlIiwiZGVzdHJveSIsImdldFNlbGVjdGVkS2V5IiwiaGFuZGxlRGF0YUxvc3NDYW5jZWwiLCJmaXJzdExpc3RJdGVtT3B0aW9uIiwiZ2V0SXRlbXMiLCJzZXRTZWxlY3RlZEl0ZW0iLCJmb2N1cyIsImdldFNlbGVjdGVkSXRlbSIsImRhdGEiLCJnZXRDb25maXJtQnV0dG9uIiwiX2pzeCIsIkJ1dHRvbiIsInRleHQiLCJnZXRUZXh0IiwidHlwZSIsInByZXNzIiwiZ2V0Q2FuY2VsQnV0dG9uIiwiaXNTYXZlIiwiY3JlYXRlT3JTYXZlVGV4dCIsImNyZWF0ZU9yU2F2ZUxhYmVsIiwiaXRlbXMiLCJwdXNoIiwiQ3VzdG9tTGlzdEl0ZW0iLCJjdXN0b21EYXRhIiwiQ3VzdG9tRGF0YSIsInZhbHVlIiwiY2hpbGRyZW4iLCJfanN4cyIsIlZCb3giLCJjbGFzcyIsIkxhYmVsIiwiZGVzaWduIiwiVGV4dCIsImhhc0FjdGl2ZUVudGl0eSIsImdldE9iamVjdCIsIkhhc0FjdGl2ZUVudGl0eSIsImRlc2NyaXB0aW9uIiwiRGlhbG9nIiwiaWQiLCJnZW5lcmF0ZSIsImdldElkIiwidGl0bGUiLCJzdGF0ZSIsIlZhbHVlU3RhdGUiLCJXYXJuaW5nIiwiY29udGVudFdpZHRoIiwicmVmIiwiY29udGVudCIsIl9GcmFnbWVudCIsIkxpc3QiLCJtb2RlIiwic2hvd1NlcGFyYXRvcnMiLCJpbmNsdWRlSXRlbUluU2VsZWN0aW9uIiwiYmFja2dyb3VuZERlc2lnbiIsImJ1dHRvbnMiLCJNYW5hZ2VkT2JqZWN0IiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJEcmFmdERhdGFMb3NzRGlhbG9nLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZWZpbmVSZWZlcmVuY2UsIGRlZmluZVVJNUNsYXNzIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvanN4LXJ1bnRpbWUvanN4XCI7XG5pbXBvcnQgeyBnZXRSZXNvdXJjZU1vZGVsIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvUmVzb3VyY2VNb2RlbEhlbHBlclwiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IEJ1dHRvbiBmcm9tIFwic2FwL20vQnV0dG9uXCI7XG5pbXBvcnQgQ3VzdG9tTGlzdEl0ZW0gZnJvbSBcInNhcC9tL0N1c3RvbUxpc3RJdGVtXCI7XG5pbXBvcnQgRGlhbG9nIGZyb20gXCJzYXAvbS9EaWFsb2dcIjtcbmltcG9ydCBMYWJlbCBmcm9tIFwic2FwL20vTGFiZWxcIjtcbmltcG9ydCBMaXN0IGZyb20gXCJzYXAvbS9MaXN0XCI7XG5pbXBvcnQgVGV4dCBmcm9tIFwic2FwL20vVGV4dFwiO1xuaW1wb3J0IFZCb3ggZnJvbSBcInNhcC9tL1ZCb3hcIjtcbmltcG9ydCBNYW5hZ2VkT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgQ3VzdG9tRGF0YSBmcm9tIFwic2FwL3VpL2NvcmUvQ3VzdG9tRGF0YVwiO1xuaW1wb3J0IHR5cGUgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IHsgVmFsdWVTdGF0ZSB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwiLi4vLi4vQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIFBhZ2VDb250cm9sbGVyIGZyb20gXCIuLi8uLi9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgUmVzb3VyY2VNb2RlbCBmcm9tIFwiLi4vLi4vUmVzb3VyY2VNb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBIaWRkZW5EcmFmdCB9IGZyb20gXCIuLi8uLi9jb252ZXJ0ZXJzL01hbmlmZXN0U2V0dGluZ3NcIjtcblxuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuY29udHJvbHMuRGF0YUxvc3NPckRyYWZ0RGlzY2FyZC5EcmFmdERhdGFMb3NzRGlhbG9nXCIpXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEcmFmdERhdGFMb3NzRGlhbG9nIGV4dGVuZHMgTWFuYWdlZE9iamVjdCB7XG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRkYXRhTG9zc0RpYWxvZyE6IFJlZjxEaWFsb2c+O1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRvcHRpb25zTGlzdCE6IFJlZjxMaXN0PjtcblxuXHRwcml2YXRlIHZpZXchOiBWaWV3O1xuXG5cdHByaXZhdGUgZGF0YUxvc3NSZXNvdXJjZU1vZGVsITogUmVzb3VyY2VNb2RlbDtcblxuXHQvKipcblx0ICogUmVzb2x2ZXMgdGhlIHByb21pc2Ugd2l0aCB0aGUgc2VsZWN0ZWQgZGlhbG9nIGxpc3Qgb3B0aW9uXG5cdCAqL1xuXHRwcml2YXRlIHByb21pc2VSZXNvbHZlITogRnVuY3Rpb247XG5cblx0cHJpdmF0ZSBzaGFsbEZvcmNlRHJhZnRTYXZlT3JEaXNjYXJkID0gZmFsc2U7XG5cblx0cHJpdmF0ZSBpc1Jvb3RDb250ZXh0TmV3ITogYm9vbGVhbjtcblxuXHRwcml2YXRlIGlzSGlkZGVuRHJhZnQhOiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBPcGVucyB0aGUgZGF0YSBsb3NzIGRpYWxvZy5cblx0ICogQHBhcmFtIGNvbnRyb2xsZXJcblx0ICovXG5cdHB1YmxpYyBhc3luYyBvcGVuKGNvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyKTogUHJvbWlzZTx1bmtub3duPiB7XG5cdFx0dGhpcy52aWV3ID0gY29udHJvbGxlci5nZXRWaWV3KCk7XG5cdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHRoaXMudmlldyk7XG5cdFx0dGhpcy5pc0hpZGRlbkRyYWZ0ID0gKGFwcENvbXBvbmVudC5nZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcygpPy5nZXRDYXBhYmlsaXRpZXMoKT8uSGlkZGVuRHJhZnQgYXMgSGlkZGVuRHJhZnQpPy5lbmFibGVkO1xuXHRcdGNvbnN0IHZpZXdDb250ZXh0ID0gdGhpcy52aWV3LmdldEJpbmRpbmdDb250ZXh0KCkgYXMgQ29udGV4dDtcblx0XHR0aGlzLmlzUm9vdENvbnRleHROZXcgPSB2aWV3Q29udGV4dCA/IGF3YWl0IGNvbnRyb2xsZXIuZWRpdEZsb3cuaXNSb290Q29udGV4dE5ldyh2aWV3Q29udGV4dCkgOiBmYWxzZTtcblx0XHR0aGlzLnNoYWxsRm9yY2VEcmFmdFNhdmVPckRpc2NhcmQgPSBjb250cm9sbGVyLmVkaXRGbG93LnNoYWxsRm9yY2VEcmFmdFNhdmVPckRpc2NhcmQoKTtcblx0XHR0aGlzLmRhdGFMb3NzUmVzb3VyY2VNb2RlbCA9IGdldFJlc291cmNlTW9kZWwodGhpcy52aWV3KTtcblx0XHR0aGlzLmNyZWF0ZUNvbnRlbnQoKTtcblx0XHRjb25zdCBkYXRhTG9zc0NvbmZpcm0gPSAoKTogdm9pZCA9PiB0aGlzLmhhbmRsZURhdGFMb3NzT2soKTtcblx0XHR0aGlzLm9wdGlvbnNMaXN0LmN1cnJlbnQ/LmFkZEV2ZW50RGVsZWdhdGUoe1xuXHRcdFx0b25rZXl1cDogZnVuY3Rpb24gKGU6IEtleWJvYXJkRXZlbnQpIHtcblx0XHRcdFx0aWYgKGUua2V5ID09PSBcIkVudGVyXCIpIHtcblx0XHRcdFx0XHRkYXRhTG9zc0NvbmZpcm0oKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHRoaXMudmlldy5hZGREZXBlbmRlbnQodGhpcy5kYXRhTG9zc0RpYWxvZy5jdXJyZW50IGFzIFVJNUVsZW1lbnQpO1xuXHRcdHRoaXMuZGF0YUxvc3NEaWFsb2cuY3VycmVudD8ub3BlbigpO1xuXHRcdHRoaXMuc2VsZWN0QW5kRm9jdXNGaXJzdEVudHJ5KCk7XG5cblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcblx0XHRcdHRoaXMucHJvbWlzZVJlc29sdmUgPSByZXNvbHZlO1xuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXIgdG8gY2xvc2UgdGhlIGRhdGFsb3NzIGRpYWxvZy5cblx0ICpcblx0ICovXG5cdHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcblx0XHR0aGlzLmRhdGFMb3NzRGlhbG9nLmN1cnJlbnQ/LmNsb3NlKCk7XG5cdFx0dGhpcy5kYXRhTG9zc0RpYWxvZy5jdXJyZW50Py5kZXN0cm95KCk7XG5cdH1cblxuXHQvKipcblx0ICogRXhlY3V0ZXMgdGhlIGxvZ2ljIHdoZW4gdGhlIGRhdGEgbG9zcyBkaWFsb2cgaXMgY29uZmlybWVkLiBUaGUgc2VsZWN0aW9uIG9mIGFuIG9wdGlvbiByZXNvbHZlcyB0aGUgcHJvbWlzZSBhbmQgbGVhZHMgdG8gdGhlXG5cdCAqIHByb2Nlc3Npbmcgb2YgdGhlIG9yaWdpbmFsbHkgdHJpZ2dlcmVkIGFjdGlvbiBsaWtlIGUuZy4gYSBiYWNrIG5hdmlnYXRpb24uXG5cdCAqXG5cdCAqL1xuXG5cdHByaXZhdGUgaGFuZGxlRGF0YUxvc3NPaygpOiB2b2lkIHtcblx0XHR0aGlzLnByb21pc2VSZXNvbHZlKHRoaXMuZ2V0U2VsZWN0ZWRLZXkoKSk7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlciB0byBjbG9zZSB0aGUgZGF0YWxvc3MgZGlhbG9nLlxuXHQgKlxuXHQgKi9cblx0cHJpdmF0ZSBoYW5kbGVEYXRhTG9zc0NhbmNlbCgpOiB2b2lkIHtcblx0XHR0aGlzLnByb21pc2VSZXNvbHZlKFwiY2FuY2VsXCIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIGZvY3VzIG9uIHRoZSBmaXJzdCBsaXN0IGl0ZW0gb2YgdGhlIGRpYWxvZy5cblx0ICpcblx0ICovXG5cdHByaXZhdGUgc2VsZWN0QW5kRm9jdXNGaXJzdEVudHJ5KCk6IHZvaWQge1xuXHRcdGNvbnN0IGZpcnN0TGlzdEl0ZW1PcHRpb246IEN1c3RvbUxpc3RJdGVtID0gdGhpcy5vcHRpb25zTGlzdC5jdXJyZW50Py5nZXRJdGVtcygpWzBdIGFzIEN1c3RvbUxpc3RJdGVtO1xuXHRcdHRoaXMub3B0aW9uc0xpc3QuY3VycmVudD8uc2V0U2VsZWN0ZWRJdGVtKGZpcnN0TGlzdEl0ZW1PcHRpb24pO1xuXHRcdC8vIFdlIGRvIG5vdCBzZXQgdGhlIGZvY3VzIG9uIHRoZSBidXR0b24sIGJ1dCBjYXRjaCB0aGUgRU5URVIga2V5IGluIHRoZSBkaWFsb2dcblx0XHQvLyBhbmQgcHJvY2VzcyBpdCBhcyBPaywgc2luY2UgZm9jdXNpbmcgdGhlIGJ1dHRvbiB3YXMgcmVwb3J0ZWQgYXMgYW4gQUNDIGlzc3VlXG5cdFx0Zmlyc3RMaXN0SXRlbU9wdGlvbj8uZm9jdXMoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBrZXkgb2YgdGhlIHNlbGVjdGVkIGl0ZW0gZnJvbSB0aGUgbGlzdCBvZiBvcHRpb25zIHRoYXQgd2FzIHNldCB2aWEgY3VzdG9tRGF0YS5cblx0ICogQHJldHVybnMgVGhlIGtleSBvZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGl0ZW1cblx0ICovXG5cdHByaXZhdGUgZ2V0U2VsZWN0ZWRLZXkoKTogc3RyaW5nIHtcblx0XHRjb25zdCBvcHRpb25zTGlzdCA9IHRoaXMub3B0aW9uc0xpc3QuY3VycmVudCBhcyBMaXN0O1xuXHRcdHJldHVybiBvcHRpb25zTGlzdC5nZXRTZWxlY3RlZEl0ZW0oKS5kYXRhKFwiaXRlbUtleVwiKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBjb25maXJtIGJ1dHRvbi5cblx0ICogQHJldHVybnMgQSBidXR0b25cblx0ICovXG5cdHByaXZhdGUgZ2V0Q29uZmlybUJ1dHRvbigpOiBCdXR0b24ge1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdHRleHQ9e3RoaXMuZGF0YUxvc3NSZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX0NPTU1PTl9ESUFMT0dfT0tcIil9XG5cdFx0XHRcdHR5cGU9e1wiRW1waGFzaXplZFwifVxuXHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4gdGhpcy5oYW5kbGVEYXRhTG9zc09rKCl9XG5cdFx0XHQvPlxuXHRcdCkgYXMgQnV0dG9uO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGNhbmNlbCBidXR0b24uXG5cdCAqIEByZXR1cm5zIEEgYnV0dG9uXG5cdCAqL1xuXHRwcml2YXRlIGdldENhbmNlbEJ1dHRvbigpOiBCdXR0b24ge1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdHRleHQ9e1xuXHRcdFx0XHRcdHRoaXMuaXNIaWRkZW5EcmFmdFxuXHRcdFx0XHRcdFx0PyB0aGlzLmRhdGFMb3NzUmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19DT01NT05fU0FQRkVfQ0xPU0VcIilcblx0XHRcdFx0XHRcdDogdGhpcy5kYXRhTG9zc1Jlc291cmNlTW9kZWwuZ2V0VGV4dChcIkNfQ09NTU9OX0RJQUxPR19DQU5DRUxcIilcblx0XHRcdFx0fVxuXHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4gdGhpcy5oYW5kbGVEYXRhTG9zc0NhbmNlbCgpfVxuXHRcdFx0Lz5cblx0XHQpIGFzIEJ1dHRvbjtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBvcHRpb25zIGF2YWlsYWJsZSBpbiB0aGUgZGlhbG9nLlxuXHQgKiBAcGFyYW0gaXNTYXZlXG5cdCAqIEByZXR1cm5zIFRoZSBvcHRpb25zIGFzIEN1c3RvbUxpc3RJdGVtc1xuXHQgKi9cblx0cHJpdmF0ZSBnZXRJdGVtcyhpc1NhdmU6IGJvb2xlYW4pOiBDdXN0b21MaXN0SXRlbVtdIHtcblx0XHRsZXQgY3JlYXRlT3JTYXZlVGV4dCA9IFwiXCI7XG5cdFx0bGV0IGNyZWF0ZU9yU2F2ZUxhYmVsID0gdGhpcy5kYXRhTG9zc1Jlc291cmNlTW9kZWwuZ2V0VGV4dChcIlNUX0RSQUZUX0RBVEFMT1NTX1NBVkVfRFJBRlRfUkJMXCIpO1xuXHRcdGlmIChpc1NhdmUpIHtcblx0XHRcdGNyZWF0ZU9yU2F2ZVRleHQgPSB0aGlzLmlzSGlkZGVuRHJhZnRcblx0XHRcdFx0PyB0aGlzLmRhdGFMb3NzUmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiU1RfRFJBRlRfREFUQUxPU1NfU0FWRV9ISURERU5fRFJBRlRfVE9MXCIpXG5cdFx0XHRcdDogdGhpcy5kYXRhTG9zc1Jlc291cmNlTW9kZWwuZ2V0VGV4dChcIlNUX0RSQUZUX0RBVEFMT1NTX1NBVkVfRFJBRlRfVE9MXCIpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjcmVhdGVPclNhdmVMYWJlbCA9IHRoaXMuZGF0YUxvc3NSZXNvdXJjZU1vZGVsLmdldFRleHQoXCJTVF9EUkFGVF9EQVRBTE9TU19DUkVBVEVfRU5USVRZX1JCTFwiKTtcblx0XHRcdGNyZWF0ZU9yU2F2ZVRleHQgPSB0aGlzLmRhdGFMb3NzUmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiU1RfRFJBRlRfREFUQUxPU1NfQ1JFQVRFX0VOVElUWV9UT0xcIik7XG5cdFx0fVxuXHRcdGNvbnN0IGl0ZW1zOiBDdXN0b21MaXN0SXRlbVtdID0gW107XG5cdFx0aXRlbXMucHVzaChcblx0XHRcdDxDdXN0b21MaXN0SXRlbSBjdXN0b21EYXRhPXtbbmV3IEN1c3RvbURhdGEoeyBrZXk6IFwiaXRlbUtleVwiLCB2YWx1ZTogXCJkcmFmdERhdGFMb3NzT3B0aW9uU2F2ZVwiIH0pXX0+XG5cdFx0XHRcdDxWQm94IGNsYXNzPVwic2FwVWlUaW55TWFyZ2luXCI+XG5cdFx0XHRcdFx0PExhYmVsIHRleHQ9e2NyZWF0ZU9yU2F2ZUxhYmVsfSBkZXNpZ249XCJCb2xkXCIgLz5cblx0XHRcdFx0XHQ8VGV4dCB0ZXh0PXtjcmVhdGVPclNhdmVUZXh0fSAvPlxuXHRcdFx0XHQ8L1ZCb3g+XG5cdFx0XHQ8L0N1c3RvbUxpc3RJdGVtPlxuXHRcdCk7XG5cblx0XHQvLyBUaGUgb3B0aW9uIHRvIGtlZXAgdGhlIGRyYWZ0IGlzIG5vdCBhdmFpbGFibGUgZm9yIG5ldyBkcmFmdHMgYW5kIGlmIHNoYWxsRm9yY2VEcmFmdFNhdmVPckRpc2NhcmQgPT09IHRydWVcblx0XHQvLyAoVHJlZVRhYmxlIGluIHRoZSBMaXN0UmVwb3J0KVxuXHRcdGlmICgoaXNTYXZlIHx8ICF0aGlzLnNoYWxsRm9yY2VEcmFmdFNhdmVPckRpc2NhcmQpICYmICF0aGlzLmlzSGlkZGVuRHJhZnQpIHtcblx0XHRcdGl0ZW1zLnB1c2goXG5cdFx0XHRcdDxDdXN0b21MaXN0SXRlbSBjdXN0b21EYXRhPXtbbmV3IEN1c3RvbURhdGEoeyBrZXk6IFwiaXRlbUtleVwiLCB2YWx1ZTogXCJkcmFmdERhdGFMb3NzT3B0aW9uS2VlcFwiIH0pXX0+XG5cdFx0XHRcdFx0PFZCb3ggY2xhc3M9XCJzYXBVaVRpbnlNYXJnaW5cIj5cblx0XHRcdFx0XHRcdDxMYWJlbCB0ZXh0PXt0aGlzLmRhdGFMb3NzUmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiU1RfRFJBRlRfREFUQUxPU1NfS0VFUF9EUkFGVF9SQkxcIil9IGRlc2lnbj1cIkJvbGRcIiAvPlxuXHRcdFx0XHRcdFx0PFRleHQgdGV4dD17dGhpcy5kYXRhTG9zc1Jlc291cmNlTW9kZWwuZ2V0VGV4dChcIlNUX0RSQUZUX0RBVEFMT1NTX0tFRVBfRFJBRlRfVE9MXCIpfSAvPlxuXHRcdFx0XHRcdDwvVkJveD5cblx0XHRcdFx0PC9DdXN0b21MaXN0SXRlbT5cblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0aXRlbXMucHVzaChcblx0XHRcdDxDdXN0b21MaXN0SXRlbSBjdXN0b21EYXRhPXtbbmV3IEN1c3RvbURhdGEoeyBrZXk6IFwiaXRlbUtleVwiLCB2YWx1ZTogXCJkcmFmdERhdGFMb3NzT3B0aW9uRGlzY2FyZFwiIH0pXX0+XG5cdFx0XHRcdDxWQm94IGNsYXNzPVwic2FwVWlUaW55TWFyZ2luXCI+XG5cdFx0XHRcdFx0PExhYmVsXG5cdFx0XHRcdFx0XHR0ZXh0PXtcblx0XHRcdFx0XHRcdFx0dGhpcy5pc0hpZGRlbkRyYWZ0XG5cdFx0XHRcdFx0XHRcdFx0PyB0aGlzLmRhdGFMb3NzUmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiU1RfRFJBRlRfREFUQUxPU1NfRElTQ0FSRF9ISURERU5fRFJBRlRfUkJMXCIpXG5cdFx0XHRcdFx0XHRcdFx0OiB0aGlzLmRhdGFMb3NzUmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiU1RfRFJBRlRfREFUQUxPU1NfRElTQ0FSRF9EUkFGVF9SQkxcIilcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGRlc2lnbj1cIkJvbGRcIlxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0PFRleHQgdGV4dD17dGhpcy5kYXRhTG9zc1Jlc291cmNlTW9kZWwuZ2V0VGV4dChcIlNUX0RSQUZUX0RBVEFMT1NTX0RJU0NBUkRfRFJBRlRfVE9MXCIpfSAvPlxuXHRcdFx0XHQ8L1ZCb3g+XG5cdFx0XHQ8L0N1c3RvbUxpc3RJdGVtPlxuXHRcdCk7XG5cblx0XHRyZXR1cm4gaXRlbXM7XG5cdH1cblxuXHQvKipcblx0ICogVGhlIGJ1aWxkaW5nIGJsb2NrIHJlbmRlciBmdW5jdGlvbi5cblx0ICogQHJldHVybnMgQW4gWE1MLWJhc2VkIHN0cmluZ1xuXHQgKi9cblx0Y3JlYXRlQ29udGVudCgpOiBEaWFsb2cge1xuXHRcdGNvbnN0IGhhc0FjdGl2ZUVudGl0eSA9IHRoaXMudmlldy5nZXRCaW5kaW5nQ29udGV4dCgpPy5nZXRPYmplY3QoKS5IYXNBY3RpdmVFbnRpdHkgPT09IHRydWU7XG5cdFx0Y29uc3QgaXNTYXZlID0gdGhpcy5pc0hpZGRlbkRyYWZ0ID8gIXRoaXMuaXNSb290Q29udGV4dE5ldyA6IGhhc0FjdGl2ZUVudGl0eTtcblx0XHRjb25zdCBkZXNjcmlwdGlvbiA9IGlzU2F2ZVxuXHRcdFx0PyB0aGlzLmRhdGFMb3NzUmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiU1RfRFJBRlRfREFUQUxPU1NfUE9QVVBfTUVTU0FHRV9TQVZFXCIpXG5cdFx0XHQ6IHRoaXMuZGF0YUxvc3NSZXNvdXJjZU1vZGVsLmdldFRleHQoXCJTVF9EUkFGVF9EQVRBTE9TU19QT1BVUF9NRVNTQUdFX0NSRUFURVwiKTtcblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8RGlhbG9nXG5cdFx0XHRcdGlkPXtnZW5lcmF0ZShbdGhpcy5nZXRJZCgpLCBcImRyYWZ0RGF0YUxvc3NEaWFsb2dcIl0pfVxuXHRcdFx0XHR0aXRsZT17dGhpcy5kYXRhTG9zc1Jlc291cmNlTW9kZWwuZ2V0VGV4dChcIldBUk5JTkdcIil9XG5cdFx0XHRcdHN0YXRlPXtWYWx1ZVN0YXRlLldhcm5pbmd9XG5cdFx0XHRcdHR5cGU9e1wiTWVzc2FnZVwifVxuXHRcdFx0XHRjb250ZW50V2lkdGg9e1wiMjJyZW1cIn1cblx0XHRcdFx0cmVmPXt0aGlzLmRhdGFMb3NzRGlhbG9nfVxuXHRcdFx0PlxuXHRcdFx0XHR7e1xuXHRcdFx0XHRcdGNvbnRlbnQ6IChcblx0XHRcdFx0XHRcdDw+XG5cdFx0XHRcdFx0XHRcdDxUZXh0IHRleHQ9e2Rlc2NyaXB0aW9ufSBjbGFzcz1cInNhcFVpVGlueU1hcmdpbkJlZ2luIHNhcFVpVGlueU1hcmdpblRvcEJvdHRvbVwiIC8+XG5cdFx0XHRcdFx0XHRcdDxMaXN0XG5cdFx0XHRcdFx0XHRcdFx0bW9kZT1cIlNpbmdsZVNlbGVjdExlZnRcIlxuXHRcdFx0XHRcdFx0XHRcdHNob3dTZXBhcmF0b3JzPVwiTm9uZVwiXG5cdFx0XHRcdFx0XHRcdFx0aW5jbHVkZUl0ZW1JblNlbGVjdGlvbj1cInRydWVcIlxuXHRcdFx0XHRcdFx0XHRcdGJhY2tncm91bmREZXNpZ249XCJUcmFuc3BhcmVudFwiXG5cdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJzYXBVaU5vQ29udGVudFBhZGRpbmdcIlxuXHRcdFx0XHRcdFx0XHRcdHJlZj17dGhpcy5vcHRpb25zTGlzdH1cblx0XHRcdFx0XHRcdFx0XHRpdGVtcz17dGhpcy5nZXRJdGVtcyhpc1NhdmUpfVxuXHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0PC8+XG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRidXR0b25zOiAoXG5cdFx0XHRcdFx0XHQ8PlxuXHRcdFx0XHRcdFx0XHRjb25maXJtQnV0dG9uID0ge3RoaXMuZ2V0Q29uZmlybUJ1dHRvbigpfVxuXHRcdFx0XHRcdFx0XHRjYW5jZWxCdXR0b24gPSB7dGhpcy5nZXRDYW5jZWxCdXR0b24oKX1cblx0XHRcdFx0XHRcdDwvPlxuXHRcdFx0XHRcdClcblx0XHRcdFx0fX1cblx0XHRcdDwvRGlhbG9nPlxuXHRcdCkgYXMgRGlhbG9nO1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUF1QnFCQSxtQkFBbUIsSUFBQUMsSUFBQSxHQUR2Q0MsY0FBYyxDQUFDLGlFQUFpRSxDQUFDLEVBQUFDLEtBQUEsR0FFaEZDLGVBQWUsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FHakJELGVBQWUsQ0FBQyxDQUFDLEVBQUFILElBQUEsQ0FBQUssTUFBQSxJQUFBQyxPQUFBLDBCQUFBQyxjQUFBO0lBQUEsU0FBQVIsb0JBQUE7TUFBQSxJQUFBUyxLQUFBO01BQUEsU0FBQUMsSUFBQSxHQUFBQyxTQUFBLENBQUFDLE1BQUEsRUFBQUMsSUFBQSxPQUFBQyxLQUFBLENBQUFKLElBQUEsR0FBQUssSUFBQSxNQUFBQSxJQUFBLEdBQUFMLElBQUEsRUFBQUssSUFBQTtRQUFBRixJQUFBLENBQUFFLElBQUEsSUFBQUosU0FBQSxDQUFBSSxJQUFBO01BQUE7TUFBQU4sS0FBQSxHQUFBRCxjQUFBLENBQUFRLElBQUEsVUFBQUgsSUFBQTtNQUFBSSwwQkFBQSxDQUFBUixLQUFBLG9CQUFBUyxXQUFBLEVBQUFULEtBQUE7TUFBQVEsMEJBQUEsQ0FBQVIsS0FBQSxpQkFBQVUsWUFBQSxFQUFBVixLQUFBO01BQUFBLEtBQUEsQ0FZVlcsNEJBQTRCLEdBQUcsS0FBSztNQUFBLE9BQUFYLEtBQUE7SUFBQTtJQUFBWSxRQUFBLEdBQUFyQixtQkFBQTtJQUFBc0IsY0FBQSxDQUFBdEIsbUJBQUEsRUFBQVEsY0FBQTtJQUFBLElBQUFlLE1BQUEsR0FBQXZCLG1CQUFBLENBQUF3QixTQUFBO0lB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
|
|
254
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEcmFmdERhdGFMb3NzRGlhbG9nIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJkZWZpbmVSZWZlcmVuY2UiLCJfZGVjMyIsIl9jbGFzcyIsIl9jbGFzczIiLCJfTWFuYWdlZE9iamVjdCIsIl90aGlzIiwiX2xlbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsInNoYWxsRm9yY2VEcmFmdFNhdmVPckRpc2NhcmQiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwib3BlbiIsImNvbnRyb2xsZXIiLCJ2aWV3IiwiZ2V0VmlldyIsImFwcENvbXBvbmVudCIsIkNvbW1vblV0aWxzIiwiZ2V0QXBwQ29tcG9uZW50IiwiaXNIaWRkZW5EcmFmdCIsImdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwiZ2V0Q2FwYWJpbGl0aWVzIiwiSGlkZGVuRHJhZnQiLCJlbmFibGVkIiwidmlld0NvbnRleHQiLCJnZXRCaW5kaW5nQ29udGV4dCIsImlzUm9vdENvbnRleHROZXciLCJlZGl0RmxvdyIsImRhdGFMb3NzUmVzb3VyY2VNb2RlbCIsImdldFJlc291cmNlTW9kZWwiLCJjcmVhdGVDb250ZW50IiwiZGF0YUxvc3NDb25maXJtIiwiaGFuZGxlRGF0YUxvc3NPayIsIm9wdGlvbnNMaXN0IiwiY3VycmVudCIsImFkZEV2ZW50RGVsZWdhdGUiLCJvbmtleXVwIiwiZSIsImtleSIsImFkZERlcGVuZGVudCIsImRhdGFMb3NzRGlhbG9nIiwic2VsZWN0QW5kRm9jdXNGaXJzdEVudHJ5IiwiUHJvbWlzZSIsInJlc29sdmUiLCJwcm9taXNlUmVzb2x2ZSIsImNsb3NlIiwiZGVzdHJveSIsImdldFNlbGVjdGVkS2V5IiwiaGFuZGxlRGF0YUxvc3NDYW5jZWwiLCJmaXJzdExpc3RJdGVtT3B0aW9uIiwiZ2V0SXRlbXMiLCJzZXRTZWxlY3RlZEl0ZW0iLCJmb2N1cyIsImdldFNlbGVjdGVkSXRlbSIsImRhdGEiLCJnZXRDb25maXJtQnV0dG9uIiwiX2pzeCIsIkJ1dHRvbiIsInRleHQiLCJnZXRUZXh0IiwidHlwZSIsInByZXNzIiwiZ2V0Q2FuY2VsQnV0dG9uIiwiaXNTYXZlIiwiY3JlYXRlT3JTYXZlVGV4dCIsImNyZWF0ZU9yU2F2ZUxhYmVsIiwiaXRlbXMiLCJwdXNoIiwiQ3VzdG9tTGlzdEl0ZW0iLCJjdXN0b21EYXRhIiwiQ3VzdG9tRGF0YSIsInZhbHVlIiwiY2hpbGRyZW4iLCJfanN4cyIsIlZCb3giLCJjbGFzcyIsIkxhYmVsIiwiZGVzaWduIiwiVGV4dCIsImhhc0FjdGl2ZUVudGl0eSIsImdldE9iamVjdCIsIkhhc0FjdGl2ZUVudGl0eSIsImRlc2NyaXB0aW9uIiwiRGlhbG9nIiwiaWQiLCJnZW5lcmF0ZSIsImdldElkIiwidGl0bGUiLCJzdGF0ZSIsIlZhbHVlU3RhdGUiLCJXYXJuaW5nIiwiY29udGVudFdpZHRoIiwiZXNjYXBlSGFuZGxlciIsInJlZiIsImNvbnRlbnQiLCJfRnJhZ21lbnQiLCJMaXN0IiwibW9kZSIsInNob3dTZXBhcmF0b3JzIiwiaW5jbHVkZUl0ZW1JblNlbGVjdGlvbiIsImJhY2tncm91bmREZXNpZ24iLCJidXR0b25zIiwiTWFuYWdlZE9iamVjdCIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRHJhZnREYXRhTG9zc0RpYWxvZy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVmaW5lUmVmZXJlbmNlLCBkZWZpbmVVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSBcInNhcC9mZS9iYXNlL2pzeC1ydW50aW1lL2pzeFwiO1xuaW1wb3J0IHsgZ2V0UmVzb3VyY2VNb2RlbCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1Jlc291cmNlTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB7IGdlbmVyYXRlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCBCdXR0b24gZnJvbSBcInNhcC9tL0J1dHRvblwiO1xuaW1wb3J0IEN1c3RvbUxpc3RJdGVtIGZyb20gXCJzYXAvbS9DdXN0b21MaXN0SXRlbVwiO1xuaW1wb3J0IERpYWxvZyBmcm9tIFwic2FwL20vRGlhbG9nXCI7XG5pbXBvcnQgTGFiZWwgZnJvbSBcInNhcC9tL0xhYmVsXCI7XG5pbXBvcnQgTGlzdCBmcm9tIFwic2FwL20vTGlzdFwiO1xuaW1wb3J0IFRleHQgZnJvbSBcInNhcC9tL1RleHRcIjtcbmltcG9ydCBWQm94IGZyb20gXCJzYXAvbS9WQm94XCI7XG5pbXBvcnQgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IEN1c3RvbURhdGEgZnJvbSBcInNhcC91aS9jb3JlL0N1c3RvbURhdGFcIjtcbmltcG9ydCB0eXBlIFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCB7IFZhbHVlU3RhdGUgfSBmcm9tIFwic2FwL3VpL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcIi4uLy4uL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwiLi4vLi4vUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIFJlc291cmNlTW9kZWwgZnJvbSBcIi4uLy4uL1Jlc291cmNlTW9kZWxcIjtcbmltcG9ydCB0eXBlIHsgSGlkZGVuRHJhZnQgfSBmcm9tIFwiLi4vLi4vY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmNvbnRyb2xzLkRhdGFMb3NzT3JEcmFmdERpc2NhcmQuRHJhZnREYXRhTG9zc0RpYWxvZ1wiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRHJhZnREYXRhTG9zc0RpYWxvZyBleHRlbmRzIE1hbmFnZWRPYmplY3Qge1xuXHRAZGVmaW5lUmVmZXJlbmNlKClcblx0ZGF0YUxvc3NEaWFsb2chOiBSZWY8RGlhbG9nPjtcblxuXHRAZGVmaW5lUmVmZXJlbmNlKClcblx0b3B0aW9uc0xpc3QhOiBSZWY8TGlzdD47XG5cblx0cHJpdmF0ZSB2aWV3ITogVmlldztcblxuXHRwcml2YXRlIGRhdGFMb3NzUmVzb3VyY2VNb2RlbCE6IFJlc291cmNlTW9kZWw7XG5cblx0LyoqXG5cdCAqIFJlc29sdmVzIHRoZSBwcm9taXNlIHdpdGggdGhlIHNlbGVjdGVkIGRpYWxvZyBsaXN0IG9wdGlvblxuXHQgKi9cblx0cHJpdmF0ZSBwcm9taXNlUmVzb2x2ZSE6IEZ1bmN0aW9uO1xuXG5cdHByaXZhdGUgc2hhbGxGb3JjZURyYWZ0U2F2ZU9yRGlzY2FyZCA9IGZhbHNlO1xuXG5cdHByaXZhdGUgaXNSb290Q29udGV4dE5ldyE6IGJvb2xlYW47XG5cblx0cHJpdmF0ZSBpc0hpZGRlbkRyYWZ0ITogYm9vbGVhbjtcblxuXHQvKipcblx0ICogT3BlbnMgdGhlIGRhdGEgbG9zcyBkaWFsb2cuXG5cdCAqIEBwYXJhbSBjb250cm9sbGVyXG5cdCAqL1xuXHRwdWJsaWMgYXN5bmMgb3Blbihjb250cm9sbGVyOiBQYWdlQ29udHJvbGxlcik6IFByb21pc2U8dW5rbm93bj4ge1xuXHRcdHRoaXMudmlldyA9IGNvbnRyb2xsZXIuZ2V0VmlldygpO1xuXHRcdGNvbnN0IGFwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudCh0aGlzLnZpZXcpO1xuXHRcdHRoaXMuaXNIaWRkZW5EcmFmdCA9IChhcHBDb21wb25lbnQuZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKT8uZ2V0Q2FwYWJpbGl0aWVzKCk/LkhpZGRlbkRyYWZ0IGFzIEhpZGRlbkRyYWZ0KT8uZW5hYmxlZDtcblx0XHRjb25zdCB2aWV3Q29udGV4dCA9IHRoaXMudmlldy5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQ7XG5cdFx0dGhpcy5pc1Jvb3RDb250ZXh0TmV3ID0gdmlld0NvbnRleHQgPyBhd2FpdCBjb250cm9sbGVyLmVkaXRGbG93LmlzUm9vdENvbnRleHROZXcodmlld0NvbnRleHQpIDogZmFsc2U7XG5cdFx0dGhpcy5zaGFsbEZvcmNlRHJhZnRTYXZlT3JEaXNjYXJkID0gY29udHJvbGxlci5lZGl0Rmxvdy5zaGFsbEZvcmNlRHJhZnRTYXZlT3JEaXNjYXJkKCk7XG5cdFx0dGhpcy5kYXRhTG9zc1Jlc291cmNlTW9kZWwgPSBnZXRSZXNvdXJjZU1vZGVsKHRoaXMudmlldyk7XG5cdFx0dGhpcy5jcmVhdGVDb250ZW50KCk7XG5cdFx0Y29uc3QgZGF0YUxvc3NDb25maXJtID0gKCk6IHZvaWQgPT4gdGhpcy5oYW5kbGVEYXRhTG9zc09rKCk7XG5cdFx0dGhpcy5vcHRpb25zTGlzdC5jdXJyZW50Py5hZGRFdmVudERlbGVnYXRlKHtcblx0XHRcdG9ua2V5dXA6IGZ1bmN0aW9uIChlOiBLZXlib2FyZEV2ZW50KSB7XG5cdFx0XHRcdGlmIChlLmtleSA9PT0gXCJFbnRlclwiKSB7XG5cdFx0XHRcdFx0ZGF0YUxvc3NDb25maXJtKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblx0XHR0aGlzLnZpZXcuYWRkRGVwZW5kZW50KHRoaXMuZGF0YUxvc3NEaWFsb2cuY3VycmVudCBhcyBVSTVFbGVtZW50KTtcblx0XHR0aGlzLmRhdGFMb3NzRGlhbG9nLmN1cnJlbnQ/Lm9wZW4oKTtcblx0XHR0aGlzLnNlbGVjdEFuZEZvY3VzRmlyc3RFbnRyeSgpO1xuXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG5cdFx0XHR0aGlzLnByb21pc2VSZXNvbHZlID0gcmVzb2x2ZTtcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVyIHRvIGNsb3NlIHRoZSBkYXRhbG9zcyBkaWFsb2cuXG5cdCAqXG5cdCAqL1xuXHRwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG5cdFx0dGhpcy5kYXRhTG9zc0RpYWxvZy5jdXJyZW50Py5jbG9zZSgpO1xuXHRcdHRoaXMuZGF0YUxvc3NEaWFsb2cuY3VycmVudD8uZGVzdHJveSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEV4ZWN1dGVzIHRoZSBsb2dpYyB3aGVuIHRoZSBkYXRhIGxvc3MgZGlhbG9nIGlzIGNvbmZpcm1lZC4gVGhlIHNlbGVjdGlvbiBvZiBhbiBvcHRpb24gcmVzb2x2ZXMgdGhlIHByb21pc2UgYW5kIGxlYWRzIHRvIHRoZVxuXHQgKiBwcm9jZXNzaW5nIG9mIHRoZSBvcmlnaW5hbGx5IHRyaWdnZXJlZCBhY3Rpb24gbGlrZSBlLmcuIGEgYmFjayBuYXZpZ2F0aW9uLlxuXHQgKlxuXHQgKi9cblxuXHRwcml2YXRlIGhhbmRsZURhdGFMb3NzT2soKTogdm9pZCB7XG5cdFx0dGhpcy5wcm9taXNlUmVzb2x2ZSh0aGlzLmdldFNlbGVjdGVkS2V5KCkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXIgdG8gY2xvc2UgdGhlIGRhdGFsb3NzIGRpYWxvZy5cblx0ICpcblx0ICovXG5cdHByaXZhdGUgaGFuZGxlRGF0YUxvc3NDYW5jZWwoKTogdm9pZCB7XG5cdFx0dGhpcy5wcm9taXNlUmVzb2x2ZShcImNhbmNlbFwiKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBmb2N1cyBvbiB0aGUgZmlyc3QgbGlzdCBpdGVtIG9mIHRoZSBkaWFsb2cuXG5cdCAqXG5cdCAqL1xuXHRwcml2YXRlIHNlbGVjdEFuZEZvY3VzRmlyc3RFbnRyeSgpOiB2b2lkIHtcblx0XHRjb25zdCBmaXJzdExpc3RJdGVtT3B0aW9uOiBDdXN0b21MaXN0SXRlbSA9IHRoaXMub3B0aW9uc0xpc3QuY3VycmVudD8uZ2V0SXRlbXMoKVswXSBhcyBDdXN0b21MaXN0SXRlbTtcblx0XHR0aGlzLm9wdGlvbnNMaXN0LmN1cnJlbnQ/LnNldFNlbGVjdGVkSXRlbShmaXJzdExpc3RJdGVtT3B0aW9uKTtcblx0XHQvLyBXZSBkbyBub3Qgc2V0IHRoZSBmb2N1cyBvbiB0aGUgYnV0dG9uLCBidXQgY2F0Y2ggdGhlIEVOVEVSIGtleSBpbiB0aGUgZGlhbG9nXG5cdFx0Ly8gYW5kIHByb2Nlc3MgaXQgYXMgT2ssIHNpbmNlIGZvY3VzaW5nIHRoZSBidXR0b24gd2FzIHJlcG9ydGVkIGFzIGFuIEFDQyBpc3N1ZVxuXHRcdGZpcnN0TGlzdEl0ZW1PcHRpb24/LmZvY3VzKCk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUga2V5IG9mIHRoZSBzZWxlY3RlZCBpdGVtIGZyb20gdGhlIGxpc3Qgb2Ygb3B0aW9ucyB0aGF0IHdhcyBzZXQgdmlhIGN1c3RvbURhdGEuXG5cdCAqIEByZXR1cm5zIFRoZSBrZXkgb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBpdGVtXG5cdCAqL1xuXHRwcml2YXRlIGdldFNlbGVjdGVkS2V5KCk6IHN0cmluZyB7XG5cdFx0Y29uc3Qgb3B0aW9uc0xpc3QgPSB0aGlzLm9wdGlvbnNMaXN0LmN1cnJlbnQgYXMgTGlzdDtcblx0XHRyZXR1cm4gb3B0aW9uc0xpc3QuZ2V0U2VsZWN0ZWRJdGVtKCkuZGF0YShcIml0ZW1LZXlcIik7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgY29uZmlybSBidXR0b24uXG5cdCAqIEByZXR1cm5zIEEgYnV0dG9uXG5cdCAqL1xuXHRwcml2YXRlIGdldENvbmZpcm1CdXR0b24oKTogQnV0dG9uIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PEJ1dHRvblxuXHRcdFx0XHR0ZXh0PXt0aGlzLmRhdGFMb3NzUmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19DT01NT05fRElBTE9HX09LXCIpfVxuXHRcdFx0XHR0eXBlPXtcIkVtcGhhc2l6ZWRcIn1cblx0XHRcdFx0cHJlc3M9eygpOiB2b2lkID0+IHRoaXMuaGFuZGxlRGF0YUxvc3NPaygpfVxuXHRcdFx0Lz5cblx0XHQpIGFzIEJ1dHRvbjtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBjYW5jZWwgYnV0dG9uLlxuXHQgKiBAcmV0dXJucyBBIGJ1dHRvblxuXHQgKi9cblx0cHJpdmF0ZSBnZXRDYW5jZWxCdXR0b24oKTogQnV0dG9uIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PEJ1dHRvblxuXHRcdFx0XHR0ZXh0PXtcblx0XHRcdFx0XHR0aGlzLmlzSGlkZGVuRHJhZnRcblx0XHRcdFx0XHRcdD8gdGhpcy5kYXRhTG9zc1Jlc291cmNlTW9kZWwuZ2V0VGV4dChcIkNfQ09NTU9OX1NBUEZFX0NMT1NFXCIpXG5cdFx0XHRcdFx0XHQ6IHRoaXMuZGF0YUxvc3NSZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX0NPTU1PTl9ESUFMT0dfQ0FOQ0VMXCIpXG5cdFx0XHRcdH1cblx0XHRcdFx0cHJlc3M9eygpOiB2b2lkID0+IHRoaXMuaGFuZGxlRGF0YUxvc3NDYW5jZWwoKX1cblx0XHRcdC8+XG5cdFx0KSBhcyBCdXR0b247XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgb3B0aW9ucyBhdmFpbGFibGUgaW4gdGhlIGRpYWxvZy5cblx0ICogQHBhcmFtIGlzU2F2ZVxuXHQgKiBAcmV0dXJucyBUaGUgb3B0aW9ucyBhcyBDdXN0b21MaXN0SXRlbXNcblx0ICovXG5cdHByaXZhdGUgZ2V0SXRlbXMoaXNTYXZlOiBib29sZWFuKTogQ3VzdG9tTGlzdEl0ZW1bXSB7XG5cdFx0bGV0IGNyZWF0ZU9yU2F2ZVRleHQgPSBcIlwiO1xuXHRcdGxldCBjcmVhdGVPclNhdmVMYWJlbCA9IHRoaXMuZGF0YUxvc3NSZXNvdXJjZU1vZGVsLmdldFRleHQoXCJTVF9EUkFGVF9EQVRBTE9TU19TQVZFX0RSQUZUX1JCTFwiKTtcblx0XHRpZiAoaXNTYXZlKSB7XG5cdFx0XHRjcmVhdGVPclNhdmVUZXh0ID0gdGhpcy5pc0hpZGRlbkRyYWZ0XG5cdFx0XHRcdD8gdGhpcy5kYXRhTG9zc1Jlc291cmNlTW9kZWwuZ2V0VGV4dChcIlNUX0RSQUZUX0RBVEFMT1NTX1NBVkVfSElEREVOX0RSQUZUX1RPTFwiKVxuXHRcdFx0XHQ6IHRoaXMuZGF0YUxvc3NSZXNvdXJjZU1vZGVsLmdldFRleHQoXCJTVF9EUkFGVF9EQVRBTE9TU19TQVZFX0RSQUZUX1RPTFwiKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y3JlYXRlT3JTYXZlTGFiZWwgPSB0aGlzLmRhdGFMb3NzUmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiU1RfRFJBRlRfREFUQUxPU1NfQ1JFQVRFX0VOVElUWV9SQkxcIik7XG5cdFx0XHRjcmVhdGVPclNhdmVUZXh0ID0gdGhpcy5kYXRhTG9zc1Jlc291cmNlTW9kZWwuZ2V0VGV4dChcIlNUX0RSQUZUX0RBVEFMT1NTX0NSRUFURV9FTlRJVFlfVE9MXCIpO1xuXHRcdH1cblx0XHRjb25zdCBpdGVtczogQ3VzdG9tTGlzdEl0ZW1bXSA9IFtdO1xuXHRcdGl0ZW1zLnB1c2goXG5cdFx0XHQ8Q3VzdG9tTGlzdEl0ZW0gY3VzdG9tRGF0YT17W25ldyBDdXN0b21EYXRhKHsga2V5OiBcIml0ZW1LZXlcIiwgdmFsdWU6IFwiZHJhZnREYXRhTG9zc09wdGlvblNhdmVcIiB9KV19PlxuXHRcdFx0XHQ8VkJveCBjbGFzcz1cInNhcFVpVGlueU1hcmdpblwiPlxuXHRcdFx0XHRcdDxMYWJlbCB0ZXh0PXtjcmVhdGVPclNhdmVMYWJlbH0gZGVzaWduPVwiQm9sZFwiIC8+XG5cdFx0XHRcdFx0PFRleHQgdGV4dD17Y3JlYXRlT3JTYXZlVGV4dH0gLz5cblx0XHRcdFx0PC9WQm94PlxuXHRcdFx0PC9DdXN0b21MaXN0SXRlbT5cblx0XHQpO1xuXG5cdFx0Ly8gVGhlIG9wdGlvbiB0byBrZWVwIHRoZSBkcmFmdCBpcyBub3QgYXZhaWxhYmxlIGZvciBuZXcgZHJhZnRzIGFuZCBpZiBzaGFsbEZvcmNlRHJhZnRTYXZlT3JEaXNjYXJkID09PSB0cnVlXG5cdFx0Ly8gKFRyZWVUYWJsZSBpbiB0aGUgTGlzdFJlcG9ydClcblx0XHRpZiAoKGlzU2F2ZSB8fCAhdGhpcy5zaGFsbEZvcmNlRHJhZnRTYXZlT3JEaXNjYXJkKSAmJiAhdGhpcy5pc0hpZGRlbkRyYWZ0KSB7XG5cdFx0XHRpdGVtcy5wdXNoKFxuXHRcdFx0XHQ8Q3VzdG9tTGlzdEl0ZW0gY3VzdG9tRGF0YT17W25ldyBDdXN0b21EYXRhKHsga2V5OiBcIml0ZW1LZXlcIiwgdmFsdWU6IFwiZHJhZnREYXRhTG9zc09wdGlvbktlZXBcIiB9KV19PlxuXHRcdFx0XHRcdDxWQm94IGNsYXNzPVwic2FwVWlUaW55TWFyZ2luXCI+XG5cdFx0XHRcdFx0XHQ8TGFiZWwgdGV4dD17dGhpcy5kYXRhTG9zc1Jlc291cmNlTW9kZWwuZ2V0VGV4dChcIlNUX0RSQUZUX0RBVEFMT1NTX0tFRVBfRFJBRlRfUkJMXCIpfSBkZXNpZ249XCJCb2xkXCIgLz5cblx0XHRcdFx0XHRcdDxUZXh0IHRleHQ9e3RoaXMuZGF0YUxvc3NSZXNvdXJjZU1vZGVsLmdldFRleHQoXCJTVF9EUkFGVF9EQVRBTE9TU19LRUVQX0RSQUZUX1RPTFwiKX0gLz5cblx0XHRcdFx0XHQ8L1ZCb3g+XG5cdFx0XHRcdDwvQ3VzdG9tTGlzdEl0ZW0+XG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdGl0ZW1zLnB1c2goXG5cdFx0XHQ8Q3VzdG9tTGlzdEl0ZW0gY3VzdG9tRGF0YT17W25ldyBDdXN0b21EYXRhKHsga2V5OiBcIml0ZW1LZXlcIiwgdmFsdWU6IFwiZHJhZnREYXRhTG9zc09wdGlvbkRpc2NhcmRcIiB9KV19PlxuXHRcdFx0XHQ8VkJveCBjbGFzcz1cInNhcFVpVGlueU1hcmdpblwiPlxuXHRcdFx0XHRcdDxMYWJlbFxuXHRcdFx0XHRcdFx0dGV4dD17XG5cdFx0XHRcdFx0XHRcdHRoaXMuaXNIaWRkZW5EcmFmdFxuXHRcdFx0XHRcdFx0XHRcdD8gdGhpcy5kYXRhTG9zc1Jlc291cmNlTW9kZWwuZ2V0VGV4dChcIlNUX0RSQUZUX0RBVEFMT1NTX0RJU0NBUkRfSElEREVOX0RSQUZUX1JCTFwiKVxuXHRcdFx0XHRcdFx0XHRcdDogdGhpcy5kYXRhTG9zc1Jlc291cmNlTW9kZWwuZ2V0VGV4dChcIlNUX0RSQUZUX0RBVEFMT1NTX0RJU0NBUkRfRFJBRlRfUkJMXCIpXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRkZXNpZ249XCJCb2xkXCJcblx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDxUZXh0IHRleHQ9e3RoaXMuZGF0YUxvc3NSZXNvdXJjZU1vZGVsLmdldFRleHQoXCJTVF9EUkFGVF9EQVRBTE9TU19ESVNDQVJEX0RSQUZUX1RPTFwiKX0gLz5cblx0XHRcdFx0PC9WQm94PlxuXHRcdFx0PC9DdXN0b21MaXN0SXRlbT5cblx0XHQpO1xuXG5cdFx0cmV0dXJuIGl0ZW1zO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoZSBidWlsZGluZyBibG9jayByZW5kZXIgZnVuY3Rpb24uXG5cdCAqIEByZXR1cm5zIEFuIFhNTC1iYXNlZCBzdHJpbmdcblx0ICovXG5cdGNyZWF0ZUNvbnRlbnQoKTogRGlhbG9nIHtcblx0XHRjb25zdCBoYXNBY3RpdmVFbnRpdHkgPSB0aGlzLnZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKT8uZ2V0T2JqZWN0KCkuSGFzQWN0aXZlRW50aXR5ID09PSB0cnVlO1xuXHRcdGNvbnN0IGlzU2F2ZSA9IHRoaXMuaXNIaWRkZW5EcmFmdCA/ICF0aGlzLmlzUm9vdENvbnRleHROZXcgOiBoYXNBY3RpdmVFbnRpdHk7XG5cdFx0Y29uc3QgZGVzY3JpcHRpb24gPSBpc1NhdmVcblx0XHRcdD8gdGhpcy5kYXRhTG9zc1Jlc291cmNlTW9kZWwuZ2V0VGV4dChcIlNUX0RSQUZUX0RBVEFMT1NTX1BPUFVQX01FU1NBR0VfU0FWRVwiKVxuXHRcdFx0OiB0aGlzLmRhdGFMb3NzUmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiU1RfRFJBRlRfREFUQUxPU1NfUE9QVVBfTUVTU0FHRV9DUkVBVEVcIik7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PERpYWxvZ1xuXHRcdFx0XHRpZD17Z2VuZXJhdGUoW3RoaXMuZ2V0SWQoKSwgXCJkcmFmdERhdGFMb3NzRGlhbG9nXCJdKX1cblx0XHRcdFx0dGl0bGU9e3RoaXMuZGF0YUxvc3NSZXNvdXJjZU1vZGVsLmdldFRleHQoXCJXQVJOSU5HXCIpfVxuXHRcdFx0XHRzdGF0ZT17VmFsdWVTdGF0ZS5XYXJuaW5nfVxuXHRcdFx0XHR0eXBlPXtcIk1lc3NhZ2VcIn1cblx0XHRcdFx0Y29udGVudFdpZHRoPXtcIjIycmVtXCJ9XG5cdFx0XHRcdGVzY2FwZUhhbmRsZXI9eygpOiB2b2lkID0+IHRoaXMuY2xvc2UoKX1cblx0XHRcdFx0cmVmPXt0aGlzLmRhdGFMb3NzRGlhbG9nfVxuXHRcdFx0PlxuXHRcdFx0XHR7e1xuXHRcdFx0XHRcdGNvbnRlbnQ6IChcblx0XHRcdFx0XHRcdDw+XG5cdFx0XHRcdFx0XHRcdDxUZXh0IHRleHQ9e2Rlc2NyaXB0aW9ufSBjbGFzcz1cInNhcFVpVGlueU1hcmdpbkJlZ2luIHNhcFVpVGlueU1hcmdpblRvcEJvdHRvbVwiIC8+XG5cdFx0XHRcdFx0XHRcdDxMaXN0XG5cdFx0XHRcdFx0XHRcdFx0bW9kZT1cIlNpbmdsZVNlbGVjdExlZnRcIlxuXHRcdFx0XHRcdFx0XHRcdHNob3dTZXBhcmF0b3JzPVwiTm9uZVwiXG5cdFx0XHRcdFx0XHRcdFx0aW5jbHVkZUl0ZW1JblNlbGVjdGlvbj1cInRydWVcIlxuXHRcdFx0XHRcdFx0XHRcdGJhY2tncm91bmREZXNpZ249XCJUcmFuc3BhcmVudFwiXG5cdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJzYXBVaU5vQ29udGVudFBhZGRpbmdcIlxuXHRcdFx0XHRcdFx0XHRcdHJlZj17dGhpcy5vcHRpb25zTGlzdH1cblx0XHRcdFx0XHRcdFx0XHRpdGVtcz17dGhpcy5nZXRJdGVtcyhpc1NhdmUpfVxuXHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0PC8+XG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRidXR0b25zOiAoXG5cdFx0XHRcdFx0XHQ8PlxuXHRcdFx0XHRcdFx0XHRjb25maXJtQnV0dG9uID0ge3RoaXMuZ2V0Q29uZmlybUJ1dHRvbigpfVxuXHRcdFx0XHRcdFx0XHRjYW5jZWxCdXR0b24gPSB7dGhpcy5nZXRDYW5jZWxCdXR0b24oKX1cblx0XHRcdFx0XHRcdDwvPlxuXHRcdFx0XHRcdClcblx0XHRcdFx0fX1cblx0XHRcdDwvRGlhbG9nPlxuXHRcdCkgYXMgRGlhbG9nO1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUF1QnFCQSxtQkFBbUIsSUFBQUMsSUFBQSxHQUR2Q0MsY0FBYyxDQUFDLGlFQUFpRSxDQUFDLEVBQUFDLEtBQUEsR0FFaEZDLGVBQWUsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FHakJELGVBQWUsQ0FBQyxDQUFDLEVBQUFILElBQUEsQ0FBQUssTUFBQSxJQUFBQyxPQUFBLDBCQUFBQyxjQUFBO0lBQUEsU0FBQVIsb0JBQUE7TUFBQSxJQUFBUyxLQUFBO01BQUEsU0FBQUMsSUFBQSxHQUFBQyxTQUFBLENBQUFDLE1BQUEsRUFBQUMsSUFBQSxPQUFBQyxLQUFBLENBQUFKLElBQUEsR0FBQUssSUFBQSxNQUFBQSxJQUFBLEdBQUFMLElBQUEsRUFBQUssSUFBQTtRQUFBRixJQUFBLENBQUFFLElBQUEsSUFBQUosU0FBQSxDQUFBSSxJQUFBO01BQUE7TUFBQU4sS0FBQSxHQUFBRCxjQUFBLENBQUFRLElBQUEsVUFBQUgsSUFBQTtNQUFBSSwwQkFBQSxDQUFBUixLQUFBLG9CQUFBUyxXQUFBLEVBQUFULEtBQUE7TUFBQVEsMEJBQUEsQ0FBQVIsS0FBQSxpQkFBQVUsWUFBQSxFQUFBVixLQUFBO01BQUFBLEtBQUEsQ0FZVlcsNEJBQTRCLEdBQUcsS0FBSztNQUFBLE9BQUFYLEtBQUE7SUFBQTtJQUFBWSxRQUFBLEdBQUFyQixtQkFBQTtJQUFBc0IsY0FBQSxD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
|
|
@@ -9,6 +9,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/core/conver
|
|
|
9
9
|
var getActionEnabledExpression = UIFormatters.getActionEnabledExpression;
|
|
10
10
|
var replaceSpecialChars = StableIdHelper.replaceSpecialChars;
|
|
11
11
|
var UI = BindingHelper.UI;
|
|
12
|
+
var Draft = BindingHelper.Draft;
|
|
12
13
|
var getCustomActionID = ID.getCustomActionID;
|
|
13
14
|
var Placement = ConfigurableObject.Placement;
|
|
14
15
|
var ActionType = ManifestSettings.ActionType;
|
|
@@ -590,7 +591,20 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/core/conver
|
|
|
590
591
|
}
|
|
591
592
|
return false;
|
|
592
593
|
}
|
|
594
|
+
|
|
595
|
+
/**
|
|
596
|
+
* Gets the binding expression for the visibility of the CreateNext button.
|
|
597
|
+
* This function centralizes the visibility logic to be reused by both getFooterDefaultActions
|
|
598
|
+
* and FooterContent.tsx.
|
|
599
|
+
* @param hiddenDraftEnabled Whether hidden draft mode is enabled
|
|
600
|
+
* @param fclEnabled Whether FCL (Flexible Column Layout) is enabled
|
|
601
|
+
* @returns A compiled binding expression for the CreateNext button visibility
|
|
602
|
+
*/
|
|
593
603
|
_exports.isActionAIOperation = isActionAIOperation;
|
|
604
|
+
function getCreateNextButtonVisibility(hiddenDraftEnabled, fclEnabled) {
|
|
605
|
+
return ifElse(hiddenDraftEnabled === true, ifElse(fclEnabled === true, and(Draft.IsNewObject, equal(pathInModel("/showSaveAndCancelButton", "fclhelper"), true)), Draft.IsNewObject), Draft.IsNewObject);
|
|
606
|
+
}
|
|
607
|
+
_exports.getCreateNextButtonVisibility = getCreateNextButtonVisibility;
|
|
594
608
|
return _exports;
|
|
595
609
|
}, false);
|
|
596
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCdXR0b25UeXBlIiwiX2V4cG9ydHMiLCJhaUljb24iLCJnZXRWaXNpYmlsaXR5RW5hYmxlbWVudE1lbnVBY3Rpb25zIiwiYWN0aW9ucyIsIm1lbnVBY3Rpb25Ob3RWaXNpYmxlIiwibWVudUFjdGlvblZpc2libGVQYXRocyIsImF0bGVhc3RPbmVNZW51SXRlbXNWaXNpYmxlIiwibWVudUl0ZW1zVmlzaWJsZVBhdGhzIiwiZm9yRWFjaCIsIm1lbnVBY3Rpb24iLCJ2aXNpYmxlIiwidmFsdWVPZiIsInB1c2giLCJtZW51IiwibGVuZ3RoIiwibWVudUl0ZW0iLCJtZW51SXRlbVZpc2libGUiLCJ0b1N0cmluZyIsImNvbXBpbGVFeHByZXNzaW9uIiwicmVzb2x2ZUJpbmRpbmdTdHJpbmciLCJ2aXNpYmxlRXhwcmVzc2lvbnMiLCJtYXAiLCJtZW51SXRlbVZpc2libGVQYXRoIiwiYW5kIiwib3IiLCJhZGRDb2xsYWJvcmF0aW9uQ29uZGl0aW9uIiwiYWN0aW9uIiwidHlwZSIsIm5vdCIsImVxdWFsIiwiVUkiLCJoYXNDb2xsYWJvcmF0aW9uQXV0aG9yaXphdGlvbiIsIm1hcEFjdGlvbkJ5S2V5IiwibWFuaWZlc3RBY3Rpb25zIiwiYW5ub3RhdGlvbkFjdGlvbnMiLCJhY3Rpb25LZXkiLCJhbm5vdGF0aW9uQWN0aW9uIiwiZmluZCIsImtleSIsIm1hbmlmZXN0QWN0aW9uIiwicmVzdWx0QWN0aW9uIiwiT2JqZWN0Iiwia2V5cyIsImZpbHRlciIsImFjdGlvbkFubm90YXRpb24iLCJBY3Rpb25UeXBlIiwiTWVudSIsImVuYWJsZWQiLCJwcm9wIiwicHJvcEtleSIsImNhbkJlTWVudUl0ZW0iLCJEYXRhRmllbGRGb3JBY3Rpb24iLCJEYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJtYXBNZW51RGVmYXVsdEFjdGlvbiIsImNvbW1hbmRBY3Rpb25zIiwiZGVmYXVsdEFjdGlvbiIsImNvbW1hbmQiLCJtYXBNZW51SXRlbXMiLCJtYXBwZWRNZW51SXRlbXMiLCJtYXRjaGluZ0Fubm90YXRpb25BY3Rpb24iLCJtZW51SXRlbUtleSIsIm1hcHBlZE1lbnVBY3Rpb24iLCJ0cmFuc2Zvcm1NZW51QWN0aW9uc0FuZElkZW50aWZ5Q29tbWFuZHMiLCJhbGxBY3Rpb25zIiwiYWN0aW9uS2V5c1RvRGVsZXRlIiwidW5kZWZpbmVkIiwiX2dldE1hbmlmZXN0RW5hYmxlZCIsImlzQW5ub3RhdGlvbkFjdGlvbiIsImNvbnZlcnRlckNvbnRleHQiLCJmb3JDb250ZXh0TWVudSIsImFyZ3VtZW50cyIsInJlc3VsdCIsImdldE1hbmlmZXN0QWN0aW9uQm9vbGVhblByb3BlcnR5V2l0aEZvcm1hdHRlciIsImludGVybmFsTW9kZWxQcm9wZXJ0eSIsImlmRWxzZSIsInJlcXVpcmVzU2VsZWN0aW9uIiwiZW5hYmxlT25TZWxlY3QiLCJwYXRoSW5Nb2RlbCIsImdyZWF0ZXJPckVxdWFsIiwiX2dldE1hbmlmZXN0VmlzaWJsZSIsIm92ZXJyaWRlTWFuaWZlc3RDb25maWd1cmF0aW9uV2l0aEFubm90YXRpb24iLCJhbm5vdGF0aW9uUGF0aCIsInByZXNzIiwidmlzaWJsZUZvckNvbnRleHRNZW51IiwiZ2V0QWN0aW9uc0Zyb21NYW5pZmVzdCIsIm5hdmlnYXRpb25TZXR0aW5ncyIsImNvbnNpZGVyTmF2aWdhdGlvblNldHRpbmdzIiwiaGlkZGVuQWN0aW9ucyIsImZhY2V0TmFtZSIsImxhc3REb3RJbmRleCIsImxhc3RJbmRleE9mIiwiaWQiLCJzdGFydHNXaXRoIiwiZ2V0Q3VzdG9tQWN0aW9uSUQiLCJEZWZhdWx0IiwiZW5hYmxlZEZvckNvbnRleHRNZW51IiwiaGFuZGxlck1vZHVsZSIsInN1YnN0cmluZyIsInJlcGxhY2UiLCJoYW5kbGVyTWV0aG9kIiwidGV4dCIsIm5vV3JhcCIsIl9fbm9XcmFwIiwicmVwbGFjZVNwZWNpYWxDaGFycyIsImRlZmF1bHRWYWx1ZXNFeHRlbnNpb25GdW5jdGlvbiIsImRlZmF1bHRWYWx1ZXNGdW5jdGlvbiIsInBvc2l0aW9uIiwiYW5jaG9yIiwicGxhY2VtZW50IiwiUGxhY2VtZW50IiwiQWZ0ZXIiLCJpc05hdmlnYWJsZSIsImlzQWN0aW9uTmF2aWdhYmxlIiwiZW5hYmxlQXV0b1Njcm9sbCIsImlubGluZSIsImlzQUlPcGVyYXRpb24iLCJwcm9wZXJ0eVZhbHVlIiwicmVzb2x2ZWRCaW5kaW5nIiwiaXNDb25zdGFudCIsInZhbHVlIiwiY29uc3RhbnQiLCJtZXRob2RQYXRoIiwiZm9ybWF0UmVzdWx0IiwiZnBtRm9ybWF0dGVyIiwiY3VzdG9tQm9vbGVhblByb3BlcnR5Q2hlY2siLCJnZXREYXRhTW9kZWxPYmplY3RQYXRoIiwiY29udGV4dExvY2F0aW9uIiwidGFyZ2V0RW50aXR5VHlwZSIsImdldEVudGl0eVR5cGUiLCJyZW1vdmVEdXBsaWNhdGVBY3Rpb25zIiwib01lbnVJdGVtS2V5cyIsImFjdGlvbk1lbnUiLCJyZWR1Y2UiLCJpdGVtIiwiX3JlZiIsImdldEVuYWJsZWRGb3JBbm5vdGF0aW9uQWN0aW9uRXhwcmVzc2lvbiIsImFjdGlvblRhcmdldCIsInBhdGhGcm9tQ29udGV4dExvY2F0aW9uIiwiYW5ub3RhdGlvbnMiLCJDb3JlIiwiT3BlcmF0aW9uQXZhaWxhYmxlIiwiZGF0YU1vZGVsT2JqZWN0UGF0aCIsImlzRW5hYmxlZEV4cCIsImdldEFjdGlvbkVuYWJsZWRFeHByZXNzaW9uIiwiZ2V0Q29udmVydGVkVHlwZXMiLCJjb2xsYWJvcmF0aW9uT25Sb290IiwiTW9kZWxIZWxwZXIiLCJpc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZEZyb21Db252ZXJ0ZXJDb250ZXh0IiwiZ2V0RHJhZnRSb290IiwiZ2V0RW50aXR5U2V0IiwiZ2V0RW5hYmxlZEZvckFubm90YXRpb25BY3Rpb24iLCJnZXRTZW1hbnRpY09iamVjdE1hcHBpbmciLCJtYXBwaW5ncyIsIm1hcHBpbmciLCJMb2NhbFByb3BlcnR5IiwiJFByb3BlcnR5UGF0aCIsIlNlbWFudGljT2JqZWN0UHJvcGVydHkiLCJiSXNOYXZpZ2F0aW9uQ29uZmlndXJlZCIsImRldGFpbE9yRGlzcGxheSIsImRldGFpbCIsImRpc3BsYXkiLCJyb3V0ZSIsImFmdGVyRXhlY3V0aW9uIiwibmF2aWdhdGVUb0luc3RhbmNlIiwiZGF0YUZpZWxkSXNDb3B5QWN0aW9uIiwiZGF0YUZpZWxkIiwiSXNDb3B5QWN0aW9uIiwiJFR5cGUiLCJnZXRDb3B5QWN0aW9uIiwiY29weURhdGFGaWVsZHMiLCJMb2ciLCJlcnJvciIsImdldEFubm90YXRpb25NZW51QWN0aW9uSXRlbXMiLCJtZW51QWN0aW9uSXRlbXMiLCJnZXRNYXRjaGluZ01hbmlmZXN0QWN0aW9uIiwiYW5ub3RhdGlvbk1lbnVJdGVtcyIsIm1hdGNoaW5nTWFuaWZlc3RBY3Rpb25zIiwicHJlcGFyZU1lbnVBY3Rpb25zIiwidW5wcmVwYXJlZEFjdGlvbnMiLCJvdmVycmlkZU1lbnVBY3Rpb25zIiwiZm91bmRBY3Rpb24iLCJtZW51SXRlbUluZGV4Iiwib3ZlcnJpZGVNZW51QWN0aW9uIiwic3BsaWNlIiwiaXNNZW51QUlPcGVyYXRpb24iLCJldmVyeSIsImlzQWN0aW9uQUlPcGVyYXRpb24iLCJBY3Rpb25UYXJnZXQiLCJJc0FJT3BlcmF0aW9uIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJBY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBY3Rpb24gfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgU2VtYW50aWNPYmplY3RNYXBwaW5nVHlwZSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQ29tbW9uXCI7XG5pbXBvcnQgdHlwZSB7XG5cdERhdGFGaWVsZEZvckFjdGlvbkFic3RyYWN0VHlwZXMsXG5cdERhdGFGaWVsZEZvckFjdGlvbkdyb3VwVHlwZXMsXG5cdERhdGFGaWVsZEZvckFjdGlvblR5cGVzXG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IFVJQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSB7IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7XG5cdGFuZCxcblx0Y29tcGlsZUV4cHJlc3Npb24sXG5cdGNvbnN0YW50LFxuXHRlcXVhbCxcblx0Zm9ybWF0UmVzdWx0LFxuXHRncmVhdGVyT3JFcXVhbCxcblx0aWZFbHNlLFxuXHRpc0NvbnN0YW50LFxuXHRub3QsXG5cdG9yLFxuXHRwYXRoSW5Nb2RlbCxcblx0cmVzb2x2ZUJpbmRpbmdTdHJpbmdcbn0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgdHlwZSB7XG5cdEN1c3RvbURlZmluZWRUYWJsZUNvbHVtbkZvck92ZXJyaWRlLFxuXHRNYW5pZmVzdEFjdGlvbixcblx0TmF2aWdhdGlvblNldHRpbmdzQ29uZmlndXJhdGlvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBBY3Rpb25UeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHR5cGUgeyBQYWdlQ29udGV4dFBhdGhUYXJnZXQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9UZW1wbGF0ZUNvbnZlcnRlclwiO1xuaW1wb3J0IHR5cGUgeyBDb25maWd1cmFibGVPYmplY3QsIEN1c3RvbUVsZW1lbnQsIE92ZXJyaWRlVHlwZSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvQ29uZmlndXJhYmxlT2JqZWN0XCI7XG5pbXBvcnQgeyBQbGFjZW1lbnQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0NvbmZpZ3VyYWJsZU9iamVjdFwiO1xuaW1wb3J0IHsgZ2V0Q3VzdG9tQWN0aW9uSUQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0lEXCI7XG5pbXBvcnQgZnBtRm9ybWF0dGVyIGZyb20gXCJzYXAvZmUvY29yZS9mb3JtYXR0ZXJzL0ZQTUZvcm1hdHRlclwiO1xuaW1wb3J0IHsgVUkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nSGVscGVyXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB7IHJlcGxhY2VTcGVjaWFsQ2hhcnMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHsgZ2V0QWN0aW9uRW5hYmxlZEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCB0eXBlIFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9WaWV3XCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBNZXRhTW9kZWxUeXBlIH0gZnJvbSBcInR5cGVzL21ldGFtb2RlbF90eXBlc1wiO1xuaW1wb3J0IHR5cGUgQ29udmVydGVyQ29udGV4dCBmcm9tIFwiLi4vLi4vQ29udmVydGVyQ29udGV4dFwiO1xuXG5leHBvcnQgZW51bSBCdXR0b25UeXBlIHtcblx0QWNjZXB0ID0gXCJBY2NlcHRcIixcblx0QXR0ZW50aW9uID0gXCJBdHRlbnRpb25cIixcblx0QmFjayA9IFwiQmFja1wiLFxuXHRDcml0aWNhbCA9IFwiQ3JpdGljYWxcIixcblx0RGVmYXVsdCA9IFwiRGVmYXVsdFwiLFxuXHRFbXBoYXNpemVkID0gXCJFbXBoYXNpemVkXCIsXG5cdEdob3N0ID0gXCJHaG9zdFwiLFxuXHROZWdhdGl2ZSA9IFwiTmVnYXRpdmVcIixcblx0TmV1dHJhbCA9IFwiTmV1dHJhbFwiLFxuXHRSZWplY3QgPSBcIlJlamVjdFwiLFxuXHRTdWNjZXNzID0gXCJTdWNjZXNzXCIsXG5cdFRyYW5zcGFyZW50ID0gXCJUcmFuc3BhcmVudFwiLFxuXHRVbnN0eWxlZCA9IFwiVW5zdHlsZWRcIixcblx0VXAgPSBcIlVwXCJcbn1cblxuZXhwb3J0IGNvbnN0IGFpSWNvbiA9IFwic2FwLWljb246Ly9haVwiO1xuXG5leHBvcnQgdHlwZSBCYXNlQWN0aW9uID0gQ29uZmlndXJhYmxlT2JqZWN0ICYge1xuXHRpZD86IHN0cmluZztcblx0dGV4dD86IHN0cmluZztcblx0dHlwZT86IEFjdGlvblR5cGU7XG5cdHByZXNzPzogc3RyaW5nO1xuXHRlbmFibGVkPzogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdGVuYWJsZWRGb3JDb250ZXh0TWVudT86IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXHR2aXNpYmxlPzogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdHZpc2libGVGb3JDb250ZXh0TWVudT86IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXHRlbmFibGVPblNlbGVjdD86IHN0cmluZztcblx0YW5ub3RhdGlvblBhdGg/OiBzdHJpbmc7XG5cdGRlZmF1bHRWYWx1ZXNFeHRlbnNpb25GdW5jdGlvbj86IHN0cmluZztcblx0aXNOYXZpZ2FibGU/OiBib29sZWFuO1xuXHRlbmFibGVBdXRvU2Nyb2xsPzogYm9vbGVhbjtcblx0cGFyZW50RW50aXR5RGVsZXRlRW5hYmxlZD86IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXHRtZW51PzogQmFzZUFjdGlvbltdO1xuXHRmYWNldE5hbWU/OiBzdHJpbmc7XG5cdGNvbW1hbmQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdGlzQUlPcGVyYXRpb24/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgQW5ub3RhdGlvbkFjdGlvbiA9IEJhc2VBY3Rpb24gJiB7XG5cdHR5cGU6IEFjdGlvblR5cGUuRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uIHwgQWN0aW9uVHlwZS5EYXRhRmllbGRGb3JBY3Rpb24gfCBBY3Rpb25UeXBlLk1lbnUgfCBBY3Rpb25UeXBlLkNvcHk7XG5cdGFubm90YXRpb25QYXRoOiBzdHJpbmc7XG5cdGN1c3RvbURhdGE/OiBzdHJpbmc7XG5cdHJlcXVpcmVzRGlhbG9nPzogc3RyaW5nO1xuXHRiaW5kaW5nPzogc3RyaW5nO1xuXHRidXR0b25UeXBlPzogQnV0dG9uVHlwZS5HaG9zdCB8IEJ1dHRvblR5cGUuVHJhbnNwYXJlbnQgfCBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBBbm5vdGF0aW9uQWN0aW9uQWN0aW9uR3JvdXAgPSBCYXNlQWN0aW9uICYge1xuXHQvLyBpbXBsZW1lbnRzIERhdGFGaWVsZEZvckFjdGlvbkdyb3VwXG5cdHR5cGU6IEFjdGlvblR5cGUuTWVudTtcblx0bWVudTogQW5ub3RhdGlvbkFjdGlvbltdO1xufTtcblxuZXhwb3J0IHR5cGUgQ3VzdG9tQWN0aW9uID0gQ3VzdG9tRWxlbWVudDxcblx0QmFzZUFjdGlvbiAmIHtcblx0XHRoYW5kbGVyTWV0aG9kPzogc3RyaW5nO1xuXHRcdGhhbmRsZXJNb2R1bGU/OiBzdHJpbmc7XG5cdFx0bm9XcmFwPzogYm9vbGVhbjsgLy8gSW5kaWNhdGVzIHRoYXQgd2Ugd2FudCB0byBhdm9pZCB0aGUgd3JhcHBpbmcgZnJvbSB0aGUgRlBNSGVscGVyXG5cdFx0cmVxdWlyZXNTZWxlY3Rpb24/OiBib29sZWFuO1xuXHRcdGRlZmF1bHRBY3Rpb24/OiBzdHJpbmcgfCBCYXNlQWN0aW9uIHwgQ3VzdG9tQWN0aW9uOyAvLyBJbmRpY2F0ZXMgd2hldGhlciBhIGRlZmF1bHQgYWN0aW9uIGV4aXN0cyBpbiB0aGlzIGNvbnRleHRcblx0fVxuPjtcblxuZXhwb3J0IHR5cGUgQW5ub3RhdGlvbkFjdGlvbkdyb3VwID0gQmFzZUFjdGlvbiAmIHtcblx0Ly8gaW1wbGVtZW50cyBEYXRhRmllbGRGb3JBY3Rpb25Hcm91cFxuXHR0eXBlOiBBY3Rpb25UeXBlLk1lbnU7XG5cdG1lbnU6IEFubm90YXRpb25BY3Rpb25bXTtcbn07XG5cbmV4cG9ydCB0eXBlIENvbWJpbmVkQWN0aW9uID0ge1xuXHRhY3Rpb25zOiBCYXNlQWN0aW9uW107XG5cdGNvbW1hbmRBY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21BY3Rpb24+O1xufTtcblxuZXhwb3J0IHR5cGUgT3ZlcnJpZGVUeXBlQWN0aW9uID0ge1xuXHRlbmFibGVBdXRvU2Nyb2xsPzogT3ZlcnJpZGVUeXBlLm92ZXJ3cml0ZTtcblx0ZGVmYXVsdFZhbHVlc0V4dGVuc2lvbkZ1bmN0aW9uPzogT3ZlcnJpZGVUeXBlLm92ZXJ3cml0ZTtcblx0aXNOYXZpZ2FibGU/OiBPdmVycmlkZVR5cGUub3ZlcndyaXRlO1xuXHRlbmFibGVPblNlbGVjdD86IE92ZXJyaWRlVHlwZS5vdmVyd3JpdGU7XG5cdG1lbnU/OiBPdmVycmlkZVR5cGUub3ZlcndyaXRlO1xuXG5cdC8vIENhbiBiZSBvdmVyd3JpdHRlbiBieSBtYW5pZmVzdCBjb25maWd1cmF0aW9uIGFuZCBzaG91bGQgYmUgYWxpZ25lZCBmb3IgYWxsIGFjdGlvbnNcblx0ZW5hYmxlZDogT3ZlcnJpZGVUeXBlLm92ZXJ3cml0ZTtcblx0dmlzaWJsZTogT3ZlcnJpZGVUeXBlLm92ZXJ3cml0ZTtcblx0dmlzaWJsZUZvckNvbnRleHRNZW51PzogT3ZlcnJpZGVUeXBlLm92ZXJ3cml0ZTtcblx0Y29tbWFuZDogT3ZlcnJpZGVUeXBlLm92ZXJ3cml0ZTtcblx0cG9zaXRpb246IE92ZXJyaWRlVHlwZS5vdmVyd3JpdGU7XG59O1xuXG5leHBvcnQgdHlwZSBEYXRhRmllbGRGb3JBY3Rpb25PckFjdGlvbkdyb3VwID0gRGF0YUZpZWxkRm9yQWN0aW9uVHlwZXMgfCBEYXRhRmllbGRGb3JBY3Rpb25Hcm91cFR5cGVzO1xuXG50eXBlIE1lbnVBY3Rpb24gPVxuXHR8IEJhc2VBY3Rpb25cblx0fCB7XG5cdFx0XHR2aXNpYmxlPzogc3RyaW5nW107XG5cdFx0XHRlbmFibGVkPzogc3RyaW5nW107XG5cdFx0XHRtZW51PzogQmFzZUFjdGlvbltdO1xuXHQgIH07XG4vKipcbiAqIE1ldGhvZCBwcm92aWRlcyBhY3Rpb25zIGNvbGxlY3Rpb24gYWZ0ZXIgY2FsY3VsYXRpbmcgdGhlIHZpc2libGUgc2V0dGluZyBmb3IgYWxsIGFjdGlvbnMgb2YgdHlwZSBtZW51IGRlcGVuZGluZyBvbiBpdHMgdmlzaWJsZSBzZXR0aW5nIGFuZCBpdHMgbWVudSBpdGVtcyB2aXNpYmxlIHNldHRpbmdzLlxuICogQHBhcmFtIGFjdGlvbnMgQ29sbGVjdGlvbiBvZiBhY3Rpb25zXG4gKiBAcmV0dXJucyBDb2xsZWN0aW9uIG9mIGFjdGlvbnMgd2l0aCB2aXNpYmxlIHNldHRpbmcgc2V0IGZvciBhY3Rpb25zIG9mIHR5cGUgbWVudVxuICovXG5leHBvcnQgY29uc3QgZ2V0VmlzaWJpbGl0eUVuYWJsZW1lbnRNZW51QWN0aW9ucyA9IChhY3Rpb25zOiBDdXN0b21BY3Rpb25bXSk6IEN1c3RvbUFjdGlvbltdID0+IHtcblx0bGV0IG1lbnVBY3Rpb25Ob3RWaXNpYmxlOiBzdHJpbmcgfCBib29sZWFuLFxuXHRcdG1lbnVBY3Rpb25WaXNpYmxlUGF0aHM6IHN0cmluZ1tdLFxuXHRcdGF0bGVhc3RPbmVNZW51SXRlbXNWaXNpYmxlOiBib29sZWFuLFxuXHRcdG1lbnVJdGVtc1Zpc2libGVQYXRoczogc3RyaW5nW107XG5cdGFjdGlvbnMuZm9yRWFjaCgobWVudUFjdGlvbjogTWVudUFjdGlvbikgPT4ge1xuXHRcdG1lbnVBY3Rpb25Ob3RWaXNpYmxlID0gbWVudUFjdGlvbi52aXNpYmxlPy52YWx1ZU9mKCkgPT09IFwiZmFsc2VcIjtcblx0XHRhdGxlYXN0T25lTWVudUl0ZW1zVmlzaWJsZSA9IGZhbHNlO1xuXHRcdG1lbnVJdGVtc1Zpc2libGVQYXRocyA9IFtdO1xuXHRcdG1lbnVBY3Rpb25WaXNpYmxlUGF0aHMgPSBbXTtcblx0XHRpZiAobWVudUFjdGlvbi52aXNpYmxlICYmICEobWVudUFjdGlvbi52aXNpYmxlLnZhbHVlT2YoKSA9PT0gXCJ0cnVlXCIgfHwgbWVudUFjdGlvbi52aXNpYmxlLnZhbHVlT2YoKSA9PT0gXCJmYWxzZVwiKSkge1xuXHRcdFx0bWVudUFjdGlvblZpc2libGVQYXRocy5wdXNoKG1lbnVBY3Rpb24udmlzaWJsZSBhcyBzdHJpbmcpO1xuXHRcdH1cblx0XHRpZiAobWVudUFjdGlvbj8ubWVudT8ubGVuZ3RoKSB7XG5cdFx0XHRtZW51QWN0aW9uPy5tZW51Py5mb3JFYWNoKChtZW51SXRlbTogQmFzZUFjdGlvbik6IHZvaWQgPT4ge1xuXHRcdFx0XHRjb25zdCBtZW51SXRlbVZpc2libGUgPSBtZW51SXRlbS52aXNpYmxlO1xuXHRcdFx0XHRpZiAobWVudUl0ZW1WaXNpYmxlICYmICh0eXBlb2YgbWVudUl0ZW1WaXNpYmxlID09PSBcImJvb2xlYW5cIiB8fCBtZW51SXRlbVZpc2libGUudmFsdWVPZigpID09PSBcInRydWVcIikpIHtcblx0XHRcdFx0XHRhdGxlYXN0T25lTWVudUl0ZW1zVmlzaWJsZSA9IHRydWU7XG5cdFx0XHRcdH0gZWxzZSBpZiAobWVudUl0ZW1WaXNpYmxlICYmIG1lbnVJdGVtVmlzaWJsZS52YWx1ZU9mKCkgIT09IFwiZmFsc2VcIikge1xuXHRcdFx0XHRcdG1lbnVJdGVtc1Zpc2libGVQYXRocy5wdXNoKG1lbnVJdGVtVmlzaWJsZS52YWx1ZU9mKCkpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdGlmIChtZW51QWN0aW9uTm90VmlzaWJsZSkge1xuXHRcdFx0XHQvLyBpZiBtZW51IGlzIHN0YXRpY2FsbHkgdmlzaWJsZSBmYWxzZVxuXHRcdFx0XHRtZW51QWN0aW9uLnZpc2libGUgPSBmYWxzZS50b1N0cmluZygpO1xuXHRcdFx0fSBlbHNlIGlmICghYXRsZWFzdE9uZU1lbnVJdGVtc1Zpc2libGUgJiYgIW1lbnVJdGVtc1Zpc2libGVQYXRocy5sZW5ndGgpIHtcblx0XHRcdFx0Ly8gaWYgYWxsIG1lbnUgaXRlbXMgYXJlIHN0YXRpY2FsbHkgdmlzaWJsZSBmYWxzZVxuXHRcdFx0XHRtZW51QWN0aW9uLnZpc2libGUgPSBmYWxzZS50b1N0cmluZygpO1xuXHRcdFx0fSBlbHNlIGlmIChhdGxlYXN0T25lTWVudUl0ZW1zVmlzaWJsZSAmJiAhbWVudUFjdGlvblZpc2libGVQYXRocy5sZW5ndGgpIHtcblx0XHRcdFx0Ly8gaWYgYXQgbGVhc3Qgb25lIG1lbnUgaXRlbSBpcyBzdGF0aWNhbGx5IHZpc2libGUgdHJ1ZSBhbmQgbm8gdmlzaWJsZSBzZXR0aW5nIGZvciBtZW51XG5cdFx0XHRcdG1lbnVBY3Rpb24udmlzaWJsZSA9IHRydWUudG9TdHJpbmcoKTtcblx0XHRcdH0gZWxzZSBpZiAoYXRsZWFzdE9uZU1lbnVJdGVtc1Zpc2libGUpIHtcblx0XHRcdFx0Ly8gaWYgYXQgbGVhc3Qgb25lIG1lbnUgaXRlbSwgdGhlbiBqdXN0IGNvbnNpZGVyIHZpc2libGUgc2V0dGluZyBvZiB0aGUgbWVudVxuXHRcdFx0XHRtZW51QWN0aW9uLnZpc2libGUgPSBjb21waWxlRXhwcmVzc2lvbihyZXNvbHZlQmluZGluZ1N0cmluZyhtZW51QWN0aW9uLnZpc2libGUgYXMgc3RyaW5nKSk7XG5cdFx0XHR9IGVsc2UgaWYgKG1lbnVBY3Rpb25WaXNpYmxlUGF0aHMubGVuZ3RoIHx8IG1lbnVJdGVtc1Zpc2libGVQYXRocy5sZW5ndGgpIHtcblx0XHRcdFx0Ly8gSWYgdGhlIG1lbnUgaXMgc2V0IHRvIGludmlzaWJsZSwgaXQgc2hvdWxkIGJlIGludmlzaWJsZSwgb3RoZXJ3aXNlIHRoZSB2aXNpYmlsaXR5IHNob3VsZCBiZSBjYWxjdWxhdGVkIGZyb20gdGhlIGl0ZW1zXG5cdFx0XHRcdGNvbnN0IHZpc2libGVFeHByZXNzaW9uczogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+W10gPSBtZW51SXRlbXNWaXNpYmxlUGF0aHMubWFwKChtZW51SXRlbVZpc2libGVQYXRoKSA9PlxuXHRcdFx0XHRcdHJlc29sdmVCaW5kaW5nU3RyaW5nKG1lbnVJdGVtVmlzaWJsZVBhdGgsIFwiYm9vbGVhblwiKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRtZW51QWN0aW9uLnZpc2libGUgPSBjb21waWxlRXhwcmVzc2lvbihcblx0XHRcdFx0XHRhbmQocmVzb2x2ZUJpbmRpbmdTdHJpbmcoKG1lbnVBY3Rpb24udmlzaWJsZSBhcyBzdHJpbmcpIHx8IHRydWUsIFwiYm9vbGVhblwiKSwgb3IoLi4udmlzaWJsZUV4cHJlc3Npb25zKSlcblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG1lbnVBY3Rpb24udmlzaWJsZSA9ICghbWVudUFjdGlvbk5vdFZpc2libGUpLnRvU3RyaW5nKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIGFjdGlvbnM7XG59O1xuXG4vKipcbiAqIEFkZHMgdGhlIGNvbGxhYm9yYXRpb24gY29uZGl0aW9uIHRvIGFsbCBhY3Rpb25zIHdpdGggdHlwZSBGb3JBY3Rpb24uXG4gKiBUaGlzIGRpc2FibGVzIHRoZSBhY3Rpb25zIGlmIHRoZSBjb2xsYWJvcmF0aW9uIGlzIGVuYWJsZWQsIGJ1dCB0aGUgdXNlciBkb2Vzbid0IGhhdmUgdGhlIGF1dGhvcml6YXRpb24gZnJvbSB0aGUgYmFjayBlbmQuXG4gKiBAcGFyYW0gYWN0aW9ucyBUaGUgbGlzdCBvZiBkZWZpbml0aW9ucyBvZiB0aGUgdGFibGUgYWN0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZENvbGxhYm9yYXRpb25Db25kaXRpb24oYWN0aW9uczogQ3VzdG9tQWN0aW9uW10pOiB2b2lkIHtcblx0YWN0aW9ucy5mb3JFYWNoKChhY3Rpb24pID0+IHtcblx0XHRpZiAoYWN0aW9uLnZpc2libGU/LnZhbHVlT2YoKSA9PT0gXCJmYWxzZVwiKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGlmIChhY3Rpb24udHlwZSA9PT0gXCJGb3JBY3Rpb25cIikge1xuXHRcdFx0YWN0aW9uLnZpc2libGUgPSBjb21waWxlRXhwcmVzc2lvbihcblx0XHRcdFx0YW5kKHJlc29sdmVCaW5kaW5nU3RyaW5nKGFjdGlvbi52aXNpYmxlIGFzIHN0cmluZywgXCJib29sZWFuXCIpLCBub3QoZXF1YWwoVUkuaGFzQ29sbGFib3JhdGlvbkF1dGhvcml6YXRpb24sIGZhbHNlKSkpXG5cdFx0XHQpO1xuXHRcdH1cblx0fSk7XG59XG5cbi8qKlxuICogTWFwcyBhbiBhY3Rpb24gYnkgaXRzIGtleSwgYmFzZWQgb24gdGhlIGdpdmVuIGFubm90YXRpb24gYWN0aW9ucyBhbmQgbWFuaWZlc3QgY29uZmlndXJhdGlvbi4gVGhlIHJlc3VsdCBhbHJlYWR5IHJlcHJlc2VudHMgdGhlXG4gKiBtZXJnZWQgYWN0aW9uIGZyb20gYm90aCBjb25maWd1cmF0aW9uIHNvdXJjZXMuXG4gKlxuICogVGhpcyBmdW5jdGlvbiBhbHNvIHJldHVybnMgYW4gaW5kaWNhdGlvbiB3aGV0aGVyIHRoZSBhY3Rpb24gY2FuIGJlIGEgbWVudSBpdGVtLCBzYXlpbmcgd2hldGhlciBpdCBpcyB2aXNpYmxlIG9yIG9mIGEgc3BlY2lmaWMgdHlwZVxuICogdGhhdCBhbGxvd3MgdGhpcy5cbiAqIEBwYXJhbSBtYW5pZmVzdEFjdGlvbnMgQWN0aW9ucyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdFxuICogQHBhcmFtIGFubm90YXRpb25BY3Rpb25zIEFjdGlvbnMgZGVmaW5lZCB0aHJvdWdoIGFubm90YXRpb25zXG4gKiBAcGFyYW0gYWN0aW9uS2V5IEFjdGlvbiBLZXkgdG8gbG9vayB1cFxuICogQHJldHVybnMgTWVyZ2VkIGFjdGlvbiBhbmQgaW5kaWNhdG9yIHdoZXRoZXIgaXQgY2FuIGJlIGEgbWVudSBpdGVtXG4gKi9cbmZ1bmN0aW9uIG1hcEFjdGlvbkJ5S2V5KFxuXHRtYW5pZmVzdEFjdGlvbnM6IFJlY29yZDxzdHJpbmcsIFBhcnRpYWxseUNvbnZlcnRlZEN1c3RvbUFjdGlvbj4sXG5cdGFubm90YXRpb25BY3Rpb25zOiBCYXNlQWN0aW9uW10sXG5cdGFjdGlvbktleTogc3RyaW5nXG4pOiB7IGFjdGlvbjogQmFzZUFjdGlvbiB8IEN1c3RvbUFjdGlvbjsgY2FuQmVNZW51SXRlbTogYm9vbGVhbiB8IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0ge1xuXHRjb25zdCBhbm5vdGF0aW9uQWN0aW9uID0gYW5ub3RhdGlvbkFjdGlvbnMuZmluZCgoYWN0aW9uKSA9PiBhY3Rpb24ua2V5ID09PSBhY3Rpb25LZXkpO1xuXHRjb25zdCBtYW5pZmVzdEFjdGlvbiA9IG1hbmlmZXN0QWN0aW9uc1thY3Rpb25LZXldO1xuXHRsZXQgcmVzdWx0QWN0aW9uOiBQYXJ0aWFsbHlDb252ZXJ0ZWRDdXN0b21BY3Rpb24gfCBCYXNlQWN0aW9uID0geyAuLi4oYW5ub3RhdGlvbkFjdGlvbiA/PyBtYW5pZmVzdEFjdGlvbikgfTtcblxuXHQvLyBhY3Rpb25zIGluc2lkZSBtZW51cyBjYW4ndCBiZSBmb3VuZCBvbiB0b3AgbGV2ZWwsIHNvIGFzc2lnbiBhY3Rpb25zIGZyb20gbWVudSB0byBpdFxuXHRpZiAoT2JqZWN0LmtleXMocmVzdWx0QWN0aW9uKS5sZW5ndGggPT09IDApIHtcblx0XHRhbm5vdGF0aW9uQWN0aW9uc1xuXHRcdFx0LmZpbHRlcigoYWN0aW9uQW5ub3RhdGlvbjogQmFzZUFjdGlvbikgPT4ge1xuXHRcdFx0XHRyZXR1cm4gYWN0aW9uQW5ub3RhdGlvbi50eXBlID09PSBBY3Rpb25UeXBlLk1lbnU7XG5cdFx0XHR9KVxuXHRcdFx0LmZvckVhY2goKG1lbnVBY3Rpb246IEJhc2VBY3Rpb24pID0+IHtcblx0XHRcdFx0bWVudUFjdGlvbi5tZW51Py5mb3JFYWNoKChtZW51SXRlbTogQmFzZUFjdGlvbikgPT4ge1xuXHRcdFx0XHRcdGlmIChtZW51SXRlbS5rZXkgPT09IGFjdGlvbktleSkge1xuXHRcdFx0XHRcdFx0cmVzdWx0QWN0aW9uID0gbWVudUl0ZW07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHR9XG5cblx0Ly8gQW5ub3RhdGlvbiBhY3Rpb24gYW5kIG1hbmlmZXN0IGNvbmZpZ3VyYXRpb24gYWxyZWFkeSBoYXMgdG8gYmUgbWVyZ2VkIGhlcmUgYXMgaW5zZXJ0Q3VzdG9tRWxlbWVudHMgb25seSBjb25zaWRlcnMgdG9wLWxldmVsIGFjdGlvbnNcblx0aWYgKGFubm90YXRpb25BY3Rpb24pIHtcblx0XHQvLyBJZiBlbmFibGVkIG9yIHZpc2libGUgaXMgbm90IHNldCBpbiB0aGUgbWFuaWZlc3QsIHVzZSB0aGUgYW5ub3RhdGlvbiB2YWx1ZSBhbmQgaGVuY2UgZG8gbm90IG92ZXJ3cml0ZVxuXHRcdHJlc3VsdEFjdGlvbi5lbmFibGVkID0gbWFuaWZlc3RBY3Rpb24/LmVuYWJsZWQgPz8gYW5ub3RhdGlvbkFjdGlvbi5lbmFibGVkO1xuXHRcdHJlc3VsdEFjdGlvbi52aXNpYmxlID0gbWFuaWZlc3RBY3Rpb24/LnZpc2libGUgPz8gYW5ub3RhdGlvbkFjdGlvbi52aXNpYmxlO1xuXG5cdFx0Zm9yIChjb25zdCBwcm9wIGluIG1hbmlmZXN0QWN0aW9uIHx8IHt9KSB7XG5cdFx0XHRjb25zdCBwcm9wS2V5ID0gcHJvcCBhcyBrZXlvZiBCYXNlQWN0aW9uO1xuXHRcdFx0aWYgKCFhbm5vdGF0aW9uQWN0aW9uW3Byb3BLZXldICYmIHByb3BLZXkgIT09IFwibWVudVwiKSB7XG5cdFx0XHRcdHJlc3VsdEFjdGlvbltwcm9wS2V5XSA9IG1hbmlmZXN0QWN0aW9uW3Byb3BLZXldIGFzIG5ldmVyO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGNvbnN0IGNhbkJlTWVudUl0ZW0gPVxuXHRcdHJlc3VsdEFjdGlvbj8udmlzaWJsZSB8fFxuXHRcdHJlc3VsdEFjdGlvbj8udHlwZSA9PT0gQWN0aW9uVHlwZS5EYXRhRmllbGRGb3JBY3Rpb24gfHxcblx0XHRyZXN1bHRBY3Rpb24/LnR5cGUgPT09IEFjdGlvblR5cGUuRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uO1xuXG5cdHJldHVybiB7XG5cdFx0YWN0aW9uOiByZXN1bHRBY3Rpb24gYXMgQmFzZUFjdGlvbiB8IEN1c3RvbUFjdGlvbixcblx0XHRjYW5CZU1lbnVJdGVtXG5cdH07XG59XG5cbi8qKlxuICogTWFwIHRoZSBkZWZhdWx0IGFjdGlvbiBrZXkgb2YgYSBtZW51IHRvIGl0cyBhY3R1YWwgYWN0aW9uIGNvbmZpZ3VyYXRpb24gYW5kIGlkZW50aWZ5IHdoZXRoZXIgdGhpcyBkZWZhdWx0IGFjdGlvbiBpcyBhIGNvbW1hbmQuXG4gKiBAcGFyYW0gbWVudUFjdGlvbiBNZW51IGFjdGlvbiB0byBtYXAgdGhlIGRlZmF1bHQgYWN0aW9uIGZvclxuICogQHBhcmFtIG1hbmlmZXN0QWN0aW9ucyBBY3Rpb25zIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0XG4gKiBAcGFyYW0gYW5ub3RhdGlvbkFjdGlvbnMgQWN0aW9ucyBkZWZpbmVkIHRocm91Z2ggYW5ub3RhdGlvbnNcbiAqIEBwYXJhbSBjb21tYW5kQWN0aW9ucyBBcnJheSBvZiBjb21tYW5kIGFjdGlvbnMgdG8gcHVzaCB0aGUgZGVmYXVsdCBhY3Rpb24gdG8gaWYgYXBwbGljYWJsZVxuICovXG5mdW5jdGlvbiBtYXBNZW51RGVmYXVsdEFjdGlvbihcblx0bWVudUFjdGlvbjogUGFydGlhbGx5Q29udmVydGVkQ3VzdG9tQWN0aW9uLFxuXHRtYW5pZmVzdEFjdGlvbnM6IFJlY29yZDxzdHJpbmcsIFBhcnRpYWxseUNvbnZlcnRlZEN1c3RvbUFjdGlvbj4sXG5cdGFubm90YXRpb25BY3Rpb25zOiBCYXNlQWN0aW9uW10sXG5cdGNvbW1hbmRBY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21BY3Rpb24gfCBCYXNlQWN0aW9uPlxuKTogdm9pZCB7XG5cdGNvbnN0IHsgYWN0aW9uLCBjYW5CZU1lbnVJdGVtIH0gPSBtYXBBY3Rpb25CeUtleShtYW5pZmVzdEFjdGlvbnMsIGFubm90YXRpb25BY3Rpb25zLCBtZW51QWN0aW9uLmRlZmF1bHRBY3Rpb24gYXMgc3RyaW5nKTtcblxuXHRpZiAoY2FuQmVNZW51SXRlbSkge1xuXHRcdG1lbnVBY3Rpb24uZGVmYXVsdEFjdGlvbiA9IGFjdGlvbjtcblx0fVxuXG5cdGlmIChhY3Rpb24uY29tbWFuZCkge1xuXHRcdGNvbW1hbmRBY3Rpb25zW2FjdGlvbi5rZXldID0gYWN0aW9uO1xuXHR9XG59XG5cbi8qKlxuICogTWFwIHRoZSBtZW51IGl0ZW0ga2V5cyBvZiBhIG1lbnUgdG8gdGhlaXIgYWN0dWFsIGFjdGlvbiBjb25maWd1cmF0aW9ucyBhbmQgaWRlbnRpZnkgd2hldGhlciB0aGV5IGFyZSBjb21tYW5kcy5cbiAqIEBwYXJhbSBtZW51QWN0aW9uIE1lbnUgYWN0aW9uIHRvIG1hcCB0aGUgbWVudSBpdGVtcyBmb3JcbiAqIEBwYXJhbSBtYW5pZmVzdEFjdGlvbnMgQWN0aW9ucyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdFxuICogQHBhcmFtIGFubm90YXRpb25BY3Rpb25zIEFjdGlvbnMgZGVmaW5lZCB0aHJvdWdoIGFubm90YXRpb25zXG4gKiBAcGFyYW0gY29tbWFuZEFjdGlvbnMgQXJyYXkgb2YgY29tbWFuZCBhY3Rpb25zIHRvIHB1c2ggdGhlIG1lbnUgaXRlbSBhY3Rpb25zIHRvIGlmIGFwcGxpY2FibGVcbiAqL1xuZnVuY3Rpb24gbWFwTWVudUl0ZW1zKFxuXHRtZW51QWN0aW9uOiBQYXJ0aWFsbHlDb252ZXJ0ZWRDdXN0b21BY3Rpb24sXG5cdG1hbmlmZXN0QWN0aW9uczogUmVjb3JkPHN0cmluZywgUGFydGlhbGx5Q29udmVydGVkQ3VzdG9tQWN0aW9uPixcblx0YW5ub3RhdGlvbkFjdGlvbnM6IEJhc2VBY3Rpb25bXSxcblx0Y29tbWFuZEFjdGlvbnM6IFJlY29yZDxzdHJpbmcsIEJhc2VBY3Rpb24gfCBDdXN0b21BY3Rpb24+XG4pOiB2b2lkIHtcblx0Y29uc3QgbWFwcGVkTWVudUl0ZW1zOiAoQ3VzdG9tQWN0aW9uIHwgQmFzZUFjdGlvbilbXSA9IFtdO1xuXHRjb25zdCBtYXRjaGluZ0Fubm90YXRpb25BY3Rpb24gPSBhbm5vdGF0aW9uQWN0aW9ucy5maW5kKChhbm5vdGF0aW9uQWN0aW9uKSA9PiBhbm5vdGF0aW9uQWN0aW9uLmtleSA9PT0gbWVudUFjdGlvbi5rZXkpO1xuXG5cdGlmIChtZW51QWN0aW9uLm1lbnU/Lmxlbmd0aCAhPT0gMCkge1xuXHRcdGZvciAoY29uc3QgbWVudUl0ZW1LZXkgb2YgbWVudUFjdGlvbi5tZW51ID8/IFtdKSB7XG5cdFx0XHRjb25zdCB7IGFjdGlvbiwgY2FuQmVNZW51SXRlbSB9ID0gbWFwQWN0aW9uQnlLZXkobWFuaWZlc3RBY3Rpb25zLCBhbm5vdGF0aW9uQWN0aW9ucywgbWVudUl0ZW1LZXkpO1xuXG5cdFx0XHRpZiAoY2FuQmVNZW51SXRlbSkge1xuXHRcdFx0XHRtYXBwZWRNZW51SXRlbXMucHVzaChhY3Rpb24pO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoYWN0aW9uLmNvbW1hbmQpIHtcblx0XHRcdFx0Y29tbWFuZEFjdGlvbnNbbWVudUl0ZW1LZXldID0gYWN0aW9uO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIElmIG5vIG1lbnUgaXRlbXMgYXJlIGFzc2lnbmVkIHRvIHRoZSBtYW5pZmVzdC1vdmVycmlkZS1tZW51LCBpdCBpbmhlcml0cyB0aGUgaXRlbXMgZnJvbSB0aGUgcHJldmlvdXMgbWVudVxuXHRlbHNlIGlmIChtYXRjaGluZ0Fubm90YXRpb25BY3Rpb24pIHtcblx0XHRtYXRjaGluZ0Fubm90YXRpb25BY3Rpb24ubWVudT8uZm9yRWFjaCgobWVudUl0ZW0pID0+IG1hcHBlZE1lbnVJdGVtcy5wdXNoKG1lbnVJdGVtKSk7XG5cdH1cblxuXHRjb25zdCBtYXBwZWRNZW51QWN0aW9uID0gbWVudUFjdGlvbiBhcyBDdXN0b21BY3Rpb247XG5cdG1hcHBlZE1lbnVBY3Rpb24ubWVudSA9IG1hcHBlZE1lbnVJdGVtcztcblxuXHQvLyBJZiB0aGUgbWVudSBpcyBzZXQgdG8gaW52aXNpYmxlLCBpdCBzaG91bGQgYmUgaW52aXNpYmxlLCBvdGhlcndpc2UgdGhlIHZpc2liaWxpdHkgc2hvdWxkIGJlIGNhbGN1bGF0ZWQgZnJvbSB0aGUgaXRlbXNcblx0Y29uc3QgdmlzaWJsZUV4cHJlc3Npb25zOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj5bXSA9IG1hcHBlZE1lbnVJdGVtcy5tYXAoKG1lbnVJdGVtKSA9PlxuXHRcdHJlc29sdmVCaW5kaW5nU3RyaW5nKG1lbnVJdGVtLnZpc2libGUgYXMgc3RyaW5nLCBcImJvb2xlYW5cIilcblx0KTtcblx0bWFwcGVkTWVudUFjdGlvbi52aXNpYmxlID0gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0YW5kKHJlc29sdmVCaW5kaW5nU3RyaW5nKG1lbnVBY3Rpb24udmlzaWJsZSBhcyBzdHJpbmcsIFwiYm9vbGVhblwiKSwgb3IoLi4udmlzaWJsZUV4cHJlc3Npb25zKSlcblx0KTtcbn1cblxuLyoqXG4gKiBUcmFuc2Zvcm1zIHRoZSBmbGF0IGNvbGxlY3Rpb24gb2YgYWN0aW9ucyBpbnRvIGEgbmVzdGVkIHN0cnVjdHVyZXMgb2YgbWVudXMuIFRoZSByZXN1bHQgaXMgYSByZWNvcmQgb2YgYWN0aW9ucyB0aGF0IGFyZSBlaXRoZXIgbWVudXMgb3JcbiAqIG9uZXMgdGhhdCBkbyBub3QgYXBwZWFyIGluIG1lbnVzIGFzIG1lbnUgaXRlbXMuIEl0IGFsc28gcmV0dXJucyBhIGxpc3Qgb2YgYWN0aW9ucyB0aGF0IGhhdmUgYW4gYXNzaWduZWQgY29tbWFuZC5cbiAqXG4gKiBOb3RlIHRoYXQgbWVudSBpdGVtcyBhcmUgYWxyZWFkeSB0aGUgbWVyZ2VkIHJlc3VsdCBvZiBhbm5vdGF0aW9uIGFjdGlvbnMgYW5kIHRoZWlyIG1hbmlmZXN0IGNvbmZpZ3VyYXRpb24sIGFzIHtAbGluayBpbnNlcnRDdXN0b21FbGVtZW50c31cbiAqIG9ubHkgY29uc2lkZXJzIHJvb3QtbGV2ZWwgYWN0aW9ucy5cbiAqIEBwYXJhbSBtYW5pZmVzdEFjdGlvbnMgQWN0aW9ucyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdFxuICogQHBhcmFtIGFubm90YXRpb25BY3Rpb25zIEFjdGlvbnMgZGVmaW5lZCB0aHJvdWdoIGFubm90YXRpb25zXG4gKiBAcmV0dXJucyBUaGUgdHJhbnNmb3JtZWQgYWN0aW9ucyBmcm9tIHRoZSBtYW5pZmVzdCBhbmQgYSBsaXN0IG9mIGNvbW1hbmQgYWN0aW9uc1xuICovXG5mdW5jdGlvbiB0cmFuc2Zvcm1NZW51QWN0aW9uc0FuZElkZW50aWZ5Q29tbWFuZHMoXG5cdG1hbmlmZXN0QWN0aW9uczogUmVjb3JkPHN0cmluZywgUGFydGlhbGx5Q29udmVydGVkQ3VzdG9tQWN0aW9uPixcblx0YW5ub3RhdGlvbkFjdGlvbnM6IEJhc2VBY3Rpb25bXVxuKTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgQ3VzdG9tQWN0aW9uPj4ge1xuXHRjb25zdCBhbGxBY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21BY3Rpb24+ID0ge307XG5cdGNvbnN0IGFjdGlvbktleXNUb0RlbGV0ZTogc3RyaW5nW10gPSBbXTtcblx0Y29uc3QgY29tbWFuZEFjdGlvbnM6IFJlY29yZDxzdHJpbmcsIEN1c3RvbUFjdGlvbj4gPSB7fTtcblxuXHRmb3IgKGNvbnN0IGFjdGlvbktleSBpbiBtYW5pZmVzdEFjdGlvbnMpIHtcblx0XHRjb25zdCBtYW5pZmVzdEFjdGlvbjogUGFydGlhbGx5Q29udmVydGVkQ3VzdG9tQWN0aW9uID0gbWFuaWZlc3RBY3Rpb25zW2FjdGlvbktleV07XG5cblx0XHRpZiAobWFuaWZlc3RBY3Rpb24uZGVmYXVsdEFjdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRtYXBNZW51RGVmYXVsdEFjdGlvbihtYW5pZmVzdEFjdGlvbiwgbWFuaWZlc3RBY3Rpb25zLCBhbm5vdGF0aW9uQWN0aW9ucywgY29tbWFuZEFjdGlvbnMpO1xuXHRcdH1cblxuXHRcdGlmIChtYW5pZmVzdEFjdGlvbi50eXBlID09PSBBY3Rpb25UeXBlLk1lbnUpIHtcblx0XHRcdG1hcE1lbnVJdGVtcyhtYW5pZmVzdEFjdGlvbiwgbWFuaWZlc3RBY3Rpb25zLCBhbm5vdGF0aW9uQWN0aW9ucywgY29tbWFuZEFjdGlvbnMpO1xuXG5cdFx0XHQvLyBNZW51IGhhcyBubyB2aXNpYmxlIGl0ZW1zLCBzbyByZW1vdmUgaXRcblx0XHRcdGlmICghbWFuaWZlc3RBY3Rpb24ubWVudT8ubGVuZ3RoKSB7XG5cdFx0XHRcdGFjdGlvbktleXNUb0RlbGV0ZS5wdXNoKG1hbmlmZXN0QWN0aW9uLmtleSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKG1hbmlmZXN0QWN0aW9uLmNvbW1hbmQpIHtcblx0XHRcdGNvbW1hbmRBY3Rpb25zW2FjdGlvbktleV0gPSBtYW5pZmVzdEFjdGlvbiBhcyBDdXN0b21BY3Rpb247XG5cdFx0fVxuXG5cdFx0YWxsQWN0aW9uc1thY3Rpb25LZXldID0gbWFuaWZlc3RBY3Rpb24gYXMgQ3VzdG9tQWN0aW9uO1xuXHR9XG5cblx0YWN0aW9uS2V5c1RvRGVsZXRlLmZvckVhY2goKGFjdGlvbktleTogc3RyaW5nKSA9PiBkZWxldGUgYWxsQWN0aW9uc1thY3Rpb25LZXldKTtcblxuXHRyZXR1cm4ge1xuXHRcdGFjdGlvbnM6IGFsbEFjdGlvbnMsXG5cdFx0Y29tbWFuZEFjdGlvbnM6IGNvbW1hbmRBY3Rpb25zXG5cdH07XG59XG5cbi8qKlxuICogR2V0cyB0aGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgZW5hYmxlbWVudCBvZiBhIG1hbmlmZXN0IGFjdGlvbi5cbiAqIEBwYXJhbSBtYW5pZmVzdEFjdGlvbiBUaGUgYWN0aW9uIGNvbmZpZ3VyZWQgaW4gdGhlIG1hbmlmZXN0XG4gKiBAcGFyYW0gaXNBbm5vdGF0aW9uQWN0aW9uIFdoZXRoZXIgdGhlIGFjdGlvbiwgZGVmaW5lZCBpbiBtYW5pZmVzdCwgY29ycmVzcG9uZHMgdG8gYW4gZXhpc3RpbmcgYW5ub3RhdGlvbiBhY3Rpb24uXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dFxuICogQHBhcmFtIGZvckNvbnRleHRNZW51XG4gKiBAcmV0dXJucyBEZXRlcm1pbmVkIHByb3BlcnR5IHZhbHVlIGZvciB0aGUgZW5hYmxlbWVudFxuICovXG5jb25zdCBfZ2V0TWFuaWZlc3RFbmFibGVkID0gZnVuY3Rpb24gKFxuXHRtYW5pZmVzdEFjdGlvbjogTWFuaWZlc3RBY3Rpb24sXG5cdGlzQW5ub3RhdGlvbkFjdGlvbjogYm9vbGVhbixcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+LFxuXHRmb3JDb250ZXh0TWVudSA9IGZhbHNlXG4pOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB8IHVuZGVmaW5lZCB7XG5cdGlmIChpc0Fubm90YXRpb25BY3Rpb24gJiYgbWFuaWZlc3RBY3Rpb24uZW5hYmxlZCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0Ly8gSWYgYW5ub3RhdGlvbiBhY3Rpb24gaGFzIG5vIHByb3BlcnR5IGRlZmluZWQgaW4gbWFuaWZlc3QsXG5cdFx0Ly8gZG8gbm90IG92ZXJ3cml0ZSBpdCB3aXRoIG1hbmlmZXN0IGFjdGlvbidzIGRlZmF1bHQgdmFsdWUuXG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdGNvbnN0IHJlc3VsdCA9IGdldE1hbmlmZXN0QWN0aW9uQm9vbGVhblByb3BlcnR5V2l0aEZvcm1hdHRlcihtYW5pZmVzdEFjdGlvbi5lbmFibGVkLCBjb252ZXJ0ZXJDb250ZXh0LCBmb3JDb250ZXh0TWVudSk7XG5cblx0Ly8gQ29uc2lkZXIgcmVxdWlyZXNTZWxlY3Rpb24gcHJvcGVydHkgdG8gaW5jbHVkZSBzZWxlY3RlZENvbnRleHRzIGluIHRoZSBiaW5kaW5nIGV4cHJlc3Npb25cblx0Y29uc3QgaW50ZXJuYWxNb2RlbFByb3BlcnR5ID0gIWZvckNvbnRleHRNZW51ID8gXCJudW1iZXJPZlNlbGVjdGVkQ29udGV4dHNcIiA6IFwiY29udGV4dG1lbnUvbnVtYmVyT2ZTZWxlY3RlZENvbnRleHRzXCI7XG5cdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihcblx0XHRpZkVsc2UoXG5cdFx0XHRtYW5pZmVzdEFjdGlvbi5yZXF1aXJlc1NlbGVjdGlvbiA9PT0gdHJ1ZSxcblx0XHRcdGlmRWxzZShcblx0XHRcdFx0bWFuaWZlc3RBY3Rpb24uZW5hYmxlT25TZWxlY3QgPT09IFwic2luZ2xlXCIsXG5cdFx0XHRcdGFuZChlcXVhbChwYXRoSW5Nb2RlbChpbnRlcm5hbE1vZGVsUHJvcGVydHksIFwiaW50ZXJuYWxcIiksIDEpLCByZXN1bHQpLFxuXHRcdFx0XHRhbmQoZ3JlYXRlck9yRXF1YWwocGF0aEluTW9kZWwoaW50ZXJuYWxNb2RlbFByb3BlcnR5LCBcImludGVybmFsXCIpLCAxKSwgcmVzdWx0KVxuXHRcdFx0KSxcblx0XHRcdHJlc3VsdFxuXHRcdClcblx0KTtcbn07XG5cbi8qKlxuICogR2V0cyB0aGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgdmlzaWJpbGl0eSBvZiBhIG1hbmlmZXN0IGFjdGlvbi5cbiAqIEBwYXJhbSBtYW5pZmVzdEFjdGlvbiBUaGUgYWN0aW9uIGNvbmZpZ3VyZWQgaW4gdGhlIG1hbmlmZXN0XG4gKiBAcGFyYW0gaXNBbm5vdGF0aW9uQWN0aW9uIFdoZXRoZXIgdGhlIGFjdGlvbiwgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QsIGNvcnJlc3BvbmRzIHRvIGFuIGV4aXN0aW5nIGFubm90YXRpb24gYWN0aW9uLlxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHRcbiAqIEBwYXJhbSBmb3JDb250ZXh0TWVudVxuICogQHJldHVybnMgRGV0ZXJtaW5lZCBwcm9wZXJ0eSB2YWx1ZSBmb3IgdGhlIHZpc2liaWxpdHlcbiAqL1xuY29uc3QgX2dldE1hbmlmZXN0VmlzaWJsZSA9IGZ1bmN0aW9uIChcblx0bWFuaWZlc3RBY3Rpb246IE1hbmlmZXN0QWN0aW9uLFxuXHRpc0Fubm90YXRpb25BY3Rpb246IGJvb2xlYW4sXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0Pixcblx0Zm9yQ29udGV4dE1lbnUgPSBmYWxzZVxuKTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfCB1bmRlZmluZWQge1xuXHRpZiAoaXNBbm5vdGF0aW9uQWN0aW9uICYmIG1hbmlmZXN0QWN0aW9uLnZpc2libGUgPT09IHVuZGVmaW5lZCkge1xuXHRcdC8vIElmIGFubm90YXRpb24gYWN0aW9uIGhhcyBubyBwcm9wZXJ0eSBkZWZpbmVkIGluIG1hbmlmZXN0LFxuXHRcdC8vIGRvIG5vdCBvdmVyd3JpdGUgaXQgd2l0aCBtYW5pZmVzdCBhY3Rpb24ncyBkZWZhdWx0IHZhbHVlLlxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHRsZXQgcmVzdWx0ID0gZ2V0TWFuaWZlc3RBY3Rpb25Cb29sZWFuUHJvcGVydHlXaXRoRm9ybWF0dGVyKG1hbmlmZXN0QWN0aW9uLnZpc2libGUsIGNvbnZlcnRlckNvbnRleHQsIGZvckNvbnRleHRNZW51KTtcblx0Ly8gRm9yIHRoZSBjb250ZXh0IG1lbnUsIHRoZSB2aXNpYmlsaXR5IHNob3VsZCBhbHNvIGNvbnNpZGVyIHRoZSAnaW5hY3RpdmVDb250ZXh0JyBwcm9wZXJ0eTpcblx0Ly8gb25seSB3aGVuIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBjb250ZXh0IGlzIGFjdGl2ZSAoaS5lLiBcImNvbnRleHRtZW51L2luYWN0aXZlQ29udGV4dFwiIGlzIGZhbHNlKSwgdGhlIGFjdGlvbiBzaG91bGQgYmUgdmlzaWJsZSBpbiB0aGUgY29udGV4dCBtZW51XG5cdC8vIFRoaXMgaXMgb25seSByZWxldmFudCB3aGVuIHRoZSB0YWJsZSBtYW5pZmVzdCBzZXR0aW5nIFwiY3JlYXRpb25Nb2RlXCIgaXMgXCJJbmxpbmVDcmVhdGlvblJvd3NcIlxuXHRyZXN1bHQgPSBmb3JDb250ZXh0TWVudSA/IGFuZChyZXN1bHQsIGVxdWFsKHBhdGhJbk1vZGVsKFwiY29udGV4dG1lbnUvaW5hY3RpdmVDb250ZXh0XCIsIFwiaW50ZXJuYWxcIiksIGZhbHNlKSkgOiByZXN1bHQ7XG5cdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihyZXN1bHQpO1xufTtcblxudHlwZSBQYXJ0aWFsbHlDb252ZXJ0ZWRDdXN0b21BY3Rpb24gPSBPbWl0PEN1c3RvbUFjdGlvbiwgXCJtZW51XCI+ICYgeyBtZW51OiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB9O1xuXG4vKipcbiAqIEFzIHNvbWUgcHJvcGVydGllcyBzaG91bGQgbm90IGJlIG92ZXJyaWRhYmxlIGJ5IHRoZSBtYW5pZmVzdCwgbWFrZSBzdXJlIHRoYXQgdGhlIG1hbmlmZXN0IGNvbmZpZ3VyYXRpb24gZ2V0cyB0aGUgYW5ub3RhdGlvbiB2YWx1ZXMgZm9yIHRoZXNlLlxuICogQHBhcmFtIG1hbmlmZXN0QWN0aW9uIEFjdGlvbiBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdFxuICogQHBhcmFtIGFubm90YXRpb25BY3Rpb24gQWN0aW9uIGRlZmluZWQgdGhyb3VnaCBhbm5vdGF0aW9uc1xuICovXG5mdW5jdGlvbiBvdmVycmlkZU1hbmlmZXN0Q29uZmlndXJhdGlvbldpdGhBbm5vdGF0aW9uKG1hbmlmZXN0QWN0aW9uOiBQYXJ0aWFsbHlDb252ZXJ0ZWRDdXN0b21BY3Rpb24sIGFubm90YXRpb25BY3Rpb24/OiBCYXNlQWN0aW9uKTogdm9pZCB7XG5cdGlmICghYW5ub3RhdGlvbkFjdGlvbikge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdC8vIERvIG5vdCBvdmVycmlkZSB0aGUgJ3R5cGUnIGdpdmVuIGluIGFuIGFubm90YXRpb24gYWN0aW9uXG5cdG1hbmlmZXN0QWN0aW9uLnR5cGUgPSBhbm5vdGF0aW9uQWN0aW9uLnR5cGU7XG5cdG1hbmlmZXN0QWN0aW9uLmFubm90YXRpb25QYXRoID0gYW5ub3RhdGlvbkFjdGlvbi5hbm5vdGF0aW9uUGF0aDtcblx0bWFuaWZlc3RBY3Rpb24ucHJlc3MgPSBhbm5vdGF0aW9uQWN0aW9uLnByZXNzO1xuXG5cdC8vIE9ubHkgdXNlIHRoZSBhbm5vdGF0aW9uIHZhbHVlcyBmb3IgZW5hYmxlbWVudCBhbmQgdmlzaWJpbGl0eSBpZiBub3Qgc2V0IGluIHRoZSBtYW5pZmVzdFxuXHRtYW5pZmVzdEFjdGlvbi5lbmFibGVkID0gbWFuaWZlc3RBY3Rpb24uZW5hYmxlZCA/PyBhbm5vdGF0aW9uQWN0aW9uLmVuYWJsZWQ7XG5cdG1hbmlmZXN0QWN0aW9uLnZpc2libGUgPSBtYW5pZmVzdEFjdGlvbi52aXNpYmxlID8/IGFubm90YXRpb25BY3Rpb24udmlzaWJsZTtcblx0bWFuaWZlc3RBY3Rpb24udmlzaWJsZUZvckNvbnRleHRNZW51ID0gbWFuaWZlc3RBY3Rpb24udmlzaWJsZUZvckNvbnRleHRNZW51ID8/IGFubm90YXRpb25BY3Rpb24udmlzaWJsZUZvckNvbnRleHRNZW51O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIGFjdGlvbiBjb25maWd1cmF0aW9uIGJhc2VkIG9uIHRoZSBtYW5pZmVzdCBzZXR0aW5ncy5cbiAqIEBwYXJhbSBtYW5pZmVzdEFjdGlvbnMgVGhlIG1hbmlmZXN0IGFjdGlvbnNcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0IFRoZSBjb252ZXJ0ZXIgY29udGV4dFxuICogQHBhcmFtIGFubm90YXRpb25BY3Rpb25zIFRoZSBhbm5vdGF0aW9uIGFjdGlvbnMgZGVmaW5pdGlvblxuICogQHBhcmFtIG5hdmlnYXRpb25TZXR0aW5ncyBUaGUgbmF2aWdhdGlvbiBzZXR0aW5nc1xuICogQHBhcmFtIGNvbnNpZGVyTmF2aWdhdGlvblNldHRpbmdzIFRoZSBuYXZpZ2F0aW9uIHNldHRpbmdzIHRvIGJlIGNvbnNpZGVyZWRcbiAqIEBwYXJhbSBoaWRkZW5BY3Rpb25zIEFjdGlvbnMgdGhhdCBhcmUgY29uZmlndXJlZCBhcyBoaWRkZW4gKGFkZGl0aW9uYWwgdG8gdGhlIHZpc2libGUgcHJvcGVydHkpXG4gKiBAcGFyYW0gZmFjZXROYW1lIFRoZSBmYWNldCB3aGVyZSBhbiBhY3Rpb24gaXMgZGlzcGxheWVkIGlmIGl0IGlzIGlubGluZVxuICogQHJldHVybnMgVGhlIGFjdGlvbnMgZnJvbSB0aGUgbWFuaWZlc3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFjdGlvbnNGcm9tTWFuaWZlc3QoXG5cdG1hbmlmZXN0QWN0aW9uczogUmVjb3JkPHN0cmluZywgTWFuaWZlc3RBY3Rpb24+IHwgdW5kZWZpbmVkLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD4sXG5cdGFubm90YXRpb25BY3Rpb25zPzogQmFzZUFjdGlvbltdLFxuXHRuYXZpZ2F0aW9uU2V0dGluZ3M/OiBOYXZpZ2F0aW9uU2V0dGluZ3NDb25maWd1cmF0aW9uLFxuXHRjb25zaWRlck5hdmlnYXRpb25TZXR0aW5ncz86IGJvb2xlYW4sXG5cdGhpZGRlbkFjdGlvbnM/OiBCYXNlQWN0aW9uW10sXG5cdGZhY2V0TmFtZT86IHN0cmluZ1xuKTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgQ3VzdG9tQWN0aW9uPj4ge1xuXHRjb25zdCBhY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBQYXJ0aWFsbHlDb252ZXJ0ZWRDdXN0b21BY3Rpb24+ID0ge307XG5cdGZvciAoY29uc3QgYWN0aW9uS2V5IGluIG1hbmlmZXN0QWN0aW9ucykge1xuXHRcdGNvbnN0IG1hbmlmZXN0QWN0aW9uOiBNYW5pZmVzdEFjdGlvbiA9IG1hbmlmZXN0QWN0aW9uc1thY3Rpb25LZXldO1xuXHRcdGNvbnN0IGxhc3REb3RJbmRleCA9IG1hbmlmZXN0QWN0aW9uLnByZXNzPy5sYXN0SW5kZXhPZihcIi5cIikgfHwgLTE7XG5cdFx0bGV0IGFubm90YXRpb25BY3Rpb246IEJhc2VBY3Rpb24gfCB1bmRlZmluZWQ7XG5cblx0XHRpZiAoYW5ub3RhdGlvbkFjdGlvbnMpIHtcblx0XHRcdGZvciAoY29uc3QgYWN0aW9uIG9mIGFubm90YXRpb25BY3Rpb25zKSB7XG5cdFx0XHRcdC8vIFN1YlNlY3Rpb24udHMjY3JlYXRlRm9ybUFjdGlvblJlZHVjZXIgdXNlcyBpbnNlcnRDdXN0b21FbGVtZW50cyB3aGljaCByZXN1bHRzIGluIGFubm90YXRpb24gYWN0aW9ucyBtaXhpbmcgdXAgd2l0aCBtYW5pZmVzdCBhY3Rpb25cblx0XHRcdFx0Ly8gdGhpcyBpcyB3aHkgd2UgbWF5IGZpbmQgYW4gYWN0aW9uIHRoYXQgaGFzIGEgQ3VzdG9tQWN0aW9uIHByZWZpeFxuXHRcdFx0XHRpZiAoYWN0aW9uLmlkPy5zdGFydHNXaXRoKFwiQ3VzdG9tQWN0aW9uOjpcIikpIHtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoYWN0aW9uLmtleSA9PT0gYWN0aW9uS2V5KSB7XG5cdFx0XHRcdFx0YW5ub3RhdGlvbkFjdGlvbiA9IGFjdGlvbjtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fSBlbHNlIGlmIChhY3Rpb24udHlwZSA9PT0gXCJNZW51XCIpIHtcblx0XHRcdFx0XHQvLyBJZiBub3QgZm91bmQsIGNoZWNrIGluc2lkZSBtZW51c1xuXHRcdFx0XHRcdGFubm90YXRpb25BY3Rpb24gPSBhY3Rpb24ubWVudT8uZmluZCgobWVudUl0ZW06IEJhc2VBY3Rpb24pID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiBtZW51SXRlbS5rZXkgPT09IGFjdGlvbktleTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRpZiAoYW5ub3RhdGlvbkFjdGlvbikge1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gVG8gaWRlbnRpZnkgdGhlIGFubm90YXRpb24gYWN0aW9uIHByb3BlcnR5IG92ZXJ3cml0ZSB2aWEgbWFuaWZlc3QgdXNlLWNhc2UuXG5cdFx0Y29uc3QgaXNBbm5vdGF0aW9uQWN0aW9uID0gISFhbm5vdGF0aW9uQWN0aW9uO1xuXHRcdGlmIChtYW5pZmVzdEFjdGlvbi5mYWNldE5hbWUpIHtcblx0XHRcdGZhY2V0TmFtZSA9IG1hbmlmZXN0QWN0aW9uLmZhY2V0TmFtZTtcblx0XHR9XG5cblx0XHRhY3Rpb25zW2FjdGlvbktleV0gPSB7XG5cdFx0XHRpZDogYW5ub3RhdGlvbkFjdGlvbiA/IGFjdGlvbktleSA6IGdldEN1c3RvbUFjdGlvbklEKGFjdGlvbktleSksXG5cdFx0XHR0eXBlOiBtYW5pZmVzdEFjdGlvbi5tZW51ID8gQWN0aW9uVHlwZS5NZW51IDogQWN0aW9uVHlwZS5EZWZhdWx0LFxuXHRcdFx0dmlzaWJsZTogX2dldE1hbmlmZXN0VmlzaWJsZShtYW5pZmVzdEFjdGlvbiwgaXNBbm5vdGF0aW9uQWN0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHRcdHZpc2libGVGb3JDb250ZXh0TWVudTogX2dldE1hbmlmZXN0VmlzaWJsZShtYW5pZmVzdEFjdGlvbiwgaXNBbm5vdGF0aW9uQWN0aW9uLCBjb252ZXJ0ZXJDb250ZXh0LCB0cnVlKSxcblx0XHRcdGVuYWJsZWQ6IF9nZXRNYW5pZmVzdEVuYWJsZWQobWFuaWZlc3RBY3Rpb24sIGlzQW5ub3RhdGlvbkFjdGlvbiwgY29udmVydGVyQ29udGV4dCksXG5cdFx0XHRlbmFibGVkRm9yQ29udGV4dE1lbnU6IF9nZXRNYW5pZmVzdEVuYWJsZWQobWFuaWZlc3RBY3Rpb24sIGlzQW5ub3RhdGlvbkFjdGlvbiwgY29udmVydGVyQ29udGV4dCwgdHJ1ZSksXG5cdFx0XHRoYW5kbGVyTW9kdWxlOiBtYW5pZmVzdEFjdGlvbi5wcmVzcyAmJiBtYW5pZmVzdEFjdGlvbi5wcmVzcy5zdWJzdHJpbmcoMCwgbGFzdERvdEluZGV4KS5yZXBsYWNlKC9cXC4vZ2ksIFwiL1wiKSxcblx0XHRcdGhhbmRsZXJNZXRob2Q6IG1hbmlmZXN0QWN0aW9uLnByZXNzICYmIG1hbmlmZXN0QWN0aW9uLnByZXNzLnN1YnN0cmluZyhsYXN0RG90SW5kZXggKyAxKSxcblx0XHRcdHByZXNzOiBtYW5pZmVzdEFjdGlvbi5wcmVzcyxcblx0XHRcdHRleHQ6IG1hbmlmZXN0QWN0aW9uLnRleHQsXG5cdFx0XHRub1dyYXA6IG1hbmlmZXN0QWN0aW9uLl9fbm9XcmFwLFxuXHRcdFx0a2V5OiByZXBsYWNlU3BlY2lhbENoYXJzKGFjdGlvbktleSksXG5cdFx0XHRlbmFibGVPblNlbGVjdDogbWFuaWZlc3RBY3Rpb24uZW5hYmxlT25TZWxlY3QsXG5cdFx0XHRkZWZhdWx0VmFsdWVzRXh0ZW5zaW9uRnVuY3Rpb246IG1hbmlmZXN0QWN0aW9uLmRlZmF1bHRWYWx1ZXNGdW5jdGlvbixcblx0XHRcdHBvc2l0aW9uOiB7XG5cdFx0XHRcdGFuY2hvcjogbWFuaWZlc3RBY3Rpb24ucG9zaXRpb24/LmFuY2hvcixcblx0XHRcdFx0cGxhY2VtZW50OiBtYW5pZmVzdEFjdGlvbi5wb3NpdGlvbiA9PT0gdW5kZWZpbmVkID8gUGxhY2VtZW50LkFmdGVyIDogbWFuaWZlc3RBY3Rpb24ucG9zaXRpb24ucGxhY2VtZW50XG5cdFx0XHR9LFxuXHRcdFx0aXNOYXZpZ2FibGU6IGlzQWN0aW9uTmF2aWdhYmxlKG1hbmlmZXN0QWN0aW9uLCBuYXZpZ2F0aW9uU2V0dGluZ3MsIGNvbnNpZGVyTmF2aWdhdGlvblNldHRpbmdzKSxcblx0XHRcdGNvbW1hbmQ6IG1hbmlmZXN0QWN0aW9uLmNvbW1hbmQsXG5cdFx0XHRyZXF1aXJlc1NlbGVjdGlvbjogbWFuaWZlc3RBY3Rpb24ucmVxdWlyZXNTZWxlY3Rpb24gPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogbWFuaWZlc3RBY3Rpb24ucmVxdWlyZXNTZWxlY3Rpb24sXG5cdFx0XHRlbmFibGVBdXRvU2Nyb2xsOiBlbmFibGVBdXRvU2Nyb2xsKG1hbmlmZXN0QWN0aW9uKSxcblx0XHRcdG1lbnU6IG1hbmlmZXN0QWN0aW9uLm1lbnUgPz8gKGFubm90YXRpb25BY3Rpb24/LnR5cGUgPT09IEFjdGlvblR5cGUuTWVudSA/IFtdIDogdW5kZWZpbmVkKSxcblx0XHRcdGZhY2V0TmFtZTogbWFuaWZlc3RBY3Rpb24uaW5saW5lID8gZmFjZXROYW1lIDogdW5kZWZpbmVkLFxuXHRcdFx0ZGVmYXVsdEFjdGlvbjogbWFuaWZlc3RBY3Rpb24uZGVmYXVsdEFjdGlvbixcblx0XHRcdGlzQUlPcGVyYXRpb246IG1hbmlmZXN0QWN0aW9uPy5pc0FJT3BlcmF0aW9uID8/IHVuZGVmaW5lZFxuXHRcdH07XG5cblx0XHRvdmVycmlkZU1hbmlmZXN0Q29uZmlndXJhdGlvbldpdGhBbm5vdGF0aW9uKGFjdGlvbnNbYWN0aW9uS2V5XSwgYW5ub3RhdGlvbkFjdGlvbik7XG5cdH1cblxuXHRyZXR1cm4gdHJhbnNmb3JtTWVudUFjdGlvbnNBbmRJZGVudGlmeUNvbW1hbmRzKGFjdGlvbnMsIGFubm90YXRpb25BY3Rpb25zID8/IFtdKTtcbn1cblxuLyoqXG4gKiBHZXRzIGEgYmluZGluZyBleHByZXNzaW9uIHJlcHJlc2VudGluZyBhIEJvb2xlYW4gbWFuaWZlc3QgcHJvcGVydHkgdGhhdCBjYW4gZWl0aGVyIGJlIHJlcHJlc2VudGVkIGJ5IGEgc3RhdGljIHZhbHVlLCBhIGJpbmRpbmcgc3RyaW5nLFxuICogb3IgYSBydW50aW1lIGZvcm1hdHRlciBmdW5jdGlvbi5cbiAqIEBwYXJhbSBwcm9wZXJ0eVZhbHVlIFN0cmluZyByZXByZXNlbnRpbmcgdGhlIGNvbmZpZ3VyZWQgcHJvcGVydHkgdmFsdWVcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcmV0dXJucyBBIGJpbmRpbmcgZXhwcmVzc2lvbiByZXByZXNlbnRpbmcgdGhlIHByb3BlcnR5XG4gKi9cbmZ1bmN0aW9uIGdldE1hbmlmZXN0QWN0aW9uQm9vbGVhblByb3BlcnR5V2l0aEZvcm1hdHRlcihcblx0cHJvcGVydHlWYWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgYm9vbGVhbixcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+LFxuXHRmb3JDb250ZXh0TWVudTogYm9vbGVhblxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0Y29uc3QgcmVzb2x2ZWRCaW5kaW5nID0gcmVzb2x2ZUJpbmRpbmdTdHJpbmc8Ym9vbGVhbiB8IHN0cmluZz4ocHJvcGVydHlWYWx1ZSBhcyBzdHJpbmcsIFwiYm9vbGVhblwiKTtcblx0bGV0IHJlc3VsdDogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+O1xuXHRpZiAoaXNDb25zdGFudChyZXNvbHZlZEJpbmRpbmcpICYmIHJlc29sdmVkQmluZGluZy52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0Ly8gTm8gcHJvcGVydHkgdmFsdWUgY29uZmlndXJlZCBpbiBtYW5pZmVzdCBmb3IgdGhlIGN1c3RvbSBhY3Rpb24gLS0+IGRlZmF1bHQgdmFsdWUgaXMgdHJ1ZVxuXHRcdHJlc3VsdCA9IGNvbnN0YW50KHRydWUpO1xuXHR9IGVsc2UgaWYgKGlzQ29uc3RhbnQocmVzb2x2ZWRCaW5kaW5nKSAmJiB0eXBlb2YgcmVzb2x2ZWRCaW5kaW5nLnZhbHVlID09PSBcInN0cmluZ1wiKSB7XG5cdFx0Ly8gVGhlbiBpdCdzIGEgbW9kdWxlLW1ldGhvZCByZWZlcmVuY2UgXCJzYXAueHh4Lnl5eS5kb1NvbWV0aGluZ1wiXG5cdFx0Y29uc3QgbWV0aG9kUGF0aCA9IHJlc29sdmVkQmluZGluZy52YWx1ZTtcblx0XHQvLyBGSVhNRTogVGhlIGN1c3RvbSBcImlzRW5hYmxlZFwiIGNoZWNrIGRvZXMgbm90IHRyaWdnZXIgKGJlY2F1c2Ugbm9uZSBvZiB0aGUgYm91bmQgdmFsdWVzIGNoYW5nZXMpXG5cdFx0cmVzdWx0ID0gZm9ybWF0UmVzdWx0KFxuXHRcdFx0W3BhdGhJbk1vZGVsPFZpZXc+KFwiL1wiLCBcIiR2aWV3XCIpLCBtZXRob2RQYXRoLCBwYXRoSW5Nb2RlbDxDb250ZXh0W10+KFwic2VsZWN0ZWRDb250ZXh0c1wiLCBcImludGVybmFsXCIpXSxcblx0XHRcdGZwbUZvcm1hdHRlci5jdXN0b21Cb29sZWFuUHJvcGVydHlDaGVjayxcblx0XHRcdCFmb3JDb250ZXh0TWVudVxuXHRcdFx0XHQ/IGNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpLmNvbnRleHRMb2NhdGlvbj8udGFyZ2V0RW50aXR5VHlwZSB8fCBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKVxuXHRcdFx0XHQ6IHVuZGVmaW5lZFxuXHRcdCk7XG5cdH0gZWxzZSB7XG5cdFx0Ly8gdGhlbiBpdCdzIGEgYmluZGluZ1xuXHRcdHJlc3VsdCA9IHJlc29sdmVkQmluZGluZyBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj47XG5cdH1cblxuXHRyZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgY29uc3QgcmVtb3ZlRHVwbGljYXRlQWN0aW9ucyA9IChhY3Rpb25zOiBDdXN0b21BY3Rpb25bXSk6IEN1c3RvbUFjdGlvbltdID0+IHtcblx0bGV0IG9NZW51SXRlbUtleXM6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XG5cdGFjdGlvbnMuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XG5cdFx0aWYgKGFjdGlvbj8ubWVudT8ubGVuZ3RoKSB7XG5cdFx0XHRjb25zdCBhY3Rpb25NZW51ID0gYWN0aW9uLm1lbnU7XG5cdFx0XHRvTWVudUl0ZW1LZXlzID0gYWN0aW9uTWVudS5yZWR1Y2UoKGl0ZW06IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+LCB7IGtleSB9KSA9PiB7XG5cdFx0XHRcdGlmIChrZXkgJiYgIWl0ZW1ba2V5XSkge1xuXHRcdFx0XHRcdGl0ZW1ba2V5XSA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGl0ZW07XG5cdFx0XHR9LCBvTWVudUl0ZW1LZXlzKTtcblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gIW9NZW51SXRlbUtleXNbYWN0aW9uLmtleV0pO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEVuYWJsZWRGb3JBbm5vdGF0aW9uQWN0aW9uRXhwcmVzc2lvbihcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+LFxuXHRhY3Rpb25UYXJnZXQ6IEFjdGlvbiB8IHVuZGVmaW5lZCxcblx0cGF0aEZyb21Db250ZXh0TG9jYXRpb24gPSBmYWxzZVxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0aWYgKGFjdGlvblRhcmdldD8uYW5ub3RhdGlvbnMuQ29yZT8uT3BlcmF0aW9uQXZhaWxhYmxlKSB7XG5cdFx0Y29uc3QgZGF0YU1vZGVsT2JqZWN0UGF0aCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpO1xuXHRcdGxldCBpc0VuYWJsZWRFeHAgPSBnZXRBY3Rpb25FbmFibGVkRXhwcmVzc2lvbihcblx0XHRcdGFjdGlvblRhcmdldCxcblx0XHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0Q29udmVydGVkVHlwZXMoKSxcblx0XHRcdGRhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0XHRwYXRoRnJvbUNvbnRleHRMb2NhdGlvblxuXHRcdCk7XG5cdFx0Y29uc3QgY29sbGFib3JhdGlvbk9uUm9vdCA9XG5cdFx0XHRNb2RlbEhlbHBlci5pc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZEZyb21Db252ZXJ0ZXJDb250ZXh0KGNvbnZlcnRlckNvbnRleHQpICYmXG5cdFx0XHRNb2RlbEhlbHBlci5nZXREcmFmdFJvb3QoY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXQoKSk7XG5cdFx0aWYgKGNvbGxhYm9yYXRpb25PblJvb3QpIHtcblx0XHRcdGlzRW5hYmxlZEV4cCA9IGFuZChpc0VuYWJsZWRFeHAsIG5vdChlcXVhbChVSS5oYXNDb2xsYWJvcmF0aW9uQXV0aG9yaXphdGlvbiwgZmFsc2UpKSk7XG5cdFx0fVxuXHRcdHJldHVybiBpc0VuYWJsZWRFeHA7XG5cdH1cblx0cmV0dXJuIGNvbnN0YW50KHRydWUpO1xufVxuXG4vKipcbiAqIE1ldGhvZCB0byBkZXRlcm1pbmUgdGhlIHZhbHVlIG9mIHRoZSAnZW5hYmxlZCcgcHJvcGVydHkgb2YgYW4gYW5ub3RhdGlvbi1iYXNlZCBhY3Rpb24uXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgaW5zdGFuY2Ugb2YgdGhlIGNvbnZlcnRlciBjb250ZXh0XG4gKiBAcGFyYW0gYWN0aW9uVGFyZ2V0IFRoZSBpbnN0YW5jZSBvZiB0aGUgYWN0aW9uXG4gKiBAcGFyYW0gcGF0aEZyb21Db250ZXh0TG9jYXRpb24gSXMgdGhlIGJpbmRpbmcgcGF0aCBjYWxjdWxhdGVkICBmcm9tIHRoZSBjb252ZXJ0ZXIgY29udGV4dCBsb2NhdGlvblxuICogQHJldHVybnMgVGhlIGJpbmRpbmcgZXhwcmVzc2lvbiBmb3IgdGhlICdlbmFibGVkJyBwcm9wZXJ0eSBvZiB0aGUgYWN0aW9uIGJ1dHRvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVuYWJsZWRGb3JBbm5vdGF0aW9uQWN0aW9uKFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD4sXG5cdGFjdGlvblRhcmdldDogQWN0aW9uIHwgdW5kZWZpbmVkLFxuXHRwYXRoRnJvbUNvbnRleHRMb2NhdGlvbiA9IGZhbHNlXG4pOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB7XG5cdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihnZXRFbmFibGVkRm9yQW5ub3RhdGlvbkFjdGlvbkV4cHJlc3Npb24oY29udmVydGVyQ29udGV4dCwgYWN0aW9uVGFyZ2V0LCBwYXRoRnJvbUNvbnRleHRMb2NhdGlvbikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VtYW50aWNPYmplY3RNYXBwaW5nKG1hcHBpbmdzPzogU2VtYW50aWNPYmplY3RNYXBwaW5nVHlwZVtdKTogTWV0YU1vZGVsVHlwZTxTZW1hbnRpY09iamVjdE1hcHBpbmdUeXBlPltdIHtcblx0cmV0dXJuIG1hcHBpbmdzXG5cdFx0PyBtYXBwaW5ncy5tYXAoKG1hcHBpbmcpID0+IHtcblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRMb2NhbFByb3BlcnR5OiB7XG5cdFx0XHRcdFx0XHQkUHJvcGVydHlQYXRoOiBtYXBwaW5nLkxvY2FsUHJvcGVydHkudmFsdWVcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFNlbWFudGljT2JqZWN0UHJvcGVydHk6IG1hcHBpbmcuU2VtYW50aWNPYmplY3RQcm9wZXJ0eS50b1N0cmluZygpXG5cdFx0XHRcdH07XG5cdFx0ICB9KVxuXHRcdDogW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0FjdGlvbk5hdmlnYWJsZShcblx0YWN0aW9uOiBNYW5pZmVzdEFjdGlvbiB8IEN1c3RvbURlZmluZWRUYWJsZUNvbHVtbkZvck92ZXJyaWRlIHwgdW5kZWZpbmVkLFxuXHRuYXZpZ2F0aW9uU2V0dGluZ3M/OiBOYXZpZ2F0aW9uU2V0dGluZ3NDb25maWd1cmF0aW9uLFxuXHRjb25zaWRlck5hdmlnYXRpb25TZXR0aW5ncz86IGJvb2xlYW5cbik6IGJvb2xlYW4ge1xuXHRsZXQgYklzTmF2aWdhdGlvbkNvbmZpZ3VyZWQgPSB0cnVlO1xuXHRpZiAoY29uc2lkZXJOYXZpZ2F0aW9uU2V0dGluZ3MpIHtcblx0XHRjb25zdCBkZXRhaWxPckRpc3BsYXkgPSBuYXZpZ2F0aW9uU2V0dGluZ3MgJiYgKG5hdmlnYXRpb25TZXR0aW5ncy5kZXRhaWwgfHwgbmF2aWdhdGlvblNldHRpbmdzLmRpc3BsYXkpO1xuXHRcdGJJc05hdmlnYXRpb25Db25maWd1cmVkID0gZGV0YWlsT3JEaXNwbGF5Py5yb3V0ZSA/IHRydWUgOiBmYWxzZTtcblx0fVxuXHQvLyB3aGVuIGVuYWJsZUF1dG9TY3JvbGwgaXMgdHJ1ZSB0aGUgbmF2aWdhdGVUb0luc3RhbmNlIGZlYXR1cmUgaXMgZGlzYWJsZWRcblx0aWYgKFxuXHRcdChhY3Rpb24gJiZcblx0XHRcdGFjdGlvbi5hZnRlckV4ZWN1dGlvbiAmJlxuXHRcdFx0KGFjdGlvbi5hZnRlckV4ZWN1dGlvbj8ubmF2aWdhdGVUb0luc3RhbmNlID09PSBmYWxzZSB8fCBhY3Rpb24uYWZ0ZXJFeGVjdXRpb24/LmVuYWJsZUF1dG9TY3JvbGwgPT09IHRydWUpKSB8fFxuXHRcdCFiSXNOYXZpZ2F0aW9uQ29uZmlndXJlZFxuXHQpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0cmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmFibGVBdXRvU2Nyb2xsKGFjdGlvbjogTWFuaWZlc3RBY3Rpb24pOiBib29sZWFuIHtcblx0cmV0dXJuIGFjdGlvbj8uYWZ0ZXJFeGVjdXRpb24/LmVuYWJsZUF1dG9TY3JvbGwgPT09IHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRhRmllbGRJc0NvcHlBY3Rpb24oZGF0YUZpZWxkOiBEYXRhRmllbGRGb3JBY3Rpb25UeXBlcyk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gZGF0YUZpZWxkLmFubm90YXRpb25zPy5VST8uSXNDb3B5QWN0aW9uPy52YWx1ZU9mKCkgPT09IHRydWUgJiYgZGF0YUZpZWxkLiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JBY3Rpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb3B5QWN0aW9uKGNvcHlEYXRhRmllbGRzOiBEYXRhRmllbGRGb3JBY3Rpb25UeXBlc1tdKTogRGF0YUZpZWxkRm9yQWN0aW9uVHlwZXMgfCB1bmRlZmluZWQge1xuXHRpZiAoY29weURhdGFGaWVsZHMubGVuZ3RoID09PSAxKSB7XG5cdFx0cmV0dXJuIGNvcHlEYXRhRmllbGRzWzBdO1xuXHR9XG5cdGlmIChjb3B5RGF0YUZpZWxkcy5sZW5ndGggPiAxKSB7XG5cdFx0TG9nLmVycm9yKFwiTXVsdGlwbGUgYWN0aW9ucyBhcmUgYW5ub3RhdGVkIHdpdGggaXNDb3B5QWN0aW9uLiBUaGVyZSBjYW4gYmUgb25seSBvbmUgc3RhbmRhcmQgY29weSBhY3Rpb24uXCIpO1xuXHR9XG5cdHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogTWV0aG9kIHRvIGV4dHJhY3QgbWVudSBpdGVtcyBmcm9tIGFjdGlvbnMgb2YgdHlwZSBtZW51cy5cbiAqIEBwYXJhbSBhbm5vdGF0aW9uQWN0aW9ucyBDb2xsZWN0aW9uIG9mIGFubm90YXRpb24gYmFzZWQgYWN0aW9uc1xuICogQHJldHVybnMgQ29sbGVjdGlvbiBvZiBhY3Rpb25zIHdoaWNoIGFyZSBtZW51IGl0ZW1zIGluIG9uZSBvZiB0aGUgYW5ub3RhdGlvbiBiYXNlZCBtZW51c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QW5ub3RhdGlvbk1lbnVBY3Rpb25JdGVtcyhhbm5vdGF0aW9uQWN0aW9uczogQmFzZUFjdGlvbltdKTogQmFzZUFjdGlvbltdIHtcblx0Y29uc3QgbWVudUFjdGlvbkl0ZW1zOiBCYXNlQWN0aW9uW10gPSBbXTtcblxuXHRhbm5vdGF0aW9uQWN0aW9ucy5mb3JFYWNoKChhY3Rpb246IEJhc2VBY3Rpb24pID0+IHtcblx0XHRpZiAoYWN0aW9uLnR5cGUgPT09IFwiTWVudVwiICYmICFhY3Rpb24uaWQ/LnN0YXJ0c1dpdGgoXCJDdXN0b21BY3Rpb246OlwiKSAmJiBhY3Rpb24ubWVudSkge1xuXHRcdFx0bWVudUFjdGlvbkl0ZW1zLnB1c2goLi4uYWN0aW9uLm1lbnUpO1xuXHRcdH1cblx0fSk7XG5cblx0cmV0dXJuIG1lbnVBY3Rpb25JdGVtcztcbn1cblxuLyoqXG4gKiBNZXRob2QgdG8gZmluZCB0aGUgbWF0Y2hpbmcgbWFuaWZlc3QgYWN0aW9ucyB3aGljaCBvdmVycmlkZSB0aGUgYW5ub3RhdGlvbiBtZW51IGl0ZW1zLlxuICogQHBhcmFtIGFubm90YXRpb25NZW51SXRlbXMgQ29sbGVjdGlvbiBvZiBhbm5vdGF0aW9uIGJhc2VkIG1lbnUgaXRlbXNcbiAqIEBwYXJhbSBtYW5pZmVzdEFjdGlvbnMgQ29sbGVjdGlvbiBvZiBtYW5pZmVzdCBiYXNlZCBhY3Rpb25zXG4gKiBAcmV0dXJucyBDb2xsZWN0aW9uIG9mIGFjdGlvbnMgd2hpY2ggYXJlIG1lbnUgaXRlbXMgaW4gb25lIG9mIHRoZSBhbm5vdGF0aW9uIGJhc2VkIG1lbnVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYXRjaGluZ01hbmlmZXN0QWN0aW9uKFxuXHRhbm5vdGF0aW9uTWVudUl0ZW1zOiBCYXNlQWN0aW9uW10sXG5cdG1hbmlmZXN0QWN0aW9uczogUmVjb3JkPHN0cmluZywgQ3VzdG9tQWN0aW9uPlxuKTogUmVjb3JkPHN0cmluZywgQ3VzdG9tQWN0aW9uPiB7XG5cdGNvbnN0IG1hdGNoaW5nTWFuaWZlc3RBY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21BY3Rpb24+ID0ge307XG5cblx0Zm9yIChjb25zdCBtYW5pZmVzdEFjdGlvbiBpbiBtYW5pZmVzdEFjdGlvbnMpIHtcblx0XHRpZiAoXG5cdFx0XHRtYW5pZmVzdEFjdGlvbi5zdGFydHNXaXRoKFwiRGF0YUZpZWxkRm9yQWN0aW9uOjpcIikgJiZcblx0XHRcdGFubm90YXRpb25NZW51SXRlbXMuZmluZCgobWVudUFjdGlvbkl0ZW1zKSA9PiB7XG5cdFx0XHRcdHJldHVybiBtZW51QWN0aW9uSXRlbXMua2V5ID09PSBtYW5pZmVzdEFjdGlvbjtcblx0XHRcdH0pXG5cdFx0KSB7XG5cdFx0XHRtYXRjaGluZ01hbmlmZXN0QWN0aW9uc1ttYW5pZmVzdEFjdGlvbl0gPSBtYW5pZmVzdEFjdGlvbnNbbWFuaWZlc3RBY3Rpb25dO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBtYXRjaGluZ01hbmlmZXN0QWN0aW9ucztcbn1cblxuLyoqXG4gKiBNZXRob2QgdG8gdHJhbnNmb3JtIHRoZSBtZW51cyBieSByZXBsYWNpbmcgdGhlIG1lbnUgaXRlbXMgd2l0aCB0aGVpciBvdmVycmlkaW5nIGFjdGlvbnMuXG4gKiBAcGFyYW0gdW5wcmVwYXJlZEFjdGlvbnMgQ29sbGVjdGlvbiBvZiBhbGwgYWN0aW9ucyBhZnRlciBtZXJnaW5nIG1hbmlmZXN0IGFuZCBhbm5vdGF0aW9uIGFjdGlvbnNcbiAqIEBwYXJhbSBvdmVycmlkZU1lbnVBY3Rpb25zIENvbGxlY3Rpb24gb2YgYWxsIG92ZXJyaWRlbiBtZW51IGl0ZW1zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlTWVudUFjdGlvbnModW5wcmVwYXJlZEFjdGlvbnM6IEN1c3RvbUFjdGlvbltdLCBvdmVycmlkZU1lbnVBY3Rpb25zOiBCYXNlQWN0aW9uW10pOiB2b2lkIHtcblx0bGV0IGZvdW5kQWN0aW9uO1xuXG5cdHVucHJlcGFyZWRBY3Rpb25zLmZvckVhY2goKGFjdGlvbjogQ3VzdG9tQWN0aW9uKSA9PiB7XG5cdFx0aWYgKGFjdGlvbi50eXBlID09PSBBY3Rpb25UeXBlLk1lbnUpIHtcblx0XHRcdGFjdGlvbi5tZW51Py5mb3JFYWNoKChtZW51SXRlbTogQmFzZUFjdGlvbiwgbWVudUl0ZW1JbmRleDogbnVtYmVyKSA9PiB7XG5cdFx0XHRcdGZvdW5kQWN0aW9uID0gb3ZlcnJpZGVNZW51QWN0aW9ucy5maW5kKChvdmVycmlkZU1lbnVBY3Rpb246IEJhc2VBY3Rpb24pID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gb3ZlcnJpZGVNZW51QWN0aW9uLmtleSA9PT0gbWVudUl0ZW0ua2V5O1xuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHRpZiAoZm91bmRBY3Rpb24pIHtcblx0XHRcdFx0XHRhY3Rpb24ubWVudT8uc3BsaWNlKG1lbnVJdGVtSW5kZXgsIDEsIGZvdW5kQWN0aW9uKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHR9KTtcbn1cblxuLyoqXG4gKiBNZXRob2QgdG8gZGV0ZXJtaW5lIGlmIHRoZSBtZW51IGNvbnNpc3RzIG9mIGFsbCBBSSBvcGVyYXRpb24gYWN0aW9ucy5cbiAqIEBwYXJhbSBhbm5vdGF0aW9uQWN0aW9ucyBDb2xsZWN0aW9uIG9mIERhdGFGaWVsZEZvckFjdGlvbnMgb3IgRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9ucyBpbiB0aGUgbWVudVxuICogQHJldHVybnMgQSBib29sZWFuIHRydWUgaWYgYWxsIHJlY29yZHMgaW4gdGhlIG1lbnUgYXJlIEFJIG9wZXJhdGlvbnMsIGZhbHNlIG90aGVyd2lzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNNZW51QUlPcGVyYXRpb24oYW5ub3RhdGlvbkFjdGlvbnM6IERhdGFGaWVsZEZvckFjdGlvbkFic3RyYWN0VHlwZXNbXSk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gYW5ub3RhdGlvbkFjdGlvbnMuZXZlcnkoaXNBY3Rpb25BSU9wZXJhdGlvbik7XG59XG5cbi8qKlxuICogTWV0aG9kIHRvIGRldGVybWluZSBpZiB0aGUgZ2l2ZW4gcmVjb3JkIGlzIGFuIEFJIG9wZXJhdGlvbi5cbiAqIEBwYXJhbSBkYXRhRmllbGQgVGhlIHJlY29yZCBvZiB0eXBlIERhdGFGaWVsZEZvckFjdGlvbiBvciBEYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb25cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiB0cnVlIGlmIHRoZSBnaXZlbiByZWNvcmQgaXMgYW4gQUkgb3BlcmF0aW9uLCBmYWxzZSBvdGhlcndpc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQWN0aW9uQUlPcGVyYXRpb24oZGF0YUZpZWxkOiBEYXRhRmllbGRGb3JBY3Rpb25BYnN0cmFjdFR5cGVzKTogYm9vbGVhbiB7XG5cdGlmIChkYXRhRmllbGQuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckFjdGlvbikge1xuXHRcdHJldHVybiBkYXRhRmllbGQuQWN0aW9uVGFyZ2V0Py5hbm5vdGF0aW9ucy5VST8uSXNBSU9wZXJhdGlvbj8udmFsdWVPZigpID09PSB0cnVlO1xuXHR9XG5cdHJldHVybiBmYWxzZTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUE0Q1lBLFVBQVUsMEJBQVZBLFVBQVU7SUFBVkEsVUFBVTtJQUFWQSxVQUFVO0lBQVZBLFVBQVU7SUFBVkEsVUFBVTtJQUFWQSxVQUFVO0lBQVZBLFVBQVU7SUFBVkEsVUFBVTtJQUFWQSxVQUFVO0lBQVZBLFVBQVU7SUFBVkEsVUFBVTtJQUFW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
|
|
610
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCdXR0b25UeXBlIiwiX2V4cG9ydHMiLCJhaUljb24iLCJnZXRWaXNpYmlsaXR5RW5hYmxlbWVudE1lbnVBY3Rpb25zIiwiYWN0aW9ucyIsIm1lbnVBY3Rpb25Ob3RWaXNpYmxlIiwibWVudUFjdGlvblZpc2libGVQYXRocyIsImF0bGVhc3RPbmVNZW51SXRlbXNWaXNpYmxlIiwibWVudUl0ZW1zVmlzaWJsZVBhdGhzIiwiZm9yRWFjaCIsIm1lbnVBY3Rpb24iLCJ2aXNpYmxlIiwidmFsdWVPZiIsInB1c2giLCJtZW51IiwibGVuZ3RoIiwibWVudUl0ZW0iLCJtZW51SXRlbVZpc2libGUiLCJ0b1N0cmluZyIsImNvbXBpbGVFeHByZXNzaW9uIiwicmVzb2x2ZUJpbmRpbmdTdHJpbmciLCJ2aXNpYmxlRXhwcmVzc2lvbnMiLCJtYXAiLCJtZW51SXRlbVZpc2libGVQYXRoIiwiYW5kIiwib3IiLCJhZGRDb2xsYWJvcmF0aW9uQ29uZGl0aW9uIiwiYWN0aW9uIiwidHlwZSIsIm5vdCIsImVxdWFsIiwiVUkiLCJoYXNDb2xsYWJvcmF0aW9uQXV0aG9yaXphdGlvbiIsIm1hcEFjdGlvbkJ5S2V5IiwibWFuaWZlc3RBY3Rpb25zIiwiYW5ub3RhdGlvbkFjdGlvbnMiLCJhY3Rpb25LZXkiLCJhbm5vdGF0aW9uQWN0aW9uIiwiZmluZCIsImtleSIsIm1hbmlmZXN0QWN0aW9uIiwicmVzdWx0QWN0aW9uIiwiT2JqZWN0Iiwia2V5cyIsImZpbHRlciIsImFjdGlvbkFubm90YXRpb24iLCJBY3Rpb25UeXBlIiwiTWVudSIsImVuYWJsZWQiLCJwcm9wIiwicHJvcEtleSIsImNhbkJlTWVudUl0ZW0iLCJEYXRhRmllbGRGb3JBY3Rpb24iLCJEYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJtYXBNZW51RGVmYXVsdEFjdGlvbiIsImNvbW1hbmRBY3Rpb25zIiwiZGVmYXVsdEFjdGlvbiIsImNvbW1hbmQiLCJtYXBNZW51SXRlbXMiLCJtYXBwZWRNZW51SXRlbXMiLCJtYXRjaGluZ0Fubm90YXRpb25BY3Rpb24iLCJtZW51SXRlbUtleSIsIm1hcHBlZE1lbnVBY3Rpb24iLCJ0cmFuc2Zvcm1NZW51QWN0aW9uc0FuZElkZW50aWZ5Q29tbWFuZHMiLCJhbGxBY3Rpb25zIiwiYWN0aW9uS2V5c1RvRGVsZXRlIiwidW5kZWZpbmVkIiwiX2dldE1hbmlmZXN0RW5hYmxlZCIsImlzQW5ub3RhdGlvbkFjdGlvbiIsImNvbnZlcnRlckNvbnRleHQiLCJmb3JDb250ZXh0TWVudSIsImFyZ3VtZW50cyIsInJlc3VsdCIsImdldE1hbmlmZXN0QWN0aW9uQm9vbGVhblByb3BlcnR5V2l0aEZvcm1hdHRlciIsImludGVybmFsTW9kZWxQcm9wZXJ0eSIsImlmRWxzZSIsInJlcXVpcmVzU2VsZWN0aW9uIiwiZW5hYmxlT25TZWxlY3QiLCJwYXRoSW5Nb2RlbCIsImdyZWF0ZXJPckVxdWFsIiwiX2dldE1hbmlmZXN0VmlzaWJsZSIsIm92ZXJyaWRlTWFuaWZlc3RDb25maWd1cmF0aW9uV2l0aEFubm90YXRpb24iLCJhbm5vdGF0aW9uUGF0aCIsInByZXNzIiwidmlzaWJsZUZvckNvbnRleHRNZW51IiwiZ2V0QWN0aW9uc0Zyb21NYW5pZmVzdCIsIm5hdmlnYXRpb25TZXR0aW5ncyIsImNvbnNpZGVyTmF2aWdhdGlvblNldHRpbmdzIiwiaGlkZGVuQWN0aW9ucyIsImZhY2V0TmFtZSIsImxhc3REb3RJbmRleCIsImxhc3RJbmRleE9mIiwiaWQiLCJzdGFydHNXaXRoIiwiZ2V0Q3VzdG9tQWN0aW9uSUQiLCJEZWZhdWx0IiwiZW5hYmxlZEZvckNvbnRleHRNZW51IiwiaGFuZGxlck1vZHVsZSIsInN1YnN0cmluZyIsInJlcGxhY2UiLCJoYW5kbGVyTWV0aG9kIiwidGV4dCIsIm5vV3JhcCIsIl9fbm9XcmFwIiwicmVwbGFjZVNwZWNpYWxDaGFycyIsImRlZmF1bHRWYWx1ZXNFeHRlbnNpb25GdW5jdGlvbiIsImRlZmF1bHRWYWx1ZXNGdW5jdGlvbiIsInBvc2l0aW9uIiwiYW5jaG9yIiwicGxhY2VtZW50IiwiUGxhY2VtZW50IiwiQWZ0ZXIiLCJpc05hdmlnYWJsZSIsImlzQWN0aW9uTmF2aWdhYmxlIiwiZW5hYmxlQXV0b1Njcm9sbCIsImlubGluZSIsImlzQUlPcGVyYXRpb24iLCJwcm9wZXJ0eVZhbHVlIiwicmVzb2x2ZWRCaW5kaW5nIiwiaXNDb25zdGFudCIsInZhbHVlIiwiY29uc3RhbnQiLCJtZXRob2RQYXRoIiwiZm9ybWF0UmVzdWx0IiwiZnBtRm9ybWF0dGVyIiwiY3VzdG9tQm9vbGVhblByb3BlcnR5Q2hlY2siLCJnZXREYXRhTW9kZWxPYmplY3RQYXRoIiwiY29udGV4dExvY2F0aW9uIiwidGFyZ2V0RW50aXR5VHlwZSIsImdldEVudGl0eVR5cGUiLCJyZW1vdmVEdXBsaWNhdGVBY3Rpb25zIiwib01lbnVJdGVtS2V5cyIsImFjdGlvbk1lbnUiLCJyZWR1Y2UiLCJpdGVtIiwiX3JlZiIsImdldEVuYWJsZWRGb3JBbm5vdGF0aW9uQWN0aW9uRXhwcmVzc2lvbiIsImFjdGlvblRhcmdldCIsInBhdGhGcm9tQ29udGV4dExvY2F0aW9uIiwiYW5ub3RhdGlvbnMiLCJDb3JlIiwiT3BlcmF0aW9uQXZhaWxhYmxlIiwiZGF0YU1vZGVsT2JqZWN0UGF0aCIsImlzRW5hYmxlZEV4cCIsImdldEFjdGlvbkVuYWJsZWRFeHByZXNzaW9uIiwiZ2V0Q29udmVydGVkVHlwZXMiLCJjb2xsYWJvcmF0aW9uT25Sb290IiwiTW9kZWxIZWxwZXIiLCJpc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZEZyb21Db252ZXJ0ZXJDb250ZXh0IiwiZ2V0RHJhZnRSb290IiwiZ2V0RW50aXR5U2V0IiwiZ2V0RW5hYmxlZEZvckFubm90YXRpb25BY3Rpb24iLCJnZXRTZW1hbnRpY09iamVjdE1hcHBpbmciLCJtYXBwaW5ncyIsIm1hcHBpbmciLCJMb2NhbFByb3BlcnR5IiwiJFByb3BlcnR5UGF0aCIsIlNlbWFudGljT2JqZWN0UHJvcGVydHkiLCJiSXNOYXZpZ2F0aW9uQ29uZmlndXJlZCIsImRldGFpbE9yRGlzcGxheSIsImRldGFpbCIsImRpc3BsYXkiLCJyb3V0ZSIsImFmdGVyRXhlY3V0aW9uIiwibmF2aWdhdGVUb0luc3RhbmNlIiwiZGF0YUZpZWxkSXNDb3B5QWN0aW9uIiwiZGF0YUZpZWxkIiwiSXNDb3B5QWN0aW9uIiwiJFR5cGUiLCJnZXRDb3B5QWN0aW9uIiwiY29weURhdGFGaWVsZHMiLCJMb2ciLCJlcnJvciIsImdldEFubm90YXRpb25NZW51QWN0aW9uSXRlbXMiLCJtZW51QWN0aW9uSXRlbXMiLCJnZXRNYXRjaGluZ01hbmlmZXN0QWN0aW9uIiwiYW5ub3RhdGlvbk1lbnVJdGVtcyIsIm1hdGNoaW5nTWFuaWZlc3RBY3Rpb25zIiwicHJlcGFyZU1lbnVBY3Rpb25zIiwidW5wcmVwYXJlZEFjdGlvbnMiLCJvdmVycmlkZU1lbnVBY3Rpb25zIiwiZm91bmRBY3Rpb24iLCJtZW51SXRlbUluZGV4Iiwib3ZlcnJpZGVNZW51QWN0aW9uIiwic3BsaWNlIiwiaXNNZW51QUlPcGVyYXRpb24iLCJldmVyeSIsImlzQWN0aW9uQUlPcGVyYXRpb24iLCJBY3Rpb25UYXJnZXQiLCJJc0FJT3BlcmF0aW9uIiwiZ2V0Q3JlYXRlTmV4dEJ1dHRvblZpc2liaWxpdHkiLCJoaWRkZW5EcmFmdEVuYWJsZWQiLCJmY2xFbmFibGVkIiwiRHJhZnQiLCJJc05ld09iamVjdCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQWN0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQWN0aW9uIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IFNlbWFudGljT2JqZWN0TWFwcGluZ1R5cGUgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NvbW1vblwiO1xuaW1wb3J0IHR5cGUge1xuXHREYXRhRmllbGRGb3JBY3Rpb25BYnN0cmFjdFR5cGVzLFxuXHREYXRhRmllbGRGb3JBY3Rpb25Hcm91cFR5cGVzLFxuXHREYXRhRmllbGRGb3JBY3Rpb25UeXBlc1xufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgeyBVSUFubm90YXRpb25UeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24sIENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQge1xuXHRhbmQsXG5cdGNvbXBpbGVFeHByZXNzaW9uLFxuXHRjb25zdGFudCxcblx0ZXF1YWwsXG5cdGZvcm1hdFJlc3VsdCxcblx0Z3JlYXRlck9yRXF1YWwsXG5cdGlmRWxzZSxcblx0aXNDb25zdGFudCxcblx0bm90LFxuXHRvcixcblx0cGF0aEluTW9kZWwsXG5cdHJlc29sdmVCaW5kaW5nU3RyaW5nXG59IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUge1xuXHRDdXN0b21EZWZpbmVkVGFibGVDb2x1bW5Gb3JPdmVycmlkZSxcblx0TWFuaWZlc3RBY3Rpb24sXG5cdE5hdmlnYXRpb25TZXR0aW5nc0NvbmZpZ3VyYXRpb25cbn0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgQWN0aW9uVHlwZSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB0eXBlIHsgUGFnZUNvbnRleHRQYXRoVGFyZ2V0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvVGVtcGxhdGVDb252ZXJ0ZXJcIjtcbmltcG9ydCB0eXBlIHsgQ29uZmlndXJhYmxlT2JqZWN0LCBDdXN0b21FbGVtZW50LCBPdmVycmlkZVR5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0NvbmZpZ3VyYWJsZU9iamVjdFwiO1xuaW1wb3J0IHsgUGxhY2VtZW50IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9Db25maWd1cmFibGVPYmplY3RcIjtcbmltcG9ydCB7IGdldEN1c3RvbUFjdGlvbklEIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9JRFwiO1xuaW1wb3J0IGZwbUZvcm1hdHRlciBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9GUE1Gb3JtYXR0ZXJcIjtcbmltcG9ydCB7IERyYWZ0LCBVSSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdIZWxwZXJcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHsgcmVwbGFjZVNwZWNpYWxDaGFycyB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5pbXBvcnQgeyBnZXRBY3Rpb25FbmFibGVkRXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuaW1wb3J0IHR5cGUgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IE1ldGFNb2RlbFR5cGUgfSBmcm9tIFwidHlwZXMvbWV0YW1vZGVsX3R5cGVzXCI7XG5pbXBvcnQgdHlwZSBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCIuLi8uLi9Db252ZXJ0ZXJDb250ZXh0XCI7XG5cbmV4cG9ydCBlbnVtIEJ1dHRvblR5cGUge1xuXHRBY2NlcHQgPSBcIkFjY2VwdFwiLFxuXHRBdHRlbnRpb24gPSBcIkF0dGVudGlvblwiLFxuXHRCYWNrID0gXCJCYWNrXCIsXG5cdENyaXRpY2FsID0gXCJDcml0aWNhbFwiLFxuXHREZWZhdWx0ID0gXCJEZWZhdWx0XCIsXG5cdEVtcGhhc2l6ZWQgPSBcIkVtcGhhc2l6ZWRcIixcblx0R2hvc3QgPSBcIkdob3N0XCIsXG5cdE5lZ2F0aXZlID0gXCJOZWdhdGl2ZVwiLFxuXHROZXV0cmFsID0gXCJOZXV0cmFsXCIsXG5cdFJlamVjdCA9IFwiUmVqZWN0XCIsXG5cdFN1Y2Nlc3MgPSBcIlN1Y2Nlc3NcIixcblx0VHJhbnNwYXJlbnQgPSBcIlRyYW5zcGFyZW50XCIsXG5cdFVuc3R5bGVkID0gXCJVbnN0eWxlZFwiLFxuXHRVcCA9IFwiVXBcIlxufVxuXG5leHBvcnQgY29uc3QgYWlJY29uID0gXCJzYXAtaWNvbjovL2FpXCI7XG5cbmV4cG9ydCB0eXBlIEJhc2VBY3Rpb24gPSBDb25maWd1cmFibGVPYmplY3QgJiB7XG5cdGlkPzogc3RyaW5nO1xuXHR0ZXh0Pzogc3RyaW5nO1xuXHR0eXBlPzogQWN0aW9uVHlwZTtcblx0cHJlc3M/OiBzdHJpbmc7XG5cdGVuYWJsZWQ/OiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblx0ZW5hYmxlZEZvckNvbnRleHRNZW51PzogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdHZpc2libGU/OiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblx0dmlzaWJsZUZvckNvbnRleHRNZW51PzogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdGVuYWJsZU9uU2VsZWN0Pzogc3RyaW5nO1xuXHRhbm5vdGF0aW9uUGF0aD86IHN0cmluZztcblx0ZGVmYXVsdFZhbHVlc0V4dGVuc2lvbkZ1bmN0aW9uPzogc3RyaW5nO1xuXHRpc05hdmlnYWJsZT86IGJvb2xlYW47XG5cdGVuYWJsZUF1dG9TY3JvbGw/OiBib29sZWFuO1xuXHRwYXJlbnRFbnRpdHlEZWxldGVFbmFibGVkPzogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdG1lbnU/OiBCYXNlQWN0aW9uW107XG5cdGZhY2V0TmFtZT86IHN0cmluZztcblx0Y29tbWFuZD86IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0aXNBSU9wZXJhdGlvbj86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBBbm5vdGF0aW9uQWN0aW9uID0gQmFzZUFjdGlvbiAmIHtcblx0dHlwZTogQWN0aW9uVHlwZS5EYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb24gfCBBY3Rpb25UeXBlLkRhdGFGaWVsZEZvckFjdGlvbiB8IEFjdGlvblR5cGUuTWVudSB8IEFjdGlvblR5cGUuQ29weTtcblx0YW5ub3RhdGlvblBhdGg6IHN0cmluZztcblx0Y3VzdG9tRGF0YT86IHN0cmluZztcblx0cmVxdWlyZXNEaWFsb2c/OiBzdHJpbmc7XG5cdGJpbmRpbmc/OiBzdHJpbmc7XG5cdGJ1dHRvblR5cGU/OiBCdXR0b25UeXBlLkdob3N0IHwgQnV0dG9uVHlwZS5UcmFuc3BhcmVudCB8IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEFubm90YXRpb25BY3Rpb25BY3Rpb25Hcm91cCA9IEJhc2VBY3Rpb24gJiB7XG5cdC8vIGltcGxlbWVudHMgRGF0YUZpZWxkRm9yQWN0aW9uR3JvdXBcblx0dHlwZTogQWN0aW9uVHlwZS5NZW51O1xuXHRtZW51OiBBbm5vdGF0aW9uQWN0aW9uW107XG59O1xuXG5leHBvcnQgdHlwZSBDdXN0b21BY3Rpb24gPSBDdXN0b21FbGVtZW50PFxuXHRCYXNlQWN0aW9uICYge1xuXHRcdGhhbmRsZXJNZXRob2Q/OiBzdHJpbmc7XG5cdFx0aGFuZGxlck1vZHVsZT86IHN0cmluZztcblx0XHRub1dyYXA/OiBib29sZWFuOyAvLyBJbmRpY2F0ZXMgdGhhdCB3ZSB3YW50IHRvIGF2b2lkIHRoZSB3cmFwcGluZyBmcm9tIHRoZSBGUE1IZWxwZXJcblx0XHRyZXF1aXJlc1NlbGVjdGlvbj86IGJvb2xlYW47XG5cdFx0ZGVmYXVsdEFjdGlvbj86IHN0cmluZyB8IEJhc2VBY3Rpb24gfCBDdXN0b21BY3Rpb247IC8vIEluZGljYXRlcyB3aGV0aGVyIGEgZGVmYXVsdCBhY3Rpb24gZXhpc3RzIGluIHRoaXMgY29udGV4dFxuXHR9XG4+O1xuXG5leHBvcnQgdHlwZSBBbm5vdGF0aW9uQWN0aW9uR3JvdXAgPSBCYXNlQWN0aW9uICYge1xuXHQvLyBpbXBsZW1lbnRzIERhdGFGaWVsZEZvckFjdGlvbkdyb3VwXG5cdHR5cGU6IEFjdGlvblR5cGUuTWVudTtcblx0bWVudTogQW5ub3RhdGlvbkFjdGlvbltdO1xufTtcblxuZXhwb3J0IHR5cGUgQ29tYmluZWRBY3Rpb24gPSB7XG5cdGFjdGlvbnM6IEJhc2VBY3Rpb25bXTtcblx0Y29tbWFuZEFjdGlvbnM6IFJlY29yZDxzdHJpbmcsIEN1c3RvbUFjdGlvbj47XG59O1xuXG5leHBvcnQgdHlwZSBPdmVycmlkZVR5cGVBY3Rpb24gPSB7XG5cdGVuYWJsZUF1dG9TY3JvbGw/OiBPdmVycmlkZVR5cGUub3ZlcndyaXRlO1xuXHRkZWZhdWx0VmFsdWVzRXh0ZW5zaW9uRnVuY3Rpb24/OiBPdmVycmlkZVR5cGUub3ZlcndyaXRlO1xuXHRpc05hdmlnYWJsZT86IE92ZXJyaWRlVHlwZS5vdmVyd3JpdGU7XG5cdGVuYWJsZU9uU2VsZWN0PzogT3ZlcnJpZGVUeXBlLm92ZXJ3cml0ZTtcblx0bWVudT86IE92ZXJyaWRlVHlwZS5vdmVyd3JpdGU7XG5cblx0Ly8gQ2FuIGJlIG92ZXJ3cml0dGVuIGJ5IG1hbmlmZXN0IGNvbmZpZ3VyYXRpb24gYW5kIHNob3VsZCBiZSBhbGlnbmVkIGZvciBhbGwgYWN0aW9uc1xuXHRlbmFibGVkOiBPdmVycmlkZVR5cGUub3ZlcndyaXRlO1xuXHR2aXNpYmxlOiBPdmVycmlkZVR5cGUub3ZlcndyaXRlO1xuXHR2aXNpYmxlRm9yQ29udGV4dE1lbnU/OiBPdmVycmlkZVR5cGUub3ZlcndyaXRlO1xuXHRjb21tYW5kOiBPdmVycmlkZVR5cGUub3ZlcndyaXRlO1xuXHRwb3NpdGlvbjogT3ZlcnJpZGVUeXBlLm92ZXJ3cml0ZTtcbn07XG5cbmV4cG9ydCB0eXBlIERhdGFGaWVsZEZvckFjdGlvbk9yQWN0aW9uR3JvdXAgPSBEYXRhRmllbGRGb3JBY3Rpb25UeXBlcyB8IERhdGFGaWVsZEZvckFjdGlvbkdyb3VwVHlwZXM7XG5cbnR5cGUgTWVudUFjdGlvbiA9XG5cdHwgQmFzZUFjdGlvblxuXHR8IHtcblx0XHRcdHZpc2libGU/OiBzdHJpbmdbXTtcblx0XHRcdGVuYWJsZWQ/OiBzdHJpbmdbXTtcblx0XHRcdG1lbnU/OiBCYXNlQWN0aW9uW107XG5cdCAgfTtcbi8qKlxuICogTWV0aG9kIHByb3ZpZGVzIGFjdGlvbnMgY29sbGVjdGlvbiBhZnRlciBjYWxjdWxhdGluZyB0aGUgdmlzaWJsZSBzZXR0aW5nIGZvciBhbGwgYWN0aW9ucyBvZiB0eXBlIG1lbnUgZGVwZW5kaW5nIG9uIGl0cyB2aXNpYmxlIHNldHRpbmcgYW5kIGl0cyBtZW51IGl0ZW1zIHZpc2libGUgc2V0dGluZ3MuXG4gKiBAcGFyYW0gYWN0aW9ucyBDb2xsZWN0aW9uIG9mIGFjdGlvbnNcbiAqIEByZXR1cm5zIENvbGxlY3Rpb24gb2YgYWN0aW9ucyB3aXRoIHZpc2libGUgc2V0dGluZyBzZXQgZm9yIGFjdGlvbnMgb2YgdHlwZSBtZW51XG4gKi9cbmV4cG9ydCBjb25zdCBnZXRWaXNpYmlsaXR5RW5hYmxlbWVudE1lbnVBY3Rpb25zID0gKGFjdGlvbnM6IEN1c3RvbUFjdGlvbltdKTogQ3VzdG9tQWN0aW9uW10gPT4ge1xuXHRsZXQgbWVudUFjdGlvbk5vdFZpc2libGU6IHN0cmluZyB8IGJvb2xlYW4sXG5cdFx0bWVudUFjdGlvblZpc2libGVQYXRoczogc3RyaW5nW10sXG5cdFx0YXRsZWFzdE9uZU1lbnVJdGVtc1Zpc2libGU6IGJvb2xlYW4sXG5cdFx0bWVudUl0ZW1zVmlzaWJsZVBhdGhzOiBzdHJpbmdbXTtcblx0YWN0aW9ucy5mb3JFYWNoKChtZW51QWN0aW9uOiBNZW51QWN0aW9uKSA9PiB7XG5cdFx0bWVudUFjdGlvbk5vdFZpc2libGUgPSBtZW51QWN0aW9uLnZpc2libGU/LnZhbHVlT2YoKSA9PT0gXCJmYWxzZVwiO1xuXHRcdGF0bGVhc3RPbmVNZW51SXRlbXNWaXNpYmxlID0gZmFsc2U7XG5cdFx0bWVudUl0ZW1zVmlzaWJsZVBhdGhzID0gW107XG5cdFx0bWVudUFjdGlvblZpc2libGVQYXRocyA9IFtdO1xuXHRcdGlmIChtZW51QWN0aW9uLnZpc2libGUgJiYgIShtZW51QWN0aW9uLnZpc2libGUudmFsdWVPZigpID09PSBcInRydWVcIiB8fCBtZW51QWN0aW9uLnZpc2libGUudmFsdWVPZigpID09PSBcImZhbHNlXCIpKSB7XG5cdFx0XHRtZW51QWN0aW9uVmlzaWJsZVBhdGhzLnB1c2gobWVudUFjdGlvbi52aXNpYmxlIGFzIHN0cmluZyk7XG5cdFx0fVxuXHRcdGlmIChtZW51QWN0aW9uPy5tZW51Py5sZW5ndGgpIHtcblx0XHRcdG1lbnVBY3Rpb24/Lm1lbnU/LmZvckVhY2goKG1lbnVJdGVtOiBCYXNlQWN0aW9uKTogdm9pZCA9PiB7XG5cdFx0XHRcdGNvbnN0IG1lbnVJdGVtVmlzaWJsZSA9IG1lbnVJdGVtLnZpc2libGU7XG5cdFx0XHRcdGlmIChtZW51SXRlbVZpc2libGUgJiYgKHR5cGVvZiBtZW51SXRlbVZpc2libGUgPT09IFwiYm9vbGVhblwiIHx8IG1lbnVJdGVtVmlzaWJsZS52YWx1ZU9mKCkgPT09IFwidHJ1ZVwiKSkge1xuXHRcdFx0XHRcdGF0bGVhc3RPbmVNZW51SXRlbXNWaXNpYmxlID0gdHJ1ZTtcblx0XHRcdFx0fSBlbHNlIGlmIChtZW51SXRlbVZpc2libGUgJiYgbWVudUl0ZW1WaXNpYmxlLnZhbHVlT2YoKSAhPT0gXCJmYWxzZVwiKSB7XG5cdFx0XHRcdFx0bWVudUl0ZW1zVmlzaWJsZVBhdGhzLnB1c2gobWVudUl0ZW1WaXNpYmxlLnZhbHVlT2YoKSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0aWYgKG1lbnVBY3Rpb25Ob3RWaXNpYmxlKSB7XG5cdFx0XHRcdC8vIGlmIG1lbnUgaXMgc3RhdGljYWxseSB2aXNpYmxlIGZhbHNlXG5cdFx0XHRcdG1lbnVBY3Rpb24udmlzaWJsZSA9IGZhbHNlLnRvU3RyaW5nKCk7XG5cdFx0XHR9IGVsc2UgaWYgKCFhdGxlYXN0T25lTWVudUl0ZW1zVmlzaWJsZSAmJiAhbWVudUl0ZW1zVmlzaWJsZVBhdGhzLmxlbmd0aCkge1xuXHRcdFx0XHQvLyBpZiBhbGwgbWVudSBpdGVtcyBhcmUgc3RhdGljYWxseSB2aXNpYmxlIGZhbHNlXG5cdFx0XHRcdG1lbnVBY3Rpb24udmlzaWJsZSA9IGZhbHNlLnRvU3RyaW5nKCk7XG5cdFx0XHR9IGVsc2UgaWYgKGF0bGVhc3RPbmVNZW51SXRlbXNWaXNpYmxlICYmICFtZW51QWN0aW9uVmlzaWJsZVBhdGhzLmxlbmd0aCkge1xuXHRcdFx0XHQvLyBpZiBhdCBsZWFzdCBvbmUgbWVudSBpdGVtIGlzIHN0YXRpY2FsbHkgdmlzaWJsZSB0cnVlIGFuZCBubyB2aXNpYmxlIHNldHRpbmcgZm9yIG1lbnVcblx0XHRcdFx0bWVudUFjdGlvbi52aXNpYmxlID0gdHJ1ZS50b1N0cmluZygpO1xuXHRcdFx0fSBlbHNlIGlmIChhdGxlYXN0T25lTWVudUl0ZW1zVmlzaWJsZSkge1xuXHRcdFx0XHQvLyBpZiBhdCBsZWFzdCBvbmUgbWVudSBpdGVtLCB0aGVuIGp1c3QgY29uc2lkZXIgdmlzaWJsZSBzZXR0aW5nIG9mIHRoZSBtZW51XG5cdFx0XHRcdG1lbnVBY3Rpb24udmlzaWJsZSA9IGNvbXBpbGVFeHByZXNzaW9uKHJlc29sdmVCaW5kaW5nU3RyaW5nKG1lbnVBY3Rpb24udmlzaWJsZSBhcyBzdHJpbmcpKTtcblx0XHRcdH0gZWxzZSBpZiAobWVudUFjdGlvblZpc2libGVQYXRocy5sZW5ndGggfHwgbWVudUl0ZW1zVmlzaWJsZVBhdGhzLmxlbmd0aCkge1xuXHRcdFx0XHQvLyBJZiB0aGUgbWVudSBpcyBzZXQgdG8gaW52aXNpYmxlLCBpdCBzaG91bGQgYmUgaW52aXNpYmxlLCBvdGhlcndpc2UgdGhlIHZpc2liaWxpdHkgc2hvdWxkIGJlIGNhbGN1bGF0ZWQgZnJvbSB0aGUgaXRlbXNcblx0XHRcdFx0Y29uc3QgdmlzaWJsZUV4cHJlc3Npb25zOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj5bXSA9IG1lbnVJdGVtc1Zpc2libGVQYXRocy5tYXAoKG1lbnVJdGVtVmlzaWJsZVBhdGgpID0+XG5cdFx0XHRcdFx0cmVzb2x2ZUJpbmRpbmdTdHJpbmcobWVudUl0ZW1WaXNpYmxlUGF0aCwgXCJib29sZWFuXCIpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdG1lbnVBY3Rpb24udmlzaWJsZSA9IGNvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0XHRcdGFuZChyZXNvbHZlQmluZGluZ1N0cmluZygobWVudUFjdGlvbi52aXNpYmxlIGFzIHN0cmluZykgfHwgdHJ1ZSwgXCJib29sZWFuXCIpLCBvciguLi52aXNpYmxlRXhwcmVzc2lvbnMpKVxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bWVudUFjdGlvbi52aXNpYmxlID0gKCFtZW51QWN0aW9uTm90VmlzaWJsZSkudG9TdHJpbmcoKTtcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gYWN0aW9ucztcbn07XG5cbi8qKlxuICogQWRkcyB0aGUgY29sbGFib3JhdGlvbiBjb25kaXRpb24gdG8gYWxsIGFjdGlvbnMgd2l0aCB0eXBlIEZvckFjdGlvbi5cbiAqIFRoaXMgZGlzYWJsZXMgdGhlIGFjdGlvbnMgaWYgdGhlIGNvbGxhYm9yYXRpb24gaXMgZW5hYmxlZCwgYnV0IHRoZSB1c2VyIGRvZXNuJ3QgaGF2ZSB0aGUgYXV0aG9yaXphdGlvbiBmcm9tIHRoZSBiYWNrIGVuZC5cbiAqIEBwYXJhbSBhY3Rpb25zIFRoZSBsaXN0IG9mIGRlZmluaXRpb25zIG9mIHRoZSB0YWJsZSBhY3Rpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkQ29sbGFib3JhdGlvbkNvbmRpdGlvbihhY3Rpb25zOiBDdXN0b21BY3Rpb25bXSk6IHZvaWQge1xuXHRhY3Rpb25zLmZvckVhY2goKGFjdGlvbikgPT4ge1xuXHRcdGlmIChhY3Rpb24udmlzaWJsZT8udmFsdWVPZigpID09PSBcImZhbHNlXCIpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKGFjdGlvbi50eXBlID09PSBcIkZvckFjdGlvblwiKSB7XG5cdFx0XHRhY3Rpb24udmlzaWJsZSA9IGNvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0XHRhbmQocmVzb2x2ZUJpbmRpbmdTdHJpbmcoYWN0aW9uLnZpc2libGUgYXMgc3RyaW5nLCBcImJvb2xlYW5cIiksIG5vdChlcXVhbChVSS5oYXNDb2xsYWJvcmF0aW9uQXV0aG9yaXphdGlvbiwgZmFsc2UpKSlcblx0XHRcdCk7XG5cdFx0fVxuXHR9KTtcbn1cblxuLyoqXG4gKiBNYXBzIGFuIGFjdGlvbiBieSBpdHMga2V5LCBiYXNlZCBvbiB0aGUgZ2l2ZW4gYW5ub3RhdGlvbiBhY3Rpb25zIGFuZCBtYW5pZmVzdCBjb25maWd1cmF0aW9uLiBUaGUgcmVzdWx0IGFscmVhZHkgcmVwcmVzZW50cyB0aGVcbiAqIG1lcmdlZCBhY3Rpb24gZnJvbSBib3RoIGNvbmZpZ3VyYXRpb24gc291cmNlcy5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIGFsc28gcmV0dXJucyBhbiBpbmRpY2F0aW9uIHdoZXRoZXIgdGhlIGFjdGlvbiBjYW4gYmUgYSBtZW51IGl0ZW0sIHNheWluZyB3aGV0aGVyIGl0IGlzIHZpc2libGUgb3Igb2YgYSBzcGVjaWZpYyB0eXBlXG4gKiB0aGF0IGFsbG93cyB0aGlzLlxuICogQHBhcmFtIG1hbmlmZXN0QWN0aW9ucyBBY3Rpb25zIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0XG4gKiBAcGFyYW0gYW5ub3RhdGlvbkFjdGlvbnMgQWN0aW9ucyBkZWZpbmVkIHRocm91Z2ggYW5ub3RhdGlvbnNcbiAqIEBwYXJhbSBhY3Rpb25LZXkgQWN0aW9uIEtleSB0byBsb29rIHVwXG4gKiBAcmV0dXJucyBNZXJnZWQgYWN0aW9uIGFuZCBpbmRpY2F0b3Igd2hldGhlciBpdCBjYW4gYmUgYSBtZW51IGl0ZW1cbiAqL1xuZnVuY3Rpb24gbWFwQWN0aW9uQnlLZXkoXG5cdG1hbmlmZXN0QWN0aW9uczogUmVjb3JkPHN0cmluZywgUGFydGlhbGx5Q29udmVydGVkQ3VzdG9tQWN0aW9uPixcblx0YW5ub3RhdGlvbkFjdGlvbnM6IEJhc2VBY3Rpb25bXSxcblx0YWN0aW9uS2V5OiBzdHJpbmdcbik6IHsgYWN0aW9uOiBCYXNlQWN0aW9uIHwgQ3VzdG9tQWN0aW9uOyBjYW5CZU1lbnVJdGVtOiBib29sZWFuIHwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSB7XG5cdGNvbnN0IGFubm90YXRpb25BY3Rpb24gPSBhbm5vdGF0aW9uQWN0aW9ucy5maW5kKChhY3Rpb24pID0+IGFjdGlvbi5rZXkgPT09IGFjdGlvbktleSk7XG5cdGNvbnN0IG1hbmlmZXN0QWN0aW9uID0gbWFuaWZlc3RBY3Rpb25zW2FjdGlvbktleV07XG5cdGxldCByZXN1bHRBY3Rpb246IFBhcnRpYWxseUNvbnZlcnRlZEN1c3RvbUFjdGlvbiB8IEJhc2VBY3Rpb24gPSB7IC4uLihhbm5vdGF0aW9uQWN0aW9uID8/IG1hbmlmZXN0QWN0aW9uKSB9O1xuXG5cdC8vIGFjdGlvbnMgaW5zaWRlIG1lbnVzIGNhbid0IGJlIGZvdW5kIG9uIHRvcCBsZXZlbCwgc28gYXNzaWduIGFjdGlvbnMgZnJvbSBtZW51IHRvIGl0XG5cdGlmIChPYmplY3Qua2V5cyhyZXN1bHRBY3Rpb24pLmxlbmd0aCA9PT0gMCkge1xuXHRcdGFubm90YXRpb25BY3Rpb25zXG5cdFx0XHQuZmlsdGVyKChhY3Rpb25Bbm5vdGF0aW9uOiBCYXNlQWN0aW9uKSA9PiB7XG5cdFx0XHRcdHJldHVybiBhY3Rpb25Bbm5vdGF0aW9uLnR5cGUgPT09IEFjdGlvblR5cGUuTWVudTtcblx0XHRcdH0pXG5cdFx0XHQuZm9yRWFjaCgobWVudUFjdGlvbjogQmFzZUFjdGlvbikgPT4ge1xuXHRcdFx0XHRtZW51QWN0aW9uLm1lbnU/LmZvckVhY2goKG1lbnVJdGVtOiBCYXNlQWN0aW9uKSA9PiB7XG5cdFx0XHRcdFx0aWYgKG1lbnVJdGVtLmtleSA9PT0gYWN0aW9uS2V5KSB7XG5cdFx0XHRcdFx0XHRyZXN1bHRBY3Rpb24gPSBtZW51SXRlbTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdH1cblxuXHQvLyBBbm5vdGF0aW9uIGFjdGlvbiBhbmQgbWFuaWZlc3QgY29uZmlndXJhdGlvbiBhbHJlYWR5IGhhcyB0byBiZSBtZXJnZWQgaGVyZSBhcyBpbnNlcnRDdXN0b21FbGVtZW50cyBvbmx5IGNvbnNpZGVycyB0b3AtbGV2ZWwgYWN0aW9uc1xuXHRpZiAoYW5ub3RhdGlvbkFjdGlvbikge1xuXHRcdC8vIElmIGVuYWJsZWQgb3IgdmlzaWJsZSBpcyBub3Qgc2V0IGluIHRoZSBtYW5pZmVzdCwgdXNlIHRoZSBhbm5vdGF0aW9uIHZhbHVlIGFuZCBoZW5jZSBkbyBub3Qgb3ZlcndyaXRlXG5cdFx0cmVzdWx0QWN0aW9uLmVuYWJsZWQgPSBtYW5pZmVzdEFjdGlvbj8uZW5hYmxlZCA/PyBhbm5vdGF0aW9uQWN0aW9uLmVuYWJsZWQ7XG5cdFx0cmVzdWx0QWN0aW9uLnZpc2libGUgPSBtYW5pZmVzdEFjdGlvbj8udmlzaWJsZSA/PyBhbm5vdGF0aW9uQWN0aW9uLnZpc2libGU7XG5cblx0XHRmb3IgKGNvbnN0IHByb3AgaW4gbWFuaWZlc3RBY3Rpb24gfHwge30pIHtcblx0XHRcdGNvbnN0IHByb3BLZXkgPSBwcm9wIGFzIGtleW9mIEJhc2VBY3Rpb247XG5cdFx0XHRpZiAoIWFubm90YXRpb25BY3Rpb25bcHJvcEtleV0gJiYgcHJvcEtleSAhPT0gXCJtZW51XCIpIHtcblx0XHRcdFx0cmVzdWx0QWN0aW9uW3Byb3BLZXldID0gbWFuaWZlc3RBY3Rpb25bcHJvcEtleV0gYXMgbmV2ZXI7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Y29uc3QgY2FuQmVNZW51SXRlbSA9XG5cdFx0cmVzdWx0QWN0aW9uPy52aXNpYmxlIHx8XG5cdFx0cmVzdWx0QWN0aW9uPy50eXBlID09PSBBY3Rpb25UeXBlLkRhdGFGaWVsZEZvckFjdGlvbiB8fFxuXHRcdHJlc3VsdEFjdGlvbj8udHlwZSA9PT0gQWN0aW9uVHlwZS5EYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb247XG5cblx0cmV0dXJuIHtcblx0XHRhY3Rpb246IHJlc3VsdEFjdGlvbiBhcyBCYXNlQWN0aW9uIHwgQ3VzdG9tQWN0aW9uLFxuXHRcdGNhbkJlTWVudUl0ZW1cblx0fTtcbn1cblxuLyoqXG4gKiBNYXAgdGhlIGRlZmF1bHQgYWN0aW9uIGtleSBvZiBhIG1lbnUgdG8gaXRzIGFjdHVhbCBhY3Rpb24gY29uZmlndXJhdGlvbiBhbmQgaWRlbnRpZnkgd2hldGhlciB0aGlzIGRlZmF1bHQgYWN0aW9uIGlzIGEgY29tbWFuZC5cbiAqIEBwYXJhbSBtZW51QWN0aW9uIE1lbnUgYWN0aW9uIHRvIG1hcCB0aGUgZGVmYXVsdCBhY3Rpb24gZm9yXG4gKiBAcGFyYW0gbWFuaWZlc3RBY3Rpb25zIEFjdGlvbnMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3RcbiAqIEBwYXJhbSBhbm5vdGF0aW9uQWN0aW9ucyBBY3Rpb25zIGRlZmluZWQgdGhyb3VnaCBhbm5vdGF0aW9uc1xuICogQHBhcmFtIGNvbW1hbmRBY3Rpb25zIEFycmF5IG9mIGNvbW1hbmQgYWN0aW9ucyB0byBwdXNoIHRoZSBkZWZhdWx0IGFjdGlvbiB0byBpZiBhcHBsaWNhYmxlXG4gKi9cbmZ1bmN0aW9uIG1hcE1lbnVEZWZhdWx0QWN0aW9uKFxuXHRtZW51QWN0aW9uOiBQYXJ0aWFsbHlDb252ZXJ0ZWRDdXN0b21BY3Rpb24sXG5cdG1hbmlmZXN0QWN0aW9uczogUmVjb3JkPHN0cmluZywgUGFydGlhbGx5Q29udmVydGVkQ3VzdG9tQWN0aW9uPixcblx0YW5ub3RhdGlvbkFjdGlvbnM6IEJhc2VBY3Rpb25bXSxcblx0Y29tbWFuZEFjdGlvbnM6IFJlY29yZDxzdHJpbmcsIEN1c3RvbUFjdGlvbiB8IEJhc2VBY3Rpb24+XG4pOiB2b2lkIHtcblx0Y29uc3QgeyBhY3Rpb24sIGNhbkJlTWVudUl0ZW0gfSA9IG1hcEFjdGlvbkJ5S2V5KG1hbmlmZXN0QWN0aW9ucywgYW5ub3RhdGlvbkFjdGlvbnMsIG1lbnVBY3Rpb24uZGVmYXVsdEFjdGlvbiBhcyBzdHJpbmcpO1xuXG5cdGlmIChjYW5CZU1lbnVJdGVtKSB7XG5cdFx0bWVudUFjdGlvbi5kZWZhdWx0QWN0aW9uID0gYWN0aW9uO1xuXHR9XG5cblx0aWYgKGFjdGlvbi5jb21tYW5kKSB7XG5cdFx0Y29tbWFuZEFjdGlvbnNbYWN0aW9uLmtleV0gPSBhY3Rpb247XG5cdH1cbn1cblxuLyoqXG4gKiBNYXAgdGhlIG1lbnUgaXRlbSBrZXlzIG9mIGEgbWVudSB0byB0aGVpciBhY3R1YWwgYWN0aW9uIGNvbmZpZ3VyYXRpb25zIGFuZCBpZGVudGlmeSB3aGV0aGVyIHRoZXkgYXJlIGNvbW1hbmRzLlxuICogQHBhcmFtIG1lbnVBY3Rpb24gTWVudSBhY3Rpb24gdG8gbWFwIHRoZSBtZW51IGl0ZW1zIGZvclxuICogQHBhcmFtIG1hbmlmZXN0QWN0aW9ucyBBY3Rpb25zIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0XG4gKiBAcGFyYW0gYW5ub3RhdGlvbkFjdGlvbnMgQWN0aW9ucyBkZWZpbmVkIHRocm91Z2ggYW5ub3RhdGlvbnNcbiAqIEBwYXJhbSBjb21tYW5kQWN0aW9ucyBBcnJheSBvZiBjb21tYW5kIGFjdGlvbnMgdG8gcHVzaCB0aGUgbWVudSBpdGVtIGFjdGlvbnMgdG8gaWYgYXBwbGljYWJsZVxuICovXG5mdW5jdGlvbiBtYXBNZW51SXRlbXMoXG5cdG1lbnVBY3Rpb246IFBhcnRpYWxseUNvbnZlcnRlZEN1c3RvbUFjdGlvbixcblx0bWFuaWZlc3RBY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBQYXJ0aWFsbHlDb252ZXJ0ZWRDdXN0b21BY3Rpb24+LFxuXHRhbm5vdGF0aW9uQWN0aW9uczogQmFzZUFjdGlvbltdLFxuXHRjb21tYW5kQWN0aW9uczogUmVjb3JkPHN0cmluZywgQmFzZUFjdGlvbiB8IEN1c3RvbUFjdGlvbj5cbik6IHZvaWQge1xuXHRjb25zdCBtYXBwZWRNZW51SXRlbXM6IChDdXN0b21BY3Rpb24gfCBCYXNlQWN0aW9uKVtdID0gW107XG5cdGNvbnN0IG1hdGNoaW5nQW5ub3RhdGlvbkFjdGlvbiA9IGFubm90YXRpb25BY3Rpb25zLmZpbmQoKGFubm90YXRpb25BY3Rpb24pID0+IGFubm90YXRpb25BY3Rpb24ua2V5ID09PSBtZW51QWN0aW9uLmtleSk7XG5cblx0aWYgKG1lbnVBY3Rpb24ubWVudT8ubGVuZ3RoICE9PSAwKSB7XG5cdFx0Zm9yIChjb25zdCBtZW51SXRlbUtleSBvZiBtZW51QWN0aW9uLm1lbnUgPz8gW10pIHtcblx0XHRcdGNvbnN0IHsgYWN0aW9uLCBjYW5CZU1lbnVJdGVtIH0gPSBtYXBBY3Rpb25CeUtleShtYW5pZmVzdEFjdGlvbnMsIGFubm90YXRpb25BY3Rpb25zLCBtZW51SXRlbUtleSk7XG5cblx0XHRcdGlmIChjYW5CZU1lbnVJdGVtKSB7XG5cdFx0XHRcdG1hcHBlZE1lbnVJdGVtcy5wdXNoKGFjdGlvbik7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChhY3Rpb24uY29tbWFuZCkge1xuXHRcdFx0XHRjb21tYW5kQWN0aW9uc1ttZW51SXRlbUtleV0gPSBhY3Rpb247XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gSWYgbm8gbWVudSBpdGVtcyBhcmUgYXNzaWduZWQgdG8gdGhlIG1hbmlmZXN0LW92ZXJyaWRlLW1lbnUsIGl0IGluaGVyaXRzIHRoZSBpdGVtcyBmcm9tIHRoZSBwcmV2aW91cyBtZW51XG5cdGVsc2UgaWYgKG1hdGNoaW5nQW5ub3RhdGlvbkFjdGlvbikge1xuXHRcdG1hdGNoaW5nQW5ub3RhdGlvbkFjdGlvbi5tZW51Py5mb3JFYWNoKChtZW51SXRlbSkgPT4gbWFwcGVkTWVudUl0ZW1zLnB1c2gobWVudUl0ZW0pKTtcblx0fVxuXG5cdGNvbnN0IG1hcHBlZE1lbnVBY3Rpb24gPSBtZW51QWN0aW9uIGFzIEN1c3RvbUFjdGlvbjtcblx0bWFwcGVkTWVudUFjdGlvbi5tZW51ID0gbWFwcGVkTWVudUl0ZW1zO1xuXG5cdC8vIElmIHRoZSBtZW51IGlzIHNldCB0byBpbnZpc2libGUsIGl0IHNob3VsZCBiZSBpbnZpc2libGUsIG90aGVyd2lzZSB0aGUgdmlzaWJpbGl0eSBzaG91bGQgYmUgY2FsY3VsYXRlZCBmcm9tIHRoZSBpdGVtc1xuXHRjb25zdCB2aXNpYmxlRXhwcmVzc2lvbnM6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPltdID0gbWFwcGVkTWVudUl0ZW1zLm1hcCgobWVudUl0ZW0pID0+XG5cdFx0cmVzb2x2ZUJpbmRpbmdTdHJpbmcobWVudUl0ZW0udmlzaWJsZSBhcyBzdHJpbmcsIFwiYm9vbGVhblwiKVxuXHQpO1xuXHRtYXBwZWRNZW51QWN0aW9uLnZpc2libGUgPSBjb21waWxlRXhwcmVzc2lvbihcblx0XHRhbmQocmVzb2x2ZUJpbmRpbmdTdHJpbmcobWVudUFjdGlvbi52aXNpYmxlIGFzIHN0cmluZywgXCJib29sZWFuXCIpLCBvciguLi52aXNpYmxlRXhwcmVzc2lvbnMpKVxuXHQpO1xufVxuXG4vKipcbiAqIFRyYW5zZm9ybXMgdGhlIGZsYXQgY29sbGVjdGlvbiBvZiBhY3Rpb25zIGludG8gYSBuZXN0ZWQgc3RydWN0dXJlcyBvZiBtZW51cy4gVGhlIHJlc3VsdCBpcyBhIHJlY29yZCBvZiBhY3Rpb25zIHRoYXQgYXJlIGVpdGhlciBtZW51cyBvclxuICogb25lcyB0aGF0IGRvIG5vdCBhcHBlYXIgaW4gbWVudXMgYXMgbWVudSBpdGVtcy4gSXQgYWxzbyByZXR1cm5zIGEgbGlzdCBvZiBhY3Rpb25zIHRoYXQgaGF2ZSBhbiBhc3NpZ25lZCBjb21tYW5kLlxuICpcbiAqIE5vdGUgdGhhdCBtZW51IGl0ZW1zIGFyZSBhbHJlYWR5IHRoZSBtZXJnZWQgcmVzdWx0IG9mIGFubm90YXRpb24gYWN0aW9ucyBhbmQgdGhlaXIgbWFuaWZlc3QgY29uZmlndXJhdGlvbiwgYXMge0BsaW5rIGluc2VydEN1c3RvbUVsZW1lbnRzfVxuICogb25seSBjb25zaWRlcnMgcm9vdC1sZXZlbCBhY3Rpb25zLlxuICogQHBhcmFtIG1hbmlmZXN0QWN0aW9ucyBBY3Rpb25zIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0XG4gKiBAcGFyYW0gYW5ub3RhdGlvbkFjdGlvbnMgQWN0aW9ucyBkZWZpbmVkIHRocm91Z2ggYW5ub3RhdGlvbnNcbiAqIEByZXR1cm5zIFRoZSB0cmFuc2Zvcm1lZCBhY3Rpb25zIGZyb20gdGhlIG1hbmlmZXN0IGFuZCBhIGxpc3Qgb2YgY29tbWFuZCBhY3Rpb25zXG4gKi9cbmZ1bmN0aW9uIHRyYW5zZm9ybU1lbnVBY3Rpb25zQW5kSWRlbnRpZnlDb21tYW5kcyhcblx0bWFuaWZlc3RBY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBQYXJ0aWFsbHlDb252ZXJ0ZWRDdXN0b21BY3Rpb24+LFxuXHRhbm5vdGF0aW9uQWN0aW9uczogQmFzZUFjdGlvbltdXG4pOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBDdXN0b21BY3Rpb24+PiB7XG5cdGNvbnN0IGFsbEFjdGlvbnM6IFJlY29yZDxzdHJpbmcsIEN1c3RvbUFjdGlvbj4gPSB7fTtcblx0Y29uc3QgYWN0aW9uS2V5c1RvRGVsZXRlOiBzdHJpbmdbXSA9IFtdO1xuXHRjb25zdCBjb21tYW5kQWN0aW9uczogUmVjb3JkPHN0cmluZywgQ3VzdG9tQWN0aW9uPiA9IHt9O1xuXG5cdGZvciAoY29uc3QgYWN0aW9uS2V5IGluIG1hbmlmZXN0QWN0aW9ucykge1xuXHRcdGNvbnN0IG1hbmlmZXN0QWN0aW9uOiBQYXJ0aWFsbHlDb252ZXJ0ZWRDdXN0b21BY3Rpb24gPSBtYW5pZmVzdEFjdGlvbnNbYWN0aW9uS2V5XTtcblxuXHRcdGlmIChtYW5pZmVzdEFjdGlvbi5kZWZhdWx0QWN0aW9uICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdG1hcE1lbnVEZWZhdWx0QWN0aW9uKG1hbmlmZXN0QWN0aW9uLCBtYW5pZmVzdEFjdGlvbnMsIGFubm90YXRpb25BY3Rpb25zLCBjb21tYW5kQWN0aW9ucyk7XG5cdFx0fVxuXG5cdFx0aWYgKG1hbmlmZXN0QWN0aW9uLnR5cGUgPT09IEFjdGlvblR5cGUuTWVudSkge1xuXHRcdFx0bWFwTWVudUl0ZW1zKG1hbmlmZXN0QWN0aW9uLCBtYW5pZmVzdEFjdGlvbnMsIGFubm90YXRpb25BY3Rpb25zLCBjb21tYW5kQWN0aW9ucyk7XG5cblx0XHRcdC8vIE1lbnUgaGFzIG5vIHZpc2libGUgaXRlbXMsIHNvIHJlbW92ZSBpdFxuXHRcdFx0aWYgKCFtYW5pZmVzdEFjdGlvbi5tZW51Py5sZW5ndGgpIHtcblx0XHRcdFx0YWN0aW9uS2V5c1RvRGVsZXRlLnB1c2gobWFuaWZlc3RBY3Rpb24ua2V5KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAobWFuaWZlc3RBY3Rpb24uY29tbWFuZCkge1xuXHRcdFx0Y29tbWFuZEFjdGlvbnNbYWN0aW9uS2V5XSA9IG1hbmlmZXN0QWN0aW9uIGFzIEN1c3RvbUFjdGlvbjtcblx0XHR9XG5cblx0XHRhbGxBY3Rpb25zW2FjdGlvbktleV0gPSBtYW5pZmVzdEFjdGlvbiBhcyBDdXN0b21BY3Rpb247XG5cdH1cblxuXHRhY3Rpb25LZXlzVG9EZWxldGUuZm9yRWFjaCgoYWN0aW9uS2V5OiBzdHJpbmcpID0+IGRlbGV0ZSBhbGxBY3Rpb25zW2FjdGlvbktleV0pO1xuXG5cdHJldHVybiB7XG5cdFx0YWN0aW9uczogYWxsQWN0aW9ucyxcblx0XHRjb21tYW5kQWN0aW9uczogY29tbWFuZEFjdGlvbnNcblx0fTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSBlbmFibGVtZW50IG9mIGEgbWFuaWZlc3QgYWN0aW9uLlxuICogQHBhcmFtIG1hbmlmZXN0QWN0aW9uIFRoZSBhY3Rpb24gY29uZmlndXJlZCBpbiB0aGUgbWFuaWZlc3RcbiAqIEBwYXJhbSBpc0Fubm90YXRpb25BY3Rpb24gV2hldGhlciB0aGUgYWN0aW9uLCBkZWZpbmVkIGluIG1hbmlmZXN0LCBjb3JyZXNwb25kcyB0byBhbiBleGlzdGluZyBhbm5vdGF0aW9uIGFjdGlvbi5cbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcGFyYW0gZm9yQ29udGV4dE1lbnVcbiAqIEByZXR1cm5zIERldGVybWluZWQgcHJvcGVydHkgdmFsdWUgZm9yIHRoZSBlbmFibGVtZW50XG4gKi9cbmNvbnN0IF9nZXRNYW5pZmVzdEVuYWJsZWQgPSBmdW5jdGlvbiAoXG5cdG1hbmlmZXN0QWN0aW9uOiBNYW5pZmVzdEFjdGlvbixcblx0aXNBbm5vdGF0aW9uQWN0aW9uOiBib29sZWFuLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD4sXG5cdGZvckNvbnRleHRNZW51ID0gZmFsc2Vcbik6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHwgdW5kZWZpbmVkIHtcblx0aWYgKGlzQW5ub3RhdGlvbkFjdGlvbiAmJiBtYW5pZmVzdEFjdGlvbi5lbmFibGVkID09PSB1bmRlZmluZWQpIHtcblx0XHQvLyBJZiBhbm5vdGF0aW9uIGFjdGlvbiBoYXMgbm8gcHJvcGVydHkgZGVmaW5lZCBpbiBtYW5pZmVzdCxcblx0XHQvLyBkbyBub3Qgb3ZlcndyaXRlIGl0IHdpdGggbWFuaWZlc3QgYWN0aW9uJ3MgZGVmYXVsdCB2YWx1ZS5cblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0Y29uc3QgcmVzdWx0ID0gZ2V0TWFuaWZlc3RBY3Rpb25Cb29sZWFuUHJvcGVydHlXaXRoRm9ybWF0dGVyKG1hbmlmZXN0QWN0aW9uLmVuYWJsZWQsIGNvbnZlcnRlckNvbnRleHQsIGZvckNvbnRleHRNZW51KTtcblxuXHQvLyBDb25zaWRlciByZXF1aXJlc1NlbGVjdGlvbiBwcm9wZXJ0eSB0byBpbmNsdWRlIHNlbGVjdGVkQ29udGV4dHMgaW4gdGhlIGJpbmRpbmcgZXhwcmVzc2lvblxuXHRjb25zdCBpbnRlcm5hbE1vZGVsUHJvcGVydHkgPSAhZm9yQ29udGV4dE1lbnUgPyBcIm51bWJlck9mU2VsZWN0ZWRDb250ZXh0c1wiIDogXCJjb250ZXh0bWVudS9udW1iZXJPZlNlbGVjdGVkQ29udGV4dHNcIjtcblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKFxuXHRcdGlmRWxzZShcblx0XHRcdG1hbmlmZXN0QWN0aW9uLnJlcXVpcmVzU2VsZWN0aW9uID09PSB0cnVlLFxuXHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRtYW5pZmVzdEFjdGlvbi5lbmFibGVPblNlbGVjdCA9PT0gXCJzaW5nbGVcIixcblx0XHRcdFx0YW5kKGVxdWFsKHBhdGhJbk1vZGVsKGludGVybmFsTW9kZWxQcm9wZXJ0eSwgXCJpbnRlcm5hbFwiKSwgMSksIHJlc3VsdCksXG5cdFx0XHRcdGFuZChncmVhdGVyT3JFcXVhbChwYXRoSW5Nb2RlbChpbnRlcm5hbE1vZGVsUHJvcGVydHksIFwiaW50ZXJuYWxcIiksIDEpLCByZXN1bHQpXG5cdFx0XHQpLFxuXHRcdFx0cmVzdWx0XG5cdFx0KVxuXHQpO1xufTtcblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSB2aXNpYmlsaXR5IG9mIGEgbWFuaWZlc3QgYWN0aW9uLlxuICogQHBhcmFtIG1hbmlmZXN0QWN0aW9uIFRoZSBhY3Rpb24gY29uZmlndXJlZCBpbiB0aGUgbWFuaWZlc3RcbiAqIEBwYXJhbSBpc0Fubm90YXRpb25BY3Rpb24gV2hldGhlciB0aGUgYWN0aW9uLCBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdCwgY29ycmVzcG9uZHMgdG8gYW4gZXhpc3RpbmcgYW5ub3RhdGlvbiBhY3Rpb24uXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dFxuICogQHBhcmFtIGZvckNvbnRleHRNZW51XG4gKiBAcmV0dXJucyBEZXRlcm1pbmVkIHByb3BlcnR5IHZhbHVlIGZvciB0aGUgdmlzaWJpbGl0eVxuICovXG5jb25zdCBfZ2V0TWFuaWZlc3RWaXNpYmxlID0gZnVuY3Rpb24gKFxuXHRtYW5pZmVzdEFjdGlvbjogTWFuaWZlc3RBY3Rpb24sXG5cdGlzQW5ub3RhdGlvbkFjdGlvbjogYm9vbGVhbixcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+LFxuXHRmb3JDb250ZXh0TWVudSA9IGZhbHNlXG4pOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB8IHVuZGVmaW5lZCB7XG5cdGlmIChpc0Fubm90YXRpb25BY3Rpb24gJiYgbWFuaWZlc3RBY3Rpb24udmlzaWJsZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0Ly8gSWYgYW5ub3RhdGlvbiBhY3Rpb24gaGFzIG5vIHByb3BlcnR5IGRlZmluZWQgaW4gbWFuaWZlc3QsXG5cdFx0Ly8gZG8gbm90IG92ZXJ3cml0ZSBpdCB3aXRoIG1hbmlmZXN0IGFjdGlvbidzIGRlZmF1bHQgdmFsdWUuXG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdGxldCByZXN1bHQgPSBnZXRNYW5pZmVzdEFjdGlvbkJvb2xlYW5Qcm9wZXJ0eVdpdGhGb3JtYXR0ZXIobWFuaWZlc3RBY3Rpb24udmlzaWJsZSwgY29udmVydGVyQ29udGV4dCwgZm9yQ29udGV4dE1lbnUpO1xuXHQvLyBGb3IgdGhlIGNvbnRleHQgbWVudSwgdGhlIHZpc2liaWxpdHkgc2hvdWxkIGFsc28gY29uc2lkZXIgdGhlICdpbmFjdGl2ZUNvbnRleHQnIHByb3BlcnR5OlxuXHQvLyBvbmx5IHdoZW4gYXQgbGVhc3Qgb25lIHNlbGVjdGVkIGNvbnRleHQgaXMgYWN0aXZlIChpLmUuIFwiY29udGV4dG1lbnUvaW5hY3RpdmVDb250ZXh0XCIgaXMgZmFsc2UpLCB0aGUgYWN0aW9uIHNob3VsZCBiZSB2aXNpYmxlIGluIHRoZSBjb250ZXh0IG1lbnVcblx0Ly8gVGhpcyBpcyBvbmx5IHJlbGV2YW50IHdoZW4gdGhlIHRhYmxlIG1hbmlmZXN0IHNldHRpbmcgXCJjcmVhdGlvbk1vZGVcIiBpcyBcIklubGluZUNyZWF0aW9uUm93c1wiXG5cdHJlc3VsdCA9IGZvckNvbnRleHRNZW51ID8gYW5kKHJlc3VsdCwgZXF1YWwocGF0aEluTW9kZWwoXCJjb250ZXh0bWVudS9pbmFjdGl2ZUNvbnRleHRcIiwgXCJpbnRlcm5hbFwiKSwgZmFsc2UpKSA6IHJlc3VsdDtcblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKHJlc3VsdCk7XG59O1xuXG50eXBlIFBhcnRpYWxseUNvbnZlcnRlZEN1c3RvbUFjdGlvbiA9IE9taXQ8Q3VzdG9tQWN0aW9uLCBcIm1lbnVcIj4gJiB7IG1lbnU6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIH07XG5cbi8qKlxuICogQXMgc29tZSBwcm9wZXJ0aWVzIHNob3VsZCBub3QgYmUgb3ZlcnJpZGFibGUgYnkgdGhlIG1hbmlmZXN0LCBtYWtlIHN1cmUgdGhhdCB0aGUgbWFuaWZlc3QgY29uZmlndXJhdGlvbiBnZXRzIHRoZSBhbm5vdGF0aW9uIHZhbHVlcyBmb3IgdGhlc2UuXG4gKiBAcGFyYW0gbWFuaWZlc3RBY3Rpb24gQWN0aW9uIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0XG4gKiBAcGFyYW0gYW5ub3RhdGlvbkFjdGlvbiBBY3Rpb24gZGVmaW5lZCB0aHJvdWdoIGFubm90YXRpb25zXG4gKi9cbmZ1bmN0aW9uIG92ZXJyaWRlTWFuaWZlc3RDb25maWd1cmF0aW9uV2l0aEFubm90YXRpb24obWFuaWZlc3RBY3Rpb246IFBhcnRpYWxseUNvbnZlcnRlZEN1c3RvbUFjdGlvbiwgYW5ub3RhdGlvbkFjdGlvbj86IEJhc2VBY3Rpb24pOiB2b2lkIHtcblx0aWYgKCFhbm5vdGF0aW9uQWN0aW9uKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Ly8gRG8gbm90IG92ZXJyaWRlIHRoZSAndHlwZScgZ2l2ZW4gaW4gYW4gYW5ub3RhdGlvbiBhY3Rpb25cblx0bWFuaWZlc3RBY3Rpb24udHlwZSA9IGFubm90YXRpb25BY3Rpb24udHlwZTtcblx0bWFuaWZlc3RBY3Rpb24uYW5ub3RhdGlvblBhdGggPSBhbm5vdGF0aW9uQWN0aW9uLmFubm90YXRpb25QYXRoO1xuXHRtYW5pZmVzdEFjdGlvbi5wcmVzcyA9IGFubm90YXRpb25BY3Rpb24ucHJlc3M7XG5cblx0Ly8gT25seSB1c2UgdGhlIGFubm90YXRpb24gdmFsdWVzIGZvciBlbmFibGVtZW50IGFuZCB2aXNpYmlsaXR5IGlmIG5vdCBzZXQgaW4gdGhlIG1hbmlmZXN0XG5cdG1hbmlmZXN0QWN0aW9uLmVuYWJsZWQgPSBtYW5pZmVzdEFjdGlvbi5lbmFibGVkID8/IGFubm90YXRpb25BY3Rpb24uZW5hYmxlZDtcblx0bWFuaWZlc3RBY3Rpb24udmlzaWJsZSA9IG1hbmlmZXN0QWN0aW9uLnZpc2libGUgPz8gYW5ub3RhdGlvbkFjdGlvbi52aXNpYmxlO1xuXHRtYW5pZmVzdEFjdGlvbi52aXNpYmxlRm9yQ29udGV4dE1lbnUgPSBtYW5pZmVzdEFjdGlvbi52aXNpYmxlRm9yQ29udGV4dE1lbnUgPz8gYW5ub3RhdGlvbkFjdGlvbi52aXNpYmxlRm9yQ29udGV4dE1lbnU7XG59XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgYWN0aW9uIGNvbmZpZ3VyYXRpb24gYmFzZWQgb24gdGhlIG1hbmlmZXN0IHNldHRpbmdzLlxuICogQHBhcmFtIG1hbmlmZXN0QWN0aW9ucyBUaGUgbWFuaWZlc3QgYWN0aW9uc1xuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHQgVGhlIGNvbnZlcnRlciBjb250ZXh0XG4gKiBAcGFyYW0gYW5ub3RhdGlvbkFjdGlvbnMgVGhlIGFubm90YXRpb24gYWN0aW9ucyBkZWZpbml0aW9uXG4gKiBAcGFyYW0gbmF2aWdhdGlvblNldHRpbmdzIFRoZSBuYXZpZ2F0aW9uIHNldHRpbmdzXG4gKiBAcGFyYW0gY29uc2lkZXJOYXZpZ2F0aW9uU2V0dGluZ3MgVGhlIG5hdmlnYXRpb24gc2V0dGluZ3MgdG8gYmUgY29uc2lkZXJlZFxuICogQHBhcmFtIGhpZGRlbkFjdGlvbnMgQWN0aW9ucyB0aGF0IGFyZSBjb25maWd1cmVkIGFzIGhpZGRlbiAoYWRkaXRpb25hbCB0byB0aGUgdmlzaWJsZSBwcm9wZXJ0eSlcbiAqIEBwYXJhbSBmYWNldE5hbWUgVGhlIGZhY2V0IHdoZXJlIGFuIGFjdGlvbiBpcyBkaXNwbGF5ZWQgaWYgaXQgaXMgaW5saW5lXG4gKiBAcmV0dXJucyBUaGUgYWN0aW9ucyBmcm9tIHRoZSBtYW5pZmVzdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWN0aW9uc0Zyb21NYW5pZmVzdChcblx0bWFuaWZlc3RBY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBNYW5pZmVzdEFjdGlvbj4gfCB1bmRlZmluZWQsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0Pixcblx0YW5ub3RhdGlvbkFjdGlvbnM/OiBCYXNlQWN0aW9uW10sXG5cdG5hdmlnYXRpb25TZXR0aW5ncz86IE5hdmlnYXRpb25TZXR0aW5nc0NvbmZpZ3VyYXRpb24sXG5cdGNvbnNpZGVyTmF2aWdhdGlvblNldHRpbmdzPzogYm9vbGVhbixcblx0aGlkZGVuQWN0aW9ucz86IEJhc2VBY3Rpb25bXSxcblx0ZmFjZXROYW1lPzogc3RyaW5nXG4pOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBDdXN0b21BY3Rpb24+PiB7XG5cdGNvbnN0IGFjdGlvbnM6IFJlY29yZDxzdHJpbmcsIFBhcnRpYWxseUNvbnZlcnRlZEN1c3RvbUFjdGlvbj4gPSB7fTtcblx0Zm9yIChjb25zdCBhY3Rpb25LZXkgaW4gbWFuaWZlc3RBY3Rpb25zKSB7XG5cdFx0Y29uc3QgbWFuaWZlc3RBY3Rpb246IE1hbmlmZXN0QWN0aW9uID0gbWFuaWZlc3RBY3Rpb25zW2FjdGlvbktleV07XG5cdFx0Y29uc3QgbGFzdERvdEluZGV4ID0gbWFuaWZlc3RBY3Rpb24ucHJlc3M/Lmxhc3RJbmRleE9mKFwiLlwiKSB8fCAtMTtcblx0XHRsZXQgYW5ub3RhdGlvbkFjdGlvbjogQmFzZUFjdGlvbiB8IHVuZGVmaW5lZDtcblxuXHRcdGlmIChhbm5vdGF0aW9uQWN0aW9ucykge1xuXHRcdFx0Zm9yIChjb25zdCBhY3Rpb24gb2YgYW5ub3RhdGlvbkFjdGlvbnMpIHtcblx0XHRcdFx0Ly8gU3ViU2VjdGlvbi50cyNjcmVhdGVGb3JtQWN0aW9uUmVkdWNlciB1c2VzIGluc2VydEN1c3RvbUVsZW1lbnRzIHdoaWNoIHJlc3VsdHMgaW4gYW5ub3RhdGlvbiBhY3Rpb25zIG1peGluZyB1cCB3aXRoIG1hbmlmZXN0IGFjdGlvblxuXHRcdFx0XHQvLyB0aGlzIGlzIHdoeSB3ZSBtYXkgZmluZCBhbiBhY3Rpb24gdGhhdCBoYXMgYSBDdXN0b21BY3Rpb24gcHJlZml4XG5cdFx0XHRcdGlmIChhY3Rpb24uaWQ/LnN0YXJ0c1dpdGgoXCJDdXN0b21BY3Rpb246OlwiKSkge1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChhY3Rpb24ua2V5ID09PSBhY3Rpb25LZXkpIHtcblx0XHRcdFx0XHRhbm5vdGF0aW9uQWN0aW9uID0gYWN0aW9uO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGFjdGlvbi50eXBlID09PSBcIk1lbnVcIikge1xuXHRcdFx0XHRcdC8vIElmIG5vdCBmb3VuZCwgY2hlY2sgaW5zaWRlIG1lbnVzXG5cdFx0XHRcdFx0YW5ub3RhdGlvbkFjdGlvbiA9IGFjdGlvbi5tZW51Py5maW5kKChtZW51SXRlbTogQmFzZUFjdGlvbikgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIG1lbnVJdGVtLmtleSA9PT0gYWN0aW9uS2V5O1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGlmIChhbm5vdGF0aW9uQWN0aW9uKSB7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBUbyBpZGVudGlmeSB0aGUgYW5ub3RhdGlvbiBhY3Rpb24gcHJvcGVydHkgb3ZlcndyaXRlIHZpYSBtYW5pZmVzdCB1c2UtY2FzZS5cblx0XHRjb25zdCBpc0Fubm90YXRpb25BY3Rpb24gPSAhIWFubm90YXRpb25BY3Rpb247XG5cdFx0aWYgKG1hbmlmZXN0QWN0aW9uLmZhY2V0TmFtZSkge1xuXHRcdFx0ZmFjZXROYW1lID0gbWFuaWZlc3RBY3Rpb24uZmFjZXROYW1lO1xuXHRcdH1cblxuXHRcdGFjdGlvbnNbYWN0aW9uS2V5XSA9IHtcblx0XHRcdGlkOiBhbm5vdGF0aW9uQWN0aW9uID8gYWN0aW9uS2V5IDogZ2V0Q3VzdG9tQWN0aW9uSUQoYWN0aW9uS2V5KSxcblx0XHRcdHR5cGU6IG1hbmlmZXN0QWN0aW9uLm1lbnUgPyBBY3Rpb25UeXBlLk1lbnUgOiBBY3Rpb25UeXBlLkRlZmF1bHQsXG5cdFx0XHR2aXNpYmxlOiBfZ2V0TWFuaWZlc3RWaXNpYmxlKG1hbmlmZXN0QWN0aW9uLCBpc0Fubm90YXRpb25BY3Rpb24sIGNvbnZlcnRlckNvbnRleHQpLFxuXHRcdFx0dmlzaWJsZUZvckNvbnRleHRNZW51OiBfZ2V0TWFuaWZlc3RWaXNpYmxlKG1hbmlmZXN0QWN0aW9uLCBpc0Fubm90YXRpb25BY3Rpb24sIGNvbnZlcnRlckNvbnRleHQsIHRydWUpLFxuXHRcdFx0ZW5hYmxlZDogX2dldE1hbmlmZXN0RW5hYmxlZChtYW5pZmVzdEFjdGlvbiwgaXNBbm5vdGF0aW9uQWN0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHRcdGVuYWJsZWRGb3JDb250ZXh0TWVudTogX2dldE1hbmlmZXN0RW5hYmxlZChtYW5pZmVzdEFjdGlvbiwgaXNBbm5vdGF0aW9uQWN0aW9uLCBjb252ZXJ0ZXJDb250ZXh0LCB0cnVlKSxcblx0XHRcdGhhbmRsZXJNb2R1bGU6IG1hbmlmZXN0QWN0aW9uLnByZXNzICYmIG1hbmlmZXN0QWN0aW9uLnByZXNzLnN1YnN0cmluZygwLCBsYXN0RG90SW5kZXgpLnJlcGxhY2UoL1xcLi9naSwgXCIvXCIpLFxuXHRcdFx0aGFuZGxlck1ldGhvZDogbWFuaWZlc3RBY3Rpb24ucHJlc3MgJiYgbWFuaWZlc3RBY3Rpb24ucHJlc3Muc3Vic3RyaW5nKGxhc3REb3RJbmRleCArIDEpLFxuXHRcdFx0cHJlc3M6IG1hbmlmZXN0QWN0aW9uLnByZXNzLFxuXHRcdFx0dGV4dDogbWFuaWZlc3RBY3Rpb24udGV4dCxcblx0XHRcdG5vV3JhcDogbWFuaWZlc3RBY3Rpb24uX19ub1dyYXAsXG5cdFx0XHRrZXk6IHJlcGxhY2VTcGVjaWFsQ2hhcnMoYWN0aW9uS2V5KSxcblx0XHRcdGVuYWJsZU9uU2VsZWN0OiBtYW5pZmVzdEFjdGlvbi5lbmFibGVPblNlbGVjdCxcblx0XHRcdGRlZmF1bHRWYWx1ZXNFeHRlbnNpb25GdW5jdGlvbjogbWFuaWZlc3RBY3Rpb24uZGVmYXVsdFZhbHVlc0Z1bmN0aW9uLFxuXHRcdFx0cG9zaXRpb246IHtcblx0XHRcdFx0YW5jaG9yOiBtYW5pZmVzdEFjdGlvbi5wb3NpdGlvbj8uYW5jaG9yLFxuXHRcdFx0XHRwbGFjZW1lbnQ6IG1hbmlmZXN0QWN0aW9uLnBvc2l0aW9uID09PSB1bmRlZmluZWQgPyBQbGFjZW1lbnQuQWZ0ZXIgOiBtYW5pZmVzdEFjdGlvbi5wb3NpdGlvbi5wbGFjZW1lbnRcblx0XHRcdH0sXG5cdFx0XHRpc05hdmlnYWJsZTogaXNBY3Rpb25OYXZpZ2FibGUobWFuaWZlc3RBY3Rpb24sIG5hdmlnYXRpb25TZXR0aW5ncywgY29uc2lkZXJOYXZpZ2F0aW9uU2V0dGluZ3MpLFxuXHRcdFx0Y29tbWFuZDogbWFuaWZlc3RBY3Rpb24uY29tbWFuZCxcblx0XHRcdHJlcXVpcmVzU2VsZWN0aW9uOiBtYW5pZmVzdEFjdGlvbi5yZXF1aXJlc1NlbGVjdGlvbiA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiBtYW5pZmVzdEFjdGlvbi5yZXF1aXJlc1NlbGVjdGlvbixcblx0XHRcdGVuYWJsZUF1dG9TY3JvbGw6IGVuYWJsZUF1dG9TY3JvbGwobWFuaWZlc3RBY3Rpb24pLFxuXHRcdFx0bWVudTogbWFuaWZlc3RBY3Rpb24ubWVudSA/PyAoYW5ub3RhdGlvbkFjdGlvbj8udHlwZSA9PT0gQWN0aW9uVHlwZS5NZW51ID8gW10gOiB1bmRlZmluZWQpLFxuXHRcdFx0ZmFjZXROYW1lOiBtYW5pZmVzdEFjdGlvbi5pbmxpbmUgPyBmYWNldE5hbWUgOiB1bmRlZmluZWQsXG5cdFx0XHRkZWZhdWx0QWN0aW9uOiBtYW5pZmVzdEFjdGlvbi5kZWZhdWx0QWN0aW9uLFxuXHRcdFx0aXNBSU9wZXJhdGlvbjogbWFuaWZlc3RBY3Rpb24/LmlzQUlPcGVyYXRpb24gPz8gdW5kZWZpbmVkXG5cdFx0fTtcblxuXHRcdG92ZXJyaWRlTWFuaWZlc3RDb25maWd1cmF0aW9uV2l0aEFubm90YXRpb24oYWN0aW9uc1thY3Rpb25LZXldLCBhbm5vdGF0aW9uQWN0aW9uKTtcblx0fVxuXG5cdHJldHVybiB0cmFuc2Zvcm1NZW51QWN0aW9uc0FuZElkZW50aWZ5Q29tbWFuZHMoYWN0aW9ucywgYW5ub3RhdGlvbkFjdGlvbnMgPz8gW10pO1xufVxuXG4vKipcbiAqIEdldHMgYSBiaW5kaW5nIGV4cHJlc3Npb24gcmVwcmVzZW50aW5nIGEgQm9vbGVhbiBtYW5pZmVzdCBwcm9wZXJ0eSB0aGF0IGNhbiBlaXRoZXIgYmUgcmVwcmVzZW50ZWQgYnkgYSBzdGF0aWMgdmFsdWUsIGEgYmluZGluZyBzdHJpbmcsXG4gKiBvciBhIHJ1bnRpbWUgZm9ybWF0dGVyIGZ1bmN0aW9uLlxuICogQHBhcmFtIHByb3BlcnR5VmFsdWUgU3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY29uZmlndXJlZCBwcm9wZXJ0eSB2YWx1ZVxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHRcbiAqIEByZXR1cm5zIEEgYmluZGluZyBleHByZXNzaW9uIHJlcHJlc2VudGluZyB0aGUgcHJvcGVydHlcbiAqL1xuZnVuY3Rpb24gZ2V0TWFuaWZlc3RBY3Rpb25Cb29sZWFuUHJvcGVydHlXaXRoRm9ybWF0dGVyKFxuXHRwcm9wZXJ0eVZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBib29sZWFuLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD4sXG5cdGZvckNvbnRleHRNZW51OiBib29sZWFuXG4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRjb25zdCByZXNvbHZlZEJpbmRpbmcgPSByZXNvbHZlQmluZGluZ1N0cmluZzxib29sZWFuIHwgc3RyaW5nPihwcm9wZXJ0eVZhbHVlIGFzIHN0cmluZywgXCJib29sZWFuXCIpO1xuXHRsZXQgcmVzdWx0OiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj47XG5cdGlmIChpc0NvbnN0YW50KHJlc29sdmVkQmluZGluZykgJiYgcmVzb2x2ZWRCaW5kaW5nLnZhbHVlID09PSB1bmRlZmluZWQpIHtcblx0XHQvLyBObyBwcm9wZXJ0eSB2YWx1ZSBjb25maWd1cmVkIGluIG1hbmlmZXN0IGZvciB0aGUgY3VzdG9tIGFjdGlvbiAtLT4gZGVmYXVsdCB2YWx1ZSBpcyB0cnVlXG5cdFx0cmVzdWx0ID0gY29uc3RhbnQodHJ1ZSk7XG5cdH0gZWxzZSBpZiAoaXNDb25zdGFudChyZXNvbHZlZEJpbmRpbmcpICYmIHR5cGVvZiByZXNvbHZlZEJpbmRpbmcudmFsdWUgPT09IFwic3RyaW5nXCIpIHtcblx0XHQvLyBUaGVuIGl0J3MgYSBtb2R1bGUtbWV0aG9kIHJlZmVyZW5jZSBcInNhcC54eHgueXl5LmRvU29tZXRoaW5nXCJcblx0XHRjb25zdCBtZXRob2RQYXRoID0gcmVzb2x2ZWRCaW5kaW5nLnZhbHVlO1xuXHRcdC8vIEZJWE1FOiBUaGUgY3VzdG9tIFwiaXNFbmFibGVkXCIgY2hlY2sgZG9lcyBub3QgdHJpZ2dlciAoYmVjYXVzZSBub25lIG9mIHRoZSBib3VuZCB2YWx1ZXMgY2hhbmdlcylcblx0XHRyZXN1bHQgPSBmb3JtYXRSZXN1bHQoXG5cdFx0XHRbcGF0aEluTW9kZWw8Vmlldz4oXCIvXCIsIFwiJHZpZXdcIiksIG1ldGhvZFBhdGgsIHBhdGhJbk1vZGVsPENvbnRleHRbXT4oXCJzZWxlY3RlZENvbnRleHRzXCIsIFwiaW50ZXJuYWxcIildLFxuXHRcdFx0ZnBtRm9ybWF0dGVyLmN1c3RvbUJvb2xlYW5Qcm9wZXJ0eUNoZWNrLFxuXHRcdFx0IWZvckNvbnRleHRNZW51XG5cdFx0XHRcdD8gY29udmVydGVyQ29udGV4dC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCkuY29udGV4dExvY2F0aW9uPy50YXJnZXRFbnRpdHlUeXBlIHx8IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpXG5cdFx0XHRcdDogdW5kZWZpbmVkXG5cdFx0KTtcblx0fSBlbHNlIHtcblx0XHQvLyB0aGVuIGl0J3MgYSBiaW5kaW5nXG5cdFx0cmVzdWx0ID0gcmVzb2x2ZWRCaW5kaW5nIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPjtcblx0fVxuXG5cdHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBjb25zdCByZW1vdmVEdXBsaWNhdGVBY3Rpb25zID0gKGFjdGlvbnM6IEN1c3RvbUFjdGlvbltdKTogQ3VzdG9tQWN0aW9uW10gPT4ge1xuXHRsZXQgb01lbnVJdGVtS2V5czogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcblx0YWN0aW9ucy5mb3JFYWNoKChhY3Rpb24pID0+IHtcblx0XHRpZiAoYWN0aW9uPy5tZW51Py5sZW5ndGgpIHtcblx0XHRcdGNvbnN0IGFjdGlvbk1lbnUgPSBhY3Rpb24ubWVudTtcblx0XHRcdG9NZW51SXRlbUtleXMgPSBhY3Rpb25NZW51LnJlZHVjZSgoaXRlbTogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4sIHsga2V5IH0pID0+IHtcblx0XHRcdFx0aWYgKGtleSAmJiAhaXRlbVtrZXldKSB7XG5cdFx0XHRcdFx0aXRlbVtrZXldID0gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gaXRlbTtcblx0XHRcdH0sIG9NZW51SXRlbUtleXMpO1xuXHRcdH1cblx0fSk7XG5cdHJldHVybiBhY3Rpb25zLmZpbHRlcigoYWN0aW9uKSA9PiAhb01lbnVJdGVtS2V5c1thY3Rpb24ua2V5XSk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW5hYmxlZEZvckFubm90YXRpb25BY3Rpb25FeHByZXNzaW9uKFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD4sXG5cdGFjdGlvblRhcmdldDogQWN0aW9uIHwgdW5kZWZpbmVkLFxuXHRwYXRoRnJvbUNvbnRleHRMb2NhdGlvbiA9IGZhbHNlXG4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRpZiAoYWN0aW9uVGFyZ2V0Py5hbm5vdGF0aW9ucy5Db3JlPy5PcGVyYXRpb25BdmFpbGFibGUpIHtcblx0XHRjb25zdCBkYXRhTW9kZWxPYmplY3RQYXRoID0gY29udmVydGVyQ29udGV4dC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCk7XG5cdFx0bGV0IGlzRW5hYmxlZEV4cCA9IGdldEFjdGlvbkVuYWJsZWRFeHByZXNzaW9uKFxuXHRcdFx0YWN0aW9uVGFyZ2V0LFxuXHRcdFx0Y29udmVydGVyQ29udGV4dC5nZXRDb252ZXJ0ZWRUeXBlcygpLFxuXHRcdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0XHRcdHBhdGhGcm9tQ29udGV4dExvY2F0aW9uXG5cdFx0KTtcblx0XHRjb25zdCBjb2xsYWJvcmF0aW9uT25Sb290ID1cblx0XHRcdE1vZGVsSGVscGVyLmlzQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkRnJvbUNvbnZlcnRlckNvbnRleHQoY29udmVydGVyQ29udGV4dCkgJiZcblx0XHRcdE1vZGVsSGVscGVyLmdldERyYWZ0Um9vdChjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldCgpKTtcblx0XHRpZiAoY29sbGFib3JhdGlvbk9uUm9vdCkge1xuXHRcdFx0aXNFbmFibGVkRXhwID0gYW5kKGlzRW5hYmxlZEV4cCwgbm90KGVxdWFsKFVJLmhhc0NvbGxhYm9yYXRpb25BdXRob3JpemF0aW9uLCBmYWxzZSkpKTtcblx0XHR9XG5cdFx0cmV0dXJuIGlzRW5hYmxlZEV4cDtcblx0fVxuXHRyZXR1cm4gY29uc3RhbnQodHJ1ZSk7XG59XG5cbi8qKlxuICogTWV0aG9kIHRvIGRldGVybWluZSB0aGUgdmFsdWUgb2YgdGhlICdlbmFibGVkJyBwcm9wZXJ0eSBvZiBhbiBhbm5vdGF0aW9uLWJhc2VkIGFjdGlvbi5cbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0IFRoZSBpbnN0YW5jZSBvZiB0aGUgY29udmVydGVyIGNvbnRleHRcbiAqIEBwYXJhbSBhY3Rpb25UYXJnZXQgVGhlIGluc3RhbmNlIG9mIHRoZSBhY3Rpb25cbiAqIEBwYXJhbSBwYXRoRnJvbUNvbnRleHRMb2NhdGlvbiBJcyB0aGUgYmluZGluZyBwYXRoIGNhbGN1bGF0ZWQgIGZyb20gdGhlIGNvbnZlcnRlciBjb250ZXh0IGxvY2F0aW9uXG4gKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgJ2VuYWJsZWQnIHByb3BlcnR5IG9mIHRoZSBhY3Rpb24gYnV0dG9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW5hYmxlZEZvckFubm90YXRpb25BY3Rpb24oXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0Pixcblx0YWN0aW9uVGFyZ2V0OiBBY3Rpb24gfCB1bmRlZmluZWQsXG5cdHBhdGhGcm9tQ29udGV4dExvY2F0aW9uID0gZmFsc2Vcbik6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHtcblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKGdldEVuYWJsZWRGb3JBbm5vdGF0aW9uQWN0aW9uRXhwcmVzc2lvbihjb252ZXJ0ZXJDb250ZXh0LCBhY3Rpb25UYXJnZXQsIHBhdGhGcm9tQ29udGV4dExvY2F0aW9uKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZW1hbnRpY09iamVjdE1hcHBpbmcobWFwcGluZ3M/OiBTZW1hbnRpY09iamVjdE1hcHBpbmdUeXBlW10pOiBNZXRhTW9kZWxUeXBlPFNlbWFudGljT2JqZWN0TWFwcGluZ1R5cGU+W10ge1xuXHRyZXR1cm4gbWFwcGluZ3Ncblx0XHQ/IG1hcHBpbmdzLm1hcCgobWFwcGluZykgPT4ge1xuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdExvY2FsUHJvcGVydHk6IHtcblx0XHRcdFx0XHRcdCRQcm9wZXJ0eVBhdGg6IG1hcHBpbmcuTG9jYWxQcm9wZXJ0eS52YWx1ZVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0U2VtYW50aWNPYmplY3RQcm9wZXJ0eTogbWFwcGluZy5TZW1hbnRpY09iamVjdFByb3BlcnR5LnRvU3RyaW5nKClcblx0XHRcdFx0fTtcblx0XHQgIH0pXG5cdFx0OiBbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQWN0aW9uTmF2aWdhYmxlKFxuXHRhY3Rpb246IE1hbmlmZXN0QWN0aW9uIHwgQ3VzdG9tRGVmaW5lZFRhYmxlQ29sdW1uRm9yT3ZlcnJpZGUgfCB1bmRlZmluZWQsXG5cdG5hdmlnYXRpb25TZXR0aW5ncz86IE5hdmlnYXRpb25TZXR0aW5nc0NvbmZpZ3VyYXRpb24sXG5cdGNvbnNpZGVyTmF2aWdhdGlvblNldHRpbmdzPzogYm9vbGVhblxuKTogYm9vbGVhbiB7XG5cdGxldCBiSXNOYXZpZ2F0aW9uQ29uZmlndXJlZCA9IHRydWU7XG5cdGlmIChjb25zaWRlck5hdmlnYXRpb25TZXR0aW5ncykge1xuXHRcdGNvbnN0IGRldGFpbE9yRGlzcGxheSA9IG5hdmlnYXRpb25TZXR0aW5ncyAmJiAobmF2aWdhdGlvblNldHRpbmdzLmRldGFpbCB8fCBuYXZpZ2F0aW9uU2V0dGluZ3MuZGlzcGxheSk7XG5cdFx0YklzTmF2aWdhdGlvbkNvbmZpZ3VyZWQgPSBkZXRhaWxPckRpc3BsYXk/LnJvdXRlID8gdHJ1ZSA6IGZhbHNlO1xuXHR9XG5cdC8vIHdoZW4gZW5hYmxlQXV0b1Njcm9sbCBpcyB0cnVlIHRoZSBuYXZpZ2F0ZVRvSW5zdGFuY2UgZmVhdHVyZSBpcyBkaXNhYmxlZFxuXHRpZiAoXG5cdFx0KGFjdGlvbiAmJlxuXHRcdFx0YWN0aW9uLmFmdGVyRXhlY3V0aW9uICYmXG5cdFx0XHQoYWN0aW9uLmFmdGVyRXhlY3V0aW9uPy5uYXZpZ2F0ZVRvSW5zdGFuY2UgPT09IGZhbHNlIHx8IGFjdGlvbi5hZnRlckV4ZWN1dGlvbj8uZW5hYmxlQXV0b1Njcm9sbCA9PT0gdHJ1ZSkpIHx8XG5cdFx0IWJJc05hdmlnYXRpb25Db25maWd1cmVkXG5cdCkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHRyZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuYWJsZUF1dG9TY3JvbGwoYWN0aW9uOiBNYW5pZmVzdEFjdGlvbik6IGJvb2xlYW4ge1xuXHRyZXR1cm4gYWN0aW9uPy5hZnRlckV4ZWN1dGlvbj8uZW5hYmxlQXV0b1Njcm9sbCA9PT0gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGFGaWVsZElzQ29weUFjdGlvbihkYXRhRmllbGQ6IERhdGFGaWVsZEZvckFjdGlvblR5cGVzKTogYm9vbGVhbiB7XG5cdHJldHVybiBkYXRhRmllbGQuYW5ub3RhdGlvbnM/LlVJPy5Jc0NvcHlBY3Rpb24/LnZhbHVlT2YoKSA9PT0gdHJ1ZSAmJiBkYXRhRmllbGQuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckFjdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvcHlBY3Rpb24oY29weURhdGFGaWVsZHM6IERhdGFGaWVsZEZvckFjdGlvblR5cGVzW10pOiBEYXRhRmllbGRGb3JBY3Rpb25UeXBlcyB8IHVuZGVmaW5lZCB7XG5cdGlmIChjb3B5RGF0YUZpZWxkcy5sZW5ndGggPT09IDEpIHtcblx0XHRyZXR1cm4gY29weURhdGFGaWVsZHNbMF07XG5cdH1cblx0aWYgKGNvcHlEYXRhRmllbGRzLmxlbmd0aCA+IDEpIHtcblx0XHRMb2cuZXJyb3IoXCJNdWx0aXBsZSBhY3Rpb25zIGFyZSBhbm5vdGF0ZWQgd2l0aCBpc0NvcHlBY3Rpb24uIFRoZXJlIGNhbiBiZSBvbmx5IG9uZSBzdGFuZGFyZCBjb3B5IGFjdGlvbi5cIik7XG5cdH1cblx0cmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBNZXRob2QgdG8gZXh0cmFjdCBtZW51IGl0ZW1zIGZyb20gYWN0aW9ucyBvZiB0eXBlIG1lbnVzLlxuICogQHBhcmFtIGFubm90YXRpb25BY3Rpb25zIENvbGxlY3Rpb24gb2YgYW5ub3RhdGlvbiBiYXNlZCBhY3Rpb25zXG4gKiBAcmV0dXJucyBDb2xsZWN0aW9uIG9mIGFjdGlvbnMgd2hpY2ggYXJlIG1lbnUgaXRlbXMgaW4gb25lIG9mIHRoZSBhbm5vdGF0aW9uIGJhc2VkIG1lbnVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbm5vdGF0aW9uTWVudUFjdGlvbkl0ZW1zKGFubm90YXRpb25BY3Rpb25zOiBCYXNlQWN0aW9uW10pOiBCYXNlQWN0aW9uW10ge1xuXHRjb25zdCBtZW51QWN0aW9uSXRlbXM6IEJhc2VBY3Rpb25bXSA9IFtdO1xuXG5cdGFubm90YXRpb25BY3Rpb25zLmZvckVhY2goKGFjdGlvbjogQmFzZUFjdGlvbikgPT4ge1xuXHRcdGlmIChhY3Rpb24udHlwZSA9PT0gXCJNZW51XCIgJiYgIWFjdGlvbi5pZD8uc3RhcnRzV2l0aChcIkN1c3RvbUFjdGlvbjo6XCIpICYmIGFjdGlvbi5tZW51KSB7XG5cdFx0XHRtZW51QWN0aW9uSXRlbXMucHVzaCguLi5hY3Rpb24ubWVudSk7XG5cdFx0fVxuXHR9KTtcblxuXHRyZXR1cm4gbWVudUFjdGlvbkl0ZW1zO1xufVxuXG4vKipcbiAqIE1ldGhvZCB0byBmaW5kIHRoZSBtYXRjaGluZyBtYW5pZmVzdCBhY3Rpb25zIHdoaWNoIG92ZXJyaWRlIHRoZSBhbm5vdGF0aW9uIG1lbnUgaXRlbXMuXG4gKiBAcGFyYW0gYW5ub3RhdGlvbk1lbnVJdGVtcyBDb2xsZWN0aW9uIG9mIGFubm90YXRpb24gYmFzZWQgbWVudSBpdGVtc1xuICogQHBhcmFtIG1hbmlmZXN0QWN0aW9ucyBDb2xsZWN0aW9uIG9mIG1hbmlmZXN0IGJhc2VkIGFjdGlvbnNcbiAqIEByZXR1cm5zIENvbGxlY3Rpb24gb2YgYWN0aW9ucyB3aGljaCBhcmUgbWVudSBpdGVtcyBpbiBvbmUgb2YgdGhlIGFubm90YXRpb24gYmFzZWQgbWVudXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1hdGNoaW5nTWFuaWZlc3RBY3Rpb24oXG5cdGFubm90YXRpb25NZW51SXRlbXM6IEJhc2VBY3Rpb25bXSxcblx0bWFuaWZlc3RBY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21BY3Rpb24+XG4pOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21BY3Rpb24+IHtcblx0Y29uc3QgbWF0Y2hpbmdNYW5pZmVzdEFjdGlvbnM6IFJlY29yZDxzdHJpbmcsIEN1c3RvbUFjdGlvbj4gPSB7fTtcblxuXHRmb3IgKGNvbnN0IG1hbmlmZXN0QWN0aW9uIGluIG1hbmlmZXN0QWN0aW9ucykge1xuXHRcdGlmIChcblx0XHRcdG1hbmlmZXN0QWN0aW9uLnN0YXJ0c1dpdGgoXCJEYXRhRmllbGRGb3JBY3Rpb246OlwiKSAmJlxuXHRcdFx0YW5ub3RhdGlvbk1lbnVJdGVtcy5maW5kKChtZW51QWN0aW9uSXRlbXMpID0+IHtcblx0XHRcdFx0cmV0dXJuIG1lbnVBY3Rpb25JdGVtcy5rZXkgPT09IG1hbmlmZXN0QWN0aW9uO1xuXHRcdFx0fSlcblx0XHQpIHtcblx0XHRcdG1hdGNoaW5nTWFuaWZlc3RBY3Rpb25zW21hbmlmZXN0QWN0aW9uXSA9IG1hbmlmZXN0QWN0aW9uc1ttYW5pZmVzdEFjdGlvbl07XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIG1hdGNoaW5nTWFuaWZlc3RBY3Rpb25zO1xufVxuXG4vKipcbiAqIE1ldGhvZCB0byB0cmFuc2Zvcm0gdGhlIG1lbnVzIGJ5IHJlcGxhY2luZyB0aGUgbWVudSBpdGVtcyB3aXRoIHRoZWlyIG92ZXJyaWRpbmcgYWN0aW9ucy5cbiAqIEBwYXJhbSB1bnByZXBhcmVkQWN0aW9ucyBDb2xsZWN0aW9uIG9mIGFsbCBhY3Rpb25zIGFmdGVyIG1lcmdpbmcgbWFuaWZlc3QgYW5kIGFubm90YXRpb24gYWN0aW9uc1xuICogQHBhcmFtIG92ZXJyaWRlTWVudUFjdGlvbnMgQ29sbGVjdGlvbiBvZiBhbGwgb3ZlcnJpZGVuIG1lbnUgaXRlbXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVNZW51QWN0aW9ucyh1bnByZXBhcmVkQWN0aW9uczogQ3VzdG9tQWN0aW9uW10sIG92ZXJyaWRlTWVudUFjdGlvbnM6IEJhc2VBY3Rpb25bXSk6IHZvaWQge1xuXHRsZXQgZm91bmRBY3Rpb247XG5cblx0dW5wcmVwYXJlZEFjdGlvbnMuZm9yRWFjaCgoYWN0aW9uOiBDdXN0b21BY3Rpb24pID0+IHtcblx0XHRpZiAoYWN0aW9uLnR5cGUgPT09IEFjdGlvblR5cGUuTWVudSkge1xuXHRcdFx0YWN0aW9uLm1lbnU/LmZvckVhY2goKG1lbnVJdGVtOiBCYXNlQWN0aW9uLCBtZW51SXRlbUluZGV4OiBudW1iZXIpID0+IHtcblx0XHRcdFx0Zm91bmRBY3Rpb24gPSBvdmVycmlkZU1lbnVBY3Rpb25zLmZpbmQoKG92ZXJyaWRlTWVudUFjdGlvbjogQmFzZUFjdGlvbikgPT4ge1xuXHRcdFx0XHRcdHJldHVybiBvdmVycmlkZU1lbnVBY3Rpb24ua2V5ID09PSBtZW51SXRlbS5rZXk7XG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdGlmIChmb3VuZEFjdGlvbikge1xuXHRcdFx0XHRcdGFjdGlvbi5tZW51Py5zcGxpY2UobWVudUl0ZW1JbmRleCwgMSwgZm91bmRBY3Rpb24pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9XG5cdH0pO1xufVxuXG4vKipcbiAqIE1ldGhvZCB0byBkZXRlcm1pbmUgaWYgdGhlIG1lbnUgY29uc2lzdHMgb2YgYWxsIEFJIG9wZXJhdGlvbiBhY3Rpb25zLlxuICogQHBhcmFtIGFubm90YXRpb25BY3Rpb25zIENvbGxlY3Rpb24gb2YgRGF0YUZpZWxkRm9yQWN0aW9ucyBvciBEYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb25zIGluIHRoZSBtZW51XG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gdHJ1ZSBpZiBhbGwgcmVjb3JkcyBpbiB0aGUgbWVudSBhcmUgQUkgb3BlcmF0aW9ucywgZmFsc2Ugb3RoZXJ3aXNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc01lbnVBSU9wZXJhdGlvbihhbm5vdGF0aW9uQWN0aW9uczogRGF0YUZpZWxkRm9yQWN0aW9uQWJzdHJhY3RUeXBlc1tdKTogYm9vbGVhbiB7XG5cdHJldHVybiBhbm5vdGF0aW9uQWN0aW9ucy5ldmVyeShpc0FjdGlvbkFJT3BlcmF0aW9uKTtcbn1cblxuLyoqXG4gKiBNZXRob2QgdG8gZGV0ZXJtaW5lIGlmIHRoZSBnaXZlbiByZWNvcmQgaXMgYW4gQUkgb3BlcmF0aW9uLlxuICogQHBhcmFtIGRhdGFGaWVsZCBUaGUgcmVjb3JkIG9mIHR5cGUgRGF0YUZpZWxkRm9yQWN0aW9uIG9yIERhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvblxuICogQHJldHVybnMgQSBib29sZWFuIHRydWUgaWYgdGhlIGdpdmVuIHJlY29yZCBpcyBhbiBBSSBvcGVyYXRpb24sIGZhbHNlIG90aGVyd2lzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBY3Rpb25BSU9wZXJhdGlvbihkYXRhRmllbGQ6IERhdGFGaWVsZEZvckFjdGlvbkFic3RyYWN0VHlwZXMpOiBib29sZWFuIHtcblx0aWYgKGRhdGFGaWVsZC4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9yQWN0aW9uKSB7XG5cdFx0cmV0dXJuIGRhdGFGaWVsZC5BY3Rpb25UYXJnZXQ/LmFubm90YXRpb25zLlVJPy5Jc0FJT3BlcmF0aW9uPy52YWx1ZU9mKCkgPT09IHRydWU7XG5cdH1cblx0cmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbiBmb3IgdGhlIHZpc2liaWxpdHkgb2YgdGhlIENyZWF0ZU5leHQgYnV0dG9uLlxuICogVGhpcyBmdW5jdGlvbiBjZW50cmFsaXplcyB0aGUgdmlzaWJpbGl0eSBsb2dpYyB0byBiZSByZXVzZWQgYnkgYm90aCBnZXRGb290ZXJEZWZhdWx0QWN0aW9uc1xuICogYW5kIEZvb3RlckNvbnRlbnQudHN4LlxuICogQHBhcmFtIGhpZGRlbkRyYWZ0RW5hYmxlZCBXaGV0aGVyIGhpZGRlbiBkcmFmdCBtb2RlIGlzIGVuYWJsZWRcbiAqIEBwYXJhbSBmY2xFbmFibGVkIFdoZXRoZXIgRkNMIChGbGV4aWJsZSBDb2x1bW4gTGF5b3V0KSBpcyBlbmFibGVkXG4gKiBAcmV0dXJucyBBIGNvbXBpbGVkIGJpbmRpbmcgZXhwcmVzc2lvbiBmb3IgdGhlIENyZWF0ZU5leHQgYnV0dG9uIHZpc2liaWxpdHlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENyZWF0ZU5leHRCdXR0b25WaXNpYmlsaXR5KGhpZGRlbkRyYWZ0RW5hYmxlZDogYm9vbGVhbiwgZmNsRW5hYmxlZDogYm9vbGVhbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdHJldHVybiBpZkVsc2UoXG5cdFx0aGlkZGVuRHJhZnRFbmFibGVkID09PSB0cnVlLFxuXHRcdGlmRWxzZShcblx0XHRcdGZjbEVuYWJsZWQgPT09IHRydWUsXG5cdFx0XHRhbmQoRHJhZnQuSXNOZXdPYmplY3QsIGVxdWFsKHBhdGhJbk1vZGVsKFwiL3Nob3dTYXZlQW5kQ2FuY2VsQnV0dG9uXCIsIFwiZmNsaGVscGVyXCIpLCB0cnVlKSksXG5cdFx0XHREcmFmdC5Jc05ld09iamVjdFxuXHRcdCksXG5cdFx0RHJhZnQuSXNOZXdPYmplY3Rcblx0KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BNENZQSxVQUFVLDBCQUFWQSxVQUFVO0lBQVZBLFVBQVU7SUFBVkEsVUFBVTtJQUFWQSxVQUFVO0lBQVZBLFVBQVU7SUFBVkEsVUFBVTtJQUFWQSxVQUFVO0lBQVZBLFVBQVU7SUFBVkEsVUFBVTtJQUFWQSxV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
|
|
@@ -33,7 +33,7 @@ import type { ConfigurableObject, CustomElement, OverrideType } from "sap/fe/cor
|
|
|
33
33
|
import { Placement } from "sap/fe/core/converters/helpers/ConfigurableObject";
|
|
34
34
|
import { getCustomActionID } from "sap/fe/core/converters/helpers/ID";
|
|
35
35
|
import fpmFormatter from "sap/fe/core/formatters/FPMFormatter";
|
|
36
|
-
import { UI } from "sap/fe/core/helpers/BindingHelper";
|
|
36
|
+
import { Draft, UI } from "sap/fe/core/helpers/BindingHelper";
|
|
37
37
|
import ModelHelper from "sap/fe/core/helpers/ModelHelper";
|
|
38
38
|
import { replaceSpecialChars } from "sap/fe/core/helpers/StableIdHelper";
|
|
39
39
|
import { getActionEnabledExpression } from "sap/fe/core/templating/UIFormatters";
|
|
@@ -802,3 +802,23 @@ export function isActionAIOperation(dataField: DataFieldForActionAbstractTypes):
|
|
|
802
802
|
}
|
|
803
803
|
return false;
|
|
804
804
|
}
|
|
805
|
+
|
|
806
|
+
/**
|
|
807
|
+
* Gets the binding expression for the visibility of the CreateNext button.
|
|
808
|
+
* This function centralizes the visibility logic to be reused by both getFooterDefaultActions
|
|
809
|
+
* and FooterContent.tsx.
|
|
810
|
+
* @param hiddenDraftEnabled Whether hidden draft mode is enabled
|
|
811
|
+
* @param fclEnabled Whether FCL (Flexible Column Layout) is enabled
|
|
812
|
+
* @returns A compiled binding expression for the CreateNext button visibility
|
|
813
|
+
*/
|
|
814
|
+
export function getCreateNextButtonVisibility(hiddenDraftEnabled: boolean, fclEnabled: boolean): BindingToolkitExpression<boolean> {
|
|
815
|
+
return ifElse(
|
|
816
|
+
hiddenDraftEnabled === true,
|
|
817
|
+
ifElse(
|
|
818
|
+
fclEnabled === true,
|
|
819
|
+
and(Draft.IsNewObject, equal(pathInModel("/showSaveAndCancelButton", "fclhelper"), true)),
|
|
820
|
+
Draft.IsNewObject
|
|
821
|
+
),
|
|
822
|
+
Draft.IsNewObject
|
|
823
|
+
);
|
|
824
|
+
}
|