@esfaenza/extensions 15.2.52 → 15.2.54

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.
@@ -1,7 +1,7 @@
1
1
  // Angular
2
2
  import { Injectable } from "@angular/core";
3
3
  // Libraries
4
- import { Subject, filter } from "rxjs";
4
+ import { ReplaySubject, Subject, filter } from "rxjs";
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "./extensions.messages.service";
7
7
  import * as i2 from "@angular/router";
@@ -13,6 +13,7 @@ export class AppEmbeddingExtensions {
13
13
  this.router = router;
14
14
  this.location = location;
15
15
  this.sidebarWidth = 230;
16
+ this.EmbeddingSource = new ReplaySubject();
16
17
  this.Embedded = false;
17
18
  this.EmbeddingLevel = 0;
18
19
  this.MessageObserver = new Subject();
@@ -67,6 +68,9 @@ export class AppEmbeddingExtensions {
67
68
  return `${JSON.parse(JSON.stringify(event?.data))}`;
68
69
  }
69
70
  configureEmbeddability() {
71
+ if (this.Embedded) {
72
+ this.MainWindow.postMessage({ type: "whois" }, "*");
73
+ }
70
74
  window.onmessage = (event) => {
71
75
  // Ignoro i miei messaggi dato che mi interessano solo quelli degli altri iframe
72
76
  if (event.source == window && event?.data?.type != "modal-open")
@@ -97,6 +101,14 @@ export class AppEmbeddingExtensions {
97
101
  break;
98
102
  }
99
103
  }
104
+ else if (event?.data?.type == "whois") {
105
+ console.log(`Window message - Whois?`);
106
+ sourceWindow.postMessage({ type: "itsme", module: myconfig.AppData.ModuleId }, "*");
107
+ }
108
+ else if (event?.data?.type == "itsme") {
109
+ console.log(`Window message - It'sme -> ` + event?.data?.module);
110
+ this.EmbeddingSource.next(event?.data?.module);
111
+ }
100
112
  else if (event?.data?.type == "replace-state") {
101
113
  console.log(`Window message - replace-state -> Url: ${event?.data?.url}`);
102
114
  this.location.replaceState(event?.data?.url);
@@ -246,4 +258,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
246
258
  type: Injectable,
247
259
  args: [{ providedIn: "root" }]
248
260
  }], ctorParameters: function () { return [{ type: i1.MessageService }, { type: i2.Router }, { type: i3.Location }]; } });
