@net7/boilerplate-muruca 5.5.12 → 5.5.17-rc4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,10 @@
1
1
  import { DataSource } from '@net7/core';
2
2
  export class MrEmbeddedContentDS extends DataSource {
3
3
  transform(data) {
4
+ if (!data)
5
+ return null;
4
6
  const iframe = `<iframe src="${data}" width="100%" height="600px"></iframe>`;
5
7
  return iframe;
6
8
  }
7
9
  }
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1iZWRkZWQtY29udGVudC5kcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL243LWJvaWxlcnBsYXRlLW11cnVjYS9zcmMvbGliL2RhdGEtc291cmNlcy9lbWJlZGRlZC1jb250ZW50LmRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFeEMsTUFBTSxPQUFPLG1CQUFvQixTQUFRLFVBQVU7SUFHdkMsU0FBUyxDQUFDLElBQVM7UUFDM0IsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLElBQUkseUNBQXlDLENBQUM7UUFDN0UsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJ0BuZXQ3L2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgTXJFbWJlZGRlZENvbnRlbnREUyBleHRlbmRzIERhdGFTb3VyY2Uge1xuICBpZDogc3RyaW5nO1xuXG4gIHByb3RlY3RlZCB0cmFuc2Zvcm0oZGF0YTogYW55KTogYW55IHtcbiAgICBjb25zdCBpZnJhbWUgPSBgPGlmcmFtZSBzcmM9XCIke2RhdGF9XCIgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiNjAwcHhcIj48L2lmcmFtZT5gO1xuICAgIHJldHVybiBpZnJhbWU7XG4gIH1cbn1cbiJdfQ==
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1iZWRkZWQtY29udGVudC5kcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL243LWJvaWxlcnBsYXRlLW11cnVjYS9zcmMvbGliL2RhdGEtc291cmNlcy9lbWJlZGRlZC1jb250ZW50LmRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFeEMsTUFBTSxPQUFPLG1CQUFvQixTQUFRLFVBQVU7SUFHdkMsU0FBUyxDQUFDLElBQVM7UUFDM0IsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQztRQUN2QixNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsSUFBSSx5Q0FBeUMsQ0FBQztRQUM3RSxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAnQG5ldDcvY29yZSc7XG5cbmV4cG9ydCBjbGFzcyBNckVtYmVkZGVkQ29udGVudERTIGV4dGVuZHMgRGF0YVNvdXJjZSB7XG4gIGlkOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIHRyYW5zZm9ybShkYXRhOiBhbnkpOiBhbnkge1xuICAgIGlmICghZGF0YSkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgaWZyYW1lID0gYDxpZnJhbWUgc3JjPVwiJHtkYXRhfVwiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjYwMHB4XCI+PC9pZnJhbWU+YDtcbiAgICByZXR1cm4gaWZyYW1lO1xuICB9XG59XG4iXX0=
@@ -37,6 +37,8 @@ export class FacetMapDS extends DataSource {
37
37
  return this.MARKER_ICON_SELECTED;
38
38
  if (counter > 0)
39
39
  return this.MARKER_ICON;
40
+ if (this.options.libOptions?.hideUnavailablePin)
41
+ return null;
40
42
  return this.MARKER_ICON_UNAVAILABLE;
41
43
  };
42
44
  this.getZindex = (id, counter) => {
@@ -128,8 +130,11 @@ export class FacetMapDS extends DataSource {
128
130
  });
