@esfaenza/extensions 15.2.52 → 15.2.53

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.
@@ -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 = "";
16
17
  this.Embedded = false;
17
18
  this.EmbeddingLevel = 0;
18
19
  this.MessageObserver = new Subject();
@@ -25,6 +26,7 @@ export class AppEmbeddingExtensions {
25
26
  this.MainWindow = this.MainWindow.parent;
26
27
  this.EmbeddingLevel++;
27
28
  this.Embedded = true;
29
+ this.EmbeddingSource = this.MainWindow.__esfaenza_module;
28
30
  // Fallback per farlo funzionare forzatamente mentre lo testo
29
31
  this.EmbeddedModule = this.location.path().match(/module=([a-zA-Z_]+)/)?.[1];
30
32
  if (!this.EmbeddedModule)
@@ -246,4 +248,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
246
248
  type: Injectable,
247
249
  args: [{ providedIn: "root" }]
248
250
  }], 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=
251
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5lbWJlZGRpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvc3JjL2xpYi9zZXJ2aWNlcy9leHRlbnNpb25zLmVtYmVkZGluZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTzNDLFlBQVk7QUFDWixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFJdkMscUdBQXFHO0FBRXJHLE1BQU0sT0FBTyxzQkFBc0I7SUFpQi9CLFlBQW9CLFVBQTBCLEVBQVUsTUFBYyxFQUFVLFFBQWtCO1FBQTlFLGVBQVUsR0FBVixVQUFVLENBQWdCO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVU7UUFmM0YsaUJBQVksR0FBVyxHQUFHLENBQUM7UUFFM0Isb0JBQWUsR0FBVyxFQUFFLENBQUM7UUFDN0IsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixtQkFBYyxHQUFXLENBQUMsQ0FBQztRQUczQixvQkFBZSxHQUF1QyxJQUFJLE9BQU8sRUFBNkIsQ0FBQztRQUU5RixtQkFBYyxHQUFZLElBQUksQ0FBQztRQUkvQixvQkFBZSxHQUFzRCxFQUFFLENBQUM7UUEwRHhFLDRCQUF1QixHQUFXLEdBQUcsQ0FBQztRQUN0Qyx5QkFBb0IsR0FBOEIsRUFBRSxDQUFBO1FBeER4RCxJQUFJLENBQUMsVUFBVSxHQUEyQyxNQUFNLENBQUM7UUFDakUsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQzlDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDekMsSUFBSSxDQUFDLGNBQWMsRUFBRSxD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TUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUzQyxJQUFJLEdBQUcsRUFBRTtZQUNMLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ2xELEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxlQUFlLFNBQVMsS0FBSyxDQUFDLENBQUM7U0FDakU7UUFFRCxJQUFJLElBQUk7WUFDSixJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzFELENBQUM7O21IQWxSUSxzQkFBc0I7dUhBQXRCLHNCQUFzQixjQURULE1BQU07MkZBQ25CLHNCQUFzQjtrQkFEbEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5cclxuLy8gU2VydmljZXNcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tIFwiLi9leHRlbnNpb25zLm1lc3NhZ2VzLnNlcnZpY2VcIjtcclxuXHJcbi8vIExpYnJhcmllc1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBmaWx0ZXIgfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuZGVjbGFyZSB2YXIgbXljb25maWc6IHsgQXBwRGF0YTogeyBNb2R1bGVJZDogc3RyaW5nIH07IH07XHJcblxyXG4vKiBDbGFzc2UgY2hlIGNvbnRpZW5lIHR1dHRlIGxlIGluZm9ybWF6aW9uaSBzdWxsJ2VtYmVkZGluZyBpbiB1biB1bmljbyBjb250ZW5pdG9yZSBwZXIgc2VtcGxpY2l0w6AgKi9cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiBcInJvb3RcIn0pXHJcbmV4cG9ydCBjbGFzcyBBcHBFbWJlZGRpbmdFeHRlbnNpb25zIHtcclxuXHJcbiAgICBwdWJsaWMgc2lkZWJhcldpZHRoOiBudW1iZXIgPSAyMzA7XHJcblxyXG4gICAgcHVibGljIEVtYmVkZGluZ1NvdXJjZTogc3RyaW5nID0gXCJcIjtcclxuICAgIHB1YmxpYyBFbWJlZGRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIEVtYmVkZGluZ0xldmVsOiBudW1iZXIgPSAwO1xyXG4gICAgcHVibGljIE1haW5XaW5kb3c6IGFueTtcclxuXHJcbiAgICBwdWJsaWMgTWVzc2FnZU9ic2VydmVyOiBTdWJqZWN0PHsgZXZlbnQ6IGFueSwgZGF0YTogYW55IH0+ID0gbmV3IFN1YmplY3Q8eyBldmVudDogYW55LCBkYXRhOiBhbnkgfT4oKTtcclxuXHJcbiAgICBwcml2YXRlIF9yZWxvYWRBbGxvd2VkOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICBwdWJsaWMgRW1iZWRkZWRNb2R1bGU6IHN0cmluZztcclxuXHJcbiAgICBwcml2YXRlIHB1c2hlZEhpc3RvcmllczogeyBfcHVzaGVkOiBib29sZWFuLCB1cmw6IHN0cmluZywgZnJvbTogc3RyaW5nIH1bXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgbXNnU2VydmljZTogTWVzc2FnZVNlcnZpY2UsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5NYWluV2luZG93ID0gPHsgcGFyZW50OiBhbnksIHBvc3RNZXNzYWdlOiBGdW5jdGlvbiB9PndpbmRvdztcclxuICAgICAgICB3aGlsZSAodGhpcy5NYWluV2luZG93LnBhcmVudCAhPSB0aGlzLk1haW5XaW5kb3cpIHtcclxuICAgICAgICAgICAgdGhpcy5NYWluV2luZG93ID0gdGhpcy5NYWluV2luZG93LnBhcmVudDtcclxuICAgICAgICAgICAgdGhpcy5FbWJlZGRpbmdMZXZlbCsrO1xyXG4gICAgICAgICAgICB0aGlzLkVtYmVkZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5FbWJlZGRpbmdTb3VyY2UgPSAodGhpcy5NYWluV2luZG93IGFzIGFueSBhcyB7X19lc2ZhZW56YV9tb2R1bGU6IHN0cmluZ30pLl9fZXNmYWVuemFfbW9kdWxlXHJcblxyXG4gICAgICAgICAgICAvLyBGYWxsYmFjayBwZXIgZmFybG8gZnVuemlvbmFyZSBmb3J6YXRhbWVudGUgbWVudHJlIGxvIHRlc3RvXHJcbiAgICAgICAgICAgIHRoaXMuRW1iZWRkZWRNb2R1bGUgPSB0aGlzLmxvY2F0aW9uLnBhdGgoKS5tYXRjaCgvbW9kdWxlPShbYS16QS1aX10rKS8pPy5bMV07XHJcblxyXG4gICAgICAgICAgICBpZighdGhpcy5FbWJlZGRlZE1vZHVsZSlcclxuICAgICAgICAgICAgICAgIHRoaXMud2FpdEZvck15Q29uZmlnQW5kRm9yY2VFbWJlZGRlZE1vZHVsZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jb25maWd1cmVFbWJlZGRhYmlsaXR5KCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLkVtYmVkZGVkKVxyXG4gICAgICAgICAgICB0aGlzLm1zZ1NlcnZpY2UuY29uZmlndXJlRW1iZWRkYWJpbGl0eSh0aGlzLk1haW5XaW5kb3csIHRoaXMuTWVzc2FnZU9ic2VydmVyKTtcclxuXHJcbiAgICAgICAgdGhpcy5NZXNzYWdlT2JzZXJ2ZXIucGlwZShmaWx0ZXIoZXYgPT4gZXYuZXZlbnQgPT0gXCJtZW51LW5hdmlnYXRpb25cIikpLnN1YnNjcmliZShldmVudCA9PiB7XHJcblxyXG4gICAgICAgICAgICAvLyBNaSBpbnRlcmVzc2Egc29sbyByb2JhIHJlbGF0aXZhIGFsbCdlbWJlZGRpbmdcclxuICAgICAgICAgICAgaWYgKCFldmVudC5kYXRhLnJvdXRlckxpbmsuc3RhcnRzV2l0aChcImVtYmVkXCIpKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgLy8gZW1iL2NybS9wYXJ0aWVzL3BhcnRpZXNfc2VhcmNoP2JsYWJsYSAtLT4gcGFydGllcy9wYXJ0aWVzX3NlYXJjaFxyXG4gICAgICAgICAgICBsZXQgbm9ybWFsaXplZFJlcXVlc3RlZFJvdXRlID0gZXZlbnQuZGF0YS5yb3V0ZXJMaW5rLnNwbGl0KFwiP1wiKVswXS5zcGxpdChcIi9cIikuc2xpY2UoMikuam9pbihcIi9cIik7XHJcbiAgICAgICAgICAgIC8vL3BhZ2VzX2V4dC9wYXJ0aWVzL3BhcnRpZXNfc2VhcmNoP2JsYWJsYSAtLT4gcGFydGllcy9wYXJ0aWVzX3NlYXJjaFxyXG4gICAgICAgICAgICBsZXQgbm9ybWFsaXplZEZpcnN0Um91dGUgPSB0aGlzLnB1c2hlZEhpc3Rvcmllcy5sZW5ndGggPiAwID8gdGhpcy5wdXNoZWRIaXN0b3JpZXNbMF0uZnJvbS5zcGxpdChcIj9cIilbMF0uc3BsaXQoXCIvXCIpLnNsaWNlKDIpLmpvaW4oXCIvXCIpIDogXCJcIjtcclxuICAgICAgICAgICAgLy8gTGEgcm91dGUgc3UgY3VpIHN0byBuYXZpZ2FuZG8gb3JhIMOoIHVndWFsZSBhbGxhIHJvdXRlIGluIGN1aSBsJ2VtYmVkZGluZyDDqCBpbml6aWF0by4gXHJcbiAgICAgICAgICAgIC8vIFNpZ25pZmljYSBjaGUgZGV2byBzaW11bGFyZSBkZWkgYmFjayBmaW5vIGEgY2hlIG5vbiBzb25vIGFycml2YXRvIGFsbCdpbml6aW9cclxuICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWRSZXF1ZXN0ZWRSb3V0ZSA9PSBub3JtYWxpemVkRmlyc3RSb3V0ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wicGFnZXMvXCIgKyBldmVudC5kYXRhLnJvdXRlckxpbmssIHt3YWtldXA6IDF9XSwgeyBxdWVyeVBhcmFtczogZXZlbnQuZGF0YS5xdWVyeVBhcmFtcywgb25TYW1lVXJsTmF2aWdhdGlvbjogXCJyZWxvYWRcIiB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMucHVzaGVkSGlzdG9yaWVzID0gW107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHdhaXRGb3JNeUNvbmZpZ0FuZEZvcmNlRW1iZWRkZWRNb2R1bGUoKSB7XHJcblxyXG4gICAgICAgIC8vIEFzcGV0dG8gZGkgcmljZXZlcmUgaWwgbXljb25maWcgZSBzZXR0byBjb24gbHVpIGwnZW1iZWRkZWRtb2R1bGUuIFF1ZXN0byB2aWVuZSBlc2VndWl0byBzb2xvIHNlIHRoaXMubG9jYXRpb24ucGF0aCgpIHBlciBxdWFsY2hlIG1vdGl2byBub24gY29udGllbmUgaWwgbW9kdWxlXHJcbiAgICAgICAgbGV0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAobXljb25maWc/LkFwcERhdGE/Lk1vZHVsZUlkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkVtYmVkZGVkTW9kdWxlID0gbXljb25maWcuQXBwRGF0YS5Nb2R1bGVJZDtcclxuICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSwgMjUwKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgSXNSZWxvYWRBbGxvd2VkKCkge1xyXG4gICAgICAgIGxldCByZXQgPSB0aGlzLl9yZWxvYWRBbGxvd2VkO1xyXG4gICAgICAgIHRoaXMuX3JlbG9hZEFsbG93ZWQgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBNZXNzYWdlQmFycmllckRlYm91bmNNczogbnVtYmVyID0gMjUwO1xyXG4gICAgcHJpdmF0ZSBPbk1lc3NhZ2VDYWxsQmFycmllcjogeyBbaWQ6IHN0cmluZ106IGJvb2xlYW4gfSA9IHt9XHJcbiAgICBwcml2YXRlIG1lc3NhZ2VIYXNoKGV2ZW50OiBNZXNzYWdlRXZlbnQpIHtcclxuICAgICAgICByZXR1cm4gYCR7SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShldmVudD8uZGF0YSkpfWA7XHJcbiAgICB9XHJcblxyXG4gICAgY29uZmlndXJlRW1iZWRkYWJpbGl0eSgpIHtcclxuICAgICAgICB3aW5kb3cub25tZXNzYWdlID0gKGV2ZW50OiBNZXNzYWdlRXZlbnQpID0+IHtcclxuICAgICAgICAgICAgLy8gSWdub3JvIGkgbWllaSBtZXNzYWdnaSBkYXRvIGNoZSBtaSBpbnRlcmVzc2FubyBzb2xvIHF1ZWxsaSBkZWdsaSBhbHRyaSBpZnJhbWVcclxuICAgICAgICAgICAgaWYgKGV2ZW50LnNvdXJjZSA9PSB3aW5kb3cgJiYgZXZlbnQ/LmRhdGE/LnR5cGUgIT0gXCJtb2RhbC1vcGVuXCIpXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgICAgICAvLyBQb3NzbyBnZXN0aXJlIGxvIHN0ZXNzbyBpZGVudGljbyBtZXNzYWdnaW8gc29sbyAxIHZvbHRhIG9nbmkgTWVzc2FnZUJhcnJpZXJEZWJvdW5jTXNcclxuICAgICAgICAgICAgbGV0IG1lc3NhZ2VIYXNoID0gdGhpcy5tZXNzYWdlSGFzaChldmVudCk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLk9uTWVzc2FnZUNhbGxCYXJyaWVyW21lc3NhZ2VIYXNoXSlcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLk9uTWVzc2FnZUNhbGxCYXJyaWVyW21lc3NhZ2VIYXNoXSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IGRlbGV0ZSB0aGlzLk9uTWVzc2FnZUNhbGxCYXJyaWVyW21lc3NhZ2VIYXNoXSwgdGhpcy5NZXNzYWdlQmFycmllckRlYm91bmNNcyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuTWVzc2FnZU9ic2VydmVyLm5leHQoeyBldmVudDogXCJ3aW5kb3ctbWVzc2FnZVwiLCBkYXRhOiBldmVudD8uZGF0YSB9KTtcclxuXHJcbiAgICAgICAgICAgIGlmIChldmVudD8uZGF0YT8udHlwZSA9PSBcImFsZXJ0XCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBXaW5kb3cgbWVzc2FnZSAtIGFsZXJ0IC0+IExldmVsOiAke2V2ZW50Py5kYXRhPy5sZXZlbH0sIE1lc3NhZ2U6ICR7ZXZlbnQ/LmRhdGE/Lm1zZ31gKTtcclxuXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGV2ZW50Py5kYXRhPy5sZXZlbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJzdWNjZXNzXCI6IHRoaXMubXNnU2VydmljZS5zaW1wbGVTdWNjZXNzKGV2ZW50Py5kYXRhPy5tc2cpOyBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwid2FybmluZ1wiOiB0aGlzLm1zZ1NlcnZpY2Uuc2ltcGxlV2FybmluZyhldmVudD8uZGF0YT8ubXNnKTsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImVycm9yXCI6IHRoaXMubXNnU2VydmljZS5zaW1wbGVFcnJvcihldmVudD8uZGF0YT8ubXNnKTsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImluZm9cIjogdGhpcy5tc2dTZXJ2aWNlLnNpbXBsZUluZm8oZXZlbnQ/LmRhdGE/Lm1zZyk7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwicmVwbGFjZS1zdGF0ZVwiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgV2luZG93IG1lc3NhZ2UgLSByZXBsYWNlLXN0YXRlIC0+IFVybDogJHtldmVudD8uZGF0YT8udXJsfWApO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMubG9jYXRpb24ucmVwbGFjZVN0YXRlKGV2ZW50Py5kYXRhPy51cmwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwiY29uZmlybVwiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgV2luZG93IG1lc3NhZ2UgLSBjb25maXJtIC0+IExldmVsOiAke2V2ZW50Py5kYXRhPy5sZXZlbH0sIE1lc3NhZ2U6ICR7ZXZlbnQ/LmRhdGE/LnRleHR9LCBUaXRsZTogJHtldmVudD8uZGF0YT8udGl0bGV9LCBJRDogJHtldmVudD8uZGF0YT8uZ3VpZH1gKTtcclxuXHJcbiAgICAgICAgICAgICAgICB2YXIgc291cmNlV2luZG93ID0gKGV2ZW50LnNvdXJjZSBhcyBXaW5kb3cpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGJhc2VSZXNwb25zZSA9IHsgdHlwZTogXCJjb25maXJtLXJlc3BvbnNlXCIsIGd1aWQ6IGV2ZW50Py5kYXRhPy5ndWlkIH07XHJcblxyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChldmVudD8uZGF0YT8ubGV2ZWwpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwic3VjY2Vzc1wiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1zZ1NlcnZpY2Uuc2ltcGxlU3VjY2Vzc1dpdGhDaG9pY2UoZXZlbnQ/LmRhdGE/LnRpdGxlLCBldmVudD8uZGF0YT8udGV4dCwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlV2luZG93LnBvc3RNZXNzYWdlKHsgcmVzdWx0OiB0cnVlLCAuLi5iYXNlUmVzcG9uc2UgfSwgXCIqXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVdpbmRvdy5wb3N0TWVzc2FnZSh7IHJlc3VsdDogZmFsc2UsIC4uLmJhc2VSZXNwb25zZSB9LCBcIipcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJ3YXJuaW5nXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubXNnU2VydmljZS5zaW1wbGVXYXJuaW5nV2l0aENob2ljZShldmVudD8uZGF0YT8udGl0bGUsIGV2ZW50Py5kYXRhPy50ZXh0LCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VXaW5kb3cucG9zdE1lc3NhZ2UoeyByZXN1bHQ6IHRydWUsIC4uLmJhc2VSZXNwb25zZSB9LCBcIipcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlV2luZG93LnBvc3RNZXNzYWdlKHsgcmVzdWx0OiBmYWxzZSwgLi4uYmFzZVJlc3BvbnNlIH0sIFwiKlwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwibmF2aWdhdGVcIikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gbmF2aWdhdGUgLT4gJHtldmVudD8uZGF0YT8udXJsfWApO1xyXG4gICAgICAgICAgICAgICAgdmFyIG5ld1RhYiA9IGV2ZW50Py5kYXRhPy5uZXdUYWI7XHJcbiAgICAgICAgICAgICAgICB2YXIgcmVwbGFjZVN0YXRlID0gZXZlbnQ/LmRhdGE/LnJlcGxhY2VTdGF0ZVxyXG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnQgPSBldmVudD8uZGF0YT8uY3VycmVudDtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBDb250cm9sbG8gc2UgaWwgcm91dGVyIHN0YSBzZWd1ZW5kbyBsYSBjaGlhbWF0YSBhdHR1YWxlLiBFc2NsdWRvIGkgcXVlcnkgcGFyYW1zIGNoZSBzb25vIGdsaSB1bmljaSBjaGUgcG9zc29ubyBlc3NlcmUgc2VjY2F0aSBkYWkgcmVwbGFjZVN0YXRlXHJcbiAgICAgICAgICAgICAgICAvLyBlIGNoZSBwb3RyZWJiZXJvIGZhcmUgZGVsIGNhc2lub1xyXG4gICAgICAgICAgICAgICAgaWYgKCF3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcyh0aGlzLnJvdXRlci51cmwuc3BsaXQoXCI/XCIpWzBdKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIkRvcHBpYSBjaGlhbWF0YSBkaSBuYXZpZ2F6aW9uZSwgaWdub3JvIGlsIHNlY29uZG8gZXZlbnRvIHNjb29yZGluYXRvIGRhbCByb3V0ZXJcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGxldCBuZXdSZWxhdGl2ZVVybCA9IHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoW2V2ZW50Py5kYXRhPy51cmxdKTtcclxuICAgICAgICAgICAgICAgIGxldCBiYXNlVXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWYucmVwbGFjZSh0aGlzLnJvdXRlci51cmwucmVwbGFjZShcIj9pZ25vcmVTdG9yYWdlPXRydWVcIiAsICcnKSwgJycpO1xyXG4gICAgICAgICAgICAgICAgbGV0IG5ld1VybCA9IGJhc2VVcmwgKyBkZWNvZGVVUklDb21wb25lbnQobmV3UmVsYXRpdmVVcmwudG9TdHJpbmcoKSk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHJlcGxhY2VTdGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHVzaGVkSGlzdG9yaWVzLnB1c2goeyBfcHVzaGVkOiB0cnVlLCB1cmw6IG5ld1VybCwgZnJvbTogY3VycmVudCB9KTtcclxuICAgICAgICAgICAgICAgICAgICBoaXN0b3J5LnB1c2hTdGF0ZSh7IF9wdXNoZWQ6IHRydWUgfSwgXCJcIiwgbmV3VXJsKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5ld1RhYilcclxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cub3BlbihuZXdVcmwsICdfYmxhbmsnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChldmVudD8uZGF0YT8udHlwZSA9PSBcIm5hdmlnYXRlLWJhY2tcIikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gbmF2aWdhdGUtYmFjayAtPiAke2V2ZW50Py5kYXRhPy51cmx9YCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uTmF2aWdhdGVCYWNrKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQ/LmRhdGE/LnR5cGUgPT0gXCJyZWRpcmVjdFwiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgV2luZG93IG1lc3NhZ2UgLSByZWRpcmVjdCAtPiAke2V2ZW50Py5kYXRhPy51cmx9YCk7XHJcblxyXG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBldmVudD8uZGF0YT8udXJsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwibmF2aWdhdGlvblwiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgV2luZG93IG1lc3NhZ2UgLSBOYXZpZ2F0aW9uIC0+ICR7ZXZlbnQ/LmRhdGE/LmludGVybmFsTmF2aWdhdGlvbiA/IFwiW2ludGVybmFsXVwiIDogXCJcIn0gJHtldmVudD8uZGF0YT8udGl0bGV9YCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5NZXNzYWdlT2JzZXJ2ZXIubmV4dCh7IGV2ZW50OiBcIm5hdmlnYXRpb25cIiwgZGF0YTogZXZlbnQ/LmRhdGEgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQ/LmRhdGE/LnR5cGUgPT0gXCJtb2RhbC1vcGVuXCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHdyYXBwZXIgPSBkb2N1bWVudC5ib2R5LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJtYWluLXdyYXBwZXJcIilbMF0gYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgICAgICAgICBsZXQgd3JhcHBlclN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHdyYXBwZXIpO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgd3JhcHBlclBhZGRpbmdMZWZ0ID0gcGFyc2VJbnQod3JhcHBlclN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKFwicGFkZGluZy1sZWZ0XCIpKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHdyYXBwZXJQYWRkaW5nUmlnaHQgPSBwYXJzZUludCh3cmFwcGVyU3R5bGVzLmdldFByb3BlcnR5VmFsdWUoXCJwYWRkaW5nLXJpZ2h0XCIpKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgV2luZG93IG1lc3NhZ2UgLSBNb2RhbCBPcGVuIC0+IEJhY2tkcm9wIEhlaWdodDogJHtldmVudD8uZGF0YT8uYmFja2Ryb3BIZWlnaHR9YCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdmFyIGJvdHRvbUxlZnRvdmVyOiBudW1iZXIgPSA3OyAvLyBWYWxvcmUgZmlzc28uLi4gcm9iaW5hIGNoZSByaW1hbmUgZGkgc290dG8gcGVyIHVuIG1vdGl2byBvIHF1ZWxsJ2FsdHJvXHJcbiAgICAgICAgICAgICAgICB2YXIgdG9wSGVpZ2h0OiBudW1iZXIgPSA4NjsgLy8gdmFsb3JlIGZpc3NvLCBkaXN0YW56YSBmcmEgaWwgdG9wIGUgbCdpbml6aW8gZGVsbCdpZnJhbWUsIG5vbiBzYXLDoCBtYWkgZGl2ZXJzb1xyXG4gICAgICAgICAgICAgICAgdmFyIHJpZ2h0U3BhY2U6IG51bWJlciA9IHdyYXBwZXJQYWRkaW5nUmlnaHQ7IC8vIHZhbG9yZSBmaXNzbywgZGlzdGFuemEgZnJhIGxhIGZpbmUgZGVsbCdpZnJhbWUgZSBpbCBsYXRvIHNpbmlzdHJvIGRlbGxvIHNjaGVybW8sIG5vbiBzYXLDoCBtYWkgZGl2ZXJzb1xyXG4gICAgICAgICAgICAgICAgdmFyIGxlZnRTcGFjZTogbnVtYmVyID0gdGhpcy5zaWRlYmFyV2lkdGggKyB3cmFwcGVyUGFkZGluZ0xlZnQ7XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IGNvbW1vblN0eWxlcyA9IFwicG9zaXRpb246IGFic29sdXRlOyB6LWluZGV4OiA5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwOyBvcGFjaXR5OiAwLjU7IFwiO1xyXG5cclxuICAgICAgICAgICAgICAgIHdyYXBwZXIuc3R5bGUuc2V0UHJvcGVydHkoXCJvdmVyZmxvd1wiLCBcImhpZGRlblwiLCBcImltcG9ydGFudFwiKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCB0b3AgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4gICAgICAgICAgICAgICAgdG9wLmNsYXNzTmFtZSA9IFwiZW1iZWRkZWQtbW9kYWwtdG9wXCI7XHJcbiAgICAgICAgICAgICAgICB0b3Auc3R5bGUuY3NzVGV4dCA9IGNvbW1vblN0eWxlcyArIGBoZWlnaHQ6ICR7dG9wSGVpZ2h0fXB4OyB0b3A6IDA7IHdpZHRoOiBjYWxjKDEwMCUgLSAke2xlZnRTcGFjZX1weCk7IGxlZnQ6ICR7bGVmdFNwYWNlfXB4YDtcclxuICAgICAgICAgICAgICAgIHRvcC5pZCA9IFwidG9wXCI7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgbGVmdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICAgICAgICAgICAgICBsZWZ0LmNsYXNzTmFtZSA9IFwiZW1iZWRkZWQtbW9kYWwtbGVmdFwiO1xyXG4gICAgICAgICAgICAgICAgbGVmdC5zdHlsZS5jc3NUZXh0ID0gY29tbW9uU3R5bGVzICsgYGhlaWdodDogMTAwJTsgdG9wOiAwOyB3aWR0aDogJHtsZWZ0U3BhY2V9cHg7YDtcclxuICAgICAgICAgICAgICAgIGxlZnQuaWQgPSBcImxlZnRcIjtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCByaWdodCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICAgICAgICAgICAgICByaWdodC5jbGFzc05hbWUgPSBcImVtYmVkZGVkLW1vZGFsLXJpZ2h0XCI7XHJcbiAgICAgICAgICAgICAgICByaWdodC5zdHlsZS5jc3NUZXh0ID0gY29tbW9uU3R5bGVzICsgYGhlaWdodDogY2FsYygxMDAlIC0gJHt0b3BIZWlnaHR9cHgpOyB0b3A6ICR7dG9wSGVpZ2h0fXB4OyByaWdodDogMDsgd2lkdGg6ICR7cmlnaHRTcGFjZX1weDtgO1xyXG4gICAgICAgICAgICAgICAgcmlnaHQuaWQgPSBcInJpZ2h0XCI7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgYm90dG9tID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgICAgICAgICAgICAgIGJvdHRvbS5jbGFzc05hbWUgPSBcImVtYmVkZGVkLW1vZGFsLWJvdHRvbVwiO1xyXG4gICAgICAgICAgICAgICAgYm90dG9tLnN0eWxlLmNzc1RleHQgPSBjb21tb25TdHlsZXMgKyBgaGVpZ2h0OiAke2JvdHRvbUxlZnRvdmVyfXB4OyBib3R0b206IDA7IHdpZHRoOiBjYWxjKDEwMCUgLSAke2xlZnRTcGFjZSArIHJpZ2h0U3BhY2V9cHgpOyBsZWZ0OiAke2xlZnRTcGFjZX1weGA7XHJcbiAgICAgICAgICAgICAgICBib3R0b20uaWQgPSBcImJvdHRvbVwiO1xyXG5cclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodG9wKTtcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGVmdCk7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHJpZ2h0KTtcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYm90dG9tKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChldmVudD8uZGF0YT8udHlwZSA9PSBcIm1vZGFsLWNsb3NlXCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBXaW5kb3cgbWVzc2FnZSAtIE1vZGFsIENsb3NlYCk7XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IHdyYXBwZXIgPSBkb2N1bWVudC5ib2R5LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJtYWluLXdyYXBwZXJcIilbMF0gYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgICAgICAgICB3cmFwcGVyLnN0eWxlLnJlbW92ZVByb3BlcnR5KFwib3ZlcmZsb3dcIik7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgdG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ0b3BcIik7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsZWZ0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJsZWZ0XCIpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmlnaHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInJpZ2h0XCIpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYm90dG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJib3R0b21cIik7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRvcCkgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0b3ApO1xyXG4gICAgICAgICAgICAgICAgaWYgKGxlZnQpIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGVmdCk7XHJcbiAgICAgICAgICAgICAgICBpZiAocmlnaHQpIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQocmlnaHQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGJvdHRvbSkgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChib3R0b20pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuRW1iZWRkZWQpXHJcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuc2V0UHJvcGVydHkoXCJvdmVyZmxvdy15XCIsIFwiYXV0b1wiLCBcImltcG9ydGFudFwiKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG9uTmF2aWdhdGVCYWNrKCkge1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChoaXN0b3J5Py5zdGF0ZT8uX3B1c2hlZCkge1xyXG4gICAgICAgICAgICB0aGlzLl9yZWxvYWRBbGxvd2VkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucHVzaGVkSGlzdG9yaWVzLnBvcCgpO1xyXG4gICAgICAgICAgICBoaXN0b3J5LmJhY2soKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlcGxhY2VTdGF0ZShiYXNlUGF0aDogc3RyaW5nLCB1cmw6IHN0cmluZykge1xyXG4gICAgICAgIC8vIEVzZW1waW8gYmFzZVBhdGg6IHBhZ2VzXHJcbiAgICAgICAgLy8gRXNlbXBpbyB1cmw6IHBhcnRpZXMvbGVhZHNfc2VhcmNoXHJcblxyXG4gICAgICAgIC8vIE5vcm1hbGl6emF6aW9uZSBzZW56YSBzbGFzaCBwcmltYSBvIGRvcG9cclxuICAgICAgICBiYXNlUGF0aCA9IGJhc2VQYXRoLmVuZHNXaXRoKFwiL1wiKSA/IGJhc2VQYXRoLnN1YnN0cmluZygwLCBiYXNlUGF0aC5sZW5ndGggLTIpIDogYmFzZVBhdGg7XHJcbiAgICAgICAgdXJsID0gdXJsLnN0YXJ0c1dpdGgoXCIvXCIpID8gdXJsLnN1YnN0cmluZygxKSA6IHVybDtcclxuXHJcbiAgICAgICAgdGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUoYCR7YmFzZVBhdGh9LyR7dXJsfWApO1xyXG4gICAgICAgIHRoaXMuTWFpbldpbmRvdy5wb3N0TWVzc2FnZSh7IHR5cGU6IFwicmVwbGFjZS1zdGF0ZVwiLCB1cmw6IGBwYWdlcy9lbWJlZC8ke3RoaXMuRW1iZWRkZWRNb2R1bGV9LyR7dXJsfWAgfSwgXCIqXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZWZyZXNoQm91bmRhcmllc09uTWVudUNvbGxhcHNlKCkge1xyXG4gICAgICAgIGNvbnN0IHdyYXBwZXIgPSBkb2N1bWVudC5ib2R5LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJtYWluLXdyYXBwZXJcIilbMF0gYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgbGV0IHdyYXBwZXJTdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh3cmFwcGVyKTtcclxuICAgICAgICBjb25zdCB3cmFwcGVyUGFkZGluZ0xlZnQgPSBwYXJzZUludCh3cmFwcGVyU3R5bGVzLmdldFByb3BlcnR5VmFsdWUoXCJwYWRkaW5nLWxlZnRcIikpO1xyXG4gICAgICAgIHZhciBsZWZ0U3BhY2U6IG51bWJlciA9IDIzMCArIHdyYXBwZXJQYWRkaW5nTGVmdDtcclxuXHJcbiAgICAgICAgY29uc3QgbGVmdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibGVmdFwiKTtcclxuICAgICAgICBjb25zdCB0b3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInRvcFwiKTtcclxuXHJcbiAgICAgICAgaWYgKHRvcCkge1xyXG4gICAgICAgICAgICB0b3Auc3R5bGUuc2V0UHJvcGVydHkoXCJsZWZ0XCIsIChsZWZ0U3BhY2UpICsgXCJweFwiKTtcclxuICAgICAgICAgICAgdG9wLnN0eWxlLnNldFByb3BlcnR5KFwid2lkdGhcIiwgYGNhbGMoMTAwJSAtICR7bGVmdFNwYWNlfXB4KWApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGxlZnQpXHJcbiAgICAgICAgICAgIGxlZnQuc3R5bGUuc2V0UHJvcGVydHkoXCJ3aWR0aFwiLCBsZWZ0U3BhY2UgKyBcInB4XCIpO1xyXG4gICAgfVxyXG59Il19
@@ -1066,6 +1066,7 @@ class AppEmbeddingExtensions {
1066
1066
  this.router = router;
1067
1067
  this.location = location;
1068
1068
  this.sidebarWidth = 230;
1069
+ this.EmbeddingSource = "";
1069
1070
  this.Embedded = false;
1070
1071
  this.EmbeddingLevel = 0;
1071
1072
  this.MessageObserver = new Subject();
@@ -1078,6 +1079,7 @@ class AppEmbeddingExtensions {
1078
1079
  this.MainWindow = this.MainWindow.parent;
1079
1080
  this.EmbeddingLevel++;
1080
1081
  this.Embedded = true;
1082
+ this.EmbeddingSource = this.MainWindow.__esfaenza_module;
1081
1083
  // Fallback per farlo funzionare forzatamente mentre lo testo
1082
1084
  this.EmbeddedModule = (_a = this.location.path().match(/module=([a-zA-Z_]+)/)) === null || _a === void 0 ? void 0 : _a[1];
1083
1085
  if (!this.EmbeddedModule)