249
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5lbWJlZGRpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvc3JjL2xpYi9zZXJ2aWNlcy9leHRlbnNpb25zLmVtYmVkZGluZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTzNDLFlBQVk7QUFDWixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFJdkMscUdBQXFHO0FBRXJHLE1BQU0sT0FBTyxzQkFBc0I7SUFnQi9CLFlBQW9CLFVBQTBCLEVBQVUsTUFBYyxFQUFVLFFBQWtCO1FBQTlFLGVBQVUsR0FBVixVQUFVLENBQWdCO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVU7UUFkM0YsaUJBQVksR0FBVyxHQUFHLENBQUM7UUFFM0IsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixtQkFBYyxHQUFXLENBQUMsQ0FBQztRQUczQixvQkFBZSxHQUF1QyxJQUFJLE9BQU8sRUFBNkIsQ0FBQztRQUU5RixtQkFBYyxHQUFZLElBQUksQ0FBQztRQUkvQixvQkFBZSxHQUFzRCxFQUFFLENBQUM7UUF5RHhFLDRCQUF1QixHQUFXLEdBQUcsQ0FBQztRQUN0Qyx5QkFBb0IsR0FBOEIsRUFBRSxDQUFBO1FBdkR4RCxJQUFJLENBQUMsVUFBVSxHQUEyQyxNQUFNLENBQUM7UUFDakUsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQzlDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDekMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxRQUFRLEdB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S0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNsRCxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsZUFBZSxTQUFTLEtBQUssQ0FBQyxDQUFDO1NBQ2pFO1FBRUQsSUFBSSxJQUFJO1lBQ0osSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUMxRCxDQUFDOzttSEFoUlEsc0JBQXNCO3VIQUF0QixzQkFBc0IsY0FEVCxNQUFNOzJGQUNuQixzQkFBc0I7a0JBRGxDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuXHJcbi8vIFNlcnZpY2VzXHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSBcIi4vZXh0ZW5zaW9ucy5tZXNzYWdlcy5zZXJ2aWNlXCI7XHJcblxyXG4vLyBMaWJyYXJpZXNcclxuaW1wb3J0IHsgU3ViamVjdCwgZmlsdGVyIH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbmRlY2xhcmUgdmFyIG15Y29uZmlnOiB7IEFwcERhdGE6IHsgTW9kdWxlSWQ6IHN0cmluZyB9OyB9O1xyXG5cclxuLyogQ2xhc3NlIGNoZSBjb250aWVuZSB0dXR0ZSBsZSBpbmZvcm1hemlvbmkgc3VsbCdlbWJlZGRpbmcgaW4gdW4gdW5pY28gY29udGVuaXRvcmUgcGVyIHNlbXBsaWNpdMOgICovXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogXCJyb290XCJ9KVxyXG5leHBvcnQgY2xhc3MgQXBwRW1iZWRkaW5nRXh0ZW5zaW9ucyB7XHJcblxyXG4gICAgcHVibGljIHNpZGViYXJXaWR0aDogbnVtYmVyID0gMjMwO1xyXG5cclxuICAgIHB1YmxpYyBFbWJlZGRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIEVtYmVkZGluZ0xldmVsOiBudW1iZXIgPSAwO1xyXG4gICAgcHVibGljIE1haW5XaW5kb3c6IGFueTtcclxuXHJcbiAgICBwdWJsaWMgTWVzc2FnZU9ic2VydmVyOiBTdWJqZWN0PHsgZXZlbnQ6IGFueSwgZGF0YTogYW55IH0+ID0gbmV3IFN1YmplY3Q8eyBldmVudDogYW55LCBkYXRhOiBhbnkgfT4oKTtcclxuXHJcbiAgICBwcml2YXRlIF9yZWxvYWRBbGxvd2VkOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICBwdWJsaWMgRW1iZWRkZWRNb2R1bGU6IHN0cmluZztcclxuXHJcbiAgICBwcml2YXRlIHB1c2hlZEhpc3RvcmllczogeyBfcHVzaGVkOiBib29sZWFuLCB1cmw6IHN0cmluZywgZnJvbTogc3RyaW5nIH1bXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgbXNnU2VydmljZTogTWVzc2FnZVNlcnZpY2UsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5NYWluV2luZG93ID0gPHsgcGFyZW50OiBhbnksIHBvc3RNZXNzYWdlOiBGdW5jdGlvbiB9PndpbmRvdztcclxuICAgICAgICB3aGlsZSAodGhpcy5NYWluV2luZG93LnBhcmVudCAhPSB0aGlzLk1haW5XaW5kb3cpIHtcclxuICAgICAgICAgICAgdGhpcy5NYWluV2luZG93ID0gdGhpcy5NYWluV2luZG93LnBhcmVudDtcclxuICAgICAgICAgICAgdGhpcy5FbWJlZGRpbmdMZXZlbCsrO1xyXG4gICAgICAgICAgICB0aGlzLkVtYmVkZGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIC8vIEZhbGxiYWNrIHBlciBmYXJsbyBmdW56aW9uYXJlIGZvcnphdGFtZW50ZSBtZW50cmUgbG8gdGVzdG9cclxuICAgICAgICAgICAgdGhpcy5FbWJlZGRlZE1vZHVsZSA9IHRoaXMubG9jYXRpb24ucGF0aCgpLm1hdGNoKC9tb2R1bGU9KFthLXpBLVpfXSspLyk/LlsxXTtcclxuXHJcbiAgICAgICAgICAgIGlmKCF0aGlzLkVtYmVkZGVkTW9kdWxlKVxyXG4gICAgICAgICAgICAgICAgdGhpcy53YWl0Rm9yTXlDb25maWdBbmRGb3JjZUVtYmVkZGVkTW9kdWxlKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmNvbmZpZ3VyZUVtYmVkZGFiaWxpdHkoKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuRW1iZWRkZWQpXHJcbiAgICAgICAgICAgIHRoaXMubXNnU2VydmljZS5jb25maWd1cmVFbWJlZGRhYmlsaXR5KHRoaXMuTWFpbldpbmRvdywgdGhpcy5NZXNzYWdlT2JzZXJ2ZXIpO1xyXG5cclxuICAgICAgICB0aGlzLk1lc3NhZ2VPYnNlcnZlci5waXBlKGZpbHRlcihldiA9PiBldi5ldmVudCA9PSBcIm1lbnUtbmF2aWdhdGlvblwiKSkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuXHJcbiAgICAgICAgICAgIC8vIE1pIGludGVyZXNzYSBzb2xvIHJvYmEgcmVsYXRpdmEgYWxsJ2VtYmVkZGluZ1xyXG4gICAgICAgICAgICBpZiAoIWV2ZW50LmRhdGEucm91dGVyTGluay5zdGFydHNXaXRoKFwiZW1iZWRcIikpXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgICAgICAvLyBlbWIvY3JtL3BhcnRpZXMvcGFydGllc19zZWFyY2g/YmxhYmxhIC0tPiBwYXJ0aWVzL3BhcnRpZXNfc2VhcmNoXHJcbiAgICAgICAgICAgIGxldCBub3JtYWxpemVkUmVxdWVzdGVkUm91dGUgPSBldmVudC5kYXRhLnJvdXRlckxpbmsuc3BsaXQoXCI/XCIpWzBdLnNwbGl0KFwiL1wiKS5zbGljZSgyKS5qb2luKFwiL1wiKTtcclxuICAgICAgICAgICAgLy8vcGFnZXNfZXh0L3BhcnRpZXMvcGFydGllc19zZWFyY2g/YmxhYmxhIC0tPiBwYXJ0aWVzL3BhcnRpZXNfc2VhcmNoXHJcbiAgICAgICAgICAgIGxldCBub3JtYWxpemVkRmlyc3RSb3V0ZSA9IHRoaXMucHVzaGVkSGlzdG9yaWVzLmxlbmd0aCA+IDAgPyB0aGlzLnB1c2hlZEhpc3Rvcmllc1swXS5mcm9tLnNwbGl0KFwiP1wiKVswXS5zcGxpdChcIi9cIikuc2xpY2UoMikuam9pbihcIi9cIikgOiBcIlwiO1xyXG4gICAgICAgICAgICAvLyBMYSByb3V0ZSBzdSBjdWkgc3RvIG5hdmlnYW5kbyBvcmEgw6ggdWd1YWxlIGFsbGEgcm91dGUgaW4gY3VpIGwnZW1iZWRkaW5nIMOoIGluaXppYXRvLiBcclxuICAgICAgICAgICAgLy8gU2lnbmlmaWNhIGNoZSBkZXZvIHNpbXVsYXJlIGRlaSBiYWNrIGZpbm8gYSBjaGUgbm9uIHNvbm8gYXJyaXZhdG8gYWxsJ2luaXppb1xyXG4gICAgICAgICAgICBpZiAobm9ybWFsaXplZFJlcXVlc3RlZFJvdXRlID09IG5vcm1hbGl6ZWRGaXJzdFJvdXRlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJwYWdlcy9cIiArIGV2ZW50LmRhdGEucm91dGVyTGluaywge3dha2V1cDogMX1dLCB7IHF1ZXJ5UGFyYW1zOiBldmVudC5kYXRhLnF1ZXJ5UGFyYW1zLCBvblNhbWVVcmxOYXZpZ2F0aW9uOiBcInJlbG9hZFwiIH0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wdXNoZWRIaXN0b3JpZXMgPSBbXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgd2FpdEZvck15Q29uZmlnQW5kRm9yY2VFbWJlZGRlZE1vZHVsZSgpIHtcclxuXHJcbiAgICAgICAgLy8gQXNwZXR0byBkaSByaWNldmVyZSBpbCBteWNvbmZpZyBlIHNldHRvIGNvbiBsdWkgbCdlbWJlZGRlZG1vZHVsZS4gUXVlc3RvIHZpZW5lIGVzZWd1aXRvIHNvbG8gc2UgdGhpcy5sb2NhdGlvbi5wYXRoKCkgcGVyIHF1YWxjaGUgbW90aXZvIG5vbiBjb250aWVuZSBpbCBtb2R1bGVcclxuICAgICAgICBsZXQgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChteWNvbmZpZz8uQXBwRGF0YT8uTW9kdWxlSWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuRW1iZWRkZWRNb2R1bGUgPSBteWNvbmZpZy5BcHBEYXRhLk1vZHVsZUlkO1xyXG4gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LCAyNTApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBJc1JlbG9hZEFsbG93ZWQoKSB7XHJcbiAgICAgICAgbGV0IHJldCA9IHRoaXMuX3JlbG9hZEFsbG93ZWQ7XHJcbiAgICAgICAgdGhpcy5fcmVsb2FkQWxsb3dlZCA9IHRydWU7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIE1lc3NhZ2VCYXJyaWVyRGVib3VuY01zOiBudW1iZXIgPSAyNTA7XHJcbiAgICBwcml2YXRlIE9uTWVzc2FnZUNhbGxCYXJyaWVyOiB7IFtpZDogc3RyaW5nXTogYm9vbGVhbiB9ID0ge31cclxuICAgIHByaXZhdGUgbWVzc2FnZUhhc2goZXZlbnQ6IE1lc3NhZ2VFdmVudCkge1xyXG4gICAgICAgIHJldHVybiBgJHtKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGV2ZW50Py5kYXRhKSl9YDtcclxuICAgIH1cclxuXHJcbiAgICBjb25maWd1cmVFbWJlZGRhYmlsaXR5KCkge1xyXG4gICAgICAgIHdpbmRvdy5vbm1lc3NhZ2UgPSAoZXZlbnQ6IE1lc3NhZ2VFdmVudCkgPT4ge1xyXG4gICAgICAgICAgICAvLyBJZ25vcm8gaSBtaWVpIG1lc3NhZ2dpIGRhdG8gY2hlIG1pIGludGVyZXNzYW5vIHNvbG8gcXVlbGxpIGRlZ2xpIGFsdHJpIGlmcmFtZVxyXG4gICAgICAgICAgICBpZiAoZXZlbnQuc291cmNlID09IHdpbmRvdyAmJiBldmVudD8uZGF0YT8udHlwZSAhPSBcIm1vZGFsLW9wZW5cIilcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgIC8vIFBvc3NvIGdlc3RpcmUgbG8gc3Rlc3NvIGlkZW50aWNvIG1lc3NhZ2dpbyBzb2xvIDEgdm9sdGEgb2duaSBNZXNzYWdlQmFycmllckRlYm91bmNNc1xyXG4gICAgICAgICAgICBsZXQgbWVzc2FnZUhhc2ggPSB0aGlzLm1lc3NhZ2VIYXNoKGV2ZW50KTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuT25NZXNzYWdlQ2FsbEJhcnJpZXJbbWVzc2FnZUhhc2hdKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuT25NZXNzYWdlQ2FsbEJhcnJpZXJbbWVzc2FnZUhhc2hdID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gZGVsZXRlIHRoaXMuT25NZXNzYWdlQ2FsbEJhcnJpZXJbbWVzc2FnZUhhc2hdLCB0aGlzLk1lc3NhZ2VCYXJyaWVyRGVib3VuY01zKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5NZXNzYWdlT2JzZXJ2ZXIubmV4dCh7IGV2ZW50OiBcIndpbmRvdy1tZXNzYWdlXCIsIGRhdGE6IGV2ZW50Py5kYXRhIH0pO1xyXG5cclxuICAgICAgICAgICAgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwiYWxlcnRcIikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gYWxlcnQgLT4gTGV2ZWw6ICR7ZXZlbnQ/LmRhdGE/LmxldmVsfSwgTWVzc2FnZTogJHtldmVudD8uZGF0YT8ubXNnfWApO1xyXG5cclxuICAgICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnQ/LmRhdGE/LmxldmVsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInN1Y2Nlc3NcIjogdGhpcy5tc2dTZXJ2aWNlLnNpbXBsZVN1Y2Nlc3MoZXZlbnQ/LmRhdGE/Lm1zZyk7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJ3YXJuaW5nXCI6IHRoaXMubXNnU2VydmljZS5zaW1wbGVXYXJuaW5nKGV2ZW50Py5kYXRhPy5tc2cpOyBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiZXJyb3JcIjogdGhpcy5tc2dTZXJ2aWNlLnNpbXBsZUVycm9yKGV2ZW50Py5kYXRhPy5tc2cpOyBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiaW5mb1wiOiB0aGlzLm1zZ1NlcnZpY2Uuc2ltcGxlSW5mbyhldmVudD8uZGF0YT8ubXNnKTsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQ/LmRhdGE/LnR5cGUgPT0gXCJyZXBsYWNlLXN0YXRlXCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBXaW5kb3cgbWVzc2FnZSAtIHJlcGxhY2Utc3RhdGUgLT4gVXJsOiAke2V2ZW50Py5kYXRhPy51cmx9YCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUoZXZlbnQ/LmRhdGE/LnVybCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQ/LmRhdGE/LnR5cGUgPT0gXCJjb25maXJtXCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBXaW5kb3cgbWVzc2FnZSAtIGNvbmZpcm0gLT4gTGV2ZWw6ICR7ZXZlbnQ/LmRhdGE/LmxldmVsfSwgTWVzc2FnZTogJHtldmVudD8uZGF0YT8udGV4dH0sIFRpdGxlOiAke2V2ZW50Py5kYXRhPy50aXRsZX0sIElEOiAke2V2ZW50Py5kYXRhPy5ndWlkfWApO1xyXG5cclxuICAgICAgICAgICAgICAgIHZhciBzb3VyY2VXaW5kb3cgPSAoZXZlbnQuc291cmNlIGFzIFdpbmRvdyk7XHJcbiAgICAgICAgICAgICAgICB2YXIgYmFzZVJlc3BvbnNlID0geyB0eXBlOiBcImNvbmZpcm0tcmVzcG9uc2VcIiwgZ3VpZDogZXZlbnQ/LmRhdGE/Lmd1aWQgfTtcclxuXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGV2ZW50Py5kYXRhPy5sZXZlbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJzdWNjZXNzXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubXNnU2VydmljZS5zaW1wbGVTdWNjZXNzV2l0aENob2ljZShldmVudD8uZGF0YT8udGl0bGUsIGV2ZW50Py5kYXRhPy50ZXh0LCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VXaW5kb3cucG9zdE1lc3NhZ2UoeyByZXN1bHQ6IHRydWUsIC4uLmJhc2VSZXNwb25zZSB9LCBcIipcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlV2luZG93LnBvc3RNZXNzYWdlKHsgcmVzdWx0OiBmYWxzZSwgLi4uYmFzZVJlc3BvbnNlIH0sIFwiKlwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIndhcm5pbmdcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tc2dTZXJ2aWNlLnNpbXBsZVdhcm5pbmdXaXRoQ2hvaWNlKGV2ZW50Py5kYXRhPy50aXRsZSwgZXZlbnQ/LmRhdGE/LnRleHQsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVdpbmRvdy5wb3N0TWVzc2FnZSh7IHJlc3VsdDogdHJ1ZSwgLi4uYmFzZVJlc3BvbnNlIH0sIFwiKlwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VXaW5kb3cucG9zdE1lc3NhZ2UoeyByZXN1bHQ6IGZhbHNlLCAuLi5iYXNlUmVzcG9uc2UgfSwgXCIqXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQ/LmRhdGE/LnR5cGUgPT0gXCJuYXZpZ2F0ZVwiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgV2luZG93IG1lc3NhZ2UgLSBuYXZpZ2F0ZSAtPiAke2V2ZW50Py5kYXRhPy51cmx9YCk7XHJcbiAgICAgICAgICAgICAgICB2YXIgbmV3VGFiID0gZXZlbnQ/LmRhdGE/Lm5ld1RhYjtcclxuICAgICAgICAgICAgICAgIHZhciByZXBsYWNlU3RhdGUgPSBldmVudD8uZGF0YT8ucmVwbGFjZVN0YXRlXHJcbiAgICAgICAgICAgICAgICB2YXIgY3VycmVudCA9IGV2ZW50Py5kYXRhPy5jdXJyZW50O1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIENvbnRyb2xsbyBzZSBpbCByb3V0ZXIgc3RhIHNlZ3VlbmRvIGxhIGNoaWFtYXRhIGF0dHVhbGUuIEVzY2x1ZG8gaSBxdWVyeSBwYXJhbXMgY2hlIHNvbm8gZ2xpIHVuaWNpIGNoZSBwb3Nzb25vIGVzc2VyZSBzZWNjYXRpIGRhaSByZXBsYWNlU3RhdGVcclxuICAgICAgICAgICAgICAgIC8vIGUgY2hlIHBvdHJlYmJlcm8gZmFyZSBkZWwgY2FzaW5vXHJcbiAgICAgICAgICAgICAgICBpZiAoIXdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKHRoaXMucm91dGVyLnVybC5zcGxpdChcIj9cIilbMF0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiRG9wcGlhIGNoaWFtYXRhIGRpIG5hdmlnYXppb25lLCBpZ25vcm8gaWwgc2Vjb25kbyBldmVudG8gc2Nvb3JkaW5hdG8gZGFsIHJvdXRlclwiKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IG5ld1JlbGF0aXZlVXJsID0gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbZXZlbnQ/LmRhdGE/LnVybF0pO1xyXG4gICAgICAgICAgICAgICAgbGV0IGJhc2VVcmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5yZXBsYWNlKHRoaXMucm91dGVyLnVybC5yZXBsYWNlKFwiP2lnbm9yZVN0b3JhZ2U9dHJ1ZVwiICwgJycpLCAnJyk7XHJcbiAgICAgICAgICAgICAgICBsZXQgbmV3VXJsID0gYmFzZVVybCArIGRlY29kZVVSSUNvbXBvbmVudChuZXdSZWxhdGl2ZVVybC50b1N0cmluZygpKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAocmVwbGFjZVN0YXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wdXNoZWRIaXN0b3JpZXMucHVzaCh7IF9wdXNoZWQ6IHRydWUsIHVybDogbmV3VXJsLCBmcm9tOiBjdXJyZW50IH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGhpc3RvcnkucHVzaFN0YXRlKHsgX3B1c2hlZDogdHJ1ZSB9LCBcIlwiLCBuZXdVcmwpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobmV3VGFiKVxyXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKG5ld1VybCwgJ19ibGFuaycpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwibmF2aWdhdGUtYmFja1wiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgV2luZG93IG1lc3NhZ2UgLSBuYXZpZ2F0ZS1iYWNrIC0+ICR7ZXZlbnQ/LmRhdGE/LnVybH1gKTtcclxuICAgICAgICAgICAgICAgIHRoaXMub25OYXZpZ2F0ZUJhY2soKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChldmVudD8uZGF0YT8udHlwZSA9PSBcInJlZGlyZWN0XCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBXaW5kb3cgbWVzc2FnZSAtIHJlZGlyZWN0IC0+ICR7ZXZlbnQ/LmRhdGE/LnVybH1gKTtcclxuXHJcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGV2ZW50Py5kYXRhPy51cmw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQ/LmRhdGE/LnR5cGUgPT0gXCJuYXZpZ2F0aW9uXCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBXaW5kb3cgbWVzc2FnZSAtIE5hdmlnYXRpb24gLT4gJHtldmVudD8uZGF0YT8uaW50ZXJuYWxOYXZpZ2F0aW9uID8gXCJbaW50ZXJuYWxdXCIgOiBcIlwifSAke2V2ZW50Py5kYXRhPy50aXRsZX1gKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLk1lc3NhZ2VPYnNlcnZlci5uZXh0KHsgZXZlbnQ6IFwibmF2aWdhdGlvblwiLCBkYXRhOiBldmVudD8uZGF0YSB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChldmVudD8uZGF0YT8udHlwZSA9PSBcIm1vZGFsLW9wZW5cIikge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgd3JhcHBlciA9IGRvY3VtZW50LmJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcIm1haW4td3JhcHBlclwiKVswXSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICAgICAgICAgIGxldCB3cmFwcGVyU3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUod3JhcHBlcik7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB3cmFwcGVyUGFkZGluZ0xlZnQgPSBwYXJzZUludCh3cmFwcGVyU3R5bGVzLmdldFByb3BlcnR5VmFsdWUoXCJwYWRkaW5nLWxlZnRcIikpO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgd3JhcHBlclBhZGRpbmdSaWdodCA9IHBhcnNlSW50KHdyYXBwZXJTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZShcInBhZGRpbmctcmlnaHRcIikpO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBXaW5kb3cgbWVzc2FnZSAtIE1vZGFsIE9wZW4gLT4gQmFja2Ryb3AgSGVpZ2h0OiAke2V2ZW50Py5kYXRhPy5iYWNrZHJvcEhlaWdodH1gKTtcclxuXHJcbiAgICAgICAgICAgICAgICB2YXIgYm90dG9tTGVmdG92ZXI6IG51bWJlciA9IDc7IC8vIFZhbG9yZSBmaXNzby4uLiByb2JpbmEgY2hlIHJpbWFuZSBkaSBzb3R0byBwZXIgdW4gbW90aXZvIG8gcXVlbGwnYWx0cm9cclxuICAgICAgICAgICAgICAgIHZhciB0b3BIZWlnaHQ6IG51bWJlciA9IDg2OyAvLyB2YWxvcmUgZmlzc28sIGRpc3RhbnphIGZyYSBpbCB0b3AgZSBsJ2luaXppbyBkZWxsJ2lmcmFtZSwgbm9uIHNhcsOgIG1haSBkaXZlcnNvXHJcbiAgICAgICAgICAgICAgICB2YXIgcmlnaHRTcGFjZTogbnVtYmVyID0gd3JhcHBlclBhZGRpbmdSaWdodDsgLy8gdmFsb3JlIGZpc3NvLCBkaXN0YW56YSBmcmEgbGEgZmluZSBkZWxsJ2lmcmFtZSBlIGlsIGxhdG8gc2luaXN0cm8gZGVsbG8gc2NoZXJtbywgbm9uIHNhcsOgIG1haSBkaXZlcnNvXHJcbiAgICAgICAgICAgICAgICB2YXIgbGVmdFNwYWNlOiBudW1iZXIgPSB0aGlzLnNpZGViYXJXaWR0aCArIHdyYXBwZXJQYWRkaW5nTGVmdDtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgY29tbW9uU3R5bGVzID0gXCJwb3NpdGlvbjogYWJzb2x1dGU7IHotaW5kZXg6IDk5OTk7IGJhY2tncm91bmQtY29sb3I6ICMwMDA7IG9wYWNpdHk6IDAuNTsgXCI7XHJcblxyXG4gICAgICAgICAgICAgICAgd3JhcHBlci5zdHlsZS5zZXRQcm9wZXJ0eShcIm92ZXJmbG93XCIsIFwiaGlkZGVuXCIsIFwiaW1wb3J0YW50XCIpO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHRvcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICAgICAgICAgICAgICB0b3AuY2xhc3NOYW1lID0gXCJlbWJlZGRlZC1tb2RhbC10b3BcIjtcclxuICAgICAgICAgICAgICAgIHRvcC5zdHlsZS5jc3NUZXh0ID0gY29tbW9uU3R5bGVzICsgYGhlaWdodDogJHt0b3BIZWlnaHR9cHg7IHRvcDogMDsgd2lkdGg6IGNhbGMoMTAwJSAtICR7bGVmdFNwYWNlfXB4KTsgbGVmdDogJHtsZWZ0U3BhY2V9cHhgO1xyXG4gICAgICAgICAgICAgICAgdG9wLmlkID0gXCJ0b3BcIjtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBsZWZ0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgICAgICAgICAgICAgIGxlZnQuY2xhc3NOYW1lID0gXCJlbWJlZGRlZC1tb2RhbC1sZWZ0XCI7XHJcbiAgICAgICAgICAgICAgICBsZWZ0LnN0eWxlLmNzc1RleHQgPSBjb21tb25TdHlsZXMgKyBgaGVpZ2h0OiAxMDAlOyB0b3A6IDA7IHdpZHRoOiAke2xlZnRTcGFjZX1weDtgO1xyXG4gICAgICAgICAgICAgICAgbGVmdC5pZCA9IFwibGVmdFwiO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgICAgICAgICAgICAgIHJpZ2h0LmNsYXNzTmFtZSA9IFwiZW1iZWRkZWQtbW9kYWwtcmlnaHRcIjtcclxuICAgICAgICAgICAgICAgIHJpZ2h0LnN0eWxlLmNzc1RleHQgPSBjb21tb25TdHlsZXMgKyBgaGVpZ2h0OiBjYWxjKDEwMCUgLSAke3RvcEhlaWdodH1weCk7IHRvcDogJHt0b3BIZWlnaHR9cHg7IHJpZ2h0OiAwOyB3aWR0aDogJHtyaWdodFNwYWNlfXB4O2A7XHJcbiAgICAgICAgICAgICAgICByaWdodC5pZCA9IFwicmlnaHRcIjtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBib3R0b20gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4gICAgICAgICAgICAgICAgYm90dG9tLmNsYXNzTmFtZSA9IFwiZW1iZWRkZWQtbW9kYWwtYm90dG9tXCI7XHJcbiAgICAgICAgICAgICAgICBib3R0b20uc3R5bGUuY3NzVGV4dCA9IGNvbW1vblN0eWxlcyArIGBoZWlnaHQ6ICR7Ym90dG9tTGVmdG92ZXJ9cHg7IGJvdHRvbTogMDsgd2lkdGg6IGNhbGMoMTAwJSAtICR7bGVmdFNwYWNlICsgcmlnaHRTcGFjZX1weCk7IGxlZnQ6ICR7bGVmdFNwYWNlfXB4YDtcclxuICAgICAgICAgICAgICAgIGJvdHRvbS5pZCA9IFwiYm90dG9tXCI7XHJcblxyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0b3ApO1xyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsZWZ0KTtcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocmlnaHQpO1xyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChib3R0b20pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwibW9kYWwtY2xvc2VcIikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gTW9kYWwgQ2xvc2VgKTtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgd3JhcHBlciA9IGRvY3VtZW50LmJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcIm1haW4td3JhcHBlclwiKVswXSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICAgICAgICAgIHdyYXBwZXIuc3R5bGUucmVtb3ZlUHJvcGVydHkoXCJvdmVyZmxvd1wiKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCB0b3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInRvcFwiKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGxlZnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImxlZnRcIik7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByaWdodCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmlnaHRcIik7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBib3R0b20gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImJvdHRvbVwiKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodG9wKSBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRvcCk7XHJcbiAgICAgICAgICAgICAgICBpZiAobGVmdCkgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsZWZ0KTtcclxuICAgICAgICAgICAgICAgIGlmIChyaWdodCkgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChyaWdodCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoYm90dG9tKSBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGJvdHRvbSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpZiAodGhpcy5FbWJlZGRlZClcclxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5zZXRQcm9wZXJ0eShcIm92ZXJmbG93LXlcIiwgXCJhdXRvXCIsIFwiaW1wb3J0YW50XCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgb25OYXZpZ2F0ZUJhY2soKSB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKGhpc3Rvcnk/LnN0YXRlPy5fcHVzaGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3JlbG9hZEFsbG93ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5wdXNoZWRIaXN0b3JpZXMucG9wKCk7XHJcbiAgICAgICAgICAgIGhpc3RvcnkuYmFjaygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVwbGFjZVN0YXRlKGJhc2VQYXRoOiBzdHJpbmcsIHVybDogc3RyaW5nKSB7XHJcbiAgICAgICAgLy8gRXNlbXBpbyBiYXNlUGF0aDogcGFnZXNcclxuICAgICAgICAvLyBFc2VtcGlvIHVybDogcGFydGllcy9sZWFkc19zZWFyY2hcclxuXHJcbiAgICAgICAgLy8gTm9ybWFsaXp6YXppb25lIHNlbnphIHNsYXNoIHByaW1hIG8gZG9wb1xyXG4gICAgICAgIGJhc2VQYXRoID0gYmFzZVBhdGguZW5kc1dpdGgoXCIvXCIpID8gYmFzZVBhdGguc3Vic3RyaW5nKDAsIGJhc2VQYXRoLmxlbmd0aCAtMikgOiBiYXNlUGF0aDtcclxuICAgICAgICB1cmwgPSB1cmwuc3RhcnRzV2l0aChcIi9cIikgPyB1cmwuc3Vic3RyaW5nKDEpIDogdXJsO1xyXG5cclxuICAgICAgICB0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZShgJHtiYXNlUGF0aH0vJHt1cmx9YCk7XHJcbiAgICAgICAgdGhpcy5NYWluV2luZG93LnBvc3RNZXNzYWdlKHsgdHlwZTogXCJyZXBsYWNlLXN0YXRlXCIsIHVybDogYHBhZ2VzL2VtYmVkLyR7dGhpcy5FbWJlZGRlZE1vZHVsZX0vJHt1cmx9YCB9LCBcIipcIik7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlZnJlc2hCb3VuZGFyaWVzT25NZW51Q29sbGFwc2UoKSB7XHJcbiAgICAgICAgY29uc3Qgd3JhcHBlciA9IGRvY3VtZW50LmJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcIm1haW4td3JhcHBlclwiKVswXSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBsZXQgd3JhcHBlclN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHdyYXBwZXIpO1xyXG4gICAgICAgIGNvbnN0IHdyYXBwZXJQYWRkaW5nTGVmdCA9IHBhcnNlSW50KHdyYXBwZXJTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZShcInBhZGRpbmctbGVmdFwiKSk7XHJcbiAgICAgICAgdmFyIGxlZnRTcGFjZTogbnVtYmVyID0gMjMwICsgd3JhcHBlclBhZGRpbmdMZWZ0O1xyXG5cclxuICAgICAgICBjb25zdCBsZWZ0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJsZWZ0XCIpO1xyXG4gICAgICAgIGNvbnN0IHRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidG9wXCIpO1xyXG5cclxuICAgICAgICBpZiAodG9wKSB7XHJcbiAgICAgICAgICAgIHRvcC5zdHlsZS5zZXRQcm9wZXJ0eShcImxlZnRcIiwgKGxlZnRTcGFjZSkgKyBcInB4XCIpO1xyXG4gICAgICAgICAgICB0b3Auc3R5bGUuc2V0UHJvcGVydHkoXCJ3aWR0aFwiLCBgY2FsYygxMDAlIC0gJHtsZWZ0U3BhY2V9cHgpYCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAobGVmdClcclxuICAgICAgICAgICAgbGVmdC5zdHlsZS5zZXRQcm9wZXJ0eShcIndpZHRoXCIsIGxlZnRTcGFjZSArIFwicHhcIik7XHJcbiAgICB9XHJcbn0iXX0=
261
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5lbWJlZGRpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvc3JjL2xpYi9zZXJ2aWNlcy9leHRlbnNpb25zLmVtYmVkZGluZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTzNDLFlBQVk7QUFDWixPQUFPLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBSXRELHFHQUFxRztBQUVyRyxNQUFNLE9BQU8sc0JBQXNCO0lBaUIvQixZQUFvQixVQUEwQixFQUFVLE1BQWMsRUFBVSxRQUFrQjtRQUE5RSxlQUFVLEdBQVYsVUFBVSxDQUFnQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBZjNGLGlCQUFZLEdBQVcsR0FBRyxDQUFDO1FBRTNCLG9CQUFlLEdBQTBCLElBQUksYUFBYSxFQUFVLENBQUM7UUFDckUsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixtQkFBYyxHQUFXLENBQUMsQ0FBQztRQUczQixvQkFBZSxHQUF1QyxJQUFJLE9BQU8sRUFBNkIsQ0FBQztRQUU5RixtQkFBYyxHQUFZLElBQUksQ0FBQztRQUkvQixvQkFBZSxHQUFzRCxFQUFFLENBQUM7UUF5RHhFLDRCQUF1QixHQUFXLEdBQUcsQ0FBQztRQUN0Qyx5QkFBb0IsR0FBOEIsRUFBRSxDQUFBO1FBdkR4RCxJQUFJLENBQUMsVUFBVSxHQUEyQyxNQUFNLENBQUM7UUFDakUsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQzlDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDekMs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QUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcblxyXG4vLyBTZXJ2aWNlc1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gXCIuL2V4dGVuc2lvbnMubWVzc2FnZXMuc2VydmljZVwiO1xyXG5cclxuLy8gTGlicmFyaWVzXHJcbmltcG9ydCB7IFJlcGxheVN1YmplY3QsIFN1YmplY3QsIGZpbHRlciB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG5kZWNsYXJlIHZhciBteWNvbmZpZzogeyBBcHBEYXRhOiB7IE1vZHVsZUlkOiBzdHJpbmcgfTsgfTtcclxuXHJcbi8qIENsYXNzZSBjaGUgY29udGllbmUgdHV0dGUgbGUgaW5mb3JtYXppb25pIHN1bGwnZW1iZWRkaW5nIGluIHVuIHVuaWNvIGNvbnRlbml0b3JlIHBlciBzZW1wbGljaXTDoCAqL1xyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46IFwicm9vdFwifSlcclxuZXhwb3J0IGNsYXNzIEFwcEVtYmVkZGluZ0V4dGVuc2lvbnMge1xyXG5cclxuICAgIHB1YmxpYyBzaWRlYmFyV2lkdGg6IG51bWJlciA9IDIzMDtcclxuXHJcbiAgICBwdWJsaWMgRW1iZWRkaW5nU291cmNlOiBSZXBsYXlTdWJqZWN0PHN0cmluZz4gPSBuZXcgUmVwbGF5U3ViamVjdDxzdHJpbmc+KCk7XHJcbiAgICBwdWJsaWMgRW1iZWRkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBFbWJlZGRpbmdMZXZlbDogbnVtYmVyID0gMDtcclxuICAgIHB1YmxpYyBNYWluV2luZG93OiBhbnk7XHJcblxyXG4gICAgcHVibGljIE1lc3NhZ2VPYnNlcnZlcjogU3ViamVjdDx7IGV2ZW50OiBhbnksIGRhdGE6IGFueSB9PiA9IG5ldyBTdWJqZWN0PHsgZXZlbnQ6IGFueSwgZGF0YTogYW55IH0+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSBfcmVsb2FkQWxsb3dlZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgcHVibGljIEVtYmVkZGVkTW9kdWxlOiBzdHJpbmc7XHJcblxyXG4gICAgcHJpdmF0ZSBwdXNoZWRIaXN0b3JpZXM6IHsgX3B1c2hlZDogYm9vbGVhbiwgdXJsOiBzdHJpbmcsIGZyb206IHN0cmluZyB9W10gPSBbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1zZ1NlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbikge1xyXG4gICAgICAgIHRoaXMuTWFpbldpbmRvdyA9IDx7IHBhcmVudDogYW55LCBwb3N0TWVzc2FnZTogRnVuY3Rpb24gfT53aW5kb3c7XHJcbiAgICAgICAgd2hpbGUgKHRoaXMuTWFpbldpbmRvdy5wYXJlbnQgIT0gdGhpcy5NYWluV2luZG93KSB7XHJcbiAgICAgICAgICAgIHRoaXMuTWFpbldpbmRvdyA9IHRoaXMuTWFpbldpbmRvdy5wYXJlbnQ7XHJcbiAgICAgICAgICAgIHRoaXMuRW1iZWRkaW5nTGV2ZWwrKztcclxuICAgICAgICAgICAgdGhpcy5FbWJlZGRlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICAvLyBGYWxsYmFjayBwZXIgZmFybG8gZnVuemlvbmFyZSBmb3J6YXRhbWVudGUgbWVudHJlIGxvIHRlc3RvXHJcbiAgICAgICAgICAgIHRoaXMuRW1iZWRkZWRNb2R1bGUgPSB0aGlzLmxvY2F0aW9uLnBhdGgoKS5tYXRjaCgvbW9kdWxlPShbYS16QS1aX10rKS8pPy5bMV07XHJcblxyXG4gICAgICAgICAgICBpZighdGhpcy5FbWJlZGRlZE1vZHVsZSlcclxuICAgICAgICAgICAgICAgIHRoaXMud2FpdEZvck15Q29uZmlnQW5kRm9yY2VFbWJlZGRlZE1vZHVsZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jb25maWd1cmVFbWJlZGRhYmlsaXR5KCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLkVtYmVkZGVkKVxyXG4gICAgICAgICAgICB0aGlzLm1zZ1NlcnZpY2UuY29uZmlndXJlRW1iZWRkYWJpbGl0eSh0aGlzLk1haW5XaW5kb3csIHRoaXMuTWVzc2FnZU9ic2VydmVyKTtcclxuXHJcbiAgICAgICAgdGhpcy5NZXNzYWdlT2JzZXJ2ZXIucGlwZShmaWx0ZXIoZXYgPT4gZXYuZXZlbnQgPT0gXCJtZW51LW5hdmlnYXRpb25cIikpLnN1YnNjcmliZShldmVudCA9PiB7XHJcblxyXG4gICAgICAgICAgICAvLyBNaSBpbnRlcmVzc2Egc29sbyByb2JhIHJlbGF0aXZhIGFsbCdlbWJlZGRpbmdcclxuICAgICAgICAgICAgaWYgKCFldmVudC5kYXRhLnJvdXRlckxpbmsuc3RhcnRzV2l0aChcImVtYmVkXCIpKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgLy8gZW1iL2NybS9wYXJ0aWVzL3BhcnRpZXNfc2VhcmNoP2JsYWJsYSAtLT4gcGFydGllcy9wYXJ0aWVzX3NlYXJjaFxyXG4gICAgICAgICAgICBsZXQgbm9ybWFsaXplZFJlcXVlc3RlZFJvdXRlID0gZXZlbnQuZGF0YS5yb3V0ZXJMaW5rLnNwbGl0KFwiP1wiKVswXS5zcGxpdChcIi9cIikuc2xpY2UoMikuam9pbihcIi9cIik7XHJcbiAgICAgICAgICAgIC8vL3BhZ2VzX2V4dC9wYXJ0aWVzL3BhcnRpZXNfc2VhcmNoP2JsYWJsYSAtLT4gcGFydGllcy9wYXJ0aWVzX3NlYXJjaFxyXG4gICAgICAgICAgICBsZXQgbm9ybWFsaXplZEZpcnN0Um91dGUgPSB0aGlzLnB1c2hlZEhpc3Rvcmllcy5sZW5ndGggPiAwID8gdGhpcy5wdXNoZWRIaXN0b3JpZXNbMF0uZnJvbS5zcGxpdChcIj9cIilbMF0uc3BsaXQoXCIvXCIpLnNsaWNlKDIpLmpvaW4oXCIvXCIpIDogXCJcIjtcclxuICAgICAgICAgICAgLy8gTGEgcm91dGUgc3UgY3VpIHN0byBuYXZpZ2FuZG8gb3JhIMOoIHVndWFsZSBhbGxhIHJvdXRlIGluIGN1aSBsJ2VtYmVkZGluZyDDqCBpbml6aWF0by4gXHJcbiAgICAgICAgICAgIC8vIFNpZ25pZmljYSBjaGUgZGV2byBzaW11bGFyZSBkZWkgYmFjayBmaW5vIGEgY2hlIG5vbiBzb25vIGFycml2YXRvIGFsbCdpbml6aW9cclxuICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWRSZXF1ZXN0ZWRSb3V0ZSA9PSBub3JtYWxpemVkRmlyc3RSb3V0ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wicGFnZXMvXCIgKyBldmVudC5kYXRhLnJvdXRlckxpbmssIHt3YWtldXA6IDF9XSwgeyBxdWVyeVBhcmFtczogZXZlbnQuZGF0YS5xdWVyeVBhcmFtcywgb25TYW1lVXJsTmF2aWdhdGlvbjogXCJyZWxvYWRcIiB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMucHVzaGVkSGlzdG9yaWVzID0gW107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHdhaXRGb3JNeUNvbmZpZ0FuZEZvcmNlRW1iZWRkZWRNb2R1bGUoKSB7XHJcblxyXG4gICAgICAgIC8vIEFzcGV0dG8gZGkgcmljZXZlcmUgaWwgbXljb25maWcgZSBzZXR0byBjb24gbHVpIGwnZW1iZWRkZWRtb2R1bGUuIFF1ZXN0byB2aWVuZSBlc2VndWl0byBzb2xvIHNlIHRoaXMubG9jYXRpb24ucGF0aCgpIHBlciBxdWFsY2hlIG1vdGl2byBub24gY29udGllbmUgaWwgbW9kdWxlXHJcbiAgICAgICAgbGV0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAobXljb25maWc/LkFwcERhdGE/Lk1vZHVsZUlkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkVtYmVkZGVkTW9kdWxlID0gbXljb25maWcuQXBwRGF0YS5Nb2R1bGVJZDtcclxuICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSwgMjUwKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgSXNSZWxvYWRBbGxvd2VkKCkge1xyXG4gICAgICAgIGxldCByZXQgPSB0aGlzLl9yZWxvYWRBbGxvd2VkO1xyXG4gICAgICAgIHRoaXMuX3JlbG9hZEFsbG93ZWQgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBNZXNzYWdlQmFycmllckRlYm91bmNNczogbnVtYmVyID0gMjUwO1xyXG4gICAgcHJpdmF0ZSBPbk1lc3NhZ2VDYWxsQmFycmllcjogeyBbaWQ6IHN0cmluZ106IGJvb2xlYW4gfSA9IHt9XHJcbiAgICBwcml2YXRlIG1lc3NhZ2VIYXNoKGV2ZW50OiBNZXNzYWdlRXZlbnQpIHtcclxuICAgICAgICByZXR1cm4gYCR7SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShldmVudD8uZGF0YSkpfWA7XHJcbiAgICB9XHJcblxyXG4gICAgY29uZmlndXJlRW1iZWRkYWJpbGl0eSgpIHtcclxuXHJcbiAgICAgICAgaWYodGhpcy5FbWJlZGRlZCl7XHJcbiAgICAgICAgICAgIHRoaXMuTWFpbldpbmRvdy5wb3N0TWVzc2FnZSh7IHR5cGU6IFwid2hvaXNcIiB9LCBcIipcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB3aW5kb3cub25tZXNzYWdlID0gKGV2ZW50OiBNZXNzYWdlRXZlbnQpID0+IHtcclxuICAgICAgICAgICAgLy8gSWdub3JvIGkgbWllaSBtZXNzYWdnaSBkYXRvIGNoZSBtaSBpbnRlcmVzc2FubyBzb2xvIHF1ZWxsaSBkZWdsaSBhbHRyaSBpZnJhbWVcclxuICAgICAgICAgICAgaWYgKGV2ZW50LnNvdXJjZSA9PSB3aW5kb3cgJiYgZXZlbnQ/LmRhdGE/LnR5cGUgIT0gXCJtb2RhbC1vcGVuXCIpXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgICAgICAvLyBQb3NzbyBnZXN0aXJlIGxvIHN0ZXNzbyBpZGVudGljbyBtZXNzYWdnaW8gc29sbyAxIHZvbHRhIG9nbmkgTWVzc2FnZUJhcnJpZXJEZWJvdW5jTXNcclxuICAgICAgICAgICAgbGV0IG1lc3NhZ2VIYXNoID0gdGhpcy5tZXNzYWdlSGFzaChldmVudCk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLk9uTWVzc2FnZUNhbGxCYXJyaWVyW21lc3NhZ2VIYXNoXSlcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLk9uTWVzc2FnZUNhbGxCYXJyaWVyW21lc3NhZ2VIYXNoXSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IGRlbGV0ZSB0aGlzLk9uTWVzc2FnZUNhbGxCYXJyaWVyW21lc3NhZ2VIYXNoXSwgdGhpcy5NZXNzYWdlQmFycmllckRlYm91bmNNcyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuTWVzc2FnZU9ic2VydmVyLm5leHQoeyBldmVudDogXCJ3aW5kb3ctbWVzc2FnZVwiLCBkYXRhOiBldmVudD8uZGF0YSB9KTtcclxuXHJcbiAgICAgICAgICAgIGlmIChldmVudD8uZGF0YT8udHlwZSA9PSBcImFsZXJ0XCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBXaW5kb3cgbWVzc2FnZSAtIGFsZXJ0IC0+IExldmVsOiAke2V2ZW50Py5kYXRhPy5sZXZlbH0sIE1lc3NhZ2U6ICR7ZXZlbnQ/LmRhdGE/Lm1zZ31gKTtcclxuXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGV2ZW50Py5kYXRhPy5sZXZlbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJzdWNjZXNzXCI6IHRoaXMubXNnU2VydmljZS5zaW1wbGVTdWNjZXNzKGV2ZW50Py5kYXRhPy5tc2cpOyBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwid2FybmluZ1wiOiB0aGlzLm1zZ1NlcnZpY2Uuc2ltcGxlV2FybmluZyhldmVudD8uZGF0YT8ubXNnKTsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImVycm9yXCI6IHRoaXMubXNnU2VydmljZS5zaW1wbGVFcnJvcihldmVudD8uZGF0YT8ubXNnKTsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImluZm9cIjogdGhpcy5tc2dTZXJ2aWNlLnNpbXBsZUluZm8oZXZlbnQ/LmRhdGE/Lm1zZyk7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwid2hvaXNcIikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gV2hvaXM/YCk7XHJcblxyXG4gICAgICAgICAgICAgICAgc291cmNlV2luZG93LnBvc3RNZXNzYWdlKHsgdHlwZTogXCJpdHNtZVwiLCBtb2R1bGU6IG15Y29uZmlnLkFwcERhdGEuTW9kdWxlSWQgfSwgXCIqXCIpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQ/LmRhdGE/LnR5cGUgPT0gXCJpdHNtZVwiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgV2luZG93IG1lc3NhZ2UgLSBJdCdzbWUgLT4gYCArIGV2ZW50Py5kYXRhPy5tb2R1bGUpO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuRW1iZWRkaW5nU291cmNlLm5leHQoZXZlbnQ/LmRhdGE/Lm1vZHVsZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQ/LmRhdGE/LnR5cGUgPT0gXCJyZXBsYWNlLXN0YXRlXCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBXaW5kb3cgbWVzc2FnZSAtIHJlcGxhY2Utc3RhdGUgLT4gVXJsOiAke2V2ZW50Py5kYXRhPy51cmx9YCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUoZXZlbnQ/LmRhdGE/LnVybCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQ/LmRhdGE/LnR5cGUgPT0gXCJjb25maXJtXCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBXaW5kb3cgbWVzc2FnZSAtIGNvbmZpcm0gLT4gTGV2ZWw6ICR7ZXZlbnQ/LmRhdGE/LmxldmVsfSwgTWVzc2FnZTogJHtldmVudD8uZGF0YT8udGV4dH0sIFRpdGxlOiAke2V2ZW50Py5kYXRhPy50aXRsZX0sIElEOiAke2V2ZW50Py5kYXRhPy5ndWlkfWApO1xyXG5cclxuICAgICAgICAgICAgICAgIHZhciBzb3VyY2VXaW5kb3cgPSAoZXZlbnQuc291cmNlIGFzIFdpbmRvdyk7XHJcbiAgICAgICAgICAgICAgICB2YXIgYmFzZVJlc3BvbnNlID0geyB0eXBlOiBcImNvbmZpcm0tcmVzcG9uc2VcIiwgZ3VpZDogZXZlbnQ/LmRhdGE/Lmd1aWQgfTtcclxuXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGV2ZW50Py5kYXRhPy5sZXZlbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJzdWNjZXNzXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubXNnU2VydmljZS5zaW1wbGVTdWNjZXNzV2l0aENob2ljZShldmVudD8uZGF0YT8udGl0bGUsIGV2ZW50Py5kYXRhPy50ZXh0LCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VXaW5kb3cucG9zdE1lc3NhZ2UoeyByZXN1bHQ6IHRydWUsIC4uLmJhc2VSZXNwb25zZSB9LCBcIipcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlV2luZG93LnBvc3RNZXNzYWdlKHsgcmVzdWx0OiBmYWxzZSwgLi4uYmFzZVJlc3BvbnNlIH0sIFwiKlwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIndhcm5pbmdcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tc2dTZXJ2aWNlLnNpbXBsZVdhcm5pbmdXaXRoQ2hvaWNlKGV2ZW50Py5kYXRhPy50aXRsZSwgZXZlbnQ/LmRhdGE/LnRleHQsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVdpbmRvdy5wb3N0TWVzc2FnZSh7IHJlc3VsdDogdHJ1ZSwgLi4uYmFzZVJlc3BvbnNlIH0sIFwiKlwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VXaW5kb3cucG9zdE1lc3NhZ2UoeyByZXN1bHQ6IGZhbHNlLCAuLi5iYXNlUmVzcG9uc2UgfSwgXCIqXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQ/LmRhdGE/LnR5cGUgPT0gXCJuYXZpZ2F0ZVwiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgV2luZG93IG1lc3NhZ2UgLSBuYXZpZ2F0ZSAtPiAke2V2ZW50Py5kYXRhPy51cmx9YCk7XHJcbiAgICAgICAgICAgICAgICB2YXIgbmV3VGFiID0gZXZlbnQ/LmRhdGE/Lm5ld1RhYjtcclxuICAgICAgICAgICAgICAgIHZhciByZXBsYWNlU3RhdGUgPSBldmVudD8uZGF0YT8ucmVwbGFjZVN0YXRlXHJcbiAgICAgICAgICAgICAgICB2YXIgY3VycmVudCA9IGV2ZW50Py5kYXRhPy5jdXJyZW50O1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIENvbnRyb2xsbyBzZSBpbCByb3V0ZXIgc3RhIHNlZ3VlbmRvIGxhIGNoaWFtYXRhIGF0dHVhbGUuIEVzY2x1ZG8gaSBxdWVyeSBwYXJhbXMgY2hlIHNvbm8gZ2xpIHVuaWNpIGNoZSBwb3Nzb25vIGVzc2VyZSBzZWNjYXRpIGRhaSByZXBsYWNlU3RhdGVcclxuICAgICAgICAgICAgICAgIC8vIGUgY2hlIHBvdHJlYmJlcm8gZmFyZSBkZWwgY2FzaW5vXHJcbiAgICAgICAgICAgICAgICBpZiAoIXdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKHRoaXMucm91dGVyLnVybC5zcGxpdChcIj9cIilbMF0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiRG9wcGlhIGNoaWFtYXRhIGRpIG5hdmlnYXppb25lLCBpZ25vcm8gaWwgc2Vjb25kbyBldmVudG8gc2Nvb3JkaW5hdG8gZGFsIHJvdXRlclwiKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IG5ld1JlbGF0aXZlVXJsID0gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbZXZlbnQ/LmRhdGE/LnVybF0pO1xyXG4gICAgICAgICAgICAgICAgbGV0IGJhc2VVcmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5yZXBsYWNlKHRoaXMucm91dGVyLnVybC5yZXBsYWNlKFwiP2lnbm9yZVN0b3JhZ2U9dHJ1ZVwiICwgJycpLCAnJyk7XHJcbiAgICAgICAgICAgICAgICBsZXQgbmV3VXJsID0gYmFzZVVybCArIGRlY29kZVVSSUNvbXBvbmVudChuZXdSZWxhdGl2ZVVybC50b1N0cmluZygpKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAocmVwbGFjZVN0YXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wdXNoZWRIaXN0b3JpZXMucHVzaCh7IF9wdXNoZWQ6IHRydWUsIHVybDogbmV3VXJsLCBmcm9tOiBjdXJyZW50IH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGhpc3RvcnkucHVzaFN0YXRlKHsgX3B1c2hlZDogdHJ1ZSB9LCBcIlwiLCBuZXdVcmwpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobmV3VGFiKVxyXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKG5ld1VybCwgJ19ibGFuaycpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwibmF2aWdhdGUtYmFja1wiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgV2luZG93IG1lc3NhZ2UgLSBuYXZpZ2F0ZS1iYWNrIC0+ICR7ZXZlbnQ/LmRhdGE/LnVybH1gKTtcclxuICAgICAgICAgICAgICAgIHRoaXMub25OYXZpZ2F0ZUJhY2soKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChldmVudD8uZGF0YT8udHlwZSA9PSBcInJlZGlyZWN0XCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBXaW5kb3cgbWVzc2FnZSAtIHJlZGlyZWN0IC0+ICR7ZXZlbnQ/LmRhdGE/LnVybH1gKTtcclxuXHJcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGV2ZW50Py5kYXRhPy51cmw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQ/LmRhdGE/LnR5cGUgPT0gXCJuYXZpZ2F0aW9uXCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBXaW5kb3cgbWVzc2FnZSAtIE5hdmlnYXRpb24gLT4gJHtldmVudD8uZGF0YT8uaW50ZXJuYWxOYXZpZ2F0aW9uID8gXCJbaW50ZXJuYWxdXCIgOiBcIlwifSAke2V2ZW50Py5kYXRhPy50aXRsZX1gKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLk1lc3NhZ2VPYnNlcnZlci5uZXh0KHsgZXZlbnQ6IFwibmF2aWdhdGlvblwiLCBkYXRhOiBldmVudD8uZGF0YSB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChldmVudD8uZGF0YT8udHlwZSA9PSBcIm1vZGFsLW9wZW5cIikge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgd3JhcHBlciA9IGRvY3VtZW50LmJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcIm1haW4td3JhcHBlclwiKVswXSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICAgICAgICAgIGxldCB3cmFwcGVyU3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUod3JhcHBlcik7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB3cmFwcGVyUGFkZGluZ0xlZnQgPSBwYXJzZUludCh3cmFwcGVyU3R5bGVzLmdldFByb3BlcnR5VmFsdWUoXCJwYWRkaW5nLWxlZnRcIikpO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgd3JhcHBlclBhZGRpbmdSaWdodCA9IHBhcnNlSW50KHdyYXBwZXJTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZShcInBhZGRpbmctcmlnaHRcIikpO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBXaW5kb3cgbWVzc2FnZSAtIE1vZGFsIE9wZW4gLT4gQmFja2Ryb3AgSGVpZ2h0OiAke2V2ZW50Py5kYXRhPy5iYWNrZHJvcEhlaWdodH1gKTtcclxuXHJcbiAgICAgICAgICAgICAgICB2YXIgYm90dG9tTGVmdG92ZXI6IG51bWJlciA9IDc7IC8vIFZhbG9yZSBmaXNzby4uLiByb2JpbmEgY2hlIHJpbWFuZSBkaSBzb3R0byBwZXIgdW4gbW90aXZvIG8gcXVlbGwnYWx0cm9cclxuICAgICAgICAgICAgICAgIHZhciB0b3BIZWlnaHQ6IG51bWJlciA9IDg2OyAvLyB2YWxvcmUgZmlzc28sIGRpc3RhbnphIGZyYSBpbCB0b3AgZSBsJ2luaXppbyBkZWxsJ2lmcmFtZSwgbm9uIHNhcsOgIG1haSBkaXZlcnNvXHJcbiAgICAgICAgICAgICAgICB2YXIgcmlnaHRTcGFjZTogbnVtYmVyID0gd3JhcHBlclBhZGRpbmdSaWdodDsgLy8gdmFsb3JlIGZpc3NvLCBkaXN0YW56YSBmcmEgbGEgZmluZSBkZWxsJ2lmcmFtZSBlIGlsIGxhdG8gc2luaXN0cm8gZGVsbG8gc2NoZXJtbywgbm9uIHNhcsOgIG1haSBkaXZlcnNvXHJcbiAgICAgICAgICAgICAgICB2YXIgbGVmdFNwYWNlOiBudW1iZXIgPSB0aGlzLnNpZGViYXJXaWR0aCArIHdyYXBwZXJQYWRkaW5nTGVmdDtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgY29tbW9uU3R5bGVzID0gXCJwb3NpdGlvbjogYWJzb2x1dGU7IHotaW5kZXg6IDk5OTk7IGJhY2tncm91bmQtY29sb3I6ICMwMDA7IG9wYWNpdHk6IDAuNTsgXCI7XHJcblxyXG4gICAgICAgICAgICAgICAgd3JhcHBlci5zdHlsZS5zZXRQcm9wZXJ0eShcIm92ZXJmbG93XCIsIFwiaGlkZGVuXCIsIFwiaW1wb3J0YW50XCIpO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHRvcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICAgICAgICAgICAgICB0b3AuY2xhc3NOYW1lID0gXCJlbWJlZGRlZC1tb2RhbC10b3BcIjtcclxuICAgICAgICAgICAgICAgIHRvcC5zdHlsZS5jc3NUZXh0ID0gY29tbW9uU3R5bGVzICsgYGhlaWdodDogJHt0b3BIZWlnaHR9cHg7IHRvcDogMDsgd2lkdGg6IGNhbGMoMTAwJSAtICR7bGVmdFNwYWNlfXB4KTsgbGVmdDogJHtsZWZ0U3BhY2V9cHhgO1xyXG4gICAgICAgICAgICAgICAgdG9wLmlkID0gXCJ0b3BcIjtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBsZWZ0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgICAgICAgICAgICAgIGxlZnQuY2xhc3NOYW1lID0gXCJlbWJlZGRlZC1tb2RhbC1sZWZ0XCI7XHJcbiAgICAgICAgICAgICAgICBsZWZ0LnN0eWxlLmNzc1RleHQgPSBjb21tb25TdHlsZXMgKyBgaGVpZ2h0OiAxMDAlOyB0b3A6IDA7IHdpZHRoOiAke2xlZnRTcGFjZX1weDtgO1xyXG4gICAgICAgICAgICAgICAgbGVmdC5pZCA9IFwibGVmdFwiO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgICAgICAgICAgICAgIHJpZ2h0LmNsYXNzTmFtZSA9IFwiZW1iZWRkZWQtbW9kYWwtcmlnaHRcIjtcclxuICAgICAgICAgICAgICAgIHJpZ2h0LnN0eWxlLmNzc1RleHQgPSBjb21tb25TdHlsZXMgKyBgaGVpZ2h0OiBjYWxjKDEwMCUgLSAke3RvcEhlaWdodH1weCk7IHRvcDogJHt0b3BIZWlnaHR9cHg7IHJpZ2h0OiAwOyB3aWR0aDogJHtyaWdodFNwYWNlfXB4O2A7XHJcbiAgICAgICAgICAgICAgICByaWdodC5pZCA9IFwicmlnaHRcIjtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBib3R0b20gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4gICAgICAgICAgICAgICAgYm90dG9tLmNsYXNzTmFtZSA9IFwiZW1iZWRkZWQtbW9kYWwtYm90dG9tXCI7XHJcbiAgICAgICAgICAgICAgICBib3R0b20uc3R5bGUuY3NzVGV4dCA9IGNvbW1vblN0eWxlcyArIGBoZWlnaHQ6ICR7Ym90dG9tTGVmdG92ZXJ9cHg7IGJvdHRvbTogMDsgd2lkdGg6IGNhbGMoMTAwJSAtICR7bGVmdFNwYWNlICsgcmlnaHRTcGFjZX1weCk7IGxlZnQ6ICR7bGVmdFNwYWNlfXB4YDtcclxuICAgICAgICAgICAgICAgIGJvdHRvbS5pZCA9IFwiYm90dG9tXCI7XHJcblxyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0b3ApO1xyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsZWZ0KTtcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocmlnaHQpO1xyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChib3R0b20pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwibW9kYWwtY2xvc2VcIikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gTW9kYWwgQ2xvc2VgKTtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgd3JhcHBlciA9IGRvY3VtZW50LmJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcIm1haW4td3JhcHBlclwiKVswXSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICAgICAgICAgIHdyYXBwZXIuc3R5bGUucmVtb3ZlUHJvcGVydHkoXCJvdmVyZmxvd1wiKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCB0b3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInRvcFwiKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGxlZnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImxlZnRcIik7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByaWdodCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmlnaHRcIik7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBib3R0b20gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImJvdHRvbVwiKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodG9wKSBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRvcCk7XHJcbiAgICAgICAgICAgICAgICBpZiAobGVmdCkgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsZWZ0KTtcclxuICAgICAgICAgICAgICAgIGlmIChyaWdodCkgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChyaWdodCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoYm90dG9tKSBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGJvdHRvbSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpZiAodGhpcy5FbWJlZGRlZClcclxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5zZXRQcm9wZXJ0eShcIm92ZXJmbG93LXlcIiwgXCJhdXRvXCIsIFwiaW1wb3J0YW50XCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgb25OYXZpZ2F0ZUJhY2soKSB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKGhpc3Rvcnk/LnN0YXRlPy5fcHVzaGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3JlbG9hZEFsbG93ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5wdXNoZWRIaXN0b3JpZXMucG9wKCk7XHJcbiAgICAgICAgICAgIGhpc3RvcnkuYmFjaygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVwbGFjZVN0YXRlKGJhc2VQYXRoOiBzdHJpbmcsIHVybDogc3RyaW5nKSB7XHJcbiAgICAgICAgLy8gRXNlbXBpbyBiYXNlUGF0aDogcGFnZXNcclxuICAgICAgICAvLyBFc2VtcGlvIHVybDogcGFydGllcy9sZWFkc19zZWFyY2hcclxuXHJcbiAgICAgICAgLy8gTm9ybWFsaXp6YXppb25lIHNlbnphIHNsYXNoIHByaW1hIG8gZG9wb1xyXG4gICAgICAgIGJhc2VQYXRoID0gYmFzZVBhdGguZW5kc1dpdGgoXCIvXCIpID8gYmFzZVBhdGguc3Vic3RyaW5nKDAsIGJhc2VQYXRoLmxlbmd0aCAtMikgOiBiYXNlUGF0aDtcclxuICAgICAgICB1cmwgPSB1cmwuc3RhcnRzV2l0aChcIi9cIikgPyB1cmwuc3Vic3RyaW5nKDEpIDogdXJsO1xyXG5cclxuICAgICAgICB0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZShgJHtiYXNlUGF0aH0vJHt1cmx9YCk7XHJcbiAgICAgICAgdGhpcy5NYWluV2luZG93LnBvc3RNZXNzYWdlKHsgdHlwZTogXCJyZXBsYWNlLXN0YXRlXCIsIHVybDogYHBhZ2VzL2VtYmVkLyR7dGhpcy5FbWJlZGRlZE1vZHVsZX0vJHt1cmx9YCB9LCBcIipcIik7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlZnJlc2hCb3VuZGFyaWVzT25NZW51Q29sbGFwc2UoKSB7XHJcbiAgICAgICAgY29uc3Qgd3JhcHBlciA9IGRvY3VtZW50LmJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcIm1haW4td3JhcHBlclwiKVswXSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBsZXQgd3JhcHBlclN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHdyYXBwZXIpO1xyXG4gICAgICAgIGNvbnN0IHdyYXBwZXJQYWRkaW5nTGVmdCA9IHBhcnNlSW50KHdyYXBwZXJTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZShcInBhZGRpbmctbGVmdFwiKSk7XHJcbiAgICAgICAgdmFyIGxlZnRTcGFjZTogbnVtYmVyID0gMjMwICsgd3JhcHBlclBhZGRpbmdMZWZ0O1xyXG5cclxuICAgICAgICBjb25zdCBsZWZ0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJsZWZ0XCIpO1xyXG4gICAgICAgIGNvbnN0IHRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidG9wXCIpO1xyXG5cclxuICAgICAgICBpZiAodG9wKSB7XHJcbiAgICAgICAgICAgIHRvcC5zdHlsZS5zZXRQcm9wZXJ0eShcImxlZnRcIiwgKGxlZnRTcGFjZSkgKyBcInB4XCIpO1xyXG4gICAgICAgICAgICB0b3Auc3R5bGUuc2V0UHJvcGVydHkoXCJ3aWR0aFwiLCBgY2FsYygxMDAlIC0gJHtsZWZ0U3BhY2V9cHgpYCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAobGVmdClcclxuICAgICAgICAgICAgbGVmdC5zdHlsZS5zZXRQcm9wZXJ0eShcIndpZHRoXCIsIGxlZnRTcGFjZSArIFwicHhcIik7XHJcbiAgICB9XHJcbn0iXX0=
@@ -4,7 +4,7 @@ import * as i1 from '@esfaenza/localizations';
4
4
  import { LocalizationModule } from '@esfaenza/localizations';
