@colijnit/product 257.1.3 → 257.1.5

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.
@@ -21,6 +21,7 @@ export class ProductExternalSourceComponent {
21
21
  this.externalSettings = {};
22
22
  this.token = ""; //= "eyJhbGciOiJSUzI1NiIsImtpZCI6IkYxOThERkVEOEUwQTQ1MzY3M0M1MUE2Rjk1QUVDQzU3RTM0NjM4RkRSUzI1NiIsInR5cCI6ImF0K2p3dCIsIng1dCI6IjhaamY3WTRLUlRaenhScHZsYTdNVi1OR09QMCJ9.eyJuYmYiOjE3MzIxOTkyOTUsImV4cCI6MTczMjIwMjg5NSwiaXNzIjoiaHR0cHM6Ly9ibXNpZGVudGl0eS1hY2NlcHRhbmNlLmF6dXJld2Vic2l0ZXMubmV0IiwiYXVkIjpbImNhdGFsb2dxdWVyeWFwaSIsImNvbmZpZ3VyYXRvcmFwaSIsInByb2R1Y3R2YXJpYW50Y29tbWFuZGFwaSIsInByb2R1Y3R2YXJpYW50cXVlcnlhcGkiXSwiY2xpZW50X2lkIjoiaW1wZXJzb25hdGlvbi5jbGllbnQiLCJzdWIiOiIwOTMwZDI4Mi05NGU4LTQ5MGEtOGI2NC1mYTk1YmIyYzE1ODIiLCJhdXRoX3RpbWUiOjE3MzIxOTkyOTUsImlkcCI6ImxvY2FsIiwiZW52aXJvbm1lbnQiOiJNU0wiLCJzZWxsZXIiOiJTRTAwMDA5NiIsInNlbGxlcmd1aWQiOiIxMDk1MWJjNS1hZmMzLTQ1MGEtNmVkMS0wOGQ4NDNlNmE5OTQiLCJwZXJtaXNzaW9uIjpbInNhbGVzLmV4cG9ydHRlbXBsYXRlcy5yZWFkIiwiZG9jdW1lbnRsaWJyYXJ5LnRhZy5yZWFkIiwiZG9jdW1lbnRsaWJyYXJ5LmRvY3VtZW50LnJlYWQiLCJkb2N1bWVudGxpYnJhcnkudGFnZ3JvdXAucmVhZCIsInNhbGVzLm9yZGVyLndyaXRlIiwic2FsZXMuY3VzdG9tZXIucmVhZCIsInNhbGVzLm9yZGVyLmRlbGl2ZXJ5YWRkcmVzcy53cml0ZSIsInNlcnZpY2UucmVxdWVzdC5yZWFkIiwiY2F0YWxvZy50YWcucmVhZCIsInNhbGVzLm9yZGVyLnJlYWQiLCJzYWxlcy5jdXN0b21lci53cml0ZSIsInJlcXVlc3Rmb3JxdW90ZS53cml0ZSIsInNhbGVzLm9yZGVyLmJvb2siLCJyZXF1ZXN0Zm9ycXVvdGUucmVhZCIsInNhbGVzLmxlYWQucmVhZCIsInB1cmNoYXNlLm9yZGVyLnJlYWQiLCJzYWxlcy5xdW90ZS5yZWFkIiwic2FsZXMucXVvdGUud3JpdGUiLCJjYXRhbG9nLml0ZW0ucmVhZCIsInNhbGVzLmxlYWQud3JpdGUiLCJzZXJ2aWNlLnJlcXVlc3Quc3VibWl0Iiwic2FsZXMub3JkZXIuZGVsaXZlcnlhZGRyZXNzLnJlYWQiLCJwdXJjaGFzZS5vcmRlci53cml0ZSIsInB1cmNoYXNlLm9yZGVyLnByaWNlcy53cml0ZSIsInB1cmNoYXNlLm9yZGVyLnByaWNlcy5yZWFkIiwic2VydmljZS5yZXF1ZXN0LndyaXRlIiwiY2F0YWxvZy5jYXRhbG9nLnJlYWQiLCJjYXRhbG9nLmNhdGFsb2cud3JpdGUiLCJjYXRhbG9nLmN1cnJlbmN5LnJlYWQiLCJjYXRhbG9nLmN1cnJlbmN5LndyaXRlIiwiY2F0YWxvZy5pdGVtLndyaXRlIiwiY2F0YWxvZy5sb2NhbGl6YXRpb24ucmVhZCIsImNhdGFsb2cubG9jYWxpemF0aW9uLndyaXRlIiwiY2F0YWxvZy5wcm9kdWN0LnJlYWQiLCJjYXRhbG9nLnByb2R1Y3Qud3JpdGUiLCJjYXRhbG9nLnByb2R1Y3RzZXR0aW5nLnJlYWQiLCJjYXRhbG9nLnByb2R1Y3RzZXR0aW5nLndyaXRlIiwiY2F0YWxvZy5zZWxsZXIucmVhZCIsImNhdGFsb2cuc2VsbGVyLndyaXRlIiwiY2F0YWxvZy50YWcud3JpdGUiLCJjYXRhbG9nLnVvbS5yZWFkIiwiY2F0YWxvZy51b20ud3JpdGUiLCJjYXRhbG9nLnZhdGNhdGVnb3J5LnJlYWQiLCJjYXRhbG9nLnZhdGNhdGVnb3J5LndyaXRlIiwiY2F0YWxvZy52ZW5kb3IucmVhZCIsImNhdGFsb2cudmVuZG9yLndyaXRlIiwicHVyY2hhc2Uuc2VsbGVyLnJlYWQiLCJwdXJjaGFzZS5zZWxsZXIud3JpdGUiLCJjYXRhbG9nLmFydGljbGUucmVhZCIsImNhdGFsb2cuYXJ0aWNsZS53cml0ZSIsInNhbGVzLnF1b3RlLmxpbmVzLnJlYWQiLCJzYWxlcy5xdW90ZS5saW5lcy53cml0ZSIsInNhbGVzLnNlbGxlci5yZWFkIiwic2FsZXMuc2VsbGVyLndyaXRlIiwiYWNjb3VudGluZy52ZW5kb3JpbnZvaWNlLnJlYWQiLCJpZGVudGl0eS51c2VyLnJlYWQiLCJpZGVudGl0eS51c2VyLndyaXRlIiwiaWRlbnRpdHkucm9sZS5yZWFkIiwic2VsbGVyLnByb2R1Y3RwcmljZS5zZXR0aW5ncy5yZWFkIiwic2VsbGVyLnByb2R1Y3RwcmljZS5zZXR0aW5ncy53cml0ZSIsImNvbmZpZ3VyYXRvci5wdXJjaGFzZXByaWNlLnJlYWQiLCJzdG9jay5mYWJyaWMucmVhZCJdLCJuYW1lIjoiUm9iaW4iLCJmYW1pbHlfbmFtZSI6ImRlIFdpbnRlciAoQ29saWpuLUlUKSIsInJvbGUiOlsic2VsbGVyIiwiZGVhbGVyX21hbmFnZXIiXSwiaWF0IjoxNzMyMTk5Mjk1LCJzY29wZSI6WyJjYXRhbG9ncXVlcnlhcGkiLCJjb25maWd1cmF0b3JhcGkiLCJwcm9kdWN0dmFyaWFudGNvbW1hbmRhcGkiLCJwcm9kdWN0dmFyaWFudHF1ZXJ5YXBpIl0sImFtciI6WyJpbXBlcnNvbmF0aW9uIl19.rbguVPnkXXDzsM6QKgXulhrF41jIjCuGDV13ig1GC8MewLCJ7wA038OSwT26sx2mCexjvuGYt45YScfPwfTkDy3ErPmHRods64X1dJWZnf-23NTP2iI32K_1vMZH5GOGbMzuFtbKAFQv4hgFAxoyWqFVWyJvuOtQcWyZStROyPHwjAnpnj-x1cVQpOhbO-kQUFvy_VUrPpF3aYVCcO2cFirQTXR6kxSGcYGGcsPY-_eiAd93UdG2EM6xLAocDLaFV72CQI6XEs0WQG1f4SqvH52v3OTkgWBLgYV35gpyIe0-2nazGL0R8pTNuDqrOb7OGmuTRMoTIiRi67-wTxx8cQ";
23
23
  this.variant = "";
24
+ this.urlParams = [];
24
25
  this._subs = [];
25
26
  }