129
131
  markers.forEach(({ coords, template, id, slug, counter }) => {
130
132
  // create custom icon marker
133
+ const icon = this.getIcon(id, counter);
134
+ if (!icon)
135
+ return;
131
136
  const newMarker = L.marker(coords, {
132
- icon: this.getIcon(id, counter),
137
+ icon,
133
138
  zIndexOffset: this.getZindex(id, counter)
134
139
  });
135
140
  if (id && slug) {
@@ -206,4 +211,4 @@ export class FacetMapDS extends DataSource {
206
211
  this.value = [];
207
212
  }
208
213
  }
209
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjZXQtbWFwLmRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbjctYm9pbGVycGxhdGUtbXVydWNhL3NyYy9saWIvZGF0YS1zb3VyY2VzL2ZhY2V0cy9mYWNldC1tYXAuZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV4QyxPQUFPLEtBQUssQ0FBQyxNQUFNLFNBQVMsQ0FBQztBQUM3QixPQUFPLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxTQUFTLE1BQU0sMEJBQTBCLENBQUM7QUFDakQsNENBQTRDO0FBQzVDLG1EQUFtRDtBQUNuRCxtQkFBbUI7QUFFbkIsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDO0FBeUJqQyxNQUFNLE9BQU8sVUFBVyxTQUFRLFVBQVU7SUFBMUM7O1FBR0UsVUFBSyxHQUFnQixFQUFFLENBQUM7UUFNeEIsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBZSxDQUFDO1FBRTNDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsYUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVoRCxnQkFBVyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDM0IsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3JCLFNBQVMsRUFBRSxhQUFhO1NBQ3pCLENBQUMsQ0FBQztRQUVLLDRCQUF1QixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDdkMsT0FBTyxFQUFFLDZCQUE2QjtZQUN0QyxRQUFRLEVBQUUsSUFBSSxDQUFD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WUFDRCxNQUFNO1lBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQztnQkFDVixHQUFHLElBQUksQ0FBQyxLQUFLO2dCQUNiLEtBQUssRUFBRSxZQUFZO2FBQ3BCLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBY0QsV0FBVyxDQUFDLEtBQWE7UUFDdkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsQ0FBQzthQUFNLElBQUksTUFBTSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUVELFNBQVM7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUlELEtBQUs7UUFDSCxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNsQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAnQG5ldDcvY29yZSc7XG5pbXBvcnQgeyBNYXBEYXRhLCBNYXJrZXJEYXRhIH0gZnJvbSAnQG5ldDcvY29tcG9uZW50cyc7XG5pbXBvcnQgKiBhcyBMIGZyb20gJ2xlYWZsZXQnO1xuaW1wb3J0ICdsZWFmbGV0Lm1hcmtlcmNsdXN0ZXInO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmFjZXREYXRhU291cmNlIH0gZnJvbSAnLi9mYWNldC1kYXRhc291cmNlJztcbmltcG9ydCBtYXBIZWxwZXIgZnJvbSAnLi4vLi4vaGVscGVycy9tYXAtaGVscGVyJztcbi8vIGxlYWZsZXQgaXMgYWxyZWFkeSBwcmVzZW50IGluIHRoZSB3aW5kb3csXG4vLyBhIGRvdWJsZSBpbXBvcnQgcmVzdWx0cyBpbiBlcnJvcnMgd2l0aCB0b29sdGlwcy5cbi8vIGRlY2xhcmUgY29uc3QgTDtcblxuY29uc3QgQUNUSVZFX0NMQVNTID0gJ2lzLWFjdGl2ZSc7XG5cbnR5cGUgRkFDRVRfVkFMVUUgPSBzdHJpbmdbXTtcblxudHlwZSBDYWRhc3RyYWxVbml0ID0ge1xuICB0ZXh0OiBzdHJpbmc7XG4gIHBheWxvYWQ6IHN0cmluZztcbiAgY291bnRlcjogbnVtYmVyO1xuICBhcmdzOiB7XG4gICAgbGF0OiBzdHJpbmcgfCBudWxsO1xuICAgIGxvbjogc3RyaW5nIHwgbnVsbDtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXJrZXJFdmVudCB7XG4gIHR5cGU6IHN0cmluZztcbiAgaWQ6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIE1hcmtlcldpdGhJRCBleHRlbmRzIE1hcmtlckRhdGEge1xuICBpZD86IHN0cmluZztcbiAgY291bnRlcjogbnVtYmVyO1xuICBzbHVnOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBGYWNldE1hcERTIGV4dGVuZHMgRGF0YVNvdXJjZSBpbXBsZW1lbnRzIEZhY2V0RGF0YVNvdXJjZSB7XG4gIGlkOiBzdHJpbmc7XG5cbiAgdmFsdWU6IEZBQ0VUX1ZBTFVFID0gW107XG5cbiAgbWFwSW5zdGFuY2U7XG5cbiAgbWFya2VyTGF5ZXI7XG5cbiAgbWFya2VyRXZlbnRzJCA9IG5ldyBTdWJqZWN0PE1hcmtlckV2ZW50PigpO1xuXG4gIGlzVXBkYXRlID0gZmFsc2U7XG5cbiAgaWNvblNpemUgPSB0aGlzLm9wdGlvbnMubGliT3B0aW9ucy5pY29uU2l6ZSA/PyBbMTMsIDIwXTtcblxuICBwcml2YXRlIE1BUktFUl9JQ09OID0gTC5pY29uKHtcbiAgICBpY29uVXJsOiAnL2Fzc2V0cy9waW4ucG5nJyxcbiAgICBpY29uU2l6ZTogdGhpcy5pY29uU2l6ZSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0xNV0sXG4gICAgY2xhc3NOYW1lOiAnbWFya2VyLWljb24nXG4gIH0pO1xuXG4gIHByaXZhdGUgTUFSS0VSX0lDT05fVU5BVkFJTEFCTEUgPSBMLmljb24oe1xuICAgIGljb25Vcmw6ICcvYXNzZXRzL3Bpbi11bmF2YWlsYWJsZS5wbmcnLFxuICAgIGljb25TaXplOiB0aGlzLmljb25TaXplLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTE1XSxcbiAgICBjbGFzc05hbWU6ICdtYXJrZXItaWNvbidcbiAgfSk7XG5cbiAgcHJpdmF0ZSBNQVJLRVJfSUNPTl9TRUxFQ1RFRCA9IEwuaWNvbih7XG4gICAgaWNvblVybDogJy9hc3NldHMvcGluLXNlbGVjdGVkLnBuZycsXG4gICAgaWNvblNpemU6IHRoaXMuaWNvblNpemUsXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMTVdLFxuICAgIGNsYXNzTmFtZTogJ21hcmtlci1pY29uLXNlbGVjdGVkJ1xuICB9KTtcblxuICBwcm90ZWN0ZWQgdHJhbnNmb3JtKHsgbGlua3MgfTogeyBsaW5rczogQ2FkYXN0cmFsVW5pdFtdIH0pOiBNYXBEYXRhIHtcbiAgICBjb25zdCBtYXJrZXJzID0gW107XG4gICAgbGlua3NcbiAgICAgIC5maWx0ZXIoKGQpID0+IGQuYXJncz8ubGF0ICYmIGQuYXJncz8ubG9uKVxuICAgICAgLmZvckVhY2goKGQpID0+IHtcbiAgICAgICAgLy8gaWYgYSBsaW5rIGhhcyBtb3JlIHRoYW4gb25lIGNvcnJlc3BvbmRpbmcgbWFya2VyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGQuYXJncy5sYXQpKSB7XG4gICAgICAgICAgZC5hcmdzLmxhdC5mb3JFYWNoKChlbGVtZW50LCBpKSA9PiB7XG4gICAgICAgICAgICBtYXJrZXJzLnB1c2goe1xuICAgICAgICAgICAgICBjb29yZHM6IFsrZC5hcmdzLmxhdFtpXSwgK2QuYXJncy5sb25baV1dIGFzIFtudW1iZXIsIG51bWJlcl0sXG4gICAgICAgICAgICAgIHRlbXBsYXRlOiBkLnRleHQsXG4gICAgICAgICAgICAgIHRpdGxlOiBkLnRleHQsXG4gICAgICAgICAgICAgIGlkOiBkLnBheWxvYWQsXG4gICAgICAgICAgICAgIHNsdWc6IGQucGF5bG9hZCxcbiAgICAgICAgICAgICAgY291bnRlcjogZC5jb3VudGVyLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gaWYgYSBsaW5rIGhhcyBvbmx5IG9uZSBtYXJrZXJcbiAgICAgICAgICBtYXJrZXJzLnB1c2goe1xuICAgICAgICAgICAgY29vcmRzOiBbK2QuYXJncy5sYXQsICtkLmFyZ3MubG9uXSBhcyBbbnVtYmVyLCBudW1iZXJdLFxuICAgICAgICAgICAgdGVtcGxhdGU6IGQudGV4dCxcbiAgICAgICAgICAgIHRpdGxlOiBkLnRleHQsXG4gICAgICAgICAgICBpZDogZC5wYXlsb2FkLFxuICAgICAgICAgICAgc2x1ZzogZC5wYXlsb2FkLFxuICAgICAgICAgICAgY291bnRlcjogZC5jb3VudGVyLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICBjb25zdCBtYXBDb25maWcgPSB0aGlzLm9wdGlvbnM/LmxpYk9wdGlvbnM7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRhaW5lcklkOiAnbWFwLWNhbnZhcycsXG4gICAgICBsaWJPcHRpb25zOiB7XG4gICAgICAgIGF0dHJpYnV0aW9uQ29udHJvbDogZmFsc2UsXG4gICAgICAgIG1pblpvb206IDgsXG4gICAgICAgIC4uLm1hcENvbmZpZ1xuICAgICAgfSxcbiAgICAgIHRpbGVMYXllcnM6IFt7XG4gICAgICAgIC8vIHVybDogJ2h0dHBzOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nJyxcbiAgICAgICAgdXJsOiBtYXBDb25maWcubGF5ZXJVcmwgPz8gJ2h0dHBzOi8ve3N9LmJhc2VtYXBzLmNhcnRvY2RuLmNvbS9yYXN0ZXJ0aWxlcy92b3lhZ2VyX2xhYmVsc191bmRlci97en0ve3h9L3t5fXtyfS5wbmcnLFxuICAgICAgICAvLyB1cmw6ICdodHRwczovL2NhcnRvZGItYmFzZW1hcHMte3N9Lmdsb2JhbC5zc2wuZmFzdGx5Lm5ldC9saWdodF9hbGwve3p9L3t4fS97eX0ucG5nJyxcbiAgICAgICAgb3B0aW9uczogbnVsbFxuICAgICAgfV0sXG4gICAgICBpbml0aWFsVmlldzoge1xuICAgICAgICBjZW50ZXI6IG1hcENvbmZpZy5jZW50ZXIgPz8gWzQ2LjA2LCAxMS4yMV0sXG4gICAgICAgIHpvb206IG1hcENvbmZpZy56b29tID8/IDlcbiAgICAgIH0sXG4gICAgICBfc2V0SW5zdGFuY2U6IChtYXApID0+IHtcbiAgICAgICAgdGhpcy5tYXBJbnN0YW5jZSA9IG1hcDtcbiAgICAgICAgdGhpcy5idWlsZE1hcmtlcnMobWFya2Vycyk7XG5cbiAgICAgICAgaWYgKG1hcENvbmZpZy5hdXRvQ2VudGVyKSB7XG4gICAgICAgICAgY29uc3QgYm91bmRzID0gbmV3IExcbiAgICAgICAgICAgIC5MYXRMbmdCb3VuZHMobWFya2Vyc1xuICAgICAgICAgICAgICAubWFwKChkKSA9PiAoeyBsYXQ6IGQuY29vcmRzWzBdLCBsb246IGQuY29vcmRzWzFdIH0pKVxuICAgICAgICAgICAgICAuZmlsdGVyKChkKSA9PiBtYXBIZWxwZXIuaXNWYWxpZE1hcmtlcihkKSkpO1xuICAgICAgICAgIHRoaXMubWFwSW5zdGFuY2UuZml0Qm91bmRzKGJvdW5kcyk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgbWFya2VycyB3aXRoIGEgY3VzdG9tIGljb24gYW5kIGFkZHMgdGhlbSB0byB0aGUgbWFwLlxuICAgKiBAcGFyYW0gbWFya2VycyBhbiBhcnJheSBvZiBtYXJrZXJzXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkTWFya2VycyhtYXJrZXJzOiBNYXJrZXJXaXRoSURbXSkge1xuICAgIGlmICghbWFya2VycykgcmV0dXJuO1xuICAgIGNvbnN0IG1hcENvbmZpZyA9IHRoaXMub3B0aW9ucz8ubGliT3B0aW9ucztcbiAgICAvLyByZW1vdmUgYWxsIGV4aXN0aW5nIG1hcmtlcnNcbiAgICBpZiAodGhpcy5tYXJrZXJMYXllcikge1xuICAgICAgdGhpcy5tYXJrZXJMYXllci5jbGVhckxheWVycygpO1xuICAgICAgdGhpcy5tYXBJbnN0YW5jZS5yZW1vdmVMYXllcih0aGlzLm1hcmtlckxheWVyKTtcbiAgICB9XG4gICAgY29uc3QgbWFya2VyR3JvdXAgPSBMLm1hcmtlckNsdXN0ZXJHcm91cChcbiAgICAgIHtcbiAgICAgICAgbWF4Q2x1c3RlclJhZGl1czogbWFwQ29uZmlnLm1heENsdXN0ZXJSYWRpdXMgPz8gMTAsXG4gICAgICAgIGRpc2FibGVDbHVzdGVyaW5nQXRab29tOiBtYXBDb25maWcuZGlzYWJsZUNsdXN0ZXJpbmdBdFpvb20gPz8gOFxuICAgICAgfVxuICAgICk7XG4gICAgbWFya2Vycy5mb3JFYWNoKCh7XG4gICAgICBjb29yZHMsIHRlbXBsYXRlLCBpZCwgc2x1ZywgY291bnRlclxuICAgIH0pID0+IHtcbiAgICAgIC8vIGNyZWF0ZSBjdXN0b20gaWNvbiBtYXJrZXJcbiAgICAgIGNvbnN0IG5ld01hcmtlciA9IEwubWFya2VyKGNvb3Jkcywge1xuICAgICAgICBpY29uOiB0aGlzLmdldEljb24oaWQsIGNvdW50ZXIpLFxuICAgICAgICB6SW5kZXhPZmZzZXQ6IHRoaXMuZ2V0WmluZGV4KGlkLCBjb3VudGVyKVxuICAgICAgfSk7XG4gICAgICBpZiAoaWQgJiYgc2x1Zykge1xuICAgICAgICBuZXdNYXJrZXIuaWQgPSBpZDtcbiAgICAgICAgbmV3TWFya2VyLmNvdW50ZXIgPSBjb3VudGVyO1xuICAgICAgICBuZXdNYXJrZXIuc2x1ZyA9IHNsdWc7XG4gICAgICB9XG4gICAgICBuZXdNYXJrZXJcbiAgICAgICAgLy8gYWRkIHRoZSBtYXJrZXIgdG8gdGhlIGdyb3VwXG4gICAgICAgIC5hZGRUbyhtYXJrZXJHcm91cClcbiAgICAgICAgLy8gYWRkIHRoZSBvbi1jbGljayB0b29sdGlwXG4gICAgICAgIC5iaW5kUG9wdXAodGVtcGxhdGUpO1xuXG4gICAgICBuZXdNYXJrZXIub24oJ2NsaWNrJywgKHsgdGFyZ2V0IH0pID0+IHtcbiAgICAgICAgdGhpcy5tYXJrZXJFdmVudHMkLm5leHQoe1xuICAgICAgICAgIHR5cGU6ICdtYXJrZXIuY2xpY2snLFxuICAgICAgICAgIGlkOiB0YXJnZXQuaWRcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgbmV3TWFya2VyLm9uKCdtb3VzZW92ZXInLCAoeyB0YXJnZXQgfSkgPT4ge1xuICAgICAgICB0YXJnZXQub3BlblBvcHVwKCk7XG4gICAgICB9KTtcblxuICAgICAgbmV3TWFya2VyLm9uKCdtb3VzZW91dCcsICh7IHRhcmdldCB9KSA9PiB7XG4gICAgICAgIHRhcmdldC5jbG9zZVBvcHVwKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICAvLyBhZGQgdGhlIG1hcmtlcnMgdG8gdGhlIG1hcCBpbnN0YW5jZVxuICAgIHRoaXMubWFwSW5zdGFuY2UuYWRkTGF5ZXIobWFya2VyR3JvdXApO1xuICAgIC8vIHVwZGF0ZSB0aGUgbWFya2VyIGxheWVyIGluc3RhbmNlXG4gICAgdGhpcy5tYXJrZXJMYXllciA9IG1hcmtlckdyb3VwO1xuICB9XG5cbiAgc2V0VmFsdWUodmFsdWU6IEZBQ0VUX1ZBTFVFLCB1cGRhdGUgPSBmYWxzZSkge1xuICAgIC8vIHByZXZlbnQgdGhlIHNlYXJjaCBzZXJ2aWNlIGZyb20gYXNzaWduaW5nIGEgcGxhaW4gc3RyaW5nXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHZhbHVlID0gW3ZhbHVlXTtcblxuICAgIGlmICh0aGlzLnZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICB0aGlzLmlzVXBkYXRlID0gdXBkYXRlIHx8IHRoaXMudmFsdWU/Lmxlbmd0aCA9PT0gMDtcblxuICAgIGlmICh1cGRhdGUgJiYgdGhpcy5pbnB1dCkge1xuICAgICAgY29uc3QgeyBsaW5rcyB9ID0gdGhpcy5pbnB1dDtcbiAgICAgIGNvbnN0IHVwZGF0ZWRMaW5rcyA9IGxpbmtzLm1hcCgobGluazogQ2FkYXN0cmFsVW5pdCkgPT4gKHtcbiAgICAgICAgLi4ubGluayxcbiAgICAgICAgY2xhc3NlczogdGhpcy52YWx1ZS5pbmNsdWRlcyhsaW5rLnBheWxvYWQpID8gQUNUSVZFX0NMQVNTIDogJydcbiAgICAgIH0pKTtcbiAgICAgIC8vIHVwZGF0ZSBtYXJrZXIgaWNvbnNcbiAgICAgIGlmICh0aGlzLm1hcmtlckxheWVyKSB7XG4gICAgICAgIHRoaXMubWFya2VyTGF5ZXIuZWFjaExheWVyKChtYXJrZXIpID0+IHtcbiAgICAgICAgICBjb25zdCB7IGlkIH0gPSBtYXJrZXI7XG4gICAgICAgICAgY29uc3QgY291bnRlciA9IGxpbmtzLmZpbmQoKHsgcGF5bG9hZCB9KSA9PiBwYXlsb2FkID09PSBpZCk/LmNvdW50ZXIgfHwgMDtcbiAgICAgICAgICBtYXJrZXIuZ2V0UG9wdXAoKS5fc291cmNlLnNldEljb24odGhpcy5nZXRJY29uKGlkLCBjb3VudGVyKSlcbiAgICAgICAgICAgIC5zZXRaSW5kZXhPZmZzZXQodGhpcy5nZXRaaW5kZXgoaWQsIGNvdW50ZXIpKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICAvLyAtLS1cbiAgICAgIHRoaXMudXBkYXRlKHtcbiAgICAgICAgLi4udGhpcy5pbnB1dCxcbiAgICAgICAgbGlua3M6IHVwZGF0ZWRMaW5rc1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0SWNvbiA9IChpZDogc3RyaW5nLCBjb3VudGVyOiBudW1iZXIpID0+IHtcbiAgICBpZiAodGhpcy52YWx1ZS5pbmNsdWRlcyhpZCkpIHJldHVybiB0aGlzLk1BUktFUl9JQ09OX1NFTEVDVEVEO1xuICAgIGlmIChjb3VudGVyID4gMCkgcmV0dXJuIHRoaXMuTUFSS0VSX0lDT047XG4gICAgcmV0dXJuIHRoaXMuTUFSS0VSX0lDT05fVU5BVkFJTEFCTEU7XG4gIH07XG5cbiAgZ2V0WmluZGV4ID0gKGlkOiBzdHJpbmcsIGNvdW50ZXI6IG51bWJlcikgPT4ge1xuICAgIGlmICh0aGlzLnZhbHVlLmluY2x1ZGVzKGlkKSkgcmV0dXJuIDE5OTk5O1xuICAgIGlmIChjb3VudGVyID4gMCkgcmV0dXJuIDk5OTk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgdG9nZ2xlVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIGNvbnN0IGV4aXN0cyA9IHRoaXMudmFsdWUuaW5jbHVkZXModmFsdWUpO1xuICAgIGlmICghZXhpc3RzKSB7XG4gICAgICB0aGlzLnZhbHVlLnB1c2godmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoZXhpc3RzKSB7XG4gICAgICB0aGlzLnZhbHVlLnNwbGljZSh0aGlzLnZhbHVlLmluZGV4T2YodmFsdWUpLCAxKTtcbiAgICB9XG5cbiAgICAvLyB1cGRhdGVcbiAgICB0aGlzLnNldFZhbHVlKHRoaXMudmFsdWUsIHRydWUpO1xuICB9XG5cbiAgZ2V0VmFsdWUgPSAoKTogRkFDRVRfVkFMVUUgPT4gdGhpcy52YWx1ZTtcblxuICBjbGVhcigpIHtcbiAgICB0aGlzLnZhbHVlID0gW107XG4gIH1cbn1cbiJdfQ==
214
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjZXQtbWFwLmRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbjctYm9pbGVycGxhdGUtbXVydWNhL3NyYy9saWIvZGF0YS1zb3VyY2VzL2ZhY2V0cy9mYWNldC1tYXAuZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV4QyxPQUFPLEtBQUssQ0FBQyxNQUFNLFNBQVMsQ0FBQztBQUM3QixPQUFPLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxTQUFTLE1BQU0sMEJBQTBCLENBQUM7QUFDakQsNENBQTRDO0FBQzVDLG1EQUFtRDtBQUNuRCxtQkFBbUI7QUFFbkIsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDO0FBeUJqQyxNQUFNLE9BQU8sVUFBVyxTQUFRLFVBQVU7SUFBMUM7O1FBR0UsVUFBSyxHQUFnQixFQUFFLENBQUM7UUFNeEIsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBZSxDQUFDO1FBRTNDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsYUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVoRCxnQkFBVyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDM0IsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3JCLFNBQVMsRUFBRSxhQUFhO1NBQ3pCLENBQUMsQ0FBQztRQUVLLDRCQUF1QixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDdkMsT0FBTyxFQUFFLDZCQUE2QjtZQUN0QyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3JCLFNBQVMsRUFBRSxhQUFhO1NBQ3pCLENBQUMsQ0FBQztRQUVLLHlCQUFvQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDcEMsT0FBTyxFQUFFLDBCQUEwQjtZQUNuQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3JCLFNBQVMsRUFBRSxzQkFBc0I7U0FDbEMsQ0FBQyxDQUFDO1FBNkpILFlBQU8sR0FBRyxDQUFDLEVBQVUsRUFBRSxPQUFlLEVBQUUsRUFBRTtZQUN4QyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFBRSxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztZQUM5RCxJQUFJLE9BQU8sR0FBRyxDQUFDO2dCQUFFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUN6QyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLGtCQUFrQjtnQkFBRSxPQUFPLElBQUksQ0FBQztZQUM3RCxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztRQUN0QyxDQUFDLENBQUM7UUFFRixjQUFTLEdBQUcsQ0FBQyxFQUFVLEVBQUUsT0FBZSxFQUFFLEVBQUU7WUFDMUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQUUsT0FBTyxLQUFLLENBQUM7WUFDMUMsSUFBSSxPQUFPLEdBQUcsQ0FBQztnQkFBRSxPQUFPLElBQUksQ0FBQztZQUM3QixPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQztRQWNGLGFBQVEsR0FBRyxHQUFnQixFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUszQyxDQUFDO0lBekxXLFNBQVMsQ0FBQyxFQUFFLEtBQUssRUFBOEI7UUFDdkQsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ25CLEtBQUs7YUFDRixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO2FBQ3pDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2IsbURBQW1EO1lBQ25ELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDaEMsT0FBTyxDQUFDLElBQUksQ0FBQzt3QkFDWCxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQXFCO3dCQUM1RCxRQUFRLEVBQUUsQ0FBQyxDQUFDLElBQUk7d0JBQ2hCLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSTt3QkFDYixFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU87d0JBQ2IsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPO3dCQUNmLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTztxQkFDbkIsQ0FBQyxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLGdDQUFnQztnQkFDaEMsT0FBTyxDQUFDLElBQUksQ0FBQztvQkFDWCxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQXFCO29CQUN0RCxRQUFRLEVBQUUsQ0FBQyxDQUFDLElBQUk7b0JBQ2hCLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSTtvQkFDYixFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU87b0JBQ2IsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPO29CQUNmLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTztpQkFDbkIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUM7UUFDM0MsT0FBTztZQUNMLFdBQVcsRUFBRSxZQUFZO1lBQ3pCLFVBQVUsRUFBRTtnQkFDVixrQkFBa0IsRUFBRSxLQUFLO2dCQUN6QixPQUFPLEVBQUUsQ0FBQztnQkFDVixHQUFHLFNBQVM7YUFDYjtZQUNELFVBQVUsRUFBRSxDQUFDO29CQUNYLDZEQUE2RDtvQkFDN0QsR0FBRyxFQUFFLFNBQVMsQ0FBQyxRQUFRLElBQUksdUZBQXVGO29CQUNsSCx1RkFBdUY7b0JBQ3ZGLE9BQU8sRUFBRSxJQUFJO2lCQUNkLENBQUM7WUFDRixXQUFXLEVBQUU7Z0JBQ1gsTUFBTSxFQUFFLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO2dCQUMxQyxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDO2FBQzFCO1lBQ0QsWUFBWSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO2dCQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUUzQixJQUFJLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDekIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDO3lCQUNqQixZQUFZLENBQUMsT0FBTzt5QkFDbEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3lCQUNwRCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNoRCxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDckMsQ0FBQztZQUNILENBQUM7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNLLFlBQVksQ0FBQyxPQUF1QjtRQUMxQyxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU87UUFDckIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUM7UUFDM0MsOEJBQThCO1FBQzlCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFDRCxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUMsa0JBQWtCLENBQ3RDO1lBQ0UsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDLGdCQUFnQixJQUFJLEVBQUU7WUFDbEQsdUJBQXVCLEVBQUUsU0FBUyxDQUFDLHVCQUF1QixJQUFJLENBQUM7U0FDaEUsQ0FDRixDQUFDO1FBQ0YsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQ2YsTUFBTSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFDcEMsRUFBRSxFQUFFO1lBQ0gsNEJBQTRCO1lBQzVCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxJQUFJO2dCQUFFLE9BQU87WUFDbEIsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7Z0JBQ2pDLElBQUk7Z0JBQ0osWUFBWSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQzthQUMxQyxDQUFDLENBQUM7WUFDSCxJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDZixTQUFTLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztnQkFDbEIsU0FBUyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7Z0JBQzVCLFNBQVMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLENBQUM7WUFDRCxTQUFTO2dCQUNQLDhCQUE4QjtpQkFDN0IsS0FBSyxDQUFDLFdBQVcsQ0FBQztnQkFDbkIsMkJBQTJCO2lCQUMxQixTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFdkIsU0FBUyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO29CQUN0QixJQUFJLEVBQUUsY0FBYztvQkFDcEIsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFO2lCQUNkLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1lBRUgsU0FBUyxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7Z0JBQ3ZDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNyQixDQUFDLENBQUMsQ0FBQztZQUVILFNBQVMsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO2dCQUN0QyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDdEIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILHNDQUFzQztRQUN0QyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN2QyxtQ0FBbUM7UUFDbkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDakMsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFrQixFQUFFLE1BQU0sR0FBRyxLQUFLO1FBQ3pDLDJEQUEyRDtRQUMzRCw2Q0FBNkM7UUFDN0MsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1lBQUUsS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFL0MsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sS0FBSyxDQUFDLENBQUM7UUFFbkQsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3pCLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQzdCLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFtQixFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN2RCxHQUFHLElBQUk7Z0JBQ1AsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFO2FBQy9ELENBQUMsQ0FBQyxDQUFDO1lBQ0osc0JBQXNCO1lBQ3RCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO29CQUNwQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsTUFBTSxDQUFDO29CQUN0QixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQyxFQUFFLE9BQU8sSUFBSSxDQUFDLENBQUM7b0JBQzFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO3lCQUN6RCxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDbEQsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0QsTUFBTTtZQUNOLElBQUksQ0FBQyxNQUFNLENBQUM7Z0JBQ1YsR0FBRyxJQUFJLENBQUMsS0FBSztnQkFDYixLQUFLLEVBQUUsWUFBWTthQUNwQixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQWVELFdBQVcsQ0FBQyxLQUFhO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLENBQUM7YUFBTSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFFRCxTQUFTO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFJRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDbEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJ0BuZXQ3L2NvcmUnO1xuaW1wb3J0IHsgTWFwRGF0YSwgTWFya2VyRGF0YSB9IGZyb20gJ0BuZXQ3L2NvbXBvbmVudHMnO1xuaW1wb3J0ICogYXMgTCBmcm9tICdsZWFmbGV0JztcbmltcG9ydCAnbGVhZmxldC5tYXJrZXJjbHVzdGVyJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZhY2V0RGF0YVNvdXJjZSB9IGZyb20gJy4vZmFjZXQtZGF0YXNvdXJjZSc7XG5pbXBvcnQgbWFwSGVscGVyIGZyb20gJy4uLy4uL2hlbHBlcnMvbWFwLWhlbHBlcic7XG4vLyBsZWFmbGV0IGlzIGFscmVhZHkgcHJlc2VudCBpbiB0aGUgd2luZG93LFxuLy8gYSBkb3VibGUgaW1wb3J0IHJlc3VsdHMgaW4gZXJyb3JzIHdpdGggdG9vbHRpcHMuXG4vLyBkZWNsYXJlIGNvbnN0IEw7XG5cbmNvbnN0IEFDVElWRV9DTEFTUyA9ICdpcy1hY3RpdmUnO1xuXG50eXBlIEZBQ0VUX1ZBTFVFID0gc3RyaW5nW107XG5cbnR5cGUgQ2FkYXN0cmFsVW5pdCA9IHtcbiAgdGV4dDogc3RyaW5nO1xuICBwYXlsb2FkOiBzdHJpbmc7XG4gIGNvdW50ZXI6IG51bWJlcjtcbiAgYXJnczoge1xuICAgIGxhdDogc3RyaW5nIHwgbnVsbDtcbiAgICBsb246IHN0cmluZyB8IG51bGw7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFya2VyRXZlbnQge1xuICB0eXBlOiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBNYXJrZXJXaXRoSUQgZXh0ZW5kcyBNYXJrZXJEYXRhIHtcbiAgaWQ/OiBzdHJpbmc7XG4gIGNvdW50ZXI6IG51bWJlcjtcbiAgc2x1Zzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgRmFjZXRNYXBEUyBleHRlbmRzIERhdGFTb3VyY2UgaW1wbGVtZW50cyBGYWNldERhdGFTb3VyY2Uge1xuICBpZDogc3RyaW5nO1xuXG4gIHZhbHVlOiBGQUNFVF9WQUxVRSA9IFtdO1xuXG4gIG1hcEluc3RhbmNlO1xuXG4gIG1hcmtlckxheWVyO1xuXG4gIG1hcmtlckV2ZW50cyQgPSBuZXcgU3ViamVjdDxNYXJrZXJFdmVudD4oKTtcblxuICBpc1VwZGF0ZSA9IGZhbHNlO1xuXG4gIGljb25TaXplID0gdGhpcy5vcHRpb25zLmxpYk9wdGlvbnMuaWNvblNpemUgPz8gWzEzLCAyMF07XG5cbiAgcHJpdmF0ZSBNQVJLRVJfSUNPTiA9IEwuaWNvbih7XG4gICAgaWNvblVybDogJy9hc3NldHMvcGluLnBuZycsXG4gICAgaWNvblNpemU6IHRoaXMuaWNvblNpemUsXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMTVdLFxuICAgIGNsYXNzTmFtZTogJ21hcmtlci1pY29uJ1xuICB9KTtcblxuICBwcml2YXRlIE1BUktFUl9JQ09OX1VOQVZBSUxBQkxFID0gTC5pY29uKHtcbiAgICBpY29uVXJsOiAnL2Fzc2V0cy9waW4tdW5hdmFpbGFibGUucG5nJyxcbiAgICBpY29uU2l6ZTogdGhpcy5pY29uU2l6ZSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0xNV0sXG4gICAgY2xhc3NOYW1lOiAnbWFya2VyLWljb24nXG4gIH0pO1xuXG4gIHByaXZhdGUgTUFSS0VSX0lDT05fU0VMRUNURUQgPSBMLmljb24oe1xuICAgIGljb25Vcmw6ICcvYXNzZXRzL3Bpbi1zZWxlY3RlZC5wbmcnLFxuICAgIGljb25TaXplOiB0aGlzLmljb25TaXplLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTE1XSxcbiAgICBjbGFzc05hbWU6ICdtYXJrZXItaWNvbi1zZWxlY3RlZCdcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHRyYW5zZm9ybSh7IGxpbmtzIH06IHsgbGlua3M6IENhZGFzdHJhbFVuaXRbXSB9KTogTWFwRGF0YSB7XG4gICAgY29uc3QgbWFya2VycyA9IFtdO1xuICAgIGxpbmtzXG4gICAgICAuZmlsdGVyKChkKSA9PiBkLmFyZ3M/LmxhdCAmJiBkLmFyZ3M/LmxvbilcbiAgICAgIC5mb3JFYWNoKChkKSA9PiB7XG4gICAgICAgIC8vIGlmIGEgbGluayBoYXMgbW9yZSB0aGFuIG9uZSBjb3JyZXNwb25kaW5nIG1hcmtlclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkLmFyZ3MubGF0KSkge1xuICAgICAgICAgIGQuYXJncy5sYXQuZm9yRWFjaCgoZWxlbWVudCwgaSkgPT4ge1xuICAgICAgICAgICAgbWFya2Vycy5wdXNoKHtcbiAgICAgICAgICAgICAgY29vcmRzOiBbK2QuYXJncy5sYXRbaV0sICtkLmFyZ3MubG9uW2ldXSBhcyBbbnVtYmVyLCBudW1iZXJdLFxuICAgICAgICAgICAgICB0ZW1wbGF0ZTogZC50ZXh0LFxuICAgICAgICAgICAgICB0aXRsZTogZC50ZXh0LFxuICAgICAgICAgICAgICBpZDogZC5wYXlsb2FkLFxuICAgICAgICAgICAgICBzbHVnOiBkLnBheWxvYWQsXG4gICAgICAgICAgICAgIGNvdW50ZXI6IGQuY291bnRlcixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGlmIGEgbGluayBoYXMgb25seSBvbmUgbWFya2VyXG4gICAgICAgICAgbWFya2Vycy5wdXNoKHtcbiAgICAgICAgICAgIGNvb3JkczogWytkLmFyZ3MubGF0LCArZC5hcmdzLmxvbl0gYXMgW251bWJlciwgbnVtYmVyXSxcbiAgICAgICAgICAgIHRlbXBsYXRlOiBkLnRleHQsXG4gICAgICAgICAgICB0aXRsZTogZC50ZXh0LFxuICAgICAgICAgICAgaWQ6IGQucGF5bG9hZCxcbiAgICAgICAgICAgIHNsdWc6IGQucGF5bG9hZCxcbiAgICAgICAgICAgIGNvdW50ZXI6IGQuY291bnRlcixcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgY29uc3QgbWFwQ29uZmlnID0gdGhpcy5vcHRpb25zPy5saWJPcHRpb25zO1xuICAgIHJldHVybiB7XG4gICAgICBjb250YWluZXJJZDogJ21hcC1jYW52YXMnLFxuICAgICAgbGliT3B0aW9uczoge1xuICAgICAgICBhdHRyaWJ1dGlvbkNvbnRyb2w6IGZhbHNlLFxuICAgICAgICBtaW5ab29tOiA4LFxuICAgICAgICAuLi5tYXBDb25maWdcbiAgICAgIH0sXG4gICAgICB0aWxlTGF5ZXJzOiBbe1xuICAgICAgICAvLyB1cmw6ICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsXG4gICAgICAgIHVybDogbWFwQ29uZmlnLmxheWVyVXJsID8/ICdodHRwczovL3tzfS5iYXNlbWFwcy5jYXJ0b2Nkbi5jb20vcmFzdGVydGlsZXMvdm95YWdlcl9sYWJlbHNfdW5kZXIve3p9L3t4fS97eX17cn0ucG5nJyxcbiAgICAgICAgLy8gdXJsOiAnaHR0cHM6Ly9jYXJ0b2RiLWJhc2VtYXBzLXtzfS5nbG9iYWwuc3NsLmZhc3RseS5uZXQvbGlnaHRfYWxsL3t6fS97eH0ve3l9LnBuZycsXG4gICAgICAgIG9wdGlvbnM6IG51bGxcbiAgICAgIH1dLFxuICAgICAgaW5pdGlhbFZpZXc6IHtcbiAgICAgICAgY2VudGVyOiBtYXBDb25maWcuY2VudGVyID8/IFs0Ni4wNiwgMTEuMjFdLFxuICAgICAgICB6b29tOiBtYXBDb25maWcuem9vbSA/PyA5XG4gICAgICB9LFxuICAgICAgX3NldEluc3RhbmNlOiAobWFwKSA9PiB7XG4gICAgICAgIHRoaXMubWFwSW5zdGFuY2UgPSBtYXA7XG4gICAgICAgIHRoaXMuYnVpbGRNYXJrZXJzKG1hcmtlcnMpO1xuXG4gICAgICAgIGlmIChtYXBDb25maWcuYXV0b0NlbnRlcikge1xuICAgICAgICAgIGNvbnN0IGJvdW5kcyA9IG5ldyBMXG4gICAgICAgICAgICAuTGF0TG5nQm91bmRzKG1hcmtlcnNcbiAgICAgICAgICAgICAgLm1hcCgoZCkgPT4gKHsgbGF0OiBkLmNvb3Jkc1swXSwgbG9uOiBkLmNvb3Jkc1sxXSB9KSlcbiAgICAgICAgICAgICAgLmZpbHRlcigoZCkgPT4gbWFwSGVscGVyLmlzVmFsaWRNYXJrZXIoZCkpKTtcbiAgICAgICAgICB0aGlzLm1hcEluc3RhbmNlLmZpdEJvdW5kcyhib3VuZHMpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIG1hcmtlcnMgd2l0aCBhIGN1c3RvbSBpY29uIGFuZCBhZGRzIHRoZW0gdG8gdGhlIG1hcC5cbiAgICogQHBhcmFtIG1hcmtlcnMgYW4gYXJyYXkgb2YgbWFya2Vyc1xuICAgKi9cbiAgcHJpdmF0ZSBidWlsZE1hcmtlcnMobWFya2VyczogTWFya2VyV2l0aElEW10pIHtcbiAgICBpZiAoIW1hcmtlcnMpIHJldHVybjtcbiAgICBjb25zdCBtYXBDb25maWcgPSB0aGlzLm9wdGlvbnM/LmxpYk9wdGlvbnM7XG4gICAgLy8gcmVtb3ZlIGFsbCBleGlzdGluZyBtYXJrZXJzXG4gICAgaWYgKHRoaXMubWFya2VyTGF5ZXIpIHtcbiAgICAgIHRoaXMubWFya2VyTGF5ZXIuY2xlYXJMYXllcnMoKTtcbiAgICAgIHRoaXMubWFwSW5zdGFuY2UucmVtb3ZlTGF5ZXIodGhpcy5tYXJrZXJMYXllcik7XG4gICAgfVxuICAgIGNvbnN0IG1hcmtlckdyb3VwID0gTC5tYXJrZXJDbHVzdGVyR3JvdXAoXG4gICAgICB7XG4gICAgICAgIG1heENsdXN0ZXJSYWRpdXM6IG1hcENvbmZpZy5tYXhDbHVzdGVyUmFkaXVzID8/IDEwLFxuICAgICAgICBkaXNhYmxlQ2x1c3RlcmluZ0F0Wm9vbTogbWFwQ29uZmlnLmRpc2FibGVDbHVzdGVyaW5nQXRab29tID8/IDhcbiAgICAgIH1cbiAgICApO1xuICAgIG1hcmtlcnMuZm9yRWFjaCgoe1xuICAgICAgY29vcmRzLCB0ZW1wbGF0ZSwgaWQsIHNsdWcsIGNvdW50ZXJcbiAgICB9KSA9PiB7XG4gICAgICAvLyBjcmVhdGUgY3VzdG9tIGljb24gbWFya2VyXG4gICAgICBjb25zdCBpY29uID0gdGhpcy5nZXRJY29uKGlkLCBjb3VudGVyKTtcbiAgICAgIGlmICghaWNvbikgcmV0dXJuO1xuICAgICAgY29uc3QgbmV3TWFya2VyID0gTC5tYXJrZXIoY29vcmRzLCB7XG4gICAgICAgIGljb24sXG4gICAgICAgIHpJbmRleE9mZnNldDogdGhpcy5nZXRaaW5kZXgoaWQsIGNvdW50ZXIpXG4gICAgICB9KTtcbiAgICAgIGlmIChpZCAmJiBzbHVnKSB7XG4gICAgICAgIG5ld01hcmtlci5pZCA9IGlkO1xuICAgICAgICBuZXdNYXJrZXIuY291bnRlciA9IGNvdW50ZXI7XG4gICAgICAgIG5ld01hcmtlci5zbHVnID0gc2x1ZztcbiAgICAgIH1cbiAgICAgIG5ld01hcmtlclxuICAgICAgICAvLyBhZGQgdGhlIG1hcmtlciB0byB0aGUgZ3JvdXBcbiAgICAgICAgLmFkZFRvKG1hcmtlckdyb3VwKVxuICAgICAgICAvLyBhZGQgdGhlIG9uLWNsaWNrIHRvb2x0aXBcbiAgICAgICAgLmJpbmRQb3B1cCh0ZW1wbGF0ZSk7XG5cbiAgICAgIG5ld01hcmtlci5vbignY2xpY2snLCAoeyB0YXJnZXQgfSkgPT4ge1xuICAgICAgICB0aGlzLm1hcmtlckV2ZW50cyQubmV4dCh7XG4gICAgICAgICAgdHlwZTogJ21hcmtlci5jbGljaycsXG4gICAgICAgICAgaWQ6IHRhcmdldC5pZFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBuZXdNYXJrZXIub24oJ21vdXNlb3ZlcicsICh7IHRhcmdldCB9KSA9PiB7XG4gICAgICAgIHRhcmdldC5vcGVuUG9wdXAoKTtcbiAgICAgIH0pO1xuXG4gICAgICBuZXdNYXJrZXIub24oJ21vdXNlb3V0JywgKHsgdGFyZ2V0IH0pID0+IHtcbiAgICAgICAgdGFyZ2V0LmNsb3NlUG9wdXAoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIC8vIGFkZCB0aGUgbWFya2VycyB0byB0aGUgbWFwIGluc3RhbmNlXG4gICAgdGhpcy5tYXBJbnN0YW5jZS5hZGRMYXllcihtYXJrZXJHcm91cCk7XG4gICAgLy8gdXBkYXRlIHRoZSBtYXJrZXIgbGF5ZXIgaW5zdGFuY2VcbiAgICB0aGlzLm1hcmtlckxheWVyID0gbWFya2VyR3JvdXA7XG4gIH1cblxuICBzZXRWYWx1ZSh2YWx1ZTogRkFDRVRfVkFMVUUsIHVwZGF0ZSA9IGZhbHNlKSB7XG4gICAgLy8gcHJldmVudCB0aGUgc2VhcmNoIHNlcnZpY2UgZnJvbSBhc3NpZ25pbmcgYSBwbGFpbiBzdHJpbmdcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykgdmFsdWUgPSBbdmFsdWVdO1xuXG4gICAgaWYgKHRoaXMudmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIHRoaXMuaXNVcGRhdGUgPSB1cGRhdGUgfHwgdGhpcy52YWx1ZT8ubGVuZ3RoID09PSAwO1xuXG4gICAgaWYgKHVwZGF0ZSAmJiB0aGlzLmlucHV0KSB7XG4gICAgICBjb25zdCB7IGxpbmtzIH0gPSB0aGlzLmlucHV0O1xuICAgICAgY29uc3QgdXBkYXRlZExpbmtzID0gbGlua3MubWFwKChsaW5rOiBDYWRhc3RyYWxVbml0KSA9PiAoe1xuICAgICAgICAuLi5saW5rLFxuICAgICAgICBjbGFzc2VzOiB0aGlzLnZhbHVlLmluY2x1ZGVzKGxpbmsucGF5bG9hZCkgPyBBQ1RJVkVfQ0xBU1MgOiAnJ1xuICAgICAgfSkpO1xuICAgICAgLy8gdXBkYXRlIG1hcmtlciBpY29uc1xuICAgICAgaWYgKHRoaXMubWFya2VyTGF5ZXIpIHtcbiAgICAgICAgdGhpcy5tYXJrZXJMYXllci5lYWNoTGF5ZXIoKG1hcmtlcikgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgaWQgfSA9IG1hcmtlcjtcbiAgICAgICAgICBjb25zdCBjb3VudGVyID0gbGlua3MuZmluZCgoeyBwYXlsb2FkIH0pID0+IHBheWxvYWQgPT09IGlkKT8uY291bnRlciB8fCAwO1xuICAgICAgICAgIG1hcmtlci5nZXRQb3B1cCgpLl9zb3VyY2Uuc2V0SWNvbih0aGlzLmdldEljb24oaWQsIGNvdW50ZXIpKVxuICAgICAgICAgICAgLnNldFpJbmRleE9mZnNldCh0aGlzLmdldFppbmRleChpZCwgY291bnRlcikpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIC8vIC0tLVxuICAgICAgdGhpcy51cGRhdGUoe1xuICAgICAgICAuLi50aGlzLmlucHV0LFxuICAgICAgICBsaW5rczogdXBkYXRlZExpbmtzXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBnZXRJY29uID0gKGlkOiBzdHJpbmcsIGNvdW50ZXI6IG51bWJlcikgPT4ge1xuICAgIGlmICh0aGlzLnZhbHVlLmluY2x1ZGVzKGlkKSkgcmV0dXJuIHRoaXMuTUFSS0VSX0lDT05fU0VMRUNURUQ7XG4gICAgaWYgKGNvdW50ZXIgPiAwKSByZXR1cm4gdGhpcy5NQVJLRVJfSUNPTjtcbiAgICBpZiAodGhpcy5vcHRpb25zLmxpYk9wdGlvbnM/LmhpZGVVbmF2YWlsYWJsZVBpbikgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHRoaXMuTUFSS0VSX0lDT05fVU5BVkFJTEFCTEU7XG4gIH07XG5cbiAgZ2V0WmluZGV4ID0gKGlkOiBzdHJpbmcsIGNvdW50ZXI6IG51bWJlcikgPT4ge1xuICAgIGlmICh0aGlzLnZhbHVlLmluY2x1ZGVzKGlkKSkgcmV0dXJuIDE5OTk5O1xuICAgIGlmIChjb3VudGVyID4gMCkgcmV0dXJuIDk5OTk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgdG9nZ2xlVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIGNvbnN0IGV4aXN0cyA9IHRoaXMudmFsdWUuaW5jbHVkZXModmFsdWUpO1xuICAgIGlmICghZXhpc3RzKSB7XG4gICAgICB0aGlzLnZhbHVlLnB1c2godmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoZXhpc3RzKSB7XG4gICAgICB0aGlzLnZhbHVlLnNwbGljZSh0aGlzLnZhbHVlLmluZGV4T2YodmFsdWUpLCAxKTtcbiAgICB9XG5cbiAgICAvLyB1cGRhdGVcbiAgICB0aGlzLnNldFZhbHVlKHRoaXMudmFsdWUsIHRydWUpO1xuICB9XG5cbiAgZ2V0VmFsdWUgPSAoKTogRkFDRVRfVkFMVUUgPT4gdGhpcy52YWx1ZTtcblxuICBjbGVhcigpIHtcbiAgICB0aGlzLnZhbHVlID0gW107XG4gIH1cbn1cbiJdfQ==
@@ -177,6 +177,20 @@ export class MrParallelTextViewerDS extends DataSource {
177
177
  // Attacca al primo caricamento
178
178
  document.addEventListener('pb-end-update', attachListeners);
179
179
  setTimeout(attachListeners, 500);
180
+ // Cross-highlight per termini multi-@ana: quando un pb-highlight con key "vox2_vox3"
181
+ // emette pb-highlight-on (hover sul termine o sulla tab aperta), ri-emettiamo pb-highlight-on
182
+ // per ogni token individuale ("vox2", "vox3") così i termini correlati si evidenziano.
183
+ document.addEventListener('pb-highlight-on', (ev) => {
184
+ const key = ev.detail?.id;
185
+ const channel = ev.detail?.key;
186
+ if (key && key.includes('_')) {
187
+ key.split('_').forEach((token) => {
188
+ document.dispatchEvent(new CustomEvent('pb-highlight-on', {
189
+ detail: { key: channel, id: token, source: ev.detail.source },
190
+ }));
191
+ });
192
+ }
193
+ });
180
194
  }
181
195
  onClick(payload) {
182
196
  // console.log('🔵 onClick chiamato!', payload);
@@ -194,6 +208,7 @@ export class MrParallelTextViewerDS extends DataSource {
194
208
  // console.log('Chiusura dell\'elemento tei-app');
195
209
  parentAppItem.style.display = 'none';
196
210
  parentAppItem.style.transform = '';
211
+ this.resetHighlights();
197
212
  payload.stopPropagation();
198
213
  return;
199
214
  }
@@ -215,6 +230,7 @@ export class MrParallelTextViewerDS extends DataSource {
215
230
  // console.log('Chiusura dell\'elemento note-item');
216
231
  parentNoteItem.style.display = 'none';
217
232
  parentNoteItem.style.transform = '';
233
+ this.resetHighlights();
218
234
  payload.stopPropagation();
219
235
  return;
220
236
  }
@@ -227,13 +243,11 @@ export class MrParallelTextViewerDS extends DataSource {
227
243
  }
228
244
  if (target && target.getAttribute('type') === 'app_lem') {
229
245
  const appId = target.getAttribute('key');
230
- // console.log('appId:', appId);
231
246
  // Posizione elemento cliccato
232
247
  const clickedElementPosition = target.getBoundingClientRect().top;
233
248
  const clickedView = clickPath.find((el) => el.id && el.id.endsWith('-view'));
234
249
  const clickedViewId = clickedView ? clickedView.id : null;
235
250
  const apparatusView = document.querySelectorAll('.n7-parallel-text-viewer [id$="-view"]');
236
- // console.log('Numero di view trovate:', apparatusView.length);
237
251
  let anchorElement = null;
238
252
  let teiAppElement = null;
239
253
  apparatusView.forEach((view) => {
@@ -256,9 +270,33 @@ export class MrParallelTextViewerDS extends DataSource {
256
270
  });
257
271
  if (teiAppElement) {
258
272
  const isVisible = teiAppElement.style.display === 'block';
273
+ // Determina se il pb-highlight cliccato è una cit esterna (contiene cit annidate).
274
+ const nestedCits = target.querySelectorAll('span.quote');
275
+ const isOuterCit = nestedCits.length > 0;
276
+ const segElements = target.querySelectorAll('.seg-outer-inner');
277
+ // console.log('[seg-outer-inner] click su:', target.getAttribute('key'), '| isOuterCit:', isOuterCit, '| seg trovati:', segElements.length, '| panel isVisible:', isVisible);
278
+ // console.log(' nestedCits keys:', Array.from(nestedCits).map((el) => el.getAttribute('key')));
279
+ // segElements.forEach((el, i) => {
280
+ // console.log(` seg[${i}] backgroundColor attuale: "${(el as HTMLElement).style.backgroundColor}"`);
281
+ // let node = (el as HTMLElement).parentElement;
282
+ // const chain = [];
283
+ // while (node && chain.length < 6) {
284
+ // chain.push(`${node.tagName}${node.className ? '.' + node.className.replace(/\s+/g, '.') : ''}${node.getAttribute('key') ? '[key=' + node.getAttribute('key').substring(0, 20) + ']' : ''}`);
285
+ // node = node.parentElement;
286
+ // }
287
+ // console.log(` seg[${i}] ancestors:`, chain.join(' > '));
288
+ // });
259
289
  if (isVisible) {
260
290
  teiAppElement.style.display = 'none';
261
291
  teiAppElement.style.transform = '';
292
+ this.resetHighlights();
293
+ if (isOuterCit) {
294
+ // Pannello esterno chiuso: ripristina il background dei seg annidati
295
+ segElements.forEach((el) => {
296
+ el.style.backgroundColor = '';
297
+ // console.log(' [outer CLOSE] seg backgroundColor → ""');
298
+ });
299
+ }
262
300
  }
263
301
  else {
264
302
  teiAppElement.style.display = 'block';
@@ -268,6 +306,25 @@ export class MrParallelTextViewerDS extends DataSource {
268
306
  const positionDifference = clickedElementPosition - elementPosition;
269
307
  // spostamento
270
308
  teiAppElement.style.transform = `translateY(${positionDifference}px)`;
309
+ if (isOuterCit) {
310
+ // Pannello esterno aperto: dopo che pb-highlight si attiva (giallo),
311
+ // imposta sfondo bianco sui seg che appartengono semanticamente alla cit esterna
312
+ requestAnimationFrame(() => {
313
+ segElements.forEach((el) => {
314
+ el.style.backgroundColor = 'white';
315
+ // console.log(' [outer OPEN rAF] seg backgroundColor → "white"');
316
+ });
317
+ });
318
+ }
319
+ else {
320
+ // Pannello interno aperto: ripristina eventuali soppressioni sui seg interni
321
+ requestAnimationFrame(() => {
322
+ segElements.forEach((el) => {
323
+ el.style.backgroundColor = '';
324
+ // console.log(' [inner OPEN rAF] seg backgroundColor → ""');
325
+ });
326
+ });
327
+ }
271
328
  }
272
329
  }
273
330
  else {
@@ -303,6 +360,19 @@ export class MrParallelTextViewerDS extends DataSource {
303
360
  }
304
361
  }
305
362
  }
363
+ else if (target && target.getAttribute('type') === 'parallel_anchor') {
364
+ const sectionId = target.getAttribute('key');
365
+ if (sectionId) {
366
+ document.dispatchEvent(new CustomEvent('pb-toggle', {
367
+ detail: {
368
+ properties: { id: sectionId },
369
+ action: 'refresh',
370
+ key: 'transcription',
371
+ },
372
+ bubbles: true,
373
+ }));
374
+ }
375
+ }
306
376
  else if (target && target.getAttribute('key') && target.getAttribute('scrollview') !== null) {
307
377
  // Per scroll su indice
308
378
  const key = target.getAttribute('key');
@@ -321,6 +391,30 @@ export class MrParallelTextViewerDS extends DataSource {
321
391
  else
322
392
  this.output.toggleColumn = false;
323
393
  }
394
+ /**
395
+ * Resetta tutti gli highlight attivi del testo
396
+ */
397
+ resetHighlights() {
398
+ document.querySelectorAll('[id$="-view"]').forEach((view) => {
399
+ if (!view.shadowRoot)
400
+ return;
401
+ const content = view.shadowRoot.getElementById('view') || view.shadowRoot;
402
+ // console.log('[resetHighlights] processing view:', view.id, '| pb-highlights:', content.querySelectorAll('pb-highlight').length);
403
+ // Rimuove il giallo e re-abilita tutti i pb-highlight
404
+ content.querySelectorAll('pb-highlight').forEach((hl) => {
405
+ hl._className = 'highlight-off';
406
+ hl.disabled = false;
407
+ });
408
+ // Rimuove classe 'disable' da qualsiasi elemento (residuo da plain reading view)
409
+ content.querySelectorAll('.disable').forEach((el) => {
410
+ el.classList.remove('disable');
411
+ });
412
+ // Ripristina il background dei seg-outer-inner (potrebbe essere rimasto 'white'
413
+ content.querySelectorAll('.seg-outer-inner').forEach((el) => {
414
+ el.style.backgroundColor = '';
415
+ });
416
+ });
417
+ }
324
418
  viewListenerUpdate() {
325
419
  document.addEventListener('pb-start-update', function _listener() {
326
420
  document.removeEventListener('pb-start-update', _listener, true);
@@ -392,4 +486,4 @@ export class MrParallelTextViewerDS extends DataSource {
392
486
  }, 300);
393
487
  }
394
488
  }
395
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYWxsZWwtdGV4dC12aWV3ZXIuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uNy1ib2lsZXJwbGF0ZS1tdXJ1Y2Evc3JjL2xpYi9kYXRhLXNvdXJjZXMvcGFyYWxsZWwtdGV4dC12aWV3ZXIuZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkRBQTZEO0FBQzdELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFeEMsTUFBTSxPQUFPLHNCQUF1QixTQUFRLFVBQVU7SUFHcEQsOEVBQThFO0lBQzlFLHlFQUF5RTtJQUMvRCxTQUFTLENBQUMsSUFBUztRQUMzQixJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRXZCOzs7Ozs7OztZQVFJO1FBQ0osSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbkIsNEJBQTRCO1lBQzFCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUM1RCxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztnQkFDdkIsQ0FBQztnQkFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQ25ELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQzt3QkFDdEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQzVCLENBQUM7b0JBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJ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Q0FBQztJQUVEOztPQUVHO0lBQ0gsb0JBQW9CLENBQUMsR0FBVztRQUM5QixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdEMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGlFQUFpRSxDQUFDLENBQUM7WUFFM0csS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDOUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsSUFBSSxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUM5RCxJQUFJLE1BQU0sRUFBRSxDQUFDO29CQUNWLE1BQXNCLENBQUMsY0FBYyxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztvQkFDaEYsT0FBTyxJQUFJLENBQUM7Z0JBQ2QsQ0FBQztnQkFDRCxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaW1wb3J0IHsgUGFyYWxsZWxUZXh0Vmlld2VyRGF0YSB9IGZyb20gJ0BuZXQ3L2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJ0BuZXQ3L2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgTXJQYXJhbGxlbFRleHRWaWV3ZXJEUyBleHRlbmRzIERhdGFTb3VyY2Uge1xuICBpZDogc3RyaW5nO1xuXG4gIC8vIHByb3RlY3RlZCB0cmFuc2Zvcm0oZGF0YTogUGFyYWxsZWxUZXh0Vmlld2VyRGF0YSk6IFBhcmFsbGVsVGV4dFZpZXdlckRhdGEge1xuICAvLyBeXl5eXl5eXl5eXl5ec2UgdmEgYnVpbGRhcmUgY29tcG9uZW50cyAtLS0gMTctMTItMjAyNV5eXl5eXl5eXl5eXl5eXl5eXG4gIHByb3RlY3RlZCB0cmFuc2Zvcm0oZGF0YTogYW55KTogYW55IHtcbiAgICBpZiAoIWRhdGEpIHJldHVybiBudWxsO1xuXG4gICAgLypcbiAgICBpZiAodGhpcy5vcHRpb25zLmZhY3NpbWlsZU9wdGlvbnMgJiYgZGF0YS5mYWNzaW1pbGUpIHtcbiAgICAgIGlmICghZGF0YS5mYWNzaW1pbGUub3B0aW9ucykge1xuICAgICAgICBkYXRhLmZhY3NpbWlsZS5vcHRpb25zID0ge307XG4gICAgICB9XG4gICAgICBPYmplY3Qua2V5cyh0aGlzLm9wdGlvbnMuZmFjc2ltaWxlT3B0aW9ucykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIGRhdGEuZmFjc2ltaWxlLm9wdGlvbnNba2V5XSA9IHRoaXMub3B0aW9ucy5mYWNzaW1pbGVPcHRpb25zW2tleV07XG4gICAgICB9KTtcbiAgICB9ICovXG4gICAgaWYgKHRoaXMub3B0aW9ucykge1xuICAgIC8vIEdlc3Rpb25lIGRlbGxlIGxpYk9wdGlvbnNcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMubGliT3B0aW9ucykge1xuICAgICAgICBpZiAoIWRhdGEubGliT3B0aW9ucyB8fCB0eXBlb2YgZGF0YS5saWJPcHRpb25zICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAgIGRhdGEubGliT3B0aW9ucyA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMub3B0aW9ucy5saWJPcHRpb25zKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICBpZiAoIWRhdGEubGliT3B0aW9uc1trZXldIHx8IHR5cGVvZiBkYXRhLmxpYk9wdGlvbnNba2V5XSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGRhdGEubGliT3B0aW9uc1trZXldID0ge307XG4gICAgICAgICAgfVxuICAgICAgICAgIE9iamVjdC5rZXlzKHRoaXMub3B0aW9ucy5saWJPcHRpb25zW2tleV0pLmZvckVhY2goKHN1YktleSkgPT4ge1xuICAgICAgICAgICAgZGF0YS5saWJPcHRpb25zW2tleV1bc3ViS2V5XSA9IHRoaXMub3B0aW9ucy5saWJPcHRpb25zW2tleV1bc3ViS2V5XTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIERlYnVnIGxpYk9wdGlvbnNcbiAgICAgIC8qICAgICAgIGNvbnNvbGUubG9nKCcgREVCVUcgbGliT3B0aW9uczonLCB7XG4gICAgICAgICd0aGlzLm9wdGlvbnMubGliT3B0aW9ucyc6IHRoaXMub3B0aW9ucy5saWJPcHRpb25zLFxuICAgICAgICAnZGF0YS5saWJPcHRpb25zJzogZGF0YS5saWJPcHRpb25zLFxuICAgICAgICAnZGF0YS5saWJPcHRpb25zLnBiUGFnZSc6IGRhdGEubGliT3B0aW9ucy5wYlBhZ2UsXG4gICAgICAgICd1cmxJZ25vcmUnOiBkYXRhLmxpYk9wdGlvbnMucGJQYWdlPy51cmxJZ25vcmVcbiAgICAgIH0pOyAqL1xuICAgICAgfVxuICAgICAgLy8gR2VzdGlvbmUgZGVsbGEgZ3JpZFxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5ncmlkKSB7XG4gICAgICAgIGRhdGEuZ3JpZCA9IHRoaXMub3B0aW9ucy5ncmlkO1xuICAgICAgfVxuICAgICAgLy8gR2VzdGlvbmUgZGVpIHBhbmVsc1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy5wYW5lbHMpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLnBhbmVscy5mb3JFYWNoKChwYW5lbFByb3BlcnRpZXMpID0+IHtcbiAgICAgICAgICBjb25zdCBwYW5lbEluZGV4ID0gZGF0YS5wYW5lbHMuZmluZEluZGV4KFxuICAgICAgICAgICAgKHBhbmVsKSA9PiBwYW5lbC5pZCA9PT0gcGFuZWxQcm9wZXJ0aWVzLmlkXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChwYW5lbEluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgZGF0YS5wYW5lbHNbcGFuZWxJbmRleF0gPSB7XG4gICAgICAgICAgICAgIC4uLmRhdGEucGFuZWxzW3BhbmVsSW5kZXhdLFxuICAgICAgICAgICAgICAuLi5wYW5lbFByb3BlcnRpZXNcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3Qge1xuICAgICAgZW5hYmxlQ2xpY2tPbkVudGl0aWVzLCB0b2dnbGVDb2x1bW4sXG4gICAgICBzZWFyY2hJZCxcbiAgICAgIHNlYXJjaEFwaVxuICAgIH0gPSB0aGlzLm9wdGlvbnMgfHwge307XG4gICAgZGF0YS50b2dnbGVDb2x1bW4gPSB0b2dnbGVDb2x1bW47XG4gICAgLy8gZm9yY2UgdGVpIHB1Ymxpc2hlciBlbmRwb2ludCB2YWx1ZVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAncGItcGFnZS1yZWFkeScsXG4gICAgICAoZXY6IEN1c3RvbUV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgZGV0YWlsIH0gPSBldjtcbiAgICAgICAgZGV0YWlsLmVuZHBvaW50ID0gZGF0YS5lbmRwb2ludDtcbiAgICAgIH0sXG4gICAgICB7IG9uY2U6IHRydWUgfVxuICAgICk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKGRvY3VtZW50LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgLy8gY29uc3QgaWQgPSBwYXJhbXMuZ2V0KCdpZCcpO1xuXG4gICAgdGhpcy5zZXR1cFZpZXdDbGlja0xpc3RlbmVycygpO1xuXG4gICAgLyogICAgIGlmIChkYXRhLmRvY3NbMF0/LnZpZXcgPT09ICdwYWdlJyAmJiBpZCkge1xuICAgICAgZGF0YS5kb2NzWzBdLnZpZXcgPSAnZGl2JztcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICdwYi1lbmQtdXBkYXRlJyxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdwYi10b2dnbGUnLCB7XG4gICAgICAgICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgIHZpZXc6ICdwYWdlJyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBhY3Rpb246ICdyZWZyZXNoJyxcbiAgICAgICAgICAgICAgICAgIGtleTogJ3RyYW5zY3JpcHRpb24nLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdwYi10b2dnbGUnLCB7XG4gICAgICAgICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgIHZpZXc6ICdzaW5nbGUnLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ3JlZnJlc2gnLFxuICAgICAgICAgICAgICAgICAga2V5OiAnYWRkQ2hhbm5lbCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoJ3BiLXRvZ2dsZScsIHtcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgdmlldzogJ3NpbmdsZScsXG4gICAgICAgICAgICAgICAgICAgIGlkOiAnJyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBhY3Rpb246ICdyZWZyZXNoJyxcbiAgICAgICAgICAgICAgICAgIGtleTogJ2luZGV4JyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9LCA1MDApO1xuICAgICAgICB9LFxuICAgICAgICB7IG9uY2U6IHRydWUgfVxuICAgICAgKTtcbiAgICB9ICovXG5cbiAgICBpZiAoZW5hYmxlQ2xpY2tPbkVudGl0aWVzKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdwYi1lbmQtdXBkYXRlJywgKGV2OiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5zY3JvbGxFbGVtZW50c0ludG9WaWV3KGV2LmRldGFpbCwgJ2NoYXB0ZXInLCAnI3ZpZXcxJyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiAgICAgICBpZiAocGFyYW1zLmdldCgnaHEnKSkge1xuICAgICAgaWYgKHNlYXJjaEFwaSkge1xuICAgICAgICBjb25zdCB4bWxRdWVyeVVybCA9IGAke3NlYXJjaEFwaS51cmxcbiAgICAgICAgfT9yZXNvdXJjZS1pZD0ke3NlYXJjaEFwaVsncmVzb3VyY2UtaWQnXVxuICAgICAgICB9JnNlYXJjaElkPSR7c2VhcmNoSWRcbiAgICAgICAgfSZ4bWw9JHtkYXRhLmRvY3NbMF0/LnhtbFxuICAgICAgICB9JiR7cGFyYW1zLnRvU3RyaW5nKCl9YDtcblxuICAgICAgICBkYXRhLmRvY3NbMF0udXJsID0geG1sUXVlcnlVcmw7XG4gICAgICAgIGRhdGEuZG9jc1swXS5yb290UGF0aCA9ICdhcGkvbXJjcGFydHMnO1xuICAgICAgfVxuICAgICAgICAgKi9cblxuICAgIGlmIChwYXJhbXMuZ2V0KCdocScpKSB7XG4gICAgICBpZiAoc2VhcmNoQXBpKSB7XG4gICAgICAgIGNvbnN0IG1haW5Eb2MgPSBkYXRhLmRvY3MuZmluZCgoZG9jKSA9PiBkb2MuaWQgPT09ICdtYWluRG9jJyk7XG5cbiAgICAgICAgaWYgKG1haW5Eb2MpIHtcbiAgICAgICAgICBjb25zdCB4bWxRdWVyeVVybCA9IGAke3NlYXJjaEFwaS51cmxcbiAgICAgICAgICB9P3Jlc291cmNlLWlkPSR7c2VhcmNoQXBpWydyZXNvdXJjZS1pZCddXG4gICAgICAgICAgfSZzZWFyY2hJZD0ke3NlYXJjaElkXG4gICAgICAgICAgfSZ4bWw9JHttYWluRG9jLnhtbFxuICAgICAgICAgIH0mJHtwYXJhbXMudG9TdHJpbmcoKX1gO1xuXG4gICAgICAgICAgZGF0YS5tYWluRG9jLnVybCA9IHhtbFF1ZXJ5VXJsO1xuICAgICAgICAgIGRhdGEubWFpbkRvYy5yb290UGF0aCA9ICdhcGkvbXJjcGFydHMnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BiLWVuZC11cGRhdGUnLCAoZXY6IGFueSkgPT4ge1xuICAgICAgdGhpcy5zY3JvbGxFbGVtZW50c0ludG9WaWV3KGV2LmRldGFpbCwgJ2hxJywgJyN0cmFuc2NyaXB0aW9uLXZpZXcnKTtcbiAgICB9KTtcbiAgICAvKiAgIH0gICovXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBkaXNwbGF5SW5kZXgoKSB7XG4gICAgaWYgKHRoaXMub3V0cHV0LnRvZ2dsZUNvbHVtbikge1xuICAgICAgdGhpcy5vdXRwdXQudG9nZ2xlQ29sdW1uID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3V0cHV0LnRvZ2dsZUNvbHVtbiA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgc2V0dXBWaWV3Q2xpY2tMaXN0ZW5lcnMoKSB7XG4gICAgY29uc3QgYXR0YWNoTGlzdGVuZXJzID0gKCkgPT4ge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHZpZXdzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm43LXBhcmFsbGVsLXRleHQtdmlld2VyIFtpZCQ9XCItdmlld1wiXScpO1xuXG4gICAgICAgIHZpZXdzLmZvckVhY2goKHZpZXcpID0+IHtcbiAgICAgICAgICBpZiAodmlldy5pZCA9PT0gJ3RyYW5zY3JpcHRpb24tdmlldycpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodmlldy5zaGFkb3dSb290KSB7XG4gICAgICAgICAgICBpZiAoKHZpZXcgYXMgYW55KS5fX2NsaWNrTGlzdGVuZXJBdHRhY2hlZCkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNsaWNrTGlzdGVuZXIgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMub25DbGljayhldmVudCk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvLyBTYWx2YSBpbCByaWZlcmltZW50byBlIG1hcmNhIGNvbWUgYXR0YWNjYXRvXG4gICAgICAgICAgICAodmlldyBhcyBhbnkpLl9fY2xpY2tMaXN0ZW5lciA9IGNsaWNrTGlzdGVuZXI7XG4gICAgICAgICAgICAodmlldyBhcyBhbnkpLl9fY2xpY2tMaXN0ZW5lckF0dGFjaGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgLy8gQXR0YWNjYSBpbCBsaXN0ZW5lciBpbiBjYXB0dXJlIHBoYXNlIHBlciBjYXR0dXJhcmUgdHV0dGkgaSBjbGlja1xuICAgICAgICAgICAgdmlldy5zaGFkb3dSb290LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2xpY2tMaXN0ZW5lciwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0sIDEwMCk7XG4gICAgfTtcblxuICAgIC8vIEF0dGFjY2EgYWwgcHJpbW8gY2FyaWNhbWVudG9cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdwYi1lbmQtdXBkYXRlJywgYXR0YWNoTGlzdGVuZXJzKTtcblxuICAgIHNldFRpbWVvdXQoYXR0YWNoTGlzdGVuZXJzLCA1MDApO1xuICB9XG5cbiAgb25DbGljayhwYXlsb2FkKSB7XG4gICAgLy8gY29uc29sZS5sb2coJ/CflLUgb25DbGljayBjaGlhbWF0byEnLCBwYXlsb2FkKTtcbiAgICBsZXQgdGFyZ2V0ID0gbnVsbDtcbiAgICBjb25zdCBjbGlja1BhdGggPSBwYXlsb2FkLnBhdGggfHwgcGF5bG9hZC5jb21wb3NlZFBhdGgoKTtcbiAgICAvLyBjb25zb2xlLmxvZygn8J+UtSBjbGlja1BhdGg6JywgY2xpY2tQYXRoKTtcblxuICAgIC8vIGNoaXVzdXJhIGFwcGFyYXRvIGNvbiB0YXN0b1xuICAgIGNvbnN0IGNsb3NlQnV0dG9uID0gY2xpY2tQYXRoLmZpbmQoKGVsKSA9PiBlbC5jbGFzc05hbWVcbiAgICAgICYmIHR5cGVvZiBlbC5jbGFzc05hbWUgPT09ICdzdHJpbmcnXG4gICAgICAmJiBlbC5jbGFzc05hbWUuaW5jbHVkZXMoJ2Nsb3NlX2FwcCcpKTtcblxuICAgIGlmIChjbG9zZUJ1dHRvbikge1xuICAgIC8vICBjb25zb2xlLmxvZygnQ2xpY2sgcmlsZXZhdG8gc3VsIGJvdHRvbmUgZGkgY2hpdXN1cmE6JywgY2xvc2VCdXR0b24pO1xuXG4gICAgICBjb25zdCBwYXJlbnRBcHBJdGVtID0gY2xvc2VCdXR0b24uY2xvc2VzdCgnLnRlaS1hcHAnKTtcbiAgICAgIGlmIChwYXJlbnRBcHBJdGVtICYmIHBhcmVudEFwcEl0ZW0uc3R5bGUpIHtcbiAgICAgICAgLy8gICAgY29uc29sZS5sb2coJ0NoaXVzdXJhIGRlbGxcXCdlbGVtZW50byB0ZWktYXBwJyk7XG4gICAgICAgIHBhcmVudEFwcEl0ZW0uc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgKHBhcmVudEFwcEl0ZW0gYXMgSFRNTEVsZW1lbnQpLnN0eWxlLnRyYW5zZm9ybSA9ICcnO1xuICAgICAgICBwYXlsb2FkLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaW5zaWRlVGVpQXBwID0gY2xpY2tQYXRoLmZpbmQoKGVsKSA9PiBlbC5jbGFzc05hbWVcbiAgICAgICYmIHR5cGVvZiBlbC5jbGFzc05hbWUgPT09ICdzdHJpbmcnXG4gICAgICAmJiBlbC5jbGFzc05hbWUuaW5jbHVkZXMoJ3RlaS1hcHAnKSk7XG5cbiAgICBpZiAoaW5zaWRlVGVpQXBwICYmIChpbnNpZGVUZWlBcHAgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmRpc3BsYXkgPT09ICdibG9jaycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDaGl1c3VyYSBub3RlIGNvbiB0YXN0b1xuICAgIGNvbnN0IGNsb3NlTm90ZUJ1dHRvbiA9IGNsaWNrUGF0aC5maW5kKChlbCkgPT4gZWwuY2xhc3NOYW1lXG4gICAgICAmJiB0eXBlb2YgZWwuY2xhc3NOYW1lID09PSAnc3RyaW5nJ1xuICAgICAgJiYgZWwuY2xhc3NOYW1lLmluY2x1ZGVzKCdjbG9zZV9ub3RlJykpO1xuXG4gICAgaWYgKGNsb3NlTm90ZUJ1dHRvbikge1xuICAgIC8vICBjb25zb2xlLmxvZygnQ2xpY2sgcmlsZXZhdG8gc3VsIGJvdHRvbmUgZGkgY2hpdXN1cmEgbm90YTonLCBjbG9zZU5vdGVCdXR0b24pO1xuXG4gICAgICBjb25zdCBwYXJlbnROb3RlSXRlbSA9IGNsb3NlTm90ZUJ1dHRvbi5jbG9zZXN0KCcubm90ZS1pdGVtJyk7XG4gICAgICBpZiAocGFyZW50Tm90ZUl0ZW0gJiYgcGFyZW50Tm90ZUl0ZW0uc3R5bGUpIHtcbiAgICAgICAgLy8gICAgY29uc29sZS5sb2coJ0NoaXVzdXJhIGRlbGxcXCdlbGVtZW50byBub3RlLWl0ZW0nKTtcbiAgICAgICAgcGFyZW50Tm90ZUl0ZW0uc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgKHBhcmVudE5vdGVJdGVtIGFzIEhUTUxFbGVtZW50KS5zdHlsZS50cmFuc2Zvcm0gPSAnJztcbiAgICAgICAgcGF5bG9hZC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwYXlsb2FkLnBhdGgpIHtcbiAgICAgIHRhcmdldCA9IHBheWxvYWQucGF0aC5maW5kKFxuICAgICAgICAoeyB0YWdOYW1lIH0pID0+IHRhZ05hbWUgPT09ICdQQi1ISUdITElHSFQnXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0YXJnZXQgPSBwYXlsb2FkLmNvbXBvc2VkUGF0aCgpLmZpbmQoXG4gICAgICAgICh7IHRhZ05hbWUgfSkgPT4gdGFnTmFtZSA9PT0gJ1BCLUhJR0hMSUdIVCdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHRhcmdldCAmJiB0YXJnZXQuZ2V0QXR0cmlidXRlKCd0eXBlJykgPT09ICdhcHBfbGVtJykge1xuICAgICAgY29uc3QgYXBwSWQgPSB0YXJnZXQuZ2V0QXR0cmlidXRlKCdrZXknKTtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdhcHBJZDonLCBhcHBJZCk7XG5cbiAgICAgIC8vIFBvc2l6aW9uZSBlbGVtZW50byBjbGljY2F0b1xuICAgICAgY29uc3QgY2xpY2tlZEVsZW1lbnRQb3NpdGlvbiA9ICh0YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcblxuICAgICAgY29uc3QgY2xpY2tlZFZpZXcgPSBjbGlja1BhdGguZmluZCgoZWwpID0+IGVsLmlkICYmIGVsLmlkLmVuZHNXaXRoKCctdmlldycpKTtcbiAgICAgIGNvbnN0IGNsaWNrZWRWaWV3SWQgPSBjbGlja2VkVmlldyA/IGNsaWNrZWRWaWV3LmlkIDogbnVsbDtcblxuICAgICAgY29uc3QgYXBwYXJhdHVzVmlldyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5uNy1wYXJhbGxlbC10ZXh0LXZpZXdlciBbaWQkPVwiLXZpZXdcIl0nKTtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdOdW1lcm8gZGkgdmlldyB0cm92YXRlOicsIGFwcGFyYXR1c1ZpZXcubGVuZ3RoKTtcblxuICAgICAgbGV0IGFuY2hvckVsZW1lbnQgPSBudWxsO1xuICAgICAgbGV0IHRlaUFwcEVsZW1lbnQgPSBudWxsO1xuXG4gICAgICBhcHBhcmF0dXNWaWV3LmZvckVhY2goKHZpZXcpID0+IHtcbiAgICAgICAgLy8gU2FsdGEgbGEgdmlldyBpbiBjdWkgw6ggc3RhdG8gZmF0dG8gaWwgY2xpY2tcbiAgICAgICAgaWYgKHZpZXcuaWQgPT09IGNsaWNrZWRWaWV3SWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmlldy5zaGFkb3dSb290KSB7XG4gICAgICAgICAgY29uc3QgZm91bmQgPSB2aWV3LnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihgW2lkPVwiJHthcHBJZH1cIl1gKTtcbiAgICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICAgIGlmICghYW5jaG9yRWxlbWVudCkge1xuICAgICAgICAgICAgICBhbmNob3JFbGVtZW50ID0gZm91bmQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGFwcEVsZW1lbnQgPSBmb3VuZC5jbG9zZXN0KCcudGVpLWFwcCcpO1xuICAgICAgICAgICAgaWYgKGFwcEVsZW1lbnQgJiYgIXRlaUFwcEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgdGVpQXBwRWxlbWVudCA9IGFwcEVsZW1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKHRlaUFwcEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgaXNWaXNpYmxlID0gKHRlaUFwcEVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmRpc3BsYXkgPT09ICdibG9jayc7XG5cbiAgICAgICAgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgICAgICh0ZWlBcHBFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICAgICh0ZWlBcHBFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5zdHlsZS50cmFuc2Zvcm0gPSAnJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAodGVpQXBwRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG5cbiAgICAgICAgICAvLyBwb3NpemlvbmUgYXR0dWFsZVxuICAgICAgICAgIGNvbnN0IGVsZW1lbnRQb3NpdGlvbiA9IHRlaUFwcEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xuXG4gICAgICAgICAgLy8gZGlmZmVyZW56YVxuICAgICAgICAgIGNvbnN0IHBvc2l0aW9uRGlmZmVyZW5jZSA9IGNsaWNrZWRFbGVtZW50UG9zaXRpb24gLSBlbGVtZW50UG9zaXRpb247XG5cbiAgICAgICAgICAvLyBzcG9zdGFtZW50b1xuICAgICAgICAgICh0ZWlBcHBFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWSgke3Bvc2l0aW9uRGlmZmVyZW5jZX1weClgO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4oJ3RlaUFwcEVsZW1lbnQgbm9uIHRyb3ZhdG8hJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0YXJnZXQgJiYgdGFyZ2V0LmdldEF0dHJpYnV0ZSgndHlwZScpID09PSAnbm90ZV9saW5lJykge1xuICAgICAgY29uc3Qgbm90ZUlkID0gdGFyZ2V0LmdldEF0dHJpYnV0ZSgna2V5Jyk7XG4gICAgICAvLyBjb25zb2xlLmxvZygnbm90ZUlkJywgbm90ZUlkKTtcblxuICAgICAgY29uc3QgY2xpY2tlZEVsZW1lbnRQb3NpdGlvbiA9ICh0YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcblxuICAgICAgY29uc3QgYXBwYXJhdHVzVmlldyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5uNy10ZXh0LXZpZXdlciAjYXBwYXJhdG8tdmlldycpO1xuXG4gICAgICBjb25zdCBhbmNob3JFbGVtZW50ID0gYXBwYXJhdHVzVmlld1xuICAgICAgICA/LnNoYWRvd1Jvb3RcbiAgICAgICAgPy5xdWVyeVNlbGVjdG9yKGAjJHtub3RlSWR9YCk7XG5cbiAgICAgIGNvbnN0IHRlaU5vdGVFbGVtZW50ID0gYW5jaG9yRWxlbWVudFxuICAgICAgICA/IGFuY2hvckVsZW1lbnQuY2xvc2VzdCgnLm5vdGUtaXRlbScpXG4gICAgICAgIDogbnVsbDtcbiAgICAgIGlmICh0ZWlOb3RlRWxlbWVudCkge1xuICAgICAgICAvLyBWZXJpZmljYSBzZSDDqCB2aXNpYmlsZVxuICAgICAgICBjb25zdCBpc1Zpc2libGUgPSAodGVpTm90ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmRpc3BsYXkgPT09ICdibG9jayc7XG5cbiAgICAgICAgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgICAgICh0ZWlOb3RlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuc3R5bGUuZGlzcGxheSA9ICdub25lJztcblxuICAgICAgICAgICh0ZWlOb3RlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuc3R5bGUudHJhbnNmb3JtID0gJyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgKHRlaU5vdGVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcblxuICAgICAgICAgIC8vIHBvc2l6aW9uZSBhdHR1YWxlXG4gICAgICAgICAgY29uc3QgZWxlbWVudFBvc2l0aW9uID0gdGVpTm90ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xuXG4gICAgICAgICAgLy8gZGlmZmVyZW56YVxuICAgICAgICAgIGNvbnN0IHBvc2l0aW9uRGlmZmVyZW5jZSA9IGNsaWNrZWRFbGVtZW50UG9zaXRpb24gLSBlbGVtZW50UG9zaXRpb247XG5cbiAgICAgICAgICAvLyBzcG9zdGFtZW50b1xuICAgICAgICAgICh0ZWlOb3RlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZVkoJHtwb3NpdGlvbkRpZmZlcmVuY2V9cHgpYDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGFyZ2V0ICYmIHRhcmdldC5nZXRBdHRyaWJ1dGUoJ2tleScpICYmIHRhcmdldC5nZXRBdHRyaWJ1dGUoJ3Njcm9sbHZpZXcnKSAhPT0gbnVsbCkge1xuICAgICAgLy8gUGVyIHNjcm9sbCBzdSBpbmRpY2VcbiAgICAgIGNvbnN0IGtleSA9IHRhcmdldC5nZXRBdHRyaWJ1dGUoJ2tleScpO1xuICAgICAgaWYgKGtleSkge1xuICAgICAgICB0aGlzLnNjcm9sbFRvSW5kZXhFbGVtZW50KGtleSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0YXJnZXQgJiYgdGhpcy5vdXRwdXQudG9nZ2xlQ29sdW1uID09PSBmYWxzZSkge1xuICAgICAgaWYgKFxuICAgICAgICB0YXJnZXQuX19rZXlcbiAgICAgICAgJiYgKHRhcmdldC5jbGFzc05hbWUuaW5jbHVkZXMoJ3BlcnNvbicpXG4gICAgICAgICAgfHwgdGFyZ2V0LmNsYXNzTmFtZS5pbmNsdWRlcygncGxhY2UnKSlcbiAgICAgICkge1xuICAgICAgICB0aGlzLm91dHB1dC50b2dnbGVDb2x1bW4gPSB0cnVlO1xuICAgICAgICB0aGlzLnNjcm9sbEVsZW1lbnRzSW50b1ZpZXcodGFyZ2V0LCAnZW50aXR5JywgJyN0ZXh0LXZpZXdlci1pbmRleCcpO1xuICAgICAgfVxuICAgIH0gZWxzZSB0aGlzLm91dHB1dC50b2dnbGVDb2x1bW4gPSBmYWxzZTtcbiAgfVxuXG4gIHZpZXdMaXN0ZW5lclVwZGF0ZSgpIHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ3BiLXN0YXJ0LXVwZGF0ZScsXG4gICAgICBmdW5jdGlvbiBfbGlzdGVuZXIoKSB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BiLXN0YXJ0LXVwZGF0ZScsIF9saXN0ZW5lciwgdHJ1ZSk7XG4gICAgICB9LFxuICAgICAgdHJ1ZVxuICAgICk7XG4gIH1cblxuICBjaGFuZ2VWaWV3KHZpZXcsIHJlZnJlc2gpIHtcbiAgICBzZXRUaW1lb3V0KFxuICAgICAgKHYsIHIpID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYFRFU1QgQ0hBTkdFIFZJRVc6ICR7dmlld31gKTtcbiAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoJ3BiLXRvZ2dsZScsIHtcbiAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgdmlldzogdixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgYWN0aW9uOiByID8gJ3JlZnJlc2gnIDogJycsXG4gICAgICAgICAgICAgIGtleTogJ3RyYW5zY3JpcHRpb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIDYwMCxcbiAgICAgIHZpZXcsXG4gICAgICByZWZyZXNoXG4gICAgKTtcbiAgfVxuXG4gIHNjcm9sbEVsZW1lbnRzSW50b1ZpZXcodGFyZ2V0LCB0eXBlLCB2aWV3KSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBsZXQgZWxlbWVudDogYW55O1xuICAgICAgaWYgKHR5cGUgPT09ICdjaGFwdGVyJykge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgZG9jdW1lbnRcbiAgICAgICAgICAgIC5xdWVyeVNlbGVjdG9yKCcubjctdGV4dC12aWV3ZXIgI3ZpZXcwJylcbiAgICAgICAgICAgIC5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ3BiLWhpZ2hsaWdodCcpXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IGhpZ2hsaWdodCA9IGRvY3VtZW50XG4gICAgICAgICAgICAucXVlcnlTZWxlY3RvcignLm43LXRleHQtdmlld2VyICN2aWV3MCcpXG4gICAgICAgICAgICAuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCdwYi1oaWdobGlnaHQnKTtcblxuICAgICAgICAgIGNvbnN0IGhpZ2hsaWdodElkID0gaGlnaGxpZ2h0W2hpZ2hsaWdodC5sZW5ndGggLSAxXS5pZDsgLy8gcy54XG5cbiAgICAgICAgICBjb25zdCBmcmFnbWVudE51bWJlciA9IGhpZ2hsaWdodElkLnJlcGxhY2UoJy4nLCAnXFxcXC4nKTtcblxuICAgICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudFxuICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IodmlldylcbiAgICAgICAgICAgIC5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoYCMke2ZyYWdtZW50TnVtYmVyfWApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdlbnRpdHknKSB7XG4gICAgICAgIGNvbnN0IGtleSA9IHRhcmdldC5fX2tleTtcbiAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50XG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoYC5uNy10ZXh0LXZpZXdlciAke3ZpZXd9YClcbiAgICAgICAgICAuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKGAjJHtrZXl9YCk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdocScpIHtcbiAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50XG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoYC5uNy1wYXJhbGxlbC10ZXh0LXZpZXdlciAke3ZpZXd9YClcbiAgICAgICAgICAuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCcudGVpLWVtJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYC5uNy1wYXJhbGxlbC10ZXh0LXZpZXdlciAke3ZpZXd9YCk7XG4gICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICBjb250YWluZXIuc2Nyb2xsVG9wID0gZWxlbWVudC5vZmZzZXRUb3A7XG4gICAgICB9XG4gICAgfSwgNjAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTY3JvbGxhIGFsbCdlbGVtZW50byBjb3JyaXNwb25kZW50ZSBuZWxsJ2luZGljZVxuICAgKi9cbiAgc2Nyb2xsVG9JbmRleEVsZW1lbnQoa2V5OiBzdHJpbmcpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGNsZWFuS2V5ID0ga2V5LnJlcGxhY2UoJyMnLCAnJyk7XG4gICAgICBjb25zdCB2aWV3cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5uNy1wYXJhbGxlbC10ZXh0LXZpZXdlciBbaWQkPVwiLXZpZXdcIl06bm90KCN0cmFuc2NyaXB0aW9uLXZpZXcpJyk7XG5cbiAgICAgIEFycmF5LmZyb20odmlld3MpLnNvbWUoKHZpZXcpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gdmlldy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKGAjJHtjbGVhbktleX1gKTtcbiAgICAgICAgaWYgKHRhcmdldCkge1xuICAgICAgICAgICh0YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSk7XG4gICAgfSwgMzAwKTtcbiAgfVxufVxuIl19
489
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYWxsZWwtdGV4dC12aWV3ZXIuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uNy1ib2lsZXJwbGF0ZS1tdXJ1Y2Evc3JjL2xpYi9kYXRhLXNvdXJjZXMvcGFyYWxsZWwtdGV4dC12aWV3ZXIuZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkRBQTZEO0FBQzdELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFeEMsTUFBTSxPQUFPLHNCQUF1QixTQUFRLFVBQVU7SUFHcEQsOEVBQThFO0lBQzlFLHlFQUF5RTtJQUMvRCxTQUFTLENBQUMsSUFBUztRQUMzQixJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRXZCOzs7Ozs7OztZQVFJO1FBQ0osSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbkIsNEJBQTRCO1lBQzFCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUM1RCxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztnQkFDdkIsQ0FBQztnQkFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQ25ELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQzt3QkFDdEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQzVCLENBQUM7b0JBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJ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Q0FBQyxTQUFTLENBQUM7WUFDMUMsQ0FBQztRQUNILENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7SUFFRDs7T0FFRztJQUNILG9CQUFvQixDQUFDLEdBQVc7UUFDOUIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3RDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxpRUFBaUUsQ0FBQyxDQUFDO1lBRTNHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQzlCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLElBQUksUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDOUQsSUFBSSxNQUFNLEVBQUUsQ0FBQztvQkFDVixNQUFzQixDQUFDLGNBQWMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7b0JBQ2hGLE9BQU8sSUFBSSxDQUFDO2dCQUNkLENBQUM7Z0JBQ0QsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIGltcG9ydCB7IFBhcmFsbGVsVGV4dFZpZXdlckRhdGEgfSBmcm9tICdAbmV0Ny9jb21wb25lbnRzJztcbmltcG9ydCB7IERhdGFTb3VyY2UgfSBmcm9tICdAbmV0Ny9jb3JlJztcblxuZXhwb3J0IGNsYXNzIE1yUGFyYWxsZWxUZXh0Vmlld2VyRFMgZXh0ZW5kcyBEYXRhU291cmNlIHtcbiAgaWQ6IHN0cmluZztcblxuICAvLyBwcm90ZWN0ZWQgdHJhbnNmb3JtKGRhdGE6IFBhcmFsbGVsVGV4dFZpZXdlckRhdGEpOiBQYXJhbGxlbFRleHRWaWV3ZXJEYXRhIHtcbiAgLy8gXl5eXl5eXl5eXl5eXnNlIHZhIGJ1aWxkYXJlIGNvbXBvbmVudHMgLS0tIDE3LTEyLTIwMjVeXl5eXl5eXl5eXl5eXl5eXlxuICBwcm90ZWN0ZWQgdHJhbnNmb3JtKGRhdGE6IGFueSk6IGFueSB7XG4gICAgaWYgKCFkYXRhKSByZXR1cm4gbnVsbDtcblxuICAgIC8qXG4gICAgaWYgKHRoaXMub3B0aW9ucy5mYWNzaW1pbGVPcHRpb25zICYmIGRhdGEuZmFjc2ltaWxlKSB7XG4gICAgICBpZiAoIWRhdGEuZmFjc2ltaWxlLm9wdGlvbnMpIHtcbiAgICAgICAgZGF0YS5mYWNzaW1pbGUub3B0aW9ucyA9IHt9O1xuICAgICAgfVxuICAgICAgT2JqZWN0LmtleXModGhpcy5vcHRpb25zLmZhY3NpbWlsZU9wdGlvbnMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBkYXRhLmZhY3NpbWlsZS5vcHRpb25zW2tleV0gPSB0aGlzLm9wdGlvbnMuZmFjc2ltaWxlT3B0aW9uc1trZXldO1xuICAgICAgfSk7XG4gICAgfSAqL1xuICAgIGlmICh0aGlzLm9wdGlvbnMpIHtcbiAgICAvLyBHZXN0aW9uZSBkZWxsZSBsaWJPcHRpb25zXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmxpYk9wdGlvbnMpIHtcbiAgICAgICAgaWYgKCFkYXRhLmxpYk9wdGlvbnMgfHwgdHlwZW9mIGRhdGEubGliT3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBkYXRhLmxpYk9wdGlvbnMgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLm9wdGlvbnMubGliT3B0aW9ucykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgaWYgKCFkYXRhLmxpYk9wdGlvbnNba2V5XSB8fCB0eXBlb2YgZGF0YS5saWJPcHRpb25zW2tleV0gIT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBkYXRhLmxpYk9wdGlvbnNba2V5XSA9IHt9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBPYmplY3Qua2V5cyh0aGlzLm9wdGlvbnMubGliT3B0aW9uc1trZXldKS5mb3JFYWNoKChzdWJLZXkpID0+IHtcbiAgICAgICAgICAgIGRhdGEubGliT3B0aW9uc1trZXldW3N1YktleV0gPSB0aGlzLm9wdGlvbnMubGliT3B0aW9uc1trZXldW3N1YktleV07XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBEZWJ1ZyBsaWJPcHRpb25zXG4gICAgICAvKiAgICAgICBjb25zb2xlLmxvZygnIERFQlVHIGxpYk9wdGlvbnM6Jywge1xuICAgICAgICAndGhpcy5vcHRpb25zLmxpYk9wdGlvbnMnOiB0aGlzLm9wdGlvbnMubGliT3B0aW9ucyxcbiAgICAgICAgJ2RhdGEubGliT3B0aW9ucyc6IGRhdGEubGliT3B0aW9ucyxcbiAgICAgICAgJ2RhdGEubGliT3B0aW9ucy5wYlBhZ2UnOiBkYXRhLmxpYk9wdGlvbnMucGJQYWdlLFxuICAgICAgICAndXJsSWdub3JlJzogZGF0YS5saWJPcHRpb25zLnBiUGFnZT8udXJsSWdub3JlXG4gICAgICB9KTsgKi9cbiAgICAgIH1cbiAgICAgIC8vIEdlc3Rpb25lIGRlbGxhIGdyaWRcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuZ3JpZCkge1xuICAgICAgICBkYXRhLmdyaWQgPSB0aGlzLm9wdGlvbnMuZ3JpZDtcbiAgICAgIH1cbiAgICAgIC8vIEdlc3Rpb25lIGRlaSBwYW5lbHNcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMucGFuZWxzKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5wYW5lbHMuZm9yRWFjaCgocGFuZWxQcm9wZXJ0aWVzKSA9PiB7XG4gICAgICAgICAgY29uc3QgcGFuZWxJbmRleCA9IGRhdGEucGFuZWxzLmZpbmRJbmRleChcbiAgICAgICAgICAgIChwYW5lbCkgPT4gcGFuZWwuaWQgPT09IHBhbmVsUHJvcGVydGllcy5pZFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAocGFuZWxJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIGRhdGEucGFuZWxzW3BhbmVsSW5kZXhdID0ge1xuICAgICAgICAgICAgICAuLi5kYXRhLnBhbmVsc1twYW5lbEluZGV4XSxcbiAgICAgICAgICAgICAgLi4ucGFuZWxQcm9wZXJ0aWVzXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHtcbiAgICAgIGVuYWJsZUNsaWNrT25FbnRpdGllcywgdG9nZ2xlQ29sdW1uLFxuICAgICAgc2VhcmNoSWQsXG4gICAgICBzZWFyY2hBcGlcbiAgICB9ID0gdGhpcy5vcHRpb25zIHx8IHt9O1xuICAgIGRhdGEudG9nZ2xlQ29sdW1uID0gdG9nZ2xlQ29sdW1uO1xuICAgIC8vIGZvcmNlIHRlaSBwdWJsaXNoZXIgZW5kcG9pbnQgdmFsdWVcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ3BiLXBhZ2UtcmVhZHknLFxuICAgICAgKGV2OiBDdXN0b21FdmVudCkgPT4ge1xuICAgICAgICBjb25zdCB7IGRldGFpbCB9ID0gZXY7XG4gICAgICAgIGRldGFpbC5lbmRwb2ludCA9IGRhdGEuZW5kcG9pbnQ7XG4gICAgICB9LFxuICAgICAgeyBvbmNlOiB0cnVlIH1cbiAgICApO1xuXG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhkb2N1bWVudC5sb2NhdGlvbi5zZWFyY2gpO1xuICAgIC8vIGNvbnN0IGlkID0gcGFyYW1zLmdldCgnaWQnKTtcblxuICAgIHRoaXMuc2V0dXBWaWV3Q2xpY2tMaXN0ZW5lcnMoKTtcblxuICAgIC8qICAgICBpZiAoZGF0YS5kb2NzWzBdPy52aWV3ID09PSAncGFnZScgJiYgaWQpIHtcbiAgICAgIGRhdGEuZG9jc1swXS52aWV3ID0gJ2Rpdic7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAncGItZW5kLXVwZGF0ZScsXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgncGItdG9nZ2xlJywge1xuICAgICAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICB2aWV3OiAncGFnZScsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgYWN0aW9uOiAncmVmcmVzaCcsXG4gICAgICAgICAgICAgICAgICBrZXk6ICd0cmFuc2NyaXB0aW9uJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgncGItdG9nZ2xlJywge1xuICAgICAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICB2aWV3OiAnc2luZ2xlJyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBhY3Rpb246ICdyZWZyZXNoJyxcbiAgICAgICAgICAgICAgICAgIGtleTogJ2FkZENoYW5uZWwnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdwYi10b2dnbGUnLCB7XG4gICAgICAgICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgIHZpZXc6ICdzaW5nbGUnLFxuICAgICAgICAgICAgICAgICAgICBpZDogJycsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgYWN0aW9uOiAncmVmcmVzaCcsXG4gICAgICAgICAgICAgICAgICBrZXk6ICdpbmRleCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgfSxcbiAgICAgICAgeyBvbmNlOiB0cnVlIH1cbiAgICAgICk7XG4gICAgfSAqL1xuXG4gICAgaWYgKGVuYWJsZUNsaWNrT25FbnRpdGllcykge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncGItZW5kLXVwZGF0ZScsIChldjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuc2Nyb2xsRWxlbWVudHNJbnRvVmlldyhldi5kZXRhaWwsICdjaGFwdGVyJywgJyN2aWV3MScpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyogICAgICAgaWYgKHBhcmFtcy5nZXQoJ2hxJykpIHtcbiAgICAgIGlmIChzZWFyY2hBcGkpIHtcbiAgICAgICAgY29uc3QgeG1sUXVlcnlVcmwgPSBgJHtzZWFyY2hBcGkudXJsXG4gICAgICAgIH0/cmVzb3VyY2UtaWQ9JHtzZWFyY2hBcGlbJ3Jlc291cmNlLWlkJ11cbiAgICAgICAgfSZzZWFyY2hJZD0ke3NlYXJjaElkXG4gICAgICAgIH0meG1sPSR7ZGF0YS5kb2NzWzBdPy54bWxcbiAgICAgICAgfSYke3BhcmFtcy50b1N0cmluZygpfWA7XG5cbiAgICAgICAgZGF0YS5kb2NzWzBdLnVybCA9IHhtbFF1ZXJ5VXJsO1xuICAgICAgICBkYXRhLmRvY3NbMF0ucm9vdFBhdGggPSAnYXBpL21yY3BhcnRzJztcbiAgICAgIH1cbiAgICAgICAgICovXG5cbiAgICBpZiAocGFyYW1zLmdldCgnaHEnKSkge1xuICAgICAgaWYgKHNlYXJjaEFwaSkge1xuICAgICAgICBjb25zdCBtYWluRG9jID0gZGF0YS5kb2NzLmZpbmQoKGRvYykgPT4gZG9jLmlkID09PSAnbWFpbkRvYycpO1xuXG4gICAgICAgIGlmIChtYWluRG9jKSB7XG4gICAgICAgICAgY29uc3QgeG1sUXVlcnlVcmwgPSBgJHtzZWFyY2hBcGkudXJsXG4gICAgICAgICAgfT9yZXNvdXJjZS1pZD0ke3NlYXJjaEFwaVsncmVzb3VyY2UtaWQnXVxuICAgICAgICAgIH0mc2VhcmNoSWQ9JHtzZWFyY2hJZFxuICAgICAgICAgIH0meG1sPSR7bWFpbkRvYy54bWxcbiAgICAgICAgICB9JiR7cGFyYW1zLnRvU3RyaW5nKCl9YDtcblxuICAgICAgICAgIGRhdGEubWFpbkRvYy51cmwgPSB4bWxRdWVyeVVybDtcbiAgICAgICAgICBkYXRhLm1haW5Eb2Mucm9vdFBhdGggPSAnYXBpL21yY3BhcnRzJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdwYi1lbmQtdXBkYXRlJywgKGV2OiBhbnkpID0+IHtcbiAgICAgIHRoaXMuc2Nyb2xsRWxlbWVudHNJbnRvVmlldyhldi5kZXRhaWwsICdocScsICcjdHJhbnNjcmlwdGlvbi12aWV3Jyk7XG4gICAgfSk7XG4gICAgLyogICB9ICAqL1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgZGlzcGxheUluZGV4KCkge1xuICAgIGlmICh0aGlzLm91dHB1dC50b2dnbGVDb2x1bW4pIHtcbiAgICAgIHRoaXMub3V0cHV0LnRvZ2dsZUNvbHVtbiA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm91dHB1dC50b2dnbGVDb2x1bW4gPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHNldHVwVmlld0NsaWNrTGlzdGVuZXJzKCkge1xuICAgIGNvbnN0IGF0dGFjaExpc3RlbmVycyA9ICgpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCB2aWV3cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5uNy1wYXJhbGxlbC10ZXh0LXZpZXdlciBbaWQkPVwiLXZpZXdcIl0nKTtcblxuICAgICAgICB2aWV3cy5mb3JFYWNoKCh2aWV3KSA9PiB7XG4gICAgICAgICAgaWYgKHZpZXcuaWQgPT09ICd0cmFuc2NyaXB0aW9uLXZpZXcnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHZpZXcuc2hhZG93Um9vdCkge1xuICAgICAgICAgICAgaWYgKCh2aWV3IGFzIGFueSkuX19jbGlja0xpc3RlbmVyQXR0YWNoZWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBjbGlja0xpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLm9uQ2xpY2soZXZlbnQpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLy8gU2FsdmEgaWwgcmlmZXJpbWVudG8gZSBtYXJjYSBjb21lIGF0dGFjY2F0b1xuICAgICAgICAgICAgKHZpZXcgYXMgYW55KS5fX2NsaWNrTGlzdGVuZXIgPSBjbGlja0xpc3RlbmVyO1xuICAgICAgICAgICAgKHZpZXcgYXMgYW55KS5fX2NsaWNrTGlzdGVuZXJBdHRhY2hlZCA9IHRydWU7XG5cbiAgICAgICAgICAgIC8vIEF0dGFjY2EgaWwgbGlzdGVuZXIgaW4gY2FwdHVyZSBwaGFzZSBwZXIgY2F0dHVyYXJlIHR1dHRpIGkgY2xpY2tcbiAgICAgICAgICAgIHZpZXcuc2hhZG93Um9vdC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGNsaWNrTGlzdGVuZXIsIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9LCAxMDApO1xuICAgIH07XG5cbiAgICAvLyBBdHRhY2NhIGFsIHByaW1vIGNhcmljYW1lbnRvXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncGItZW5kLXVwZGF0ZScsIGF0dGFjaExpc3RlbmVycyk7XG5cbiAgICBzZXRUaW1lb3V0KGF0dGFjaExpc3RlbmVycywgNTAwKTtcblxuICAgIC8vIENyb3NzLWhpZ2hsaWdodCBwZXIgdGVybWluaSBtdWx0aS1AYW5hOiBxdWFuZG8gdW4gcGItaGlnaGxpZ2h0IGNvbiBrZXkgXCJ2b3gyX3ZveDNcIlxuICAgIC8vIGVtZXR0ZSBwYi1oaWdobGlnaHQtb24gKGhvdmVyIHN1bCB0ZXJtaW5lIG8gc3VsbGEgdGFiIGFwZXJ0YSksIHJpLWVtZXR0aWFtbyBwYi1oaWdobGlnaHQtb25cbiAgICAvLyBwZXIgb2duaSB0b2tlbiBpbmRpdmlkdWFsZSAoXCJ2b3gyXCIsIFwidm94M1wiKSBjb3PDrCBpIHRlcm1pbmkgY29ycmVsYXRpIHNpIGV2aWRlbnppYW5vLlxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BiLWhpZ2hsaWdodC1vbicsIChldjogYW55KSA9PiB7XG4gICAgICBjb25zdCBrZXkgPSBldi5kZXRhaWw/LmlkO1xuICAgICAgY29uc3QgY2hhbm5lbCA9IGV2LmRldGFpbD8ua2V5O1xuICAgICAgaWYgKGtleSAmJiBrZXkuaW5jbHVkZXMoJ18nKSkge1xuICAgICAgICBrZXkuc3BsaXQoJ18nKS5mb3JFYWNoKCh0b2tlbjogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ3BiLWhpZ2hsaWdodC1vbicsIHtcbiAgICAgICAgICAgIGRldGFpbDogeyBrZXk6IGNoYW5uZWwsIGlkOiB0b2tlbiwgc291cmNlOiBldi5kZXRhaWwuc291cmNlIH0sXG4gICAgICAgICAgfSkpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG9uQ2xpY2socGF5bG9hZCkge1xuICAgIC8vIGNvbnNvbGUubG9nKCfwn5S1IG9uQ2xpY2sgY2hpYW1hdG8hJywgcGF5bG9hZCk7XG4gICAgbGV0IHRhcmdldCA9IG51bGw7XG4gICAgY29uc3QgY2xpY2tQYXRoID0gcGF5bG9hZC5wYXRoIHx8IHBheWxvYWQuY29tcG9zZWRQYXRoKCk7XG4gICAgLy8gY29uc29sZS5sb2coJ/CflLUgY2xpY2tQYXRoOicsIGNsaWNrUGF0aCk7XG5cbiAgICAvLyBjaGl1c3VyYSBhcHBhcmF0byBjb24gdGFzdG9cbiAgICBjb25zdCBjbG9zZUJ1dHRvbiA9IGNsaWNrUGF0aC5maW5kKChlbCkgPT4gZWwuY2xhc3NOYW1lXG4gICAgICAmJiB0eXBlb2YgZWwuY2xhc3NOYW1lID09PSAnc3RyaW5nJ1xuICAgICAgJiYgZWwuY2xhc3NOYW1lLmluY2x1ZGVzKCdjbG9zZV9hcHAnKSk7XG5cbiAgICBpZiAoY2xvc2VCdXR0b24pIHtcbiAgICAvLyAgY29uc29sZS5sb2coJ0NsaWNrIHJpbGV2YXRvIHN1bCBib3R0b25lIGRpIGNoaXVzdXJhOicsIGNsb3NlQnV0dG9uKTtcblxuICAgICAgY29uc3QgcGFyZW50QXBwSXRlbSA9IGNsb3NlQnV0dG9uLmNsb3Nlc3QoJy50ZWktYXBwJyk7XG4gICAgICBpZiAocGFyZW50QXBwSXRlbSAmJiBwYXJlbnRBcHBJdGVtLnN0eWxlKSB7XG4gICAgICAgIC8vICAgIGNvbnNvbGUubG9nKCdDaGl1c3VyYSBkZWxsXFwnZWxlbWVudG8gdGVpLWFwcCcpO1xuICAgICAgICBwYXJlbnRBcHBJdGVtLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgIChwYXJlbnRBcHBJdGVtIGFzIEhUTUxFbGVtZW50KS5zdHlsZS50cmFuc2Zvcm0gPSAnJztcbiAgICAgICAgdGhpcy5yZXNldEhpZ2hsaWdodHMoKTtcbiAgICAgICAgcGF5bG9hZC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGluc2lkZVRlaUFwcCA9IGNsaWNrUGF0aC5maW5kKChlbCkgPT4gZWwuY2xhc3NOYW1lXG4gICAgICAmJiB0eXBlb2YgZWwuY2xhc3NOYW1lID09PSAnc3RyaW5nJ1xuICAgICAgJiYgZWwuY2xhc3NOYW1lLmluY2x1ZGVzKCd0ZWktYXBwJykpO1xuXG4gICAgaWYgKGluc2lkZVRlaUFwcCAmJiAoaW5zaWRlVGVpQXBwIGFzIEhUTUxFbGVtZW50KS5zdHlsZS5kaXNwbGF5ID09PSAnYmxvY2snKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ2hpdXN1cmEgbm90ZSBjb24gdGFzdG9cbiAgICBjb25zdCBjbG9zZU5vdGVCdXR0b24gPSBjbGlja1BhdGguZmluZCgoZWwpID0+IGVsLmNsYXNzTmFtZVxuICAgICAgJiYgdHlwZW9mIGVsLmNsYXNzTmFtZSA9PT0gJ3N0cmluZydcbiAgICAgICYmIGVsLmNsYXNzTmFtZS5pbmNsdWRlcygnY2xvc2Vfbm90ZScpKTtcblxuICAgIGlmIChjbG9zZU5vdGVCdXR0b24pIHtcbiAgICAvLyAgY29uc29sZS5sb2coJ0NsaWNrIHJpbGV2YXRvIHN1bCBib3R0b25lIGRpIGNoaXVzdXJhIG5vdGE6JywgY2xvc2VOb3RlQnV0dG9uKTtcblxuICAgICAgY29uc3QgcGFyZW50Tm90ZUl0ZW0gPSBjbG9zZU5vdGVCdXR0b24uY2xvc2VzdCgnLm5vdGUtaXRlbScpO1xuICAgICAgaWYgKHBhcmVudE5vdGVJdGVtICYmIHBhcmVudE5vdGVJdGVtLnN0eWxlKSB7XG4gICAgICAgIC8vICAgIGNvbnNvbGUubG9nKCdDaGl1c3VyYSBkZWxsXFwnZWxlbWVudG8gbm90ZS1pdGVtJyk7XG4gICAgICAgIHBhcmVudE5vdGVJdGVtLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgIChwYXJlbnROb3RlSXRlbSBhcyBIVE1MRWxlbWVudCkuc3R5bGUudHJhbnNmb3JtID0gJyc7XG4gICAgICAgIHRoaXMucmVzZXRIaWdobGlnaHRzKCk7XG4gICAgICAgIHBheWxvYWQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocGF5bG9hZC5wYXRoKSB7XG4gICAgICB0YXJnZXQgPSBwYXlsb2FkLnBhdGguZmluZChcbiAgICAgICAgKHsgdGFnTmFtZSB9KSA9PiB0YWdOYW1lID09PSAnUEItSElHSExJR0hUJ1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGFyZ2V0ID0gcGF5bG9hZC5jb21wb3NlZFBhdGgoKS5maW5kKFxuICAgICAgICAoeyB0YWdOYW1lIH0pID0+IHRhZ05hbWUgPT09ICdQQi1ISUdITElHSFQnXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LmdldEF0dHJpYnV0ZSgndHlwZScpID09PSAnYXBwX2xlbScpIHtcbiAgICAgIGNvbnN0IGFwcElkID0gdGFyZ2V0LmdldEF0dHJpYnV0ZSgna2V5Jyk7XG5cbiAgICAgIC8vIFBvc2l6aW9uZSBlbGVtZW50byBjbGljY2F0b1xuICAgICAgY29uc3QgY2xpY2tlZEVsZW1lbnRQb3NpdGlvbiA9ICh0YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcblxuICAgICAgY29uc3QgY2xpY2tlZFZpZXcgPSBjbGlja1BhdGguZmluZCgoZWwpID0+IGVsLmlkICYmIGVsLmlkLmVuZHNXaXRoKCctdmlldycpKTtcbiAgICAgIGNvbnN0IGNsaWNrZWRWaWV3SWQgPSBjbGlja2VkVmlldyA/IGNsaWNrZWRWaWV3LmlkIDogbnVsbDtcblxuICAgICAgY29uc3QgYXBwYXJhdHVzVmlldyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5uNy1wYXJhbGxlbC10ZXh0LXZpZXdlciBbaWQkPVwiLXZpZXdcIl0nKTtcblxuICAgICAgbGV0IGFuY2hvckVsZW1lbnQgPSBudWxsO1xuICAgICAgbGV0IHRlaUFwcEVsZW1lbnQgPSBudWxsO1xuXG4gICAgICBhcHBhcmF0dXNWaWV3LmZvckVhY2goKHZpZXcpID0+IHtcbiAgICAgICAgLy8gU2FsdGEgbGEgdmlldyBpbiBjdWkgw6ggc3RhdG8gZmF0dG8gaWwgY2xpY2tcbiAgICAgICAgaWYgKHZpZXcuaWQgPT09IGNsaWNrZWRWaWV3SWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmlldy5zaGFkb3dSb290KSB7XG4gICAgICAgICAgY29uc3QgZm91bmQgPSB2aWV3LnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihgW2lkPVwiJHthcHBJZH1cIl1gKTtcbiAgICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICAgIGlmICghYW5jaG9yRWxlbWVudCkge1xuICAgICAgICAgICAgICBhbmNob3JFbGVtZW50ID0gZm91bmQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGFwcEVsZW1lbnQgPSBmb3VuZC5jbG9zZXN0KCcudGVpLWFwcCcpO1xuICAgICAgICAgICAgaWYgKGFwcEVsZW1lbnQgJiYgIXRlaUFwcEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgdGVpQXBwRWxlbWVudCA9IGFwcEVsZW1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKHRlaUFwcEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgaXNWaXNpYmxlID0gKHRlaUFwcEVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmRpc3BsYXkgPT09ICdibG9jayc7XG5cbiAgICAgICAgLy8gRGV0ZXJtaW5hIHNlIGlsIHBiLWhpZ2hsaWdodCBjbGljY2F0byDDqCB1bmEgY2l0IGVzdGVybmEgKGNvbnRpZW5lIGNpdCBhbm5pZGF0ZSkuXG4gICAgICAgIGNvbnN0IG5lc3RlZENpdHMgPSAodGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5xdWVyeVNlbGVjdG9yQWxsKCdzcGFuLnF1b3RlJyk7XG4gICAgICAgIGNvbnN0IGlzT3V0ZXJDaXQgPSBuZXN0ZWRDaXRzLmxlbmd0aCA+IDA7XG4gICAgICAgIGNvbnN0IHNlZ0VsZW1lbnRzID0gKHRhcmdldCBhcyBIVE1MRWxlbWVudCkucXVlcnlTZWxlY3RvckFsbCgnLnNlZy1vdXRlci1pbm5lcicpO1xuXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdbc2VnLW91dGVyLWlubmVyXSBjbGljayBzdTonLCB0YXJnZXQuZ2V0QXR0cmlidXRlKCdrZXknKSwgJ3wgaXNPdXRlckNpdDonLCBpc091dGVyQ2l0LCAnfCBzZWcgdHJvdmF0aTonLCBzZWdFbGVtZW50cy5sZW5ndGgsICd8IHBhbmVsIGlzVmlzaWJsZTonLCBpc1Zpc2libGUpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnICBuZXN0ZWRDaXRzIGtleXM6JywgQXJyYXkuZnJvbShuZXN0ZWRDaXRzKS5tYXAoKGVsKSA9PiBlbC5nZXRBdHRyaWJ1dGUoJ2tleScpKSk7XG4gICAgICAgIC8vIHNlZ0VsZW1lbnRzLmZvckVhY2goKGVsLCBpKSA9PiB7XG4gICAgICAgIC8vICAgY29uc29sZS5sb2coYCAgc2VnWyR7aX1dIGJhY2tncm91bmRDb2xvciBhdHR1YWxlOiBcIiR7KGVsIGFzIEhUTUxFbGVtZW50KS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3J9XCJgKTtcbiAgICAgICAgLy8gICBsZXQgbm9kZSA9IChlbCBhcyBIVE1MRWxlbWVudCkucGFyZW50RWxlbWVudDtcbiAgICAgICAgLy8gICBjb25zdCBjaGFpbiA9IFtdO1xuICAgICAgICAvLyAgIHdoaWxlIChub2RlICYmIGNoYWluLmxlbmd0aCA8IDYpIHtcbiAgICAgICAgLy8gICAgIGNoYWluLnB1c2goYCR7bm9kZS50YWdOYW1lfSR7bm9kZS5jbGFzc05hbWUgPyAnLicgKyBub2RlLmNsYXNzTmFtZS5yZXBsYWNlKC9cXHMrL2csICcuJykgOiAnJ30ke25vZGUuZ2V0QXR0cmlidXRlKCdrZXknKSA/ICdba2V5PScgKyBub2RlLmdldEF0dHJpYnV0ZSgna2V5Jykuc3Vic3RyaW5nKDAsIDIwKSArICddJyA6ICcnfWApO1xuICAgICAgICAvLyAgICAgbm9kZSA9IG5vZGUucGFyZW50RWxlbWVudDtcbiAgICAgICAgLy8gICB9XG4gICAgICAgIC8vICAgY29uc29sZS5sb2coYCAgc2VnWyR7aX1dIGFuY2VzdG9yczpgLCBjaGFpbi5qb2luKCcgPiAnKSk7XG4gICAgICAgIC8vIH0pO1xuXG4gICAgICAgIGlmIChpc1Zpc2libGUpIHtcbiAgICAgICAgICAodGVpQXBwRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgICAodGVpQXBwRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuc3R5bGUudHJhbnNmb3JtID0gJyc7XG4gICAgICAgICAgdGhpcy5yZXNldEhpZ2hsaWdodHMoKTtcblxuICAgICAgICAgIGlmIChpc091dGVyQ2l0KSB7XG4gICAgICAgICAgICAvLyBQYW5uZWxsbyBlc3Rlcm5vIGNoaXVzbzogcmlwcmlzdGluYSBpbCBiYWNrZ3JvdW5kIGRlaSBzZWcgYW5uaWRhdGlcbiAgICAgICAgICAgIHNlZ0VsZW1lbnRzLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAgICAgICAgIChlbCBhcyBIVE1MRWxlbWVudCkuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyc7XG4gICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCcgIFtvdXRlciBDTE9TRV0gc2VnIGJhY2tncm91bmRDb2xvciDihpIgXCJcIicpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICh0ZWlBcHBFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcblxuICAgICAgICAgIC8vIHBvc2l6aW9uZSBhdHR1YWxlXG4gICAgICAgICAgY29uc3QgZWxlbWVudFBvc2l0aW9uID0gdGVpQXBwRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A7XG5cbiAgICAgICAgICAvLyBkaWZmZXJlbnphXG4gICAgICAgICAgY29uc3QgcG9zaXRpb25EaWZmZXJlbmNlID0gY2xpY2tlZEVsZW1lbnRQb3NpdGlvbiAtIGVsZW1lbnRQb3NpdGlvbjtcblxuICAgICAgICAgIC8vIHNwb3N0YW1lbnRvXG4gICAgICAgICAgKHRlaUFwcEVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVZKCR7cG9zaXRpb25EaWZmZXJlbmNlfXB4KWA7XG5cbiAgICAgICAgICBpZiAoaXNPdXRlckNpdCkge1xuICAgICAgICAgICAgLy8gUGFubmVsbG8gZXN0ZXJubyBhcGVydG86IGRvcG8gY2hlIHBiLWhpZ2hsaWdodCBzaSBhdHRpdmEgKGdpYWxsbyksXG4gICAgICAgICAgICAvLyBpbXBvc3RhIHNmb25kbyBiaWFuY28gc3VpIHNlZyBjaGUgYXBwYXJ0ZW5nb25vIHNlbWFudGljYW1lbnRlIGFsbGEgY2l0IGVzdGVybmFcbiAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICAgIHNlZ0VsZW1lbnRzLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAgICAgICAgICAgKGVsIGFzIEhUTUxFbGVtZW50KS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnd2hpdGUnO1xuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCcgIFtvdXRlciBPUEVOIHJBRl0gc2VnIGJhY2tncm91bmRDb2xvciDihpIgXCJ3aGl0ZVwiJyk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFBhbm5lbGxvIGludGVybm8gYXBlcnRvOiByaXByaXN0aW5hIGV2ZW50dWFsaSBzb3BwcmVzc2lvbmkgc3VpIHNlZyBpbnRlcm5pXG4gICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgICBzZWdFbGVtZW50cy5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICAgICAgICAgIChlbCBhcyBIVE1MRWxlbWVudCkuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyc7XG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJyAgW2lubmVyIE9QRU4gckFGXSBzZWcgYmFja2dyb3VuZENvbG9yIOKGkiBcIlwiJyk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4oJ3RlaUFwcEVsZW1lbnQgbm9uIHRyb3ZhdG8hJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0YXJnZXQgJiYgdGFyZ2V0LmdldEF0dHJpYnV0ZSgndHlwZScpID09PSAnbm90ZV9saW5lJykge1xuICAgICAgY29uc3Qgbm90ZUlkID0gdGFyZ2V0LmdldEF0dHJpYnV0ZSgna2V5Jyk7XG4gICAgICAvLyBjb25zb2xlLmxvZygnbm90ZUlkJywgbm90ZUlkKTtcblxuICAgICAgY29uc3QgY2xpY2tlZEVsZW1lbnRQb3NpdGlvbiA9ICh0YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcblxuICAgICAgY29uc3QgYXBwYXJhdHVzVmlldyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5uNy10ZXh0LXZpZXdlciAjYXBwYXJhdG8tdmlldycpO1xuXG4gICAgICBjb25zdCBhbmNob3JFbGVtZW50ID0gYXBwYXJhdHVzVmlld1xuICAgICAgICA/LnNoYWRvd1Jvb3RcbiAgICAgICAgPy5xdWVyeVNlbGVjdG9yKGAjJHtub3RlSWR9YCk7XG5cbiAgICAgIGNvbnN0IHRlaU5vdGVFbGVtZW50ID0gYW5jaG9yRWxlbWVudFxuICAgICAgICA/IGFuY2hvckVsZW1lbnQuY2xvc2VzdCgnLm5vdGUtaXRlbScpXG4gICAgICAgIDogbnVsbDtcbiAgICAgIGlmICh0ZWlOb3RlRWxlbWVudCkge1xuICAgICAgICAvLyBWZXJpZmljYSBzZSDDqCB2aXNpYmlsZVxuICAgICAgICBjb25zdCBpc1Zpc2libGUgPSAodGVpTm90ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmRpc3BsYXkgPT09ICdibG9jayc7XG5cbiAgICAgICAgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgICAgICh0ZWlOb3RlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuc3R5bGUuZGlzcGxheSA9ICdub25lJztcblxuICAgICAgICAgICh0ZWlOb3RlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuc3R5bGUudHJhbnNmb3JtID0gJyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgKHRlaU5vdGVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcblxuICAgICAgICAgIC8vIHBvc2l6aW9uZSBhdHR1YWxlXG4gICAgICAgICAgY29uc3QgZWxlbWVudFBvc2l0aW9uID0gdGVpTm90ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xuXG4gICAgICAgICAgLy8gZGlmZmVyZW56YVxuICAgICAgICAgIGNvbnN0IHBvc2l0aW9uRGlmZmVyZW5jZSA9IGNsaWNrZWRFbGVtZW50UG9zaXRpb24gLSBlbGVtZW50UG9zaXRpb247XG5cbiAgICAgICAgICAvLyBzcG9zdGFtZW50b1xuICAgICAgICAgICh0ZWlOb3RlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZVkoJHtwb3NpdGlvbkRpZmZlcmVuY2V9cHgpYDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGFyZ2V0ICYmIHRhcmdldC5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSA9PT0gJ3BhcmFsbGVsX2FuY2hvcicpIHtcbiAgICAgIGNvbnN0IHNlY3Rpb25JZCA9IHRhcmdldC5nZXRBdHRyaWJ1dGUoJ2tleScpO1xuICAgICAgaWYgKHNlY3Rpb25JZCkge1xuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgncGItdG9nZ2xlJywge1xuICAgICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICAgIHByb3BlcnRpZXM6IHsgaWQ6IHNlY3Rpb25JZCB9LFxuICAgICAgICAgICAgICBhY3Rpb246ICdyZWZyZXNoJyxcbiAgICAgICAgICAgICAga2V5OiAndHJhbnNjcmlwdGlvbicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGFyZ2V0ICYmIHRhcmdldC5nZXRBdHRyaWJ1dGUoJ2tleScpICYmIHRhcmdldC5nZXRBdHRyaWJ1dGUoJ3Njcm9sbHZpZXcnKSAhPT0gbnVsbCkge1xuICAgICAgLy8gUGVyIHNjcm9sbCBzdSBpbmRpY2VcbiAgICAgIGNvbnN0IGtleSA9IHRhcmdldC5nZXRBdHRyaWJ1dGUoJ2tleScpO1xuICAgICAgaWYgKGtleSkge1xuICAgICAgICB0aGlzLnNjcm9sbFRvSW5kZXhFbGVtZW50KGtleSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0YXJnZXQgJiYgdGhpcy5vdXRwdXQudG9nZ2xlQ29sdW1uID09PSBmYWxzZSkge1xuICAgICAgaWYgKFxuICAgICAgICB0YXJnZXQuX19rZXlcbiAgICAgICAgJiYgKHRhcmdldC5jbGFzc05hbWUuaW5jbHVkZXMoJ3BlcnNvbicpXG4gICAgICAgICAgfHwgdGFyZ2V0LmNsYXNzTmFtZS5pbmNsdWRlcygncGxhY2UnKSlcbiAgICAgICkge1xuICAgICAgICB0aGlzLm91dHB1dC50b2dnbGVDb2x1bW4gPSB0cnVlO1xuICAgICAgICB0aGlzLnNjcm9sbEVsZW1lbnRzSW50b1ZpZXcodGFyZ2V0LCAnZW50aXR5JywgJyN0ZXh0LXZpZXdlci1pbmRleCcpO1xuICAgICAgfVxuICAgIH0gZWxzZSB0aGlzLm91dHB1dC50b2dnbGVDb2x1bW4gPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHRhIHR1dHRpIGdsaSBoaWdobGlnaHQgYXR0aXZpIGRlbCB0ZXN0byBcbiAgICovXG4gIHByaXZhdGUgcmVzZXRIaWdobGlnaHRzKCkge1xuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tpZCQ9XCItdmlld1wiXScpLmZvckVhY2goKHZpZXc6IGFueSkgPT4ge1xuICAgICAgaWYgKCF2aWV3LnNoYWRvd1Jvb3QpIHJldHVybjtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSB2aWV3LnNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoJ3ZpZXcnKSB8fCB2aWV3LnNoYWRvd1Jvb3Q7XG5cbiAgICAgIC8vIGNvbnNvbGUubG9nKCdbcmVzZXRIaWdobGlnaHRzXSBwcm9jZXNzaW5nIHZpZXc6Jywgdmlldy5pZCwgJ3wgcGItaGlnaGxpZ2h0czonLCBjb250ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3BiLWhpZ2hsaWdodCcpLmxlbmd0aCk7XG5cbiAgICAgIC8vIFJpbXVvdmUgaWwgZ2lhbGxvIGUgcmUtYWJpbGl0YSB0dXR0aSBpIHBiLWhpZ2hsaWdodFxuICAgICAgY29udGVudC5xdWVyeVNlbGVjdG9yQWxsKCdwYi1oaWdobGlnaHQnKS5mb3JFYWNoKChobDogYW55KSA9PiB7XG4gICAgICAgIGhsLl9jbGFzc05hbWUgPSAnaGlnaGxpZ2h0LW9mZic7XG4gICAgICAgIGhsLmRpc2FibGVkID0gZmFsc2U7XG4gICAgICB9KTtcblxuICAgICAgLy8gUmltdW92ZSBjbGFzc2UgJ2Rpc2FibGUnIGRhIHF1YWxzaWFzaSBlbGVtZW50byAocmVzaWR1byBkYSBwbGFpbiByZWFkaW5nIHZpZXcpXG4gICAgICBjb250ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kaXNhYmxlJykuZm9yRWFjaCgoZWw6IEVsZW1lbnQpID0+IHtcbiAgICAgICAgZWwuY2xhc3NMaXN0LnJlbW92ZSgnZGlzYWJsZScpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIFJpcHJpc3RpbmEgaWwgYmFja2dyb3VuZCBkZWkgc2VnLW91dGVyLWlubmVyIChwb3RyZWJiZSBlc3NlcmUgcmltYXN0byAnd2hpdGUnXG4gICAgICBjb250ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5zZWctb3V0ZXItaW5uZXInKS5mb3JFYWNoKChlbDogRWxlbWVudCkgPT4ge1xuICAgICAgICAoZWwgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcnO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICB2aWV3TGlzdGVuZXJVcGRhdGUoKSB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdwYi1zdGFydC11cGRhdGUnLFxuICAgICAgZnVuY3Rpb24gX2xpc3RlbmVyKCkge1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwYi1zdGFydC11cGRhdGUnLCBfbGlzdGVuZXIsIHRydWUpO1xuICAgICAgfSxcbiAgICAgIHRydWVcbiAgICApO1xuICB9XG5cbiAgY2hhbmdlVmlldyh2aWV3LCByZWZyZXNoKSB7XG4gICAgc2V0VGltZW91dChcbiAgICAgICh2LCByKSA9PiB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBURVNUIENIQU5HRSBWSUVXOiAke3ZpZXd9YCk7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdwYi10b2dnbGUnLCB7XG4gICAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgIHZpZXc6IHYsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGFjdGlvbjogciA/ICdyZWZyZXNoJyA6ICcnLFxuICAgICAgICAgICAgICBrZXk6ICd0cmFuc2NyaXB0aW9uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICA2MDAsXG4gICAgICB2aWV3LFxuICAgICAgcmVmcmVzaFxuICAgICk7XG4gIH1cblxuICBzY3JvbGxFbGVtZW50c0ludG9WaWV3KHRhcmdldCwgdHlwZSwgdmlldykge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgbGV0IGVsZW1lbnQ6IGFueTtcbiAgICAgIGlmICh0eXBlID09PSAnY2hhcHRlcicpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGRvY3VtZW50XG4gICAgICAgICAgICAucXVlcnlTZWxlY3RvcignLm43LXRleHQtdmlld2VyICN2aWV3MCcpXG4gICAgICAgICAgICAuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCdwYi1oaWdobGlnaHQnKVxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBoaWdobGlnaHQgPSBkb2N1bWVudFxuICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJy5uNy10ZXh0LXZpZXdlciAjdmlldzAnKVxuICAgICAgICAgICAgLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbCgncGItaGlnaGxpZ2h0Jyk7XG5cbiAgICAgICAgICBjb25zdCBoaWdobGlnaHRJZCA9IGhpZ2hsaWdodFtoaWdobGlnaHQubGVuZ3RoIC0gMV0uaWQ7IC8vIHMueFxuXG4gICAgICAgICAgY29uc3QgZnJhZ21lbnROdW1iZXIgPSBoaWdobGlnaHRJZC5yZXBsYWNlKCcuJywgJ1xcXFwuJyk7XG5cbiAgICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnRcbiAgICAgICAgICAgIC5xdWVyeVNlbGVjdG9yKHZpZXcpXG4gICAgICAgICAgICAuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKGAjJHtmcmFnbWVudE51bWJlcn1gKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnZW50aXR5Jykge1xuICAgICAgICBjb25zdCBrZXkgPSB0YXJnZXQuX19rZXk7XG4gICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudFxuICAgICAgICAgIC5xdWVyeVNlbGVjdG9yKGAubjctdGV4dC12aWV3ZXIgJHt2aWV3fWApXG4gICAgICAgICAgLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihgIyR7a2V5fWApO1xuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnaHEnKSB7XG4gICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudFxuICAgICAgICAgIC5xdWVyeVNlbGVjdG9yKGAubjctcGFyYWxsZWwtdGV4dC12aWV3ZXIgJHt2aWV3fWApXG4gICAgICAgICAgLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignLnRlaS1lbScpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAubjctcGFyYWxsZWwtdGV4dC12aWV3ZXIgJHt2aWV3fWApO1xuICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgY29udGFpbmVyLnNjcm9sbFRvcCA9IGVsZW1lbnQub2Zmc2V0VG9wO1xuICAgICAgfVxuICAgIH0sIDYwMCk7XG4gIH1cblxuICAvKipcbiAgICogU2Nyb2xsYSBhbGwnZWxlbWVudG8gY29ycmlzcG9uZGVudGUgbmVsbCdpbmRpY2VcbiAgICovXG4gIHNjcm9sbFRvSW5kZXhFbGVtZW50KGtleTogc3RyaW5nKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBjbGVhbktleSA9IGtleS5yZXBsYWNlKCcjJywgJycpO1xuICAgICAgY29uc3Qgdmlld3MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubjctcGFyYWxsZWwtdGV4dC12aWV3ZXIgW2lkJD1cIi12aWV3XCJdOm5vdCgjdHJhbnNjcmlwdGlvbi12aWV3KScpO1xuXG4gICAgICBBcnJheS5mcm9tKHZpZXdzKS5zb21lKCh2aWV3KSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IHZpZXcuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcihgIyR7Y2xlYW5LZXl9YCk7XG4gICAgICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgICAodGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdjZW50ZXInIH0pO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH0sIDMwMCk7XG4gIH1cbn1cbiJdfQ==