5
5
  import { __awaiter } from 'tslib';
6
6
  import { first, filter, take, map } from 'rxjs/operators';
7
- import { of, Subject, filter as filter$1 } from 'rxjs';
7
+ import { of, ReplaySubject, Subject, filter as filter$1 } from 'rxjs';
8
8
  import { ToastrService } from 'ngx-toastr';
9
9
  import swal from 'sweetalert2';
10
10
  import * as i2 from '@angular/router';
@@ -1066,6 +1066,7 @@ class AppEmbeddingExtensions {
1066
1066
  this.router = router;
1067
1067
  this.location = location;
1068
1068
  this.sidebarWidth = 230;
1069
+ this.EmbeddingSource = new ReplaySubject();
1069
1070
  this.Embedded = false;
1070
1071
  this.EmbeddingLevel = 0;
1071
1072
  this.MessageObserver = new Subject();
@@ -1121,8 +1122,11 @@ class AppEmbeddingExtensions {
1121
1122
  return `${JSON.parse(JSON.stringify(event === null || event === void 0 ? void 0 : event.data))}`;
1122
1123
  }
1123
1124
  configureEmbeddability() {
1125
+ if (this.Embedded) {
1126
+ this.MainWindow.postMessage({ type: "whois" }, "*");
1127
+ }
1124
1128
  window.onmessage = (event) => {
1125
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15;
1129
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19;
1126
1130
  // Ignoro i miei messaggi dato che mi interessano solo quelli degli altri iframe
1127
1131
  if (event.source == window && ((_a = event === null || event === void 0 ? void 0 : event.data) === null || _a === void 0 ? void 0 : _a.type) != "modal-open")
1128
1132
  return;
@@ -1152,24 +1156,32 @@ class AppEmbeddingExtensions {
1152
1156
  break;
1153
1157
  }
1154
1158
  }
1155
- else if (((_k = event === null || event === void 0 ? void 0 : event.data) === null || _k === void 0 ? void 0 : _k.type) == "replace-state") {
1156
- console.log(`Window message - replace-state -> Url: ${(_l = event === null || event === void 0 ? void 0 : event.data) === null || _l === void 0 ? void 0 : _l.url}`);
1157
- this.location.replaceState((_m = event === null || event === void 0 ? void 0 : event.data) === null || _m === void 0 ? void 0 : _m.url);
1159
+ else if (((_k = event === null || event === void 0 ? void 0 : event.data) === null || _k === void 0 ? void 0 : _k.type) == "whois") {
1160
+ console.log(`Window message - Whois?`);
1161
+ sourceWindow.postMessage({ type: "itsme", module: myconfig.AppData.ModuleId }, "*");
1162
+ }
1163
+ else if (((_l = event === null || event === void 0 ? void 0 : event.data) === null || _l === void 0 ? void 0 : _l.type) == "itsme") {
1164
+ console.log(`Window message - It'sme -> ` + ((_m = event === null || event === void 0 ? void 0 : event.data) === null || _m === void 0 ? void 0 : _m.module));
1165
+ this.EmbeddingSource.next((_o = event === null || event === void 0 ? void 0 : event.data) === null || _o === void 0 ? void 0 : _o.module);
1166
+ }
1167
+ else if (((_p = event === null || event === void 0 ? void 0 : event.data) === null || _p === void 0 ? void 0 : _p.type) == "replace-state") {
1168
+ console.log(`Window message - replace-state -> Url: ${(_q = event === null || event === void 0 ? void 0 : event.data) === null || _q === void 0 ? void 0 : _q.url}`);
1169
+ this.location.replaceState((_r = event === null || event === void 0 ? void 0 : event.data) === null || _r === void 0 ? void 0 : _r.url);
1158
1170
  }
1159
- else if (((_o = event === null || event === void 0 ? void 0 : event.data) === null || _o === void 0 ? void 0 : _o.type) == "confirm") {
1160
- console.log(`Window message - confirm -> Level: ${(_p = event === null || event === void 0 ? void 0 : event.data) === null || _p === void 0 ? void 0 : _p.level}, Message: ${(_q = event === null || event === void 0 ? void 0 : event.data) === null || _q === void 0 ? void 0 : _q.text}, Title: ${(_r = event === null || event === void 0 ? void 0 : event.data) === null || _r === void 0 ? void 0 : _r.title}, ID: ${(_s = event === null || event === void 0 ? void 0 : event.data) === null || _s === void 0 ? void 0 : _s.guid}`);
1171
+ else if (((_s = event === null || event === void 0 ? void 0 : event.data) === null || _s === void 0 ? void 0 : _s.type) == "confirm") {
1172
+ console.log(`Window message - confirm -> Level: ${(_t = event === null || event === void 0 ? void 0 : event.data) === null || _t === void 0 ? void 0 : _t.level}, Message: ${(_u = event === null || event === void 0 ? void 0 : event.data) === null || _u === void 0 ? void 0 : _u.text}, Title: ${(_v = event === null || event === void 0 ? void 0 : event.data) === null || _v === void 0 ? void 0 : _v.title}, ID: ${(_w = event === null || event === void 0 ? void 0 : event.data) === null || _w === void 0 ? void 0 : _w.guid}`);
1161
1173
  var sourceWindow = event.source;
1162
- var baseResponse = { type: "confirm-response", guid: (_t = event === null || event === void 0 ? void 0 : event.data) === null || _t === void 0 ? void 0 : _t.guid };
1163
- switch ((_u = event === null || event === void 0 ? void 0 : event.data) === null || _u === void 0 ? void 0 : _u.level) {
1174
+ var baseResponse = { type: "confirm-response", guid: (_x = event === null || event === void 0 ? void 0 : event.data) === null || _x === void 0 ? void 0 : _x.guid };
1175
+ switch ((_y = event === null || event === void 0 ? void 0 : event.data) === null || _y === void 0 ? void 0 : _y.level) {
1164
1176
  case "success":
1165
- this.msgService.simpleSuccessWithChoice((_v = event === null || event === void 0 ? void 0 : event.data) === null || _v === void 0 ? void 0 : _v.title, (_w = event === null || event === void 0 ? void 0 : event.data) === null || _w === void 0 ? void 0 : _w.text, () => {
1177
+ this.msgService.simpleSuccessWithChoice((_z = event === null || event === void 0 ? void 0 : event.data) === null || _z === void 0 ? void 0 : _z.title, (_0 = event === null || event === void 0 ? void 0 : event.data) === null || _0 === void 0 ? void 0 : _0.text, () => {
1166
1178
  sourceWindow.postMessage(Object.assign({ result: true }, baseResponse), "*");
1167
1179
  }, () => {
1168
1180
  sourceWindow.postMessage(Object.assign({ result: false }, baseResponse), "*");
1169
1181
  });
1170
1182
  break;
1171
1183
  case "warning":
1172
- this.msgService.simpleWarningWithChoice((_x = event === null || event === void 0 ? void 0 : event.data) === null || _x === void 0 ? void 0 : _x.title, (_y = event === null || event === void 0 ? void 0 : event.data) === null || _y === void 0 ? void 0 : _y.text, () => {
1184
+ this.msgService.simpleWarningWithChoice((_1 = event === null || event === void 0 ? void 0 : event.data) === null || _1 === void 0 ? void 0 : _1.title, (_2 = event === null || event === void 0 ? void 0 : event.data) === null || _2 === void 0 ? void 0 : _2.text, () => {
1173
1185
  sourceWindow.postMessage(Object.assign({ result: true }, baseResponse), "*");
1174
1186
  }, () => {
1175
1187
  sourceWindow.postMessage(Object.assign({ result: false }, baseResponse), "*");
@@ -1177,18 +1189,18 @@ class AppEmbeddingExtensions {
1177
1189
  break;
1178
1190
  }
1179
1191
  }
1180
- else if (((_z = event === null || event === void 0 ? void 0 : event.data) === null || _z === void 0 ? void 0 : _z.type) == "navigate") {
1181
- console.log(`Window message - navigate -> ${(_0 = event === null || event === void 0 ? void 0 : event.data) === null || _0 === void 0 ? void 0 : _0.url}`);
1182
- var newTab = (_1 = event === null || event === void 0 ? void 0 : event.data) === null || _1 === void 0 ? void 0 : _1.newTab;
1183
- var replaceState = (_2 = event === null || event === void 0 ? void 0 : event.data) === null || _2 === void 0 ? void 0 : _2.replaceState;
1184
- var current = (_3 = event === null || event === void 0 ? void 0 : event.data) === null || _3 === void 0 ? void 0 : _3.current;
1192
+ else if (((_3 = event === null || event === void 0 ? void 0 : event.data) === null || _3 === void 0 ? void 0 : _3.type) == "navigate") {
1193
+ console.log(`Window message - navigate -> ${(_4 = event === null || event === void 0 ? void 0 : event.data) === null || _4 === void 0 ? void 0 : _4.url}`);
1194
+ var newTab = (_5 = event === null || event === void 0 ? void 0 : event.data) === null || _5 === void 0 ? void 0 : _5.newTab;
1195
+ var replaceState = (_6 = event === null || event === void 0 ? void 0 : event.data) === null || _6 === void 0 ? void 0 : _6.replaceState;
1196
+ var current = (_7 = event === null || event === void 0 ? void 0 : event.data) === null || _7 === void 0 ? void 0 : _7.current;
1185
1197
  // Controllo se il router sta seguendo la chiamata attuale. Escludo i query params che sono gli unici che possono essere seccati dai replaceState
1186
1198
  // e che potrebbero fare del casino
1187
1199
  if (!window.location.href.includes(this.router.url.split("?")[0])) {
1188
1200
  console.warn("Doppia chiamata di navigazione, ignoro il secondo evento scoordinato dal router");
1189
1201
  return;
1190
1202
  }
1191
- let newRelativeUrl = this.router.createUrlTree([(_4 = event === null || event === void 0 ? void 0 : event.data) === null || _4 === void 0 ? void 0 : _4.url]);
1203
+ let newRelativeUrl = this.router.createUrlTree([(_8 = event === null || event === void 0 ? void 0 : event.data) === null || _8 === void 0 ? void 0 : _8.url]);
1192
1204
  let baseUrl = window.location.href.replace(this.router.url.replace("?ignoreStorage=true", ''), '');
1193
1205
  let newUrl = baseUrl + decodeURIComponent(newRelativeUrl.toString());
1194
1206
  if (replaceState) {
@@ -1198,24 +1210,24 @@ class AppEmbeddingExtensions {
1198
1210
  else if (newTab)
1199
1211
  window.open(newUrl, '_blank');
1200
1212
  }
1201
- else if (((_5 = event === null || event === void 0 ? void 0 : event.data) === null || _5 === void 0 ? void 0 : _5.type) == "navigate-back") {
1202
- console.log(`Window message - navigate-back -> ${(_6 = event === null || event === void 0 ? void 0 : event.data) === null || _6 === void 0 ? void 0 : _6.url}`);
1213
+ else if (((_9 = event === null || event === void 0 ? void 0 : event.data) === null || _9 === void 0 ? void 0 : _9.type) == "navigate-back") {
1214
+ console.log(`Window message - navigate-back -> ${(_10 = event === null || event === void 0 ? void 0 : event.data) === null || _10 === void 0 ? void 0 : _10.url}`);
1203
1215
  this.onNavigateBack();
1204
1216
  }
1205
- else if (((_7 = event === null || event === void 0 ? void 0 : event.data) === null || _7 === void 0 ? void 0 : _7.type) == "redirect") {
1206
- console.log(`Window message - redirect -> ${(_8 = event === null || event === void 0 ? void 0 : event.data) === null || _8 === void 0 ? void 0 : _8.url}`);
1207
- window.location.href = (_9 = event === null || event === void 0 ? void 0 : event.data) === null || _9 === void 0 ? void 0 : _9.url;
1217
+ else if (((_11 = event === null || event === void 0 ? void 0 : event.data) === null || _11 === void 0 ? void 0 : _11.type) == "redirect") {
1218
+ console.log(`Window message - redirect -> ${(_12 = event === null || event === void 0 ? void 0 : event.data) === null || _12 === void 0 ? void 0 : _12.url}`);
1219
+ window.location.href = (_13 = event === null || event === void 0 ? void 0 : event.data) === null || _13 === void 0 ? void 0 : _13.url;
1208
1220
  }
1209
- else if (((_10 = event === null || event === void 0 ? void 0 : event.data) === null || _10 === void 0 ? void 0 : _10.type) == "navigation") {
1210
- console.log(`Window message - Navigation -> ${((_11 = event === null || event === void 0 ? void 0 : event.data) === null || _11 === void 0 ? void 0 : _11.internalNavigation) ? "[internal]" : ""} ${(_12 = event === null || event === void 0 ? void 0 : event.data) === null || _12 === void 0 ? void 0 : _12.title}`);
1221
+ else if (((_14 = event === null || event === void 0 ? void 0 : event.data) === null || _14 === void 0 ? void 0 : _14.type) == "navigation") {
1222
+ console.log(`Window message - Navigation -> ${((_15 = event === null || event === void 0 ? void 0 : event.data) === null || _15 === void 0 ? void 0 : _15.internalNavigation) ? "[internal]" : ""} ${(_16 = event === null || event === void 0 ? void 0 : event.data) === null || _16 === void 0 ? void 0 : _16.title}`);
1211
1223
  this.MessageObserver.next({ event: "navigation", data: event === null || event === void 0 ? void 0 : event.data });
1212
1224
  }
1213
- else if (((_13 = event === null || event === void 0 ? void 0 : event.data) === null || _13 === void 0 ? void 0 : _13.type) == "modal-open") {
1225
+ else if (((_17 = event === null || event === void 0 ? void 0 : event.data) === null || _17 === void 0 ? void 0 : _17.type) == "modal-open") {
1214
1226
  const wrapper = document.body.getElementsByClassName("main-wrapper")[0];
1215
1227
  let wrapperStyles = window.getComputedStyle(wrapper);
1216
1228
  const wrapperPaddingLeft = parseInt(wrapperStyles.getPropertyValue("padding-left"));
1217
1229
  const wrapperPaddingRight = parseInt(wrapperStyles.getPropertyValue("padding-right"));
1218
- console.log(`Window message - Modal Open -> Backdrop Height: ${(_14 = event === null || event === void 0 ? void 0 : event.data) === null || _14 === void 0 ? void 0 : _14.backdropHeight}`);
1230
+ console.log(`Window message - Modal Open -> Backdrop Height: ${(_18 = event === null || event === void 0 ? void 0 : event.data) === null || _18 === void 0 ? void 0 : _18.backdropHeight}`);
1219
1231
  var bottomLeftover = 7; // Valore fisso... robina che rimane di sotto per un motivo o quell'altro
1220
1232
  var topHeight = 86; // valore fisso, distanza fra il top e l'inizio dell'iframe, non sarà mai diverso
1221
1233
  var rightSpace = wrapperPaddingRight; // valore fisso, distanza fra la fine dell'iframe e il lato sinistro dello schermo, non sarà mai diverso
@@ -1243,7 +1255,7 @@ class AppEmbeddingExtensions {
1243
1255
  document.body.appendChild(right);
1244
1256
  document.body.appendChild(bottom);
1245
1257
  }
1246
- else if (((_15 = event === null || event === void 0 ? void 0 : event.data) === null || _15 === void 0 ? void 0 : _15.type) == "modal-close") {
1258
+ else if (((_19 = event === null || event === void 0 ? void 0 : event.data) === null || _19 === void 0 ? void 0 : _19.type) == "modal-close") {
1247
1259
  console.log(`Window message - Modal Close`);
1248
1260
  let wrapper = document.body.getElementsByClassName("main-wrapper")[0];
1249
1261
  wrapper.style.removeProperty("overflow");