26
27
  set externalSource(value) {
@@ -32,10 +33,12 @@ export class ProductExternalSourceComponent {
32
33
  return this._externalSource;
33
34
  }
34
35
  set externalCatalogStartupInfo(value) {
35
- this._externalCatalogStartupInfo = value;
36
- this.externalSource = value.externalSource;
37
- this.loaded = false;
38
- this._prepareExternalSource();
36
+ if (value) {
37
+ this._externalCatalogStartupInfo = value;
38
+ this.externalSource = value.externalSource;
39
+ this.loaded = false;
40
+ this._prepareExternalSource();
41
+ }
39
42
  }
40
43
  get externalCatalogStartupInfo() {
41
44
  return this._externalCatalogStartupInfo;
@@ -109,6 +112,7 @@ export class ProductExternalSourceComponent {
109
112
  this.token = this.externalCatalogStartupInfo.token;
110
113
  this.sku = this.externalCatalogStartupInfo.externalGoodId;
111
114
  this.variant = this.externalCatalogStartupInfo.flattenedGoodId;
115
+ this.urlParams = this.externalCatalogStartupInfo.externalSource.parameters;
112
116
  this.switchToConfigurator();
113
117
  this.loaded = true;
114
118
  }
@@ -155,6 +159,7 @@ ProductExternalSourceComponent.decorators = [
155
159
  [sku]="sku"
156
160
  [variant]="variant"
157
161
  [token]="token"
162
+ [urlParams]="urlParams"
158
163
  (configuratorFinished)="handleConfigurationFinished($event)"></co-product-hd>
159
164
  </ng-container>
160
165
  </ng-container>
@@ -184,4 +189,4 @@ ProductExternalSourceComponent.propDecorators = {
184
189
  configuratorFinished: [{ type: Output }],
185
190
  showClass: [{ type: HostBinding, args: ['class.co-product-external-source',] }]
186
191
  };
187
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1leHRlcm5hbC1zb3VyY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3Byb2R1Y3QtZXh0ZXJuYWwtc291cmNlL3Byb2R1Y3QtZXh0ZXJuYWwtc291cmNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBQyxZQUFZLEVBQWtCLE1BQU0sMkJBQTJCLENBQUM7QUFFeEUsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFFaEYsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFFeEUsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFDLDhCQUE4QixFQUFDLE1BQU0saURBQWlELENBQUM7QUFvQy9GLE1BQU0sT0FBTyw4QkFBOEI7SUFvRXZDLFlBQ1ksVUFBd0IsRUFDeEIsd0JBQWlELEVBQ2pELGdCQUFxQztRQUZyQyxlQUFVLEdBQVYsVUFBVSxDQUFjO1FBQ3hCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBeUI7UUFDakQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFxQjtRQXBDMUMsY0FBUyxHQUFvRCxJQUFJLFlBQVksRUFBcUMsQ0FBQztRQUduSCxlQUFVLEdBQW9ELElBQUksWUFBWSxFQUFxQyxDQUFDO1FBR3BILHFCQUFnQixHQUFvQyxJQUFJLFlBQVksRUFBcUIsQ0FBQztRQUcxRix5QkFBb0IsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQU94RSxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUU1QixXQUFNLEdBQVksS0FBSyxDQUFDO1FBRXhCLHFCQUFnQixHQUFRLEVBQUUsQ0FBQztRQUUzQixVQUFLLEdBQVcsRUFBRSxDQUFDLENBQUEsdTBHQUF1MEc7UUFDMTFHLFlBQU8sR0FBVyxFQUFFLENBQUM7UUFNcEIsVUFBSyxHQUFtQixFQUFFLENBQUM7SUFPbkMsQ0FBQztJQWpFRCxJQUNXLGNBQWMsQ0FBQyxLQUFxQjtRQUMzQyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBVyxjQUFjO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFDVywwQkFBMEIsQ0FBQyxLQUFpQztRQUNyRSxJQUFJLENBQUMsMkJBQTJCLEdBQUcsS0FBSyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQztRQUMzQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBVywwQkFBMEI7UUFDbkMsT0FBTyxJQUFJLENBQUMsMkJBQTJCLENBQUM7SUFDMUMsQ0FBQztJQWtCTSxTQUFTO1FBQ1osT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQTBCRCxRQUFRO1FBQ0osSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQ1gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUF1RSxFQUFFLEVBQUU7WUFDcEgsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7Z0JBQ2hCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztnQkFDckIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUN2QixpQkFBaUIsRUFBRSxJQUFJLENBQUMsaUJBQWlCO2dCQUN6QyxjQUFjLEVBQUUsSUFBSSxDQUFDLGVBQWU7YUFDdkMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLEVBQ0YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDaEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7Z0JBQ2pCLE9BQU8sRUFBRSxJQUFJO2dCQUNiLFFBQVEsRUFBRSxDQUFDO2dCQUNYLGlCQUFpQixFQUFFLElBQUksQ0FBQyxpQkFBaUI7Z0JBQ3pDLGNBQWMsRUFBRSxJQUFJLENBQUMsZUFBZTthQUN2QyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsRUFDRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUNyRyxDQUFBO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTSwyQkFBMkIsQ0FBQyxhQUFxQjtRQUN0RCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFYSxzQkFBc0I7O1lBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUN2QixPQUFPO2FBQ1Y7WUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztZQUM3QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1lBQzNCLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFO2dCQUN0QyxNQUFNLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQzthQUMvQjtpQkFBTyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBQztnQkFDOUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7YUFDN0I7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2FBQ3ZCO1FBQ0wsQ0FBQztLQUFBO0lBRVcsZUFBZTs7WUFDM0IsMkNBQTJDO1lBQzNDLE1BQU0sY0FBYyxHQUFXLE1BQU0sSUFBSSxDQUFDLHdCQUF3QixDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlKLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ25ELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDaEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO2FBQzlDO1lBQ0QsMkVBQTJFO1lBQzNFLGlGQUFpRjtZQUNqRixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFO2dCQUNoRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO2dCQUNoRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO2dCQUM5RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO2FBQy9EO1lBQ0QsMkJBQTJCO1lBQzNCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNyQixDQUFDO0tBQUE7SUFFTyxvQkFBb0I7UUFDMUIsSUFBRyxJQUFJLENBQUMsMEJBQTBCLEVBQUU7WUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsS0FBSyxDQUFDO1lBQ25ELElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGNBQWMsQ0FBQztZQUMxRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxlQUFlLENBQUM7WUFDL0QsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7U0FDcEI7SUFDSCxDQUFDO0lBRU8sY0FBYztRQUNwQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDO1FBQzNDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDaEYsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFFTyxlQUFlO1FBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFFTyxjQUFjO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDekIsQ0FBQzs7O1lBMU1GLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsNEJBQTRCO2dCQUN0QyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBb0JUO2dCQUNELFNBQVMsRUFBRTtvQkFDUCxzQkFBc0I7b0JBQ3RCLDhCQUE4QjtvQkFDOUIsdUJBQXVCO2lCQUMxQjtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN4Qzs7O1lBMUNPLFlBQVk7WUFFWix1QkFBdUI7WUFFdkIsbUJBQW1COzs7a0JBeUN0QixLQUFLO2dDQUdMLEtBQUs7NkJBR0wsS0FBSzt5Q0FXTCxLQUFLO3NCQVlMLEtBQUs7d0JBR0wsTUFBTTt5QkFHTixNQUFNOytCQUdOLE1BQU07bUNBR04sTUFBTTt3QkFHTixXQUFXLFNBQUMsa0NBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7RG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmx9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQge0V4dGVybmFsU291cmNlfSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9leHRlcm5hbC1zb3VyY2UuYm8nO1xyXG5pbXBvcnQge1Byb2R1Y3RDb25uZWN0b3JTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3Byb2R1Y3QtY29ubmVjdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQge0FydGljbGVMaXN0T2JqZWN0fSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWxpc3Qtb2JqZWN0JztcclxuaW1wb3J0IHtQcm9kdWN0RXZlbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3Byb2R1Y3QtZXZlbnQuc2VydmljZSc7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtQcm9kdWN0U2V0dGluZ3NTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3Byb2R1Y3Qtc2V0dGluZ3Muc2VydmljZSc7XHJcbmltcG9ydCB7UHJvZHVjdENvbm5lY3RvckFkYXB0ZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3Byb2R1Y3QtY29ubmVjdG9yLWFkYXB0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7Q2F0YWxvZ0RlZmluaXRpb259IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2NhdGFsb2ctZGVmaW5pdGlvbi5ibyc7XHJcbmltcG9ydCB7RXh0ZXJuYWxTb3VyY2VBcnRpY2xlQWRkSW50ZXJmYWNlfSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9pbnRlcmZhY2UvZXh0ZXJuYWwtc291cmNlLWFydGljbGUtYWRkLmludGVyZmFjZSc7XHJcbmltcG9ydCB7QXJ0aWNsZUxpc3RPYmplY3RFeHRlbmRlZH0gZnJvbSAnQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS1saXN0LW9iamVjdC1leHRlbmRlZC5ibyc7XHJcbmltcG9ydCB7RXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm99IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2V4dGVybmFsLWNhdGFsb2ctc3RhcnR1cC1pbmZvJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdjby1wcm9kdWN0LWV4dGVybmFsLXNvdXJjZScsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkZWRcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dQcm9kdWN0XCI+XHJcbiAgICAgICAgICAgICAgICA8YXBwLXByb2R1Y3QtcGFnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2t1XT1cInNrdVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZXR0aW5nc109XCJleHRlcm5hbFNldHRpbmdzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2V4dGVybmFsU291cmNlXT1cImV4dGVybmFsU291cmNlXCJcclxuICAgICAgICAgICAgICAgID48L2FwcC1wcm9kdWN0LXBhZ2U+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1NvdXJjZVwiPlxyXG4gICAgICAgICAgICAgICAgPGlmcmFtZSB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCIgW3NyY109XCJzYWZlVXJsXCIgZnJhbWVib3JkZXI9XCIwXCIgYWxsb3dmdWxsc2NyZWVuPjwvaWZyYW1lPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dDb25maWd1cmF0b3JcIj5cclxuICAgICAgICAgICAgICA8Y28tcHJvZHVjdC1oZCB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2t1XT1cInNrdVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhcmlhbnRdPVwidmFyaWFudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rva2VuXT1cInRva2VuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uZmlndXJhdG9yRmluaXNoZWQpPVwiaGFuZGxlQ29uZmlndXJhdGlvbkZpbmlzaGVkKCRldmVudClcIj48L2NvLXByb2R1Y3QtaGQ+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgYCxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIFByb2R1Y3RTZXR0aW5nc1NlcnZpY2UsXHJcbiAgICAgICAgUHJvZHVjdENvbm5lY3RvckFkYXB0ZXJTZXJ2aWNlLFxyXG4gICAgICAgIFByb2R1Y3RDb25uZWN0b3JTZXJ2aWNlXHJcbiAgICBdLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvZHVjdEV4dGVybmFsU291cmNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2t1OiBzdHJpbmc7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBjYXRhbG9nRGVmaW5pdGlvbjogQ2F0YWxvZ0RlZmluaXRpb247XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgZXh0ZXJuYWxTb3VyY2UodmFsdWU6IEV4dGVybmFsU291cmNlKSB7XHJcbiAgICAgICAgdGhpcy5fZXh0ZXJuYWxTb3VyY2UgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLmxvYWRlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX3ByZXBhcmVFeHRlcm5hbFNvdXJjZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgZXh0ZXJuYWxTb3VyY2UoKTogRXh0ZXJuYWxTb3VyY2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9leHRlcm5hbFNvdXJjZTtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCBleHRlcm5hbENhdGFsb2dTdGFydHVwSW5mbyh2YWx1ZTogRXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm8pIHtcclxuICAgICAgdGhpcy5fZXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm8gPSB2YWx1ZTtcclxuICAgICAgdGhpcy5leHRlcm5hbFNvdXJjZSA9IHZhbHVlLmV4dGVybmFsU291cmNlO1xyXG4gICAgICB0aGlzLmxvYWRlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLl9wcmVwYXJlRXh0ZXJuYWxTb3VyY2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGV4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvKCk6IEV4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2V4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgb3B0aW9uczoge307XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgYWRkVG9DYXJ0OiBFdmVudEVtaXR0ZXI8RXh0ZXJuYWxTb3VyY2VBcnRpY2xlQWRkSW50ZXJmYWNlPiA9IG5ldyBFdmVudEVtaXR0ZXI8RXh0ZXJuYWxTb3VyY2VBcnRpY2xlQWRkSW50ZXJmYWNlPigpO1xyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGFkZFRvUXVvdGU6IEV2ZW50RW1pdHRlcjxFeHRlcm5hbFNvdXJjZUFydGljbGVBZGRJbnRlcmZhY2U+ID0gbmV3IEV2ZW50RW1pdHRlcjxFeHRlcm5hbFNvdXJjZUFydGljbGVBZGRJbnRlcmZhY2U+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgYWx0ZXJuYXRpdmVDbGljazogRXZlbnRFbWl0dGVyPEFydGljbGVMaXN0T2JqZWN0PiA9IG5ldyBFdmVudEVtaXR0ZXI8QXJ0aWNsZUxpc3RPYmplY3Q+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgY29uZmlndXJhdG9yRmluaXNoZWQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby1wcm9kdWN0LWV4dGVybmFsLXNvdXJjZScpXHJcbiAgICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzaG93UHJvZHVjdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIHNob3dDb25maWd1cmF0b3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBzaG93U291cmNlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgc2FmZVVybDogU2FmZVJlc291cmNlVXJsO1xyXG4gICAgcHVibGljIGxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGV4dGVybmFsVXJsOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgZXh0ZXJuYWxTZXR0aW5nczogYW55ID0ge307XHJcblxyXG4gICAgcHVibGljIHRva2VuOiBzdHJpbmcgPSBcIlwiOy8vPSBcImV5SmhiR2NpT2lKU1V6STFOaUlzSW10cFpDSTZJa1l4T1RoRVJrVkVPRVV3UVRRMU16WTNNME0xTVVFMlJqazFRVVZEUXpVM1JUTTBOak00UmtSU1V6STFOaUlzSW5SNWNDSTZJbUYwSzJwM2RDSXNJbmcxZENJNklqaGFhbVkzV1RSTFVsUmFlbmhTY0hac1lUZE5WaTFPUjA5UU1DSjkuZXlKdVltWWlPakUzTXpJeE9Ua3lPVFVzSW1WNGNDSTZNVGN6TWpJd01qZzVOU3dpYVhOeklqb2lhSFIwY0hNNkx5OWliWE5wWkdWdWRHbDBlUzFoWTJObGNIUmhibU5sTG1GNmRYSmxkMlZpYzJsMFpYTXVibVYwSWl3aVlYVmtJanBiSW1OaGRHRnNiMmR4ZFdWeWVXRndhU0lzSW1OdmJtWnBaM1Z5WVhSdmNtRndhU0lzSW5CeWIyUjFZM1IyWVhKcFlXNTBZMjl0YldGdVpHRndhU0lzSW5CeWIyUjFZM1IyWVhKcFlXNTBjWFZsY25saGNHa2lYU3dpWTJ4cFpXNTBYMmxrSWpvaWFXMXdaWEp6YjI1aGRHbHZiaTVqYkdsbGJuUWlMQ0p6ZFdJaU9pSXdPVE13WkRJNE1pMDVOR1U0TFRRNU1HRXRPR0kyTkMxbVlUazFZbUl5WXpFMU9ESWlMQ0poZFhSb1gzUnBiV1VpT2pFM016SXhPVGt5T1RVc0ltbGtjQ0k2SW14dlkyRnNJaXdpWlc1MmFYSnZibTFsYm5RaU9pSk5VMHdpTENKelpXeHNaWElpT2lKVFJUQXdNREE1TmlJc0luTmxiR3hsY21kMWFXUWlPaUl4TURrMU1XSmpOUzFoWm1NekxUUTFNR0V0Tm1Wa01TMHdPR1E0TkRObE5tRTVPVFFpTENKd1pYSnRhWE56YVc5dUlqcGJJbk5oYkdWekxtVjRjRzl5ZEhSbGJYQnNZWFJsY3k1eVpXRmtJaXdpWkc5amRXMWxiblJzYVdKeVlYSjVMblJoWnk1eVpXRmtJaXdpWkc5amRXMWxiblJzYVdKeVlYSjVMbVJ2WTNWdFpXNTBMbkpsWVdRaUxDSmtiMk4xYldWdWRHeHBZbkpoY25rdWRHRm5aM0p2ZFhBdWNtVmhaQ0lzSW5OaGJHVnpMbTl5WkdWeUxuZHlhWFJsSWl3aWMyRnNaWE11WTNWemRHOXRaWEl1Y21WaFpDSXNJbk5oYkdWekxtOXlaR1Z5TG1SbGJHbDJaWEo1WVdSa2NtVnpjeTUzY21sMFpTSXNJbk5sY25acFkyVXVjbVZ4ZFdWemRDNXlaV0ZrSWl3aVkyRjBZV3h2Wnk1MFlXY3VjbVZoWkNJc0luTmhiR1Z6TG05eVpHVnlMbkpsWVdRaUxDSnpZV3hsY3k1amRYTjBiMjFsY2k1M2NtbDBaU0lzSW5KbGNYVmxjM1JtYjNKeGRXOTBaUzUzY21sMFpTSXNJbk5oYkdWekxtOXlaR1Z5TG1KdmIyc2lMQ0p5WlhGMVpYTjBabTl5Y1hWdmRHVXVjbVZoWkNJc0luTmhiR1Z6TG14bFlXUXVjbVZoWkNJc0luQjFjbU5vWVhObExtOXlaR1Z5TG5KbFlXUWlMQ0p6WVd4bGN5NXhkVzkwWlM1eVpXRmtJaXdpYzJGc1pYTXVjWFZ2ZEdVdWQzSnBkR1VpTENKallYUmhiRzluTG1sMFpXMHVjbVZoWkNJc0luTmhiR1Z6TG14bFlXUXVkM0pwZEdVaUxDSnpaWEoyYVdObExuSmxjWFZsYzNRdWMzVmliV2wwSWl3aWMyRnNaWE11YjNKa1pYSXVaR1ZzYVhabGNubGhaR1J5WlhOekxuSmxZV1FpTENKd2RYSmphR0Z6WlM1dmNtUmxjaTUzY21sMFpTSXNJbkIxY21Ob1lYTmxMbTl5WkdWeUxuQnlhV05sY3k1M2NtbDBaU0lzSW5CMWNtTm9ZWE5sTG05eVpHVnlMbkJ5YVdObGN5NXlaV0ZrSWl3aWMyVnlkbWxqWlM1eVpYRjFaWE4wTG5keWFYUmxJaXdpWTJGMFlXeHZaeTVqWVhSaGJHOW5MbkpsWVdRaUxDSmpZWFJoYkc5bkxtTmhkR0ZzYjJjdWQzSnBkR1VpTENKallYUmhiRzluTG1OMWNuSmxibU41TG5KbFlXUWlMQ0pqWVhSaGJHOW5MbU4xY25KbGJtTjVMbmR5YVhSbElpd2lZMkYwWVd4dlp5NXBkR1Z0TG5keWFYUmxJaXdpWTJGMFlXeHZaeTVzYjJOaGJHbDZZWFJwYjI0dWNtVmhaQ0lzSW1OaGRHRnNiMmN1Ykc5allXeHBlbUYwYVc5dUxuZHlhWFJsSWl3aVkyRjBZV3h2Wnk1d2NtOWtkV04wTG5KbFlXUWlMQ0pqWVhSaGJHOW5MbkJ5YjJSMVkzUXVkM0pwZEdVaUxDSmpZWFJoYkc5bkxuQnliMlIxWTNSelpYUjBhVzVuTG5KbFlXUWlMQ0pqWVhSaGJHOW5MbkJ5YjJSMVkzUnpaWFIwYVc1bkxuZHlhWFJsSWl3aVkyRjBZV3h2Wnk1elpXeHNaWEl1Y21WaFpDSXNJbU5oZEdGc2IyY3VjMlZzYkdWeUxuZHlhWFJsSWl3aVkyRjBZV3h2Wnk1MFlXY3VkM0pwZEdVaUxDSmpZWFJoYkc5bkxuVnZiUzV5WldGa0lpd2lZMkYwWVd4dlp5NTFiMjB1ZDNKcGRHVWlMQ0pqWVhSaGJHOW5MblpoZEdOaGRHVm5iM0o1TG5KbFlXUWlMQ0pqWVhSaGJHOW5MblpoZEdOaGRHVm5iM0o1TG5keWFYUmxJaXdpWTJGMFlXeHZaeTUyWlc1a2IzSXVjbVZoWkNJc0ltTmhkR0ZzYjJjdWRtVnVaRzl5TG5keWFYUmxJaXdpY0hWeVkyaGhjMlV1YzJWc2JHVnlMbkpsWVdRaUxDSndkWEpqYUdGelpTNXpaV3hzWlhJdWQzSnBkR1VpTENKallYUmhiRzluTG1GeWRHbGpiR1V1Y21WaFpDSXNJbU5oZEdGc2IyY3VZWEowYVdOc1pTNTNjbWwwWlNJc0luTmhiR1Z6TG5GMWIzUmxMbXhwYm1WekxuSmxZV1FpTENKellXeGxjeTV4ZFc5MFpTNXNhVzVsY3k1M2NtbDBaU0lzSW5OaGJHVnpMbk5sYkd4bGNpNXlaV0ZrSWl3aWMyRnNaWE11YzJWc2JHVnlMbmR5YVhSbElpd2lZV05qYjNWdWRHbHVaeTUyWlc1a2IzSnBiblp2YVdObExuSmxZV1FpTENKcFpHVnVkR2wwZVM1MWMyVnlMbkpsWVdRaUxDSnBaR1Z1ZEdsMGVTNTFjMlZ5TG5keWFYUmxJaXdpYVdSbGJuUnBkSGt1Y205c1pTNXlaV0ZrSWl3aWMyVnNiR1Z5TG5CeWIyUjFZM1J3Y21salpTNXpaWFIwYVc1bmN5NXlaV0ZrSWl3aWMyVnNiR1Z5TG5CeWIyUjFZM1J3Y21salpTNXpaWFIwYVc1bmN5NTNjbWwwWlNJc0ltTnZibVpwWjNWeVlYUnZjaTV3ZFhKamFHRnpaWEJ5YVdObExuSmxZV1FpTENKemRHOWpheTVtWVdKeWFXTXVjbVZoWkNKZExDSnVZVzFsSWpvaVVtOWlhVzRpTENKbVlXMXBiSGxmYm1GdFpTSTZJbVJsSUZkcGJuUmxjaUFvUTI5c2FXcHVMVWxVS1NJc0luSnZiR1VpT2xzaWMyVnNiR1Z5SWl3aVpHVmhiR1Z5WDIxaGJtRm5aWElpWFN3aWFXRjBJam94TnpNeU1UazVNamsxTENKelkyOXdaU0k2V3lKallYUmhiRzluY1hWbGNubGhjR2tpTENKamIyNW1hV2QxY21GMGIzSmhjR2tpTENKd2NtOWtkV04wZG1GeWFXRnVkR052YlcxaGJtUmhjR2tpTENKd2NtOWtkV04wZG1GeWFXRnVkSEYxWlhKNVlYQnBJbDBzSW1GdGNpSTZXeUpwYlhCbGNuTnZibUYwYVc5dUlsMTkucmJndVZQbmtYWER6c002UUtnWHVsaHJGNDFqSWpDdUdEVjEzaWcxR0M4TWV3TENKN3dBMDM4T1N3VDI2c3gybUNleGp2dUdZdDQ1WVNjZlB3ZlRrRHkzRXJQbUhSb2RzNjRYMWRKV1puZi0yM05UUDJpSTMyS18xdk1aSDVHT0diTXp1RnRiS0FGUXY0aGdGQXhveVdxRlZXeUp2dU90UWNXeVpTdFJPeVBId2pBbnBuai14MWNWUXBPaGJPLWtRVUZ2eV9WVXJQcEYzYVlWQ2NPMmNGaXJRVFhSNmt4U0djWUdHY3NQWS1fZWlBZDkzVWRHMkVNNnhMQW9jRExhRlY3MkNRSTZYRXMwV1FHMWY0U3F2SDUydjNPVGtnV0JMZ1lWMzVncHlJZTAtMm5hekdMMFI4cFROdURxck9iN09HbXVUUk1vVElpUmk2Ny13VHh4OGNRXCI7XHJcbiAgICBwdWJsaWMgdmFyaWFudDogc3RyaW5nID0gXCJcIjtcclxuXHJcblxyXG5cclxuICAgIHByaXZhdGUgX2V4dGVybmFsU291cmNlOiBFeHRlcm5hbFNvdXJjZTtcclxuICAgIHByaXZhdGUgX2V4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvOiBFeHRlcm5hbENhdGFsb2dTdGFydHVwSW5mbztcclxuICAgIHByaXZhdGUgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBfc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICAgICAgcHJpdmF0ZSBfcHJvZHVjdENvbm5lY3RvclNlcnZpY2U6IFByb2R1Y3RDb25uZWN0b3JTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2FwcEV2ZW50U2VydmljZTogUHJvZHVjdEV2ZW50U2VydmljZVxyXG4gICAgKSB7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5fc3Vicy5wdXNoKFxyXG4gICAgICAgICAgICB0aGlzLl9hcHBFdmVudFNlcnZpY2Uub25BZGRUb0NhcnQuc3Vic2NyaWJlKChkYXRhOiB7IGFydGljbGU6IHN0cmluZyB8IEFydGljbGVMaXN0T2JqZWN0RXh0ZW5kZWQsIHF1YW50aXR5OiBudW1iZXIgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRUb0NhcnQubmV4dCh7XHJcbiAgICAgICAgICAgICAgICAgICAgYXJ0aWNsZTogZGF0YS5hcnRpY2xlLFxyXG4gICAgICAgICAgICAgICAgICAgIHF1YW50aXR5OiBkYXRhLnF1YW50aXR5LFxyXG4gICAgICAgICAgICAgICAgICAgIGNhdGFsb2dEZWZpbml0aW9uOiB0aGlzLmNhdGFsb2dEZWZpbml0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIGV4dGVybmFsU291cmNlOiB0aGlzLl9leHRlcm5hbFNvdXJjZVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICB0aGlzLl9hcHBFdmVudFNlcnZpY2Uub25BZGRUb1F1b3RlLnN1YnNjcmliZShqc29uID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkVG9RdW90ZS5uZXh0KHtcclxuICAgICAgICAgICAgICAgICAgICBhcnRpY2xlOiBqc29uLFxyXG4gICAgICAgICAgICAgICAgICAgIHF1YW50aXR5OiAxLFxyXG4gICAgICAgICAgICAgICAgICAgIGNhdGFsb2dEZWZpbml0aW9uOiB0aGlzLmNhdGFsb2dEZWZpbml0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIGV4dGVybmFsU291cmNlOiB0aGlzLl9leHRlcm5hbFNvdXJjZVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICB0aGlzLl9hcHBFdmVudFNlcnZpY2Uub25BbHRlcm5hdGl2ZUNsaWNrLnN1YnNjcmliZShhcnRpY2xlID0+IHRoaXMuYWx0ZXJuYXRpdmVDbGljay5uZXh0KGFydGljbGUpKVxyXG4gICAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLl9zdWJzLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBoYW5kbGVDb25maWd1cmF0aW9uRmluaXNoZWQodmFyaWFudFN0cmluZzogc3RyaW5nKSB7XHJcbiAgICAgIHRoaXMuY29uZmlndXJhdG9yRmluaXNoZWQuZW1pdCh2YXJpYW50U3RyaW5nKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFzeW5jIF9wcmVwYXJlRXh0ZXJuYWxTb3VyY2UoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9leHRlcm5hbFNvdXJjZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZXh0ZXJuYWxVcmwgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgdGhpcy5leHRlcm5hbFNldHRpbmdzID0ge307XHJcbiAgICAgICAgaWYgKHRoaXMuZXh0ZXJuYWxTb3VyY2UudHlwZSA9PT0gJ0NBVEYnKSB7XHJcbiAgICAgICAgICAgYXdhaXQgdGhpcy5fcHJlcGFyZUNhdEZhcm0oKTtcclxuICAgICAgICB9IGVsc2UgIGlmICh0aGlzLmV4dGVybmFsU291cmNlLnR5cGUgPT09ICdIVERMJyl7XHJcbiAgICAgICAgICB0aGlzLl9wcmVwYXJlQ29uZmlndXJhdG9yKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuX3ByZXBhcmVTb3VyY2UoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX3ByZXBhcmVDYXRGYXJtKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgLy8gZ2V0IGJ1bmRsZSBzZXR0aW5ncyBmcm9tIGV4dGVybmFsIHNvdXJjZVxyXG4gICAgY29uc3QgYnVuZGxlU2V0dGluZ3M6IHN0cmluZyA9IGF3YWl0IHRoaXMuX3Byb2R1Y3RDb25uZWN0b3JTZXJ2aWNlLmdldFByb2R1Y3RCdW5kbGVTZXR0aW5ncyh0aGlzLmV4dGVybmFsU291cmNlLnVybCwgcGFyc2VJbnQodGhpcy5leHRlcm5hbFNvdXJjZS5zY2hlbWEsIDApKTtcclxuICAgIHRoaXMuZXh0ZXJuYWxTZXR0aW5ncyA9IEpTT04ucGFyc2UoYnVuZGxlU2V0dGluZ3MpO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucykge1xyXG4gICAgICB0aGlzLmV4dGVybmFsU2V0dGluZ3Mub3B0aW9ucyA9IHRoaXMub3B0aW9ucztcclxuICAgIH1cclxuICAgIC8vIHRoaXMuZXh0ZXJuYWxTZXR0aW5ncy5hc3NldFBhdGggPSBcImh0dHBzOi8vY2RuMS5jb2xpam4taXQubmwvY29udGVudDQzXCI7XHJcbiAgICAvLyB0aGlzLmV4dGVybmFsU2V0dGluZ3MudGhyZWVEQXNzZXRQYXRoID0gXCJodHRwczovL2NkbjEuY29saWpuLWl0Lm5sL2NvbnRlbnQ0M1wiO1xyXG4gICAgaWYgKHRoaXMuZXh0ZXJuYWxTb3VyY2UudXNlcm5hbWUgJiYgdGhpcy5leHRlcm5hbFNvdXJjZS5wYXNzd29yZCkge1xyXG4gICAgICB0aGlzLmV4dGVybmFsU2V0dGluZ3MudXNlTG9naW5FbmNyeXB0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5leHRlcm5hbFNldHRpbmdzLnVzZXJuYW1lID0gdGhpcy5leHRlcm5hbFNvdXJjZS51c2VybmFtZTtcclxuICAgICAgdGhpcy5leHRlcm5hbFNldHRpbmdzLnBhc3N3b3JkID0gdGhpcy5leHRlcm5hbFNvdXJjZS5wYXNzd29yZDtcclxuICAgIH1cclxuICAgIC8vIGZpbmFsbHkgc2hvdyB0aGUgY2F0YWxvZ1xyXG4gICAgdGhpcy5zd2l0Y2hUb1Byb2R1Y3QoKTtcclxuICAgIHRoaXMubG9hZGVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3ByZXBhcmVDb25maWd1cmF0b3IoKTogdm9pZCB7XHJcbiAgICBpZih0aGlzLmV4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvKSB7XHJcbiAgICAgIHRoaXMudG9rZW4gPSB0aGlzLmV4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvLnRva2VuO1xyXG4gICAgICB0aGlzLnNrdSA9IHRoaXMuZXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm8uZXh0ZXJuYWxHb29kSWQ7XHJcbiAgICAgIHRoaXMudmFyaWFudCA9IHRoaXMuZXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm8uZmxhdHRlbmVkR29vZElkO1xyXG4gICAgICB0aGlzLnN3aXRjaFRvQ29uZmlndXJhdG9yKCk7XHJcbiAgICAgIHRoaXMubG9hZGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3ByZXBhcmVTb3VyY2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmV4dGVybmFsVXJsID0gdGhpcy5leHRlcm5hbFNvdXJjZS51cmw7XHJcbiAgICB0aGlzLnNhZmVVcmwgPSB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHRoaXMuZXh0ZXJuYWxVcmwpO1xyXG4gICAgdGhpcy5zd2l0Y2hUb1NvdXJjZSgpO1xyXG4gICAgdGhpcy5sb2FkZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzd2l0Y2hUb1Byb2R1Y3QoKTp2b2lkIHtcclxuICAgIHRoaXMuc2hvd1Byb2R1Y3QgPSB0cnVlO1xyXG4gICAgdGhpcy5zaG93Q29uZmlndXJhdG9yID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dTb3VyY2UgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3dpdGNoVG9Db25maWd1cmF0b3IoKTp2b2lkIHtcclxuICAgIHRoaXMuc2hvd1Byb2R1Y3QgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0NvbmZpZ3VyYXRvciA9IHRydWU7XHJcbiAgICB0aGlzLnNob3dTb3VyY2UgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3dpdGNoVG9Tb3VyY2UoKTp2b2lkIHtcclxuICAgIHRoaXMuc2hvd1Byb2R1Y3QgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0NvbmZpZ3VyYXRvciA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93U291cmNlID0gdHJ1ZTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1leHRlcm5hbC1zb3VyY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3Byb2R1Y3QtZXh0ZXJuYWwtc291cmNlL3Byb2R1Y3QtZXh0ZXJuYWwtc291cmNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBQyxZQUFZLEVBQWtCLE1BQU0sMkJBQTJCLENBQUM7QUFFeEUsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFFaEYsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFFeEUsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFDLDhCQUE4QixFQUFDLE1BQU0saURBQWlELENBQUM7QUFzQy9GLE1BQU0sT0FBTyw4QkFBOEI7SUF1RXZDLFlBQ1ksVUFBd0IsRUFDeEIsd0JBQWlELEVBQ2pELGdCQUFxQztRQUZyQyxlQUFVLEdBQVYsVUFBVSxDQUFjO1FBQ3hCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBeUI7UUFDakQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFxQjtRQXJDMUMsY0FBUyxHQUFvRCxJQUFJLFlBQVksRUFBcUMsQ0FBQztRQUduSCxlQUFVLEdBQW9ELElBQUksWUFBWSxFQUFxQyxDQUFDO1FBR3BILHFCQUFnQixHQUFvQyxJQUFJLFlBQVksRUFBcUIsQ0FBQztRQUcxRix5QkFBb0IsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQU94RSxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMs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QUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDekIsQ0FBQzs7O1lBL01GLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsNEJBQTRCO2dCQUN0QyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXFCVDtnQkFDRCxTQUFTLEVBQUU7b0JBQ1Asc0JBQXNCO29CQUN0Qiw4QkFBOEI7b0JBQzlCLHVCQUF1QjtpQkFDMUI7Z0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDeEM7OztZQTVDTyxZQUFZO1lBRVosdUJBQXVCO1lBRXZCLG1CQUFtQjs7O2tCQTJDdEIsS0FBSztnQ0FHTCxLQUFLOzZCQUdMLEtBQUs7eUNBV0wsS0FBSztzQkFjTCxLQUFLO3dCQUdMLE1BQU07eUJBR04sTUFBTTsrQkFHTixNQUFNO21DQUdOLE1BQU07d0JBR04sV0FBVyxTQUFDLGtDQUFrQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0RvbVNhbml0aXplciwgU2FmZVJlc291cmNlVXJsfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHtFeHRlcm5hbFNvdXJjZX0gZnJvbSAnQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvZXh0ZXJuYWwtc291cmNlLmJvJztcclxuaW1wb3J0IHtQcm9kdWN0Q29ubmVjdG9yU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9wcm9kdWN0LWNvbm5lY3Rvci5zZXJ2aWNlJztcclxuaW1wb3J0IHtBcnRpY2xlTGlzdE9iamVjdH0gZnJvbSAnQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS1saXN0LW9iamVjdCc7XHJcbmltcG9ydCB7UHJvZHVjdEV2ZW50U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9wcm9kdWN0LWV2ZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7UHJvZHVjdFNldHRpbmdzU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9wcm9kdWN0LXNldHRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQge1Byb2R1Y3RDb25uZWN0b3JBZGFwdGVyU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9wcm9kdWN0LWNvbm5lY3Rvci1hZGFwdGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQge0NhdGFsb2dEZWZpbml0aW9ufSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9jYXRhbG9nLWRlZmluaXRpb24uYm8nO1xyXG5pbXBvcnQge0V4dGVybmFsU291cmNlQXJ0aWNsZUFkZEludGVyZmFjZX0gZnJvbSAnQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvaW50ZXJmYWNlL2V4dGVybmFsLXNvdXJjZS1hcnRpY2xlLWFkZC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge0FydGljbGVMaXN0T2JqZWN0RXh0ZW5kZWR9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2FydGljbGUtbGlzdC1vYmplY3QtZXh0ZW5kZWQuYm8nO1xyXG5pbXBvcnQge0V4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvfSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9leHRlcm5hbC1jYXRhbG9nLXN0YXJ0dXAtaW5mbyc7XHJcbmltcG9ydCB7RXh0ZXJuYWxTb3VyY2VQYXJhbWV0ZXJ9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2V4dGVybmFsLXNvdXJjZS1wYXJhbWV0ZXIuYm8nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2NvLXByb2R1Y3QtZXh0ZXJuYWwtc291cmNlJyxcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRlZFwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1Byb2R1Y3RcIj5cclxuICAgICAgICAgICAgICAgIDxhcHAtcHJvZHVjdC1wYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtza3VdPVwic2t1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3NldHRpbmdzXT1cImV4dGVybmFsU2V0dGluZ3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXh0ZXJuYWxTb3VyY2VdPVwiZXh0ZXJuYWxTb3VyY2VcIlxyXG4gICAgICAgICAgICAgICAgPjwvYXBwLXByb2R1Y3QtcGFnZT5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93U291cmNlXCI+XHJcbiAgICAgICAgICAgICAgICA8aWZyYW1lIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIiBbc3JjXT1cInNhZmVVcmxcIiBmcmFtZWJvcmRlcj1cIjBcIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0NvbmZpZ3VyYXRvclwiPlxyXG4gICAgICAgICAgICAgIDxjby1wcm9kdWN0LWhkIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtza3VdPVwic2t1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFyaWFudF09XCJ2YXJpYW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9rZW5dPVwidG9rZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1cmxQYXJhbXNdPVwidXJsUGFyYW1zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uZmlndXJhdG9yRmluaXNoZWQpPVwiaGFuZGxlQ29uZmlndXJhdGlvbkZpbmlzaGVkKCRldmVudClcIj48L2NvLXByb2R1Y3QtaGQ+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgYCxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIFByb2R1Y3RTZXR0aW5nc1NlcnZpY2UsXHJcbiAgICAgICAgUHJvZHVjdENvbm5lY3RvckFkYXB0ZXJTZXJ2aWNlLFxyXG4gICAgICAgIFByb2R1Y3RDb25uZWN0b3JTZXJ2aWNlXHJcbiAgICBdLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvZHVjdEV4dGVybmFsU291cmNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2t1OiBzdHJpbmc7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBjYXRhbG9nRGVmaW5pdGlvbjogQ2F0YWxvZ0RlZmluaXRpb247XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgZXh0ZXJuYWxTb3VyY2UodmFsdWU6IEV4dGVybmFsU291cmNlKSB7XHJcbiAgICAgICAgdGhpcy5fZXh0ZXJuYWxTb3VyY2UgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLmxvYWRlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX3ByZXBhcmVFeHRlcm5hbFNvdXJjZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgZXh0ZXJuYWxTb3VyY2UoKTogRXh0ZXJuYWxTb3VyY2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9leHRlcm5hbFNvdXJjZTtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCBleHRlcm5hbENhdGFsb2dTdGFydHVwSW5mbyh2YWx1ZTogRXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm8pIHtcclxuICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5fZXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm8gPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLmV4dGVybmFsU291cmNlID0gdmFsdWUuZXh0ZXJuYWxTb3VyY2U7XHJcbiAgICAgICAgdGhpcy5sb2FkZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLl9wcmVwYXJlRXh0ZXJuYWxTb3VyY2UoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgZXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm8oKTogRXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm8ge1xyXG4gICAgICByZXR1cm4gdGhpcy5fZXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm87XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBvcHRpb25zOiB7fTtcclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBhZGRUb0NhcnQ6IEV2ZW50RW1pdHRlcjxFeHRlcm5hbFNvdXJjZUFydGljbGVBZGRJbnRlcmZhY2U+ID0gbmV3IEV2ZW50RW1pdHRlcjxFeHRlcm5hbFNvdXJjZUFydGljbGVBZGRJbnRlcmZhY2U+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgYWRkVG9RdW90ZTogRXZlbnRFbWl0dGVyPEV4dGVybmFsU291cmNlQXJ0aWNsZUFkZEludGVyZmFjZT4gPSBuZXcgRXZlbnRFbWl0dGVyPEV4dGVybmFsU291cmNlQXJ0aWNsZUFkZEludGVyZmFjZT4oKTtcclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBhbHRlcm5hdGl2ZUNsaWNrOiBFdmVudEVtaXR0ZXI8QXJ0aWNsZUxpc3RPYmplY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxBcnRpY2xlTGlzdE9iamVjdD4oKTtcclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBjb25maWd1cmF0b3JGaW5pc2hlZDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvLXByb2R1Y3QtZXh0ZXJuYWwtc291cmNlJylcclxuICAgIHB1YmxpYyBzaG93Q2xhc3MoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNob3dQcm9kdWN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgc2hvd0NvbmZpZ3VyYXRvcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIHNob3dTb3VyY2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBzYWZlVXJsOiBTYWZlUmVzb3VyY2VVcmw7XHJcbiAgICBwdWJsaWMgbG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgZXh0ZXJuYWxVcmw6IHN0cmluZztcclxuICAgIHB1YmxpYyBleHRlcm5hbFNldHRpbmdzOiBhbnkgPSB7fTtcclxuXHJcbiAgICBwdWJsaWMgdG9rZW46IHN0cmluZyA9IFwiXCI7Ly89IFwiZXlKaGJHY2lPaUpTVXpJMU5pSXNJbXRwWkNJNklrWXhPVGhFUmtWRU9FVXdRVFExTXpZM00wTTFNVUUyUmprMVFVVkRRelUzUlRNME5qTTRSa1JTVXpJMU5pSXNJblI1Y0NJNkltRjBLMnAzZENJc0luZzFkQ0k2SWpoYWFtWTNXVFJMVWxSYWVuaFNjSFpzWVRkTlZpMU9SMDlRTUNKOS5leUp1WW1ZaU9qRTNNekl4T1RreU9UVXNJbVY0Y0NJNk1UY3pNakl3TWpnNU5Td2lhWE56SWpvaWFIUjBjSE02THk5aWJYTnBaR1Z1ZEdsMGVTMWhZMk5sY0hSaGJtTmxMbUY2ZFhKbGQyVmljMmwwWlhNdWJtVjBJaXdpWVhWa0lqcGJJbU5oZEdGc2IyZHhkV1Z5ZVdGd2FTSXNJbU52Ym1acFozVnlZWFJ2Y21Gd2FTSXNJbkJ5YjJSMVkzUjJZWEpwWVc1MFkyOXRiV0Z1WkdGd2FTSXNJbkJ5YjJSMVkzUjJZWEpwWVc1MGNYVmxjbmxoY0draVhTd2lZMnhwWlc1MFgybGtJam9pYVcxd1pYSnpiMjVoZEdsdmJpNWpiR2xsYm5RaUxDSnpkV0lpT2lJd09UTXdaREk0TWkwNU5HVTRMVFE1TUdFdE9HSTJOQzFtWVRrMVltSXlZekUxT0RJaUxDSmhkWFJvWDNScGJXVWlPakUzTXpJeE9Ua3lPVFVzSW1sa2NDSTZJbXh2WTJGc0lpd2laVzUyYVhKdmJtMWxiblFpT2lKTlUwd2lMQ0p6Wld4c1pYSWlPaUpUUlRBd01EQTVOaUlzSW5ObGJHeGxjbWQxYVdRaU9pSXhNRGsxTVdKak5TMWhabU16TFRRMU1HRXRObVZrTVMwd09HUTRORE5sTm1FNU9UUWlMQ0p3WlhKdGFYTnphVzl1SWpwYkluTmhiR1Z6TG1WNGNHOXlkSFJsYlhCc1lYUmxjeTV5WldGa0lpd2laRzlqZFcxbGJuUnNhV0p5WVhKNUxuUmhaeTV5WldGa0lpd2laRzlqZFcxbGJuUnNhV0p5WVhKNUxtUnZZM1Z0Wlc1MExuSmxZV1FpTENKa2IyTjFiV1Z1ZEd4cFluSmhjbmt1ZEdGblozSnZkWEF1Y21WaFpDSXNJbk5oYkdWekxtOXlaR1Z5TG5keWFYUmxJaXdpYzJGc1pYTXVZM1Z6ZEc5dFpYSXVjbVZoWkNJc0luTmhiR1Z6TG05eVpHVnlMbVJsYkdsMlpYSjVZV1JrY21WemN5NTNjbWwwWlNJc0luTmxjblpwWTJVdWNtVnhkV1Z6ZEM1eVpXRmtJaXdpWTJGMFlXeHZaeTUwWVdjdWNtVmhaQ0lzSW5OaGJHVnpMbTl5WkdWeUxuSmxZV1FpTENKellXeGxjeTVqZFhOMGIyMWxjaTUzY21sMFpTSXNJbkpsY1hWbGMzUm1iM0p4ZFc5MFpTNTNjbWwwWlNJc0luTmhiR1Z6TG05eVpHVnlMbUp2YjJzaUxDSnlaWEYxWlhOMFptOXljWFZ2ZEdVdWNtVmhaQ0lzSW5OaGJHVnpMbXhsWVdRdWNtVmhaQ0lzSW5CMWNtTm9ZWE5sTG05eVpHVnlMbkpsWVdRaUxDSnpZV3hsY3k1eGRXOTBaUzV5WldGa0lpd2ljMkZzWlhNdWNYVnZkR1V1ZDNKcGRHVWlMQ0pqWVhSaGJHOW5MbWwwWlcwdWNtVmhaQ0lzSW5OaGJHVnpMbXhsWVdRdWQzSnBkR1VpTENKelpYSjJhV05sTG5KbGNYVmxjM1F1YzNWaWJXbDBJaXdpYzJGc1pYTXViM0prWlhJdVpHVnNhWFpsY25saFpHUnlaWE56TG5KbFlXUWlMQ0p3ZFhKamFHRnpaUzV2Y21SbGNpNTNjbWwwWlNJc0luQjFjbU5vWVhObExtOXlaR1Z5TG5CeWFXTmxjeTUzY21sMFpTSXNJbkIxY21Ob1lYTmxMbTl5WkdWeUxuQnlhV05sY3k1eVpXRmtJaXdpYzJWeWRtbGpaUzV5WlhGMVpYTjBMbmR5YVhSbElpd2lZMkYwWVd4dlp5NWpZWFJoYkc5bkxuSmxZV1FpTENKallYUmhiRzluTG1OaGRHRnNiMmN1ZDNKcGRHVWlMQ0pqWVhSaGJHOW5MbU4xY25KbGJtTjVMbkpsWVdRaUxDSmpZWFJoYkc5bkxtTjFjbkpsYm1ONUxuZHlhWFJsSWl3aVkyRjBZV3h2Wnk1cGRHVnRMbmR5YVhSbElpd2lZMkYwWVd4dlp5NXNiMk5oYkdsNllYUnBiMjR1Y21WaFpDSXNJbU5oZEdGc2IyY3ViRzlqWVd4cGVtRjBhVzl1TG5keWFYUmxJaXdpWTJGMFlXeHZaeTV3Y205a2RXTjBMbkpsWVdRaUxDSmpZWFJoYkc5bkxuQnliMlIxWTNRdWQzSnBkR1VpTENKallYUmhiRzluTG5CeWIyUjFZM1J6WlhSMGFXNW5MbkpsWVdRaUxDSmpZWFJoYkc5bkxuQnliMlIxWTNSelpYUjBhVzVuTG5keWFYUmxJaXdpWTJGMFlXeHZaeTV6Wld4c1pYSXVjbVZoWkNJc0ltTmhkR0ZzYjJjdWMyVnNiR1Z5TG5keWFYUmxJaXdpWTJGMFlXeHZaeTUwWVdjdWQzSnBkR1VpTENKallYUmhiRzluTG5WdmJTNXlaV0ZrSWl3aVkyRjBZV3h2Wnk1MWIyMHVkM0pwZEdVaUxDSmpZWFJoYkc5bkxuWmhkR05oZEdWbmIzSjVMbkpsWVdRaUxDSmpZWFJoYkc5bkxuWmhkR05oZEdWbmIzSjVMbmR5YVhSbElpd2lZMkYwWVd4dlp5NTJaVzVrYjNJdWNtVmhaQ0lzSW1OaGRHRnNiMmN1ZG1WdVpHOXlMbmR5YVhSbElpd2ljSFZ5WTJoaGMyVXVjMlZzYkdWeUxuSmxZV1FpTENKd2RYSmphR0Z6WlM1elpXeHNaWEl1ZDNKcGRHVWlMQ0pqWVhSaGJHOW5MbUZ5ZEdsamJHVXVjbVZoWkNJc0ltTmhkR0ZzYjJjdVlYSjBhV05zWlM1M2NtbDBaU0lzSW5OaGJHVnpMbkYxYjNSbExteHBibVZ6TG5KbFlXUWlMQ0p6WVd4bGN5NXhkVzkwWlM1c2FXNWxjeTUzY21sMFpTSXNJbk5oYkdWekxuTmxiR3hsY2k1eVpXRmtJaXdpYzJGc1pYTXVjMlZzYkdWeUxuZHlhWFJsSWl3aVlXTmpiM1Z1ZEdsdVp5NTJaVzVrYjNKcGJuWnZhV05sTG5KbFlXUWlMQ0pwWkdWdWRHbDBlUzUxYzJWeUxuSmxZV1FpTENKcFpHVnVkR2wwZVM1MWMyVnlMbmR5YVhSbElpd2lhV1JsYm5ScGRIa3VjbTlzWlM1eVpXRmtJaXdpYzJWc2JHVnlMbkJ5YjJSMVkzUndjbWxqWlM1elpYUjBhVzVuY3k1eVpXRmtJaXdpYzJWc2JHVnlMbkJ5YjJSMVkzUndjbWxqWlM1elpYUjBhVzVuY3k1M2NtbDBaU0lzSW1OdmJtWnBaM1Z5WVhSdmNpNXdkWEpqYUdGelpYQnlhV05sTG5KbFlXUWlMQ0p6ZEc5amF5NW1ZV0p5YVdNdWNtVmhaQ0pkTENKdVlXMWxJam9pVW05aWFXNGlMQ0ptWVcxcGJIbGZibUZ0WlNJNkltUmxJRmRwYm5SbGNpQW9RMjlzYVdwdUxVbFVLU0lzSW5KdmJHVWlPbHNpYzJWc2JHVnlJaXdpWkdWaGJHVnlYMjFoYm1GblpYSWlYU3dpYVdGMElqb3hOek15TVRrNU1qazFMQ0p6WTI5d1pTSTZXeUpqWVhSaGJHOW5jWFZsY25saGNHa2lMQ0pqYjI1bWFXZDFjbUYwYjNKaGNHa2lMQ0p3Y205a2RXTjBkbUZ5YVdGdWRHTnZiVzFoYm1SaGNHa2lMQ0p3Y205a2RXTjBkbUZ5YVdGdWRIRjFaWEo1WVhCcElsMHNJbUZ0Y2lJNld5SnBiWEJsY25OdmJtRjBhVzl1SWwxOS5yYmd1VlBua1hYRHpzTTZRS2dYdWxockY0MWpJakN1R0RWMTNpZzFHQzhNZXdMQ0o3d0EwMzhPU3dUMjZzeDJtQ2V4anZ1R1l0NDVZU2NmUHdmVGtEeTNFclBtSFJvZHM2NFgxZEpXWm5mLTIzTlRQMmlJMzJLXzF2TVpINUdPR2JNenVGdGJLQUZRdjRoZ0ZBeG95V3FGVld5SnZ1T3RRY1d5WlN0Uk95UEh3akFucG5qLXgxY1ZRcE9oYk8ta1FVRnZ5X1ZVclBwRjNhWVZDY08yY0ZpclFUWFI2a3hTR2NZR0djc1BZLV9laUFkOTNVZEcyRU02eExBb2NETGFGVjcyQ1FJNlhFczBXUUcxZjRTcXZINTJ2M09Ua2dXQkxnWVYzNWdweUllMC0ybmF6R0wwUjhwVE51RHFyT2I3T0dtdVRSTW9USWlSaTY3LXdUeHg4Y1FcIjtcclxuICAgIHB1YmxpYyB2YXJpYW50OiBzdHJpbmcgPSBcIlwiO1xyXG4gICAgcHVibGljIHVybFBhcmFtczogRXh0ZXJuYWxTb3VyY2VQYXJhbWV0ZXJbXSA9IFtdO1xyXG5cclxuXHJcblxyXG4gICAgcHJpdmF0ZSBfZXh0ZXJuYWxTb3VyY2U6IEV4dGVybmFsU291cmNlO1xyXG4gICAgcHJpdmF0ZSBfZXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm86IEV4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvO1xyXG4gICAgcHJpdmF0ZSBfc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIF9zYW5pdGl6ZXI6IERvbVNhbml0aXplcixcclxuICAgICAgICBwcml2YXRlIF9wcm9kdWN0Q29ubmVjdG9yU2VydmljZTogUHJvZHVjdENvbm5lY3RvclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfYXBwRXZlbnRTZXJ2aWNlOiBQcm9kdWN0RXZlbnRTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLl9zdWJzLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMuX2FwcEV2ZW50U2VydmljZS5vbkFkZFRvQ2FydC5zdWJzY3JpYmUoKGRhdGE6IHsgYXJ0aWNsZTogc3RyaW5nIHwgQXJ0aWNsZUxpc3RPYmplY3RFeHRlbmRlZCwgcXVhbnRpdHk6IG51bWJlciB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZFRvQ2FydC5uZXh0KHtcclxuICAgICAgICAgICAgICAgICAgICBhcnRpY2xlOiBkYXRhLmFydGljbGUsXHJcbiAgICAgICAgICAgICAgICAgICAgcXVhbnRpdHk6IGRhdGEucXVhbnRpdHksXHJcbiAgICAgICAgICAgICAgICAgICAgY2F0YWxvZ0RlZmluaXRpb246IHRoaXMuY2F0YWxvZ0RlZmluaXRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgZXh0ZXJuYWxTb3VyY2U6IHRoaXMuX2V4dGVybmFsU291cmNlXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIHRoaXMuX2FwcEV2ZW50U2VydmljZS5vbkFkZFRvUXVvdGUuc3Vic2NyaWJlKGpzb24gPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRUb1F1b3RlLm5leHQoe1xyXG4gICAgICAgICAgICAgICAgICAgIGFydGljbGU6IGpzb24sXHJcbiAgICAgICAgICAgICAgICAgICAgcXVhbnRpdHk6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgY2F0YWxvZ0RlZmluaXRpb246IHRoaXMuY2F0YWxvZ0RlZmluaXRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgZXh0ZXJuYWxTb3VyY2U6IHRoaXMuX2V4dGVybmFsU291cmNlXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIHRoaXMuX2FwcEV2ZW50U2VydmljZS5vbkFsdGVybmF0aXZlQ2xpY2suc3Vic2NyaWJlKGFydGljbGUgPT4gdGhpcy5hbHRlcm5hdGl2ZUNsaWNrLm5leHQoYXJ0aWNsZSkpXHJcbiAgICAgICAgKVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGhhbmRsZUNvbmZpZ3VyYXRpb25GaW5pc2hlZCh2YXJpYW50U3RyaW5nOiBzdHJpbmcpIHtcclxuICAgICAgdGhpcy5jb25maWd1cmF0b3JGaW5pc2hlZC5lbWl0KHZhcmlhbnRTdHJpbmcpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgX3ByZXBhcmVFeHRlcm5hbFNvdXJjZSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICBpZiAoIXRoaXMuX2V4dGVybmFsU291cmNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5leHRlcm5hbFVybCA9IHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLmV4dGVybmFsU2V0dGluZ3MgPSB7fTtcclxuICAgICAgICBpZiAodGhpcy5leHRlcm5hbFNvdXJjZS50eXBlID09PSAnQ0FURicpIHtcclxuICAgICAgICAgICBhd2FpdCB0aGlzLl9wcmVwYXJlQ2F0RmFybSgpO1xyXG4gICAgICAgIH0gZWxzZSAgaWYgKHRoaXMuZXh0ZXJuYWxTb3VyY2UudHlwZSA9PT0gJ0hUREwnKXtcclxuICAgICAgICAgIHRoaXMuX3ByZXBhcmVDb25maWd1cmF0b3IoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5fcHJlcGFyZVNvdXJjZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfcHJlcGFyZUNhdEZhcm0oKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAvLyBnZXQgYnVuZGxlIHNldHRpbmdzIGZyb20gZXh0ZXJuYWwgc291cmNlXHJcbiAgICBjb25zdCBidW5kbGVTZXR0aW5nczogc3RyaW5nID0gYXdhaXQgdGhpcy5fcHJvZHVjdENvbm5lY3RvclNlcnZpY2UuZ2V0UHJvZHVjdEJ1bmRsZVNldHRpbmdzKHRoaXMuZXh0ZXJuYWxTb3VyY2UudXJsLCBwYXJzZUludCh0aGlzLmV4dGVybmFsU291cmNlLnNjaGVtYSwgMCkpO1xyXG4gICAgdGhpcy5leHRlcm5hbFNldHRpbmdzID0gSlNPTi5wYXJzZShidW5kbGVTZXR0aW5ncyk7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zKSB7XHJcbiAgICAgIHRoaXMuZXh0ZXJuYWxTZXR0aW5ncy5vcHRpb25zID0gdGhpcy5vcHRpb25zO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy5leHRlcm5hbFNldHRpbmdzLmFzc2V0UGF0aCA9IFwiaHR0cHM6Ly9jZG4xLmNvbGlqbi1pdC5ubC9jb250ZW50NDNcIjtcclxuICAgIC8vIHRoaXMuZXh0ZXJuYWxTZXR0aW5ncy50aHJlZURBc3NldFBhdGggPSBcImh0dHBzOi8vY2RuMS5jb2xpam4taXQubmwvY29udGVudDQzXCI7XHJcbiAgICBpZiAodGhpcy5leHRlcm5hbFNvdXJjZS51c2VybmFtZSAmJiB0aGlzLmV4dGVybmFsU291cmNlLnBhc3N3b3JkKSB7XHJcbiAgICAgIHRoaXMuZXh0ZXJuYWxTZXR0aW5ncy51c2VMb2dpbkVuY3J5cHRpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmV4dGVybmFsU2V0dGluZ3MudXNlcm5hbWUgPSB0aGlzLmV4dGVybmFsU291cmNlLnVzZXJuYW1lO1xyXG4gICAgICB0aGlzLmV4dGVybmFsU2V0dGluZ3MucGFzc3dvcmQgPSB0aGlzLmV4dGVybmFsU291cmNlLnBhc3N3b3JkO1xyXG4gICAgfVxyXG4gICAgLy8gZmluYWxseSBzaG93IHRoZSBjYXRhbG9nXHJcbiAgICB0aGlzLnN3aXRjaFRvUHJvZHVjdCgpO1xyXG4gICAgdGhpcy5sb2FkZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcHJlcGFyZUNvbmZpZ3VyYXRvcigpOiB2b2lkIHtcclxuICAgIGlmKHRoaXMuZXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm8pIHtcclxuICAgICAgdGhpcy50b2tlbiA9IHRoaXMuZXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm8udG9rZW47XHJcbiAgICAgIHRoaXMuc2t1ID0gdGhpcy5leHRlcm5hbENhdGFsb2dTdGFydHVwSW5mby5leHRlcm5hbEdvb2RJZDtcclxuICAgICAgdGhpcy52YXJpYW50ID0gdGhpcy5leHRlcm5hbENhdGFsb2dTdGFydHVwSW5mby5mbGF0dGVuZWRHb29kSWQ7XHJcbiAgICAgIHRoaXMudXJsUGFyYW1zID0gdGhpcy5leHRlcm5hbENhdGFsb2dTdGFydHVwSW5mby5leHRlcm5hbFNvdXJjZS5wYXJhbWV0ZXJzO1xyXG4gICAgICB0aGlzLnN3aXRjaFRvQ29uZmlndXJhdG9yKCk7XHJcbiAgICAgIHRoaXMubG9hZGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3ByZXBhcmVTb3VyY2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmV4dGVybmFsVXJsID0gdGhpcy5leHRlcm5hbFNvdXJjZS51cmw7XHJcbiAgICB0aGlzLnNhZmVVcmwgPSB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHRoaXMuZXh0ZXJuYWxVcmwpO1xyXG4gICAgdGhpcy5zd2l0Y2hUb1NvdXJjZSgpO1xyXG4gICAgdGhpcy5sb2FkZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzd2l0Y2hUb1Byb2R1Y3QoKTp2b2lkIHtcclxuICAgIHRoaXMuc2hvd1Byb2R1Y3QgPSB0cnVlO1xyXG4gICAgdGhpcy5zaG93Q29uZmlndXJhdG9yID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dTb3VyY2UgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3dpdGNoVG9Db25maWd1cmF0b3IoKTp2b2lkIHtcclxuICAgIHRoaXMuc2hvd1Byb2R1Y3QgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0NvbmZpZ3VyYXRvciA9IHRydWU7XHJcbiAgICB0aGlzLnNob3dTb3VyY2UgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3dpdGNoVG9Tb3VyY2UoKTp2b2lkIHtcclxuICAgIHRoaXMuc2hvd1Byb2R1Y3QgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0NvbmZpZ3VyYXRvciA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93U291cmNlID0gdHJ1ZTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
@@ -6,6 +6,7 @@ export class ProductHdComponent {
6
6
  this._scriptLoader = _scriptLoader;
7
7
  this._renderer = _renderer;
8
8
  this.variant = '';
9
+ this.urlParams = [];
9
10
  this.configuratorFinished = new EventEmitter();
10
11
  this.configurationError = new EventEmitter();
11
12
  this.showClass = true;
@@ -36,7 +37,10 @@ export class ProductHdComponent {
36
37
  this.configurationError.emit(event.detail.status);
37
38
  }
38
39
  _prepareAttributes() {
39
- if (this.hdeConfigurator && this.hdeConfigurator.nativeElement && this.token && (this.sku || this.variant)) {
40
+ if (this.hdeConfigurator && this.hdeConfigurator.nativeElement && this.urlParams && this.token && (this.sku || this.variant)) {
41
+ //for local testing please turn off for packing and publishing!
42
+ //this.prepareTestingUrlparams();
43
+ this._prepareConfiguratorUrls();
40
44
  this.hdeConfigurator.nativeElement.setAttribute('bearerToken', this.token);
41
45
  if (this._sku) {
42
46
  this.hdeConfigurator.nativeElement.setAttribute('data-productId', this._sku);
@@ -47,19 +51,43 @@ export class ProductHdComponent {
47
51
  this._loadTheScripts();
48
52
  }
49
53
  }
50
- // load external scripts
54
+ //set necessary references to configurator.
55
+ _prepareConfiguratorUrls() {
56
+ //fetch the setting from the external source
57
+ let apiurl = this.urlParams.find((item) => item.key === 'apiurl').value;
58
+ let productVariantCommandApiUrl = this.urlParams.find((item) => item.key === 'productVariantCommandApiUrl').value;
59
+ let productVariantQueryApiUrl = this.urlParams.find((item) => item.key === 'productVariantQueryApiUrl').value;
60
+ let localizationApiUrl = this.urlParams.find((item) => item.key === 'localizationApiUrl').value;
61
+ //apply to configurator
62
+ this.hdeConfigurator.nativeElement.setAttribute('apiurl', apiurl);
63
+ this.hdeConfigurator.nativeElement.setAttribute('productVariantCommandApiUrl', productVariantCommandApiUrl);
64
+ this.hdeConfigurator.nativeElement.setAttribute('productVariantQueryApiUrl', productVariantQueryApiUrl);
65
+ this.hdeConfigurator.nativeElement.setAttribute('localizationApiUrl', localizationApiUrl);
66
+ }
67
+ // load external scripts into client
51
68
  _loadTheScripts() {
52
69
  return __awaiter(this, void 0, void 0, function* () {
53
- const scripts = [
54
- // hard-coded for now, should come from the external source
55
- 'https://hde-cdn.azureedge.net/libs/components/Configurator/1.0.33/polyfills.js',
56
- 'https://hde-cdn.azureedge.net/libs/components/Configurator/1.0.33/runtime.js',
57
- 'https://hde-cdn.azureedge.net/libs/components/Configurator/1.0.33/main.js'
58
- ];
70
+ let headerUrls = this.urlParams.find((item) => item.key === 'header').value;
71
+ let headerArray = headerUrls.replace(/\s+/g, '').split(',');
72
+ for (let i = 0; i < headerArray.length; i++) {
73
+ yield this._scriptLoader.loadScript(headerArray[i], this._renderer).catch((error) => console.error(error));
74
+ }
75
+ let styles = this.urlParams.find((item) => item.key === 'stylesheet').value;
76
+ let stylesArray = styles.replace(/\s+/g, '').split(',');
77
+ for (let j = 0; j < stylesArray.length; j++) {
78
+ yield this._scriptLoader.addStyleSheet(stylesArray[j], this._renderer);
79
+ }
80
+ //for local testing please turn off for packing and publishing!
81
+ /*const scripts: string[] = [
82
+ // hard-coded for now, should come from the external source
83
+ 'https://hde-cdn.azureedge.net/libs/components/Configurator/1.0.33/polyfills.js',
84
+ 'https://hde-cdn.azureedge.net/libs/components/Configurator/1.0.33/runtime.js',
85
+ 'https://hde-cdn.azureedge.net/libs/components/Configurator/1.0.33/main.js'
86
+ ]
59
87
  for (let i = 0; i < scripts.length; i++) {
60
- yield this._scriptLoader.loadScript(scripts[i], this._renderer).catch((error) => console.error(error));
88
+ await this._scriptLoader.loadScript(scripts[i], this._renderer).catch((error) => console.error(error));
61
89
  }
62
- yield this._scriptLoader.addStyleSheet('https://hde-cdn.azureedge.net/libs/components/Configurator/1.0.33/styles.css', this._renderer);
90
+ await this._scriptLoader.addStyleSheet('https://hde-cdn.azureedge.net/libs/components/Configurator/1.0.33/styles.css', this._renderer);*/
63
91
  });
64
92
  }
65
93
  }
@@ -68,11 +96,7 @@ ProductHdComponent.decorators = [
68
96
  selector: 'co-product-hd',
69
97
  template: `
70
98
  <hde-configurator #hdeConfigurator
71
- apiurl="https://bmsproductconfigurator-acceptance.azurewebsites.net/api/configurator/"
72
- productVariantCommandApiUrl="https://bmsproductvariantcommand-acceptance.azurewebsites.net/"
73
- productVariantQueryApiUrl="https://bmsproductvariantquery-acceptance.azurewebsites.net/"
74
99
  language="nl"
75
- localizationApiUrl="https://hde-cdn.azureedge.net/libs/BMS.DST.Localization/"
76
100
  localizationFileExtension=".json"
77
101
  (configurationFinished)="handleConfigurationFinished($event)"
78
102
  (configurationFailed)="handleError($event)"
@@ -92,8 +116,9 @@ ProductHdComponent.propDecorators = {
92
116
  sku: [{ type: Input }],
93
117
  token: [{ type: Input }],
94
118
  variant: [{ type: Input }],
119
+ urlParams: [{ type: Input }],
95
120
  configuratorFinished: [{ type: Output }],
96
121
  configurationError: [{ type: Output }],
97
122
  showClass: [{ type: HostBinding, args: ['class.co-product-hd',] }]
98
123
  };
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1oZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvcHJvZHVjdC1oZC9wcm9kdWN0LWhkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBb0J2RixNQUFNLE9BQU8sa0JBQWtCO0lBb0M3QixZQUNVLGFBQXlDLEVBQ3pDLFNBQW9CO1FBRHBCLGtCQUFhLEdBQWIsYUFBYSxDQUE0QjtRQUN6QyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBbEJ2QixZQUFPLEdBQVcsRUFBRSxDQUFDO1FBR3JCLHlCQUFvQixHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBR3hFLHVCQUFrQixHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBSWhFLGNBQVMsR0FBWSxJQUFJLENBQUM7SUFVakMsQ0FBQztJQXZDRCxJQUFzRCxPQUFPLENBQUMsS0FBSztRQUNqRSxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFDVyxHQUFHLENBQUMsS0FBYTtRQUMxQixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNsQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBVyxHQUFHO1FBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUE0QkQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRU0sMkJBQTJCLENBQUMsS0FBa0I7UUFDbkQsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLFFBQVEsRUFBRTtZQUNwRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDdEQ7YUFBTTtZQUNMLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzlDO0lBQ0gsQ0FBQztJQUVNLFdBQVcsQ0FBQyxLQUFrQjtRQUNuQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBRTFHLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNFLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDYixJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzlFO1lBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNoQixJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3hGO1lBQ0QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztJQUVELHdCQUF3QjtJQUNWLGVBQWU7O1lBQzNCLE1BQU0sT0FBTyxHQUFhO2dCQUN4QiwyREFBMkQ7Z0JBQzNELGdGQUFnRjtnQkFDaEYsOEVBQThFO2dCQUM5RSwyRUFBMkU7YUFDNUUsQ0FBQTtZQUNELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN2QyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDeEc7WUFDRCxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLDhFQUE4RSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6SSxDQUFDO0tBQUE7OztZQXRHRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGVBQWU7Z0JBQ3pCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7OztHQWFUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUFuQk8sMEJBQTBCO1lBSmhDLFNBQVM7OztzQkF5QlIsU0FBUyxTQUFDLGlCQUFpQixFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBQztrQkFLL0MsS0FBSztvQkFVTCxLQUFLO3NCQUdMLEtBQUs7bUNBR0wsTUFBTTtpQ0FHTixNQUFNO3dCQUlOLFdBQVcsU0FBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0QmluZGluZyxcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT3V0cHV0LFxyXG4gIFJlbmRlcmVyMixcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb25cclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtQcm9kdWN0U2NyaXB0TG9hZGVyU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9wcm9kdWN0LXNjcmlwdC1sb2FkZXIuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvLXByb2R1Y3QtaGQnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8aGRlLWNvbmZpZ3VyYXRvciAjaGRlQ29uZmlndXJhdG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICBhcGl1cmw9XCJodHRwczovL2Jtc3Byb2R1Y3Rjb25maWd1cmF0b3ItYWNjZXB0YW5jZS5henVyZXdlYnNpdGVzLm5ldC9hcGkvY29uZmlndXJhdG9yL1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0VmFyaWFudENvbW1hbmRBcGlVcmw9XCJodHRwczovL2Jtc3Byb2R1Y3R2YXJpYW50Y29tbWFuZC1hY2NlcHRhbmNlLmF6dXJld2Vic2l0ZXMubmV0L1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0VmFyaWFudFF1ZXJ5QXBpVXJsPVwiaHR0cHM6Ly9ibXNwcm9kdWN0dmFyaWFudHF1ZXJ5LWFjY2VwdGFuY2UuYXp1cmV3ZWJzaXRlcy5uZXQvXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlPVwibmxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgbG9jYWxpemF0aW9uQXBpVXJsPVwiaHR0cHM6Ly9oZGUtY2RuLmF6dXJlZWRnZS5uZXQvbGlicy9CTVMuRFNULkxvY2FsaXphdGlvbi9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgbG9jYWxpemF0aW9uRmlsZUV4dGVuc2lvbj1cIi5qc29uXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjb25maWd1cmF0aW9uRmluaXNoZWQpPVwiaGFuZGxlQ29uZmlndXJhdGlvbkZpbmlzaGVkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNvbmZpZ3VyYXRpb25GYWlsZWQpPVwiaGFuZGxlRXJyb3IoJGV2ZW50KVwiXHJcbiAgICA+XHJcbiAgICAgIDxoZGUtcHJvZ3Jlc3MtYmFyPjwvaGRlLXByb2dyZXNzLWJhcj5cclxuICAgIDwvaGRlLWNvbmZpZ3VyYXRvcj5cclxuICBgLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIFByb2R1Y3RIZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgQFZpZXdDaGlsZCgnaGRlQ29uZmlndXJhdG9yJywge3JlYWQ6IEVsZW1lbnRSZWZ9KSBzZXQgY29udGVudChjaGlsZCkge1xyXG4gICAgdGhpcy5oZGVDb25maWd1cmF0b3IgPSBjaGlsZDtcclxuICAgIHRoaXMuX3ByZXBhcmVBdHRyaWJ1dGVzKCk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgc2t1KHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3NrdSA9IHZhbHVlO1xyXG4gICAgdGhpcy5fcHJlcGFyZUF0dHJpYnV0ZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2t1KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2t1O1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdG9rZW46IHN0cmluZzsgLy8gPSBcImV5SmhiR2NpT2lKU1V6STFOaUlzSW10cFpDSTZJa1l4T1RoRVJrVkVPRVV3UVRRMU16WTNNME0xTVVFMlJqazFRVVZEUXpVM1JUTTBOak00UmtSU1V6STFOaUlzSW5SNWNDSTZJbUYwSzJwM2RDSXNJbmcxZENJNklqaGFhbVkzV1RSTFVsUmFlbmhTY0hac1lUZE5WaTFPUjA5UU1DSjkuZXlKdVltWWlPakUzTXpjeE1qUTJORFFzSW1WNGNDSTZNVGN6TnpFeU9ESTBOQ3dpYVhOeklqb2lhSFIwY0hNNkx5OWliWE5wWkdWdWRHbDBlUzFoWTJObGNIUmhibU5sTG1GNmRYSmxkMlZpYzJsMFpYTXVibVYwSWl3aVlYVmtJanBiSW1OaGRHRnNiMmR4ZFdWeWVXRndhU0lzSW1OdmJtWnBaM1Z5WVhSdmNtRndhU0lzSW5CeWIyUjFZM1IyWVhKcFlXNTBZMjl0YldGdVpHRndhU0lzSW5CeWIyUjFZM1IyWVhKcFlXNTBjWFZsY25saGNHa2lYU3dpWTJ4cFpXNTBYMmxrSWpvaWFXMXdaWEp6YjI1aGRHbHZiaTVqYkdsbGJuUWlMQ0p6ZFdJaU9pSXdPVE13WkRJNE1pMDVOR1U0TFRRNU1HRXRPR0kyTkMxbVlUazFZbUl5WXpFMU9ESWlMQ0poZFhSb1gzUnBiV1VpT2pFM016Y3hNalEyTkRRc0ltbGtjQ0k2SW14dlkyRnNJaXdpWlc1MmFYSnZibTFsYm5RaU9pSk5VMHdpTENKelpXeHNaWElpT2lKVFJUQXdNREE1TmlJc0luTmxiR3hsY21kMWFXUWlPaUl4TURrMU1XSmpOUzFoWm1NekxUUTFNR0V0Tm1Wa01TMHdPR1E0TkRObE5tRTVPVFFpTENKd1pYSnRhWE56YVc5dUlqcGJJbk5oYkdWekxtVjRjRzl5ZEhSbGJYQnNZWFJsY3k1eVpXRmtJaXdpWkc5amRXMWxiblJzYVdKeVlYSjVMblJoWnk1eVpXRmtJaXdpWkc5amRXMWxiblJzYVdKeVlYSjVMbVJ2WTNWdFpXNTBMbkpsWVdRaUxDSmtiMk4xYldWdWRHeHBZbkpoY25rdWRHRm5aM0p2ZFhBdWNtVmhaQ0lzSW5OaGJHVnpMbTl5WkdWeUxuZHlhWFJsSWl3aWMyRnNaWE11WTNWemRHOXRaWEl1Y21WaFpDSXNJbk5oYkdWekxtOXlaR1Z5TG1SbGJHbDJaWEo1WVdSa2NtVnpjeTUzY21sMFpTSXNJbk5sY25acFkyVXVjbVZ4ZFdWemRDNXlaV0ZrSWl3aVkyRjBZV3h2Wnk1MFlXY3VjbVZoWkNJc0luTmhiR1Z6TG05eVpHVnlMbkpsWVdRaUxDSnpZV3hsY3k1amRYTjBiMjFsY2k1M2NtbDBaU0lzSW5KbGNYVmxjM1JtYjNKeGRXOTBaUzUzY21sMFpTSXNJbk5oYkdWekxtOXlaR1Z5TG1KdmIyc2lMQ0p5WlhGMVpYTjBabTl5Y1hWdmRHVXVjbVZoWkNJc0luTmhiR1Z6TG14bFlXUXVjbVZoWkNJc0luQjFjbU5vWVhObExtOXlaR1Z5TG5KbFlXUWlMQ0p6WVd4bGN5NXhkVzkwWlM1eVpXRmtJaXdpYzJGc1pYTXVjWFZ2ZEdVdWQzSnBkR1VpTENKallYUmhiRzluTG1sMFpXMHVjbVZoWkNJc0luTmhiR1Z6TG14bFlXUXVkM0pwZEdVaUxDSnpaWEoyYVdObExuSmxjWFZsYzNRdWMzVmliV2wwSWl3aWMyRnNaWE11YjNKa1pYSXVaR1ZzYVhabGNubGhaR1J5WlhOekxuSmxZV1FpTENKd2RYSmphR0Z6WlM1dmNtUmxjaTUzY21sMFpTSXNJbkIxY21Ob1lYTmxMbTl5WkdWeUxuQnlhV05sY3k1M2NtbDBaU0lzSW5CMWNtTm9ZWE5sTG05eVpHVnlMbkJ5YVdObGN5NXlaV0ZrSWl3aWMyVnlkbWxqWlM1eVpYRjFaWE4wTG5keWFYUmxJaXdpWTJGMFlXeHZaeTVqWVhSaGJHOW5MbkpsWVdRaUxDSmpZWFJoYkc5bkxtTmhkR0ZzYjJjdWQzSnBkR1VpTENKallYUmhiRzluTG1OMWNuSmxibU41TG5KbFlXUWlMQ0pqWVhSaGJHOW5MbU4xY25KbGJtTjVMbmR5YVhSbElpd2lZMkYwWVd4dlp5NXBkR1Z0TG5keWFYUmxJaXdpWTJGMFlXeHZaeTVzYjJOaGJHbDZZWFJwYjI0dWNtVmhaQ0lzSW1OaGRHRnNiMmN1Ykc5allXeHBlbUYwYVc5dUxuZHlhWFJsSWl3aVkyRjBZV3h2Wnk1d2NtOWtkV04wTG5KbFlXUWlMQ0pqWVhSaGJHOW5MbkJ5YjJSMVkzUXVkM0pwZEdVaUxDSmpZWFJoYkc5bkxuQnliMlIxWTNSelpYUjBhVzVuTG5KbFlXUWlMQ0pqWVhSaGJHOW5MbkJ5YjJSMVkzUnpaWFIwYVc1bkxuZHlhWFJsSWl3aVkyRjBZV3h2Wnk1elpXeHNaWEl1Y21WaFpDSXNJbU5oZEdGc2IyY3VjMlZzYkdWeUxuZHlhWFJsSWl3aVkyRjBZV3h2Wnk1MFlXY3VkM0pwZEdVaUxDSmpZWFJoYkc5bkxuVnZiUzV5WldGa0lpd2lZMkYwWVd4dlp5NTFiMjB1ZDNKcGRHVWlMQ0pqWVhSaGJHOW5MblpoZEdOaGRHVm5iM0o1TG5KbFlXUWlMQ0pqWVhSaGJHOW5MblpoZEdOaGRHVm5iM0o1TG5keWFYUmxJaXdpWTJGMFlXeHZaeTUyWlc1a2IzSXVjbVZoWkNJc0ltTmhkR0ZzYjJjdWRtVnVaRzl5TG5keWFYUmxJaXdpY0hWeVkyaGhjMlV1YzJWc2JHVnlMbkpsWVdRaUxDSndkWEpqYUdGelpTNXpaV3hzWlhJdWQzSnBkR1VpTENKallYUmhiRzluTG1GeWRHbGpiR1V1Y21WaFpDSXNJbU5oZEdGc2IyY3VZWEowYVdOc1pTNTNjbWwwWlNJc0luTmhiR1Z6TG5GMWIzUmxMbXhwYm1WekxuSmxZV1FpTENKellXeGxjeTV4ZFc5MFpTNXNhVzVsY3k1M2NtbDBaU0lzSW5OaGJHVnpMbk5sYkd4bGNpNXlaV0ZrSWl3aWMyRnNaWE11YzJWc2JHVnlMbmR5YVhSbElpd2lZV05qYjNWdWRHbHVaeTUyWlc1a2IzSnBiblp2YVdObExuSmxZV1FpTENKcFpHVnVkR2wwZVM1MWMyVnlMbkpsWVdRaUxDSnBaR1Z1ZEdsMGVTNTFjMlZ5TG5keWFYUmxJaXdpYVdSbGJuUnBkSGt1Y205c1pTNXlaV0ZrSWl3aWMyVnNiR1Z5TG5CeWIyUjFZM1J3Y21salpTNXpaWFIwYVc1bmN5NXlaV0ZrSWl3aWMyVnNiR1Z5TG5CeWIyUjFZM1J3Y21salpTNXpaWFIwYVc1bmN5NTNjbWwwWlNJc0ltTnZibVpwWjNWeVlYUnZjaTV3ZFhKamFHRnpaWEJ5YVdObExuSmxZV1FpTENKemRHOWpheTVtWVdKeWFXTXVjbVZoWkNJc0luTmhiR1Z6TG05eVpHVnlMbkJzWVdObElsMHNJbTVoYldVaU9pSlNiMkpwYmlJc0ltWmhiV2xzZVY5dVlXMWxJam9pWkdVZ1YybHVkR1Z5SUNoRGIyeHBhbTR0U1ZRcElpd2ljbTlzWlNJNld5SnpaV3hzWlhJaUxDSmtaV0ZzWlhKZmJXRnVZV2RsY2lKZExDSnBZWFFpT2pFM016Y3hNalEyTkRRc0luTmpiM0JsSWpwYkltTmhkR0ZzYjJkeGRXVnllV0Z3YVNJc0ltTnZibVpwWjNWeVlYUnZjbUZ3YVNJc0luQnliMlIxWTNSMllYSnBZVzUwWTI5dGJXRnVaR0Z3YVNJc0luQnliMlIxWTNSMllYSnBZVzUwY1hWbGNubGhjR2tpWFN3aVlXMXlJanBiSW1sdGNHVnljMjl1WVhScGIyNGlYWDAuSXJtZ0pieVByV3dOWU8xeGd5RmNWM09zbVE3cUY1bmJodXg4b3BMejhWVzR6YTNjbzRhWFVFNEU5SFlCekpGcHVyY3Y5VDdvTDBBaGJRcTR6YmpOU1c5NzNHWUFGSV9ldUlNWm9idHpYSEtfY29CdVR4V1huZkRDOE1tRkFKaGR1SXQxSFhnWVZYNmR0WV9SV3dhSGZFSXk0SjVZQmp4eldnSGdEclJHX0VkbjVfUUtmQzZQdVR6TFVvSGtJYXVsZWhHazhwdGxSS3dOb0hpR0F4a0h0LWdyZWZCalBseWVXOThPOVBxUHpsNF93UjZQX2M4d0pRaUZDakFQcEFEdmtLdXdkTjA2QkoyUTltWFFhc1lPb201TTZmLUI1MVBCUnlhalgtZjIwckEzamoxNmJSTG5JcXZXUlotcC1VMnp4ZldVS3dCQVhhLWFFY0xINkxIVEFRXCI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHZhcmlhbnQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgY29uZmlndXJhdG9yRmluaXNoZWQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBjb25maWd1cmF0aW9uRXJyb3I6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvLXByb2R1Y3QtaGQnKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3M6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBwdWJsaWMgaGRlQ29uZmlndXJhdG9yOiBFbGVtZW50UmVmO1xyXG5cclxuICBwcml2YXRlIF9za3U6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9zY3JpcHRMb2FkZXI6IFByb2R1Y3RTY3JpcHRMb2FkZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMlxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLl9zY3JpcHRMb2FkZXIudW5sb2FkU2NyaXB0cyh0aGlzLl9yZW5kZXJlcik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQ29uZmlndXJhdGlvbkZpbmlzaGVkKGV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50LmRldGFpbC52YXJpYW50ICYmIHR5cGVvZiBldmVudC5kZXRhaWwudmFyaWFudCA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgdGhpcy5jb25maWd1cmF0b3JGaW5pc2hlZC5lbWl0KGV2ZW50LmRldGFpbC52YXJpYW50KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY29uZmlndXJhdG9yRmluaXNoZWQuZW1pdCh0aGlzLnZhcmlhbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUVycm9yKGV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb25maWd1cmF0aW9uRXJyb3IuZW1pdChldmVudC5kZXRhaWwuc3RhdHVzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3ByZXBhcmVBdHRyaWJ1dGVzKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaGRlQ29uZmlndXJhdG9yICYmIHRoaXMuaGRlQ29uZmlndXJhdG9yLm5hdGl2ZUVsZW1lbnQgJiYgdGhpcy50b2tlbiAmJiAodGhpcy5za3UgfHwgdGhpcy52YXJpYW50KSkge1xyXG5cclxuICAgICAgdGhpcy5oZGVDb25maWd1cmF0b3IubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2JlYXJlclRva2VuJywgdGhpcy50b2tlbik7XHJcbiAgICAgIGlmICh0aGlzLl9za3UpIHtcclxuICAgICAgICB0aGlzLmhkZUNvbmZpZ3VyYXRvci5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1wcm9kdWN0SWQnLCB0aGlzLl9za3UpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnZhcmlhbnQpIHtcclxuICAgICAgICB0aGlzLmhkZUNvbmZpZ3VyYXRvci5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1wcm9kdWN0VmFyaWFudElkJywgdGhpcy52YXJpYW50KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9sb2FkVGhlU2NyaXB0cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gbG9hZCBleHRlcm5hbCBzY3JpcHRzXHJcbiAgcHJpdmF0ZSBhc3luYyBfbG9hZFRoZVNjcmlwdHMoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBzY3JpcHRzOiBzdHJpbmdbXSA9IFtcclxuICAgICAgLy8gaGFyZC1jb2RlZCBmb3Igbm93LCBzaG91bGQgY29tZSBmcm9tIHRoZSBleHRlcm5hbCBzb3VyY2VcclxuICAgICAgJ2h0dHBzOi8vaGRlLWNkbi5henVyZWVkZ2UubmV0L2xpYnMvY29tcG9uZW50cy9Db25maWd1cmF0b3IvMS4wLjMzL3BvbHlmaWxscy5qcycsXHJcbiAgICAgICdodHRwczovL2hkZS1jZG4uYXp1cmVlZGdlLm5ldC9saWJzL2NvbXBvbmVudHMvQ29uZmlndXJhdG9yLzEuMC4zMy9ydW50aW1lLmpzJyxcclxuICAgICAgJ2h0dHBzOi8vaGRlLWNkbi5henVyZWVkZ2UubmV0L2xpYnMvY29tcG9uZW50cy9Db25maWd1cmF0b3IvMS4wLjMzL21haW4uanMnXHJcbiAgICBdXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNjcmlwdHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgYXdhaXQgdGhpcy5fc2NyaXB0TG9hZGVyLmxvYWRTY3JpcHQoc2NyaXB0c1tpXSwgdGhpcy5fcmVuZGVyZXIpLmNhdGNoKChlcnJvcikgPT4gY29uc29sZS5lcnJvcihlcnJvcikpO1xyXG4gICAgfVxyXG4gICAgYXdhaXQgdGhpcy5fc2NyaXB0TG9hZGVyLmFkZFN0eWxlU2hlZXQoJ2h0dHBzOi8vaGRlLWNkbi5henVyZWVkZ2UubmV0L2xpYnMvY29tcG9uZW50cy9Db25maWd1cmF0b3IvMS4wLjMzL3N0eWxlcy5jc3MnLCB0aGlzLl9yZW5kZXJlcik7XHJcbiAgfVxyXG59XHJcbiJdfQ==
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1oZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvcHJvZHVjdC1oZC9wcm9kdWN0LWhkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBaUJ2RixNQUFNLE9BQU8sa0JBQWtCO0lBdUM3QixZQUNVLGFBQXlDLEVBQ3pDLFNBQW9CO1FBRHBCLGtCQUFhLEdBQWIsYUFBYSxDQUE0QjtRQUN6QyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBckJ2QixZQUFPLEdBQVcsRUFBRSxDQUFDO1FBR3JCLGNBQVMsR0FBOEIsRUFBRSxDQUFDO1FBRzFDLHlCQUFvQixHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBR3hFLHVCQUFrQixHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBSWhFLGNBQVMsR0FBWSxJQUFJLENBQUM7SUFVakMsQ0FBQztJQTFDRCxJQUFzRCxPQUFPLENBQUMsS0FBSztRQUNqRSxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFDVyxHQUFHLENBQUMsS0FBYTtRQUMxQixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNsQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBVyxHQUFHO1FBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUErQkQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRU0sMkJBQTJCLENBQUMsS0FBa0I7UUFDbkQsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLFFBQVEsRUFBRTtZQUNwRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDdEQ7YUFBTTtZQUNMLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzlDO0lBQ0gsQ0FBQztJQUVNLFdBQVcsQ0FBQyxLQUFrQjtRQUNuQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDNUgsK0RBQStEO1lBQy9ELGlDQUFpQztZQUVqQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzRSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUM5RTtZQUNELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDaEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUN4RjtZQUNELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN4QjtJQUNILENBQUM7SUFFRCwyQ0FBMkM7SUFDbkMsd0JBQXdCO1FBQzlCLDRDQUE0QztRQUM1QyxJQUFJLE1BQU0sR0FBVyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQTZCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3pHLElBQUksMkJBQTJCLEdBQVksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUE2QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLDZCQUE2QixDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3BKLElBQUkseUJBQXlCLEdBQVksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUE2QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLDJCQUEyQixDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ2hKLElBQUksa0JBQWtCLEdBQVksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUE2QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLG9CQUFvQixDQUFDLENBQUMsS0FBSyxDQUFDO1FBRWxJLHVCQUF1QjtRQUN2QixJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyw2QkFBNkIsRUFBRSwyQkFBMkIsQ0FBQyxDQUFDO1FBQzVHLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQywyQkFBMkIsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO1FBQ3hHLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsRUFBRSxrQkFBa0IsQ0FBQyxDQUFBO0lBQzNGLENBQUM7SUFFRCxvQ0FBb0M7SUFDdEIsZUFBZTs7WUFDM0IsSUFBSSxVQUFVLEdBQVcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUE2QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUM3RyxJQUFJLFdBQVcsR0FBYSxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzNDLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUM1RztZQUVELElBQUksTUFBTSxHQUFXLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBNkIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDN0csSUFBSSxXQUFXLEdBQWEsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUMzQyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDeEU7WUFFRCwrREFBK0Q7WUFDL0Q7Ozs7Ozs7OztxSkFTeUk7UUFDM0ksQ0FBQztLQUFBOzs7WUFwSUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxlQUFlO2dCQUN6QixRQUFRLEVBQUU7Ozs7Ozs7OztHQVNUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUFoQk8sMEJBQTBCO1lBSmhDLFNBQVM7OztzQkFzQlIsU0FBUyxTQUFDLGlCQUFpQixFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBQztrQkFLL0MsS0FBSztvQkFVTCxLQUFLO3NCQUdMLEtBQUs7d0JBR0wsS0FBSzttQ0FHTCxNQUFNO2lDQUdOLE1BQU07d0JBSU4sV0FBVyxTQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPdXRwdXQsXHJcbiAgUmVuZGVyZXIyLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvblxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1Byb2R1Y3RTY3JpcHRMb2FkZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3Byb2R1Y3Qtc2NyaXB0LWxvYWRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHtFeHRlcm5hbFNvdXJjZVBhcmFtZXRlcn0gZnJvbSAnQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvZXh0ZXJuYWwtc291cmNlLXBhcmFtZXRlci5ibyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvLXByb2R1Y3QtaGQnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8aGRlLWNvbmZpZ3VyYXRvciAjaGRlQ29uZmlndXJhdG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZT1cIm5sXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGxvY2FsaXphdGlvbkZpbGVFeHRlbnNpb249XCIuanNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY29uZmlndXJhdGlvbkZpbmlzaGVkKT1cImhhbmRsZUNvbmZpZ3VyYXRpb25GaW5pc2hlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjb25maWd1cmF0aW9uRmFpbGVkKT1cImhhbmRsZUVycm9yKCRldmVudClcIlxyXG4gICAgPlxyXG4gICAgICA8aGRlLXByb2dyZXNzLWJhcj48L2hkZS1wcm9ncmVzcy1iYXI+XHJcbiAgICA8L2hkZS1jb25maWd1cmF0b3I+XHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9kdWN0SGRDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ2hkZUNvbmZpZ3VyYXRvcicsIHtyZWFkOiBFbGVtZW50UmVmfSkgc2V0IGNvbnRlbnQoY2hpbGQpIHtcclxuICAgIHRoaXMuaGRlQ29uZmlndXJhdG9yID0gY2hpbGQ7XHJcbiAgICB0aGlzLl9wcmVwYXJlQXR0cmlidXRlcygpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHNrdSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9za3UgPSB2YWx1ZTtcclxuICAgIHRoaXMuX3ByZXBhcmVBdHRyaWJ1dGVzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHNrdSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NrdTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHRva2VuOiBzdHJpbmc7IC8vPSBcImV5SmhiR2NpT2lKU1V6STFOaUlzSW10cFpDSTZJa1l4T1RoRVJrVkVPRVV3UVRRMU16WTNNME0xTVVFMlJqazFRVVZEUXpVM1JUTTBOak00UmtSU1V6STFOaUlzSW5SNWNDSTZJbUYwSzJwM2RDSXNJbmcxZENJNklqaGFhbVkzV1RSTFVsUmFlbmhTY0hac1lUZE5WaTFPUjA5UU1DSjkuZXlKdVltWWlPakUzTXpjeE1qUTJORFFzSW1WNGNDSTZNVGN6TnpFeU9ESTBOQ3dpYVhOeklqb2lhSFIwY0hNNkx5OWliWE5wWkdWdWRHbDBlUzFoWTJObGNIUmhibU5sTG1GNmRYSmxkMlZpYzJsMFpYTXVibVYwSWl3aVlYVmtJanBiSW1OaGRHRnNiMmR4ZFdWeWVXRndhU0lzSW1OdmJtWnBaM1Z5WVhSdmNtRndhU0lzSW5CeWIyUjFZM1IyWVhKcFlXNTBZMjl0YldGdVpHRndhU0lzSW5CeWIyUjFZM1IyWVhKcFlXNTBjWFZsY25saGNHa2lYU3dpWTJ4cFpXNTBYMmxrSWpvaWFXMXdaWEp6YjI1aGRHbHZiaTVqYkdsbGJuUWlMQ0p6ZFdJaU9pSXdPVE13WkRJNE1pMDVOR1U0TFRRNU1HRXRPR0kyTkMxbVlUazFZbUl5WXpFMU9ESWlMQ0poZFhSb1gzUnBiV1VpT2pFM016Y3hNalEyTkRRc0ltbGtjQ0k2SW14dlkyRnNJaXdpWlc1MmFYSnZibTFsYm5RaU9pSk5VMHdpTENKelpXeHNaWElpT2lKVFJUQXdNREE1TmlJc0luTmxiR3hsY21kMWFXUWlPaUl4TURrMU1XSmpOUzFoWm1NekxUUTFNR0V0Tm1Wa01TMHdPR1E0TkRObE5tRTVPVFFpTENKd1pYSnRhWE56YVc5dUlqcGJJbk5oYkdWekxtVjRjRzl5ZEhSbGJYQnNZWFJsY3k1eVpXRmtJaXdpWkc5amRXMWxiblJzYVdKeVlYSjVMblJoWnk1eVpXRmtJaXdpWkc5amRXMWxiblJzYVdKeVlYSjVMbVJ2WTNWdFpXNTBMbkpsWVdRaUxDSmtiMk4xYldWdWRHeHBZbkpoY25rdWRHRm5aM0p2ZFhBdWNtVmhaQ0lzSW5OaGJHVnpMbTl5WkdWeUxuZHlhWFJsSWl3aWMyRnNaWE11WTNWemRHOXRaWEl1Y21WaFpDSXNJbk5oYkdWekxtOXlaR1Z5TG1SbGJHbDJaWEo1WVdSa2NtVnpjeTUzY21sMFpTSXNJbk5sY25acFkyVXVjbVZ4ZFdWemRDNXlaV0ZrSWl3aVkyRjBZV3h2Wnk1MFlXY3VjbVZoWkNJc0luTmhiR1Z6TG05eVpHVnlMbkpsWVdRaUxDSnpZV3hsY3k1amRYTjBiMjFsY2k1M2NtbDBaU0lzSW5KbGNYVmxjM1JtYjNKeGRXOTBaUzUzY21sMFpTSXNJbk5oYkdWekxtOXlaR1Z5TG1KdmIyc2lMQ0p5WlhGMVpYTjBabTl5Y1hWdmRHVXVjbVZoWkNJc0luTmhiR1Z6TG14bFlXUXVjbVZoWkNJc0luQjFjbU5vWVhObExtOXlaR1Z5TG5KbFlXUWlMQ0p6WVd4bGN5NXhkVzkwWlM1eVpXRmtJaXdpYzJGc1pYTXVjWFZ2ZEdVdWQzSnBkR1VpTENKallYUmhiRzluTG1sMFpXMHVjbVZoWkNJc0luTmhiR1Z6TG14bFlXUXVkM0pwZEdVaUxDSnpaWEoyYVdObExuSmxjWFZsYzNRdWMzVmliV2wwSWl3aWMyRnNaWE11YjNKa1pYSXVaR1ZzYVhabGNubGhaR1J5WlhOekxuSmxZV1FpTENKd2RYSmphR0Z6WlM1dmNtUmxjaTUzY21sMFpTSXNJbkIxY21Ob1lYTmxMbTl5WkdWeUxuQnlhV05sY3k1M2NtbDBaU0lzSW5CMWNtTm9ZWE5sTG05eVpHVnlMbkJ5YVdObGN5NXlaV0ZrSWl3aWMyVnlkbWxqWlM1eVpYRjFaWE4wTG5keWFYUmxJaXdpWTJGMFlXeHZaeTVqWVhSaGJHOW5MbkpsWVdRaUxDSmpZWFJoYkc5bkxtTmhkR0ZzYjJjdWQzSnBkR1VpTENKallYUmhiRzluTG1OMWNuSmxibU41TG5KbFlXUWlMQ0pqWVhSaGJHOW5MbU4xY25KbGJtTjVMbmR5YVhSbElpd2lZMkYwWVd4dlp5NXBkR1Z0TG5keWFYUmxJaXdpWTJGMFlXeHZaeTVzYjJOaGJHbDZZWFJwYjI0dWNtVmhaQ0lzSW1OaGRHRnNiMmN1Ykc5allXeHBlbUYwYVc5dUxuZHlhWFJsSWl3aVkyRjBZV3h2Wnk1d2NtOWtkV04wTG5KbFlXUWlMQ0pqWVhSaGJHOW5MbkJ5YjJSMVkzUXVkM0pwZEdVaUxDSmpZWFJoYkc5bkxuQnliMlIxWTNSelpYUjBhVzVuTG5KbFlXUWlMQ0pqWVhSaGJHOW5MbkJ5YjJSMVkzUnpaWFIwYVc1bkxuZHlhWFJsSWl3aVkyRjBZV3h2Wnk1elpXeHNaWEl1Y21WaFpDSXNJbU5oZEdGc2IyY3VjMlZzYkdWeUxuZHlhWFJsSWl3aVkyRjBZV3h2Wnk1MFlXY3VkM0pwZEdVaUxDSmpZWFJoYkc5bkxuVnZiUzV5WldGa0lpd2lZMkYwWVd4dlp5NTFiMjB1ZDNKcGRHVWlMQ0pqWVhSaGJHOW5MblpoZEdOaGRHVm5iM0o1TG5KbFlXUWlMQ0pqWVhSaGJHOW5MblpoZEdOaGRHVm5iM0o1TG5keWFYUmxJaXdpWTJGMFlXeHZaeTUyWlc1a2IzSXVjbVZoWkNJc0ltTmhkR0ZzYjJjdWRtVnVaRzl5TG5keWFYUmxJaXdpY0hWeVkyaGhjMlV1YzJWc2JHVnlMbkpsWVdRaUxDSndkWEpqYUdGelpTNXpaV3hzWlhJdWQzSnBkR1VpTENKallYUmhiRzluTG1GeWRHbGpiR1V1Y21WaFpDSXNJbU5oZEdGc2IyY3VZWEowYVdOc1pTNTNjbWwwWlNJc0luTmhiR1Z6TG5GMWIzUmxMbXhwYm1WekxuSmxZV1FpTENKellXeGxjeTV4ZFc5MFpTNXNhVzVsY3k1M2NtbDBaU0lzSW5OaGJHVnpMbk5sYkd4bGNpNXlaV0ZrSWl3aWMyRnNaWE11YzJWc2JHVnlMbmR5YVhSbElpd2lZV05qYjNWdWRHbHVaeTUyWlc1a2IzSnBiblp2YVdObExuSmxZV1FpTENKcFpHVnVkR2wwZVM1MWMyVnlMbkpsWVdRaUxDSnBaR1Z1ZEdsMGVTNTFjMlZ5TG5keWFYUmxJaXdpYVdSbGJuUnBkSGt1Y205c1pTNXlaV0ZrSWl3aWMyVnNiR1Z5TG5CeWIyUjFZM1J3Y21salpTNXpaWFIwYVc1bmN5NXlaV0ZrSWl3aWMyVnNiR1Z5TG5CeWIyUjFZM1J3Y21salpTNXpaWFIwYVc1bmN5NTNjbWwwWlNJc0ltTnZibVpwWjNWeVlYUnZjaTV3ZFhKamFHRnpaWEJ5YVdObExuSmxZV1FpTENKemRHOWpheTVtWVdKeWFXTXVjbVZoWkNJc0luTmhiR1Z6TG05eVpHVnlMbkJzWVdObElsMHNJbTVoYldVaU9pSlNiMkpwYmlJc0ltWmhiV2xzZVY5dVlXMWxJam9pWkdVZ1YybHVkR1Z5SUNoRGIyeHBhbTR0U1ZRcElpd2ljbTlzWlNJNld5SnpaV3hzWlhJaUxDSmtaV0ZzWlhKZmJXRnVZV2RsY2lKZExDSnBZWFFpT2pFM016Y3hNalEyTkRRc0luTmpiM0JsSWpwYkltTmhkR0ZzYjJkeGRXVnllV0Z3YVNJc0ltTnZibVpwWjNWeVlYUnZjbUZ3YVNJc0luQnliMlIxWTNSMllYSnBZVzUwWTI5dGJXRnVaR0Z3YVNJc0luQnliMlIxWTNSMllYSnBZVzUwY1hWbGNubGhjR2tpWFN3aVlXMXlJanBiSW1sdGNHVnljMjl1WVhScGIyNGlYWDAuSXJtZ0pieVByV3dOWU8xeGd5RmNWM09zbVE3cUY1bmJodXg4b3BMejhWVzR6YTNjbzRhWFVFNEU5SFlCekpGcHVyY3Y5VDdvTDBBaGJRcTR6YmpOU1c5NzNHWUFGSV9ldUlNWm9idHpYSEtfY29CdVR4V1huZkRDOE1tRkFKaGR1SXQxSFhnWVZYNmR0WV9SV3dhSGZFSXk0SjVZQmp4eldnSGdEclJHX0VkbjVfUUtmQzZQdVR6TFVvSGtJYXVsZWhHazhwdGxSS3dOb0hpR0F4a0h0LWdyZWZCalBseWVXOThPOVBxUHpsNF93UjZQX2M4d0pRaUZDakFQcEFEdmtLdXdkTjA2QkoyUTltWFFhc1lPb201TTZmLUI1MVBCUnlhalgtZjIwckEzamoxNmJSTG5JcXZXUlotcC1VMnp4ZldVS3dCQVhhLWFFY0xINkxIVEFRXCI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHZhcmlhbnQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyB1cmxQYXJhbXM6IEV4dGVybmFsU291cmNlUGFyYW1ldGVyW10gPSBbXTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGNvbmZpZ3VyYXRvckZpbmlzaGVkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgY29uZmlndXJhdGlvbkVycm9yOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby1wcm9kdWN0LWhkJylcclxuICBwdWJsaWMgc2hvd0NsYXNzOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgcHVibGljIGhkZUNvbmZpZ3VyYXRvcjogRWxlbWVudFJlZjtcclxuXHJcbiAgcHJpdmF0ZSBfc2t1OiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfc2NyaXB0TG9hZGVyOiBQcm9kdWN0U2NyaXB0TG9hZGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjJcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5fc2NyaXB0TG9hZGVyLnVubG9hZFNjcmlwdHModGhpcy5fcmVuZGVyZXIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUNvbmZpZ3VyYXRpb25GaW5pc2hlZChldmVudDogQ3VzdG9tRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmIChldmVudC5kZXRhaWwudmFyaWFudCAmJiB0eXBlb2YgZXZlbnQuZGV0YWlsLnZhcmlhbnQgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHRoaXMuY29uZmlndXJhdG9yRmluaXNoZWQuZW1pdChldmVudC5kZXRhaWwudmFyaWFudCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRvckZpbmlzaGVkLmVtaXQodGhpcy52YXJpYW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVFcnJvcihldmVudDogQ3VzdG9tRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuY29uZmlndXJhdGlvbkVycm9yLmVtaXQoZXZlbnQuZGV0YWlsLnN0YXR1cyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9wcmVwYXJlQXR0cmlidXRlcygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmhkZUNvbmZpZ3VyYXRvciAmJiB0aGlzLmhkZUNvbmZpZ3VyYXRvci5uYXRpdmVFbGVtZW50ICYmIHRoaXMudXJsUGFyYW1zICYmIHRoaXMudG9rZW4gJiYgKHRoaXMuc2t1IHx8IHRoaXMudmFyaWFudCkpIHtcclxuICAgICAgLy9mb3IgbG9jYWwgdGVzdGluZyBwbGVhc2UgdHVybiBvZmYgZm9yIHBhY2tpbmcgYW5kIHB1Ymxpc2hpbmchXHJcbiAgICAgIC8vdGhpcy5wcmVwYXJlVGVzdGluZ1VybHBhcmFtcygpO1xyXG5cclxuICAgICAgdGhpcy5fcHJlcGFyZUNvbmZpZ3VyYXRvclVybHMoKTtcclxuICAgICAgdGhpcy5oZGVDb25maWd1cmF0b3IubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2JlYXJlclRva2VuJywgdGhpcy50b2tlbik7XHJcbiAgICAgIGlmICh0aGlzLl9za3UpIHtcclxuICAgICAgICB0aGlzLmhkZUNvbmZpZ3VyYXRvci5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1wcm9kdWN0SWQnLCB0aGlzLl9za3UpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnZhcmlhbnQpIHtcclxuICAgICAgICB0aGlzLmhkZUNvbmZpZ3VyYXRvci5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1wcm9kdWN0VmFyaWFudElkJywgdGhpcy52YXJpYW50KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9sb2FkVGhlU2NyaXB0cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9zZXQgbmVjZXNzYXJ5IHJlZmVyZW5jZXMgdG8gY29uZmlndXJhdG9yLlxyXG4gIHByaXZhdGUgX3ByZXBhcmVDb25maWd1cmF0b3JVcmxzKCk6IHZvaWQge1xyXG4gICAgLy9mZXRjaCB0aGUgc2V0dGluZyBmcm9tIHRoZSBleHRlcm5hbCBzb3VyY2VcclxuICAgIGxldCBhcGl1cmw6IHN0cmluZyA9IHRoaXMudXJsUGFyYW1zLmZpbmQoKGl0ZW06IEV4dGVybmFsU291cmNlUGFyYW1ldGVyKSA9PiBpdGVtLmtleSA9PT0gJ2FwaXVybCcpLnZhbHVlO1xyXG4gICAgbGV0IHByb2R1Y3RWYXJpYW50Q29tbWFuZEFwaVVybDogc3RyaW5nID0gIHRoaXMudXJsUGFyYW1zLmZpbmQoKGl0ZW06IEV4dGVybmFsU291cmNlUGFyYW1ldGVyKSA9PiBpdGVtLmtleSA9PT0gJ3Byb2R1Y3RWYXJpYW50Q29tbWFuZEFwaVVybCcpLnZhbHVlO1xyXG4gICAgbGV0IHByb2R1Y3RWYXJpYW50UXVlcnlBcGlVcmw6IHN0cmluZyA9ICB0aGlzLnVybFBhcmFtcy5maW5kKChpdGVtOiBFeHRlcm5hbFNvdXJjZVBhcmFtZXRlcikgPT4gaXRlbS5rZXkgPT09ICdwcm9kdWN0VmFyaWFudFF1ZXJ5QXBpVXJsJykudmFsdWU7XHJcbiAgICBsZXQgbG9jYWxpemF0aW9uQXBpVXJsOiBzdHJpbmcgPSAgdGhpcy51cmxQYXJhbXMuZmluZCgoaXRlbTogRXh0ZXJuYWxTb3VyY2VQYXJhbWV0ZXIpID0+IGl0ZW0ua2V5ID09PSAnbG9jYWxpemF0aW9uQXBpVXJsJykudmFsdWU7XHJcblxyXG4gICAgLy9hcHBseSB0byBjb25maWd1cmF0b3JcclxuICAgIHRoaXMuaGRlQ29uZmlndXJhdG9yLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcGl1cmwnLCBhcGl1cmwpO1xyXG4gICAgdGhpcy5oZGVDb25maWd1cmF0b3IubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3Byb2R1Y3RWYXJpYW50Q29tbWFuZEFwaVVybCcsIHByb2R1Y3RWYXJpYW50Q29tbWFuZEFwaVVybCk7XHJcbiAgICB0aGlzLmhkZUNvbmZpZ3VyYXRvci5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgncHJvZHVjdFZhcmlhbnRRdWVyeUFwaVVybCcsIHByb2R1Y3RWYXJpYW50UXVlcnlBcGlVcmwpO1xyXG4gICAgdGhpcy5oZGVDb25maWd1cmF0b3IubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2xvY2FsaXphdGlvbkFwaVVybCcsIGxvY2FsaXphdGlvbkFwaVVybClcclxuICB9XHJcblxyXG4gIC8vIGxvYWQgZXh0ZXJuYWwgc2NyaXB0cyBpbnRvIGNsaWVudFxyXG4gIHByaXZhdGUgYXN5bmMgX2xvYWRUaGVTY3JpcHRzKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgbGV0IGhlYWRlclVybHM6IHN0cmluZyA9IHRoaXMudXJsUGFyYW1zLmZpbmQoKGl0ZW06IEV4dGVybmFsU291cmNlUGFyYW1ldGVyKSA9PiBpdGVtLmtleSA9PT0gJ2hlYWRlcicpLnZhbHVlO1xyXG4gICAgbGV0IGhlYWRlckFycmF5OiBzdHJpbmdbXSA9IGhlYWRlclVybHMucmVwbGFjZSgvXFxzKy9nLCAnJykuc3BsaXQoJywnKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaGVhZGVyQXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgYXdhaXQgdGhpcy5fc2NyaXB0TG9hZGVyLmxvYWRTY3JpcHQoaGVhZGVyQXJyYXlbaV0sIHRoaXMuX3JlbmRlcmVyKS5jYXRjaCgoZXJyb3IpID0+IGNvbnNvbGUuZXJyb3IoZXJyb3IpKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgc3R5bGVzOiBzdHJpbmcgPSB0aGlzLnVybFBhcmFtcy5maW5kKChpdGVtOiBFeHRlcm5hbFNvdXJjZVBhcmFtZXRlcikgPT4gaXRlbS5rZXkgPT09ICdzdHlsZXNoZWV0JykudmFsdWU7XHJcbiAgICBsZXQgc3R5bGVzQXJyYXk6IHN0cmluZ1tdID0gc3R5bGVzLnJlcGxhY2UoL1xccysvZywgJycpLnNwbGl0KCcsJyk7XHJcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHN0eWxlc0FycmF5Lmxlbmd0aDsgaisrKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuX3NjcmlwdExvYWRlci5hZGRTdHlsZVNoZWV0KHN0eWxlc0FycmF5W2pdLCB0aGlzLl9yZW5kZXJlcik7XHJcbiAgICB9XHJcblxyXG4gICAgLy9mb3IgbG9jYWwgdGVzdGluZyBwbGVhc2UgdHVybiBvZmYgZm9yIHBhY2tpbmcgYW5kIHB1Ymxpc2hpbmchXHJcbiAgICAvKmNvbnN0IHNjcmlwdHM6IHN0cmluZ1tdID0gW1xyXG4gICAgICAvLyBoYXJkLWNvZGVkIGZvciBub3csIHNob3VsZCBjb21lIGZyb20gdGhlIGV4dGVybmFsIHNvdXJjZVxyXG4gICAgICAnaHR0cHM6Ly9oZGUtY2RuLmF6dXJlZWRnZS5uZXQvbGlicy9jb21wb25lbnRzL0NvbmZpZ3VyYXRvci8xLjAuMzMvcG9seWZpbGxzLmpzJyxcclxuICAgICAgJ2h0dHBzOi8vaGRlLWNkbi5henVyZWVkZ2UubmV0L2xpYnMvY29tcG9uZW50cy9Db25maWd1cmF0b3IvMS4wLjMzL3J1bnRpbWUuanMnLFxyXG4gICAgICAnaHR0cHM6Ly9oZGUtY2RuLmF6dXJlZWRnZS5uZXQvbGlicy9jb21wb25lbnRzL0NvbmZpZ3VyYXRvci8xLjAuMzMvbWFpbi5qcydcclxuICAgIF1cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBhd2FpdCB0aGlzLl9zY3JpcHRMb2FkZXIubG9hZFNjcmlwdChzY3JpcHRzW2ldLCB0aGlzLl9yZW5kZXJlcikuY2F0Y2goKGVycm9yKSA9PiBjb25zb2xlLmVycm9yKGVycm9yKSk7XHJcbiAgICB9XHJcbiAgICBhd2FpdCB0aGlzLl9zY3JpcHRMb2FkZXIuYWRkU3R5bGVTaGVldCgnaHR0cHM6Ly9oZGUtY2RuLmF6dXJlZWRnZS5uZXQvbGlicy9jb21wb25lbnRzL0NvbmZpZ3VyYXRvci8xLjAuMzMvc3R5bGVzLmNzcycsIHRoaXMuX3JlbmRlcmVyKTsqL1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAvL2ZvciBsb2NhbCB0ZXN0aW5nIHBsZWFzZSB0dXJuIG9mZiBmb3IgcGFja2luZyBhbmQgcHVibGlzaGluZyFcclxuICAvKnByaXZhdGUgcHJlcGFyZVRlc3RpbmdVcmxwYXJhbXMoKTogdm9pZCB7XHJcbiAgICBsZXQgaGVhZGVyczogRXh0ZXJuYWxTb3VyY2VQYXJhbWV0ZXIgPSBuZXcgRXh0ZXJuYWxTb3VyY2VQYXJhbWV0ZXIoKTtcclxuICAgIGhlYWRlcnMuaWQgPSAxO1xyXG4gICAgaGVhZGVycy5rZXkgPSAnaGVhZGVyJztcclxuICAgIGhlYWRlcnMudmFsdWUgPSAnaHR0cHM6Ly9oZGUtY2RuLmF6dXJlZWRnZS5uZXQvbGlicy9jb21wb25lbnRzL0NvbmZpZ3VyYXRvci8xLjAuMzMvcG9seWZpbGxzLmpzLGh0dHBzOi8vaGRlLWNkbi5henVyZWVkZ2UubmV0L2xpYnMvY29tcG9uZW50cy9Db25maWd1cmF0b3IvMS4wLjMzL3J1bnRpbWUuanMsaHR0cHM6Ly9oZGUtY2RuLmF6dXJlZWRnZS5uZXQvbGlicy9jb21wb25lbnRzL0NvbmZpZ3VyYXRvci8xLjAuMzMvbWFpbi5qcyc7XHJcbiAgICBsZXQgc3R5bGVzOiBFeHRlcm5hbFNvdXJjZVBhcmFtZXRlciA9IG5ldyBFeHRlcm5hbFNvdXJjZVBhcmFtZXRlcigpO1xyXG4gICAgc3R5bGVzLmlkID0gMjtcclxuICAgIHN0eWxlcy5rZXkgPSAnc3R5bGVzaGVldCc7XHJcbiAgICBzdHlsZXMudmFsdWUgPSAnaHR0cHM6Ly9oZGUtY2RuLmF6dXJlZWRnZS5uZXQvbGlicy9jb21wb25lbnRzL0NvbmZpZ3VyYXRvci8xLjAuMzMvc3R5bGVzLmNzcyc7XHJcbiAgICB0aGlzLnVybFBhcmFtcy5wdXNoKGhlYWRlcnMpO1xyXG4gICAgdGhpcy51cmxQYXJhbXMucHVzaChzdHlsZXMpO1xyXG4gICAgbGV0IGF1cmw6IEV4dGVybmFsU291cmNlUGFyYW1ldGVyID0gbmV3IEV4dGVybmFsU291cmNlUGFyYW1ldGVyKCk7XHJcbiAgICBhdXJsLmlkID0gMztcclxuICAgIGF1cmwua2V5ID0gJ2FwaXVybCc7XHJcbiAgICBhdXJsLnZhbHVlID0gJ2h0dHBzOi8vYm1zcHJvZHVjdGNvbmZpZ3VyYXRvci1hY2NlcHRhbmNlLmF6dXJld2Vic2l0ZXMubmV0L2FwaS9jb25maWd1cmF0b3IvJztcclxuICAgIGxldCBwdXJsOiBFeHRlcm5hbFNvdXJjZVBhcmFtZXRlciA9IG5ldyBFeHRlcm5hbFNvdXJjZVBhcmFtZXRlcigpO1xyXG4gICAgcHVybC5pZCA9IDQ7XHJcbiAgICBwdXJsLmtleSA9ICdwcm9kdWN0VmFyaWFudENvbW1hbmRBcGlVcmwnO1xyXG4gICAgcHVybC52YWx1ZSA9ICdodHRwczovL2Jtc3Byb2R1Y3R2YXJpYW50Y29tbWFuZC1hY2NlcHRhbmNlLmF6dXJld2Vic2l0ZXMubmV0Lyc7XHJcbiAgICBsZXQgcXVybDogRXh0ZXJuYWxTb3VyY2VQYXJhbWV0ZXIgPSBuZXcgRXh0ZXJuYWxTb3VyY2VQYXJhbWV0ZXIoKTtcclxuICAgIHF1cmwuaWQgPSA1O1xyXG4gICAgcXVybC5rZXkgPSAncHJvZHVjdFZhcmlhbnRRdWVyeUFwaVVybCc7XHJcbiAgICBxdXJsLnZhbHVlID0gJ2h0dHBzOi8vYm1zcHJvZHVjdHZhcmlhbnRxdWVyeS1hY2NlcHRhbmNlLmF6dXJld2Vic2l0ZXMubmV0Lyc7XHJcbiAgICBsZXQgbHVybDogRXh0ZXJuYWxTb3VyY2VQYXJhbWV0ZXIgPSBuZXcgRXh0ZXJuYWxTb3VyY2VQYXJhbWV0ZXIoKTtcclxuICAgIGx1cmwuaWQgPSA2O1xyXG4gICAgbHVybC5rZXkgPSAnbG9jYWxpemF0aW9uQXBpVXJsJztcclxuICAgIGx1cmwudmFsdWUgPSAnaHR0cHM6Ly9oZGUtY2RuLmF6dXJlZWRnZS5uZXQvbGlicy9CTVMuRFNULkxvY2FsaXphdGlvbi8nO1xyXG4gICAgdGhpcy51cmxQYXJhbXMucHVzaChoZWFkZXJzKTtcclxuICAgIHRoaXMudXJsUGFyYW1zLnB1c2goc3R5bGVzKTtcclxuICAgIHRoaXMudXJsUGFyYW1zLnB1c2goYXVybCk7XHJcbiAgICB0aGlzLnVybFBhcmFtcy5wdXNoKHB1cmwpO1xyXG4gICAgdGhpcy51cmxQYXJhbXMucHVzaChxdXJsKTtcclxuICAgIHRoaXMudXJsUGFyYW1zLnB1c2gobHVybCk7XHJcbiAgfSovXHJcbn1cclxuIl19
@@ -26,6 +26,7 @@ export class ProductPageComponent {
26
26
  this.show2D = true;
27
27
  this.show3D = false;
28
28
  this.configuring = false;
29
+ this.showAddToCart = false;
29
30
  this.fullscreenAnimationEnd = false;
30
31
  this.settingsLoaded = false;
31
32
  this._fullScreen = false;
@@ -36,6 +37,13 @@ export class ProductPageComponent {
36
37
  }
37
38
  }), this.settingsService.settingsLoaded.subscribe(loaded => this._handleSettingsLoaded(loaded)), this._ione.controllerInitialized.subscribe((initialized) => {
38
39
  this.settingsLoaded = initialized;
40
+ }), this.appEventService.onAnswersAvailable.subscribe((answers) => {
41
+ if (answers && this.configurable) {
42
+ this.showAddToCart = false;
43
+ }
44
+ else {
45
+ this.showAddToCart = true;
46
+ }
39
47
  }));
40
48
  }
41
49
  set sku(value) {
@@ -138,8 +146,12 @@ export class ProductPageComponent {
138
146
  if (this.article) {
139
147
  this.configurable = this.article.goodType === 'B';
140
148
  if (this.configurable) {
149
+ this.showAddToCart = false;
141
150
  this.currentView = SelectorType.TwoD;
142
151
  }
152
+ else {
153
+ this.showAddToCart = true;
154
+ }
143
155
  this.threeD = this.article.is3D;
144
156
  this.selectorType = this.article.selectorTypeCustomer;
145
157
  this._ione.getDeliveryPrognosis(this.article.goodId).then((stockInfo) => {
@@ -165,7 +177,7 @@ export class ProductPageComponent {
165
177
  ProductPageComponent.decorators = [
166
178
  { type: Component, args: [{
167
179
  selector: 'app-product-page',
168
- template: "<ng-container *ngIf=\"settingsLoaded\">\r\n <div class=\"page-wrapper\">\r\n <div class=\"page-wrapper-content\">\r\n <div class=\"page-wrapper-left\">\r\n <div class=\"product-image-container\">\r\n <div class=\"product-page-block-selector-type\">\r\n <app-product-selector-type class=\"default-padding\"\r\n [(currentType)]=\"currentView\"\r\n [show2D]=\"configurable\"\r\n [show3D]=\"threeD\"\r\n ></app-product-selector-type>\r\n </div>\r\n <div class=\"product-page-block-image default-padding\" [class.full]=\"fullScreen\">\r\n <app-image-carousel [@toggleVisibilityByState]=\"show2D ? 'show' : 'hide'\" [images]=\"article?.images\" [showRefresh]=\"configurable && threeD\"></app-image-carousel>\r\n <ng-container *ngIf=\"settingsLoaded\">\r\n <threed-configurator #configurator class=\"threed-configurator\"\r\n [class.configurator-full-screen]=\"fullScreen\"\r\n [@toggleVisibilityByState]=\"show3D ? 'show' : 'hide'\"\r\n [@toggleFullScreen]=\"fullScreen ? 'fullscreen' : 'halfscreen'\"\r\n ></threed-configurator>\r\n </ng-container>\r\n <co-icon #fullscreenbutton class=\"fullscreen-button\" *ngIf=\"show3D\"\r\n [@toggleTopLeft]=\"fullScreen ? 'fullscreen' : 'halfscreen'\"\r\n [iconData]=\"iconCache.getIcon(fullScreenIcon)\"\r\n (click)=\"showFullScreen()\"></co-icon>\r\n <co-icon class=\"threed-watermark\" *ngIf=\"show3D && fullScreen\"\r\n [iconData]=\"iconCache.getIcon(icon.Logo)\"></co-icon>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"page-wrapper-right\">\r\n <div class=\"product-page-block-description\">\r\n <app-product-description class=\"default-padding\" [article]=\"article\"></app-product-description>\r\n </div>\r\n <div class=\"product-page-block-additional\">\r\n <div class=\"product-page-block-additional-description\">\r\n <app-product-additional-description class=\"default-padding\" [article]=\"article\"></app-product-additional-description>\r\n </div>\r\n <div class=\"product-page-block-price\" [class.full]=\"configuring\">\r\n <app-product-price class=\"s-padding\" *ngIf=\"!configuring\"\r\n [pricing]=\"article?.pricing\"\r\n [configurable]=\"configurable\"\r\n ></app-product-price>\r\n <ng-container *ngIf=\"settingsLoaded\">\r\n <threed-selections #selections class=\"threed-selections\" [class.show-selections]=\"configuring\" [@toggleFullScreenRight]=\"fullScreen ? 'fullscreen' : 'halfscreen'\"\r\n [class.default-padding]=\"!fullScreen\"\r\n [class.show-full-screen]=\"fullScreen\"\r\n [class.mini-scrollbar]=\"fullScreen\"\r\n [sku]=\"sku\"\r\n [settings]=\"settings\"\r\n (onUserActionFromThreeD)=\"configuring = true\"\r\n (instanceSet)=\"setInstance($event)\"\r\n (onImageReceived)=\"appEventService.onImageReceived.next($event)\"\r\n (onRenderStarted)=\"appEventService.onRenderStarted.next()\"\r\n (onDraftRenderImageReceived)=\"appEventService.onDraftRenderImageReceived.next($event)\"\r\n (onArticleReceived)=\"appEventService.onArticleReceived.next($event.detail)\"\r\n (onSelectionsReceived)=\"appEventService.onSelectionsReceived.next($event.detail)\"\r\n (onArticleInfoReceived)=\"appEventService.onArticleInfoReceived.next($event.detail)\"\r\n ></threed-selections>\r\n </ng-container>\r\n </div>\r\n <div class=\"product-page-block-addtocart no-padding product-action-buttons\" *ngIf=\"!configuring\" [@toggleTopRight]=\"fullScreen ? 'fullscreen' : 'halfscreen'\">\r\n <app-product-addtocart\r\n [configurable]=\"configurable\"\r\n [createFrozenArticle]=\"createFrozenArticle\"\r\n [configuring]=\"configuring\"\r\n [article]=\"article\"\r\n [externalSource]=\"externalSource\"\r\n [isReturn]=\"isReturn\"\r\n (startConfiguration)=\"handleStartConfiguration()\"\r\n (showRelatedPopup)=\"handlePopUpChange($event)\"\r\n ></app-product-addtocart>\r\n </div>\r\n <div class=\"addtocart-reserved product-action-buttons\" *ngIf=\"configuring\" [class.full-screen]=\"fullScreen\">\r\n <app-product-addtocart class=\"default-padding\"\r\n [configurable]=\"false\"\r\n [fullscreen]=\"fullScreen\"\r\n [configuring]=\"configuring\"\r\n [article]=\"article\"\r\n [externalSource]=\"externalSource\"\r\n [isReturn]=\"isReturn\"\r\n (startConfiguration)=\"handleStartConfiguration()\"\r\n ></app-product-addtocart>\r\n </div>\r\n <div class=\"product-page-block-variants\">\r\n <app-product-related class=\"no-padding\" *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [externalSource]=\"externalSource\"\r\n [articles]=\"article?.relatedArticles\" [refType]=\"64\" [label]=\"'VARIANTS' | localize\"></app-product-related>\r\n </div>\r\n <div class=\"product-page-block-stock\">\r\n <app-product-stock class=\"no-padding\" [goodId]=\"article?.goodId\" (openStockEvent)=\"openStock()\"></app-product-stock>\r\n </div>\r\n <div class=\"product-page-block-delivery\">\r\n <app-product-delivery class=\"no-padding\" [stockAndDelivery]=\"stockAndDelivery\"></app-product-delivery>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"page-wrapper-content\">\r\n <div class=\"page-wrapper-left\">\r\n <app-product-info-tabs class=\"no-padding\" [article]=\"article\"></app-product-info-tabs>\r\n </div>\r\n <div class=\"page-wrapper-right\">\r\n <div class=\"product-page-block-related s-padding\">\r\n <app-product-related\r\n *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [externalSource]=\"externalSource\"\r\n [articles]=\"article?.relatedArticles\"\r\n [refType]=\"1\"\r\n [label]=\"'RELATED_PRODUCTS' | localize\">\r\n </app-product-related>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"page-wrapper-content no-top-margin\">\r\n <div class=\"page-wrapper-full\">\r\n <div class=\"product-page-block-alternatives s-padding\">\r\n <app-product-related\r\n *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [externalSource]=\"externalSource\"\r\n [articles]=\"article?.relatedArticles\"\r\n [refType]=\"4\"\r\n [isSmallModus]=\"false\"\r\n [label]=\"'ALTERNATIVE_PRODUCTS' | localize\">\r\n </app-product-related>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"showRelatedProductsPopup\">\r\n <co-product-dialog\r\n [mainArticle]=\"article\"\r\n [articles]=\"article?.relatedArticles\"\r\n [refType]=\"1\"\r\n (closeRelatedPopup)=\"handlePopUpChange($event)\"\r\n >\r\n </co-product-dialog>\r\n\r\n<!-- <app-product-related class=\"no-padding\" *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"-->\r\n<!-- [articles]=\"article?.relatedArticles\" [refType]=\"64\" [label]=\"'VARIANTS' | localize\"></app-product-related>-->\r\n </div>\r\n\r\n\r\n </div>\r\n</ng-container>\r\n",
180
+ template: "<ng-container *ngIf=\"settingsLoaded\">\r\n <div class=\"page-wrapper\">\r\n <div class=\"page-wrapper-content\">\r\n <div class=\"page-wrapper-left\">\r\n <div class=\"product-image-container\">\r\n <div class=\"product-page-block-selector-type\">\r\n <app-product-selector-type class=\"default-padding\"\r\n [(currentType)]=\"currentView\"\r\n [show2D]=\"configurable\"\r\n [show3D]=\"threeD\"\r\n ></app-product-selector-type>\r\n </div>\r\n <div class=\"product-page-block-image default-padding\" [class.full]=\"fullScreen\">\r\n <app-image-carousel [@toggleVisibilityByState]=\"show2D ? 'show' : 'hide'\" [images]=\"article?.images\" [showRefresh]=\"configurable && threeD\"></app-image-carousel>\r\n <ng-container *ngIf=\"settingsLoaded\">\r\n <threed-configurator #configurator class=\"threed-configurator\"\r\n [class.configurator-full-screen]=\"fullScreen\"\r\n [@toggleVisibilityByState]=\"show3D ? 'show' : 'hide'\"\r\n [@toggleFullScreen]=\"fullScreen ? 'fullscreen' : 'halfscreen'\"\r\n ></threed-configurator>\r\n </ng-container>\r\n <co-icon #fullscreenbutton class=\"fullscreen-button\" *ngIf=\"show3D\"\r\n [@toggleTopLeft]=\"fullScreen ? 'fullscreen' : 'halfscreen'\"\r\n [iconData]=\"iconCache.getIcon(fullScreenIcon)\"\r\n (click)=\"showFullScreen()\"></co-icon>\r\n <co-icon class=\"threed-watermark\" *ngIf=\"show3D && fullScreen\"\r\n [iconData]=\"iconCache.getIcon(icon.Logo)\"></co-icon>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"page-wrapper-right\">\r\n <div class=\"product-page-block-description\">\r\n <app-product-description class=\"default-padding\" [article]=\"article\"></app-product-description>\r\n </div>\r\n <div class=\"product-page-block-additional\">\r\n <div class=\"product-page-block-additional-description\">\r\n <app-product-additional-description class=\"default-padding\" [article]=\"article\"></app-product-additional-description>\r\n </div>\r\n <div class=\"product-page-block-price\" [class.full]=\"configuring\">\r\n <app-product-price class=\"s-padding\" *ngIf=\"!configuring\"\r\n [pricing]=\"article?.pricing\"\r\n [configurable]=\"configurable\"\r\n ></app-product-price>\r\n <ng-container *ngIf=\"settingsLoaded\">\r\n <threed-selections #selections class=\"threed-selections\" [class.show-selections]=\"configuring\" [@toggleFullScreenRight]=\"fullScreen ? 'fullscreen' : 'halfscreen'\"\r\n [class.default-padding]=\"!fullScreen\"\r\n [class.show-full-screen]=\"fullScreen\"\r\n [class.mini-scrollbar]=\"fullScreen\"\r\n [sku]=\"sku\"\r\n [settings]=\"settings\"\r\n (onUserActionFromThreeD)=\"configuring = true\"\r\n (instanceSet)=\"setInstance($event)\"\r\n (onImageReceived)=\"appEventService.onImageReceived.next($event)\"\r\n (onRenderStarted)=\"appEventService.onRenderStarted.next()\"\r\n (onDraftRenderImageReceived)=\"appEventService.onDraftRenderImageReceived.next($event)\"\r\n (onArticleReceived)=\"appEventService.onArticleReceived.next($event.detail)\"\r\n (onSelectionsReceived)=\"appEventService.onSelectionsReceived.next($event.detail)\"\r\n (onArticleInfoReceived)=\"appEventService.onArticleInfoReceived.next($event.detail)\"\r\n (onAnswersAvailable)=\"appEventService.onAnswersAvailable.next($event.detail)\"\r\n ></threed-selections>\r\n </ng-container>\r\n </div>\r\n <div class=\"product-page-block-addtocart no-padding product-action-buttons\" *ngIf=\"!configuring\" [@toggleTopRight]=\"fullScreen ? 'fullscreen' : 'halfscreen'\">\r\n <app-product-addtocart\r\n [configurable]=\"configurable\"\r\n [createFrozenArticle]=\"createFrozenArticle\"\r\n [configuring]=\"configuring\"\r\n [showAddToCart]=\"showAddToCart\"\r\n [article]=\"article\"\r\n [externalSource]=\"externalSource\"\r\n [isReturn]=\"isReturn\"\r\n (startConfiguration)=\"handleStartConfiguration()\"\r\n (showRelatedPopup)=\"handlePopUpChange($event)\"\r\n ></app-product-addtocart>\r\n </div>\r\n <div class=\"addtocart-reserved product-action-buttons\" *ngIf=\"configuring\" [class.full-screen]=\"fullScreen\">\r\n <app-product-addtocart class=\"default-padding\"\r\n [configurable]=\"false\"\r\n [fullscreen]=\"fullScreen\"\r\n [showAddToCart]=\"showAddToCart\"\r\n [configuring]=\"configuring\"\r\n [article]=\"article\"\r\n [externalSource]=\"externalSource\"\r\n [isReturn]=\"isReturn\"\r\n (startConfiguration)=\"handleStartConfiguration()\"\r\n ></app-product-addtocart>\r\n </div>\r\n <div class=\"product-page-block-variants\">\r\n <app-product-related class=\"no-padding\" *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [externalSource]=\"externalSource\"\r\n [articles]=\"article?.relatedArticles\" [refType]=\"64\" [label]=\"'VARIANTS' | localize\"></app-product-related>\r\n </div>\r\n <div class=\"product-page-block-stock\">\r\n <app-product-stock class=\"no-padding\" [goodId]=\"article?.goodId\" (openStockEvent)=\"openStock()\"></app-product-stock>\r\n </div>\r\n <div class=\"product-page-block-delivery\">\r\n <app-product-delivery class=\"no-padding\" [stockAndDelivery]=\"stockAndDelivery\"></app-product-delivery>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"page-wrapper-content\">\r\n <div class=\"page-wrapper-left\">\r\n <app-product-info-tabs class=\"no-padding\" [article]=\"article\"></app-product-info-tabs>\r\n </div>\r\n <div class=\"page-wrapper-right\">\r\n <div class=\"product-page-block-related s-padding\">\r\n <app-product-related\r\n *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [externalSource]=\"externalSource\"\r\n [articles]=\"article?.relatedArticles\"\r\n [refType]=\"1\"\r\n [label]=\"'RELATED_PRODUCTS' | localize\">\r\n </app-product-related>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"page-wrapper-content no-top-margin\">\r\n <div class=\"page-wrapper-full\">\r\n <div class=\"product-page-block-alternatives s-padding\">\r\n <app-product-related\r\n *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [externalSource]=\"externalSource\"\r\n [articles]=\"article?.relatedArticles\"\r\n [refType]=\"4\"\r\n [isSmallModus]=\"false\"\r\n [label]=\"'ALTERNATIVE_PRODUCTS' | localize\">\r\n </app-product-related>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"showRelatedProductsPopup\">\r\n <co-product-dialog\r\n [mainArticle]=\"article\"\r\n [articles]=\"article?.relatedArticles\"\r\n [refType]=\"1\"\r\n (closeRelatedPopup)=\"handlePopUpChange($event)\"\r\n >\r\n </co-product-dialog>\r\n\r\n<!-- <app-product-related class=\"no-padding\" *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"-->\r\n<!-- [articles]=\"article?.relatedArticles\" [refType]=\"64\" [label]=\"'VARIANTS' | localize\"></app-product-related>-->\r\n </div>\r\n\r\n\r\n </div>\r\n</ng-container>\r\n",
169
181
  animations: [
170
182
  trigger('toggleFullScreen', [
171
183
  state('fullscreen', style({ 'position': 'fixed', 'top': '0', 'left': '0', 'width': '100%', 'height': '100%' })),
@@ -198,7 +210,7 @@ ProductPageComponent.decorators = [
198
210
  transition('void => *', animate('200ms ease-in-out')),
199
211
  ])
200
212
  ],
201
- styles: [".page-wrapper{font-family:iOneMontserrat;font-size:12px;display:flex;flex-direction:column;max-width:1400px;padding:0 15px;margin:0 auto}.page-wrapper-content{display:flex;flex-direction:row;margin:40px 0}.page-wrapper-content:first-child{margin-top:0}.page-wrapper-content.no-top-margin{margin-top:0}.page-wrapper-left{display:flex;width:55%;flex-direction:column}.page-wrapper-right{display:flex;width:45%;flex-direction:column}.page-wrapper-full{display:flex;width:100%;flex-direction:column}.page-wrapper-66{display:flex;width:60%;flex-direction:column}.page-wrapper-33{display:flex;width:40%;flex-direction:column}.threed-selections{display:none}.threed-selections.show-selections{display:block}.threed-selections ::ng-deep .rp-lite-selector .rp-answers-slideout ::ng-deep co-slideout{width:480px;z-index:3}.product-action-buttons{position:relative}.product-action-buttons.full-screen{z-index:10}.product-image-container{grid-column:1/7;grid-row:1/6;position:relative}.product-page-block-selector-type{width:auto;position:absolute;top:10px;right:10px;z-index:2}.product-page-block-image{box-sizing:border-box;width:100%;z-index:1;position:relative}.product-page-block-image .threed-configurator{border:1px solid #efefef}.product-page-block-image .threed-configurator .layer .viewer canvas{height:100%;width:100%}.product-page-block-image .threed-configurator ::ng-deep .rp-element-toolbar{top:30px}.product-page-block-image app-image-carousel.show-animated,.product-page-block-image threed-configurator.show-animated{opacity:1;z-index:0;transition:all .2s ease-in-out}.product-page-block-image .fullscreen-button{cursor:pointer;height:50px;width:50px;position:absolute;left:30px;z-index:100;top:30px}.product-page-block-image.full{grid-column:1/11;grid-row:2/span 10;z-index:3}.product-page-block-description{grid-column:7/12;grid-row:1/1}.product-page-block-additional{width:100%}.product-page-block-additional-description{width:100%}.product-page-block-price{grid-column:1/3;grid-row:2/2;align-self:center}.product-page-block-price.full{grid-column:1/5}.product-page-block-addtocart{grid-column:3/5;grid-row:2/2;align-self:center;padding-top:30px!important}.product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button{cursor:pointer}.product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button:hover div.rippler{background:#f6f5f4}.product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button ::ng-deep co-icon{position:relative;z-index:2}.product-page-block-addtocart ::ng-deep co-button.cart-button{cursor:pointer}.product-page-block-addtocart ::ng-deep co-button.cart-button:hover{background:#74B77F}.addtocart-reserved{grid-column:1/3;grid-row:3/3}.product-page-block-stock{grid-column:1/3;grid-row:4/4}.product-page-block-delivery{grid-column:3/5;grid-row:4/4}::ng-deep co-scroll-container{overflow:hidden;position:relative}::ng-deep co-scroll-container .content-wrapper{padding:0}::ng-deep co-scroll-container .scroll-layer{left:0;top:0}::ng-deep co-scroll-container .scroll-layer .scroller{width:34px;height:34px;border-radius:36px;background:#fff;cursor:pointer;box-shadow:0 0 5px #0003}::ng-deep co-scroll-container .scroll-layer .scroller:hover{background:#f6f5f4}::ng-deep co-scroll-container .scroll-layer .scroller.left-scroll{left:5px}::ng-deep co-scroll-container .scroll-layer .scroller.left-scroll:before{border-width:0 3px 3px 0;padding:4px;margin-left:13px;margin-top:11px}::ng-deep co-scroll-container .scroll-layer .scroller.right-scroll{right:5px}::ng-deep co-scroll-container .scroll-layer .scroller.right-scroll:after{border-width:0 3px 3px 0;padding:4px;margin-left:9px;margin-top:11px}.product-page-block-variants{margin:20px 0 0}.product-page-block-variants ::ng-deep app-product-related>div{display:flex;grid-gap:15px;gap:15px;align-items:center;border-top:1px solid #f6f5f4;padding:5px 0 7px 15px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep app-header h3{font-size:14px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container{width:320px;max-width:100%;padding:0 16px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller{width:26px;height:26px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.left-scroll{left:5px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.left-scroll:before{border-width:0 2px 2px 0;margin-left:9px;margin-top:9px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.right-scroll{right:5px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.right-scroll:after{border-width:0 2px 2px 0;margin-left:6px;margin-top:9px}.product-page-block-variants ::ng-deep co-tile.small{min-width:50px!important;max-width:50px!important;border:1px solid #f6f5f4;margin:0 10px 0 0;border-radius:4px}.product-page-block-variants ::ng-deep co-tile.small:hover{border-color:#22313c}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper{padding:0}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .tile-top{display:none}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .image{height:40px!important;padding:5px;margin-bottom:10px}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .image .no-image-wrapper .no-image{width:40px;height:40px}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .image .no-image-wrapper span{display:none!important}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .tile-bottom{display:none}.product-page-block-variants ::ng-deep co-tile.small .tile-extra-bottom{display:none}.product-page-block-alternatives ::ng-deep .article-wrapper{margin:0 20px 0 0}.product-page-block-alternatives ::ng-deep .article-wrapper:last-child{margin:0}.product-page-block-alternatives ::ng-deep co-tile{cursor:pointer;transition:all .14s ease-out;border:1px solid transparent;border-bottom-color:#f6f5f4;padding:15px 10px 0;width:319px;max-width:none;min-width:0;box-sizing:border-box}.product-page-block-alternatives ::ng-deep co-tile:hover{box-shadow:none;border-color:#f6f5f4}.product-page-block-alternatives ::ng-deep co-tile:hover .tile-wrapper div.image co-image{transform:scale(1.05)}.product-page-block-alternatives ::ng-deep co-tile:hover .tile-wrapper .tile-bottom{margin:0}.product-page-block-alternatives ::ng-deep co-tile:hover .tile-extra-bottom .main .description{text-decoration:underline}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper{padding:0;position:relative;outline:none;overflow:hidden}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-top{position:absolute;left:0;top:0;width:100%}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image{position:relative;padding:1px;display:flex;align-items:center;justify-content:center;overflow:hidden;max-width:250px;margin:0 auto 10px;height:auto}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image:after{content:\"\";padding:100% 0 0;float:left;width:100%}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image co-image{position:absolute;left:0;top:0;overflow:hidden;width:100%;height:100%;-o-object-fit:contain;object-fit:contain;z-index:-1;transition:all .2s ease}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image .no-image-wrapper{position:absolute;display:flex;left:50%;top:50%;margin:-48px 0 0 -54px;flex-direction:column;align-items:center;opacity:.25}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-bottom{transition:all .2s ease;height:auto}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-bottom ::ng-deep co-button{margin:0 0 5px!important;width:36px;height:36px;border:1px solid #22313C;cursor:pointer;border-radius:4px;padding:0!important;font-size:0}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-bottom ::ng-deep co-button co-icon{width:32px;height:32px;margin:0 2px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom{outline:none;padding:15px 0;background:transparent!important;min-height:60px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom .main{padding:0 10px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom .main .description{font-size:15px;font-weight:bold;margin:0 0 2px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom .main .price{font-size:16px;margin:15px 0 0;font-weight:bold;color:#2b60a7}.product-page-block-additional-information{grid-column:1/6;grid-row:4/4}.product-page-block-properties{grid-column:7/10;grid-row:3/3}.product-page-block-related-articles{grid-column:2/6;grid-row:4/4}.product-page-block-alternative-articles{grid-column:6/10;grid-row:4/4}.product-page-block-documents{grid-column:2/6;grid-row:5/5}.product-page-block-symbols{grid-column:6/10;grid-row:5/5}@media screen and (max-width: 950px){.default-padding{padding-top:20px;padding-bottom:20px}.m-padding{padding-top:15px;padding-bottom:15px}.s-padding{padding-top:5px;padding-bottom:5px}.page-wrapper{max-width:650px}.page-wrapper .page-wrapper-content{flex-direction:column;margin:30px 0}.page-wrapper .page-wrapper-content .page-wrapper-left{width:100%}.page-wrapper .page-wrapper-content .page-wrapper-right{width:100%}.product-page-block-alternatives ::ng-deep co-tile{width:284px!important}}@media screen and (max-width: 650px){[class*=-padding]{padding-left:0!important;padding-right:0!important}.product-page-block-addtocart ::ng-deep co-number-picker co-button{height:38px!important}.product-page-block-addtocart ::ng-deep co-number-picker co-input-text{height:38px!important;width:36px!important}.product-page-block-addtocart ::ng-deep co-button.cart-button{height:40px;font-size:13px}}\n"]
213
+ styles: [".page-wrapper{font-family:iOneMontserrat;font-size:12px;display:flex;flex-direction:column;max-width:1400px;padding:0 15px;margin:0 auto}.page-wrapper-content{display:flex;flex-direction:row;margin:40px 0}.page-wrapper-content:first-child{margin-top:0}.page-wrapper-content.no-top-margin{margin-top:0}.page-wrapper-left{display:flex;width:55%;flex-direction:column}.page-wrapper-right{display:flex;width:45%;flex-direction:column}.page-wrapper-full{display:flex;width:100%;flex-direction:column}.page-wrapper-66{display:flex;width:60%;flex-direction:column}.page-wrapper-33{display:flex;width:40%;flex-direction:column}.threed-selections{display:none}.threed-selections.show-selections{display:block}.threed-selections ::ng-deep .rp-lite-selector .rp-answers-slideout ::ng-deep co-slideout{width:480px;z-index:3}.threed-selections ::ng-deep .co-summary-line{cursor:pointer}.product-action-buttons{position:relative}.product-action-buttons.full-screen{z-index:10}.product-image-container{grid-column:1/7;grid-row:1/6;position:relative}.product-page-block-selector-type{width:auto;position:absolute;top:10px;right:10px;z-index:2}.product-page-block-image{box-sizing:border-box;width:100%;z-index:1;position:relative}.product-page-block-image .threed-configurator{border:1px solid #efefef}.product-page-block-image .threed-configurator .layer .viewer canvas{height:100%;width:100%}.product-page-block-image .threed-configurator ::ng-deep .rp-element-toolbar{top:30px}.product-page-block-image app-image-carousel.show-animated,.product-page-block-image threed-configurator.show-animated{opacity:1;z-index:0;transition:all .2s ease-in-out}.product-page-block-image .fullscreen-button{cursor:pointer;height:50px;width:50px;position:absolute;left:30px;z-index:100;top:30px}.product-page-block-image.full{grid-column:1/11;grid-row:2/span 10;z-index:3}.product-page-block-description{grid-column:7/12;grid-row:1/1}.product-page-block-additional{width:100%}.product-page-block-additional-description{width:100%}.product-page-block-price{grid-column:1/3;grid-row:2/2;align-self:center}.product-page-block-price.full{grid-column:1/5}.product-page-block-addtocart{grid-column:3/5;grid-row:2/2;align-self:center;padding-top:30px!important}.product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button{cursor:pointer}.product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button:hover div.rippler{background:#f6f5f4}.product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button ::ng-deep co-icon{position:relative;z-index:2}.product-page-block-addtocart ::ng-deep co-button.cart-button{cursor:pointer}.product-page-block-addtocart ::ng-deep co-button.cart-button:hover{background:#74B77F}.addtocart-reserved{grid-column:1/3;grid-row:3/3}.product-page-block-stock{grid-column:1/3;grid-row:4/4}.product-page-block-delivery{grid-column:3/5;grid-row:4/4}::ng-deep co-scroll-container{overflow:hidden;position:relative}::ng-deep co-scroll-container .content-wrapper{padding:0}::ng-deep co-scroll-container .scroll-layer{left:0;top:0}::ng-deep co-scroll-container .scroll-layer .scroller{width:34px;height:34px;border-radius:36px;background:#fff;cursor:pointer;box-shadow:0 0 5px #0003}::ng-deep co-scroll-container .scroll-layer .scroller:hover{background:#f6f5f4}::ng-deep co-scroll-container .scroll-layer .scroller.left-scroll{left:5px}::ng-deep co-scroll-container .scroll-layer .scroller.left-scroll:before{border-width:0 3px 3px 0;padding:4px;margin-left:13px;margin-top:11px}::ng-deep co-scroll-container .scroll-layer .scroller.right-scroll{right:5px}::ng-deep co-scroll-container .scroll-layer .scroller.right-scroll:after{border-width:0 3px 3px 0;padding:4px;margin-left:9px;margin-top:11px}.product-page-block-variants{margin:20px 0 0}.product-page-block-variants ::ng-deep app-product-related>div{display:flex;grid-gap:15px;gap:15px;align-items:center;border-top:1px solid #f6f5f4;padding:5px 0 7px 15px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep app-header h3{font-size:14px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container{width:320px;max-width:100%;padding:0 16px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller{width:26px;height:26px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.left-scroll{left:5px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.left-scroll:before{border-width:0 2px 2px 0;margin-left:9px;margin-top:9px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.right-scroll{right:5px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.right-scroll:after{border-width:0 2px 2px 0;margin-left:6px;margin-top:9px}.product-page-block-variants ::ng-deep co-tile.small{min-width:50px!important;max-width:50px!important;border:1px solid #f6f5f4;margin:0 10px 0 0;border-radius:4px}.product-page-block-variants ::ng-deep co-tile.small:hover{border-color:#22313c}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper{padding:0}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .tile-top{display:none}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .image{height:40px!important;padding:5px;margin-bottom:10px}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .image .no-image-wrapper .no-image{width:40px;height:40px}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .image .no-image-wrapper span{display:none!important}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .tile-bottom{display:none}.product-page-block-variants ::ng-deep co-tile.small .tile-extra-bottom{display:none}.product-page-block-alternatives ::ng-deep .article-wrapper{margin:0 20px 0 0}.product-page-block-alternatives ::ng-deep .article-wrapper:last-child{margin:0}.product-page-block-alternatives ::ng-deep co-tile{cursor:pointer;transition:all .14s ease-out;border:1px solid transparent;border-bottom-color:#f6f5f4;padding:15px 10px 0;width:319px;max-width:none;min-width:0;box-sizing:border-box}.product-page-block-alternatives ::ng-deep co-tile:hover{box-shadow:none;border-color:#f6f5f4}.product-page-block-alternatives ::ng-deep co-tile:hover .tile-wrapper div.image co-image{transform:scale(1.05)}.product-page-block-alternatives ::ng-deep co-tile:hover .tile-wrapper .tile-bottom{margin:0}.product-page-block-alternatives ::ng-deep co-tile:hover .tile-extra-bottom .main .description{text-decoration:underline}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper{padding:0;position:relative;outline:none;overflow:hidden}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-top{position:absolute;left:0;top:0;width:100%}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image{position:relative;padding:1px;display:flex;align-items:center;justify-content:center;overflow:hidden;max-width:250px;margin:0 auto 10px;height:auto}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image:after{content:\"\";padding:100% 0 0;float:left;width:100%}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image co-image{position:absolute;left:0;top:0;overflow:hidden;width:100%;height:100%;-o-object-fit:contain;object-fit:contain;z-index:-1;transition:all .2s ease}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image .no-image-wrapper{position:absolute;display:flex;left:50%;top:50%;margin:-48px 0 0 -54px;flex-direction:column;align-items:center;opacity:.25}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-bottom{transition:all .2s ease;height:auto}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-bottom ::ng-deep co-button{margin:0 0 5px!important;width:36px;height:36px;border:1px solid #22313C;cursor:pointer;border-radius:4px;padding:0!important;font-size:0}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-bottom ::ng-deep co-button co-icon{width:32px;height:32px;margin:0 2px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom{outline:none;padding:15px 0;background:transparent!important;min-height:60px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom .main{padding:0 10px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom .main .description{font-size:15px;font-weight:bold;margin:0 0 2px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom .main .price{font-size:16px;margin:15px 0 0;font-weight:bold;color:#2b60a7}.product-page-block-additional-information{grid-column:1/6;grid-row:4/4}.product-page-block-properties{grid-column:7/10;grid-row:3/3}.product-page-block-related-articles{grid-column:2/6;grid-row:4/4}.product-page-block-alternative-articles{grid-column:6/10;grid-row:4/4}.product-page-block-documents{grid-column:2/6;grid-row:5/5}.product-page-block-symbols{grid-column:6/10;grid-row:5/5}@media screen and (max-width: 950px){.default-padding{padding-top:20px;padding-bottom:20px}.m-padding{padding-top:15px;padding-bottom:15px}.s-padding{padding-top:5px;padding-bottom:5px}.page-wrapper{max-width:650px}.page-wrapper .page-wrapper-content{flex-direction:column;margin:30px 0}.page-wrapper .page-wrapper-content .page-wrapper-left{width:100%}.page-wrapper .page-wrapper-content .page-wrapper-right{width:100%}.product-page-block-alternatives ::ng-deep co-tile{width:284px!important}}@media screen and (max-width: 650px){[class*=-padding]{padding-left:0!important;padding-right:0!important}.product-page-block-addtocart ::ng-deep co-number-picker co-button{height:38px!important}.product-page-block-addtocart ::ng-deep co-number-picker co-input-text{height:38px!important;width:36px!important}.product-page-block-addtocart ::ng-deep co-button.cart-button{height:40px;font-size:13px}}\n"]
202
214
  },] }
203
215
  ];
204
216
  ProductPageComponent.ctorParameters = () => [
@@ -221,4 +233,4 @@ ProductPageComponent.propDecorators = {
221
233
  showRelatedProductsPopup: [{ type: Input }],
222
234
  openStockEvent: [{ type: Output }]
223
235
  };
224
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9wcm9kdWN0LXBhZ2UvcHJvZHVjdC1wYWdlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUFFLFlBQVksRUFDeEIsS0FBSyxFQUVHLE1BQU0sRUFDZCxTQUFTLEVBQ1QsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBR2xGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQTBDMUUsTUFBTSxPQUFPLG9CQUFvQjtJQXdHL0IsWUFBb0IsS0FBOEIsRUFDOUIsU0FBb0IsRUFDcEIsZUFBa0MsRUFDbkMsU0FBMkIsRUFDM0IsZUFBdUMsRUFDdkMsZUFBb0M7UUFMbkMsVUFBSyxHQUFMLEtBQUssQ0FBeUI7UUFDOUIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixvQkFBZSxHQUFmLGVBQWUsQ0FBbUI7UUFDbkMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0Isb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBQ3ZDLG9CQUFlLEdBQWYsZUFBZSxDQUFxQjtRQTNHdkMsU0FBSSxHQUFvQixRQUFRLENBQUM7UUEyQzFDLHdCQUFtQixHQUFZLElBQUksQ0FBQztRQUdwQyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBRzFCLDZCQUF3QixHQUFZLEtBQUssQ0FBQztRQUcxQyxtQkFBYyxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBbUM5RCxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBRWYsV0FBTSxHQUFHLElBQUksQ0FBQztRQUNkLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QiwyQkFBc0IsR0FBWSxLQUFLLENBQUM7UUFDeEMsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFHL0IsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFFN0IsVUFBSyxHQUFtQixFQUFFLENBQUM7UUFVakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQ2IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN0RCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFO2dCQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2FBQ2xEO1FBQ0gsQ0FBQyxDQUFDLEVBQ0EsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQzNGLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBb0IsRUFBRSxFQUFFO1lBQ3BFLElBQUksQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUNILENBQUM7SUFFSixDQUFDO0lBL0dELElBQ1csR0FBRyxDQUFDLEtBQWE7UUFDMUIsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO2dCQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztnQkFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDdEM7WUFDRCxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztZQUNsQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDcEI7SUFDSCxDQUFDO0lBRUQsSUFBVyxHQUFHO1FBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRCxJQUNXLFFBQVEsQ0FBQyxLQUFVO1FBQzVCLElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNwQztpQkFBTTtnQkFDTCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQzthQUN4QjtTQUNGO0lBQ0gsQ0FBQztJQWdCRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFXLFVBQVUsQ0FBQyxLQUFjO1FBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUM7UUFDbkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQyxxQkFBcUI7UUFDckIsd0NBQXdDO1FBQ3hDLFVBQVU7SUFDWixDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pFLENBQUM7SUFFRCxJQUFXLFdBQVcsQ0FBQyxLQUFtQjtRQUN4QyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLEtBQUssWUFBWSxDQUFDLElBQUksQ0FBQztRQUN0RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLEtBQUssWUFBWSxDQUFDLE1BQU0sQ0FBQztRQUN4RCxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUF3Q0QsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7WUFDMUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDL0Q7YUFBTTtZQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUM7U0FDaEQ7SUFDSCxDQUFDO0lBRUQsZUFBZTtJQUNmLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN6QyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQztRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO1FBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzVCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7SUFDcEMsQ0FBQztJQUVNLFdBQVcsQ0FBQyxLQUFrQjtRQUNuQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDaEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3RDO0lBQ0gsQ0FBQztJQUVNLHdCQUF3QjtRQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxjQUFjO1FBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3JDLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxNQUFlO1FBQzNDLElBQUksTUFBTSxFQUFFO1lBQ1YsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUM3QjtJQUNILENBQUM7SUFFYSxXQUFXOztZQUN2QixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDcEM7WUFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQU8sSUFBYSxFQUFFLEVBQUU7Z0JBQ3hGLElBQUksSUFBSSxFQUFFO29CQUNSLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUEwQixFQUFFLEVBQUU7d0JBQ3ZFLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO3dCQUN2QixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7NEJBQ2hCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEtBQUssR0FBRyxDQUFDOzRCQUNsRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0NBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQzs2QkFDdEM7NEJBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQzs0QkFDaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDOzRCQUN0RCxJQUFJLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBNEIsRUFBRSxFQUFFO2dDQUN6RixNQUFNLGdCQUFnQixHQUFzQixTQUFTLENBQUM7Z0NBQ3RELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLGdCQUFnQixDQUFDLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7Z0NBQ25ILElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLENBQUM7NEJBQ3ZDLENBQUMsQ0FBQyxDQUFDOzRCQUNILElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLENBQUM7eUJBQ3RDO29CQUNILENBQUMsQ0FBQyxDQUFDO2lCQUNKO1lBQ0gsQ0FBQyxDQUFBLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyx3QkFBd0IsR0FBRyxLQUFLLENBQUM7UUFDeEMsQ0FBQztLQUFBO0lBQ00sU0FBUztRQUNkLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVNLGlCQUFpQixDQUFDLEtBQWM7UUFDckMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEtBQUssQ0FBQztJQUN4QyxDQUFDOzs7WUEvT0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxrQkFBa0I7Z0JBQzVCLDQrUUFBNEM7Z0JBRTVDLFVBQVUsRUFBRTtvQkFDVixPQUFPLENBQUMsa0JBQWtCLEVBQUU7d0JBQzFCLEtBQUssQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLEVBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQzt3QkFDN0csS0FBSyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsRUFBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUMsQ0FBQyxDQUFDO3dCQUNuRyxVQUFVLENBQUMsMkJBQTJCLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUM7cUJBQ3RFLENBQUM7b0JBQ0YsT0FBTyxDQUFDLGVBQWUsRUFBRTt3QkFDdkIsS0FBSyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsRUFBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBQyxDQUFDLENBQUM7d0JBQzFFLEtBQUssQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLEVBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUMsQ0FBQyxDQUFDO3dCQUM3RSxVQUFVLENBQUMsMkJBQTJCLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUM7cUJBQ3RFLENBQUM7b0JBQ0YsT0FBTyxDQUFDLGdCQUFnQixFQUFFO3dCQUN4QixLQUFLLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxFQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFDLENBQUMsQ0FBQzt3QkFDM0UsS0FBSyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsRUFBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBQyxDQUFDLENBQUM7d0JBQ3ZFLFVBQVUsQ0FBQywyQkFBMkIsRUFBRSxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQztxQkFDdEUsQ0FBQztvQkFDRixPQUFPLENBQUMsdUJBQXVCLEVBQUU7d0JBQy9CLEtBQUssQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLEVBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBQyxDQUFDLENBQUM7d0JBQzdGLEtBQUssQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLEVBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBQyxDQUFDLENBQUM7d0JBQ3JGLFVBQVUsQ0FBQywyQkFBMkIsRUFBRSxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQztxQkFDdEUsQ0FBQztvQkFDRixPQUFPLENBQUMseUJBQXlCLEVBQUU7d0JBQ2pDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQzt3QkFDekQsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUMsQ0FBQyxDQUFDO3dCQUMxRCxVQUFVLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO3FCQUNoRSxDQUFDO29CQUNGLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRTt3QkFDMUIsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBQyxTQUFTLEVBQUUsR0FBRyxFQUFDLENBQUMsQ0FBQzt3QkFDdEMsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBQyxTQUFTLEVBQUUsR0FBRyxFQUFDLENBQUMsQ0FBQzt3QkFDbkMsVUFBVSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQztxQkFDdEQsQ0FBQztpQkFDSDs7YUFFRjs7O1lBbERRLHVCQUF1QjtZQUg5QixTQUFTO1lBTlQsaUJBQWlCO1lBZ0JWLGdCQUFnQjtZQUNoQixzQkFBc0I7WUFDdEIsbUJBQW1COzs7MkJBNkN6QixTQUFTLFNBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTt5QkFHOUMsU0FBUyxTQUFDLFlBQVksRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7K0JBRzVDLFNBQVMsU0FBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7a0JBR2xELEtBQUs7dUJBa0JMLEtBQUs7NkJBV0wsS0FBSztrQ0FHTCxLQUFLO3VCQUdMLEtBQUs7dUNBR0wsS0FBSzs2QkFHTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsIE91dHB1dCxcbiAgUmVuZGVyZXIyLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcm9kdWN0Q29ubmVjdG9yU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvcHJvZHVjdC1jb25uZWN0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBBcnRpY2xlRnVsbE9iamVjdCB9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2FydGljbGUtZnVsbC1vYmplY3QnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTdG9ja0FuZERlbGl2ZXJ5IH0gZnJvbSAnLi4vLi4vbW9kZWwvc3RvY2stYW5kLWRlbGl2ZXJ5JztcbmltcG9ydCB7IFNlbGVjdG9yVHlwZSB9IGZyb20gJy4uLy4uL2VudW0vc2VsZWN0b3ItdHlwZS5lbnVtJztcbmltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgSWNvbkVudW0gfSBmcm9tICcuLi8uLi9lbnVtL2ljb24uZW51bSc7XG5pbXBvcnQgeyBJY29uQ2FjaGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9pY29uLWNhY2hlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJvZHVjdFNldHRpbmdzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvcHJvZHVjdC1zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2R1Y3RFdmVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3Byb2R1Y3QtZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBEZWxpdmVyeVByb2dub3NpcyB9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2RlbGl2ZXJ5LXByb2dub3Npcyc7XG5pbXBvcnQge0V4dGVybmFsU291cmNlfSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9leHRlcm5hbC1zb3VyY2UuYm8nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcHJvZHVjdC1wYWdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2R1Y3QtcGFnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Byb2R1Y3QtcGFnZS5jb21wb25lbnQuc2NzcyddLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcigndG9nZ2xlRnVsbFNjcmVlbicsIFtcbiAgICAgIHN0YXRlKCdmdWxsc2NyZWVuJywgc3R5bGUoeydwb3NpdGlvbic6ICdmaXhlZCcsICd0b3AnOiAnMCcsICdsZWZ0JzogJzAnLCAnd2lkdGgnOiAnMTAwJScsICdoZWlnaHQnOiAnMTAwJSd9KSksXG4gICAgICBzdGF0ZSgnaGFsZnNjcmVlbicsIHN0eWxlKHsncG9zaXRpb24nOiAnKicsICd0b3AnOiAnKicsICdsZWZ0JzogJyonLCAnd2lkdGgnOiAnKicsICdoZWlnaHQnOiAnKid9KSksXG4gICAgICB0cmFuc2l0aW9uKCdoYWxmc2NyZWVuIDw9PiBmdWxsc2NyZWVuJywgYW5pbWF0ZSgnMjAwbXMgZWFzZS1pbi1vdXQnKSksXG4gICAgXSksXG4gICAgdHJpZ2dlcigndG9nZ2xlVG9wTGVmdCcsIFtcbiAgICAgIHN0YXRlKCdmdWxsc2NyZWVuJywgc3R5bGUoeydwb3NpdGlvbic6ICdmaXhlZCcsICd0b3AnOiAnMCcsICdsZWZ0JzogJzAnfSkpLFxuICAgICAgc3RhdGUoJ2hhbGZzY3JlZW4nLCBzdHlsZSh7J3Bvc2l0aW9uJzogJ2Fic29sdXRlJywgJ3RvcCc6ICcqJywgJ2xlZnQnOiAnKid9KSksXG4gICAgICB0cmFuc2l0aW9uKCdoYWxmc2NyZWVuIDw9PiBmdWxsc2NyZWVuJywgYW5pbWF0ZSgnMjAwbXMgZWFzZS1pbi1vdXQnKSksXG4gICAgXSksXG4gICAgdHJpZ2dlcigndG9nZ2xlVG9wUmlnaHQnLCBbXG4gICAgICBzdGF0ZSgnZnVsbHNjcmVlbicsIHN0eWxlKHsncG9zaXRpb24nOiAnZml4ZWQnLCAndG9wJzogJzAnLCAncmlnaHQnOiAnMCd9KSksXG4gICAgICBzdGF0ZSgnaGFsZnNjcmVlbicsIHN0eWxlKHsncG9zaXRpb24nOiAnKicsICd0b3AnOiAnKicsICdyaWdodCc6ICcqJ30pKSxcbiAgICAgIHRyYW5zaXRpb24oJ2hhbGZzY3JlZW4gPD0+IGZ1bGxzY3JlZW4nLCBhbmltYXRlKCcyMDBtcyBlYXNlLWluLW91dCcpKSxcbiAgICBdKSxcbiAgICB0cmlnZ2VyKCd0b2dnbGVGdWxsU2NyZWVuUmlnaHQnLCBbXG4gICAgICBzdGF0ZSgnZnVsbHNjcmVlbicsIHN0eWxlKHsncG9zaXRpb24nOiAnZml4ZWQnLCAnd2lkdGgnOiAnNDAwcHgnLCAndG9wJzogJzAnLCAncmlnaHQnOiAnMCd9KSksXG4gICAgICBzdGF0ZSgnaGFsZnNjcmVlbicsIHN0eWxlKHsncG9zaXRpb24nOiAnKicsICd3aWR0aCc6ICcqJywgJ3RvcCc6ICcqJywgJ3JpZ2h0JzogJyonfSkpLFxuICAgICAgdHJhbnNpdGlvbignaGFsZnNjcmVlbiA8PT4gZnVsbHNjcmVlbicsIGFuaW1hdGUoJzIwMG1zIGVhc2UtaW4tb3V0JykpLFxuICAgIF0pLFxuICAgIHRyaWdnZXIoJ3RvZ2dsZVZpc2liaWxpdHlCeVN0YXRlJywgW1xuICAgICAgc3RhdGUoJ2hpZGUnLCBzdHlsZSh7J29wYWNpdHknOiAnMCcsICdkaXNwbGF5JzogJ25vbmUnfSkpLFxuICAgICAgc3RhdGUoJ3Nob3cnLCBzdHlsZSh7J2Rpc3BsYXknOiAnYmxvY2snLCAnb3BhY2l0eSc6ICcxJ30pKSxcbiAgICAgIHRyYW5zaXRpb24oJ2hpZGUgPD0+IHNob3cnLCBhbmltYXRlKCcyMDBtcyAxMDBtcyBlYXNlLWluLW91dCcpKSxcbiAgICBdKSxcbiAgICB0cmlnZ2VyKCd0b2dnbGVWaXNpYmlsaXR5JywgW1xuICAgICAgc3RhdGUoJ3ZvaWQnLCBzdHlsZSh7J29wYWNpdHknOiAnMCd9KSksXG4gICAgICBzdGF0ZSgnKicsIHN0eWxlKHsnb3BhY2l0eSc6ICcxJ30pKSxcbiAgICAgIHRyYW5zaXRpb24oJ3ZvaWQgPT4gKicsIGFuaW1hdGUoJzIwMG1zIGVhc2UtaW4tb3V0JykpLFxuICAgIF0pXG4gIF0sXG5cbn0pXG5leHBvcnQgY2xhc3MgUHJvZHVjdFBhZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgcHVibGljIHJlYWRvbmx5IGljb246IHR5cGVvZiBJY29uRW51bSA9IEljb25FbnVtO1xuICBAVmlld0NoaWxkKCdjb25maWd1cmF0b3InLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHVibGljIGNvbmZpZ3VyYXRvcjogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCdzZWxlY3Rpb25zJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHB1YmxpYyBzZWxlY3Rpb25zOiBFbGVtZW50UmVmO1xuXG4gIEBWaWV3Q2hpbGQoJ2Z1bGxzY3JlZW5idXR0b24nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHVibGljIGZ1bGxzY3JlZW5idXR0b246IEVsZW1lbnRSZWY7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBza3UodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgaWYgKHRoaXMuY29uZmlndXJpbmcpIHtcbiAgICAgICAgdGhpcy5zaG93M0QgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5mdWxsU2NyZWVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY29uZmlndXJpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfVxuICAgICAgdGhpcy5fc2t1ID0gdmFsdWU7XG4gICAgICB0aGlzLl9nZXRBcnRpY2xlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBza3UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2t1O1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZXR0aW5ncyh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLl9zZXR0aW5ncyA9IEpTT04ucGFyc2UodmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fc2V0dGluZ3MgPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgZXh0ZXJuYWxTb3VyY2U6IEV4dGVybmFsU291cmNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjcmVhdGVGcm96ZW5BcnRpY2xlOiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaXNSZXR1cm46IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd1JlbGF0ZWRQcm9kdWN0c1BvcHVwOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBvcGVuU3RvY2tFdmVudDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBwdWJsaWMgZ2V0IHNldHRpbmdzKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3NldHRpbmdzO1xuICB9XG5cbiAgcHVibGljIHNldCBmdWxsU2NyZWVuKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZnVsbFNjcmVlbiA9IHZhbHVlO1xuICAgIHRoaXMuZnVsbHNjcmVlbkFuaW1hdGlvbkVuZCA9IHRydWU7XG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIC8vICAgdGhpcy5mdWxsc2NyZWVuQW5pbWF0aW9uRW5kID0gdHJ1ZTtcbiAgICAvLyB9LCA0MDApXG4gIH1cblxuICBwdWJsaWMgZ2V0IGZ1bGxTY3JlZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Z1bGxTY3JlZW47XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZ1bGxTY3JlZW5JY29uKCk6IEljb25FbnVtIHtcbiAgICByZXR1cm4gdGhpcy5mdWxsU2NyZWVuID8gdGhpcy5pY29uLk5vcm1hbFNjcmVlbiA6IHRoaXMuaWNvbi5GdWxsU2NyZWVuO1xuICB9XG5cbiAgcHVibGljIHNldCBjdXJyZW50Vmlldyh2YWx1ZTogU2VsZWN0b3JUeXBlKSB7XG4gICAgdGhpcy5fY3VycmVudFZpZXcgPSB2YWx1ZTtcbiAgICB0aGlzLnNob3cyRCA9IHRoaXMuX2N1cnJlbnRWaWV3ID09PSBTZWxlY3RvclR5cGUuVHdvRDtcbiAgICB0aGlzLnNob3czRCA9IHRoaXMuX2N1cnJlbnRWaWV3ID09PSBTZWxlY3RvclR5cGUuVGhyZWVEO1xuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY3VycmVudFZpZXcoKTogU2VsZWN0b3JUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFZpZXc7XG4gIH1cblxuICBwdWJsaWMgYXJ0aWNsZTogQXJ0aWNsZUZ1bGxPYmplY3Q7XG4gIHB1YmxpYyBzdG9ja0FuZERlbGl2ZXJ5OiBTdG9ja0FuZERlbGl2ZXJ5O1xuICBwdWJsaWMgY29uZmlndXJhYmxlID0gZmFsc2U7XG4gIHB1YmxpYyB0aHJlZUQgPSBmYWxzZTtcbiAgcHVibGljIHNlbGVjdG9yVHlwZTogU2VsZWN0b3JUeXBlO1xuICBwdWJsaWMgc2hvdzJEID0gdHJ1ZTtcbiAgcHVibGljIHNob3czRCA9IGZhbHNlO1xuICBwdWJsaWMgY29uZmlndXJpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGZ1bGxzY3JlZW5BbmltYXRpb25FbmQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHNldHRpbmdzTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3NrdTogc3RyaW5nO1xuICBwcml2YXRlIF9pbml0aWFsaXplZFN1YjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIF9mdWxsU2NyZWVuOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2N1cnJlbnRWaWV3OiBTZWxlY3RvclR5cGU7XG4gIHByaXZhdGUgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHByaXZhdGUgX3NldHRpbmdzOiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfaW9uZTogUHJvZHVjdENvbm5lY3RvclNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgICAgICAgcHVibGljIGljb25DYWNoZTogSWNvbkNhY2hlU2VydmljZSxcbiAgICAgICAgICAgICAgcHVibGljIHNldHRpbmdzU2VydmljZTogUHJvZHVjdFNldHRpbmdzU2VydmljZSxcbiAgICAgICAgICAgICAgcHVibGljIGFwcEV2ZW50U2VydmljZTogUHJvZHVjdEV2ZW50U2VydmljZVxuICApIHtcbiAgICB0aGlzLl9zdWJzLnB1c2goXG4gICAgICB0aGlzLmFwcEV2ZW50U2VydmljZS5vbkZvcmNlUmVuZGVySW1hZ2Uuc3Vic2NyaWJlKCh4KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbnMubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0aW9ucy5uYXRpdmVFbGVtZW50LmZvcmNlUmVuZGVySW1hZ2UoKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICAgIHRoaXMuc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzTG9hZGVkLnN1YnNjcmliZShsb2FkZWQgPT4gdGhpcy5faGFuZGxlU2V0dGluZ3NMb2FkZWQobG9hZGVkKSksXG4gICAgICAgIHRoaXMuX2lvbmUuY29udHJvbGxlckluaXRpYWxpemVkLnN1YnNjcmliZSgoaW5pdGlhbGl6ZWQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgdGhpcy5zZXR0aW5nc0xvYWRlZCA9IGluaXRpYWxpemVkO1xuICAgICAgfSlcbiAgICApO1xuXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5fc2V0dGluZ3MpIHtcbiAgICAgIHRoaXMuc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5zZXR0aW5nc1NlcnZpY2UuY3JlYXRlU2V0dGluZ3NGcm9tT2JqZWN0KHRoaXMuX3NldHRpbmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fc2V0dGluZ3MgPSB0aGlzLnNldHRpbmdzU2VydmljZS5zZXR0aW5ncztcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgIGlmICh0aGlzLl9pbml0aWFsaXplZFN1Yikge1xuICAgICAgdGhpcy5faW5pdGlhbGl6ZWRTdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgdGhpcy5jb25maWd1cmF0b3IgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zZWxlY3Rpb25zID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZnVsbHNjcmVlbmJ1dHRvbiA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRJbnN0YW5jZShldmVudDogQ3VzdG9tRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQuZGV0YWlsKSB7XG4gICAgICB0aGlzLl9pb25lLnNldEluc3RhbmNlKGV2ZW50LmRldGFpbCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhbmRsZVN0YXJ0Q29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZ3VyaW5nID0gdHJ1ZTtcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwdWJsaWMgc2hvd0Z1bGxTY3JlZW4oKTogdm9pZCB7XG4gICAgdGhpcy5mdWxsU2NyZWVuID0gIXRoaXMuZnVsbFNjcmVlbjtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZVNldHRpbmdzTG9hZGVkKGxvYWRlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChsb2FkZWQpIHtcbiAgICAgIHRoaXMuX2lvbmUuaW5pdENvbm5lY3Rpb24oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9nZXRBcnRpY2xlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLl9pbml0aWFsaXplZFN1Yikge1xuICAgICAgdGhpcy5faW5pdGlhbGl6ZWRTdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgdGhpcy5faW5pdGlhbGl6ZWRTdWIgPSB0aGlzLl9pb25lLmNvbnRyb2xsZXJJbml0aWFsaXplZC5zdWJzY3JpYmUoYXN5bmMgKGluaXQ6IGJvb2xlYW4pID0+IHtcbiAgICAgIGlmIChpbml0KSB7XG4gICAgICAgIHRoaXMuX2lvbmUuZ2V0RnVsbEFydGljbGUodGhpcy5fc2t1KS50aGVuKChhcnRpY2xlOiBBcnRpY2xlRnVsbE9iamVjdCkgPT4ge1xuICAgICAgICAgIHRoaXMuYXJ0aWNsZSA9IGFydGljbGU7XG4gICAgICAgICAgaWYgKHRoaXMuYXJ0aWNsZSkge1xuICAgICAgICAgICAgdGhpcy5jb25maWd1cmFibGUgPSB0aGlzLmFydGljbGUuZ29vZFR5cGUgPT09ICdCJztcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYWJsZSkge1xuICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRWaWV3ID0gU2VsZWN0b3JUeXBlLlR3b0Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnRocmVlRCA9IHRoaXMuYXJ0aWNsZS5pczNEO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RvclR5cGUgPSB0aGlzLmFydGljbGUuc2VsZWN0b3JUeXBlQ3VzdG9tZXI7XG4gICAgICAgICAgICB0aGlzLl9pb25lLmdldERlbGl2ZXJ5UHJvZ25vc2lzKHRoaXMuYXJ0aWNsZS5nb29kSWQpLnRoZW4oKHN0b2NrSW5mbzogRGVsaXZlcnlQcm9nbm9zaXMpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgc3RvY2tBbmREZWxpdmVyeTogRGVsaXZlcnlQcm9nbm9zaXMgPSBzdG9ja0luZm87XG4gICAgICAgICAgICAgIHRoaXMuc3RvY2tBbmREZWxpdmVyeSA9IG5ldyBTdG9ja0FuZERlbGl2ZXJ5KDAsIHN0b2NrQW5kRGVsaXZlcnkucmV0dXJuVmFsdWUgPyBzdG9ja0FuZERlbGl2ZXJ5LnJldHVyblZhbHVlIDogJyAnKTtcbiAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnNob3dSZWxhdGVkUHJvZHVjdHNQb3B1cCA9IGZhbHNlO1xuICB9XG4gIHB1YmxpYyBvcGVuU3RvY2soKSB7XG4gICAgdGhpcy5vcGVuU3RvY2tFdmVudC5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlUG9wVXBDaGFuZ2UoZXZlbnQ6IGJvb2xlYW4pe1xuICAgIHRoaXMuc2hvd1JlbGF0ZWRQcm9kdWN0c1BvcHVwID0gZXZlbnQ7XG4gIH1cbn1cbiJdfQ==
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9wcm9kdWN0LXBhZ2UvcHJvZHVjdC1wYWdlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUFFLFlBQVksRUFDeEIsS0FBSyxFQUVHLE1BQU0sRUFDZCxTQUFTLEVBQ1QsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBR2xGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQTBDMUUsTUFBTSxPQUFPLG9CQUFvQjtJQXlHL0IsWUFBb0IsS0FBOEIsRUFDOUIsU0FBb0IsRUFDcEIsZUFBa0MsRUFDbkMsU0FBMkIsRUFDM0IsZUFBdUMsRUFDdkMsZUFBb0M7UUFMbkMsVUFBSyxHQUFMLEtBQUssQ0FBeUI7UUFDOUIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixvQkFBZSxHQUFmLGVBQWUsQ0FBbUI7UUFDbkMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0Is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QUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQzt3QkFDekQsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUMsQ0FBQyxDQUFDO3dCQUMxRCxVQUFVLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO3FCQUNoRSxDQUFDO29CQUNGLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRTt3QkFDMUIsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBQyxTQUFTLEVBQUUsR0FBRyxFQUFDLENBQUMsQ0FBQzt3QkFDdEMsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBQyxTQUFTLEVBQUUsR0FBRyxFQUFDLENBQUMsQ0FBQzt3QkFDbkMsVUFBVSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQztxQkFDdEQsQ0FBQztpQkFDSDs7YUFFRjs7O1lBbERRLHVCQUF1QjtZQUg5QixTQUFTO1lBTlQsaUJBQWlCO1lBZ0JWLGdCQUFnQjtZQUNoQixzQkFBc0I7WUFDdEIsbUJBQW1COzs7MkJBNkN6QixTQUFTLFNBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTt5QkFHOUMsU0FBUyxTQUFDLFlBQVksRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7K0JBRzVDLFNBQVMsU0FBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7a0JBR2xELEtBQUs7dUJBa0JMLEtBQUs7NkJBV0wsS0FBSztrQ0FHTCxLQUFLO3VCQUdMLEtBQUs7dUNBR0wsS0FBSzs2QkFHTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsIE91dHB1dCxcbiAgUmVuZGVyZXIyLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcm9kdWN0Q29ubmVjdG9yU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvcHJvZHVjdC1jb25uZWN0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBBcnRpY2xlRnVsbE9iamVjdCB9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2FydGljbGUtZnVsbC1vYmplY3QnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTdG9ja0FuZERlbGl2ZXJ5IH0gZnJvbSAnLi4vLi4vbW9kZWwvc3RvY2stYW5kLWRlbGl2ZXJ5JztcbmltcG9ydCB7IFNlbGVjdG9yVHlwZSB9IGZyb20gJy4uLy4uL2VudW0vc2VsZWN0b3ItdHlwZS5lbnVtJztcbmltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgSWNvbkVudW0gfSBmcm9tICcuLi8uLi9lbnVtL2ljb24uZW51bSc7XG5pbXBvcnQgeyBJY29uQ2FjaGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9pY29uLWNhY2hlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJvZHVjdFNldHRpbmdzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvcHJvZHVjdC1zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2R1Y3RFdmVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3Byb2R1Y3QtZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBEZWxpdmVyeVByb2dub3NpcyB9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2RlbGl2ZXJ5LXByb2dub3Npcyc7XG5pbXBvcnQge0V4dGVybmFsU291cmNlfSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9leHRlcm5hbC1zb3VyY2UuYm8nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcHJvZHVjdC1wYWdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2R1Y3QtcGFnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Byb2R1Y3QtcGFnZS5jb21wb25lbnQuc2NzcyddLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcigndG9nZ2xlRnVsbFNjcmVlbicsIFtcbiAgICAgIHN0YXRlKCdmdWxsc2NyZWVuJywgc3R5bGUoeydwb3NpdGlvbic6ICdmaXhlZCcsICd0b3AnOiAnMCcsICdsZWZ0JzogJzAnLCAnd2lkdGgnOiAnMTAwJScsICdoZWlnaHQnOiAnMTAwJSd9KSksXG4gICAgICBzdGF0ZSgnaGFsZnNjcmVlbicsIHN0eWxlKHsncG9zaXRpb24nOiAnKicsICd0b3AnOiAnKicsICdsZWZ0JzogJyonLCAnd2lkdGgnOiAnKicsICdoZWlnaHQnOiAnKid9KSksXG4gICAgICB0cmFuc2l0aW9uKCdoYWxmc2NyZWVuIDw9PiBmdWxsc2NyZWVuJywgYW5pbWF0ZSgnMjAwbXMgZWFzZS1pbi1vdXQnKSksXG4gICAgXSksXG4gICAgdHJpZ2dlcigndG9nZ2xlVG9wTGVmdCcsIFtcbiAgICAgIHN0YXRlKCdmdWxsc2NyZWVuJywgc3R5bGUoeydwb3NpdGlvbic6ICdmaXhlZCcsICd0b3AnOiAnMCcsICdsZWZ0JzogJzAnfSkpLFxuICAgICAgc3RhdGUoJ2hhbGZzY3JlZW4nLCBzdHlsZSh7J3Bvc2l0aW9uJzogJ2Fic29sdXRlJywgJ3RvcCc6ICcqJywgJ2xlZnQnOiAnKid9KSksXG4gICAgICB0cmFuc2l0aW9uKCdoYWxmc2NyZWVuIDw9PiBmdWxsc2NyZWVuJywgYW5pbWF0ZSgnMjAwbXMgZWFzZS1pbi1vdXQnKSksXG4gICAgXSksXG4gICAgdHJpZ2dlcigndG9nZ2xlVG9wUmlnaHQnLCBbXG4gICAgICBzdGF0ZSgnZnVsbHNjcmVlbicsIHN0eWxlKHsncG9zaXRpb24nOiAnZml4ZWQnLCAndG9wJzogJzAnLCAncmlnaHQnOiAnMCd9KSksXG4gICAgICBzdGF0ZSgnaGFsZnNjcmVlbicsIHN0eWxlKHsncG9zaXRpb24nOiAnKicsICd0b3AnOiAnKicsICdyaWdodCc6ICcqJ30pKSxcbiAgICAgIHRyYW5zaXRpb24oJ2hhbGZzY3JlZW4gPD0+IGZ1bGxzY3JlZW4nLCBhbmltYXRlKCcyMDBtcyBlYXNlLWluLW91dCcpKSxcbiAgICBdKSxcbiAgICB0cmlnZ2VyKCd0b2dnbGVGdWxsU2NyZWVuUmlnaHQnLCBbXG4gICAgICBzdGF0ZSgnZnVsbHNjcmVlbicsIHN0eWxlKHsncG9zaXRpb24nOiAnZml4ZWQnLCAnd2lkdGgnOiAnNDAwcHgnLCAndG9wJzogJzAnLCAncmlnaHQnOiAnMCd9KSksXG4gICAgICBzdGF0ZSgnaGFsZnNjcmVlbicsIHN0eWxlKHsncG9zaXRpb24nOiAnKicsICd3aWR0aCc6ICcqJywgJ3RvcCc6ICcqJywgJ3JpZ2h0JzogJyonfSkpLFxuICAgICAgdHJhbnNpdGlvbignaGFsZnNjcmVlbiA8PT4gZnVsbHNjcmVlbicsIGFuaW1hdGUoJzIwMG1zIGVhc2UtaW4tb3V0JykpLFxuICAgIF0pLFxuICAgIHRyaWdnZXIoJ3RvZ2dsZVZpc2liaWxpdHlCeVN0YXRlJywgW1xuICAgICAgc3RhdGUoJ2hpZGUnLCBzdHlsZSh7J29wYWNpdHknOiAnMCcsICdkaXNwbGF5JzogJ25vbmUnfSkpLFxuICAgICAgc3RhdGUoJ3Nob3cnLCBzdHlsZSh7J2Rpc3BsYXknOiAnYmxvY2snLCAnb3BhY2l0eSc6ICcxJ30pKSxcbiAgICAgIHRyYW5zaXRpb24oJ2hpZGUgPD0+IHNob3cnLCBhbmltYXRlKCcyMDBtcyAxMDBtcyBlYXNlLWluLW91dCcpKSxcbiAgICBdKSxcbiAgICB0cmlnZ2VyKCd0b2dnbGVWaXNpYmlsaXR5JywgW1xuICAgICAgc3RhdGUoJ3ZvaWQnLCBzdHlsZSh7J29wYWNpdHknOiAnMCd9KSksXG4gICAgICBzdGF0ZSgnKicsIHN0eWxlKHsnb3BhY2l0eSc6ICcxJ30pKSxcbiAgICAgIHRyYW5zaXRpb24oJ3ZvaWQgPT4gKicsIGFuaW1hdGUoJzIwMG1zIGVhc2UtaW4tb3V0JykpLFxuICAgIF0pXG4gIF0sXG5cbn0pXG5leHBvcnQgY2xhc3MgUHJvZHVjdFBhZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgcHVibGljIHJlYWRvbmx5IGljb246IHR5cGVvZiBJY29uRW51bSA9IEljb25FbnVtO1xuICBAVmlld0NoaWxkKCdjb25maWd1cmF0b3InLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHVibGljIGNvbmZpZ3VyYXRvcjogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCdzZWxlY3Rpb25zJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHB1YmxpYyBzZWxlY3Rpb25zOiBFbGVtZW50UmVmO1xuXG4gIEBWaWV3Q2hpbGQoJ2Z1bGxzY3JlZW5idXR0b24nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHVibGljIGZ1bGxzY3JlZW5idXR0b246IEVsZW1lbnRSZWY7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBza3UodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgaWYgKHRoaXMuY29uZmlndXJpbmcpIHtcbiAgICAgICAgdGhpcy5zaG93M0QgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5mdWxsU2NyZWVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY29uZmlndXJpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfVxuICAgICAgdGhpcy5fc2t1ID0gdmFsdWU7XG4gICAgICB0aGlzLl9nZXRBcnRpY2xlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBza3UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2t1O1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZXR0aW5ncyh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLl9zZXR0aW5ncyA9IEpTT04ucGFyc2UodmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fc2V0dGluZ3MgPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgZXh0ZXJuYWxTb3VyY2U6IEV4dGVybmFsU291cmNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjcmVhdGVGcm96ZW5BcnRpY2xlOiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaXNSZXR1cm46IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd1JlbGF0ZWRQcm9kdWN0c1BvcHVwOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBvcGVuU3RvY2tFdmVudDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBwdWJsaWMgZ2V0IHNldHRpbmdzKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3NldHRpbmdzO1xuICB9XG5cbiAgcHVibGljIHNldCBmdWxsU2NyZWVuKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZnVsbFNjcmVlbiA9IHZhbHVlO1xuICAgIHRoaXMuZnVsbHNjcmVlbkFuaW1hdGlvbkVuZCA9IHRydWU7XG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIC8vICAgdGhpcy5mdWxsc2NyZWVuQW5pbWF0aW9uRW5kID0gdHJ1ZTtcbiAgICAvLyB9LCA0MDApXG4gIH1cblxuICBwdWJsaWMgZ2V0IGZ1bGxTY3JlZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Z1bGxTY3JlZW47XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZ1bGxTY3JlZW5JY29uKCk6IEljb25FbnVtIHtcbiAgICByZXR1cm4gdGhpcy5mdWxsU2NyZWVuID8gdGhpcy5pY29uLk5vcm1hbFNjcmVlbiA6IHRoaXMuaWNvbi5GdWxsU2NyZWVuO1xuICB9XG5cbiAgcHVibGljIHNldCBjdXJyZW50Vmlldyh2YWx1ZTogU2VsZWN0b3JUeXBlKSB7XG4gICAgdGhpcy5fY3VycmVudFZpZXcgPSB2YWx1ZTtcbiAgICB0aGlzLnNob3cyRCA9IHRoaXMuX2N1cnJlbnRWaWV3ID09PSBTZWxlY3RvclR5cGUuVHdvRDtcbiAgICB0aGlzLnNob3czRCA9IHRoaXMuX2N1cnJlbnRWaWV3ID09PSBTZWxlY3RvclR5cGUuVGhyZWVEO1xuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY3VycmVudFZpZXcoKTogU2VsZWN0b3JUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFZpZXc7XG4gIH1cblxuICBwdWJsaWMgYXJ0aWNsZTogQXJ0aWNsZUZ1bGxPYmplY3Q7XG4gIHB1YmxpYyBzdG9ja0FuZERlbGl2ZXJ5OiBTdG9ja0FuZERlbGl2ZXJ5O1xuICBwdWJsaWMgY29uZmlndXJhYmxlID0gZmFsc2U7XG4gIHB1YmxpYyB0aHJlZUQgPSBmYWxzZTtcbiAgcHVibGljIHNlbGVjdG9yVHlwZTogU2VsZWN0b3JUeXBlO1xuICBwdWJsaWMgc2hvdzJEID0gdHJ1ZTtcbiAgcHVibGljIHNob3czRCA9IGZhbHNlO1xuICBwdWJsaWMgY29uZmlndXJpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHNob3dBZGRUb0NhcnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGZ1bGxzY3JlZW5BbmltYXRpb25FbmQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHNldHRpbmdzTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3NrdTogc3RyaW5nO1xuICBwcml2YXRlIF9pbml0aWFsaXplZFN1YjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIF9mdWxsU2NyZWVuOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2N1cnJlbnRWaWV3OiBTZWxlY3RvclR5cGU7XG4gIHByaXZhdGUgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHByaXZhdGUgX3NldHRpbmdzOiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfaW9uZTogUHJvZHVjdENvbm5lY3RvclNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgICAgICAgcHVibGljIGljb25DYWNoZTogSWNvbkNhY2hlU2VydmljZSxcbiAgICAgICAgICAgICAgcHVibGljIHNldHRpbmdzU2VydmljZTogUHJvZHVjdFNldHRpbmdzU2VydmljZSxcbiAgICAgICAgICAgICAgcHVibGljIGFwcEV2ZW50U2VydmljZTogUHJvZHVjdEV2ZW50U2VydmljZVxuICApIHtcbiAgICB0aGlzLl9zdWJzLnB1c2goXG4gICAgICB0aGlzLmFwcEV2ZW50U2VydmljZS5vbkZvcmNlUmVuZGVySW1hZ2Uuc3Vic2NyaWJlKCh4KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbnMubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0aW9ucy5uYXRpdmVFbGVtZW50LmZvcmNlUmVuZGVySW1hZ2UoKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICAgIHRoaXMuc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzTG9hZGVkLnN1YnNjcmliZShsb2FkZWQgPT4gdGhpcy5faGFuZGxlU2V0dGluZ3NMb2FkZWQobG9hZGVkKSksXG4gICAgICAgIHRoaXMuX2lvbmUuY29udHJvbGxlckluaXRpYWxpemVkLnN1YnNjcmliZSgoaW5pdGlhbGl6ZWQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgdGhpcy5zZXR0aW5nc0xvYWRlZCA9IGluaXRpYWxpemVkO1xuICAgICAgfSksXG4gICAgICB0aGlzLmFwcEV2ZW50U2VydmljZS5vbkFuc3dlcnNBdmFpbGFibGUuc3Vic2NyaWJlKChhbnN3ZXJzKSA9PiB7XG4gICAgICAgIGlmIChhbnN3ZXJzICYmIHRoaXMuY29uZmlndXJhYmxlKSB7XG4gICAgICAgICAgdGhpcy5zaG93QWRkVG9DYXJ0ID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zaG93QWRkVG9DYXJ0ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5fc2V0dGluZ3MpIHtcbiAgICAgIHRoaXMuc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5zZXR0aW5nc1NlcnZpY2UuY3JlYXRlU2V0dGluZ3NGcm9tT2JqZWN0KHRoaXMuX3NldHRpbmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fc2V0dGluZ3MgPSB0aGlzLnNldHRpbmdzU2VydmljZS5zZXR0aW5ncztcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgIGlmICh0aGlzLl9pbml0aWFsaXplZFN1Yikge1xuICAgICAgdGhpcy5faW5pdGlhbGl6ZWRTdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgdGhpcy5jb25maWd1cmF0b3IgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zZWxlY3Rpb25zID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZnVsbHNjcmVlbmJ1dHRvbiA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRJbnN0YW5jZShldmVudDogQ3VzdG9tRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQuZGV0YWlsKSB7XG4gICAgICB0aGlzLl9pb25lLnNldEluc3RhbmNlKGV2ZW50LmRldGFpbCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhbmRsZVN0YXJ0Q29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZ3VyaW5nID0gdHJ1ZTtcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwdWJsaWMgc2hvd0Z1bGxTY3JlZW4oKTogdm9pZCB7XG4gICAgdGhpcy5mdWxsU2NyZWVuID0gIXRoaXMuZnVsbFNjcmVlbjtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZVNldHRpbmdzTG9hZGVkKGxvYWRlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChsb2FkZWQpIHtcbiAgICAgIHRoaXMuX2lvbmUuaW5pdENvbm5lY3Rpb24oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9nZXRBcnRpY2xlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLl9pbml0aWFsaXplZFN1Yikge1xuICAgICAgdGhpcy5faW5pdGlhbGl6ZWRTdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgdGhpcy5faW5pdGlhbGl6ZWRTdWIgPSB0aGlzLl9pb25lLmNvbnRyb2xsZXJJbml0aWFsaXplZC5zdWJzY3JpYmUoYXN5bmMgKGluaXQ6IGJvb2xlYW4pID0+IHtcbiAgICAgIGlmIChpbml0KSB7XG4gICAgICAgIHRoaXMuX2lvbmUuZ2V0RnVsbEFydGljbGUodGhpcy5fc2t1KS50aGVuKChhcnRpY2xlOiBBcnRpY2xlRnVsbE9iamVjdCkgPT4ge1xuICAgICAgICAgIHRoaXMuYXJ0aWNsZSA9IGFydGljbGU7XG4gICAgICAgICAgaWYgKHRoaXMuYXJ0aWNsZSkge1xuICAgICAgICAgICAgdGhpcy5jb25maWd1cmFibGUgPSB0aGlzLmFydGljbGUuZ29vZFR5cGUgPT09ICdCJztcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYWJsZSkge1xuICAgICAgICAgICAgICB0aGlzLnNob3dBZGRUb0NhcnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy5jdXJyZW50VmlldyA9IFNlbGVjdG9yVHlwZS5Ud29EO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5zaG93QWRkVG9DYXJ0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudGhyZWVEID0gdGhpcy5hcnRpY2xlLmlzM0Q7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdG9yVHlwZSA9IHRoaXMuYXJ0aWNsZS5zZWxlY3RvclR5cGVDdXN0b21lcjtcbiAgICAgICAgICAgIHRoaXMuX2lvbmUuZ2V0RGVsaXZlcnlQcm9nbm9zaXModGhpcy5hcnRpY2xlLmdvb2RJZCkudGhlbigoc3RvY2tJbmZvOiBEZWxpdmVyeVByb2dub3NpcykgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBzdG9ja0FuZERlbGl2ZXJ5OiBEZWxpdmVyeVByb2dub3NpcyA9IHN0b2NrSW5mbztcbiAgICAgICAgICAgICAgdGhpcy5zdG9ja0FuZERlbGl2ZXJ5ID0gbmV3IFN0b2NrQW5kRGVsaXZlcnkoMCwgc3RvY2tBbmREZWxpdmVyeS5yZXR1cm5WYWx1ZSA/IHN0b2NrQW5kRGVsaXZlcnkucmV0dXJuVmFsdWUgOiAnICcpO1xuICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuc2hvd1JlbGF0ZWRQcm9kdWN0c1BvcHVwID0gZmFsc2U7XG4gIH1cbiAgcHVibGljIG9wZW5TdG9jaygpIHtcbiAgICB0aGlzLm9wZW5TdG9ja0V2ZW50LmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVQb3BVcENoYW5nZShldmVudDogYm9vbGVhbil7XG4gICAgdGhpcy5zaG93UmVsYXRlZFByb2R1Y3RzUG9wdXAgPSBldmVudDtcbiAgfVxufVxuIl19