@progressio_resources/gravity-design-system 3.4.6 → 3.4.7

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.
@@ -46,6 +46,7 @@ export class GravityDropdownListComponent {
46
46
  this.searchText = '';
47
47
  this.selectedItems = [];
48
48
  this.isoConfig = 'iso';
49
+ this.nameConfig = 'name';
49
50
  this.availableOptions = [];
50
51
  this.dropdownOpened = false;
51
52
  this.openChildrenMap = new Map();
@@ -273,8 +274,15 @@ export class GravityDropdownListComponent {
273
274
  const result = [];
274
275
  items.forEach(item => {
275
276
  const hasChildren = !!item.children?.length;
276
- const label = this.config ? item[this.config.label] : item;
277
- const match = label?.toString().toLowerCase().includes(search);
277
+ const fieldsToSearch = [];
278
+ if (this.config) {
279
+ fieldsToSearch.push(item[this.isoConfig]);
280
+ fieldsToSearch.push(item[this.nameConfig]);
281
+ if (this.config.label) {
282
+ fieldsToSearch.push(item[this.config.label]);
283
+ }
284
+ }
285
+ const match = fieldsToSearch.some(field => field?.toString().toLowerCase().includes(search));
278
286
  let filteredChildren = [];
279
287
  if (hasChildren) {
280
288
  filteredChildren = filterRecursive(item.children);
@@ -381,7 +389,7 @@ export class GravityDropdownListComponent {
381
389
  return '';
382
390
  const getValue = (item) => this.config ? item[this.config.value] : item;
383
391
  const getLabel = (item) => {
384
- const baseLabel = this.isCurrency ? item[this.isoConfig] : this.config ? item[this.config.label] : item;
392
+ const baseLabel = this.config ? item[this.config.label] : item;
385
393
  if (!this.multiple && item.network?.code && (item.network_id !== item.currency_id || item.children || item.is_ERC20)) {
386
394
  this.networkConfig = { label: baseLabel, iso: item.network?.code, id: item.network_id };
387
395
  }
@@ -490,4 +498,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
490
498
  type: HostListener,
491
499
  args: ['document:click', ['$event']]
492
500
  }] } });
493
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Jhdml0eS1kcm9wZG93bi1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyYXZpdHktZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvZ3Jhdml0eS1kcm9wZG93bi1saXN0L2dyYXZpdHktZHJvcGRvd24tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktZHJvcGRvd24tbGlzdC9ncmF2aXR5LWRyb3Bkb3duLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxTQUFTLEVBQWMsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUErQixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7OztBQVFsSixNQUFNLE9BQU8sNEJBQTRCO0lBeUJ2QyxJQUNJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksYUFBYSxDQUFDLEtBQWM7UUFDOUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDOUIsQ0FBQztJQUtELElBQ0ksS0FBSyxDQUFDLFdBQXlDO1FBQ2pELElBQUksV0FBVyxFQUFFO1lBQ2YsV0FBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBQyxhQUFhLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztTQUN4RDtJQUNILENBQUM7SUFBQSxDQUFDO0lBVUYsWUFBNkIsWUFBMEIsRUFBVSxLQUFpQjtRQUFyRCxpQkFBWSxHQUFaLFlBQVks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LDRCQUE0QjtrQkFOeEMsU0FBUzsrQkFDRSx1QkFBdUIsYUFHdEIsQ0FBQyxZQUFZLENBQUM7NEhBSVQsS0FBSztzQkFBcEIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUNVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUNVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsTUFBTTtzQkFBckIsS0FBSztnQkFHVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxLQUFLO3NCQUFwQixLQUFLO2dCQUdGLGFBQWE7c0JBRGhCLEtBQUs7Z0JBU0ksbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNvQixxQkFBcUI7c0JBQS9DLE1BQU07dUJBQUMsVUFBVTtnQkFHZCxLQUFLO3NCQURSLFNBQVM7dUJBQUMsYUFBYTtnQkFrU29CLGVBQWU7c0JBQTFELFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0ZpbHRlckJ5UGlwZX0gZnJvbSBcIi4vZmlsdGVyLWJ5LnBpcGVcIjtcbmltcG9ydCB7R3Jhdml0eUljb25Db21wb25lbnR9IGZyb20gXCIuLi9ncmF2aXR5LWljb24vZ3Jhdml0eS1pY29uLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZSwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ3Jhdml0eS1kcm9wZG93bi1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dyYXZpdHktZHJvcGRvd24tbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dyYXZpdHktZHJvcGRvd24tbGlzdC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtGaWx0ZXJCeVBpcGVdXG59KVxuZXhwb3J0IGNsYXNzIEdyYXZpdHlEcm9wZG93bkxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAvLyBDb21wb25lbnQgZmVhdHVyZXNcbiAgQElucHV0KCkgcHVibGljIGxhYmVsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBpY29uTGVmdDogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgaXRlbXM6IEFycmF5PGFueT47XG4gIEBJbnB1dCgpIHB1YmxpYyBjeXByZXNzVGFnOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgc3VwcG9ydFRleHQ6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIGhhc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBjbGVhcmFibGU6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBjdXJyZW50TGFuZzogc3RyaW5nID0gJ2VuJztcbiAgQElucHV0KCkgcHVibGljIGlzQ3VycmVuY3k6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGlzRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGlzUmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbVZhbHVlczogQXJyYXk8YW55PiB8IGFueTtcbiAgQElucHV0KCkgcHVibGljIGNvbmZpZz86IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZzsgfTtcblxuICAvLyBBcHBlYXJhbmNlIHNldHRpbmdzXG4gIEBJbnB1dCgpIHB1YmxpYyBsYWJlbFNpemU6ICdzbScgfCAnbWQnIHwgJ2xnJyA9ICdzbSc7XG4gIEBJbnB1dCgpIHB1YmxpYyBzaXplOiAnc20nIHwgJ21kJyB8ICdsZycgfCAneGwnID0gJ21kJztcbiAgQElucHV0KCkgcHVibGljIGlucHV0VHlwZTogJ2ZpZWxkJyB8ICdsYWJlbCcgPSAnZmllbGQnO1xuICBASW5wdXQoKSBwdWJsaWMgd2lkdGg6ICdzaG9ydCcgfCAnbWVkaXVtJyB8ICdmdWxsJyB8ICdmaXQnID0gJ3Nob3J0JztcblxuICBASW5wdXQoKVxuICBnZXQgZHJvcGRvd25TdGF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kcm9wZG93bk9wZW5lZDtcbiAgfVxuXG4gIHNldCBkcm9wZG93blN0YXRlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5kcm9wZG93bk9wZW5lZCA9IHZhbHVlO1xuICB9XG5cbiAgQE91dHB1dCgpIGRyb3Bkb3duU3RhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoJ3Jlc3BvbnNlJykgcHVibGljIHNlbGVjdGVkSXRlbXNSZXNwb25zZTogRXZlbnRFbWl0dGVyPGFueVtdIHwgYW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAVmlld0NoaWxkKCdzZWFyY2hJbnB1dCcpXG4gIHNldCB3YXRjaChzZWFyY2hJbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pikge1xuICAgIGlmIChzZWFyY2hJbnB1dCkge1xuICAgICAgc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cyh7cHJldmVudFNjcm9sbDogdHJ1ZX0pO1xuICAgIH1cbiAgfTtcblxuICBwdWJsaWMgc2VhcmNoVGV4dDogc3RyaW5nID0gJyc7XG4gIHB1YmxpYyBzZWxlY3RlZEl0ZW1zOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgaXNvQ29uZmlnOiBzdHJpbmcgPSAnaXNvJztcbiAgcHVibGljIGF2YWlsYWJsZU9wdGlvbnM6IGFueVtdID0gW107XG4gIHB1YmxpYyBkcm9wZG93bk9wZW5lZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgb3BlbkNoaWxkcmVuTWFwID0gbmV3IE1hcDxhbnksIGJvb2xlYW4+KCk7XG4gIHB1YmxpYyBuZXR3b3JrQ29uZmlnOiB7IGxhYmVsOiBzdHJpbmc7IGlzbzogc3RyaW5nOyBpZDogbnVtYmVyOyB9ID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZpbHRlckJ5UGlwZTogRmlsdGVyQnlQaXBlLCBwcml2YXRlIF9lcmVmOiBFbGVtZW50UmVmKSB7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ2l0ZW1zJ10/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5hdmFpbGFibGVPcHRpb25zID0gdGhpcy5pdGVtcztcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1snY3VzdG9tVmFsdWVzJ10pIHtcbiAgICAgIGNvbnN0IGNoYW5nZUl0ZW06IFNpbXBsZUNoYW5nZSA9IGNoYW5nZXNbJ2N1c3RvbVZhbHVlcyddO1xuICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gY2hhbmdlSXRlbT8uY3VycmVudFZhbHVlO1xuXG4gICAgICBjb25zdCBmaW5kT3B0aW9uUmVjdXJzaXZlbHkgPSAoaXRlbXM6IGFueVtdLCB2YWx1ZTogYW55KTogYW55IHwgbnVsbCA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgICAgIGNvbnN0IGl0ZW1WYWx1ZSA9IHRoaXMuY29uZmlnID8gaXRlbVt0aGlzLmNvbmZpZy52YWx1ZV0gOiBpdGVtO1xuICAgICAgICAgIGlmIChpdGVtVmFsdWUgPT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpdGVtLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICBjb25zdCBmb3VuZENoaWxkID0gZmluZE9wdGlvblJlY3Vyc2l2ZWx5KGl0ZW0uY2hpbGRyZW4sIHZhbHVlKTtcbiAgICAgICAgICAgIGlmIChmb3VuZENoaWxkKSByZXR1cm4gZm91bmRDaGlsZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9O1xuXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY3VycmVudFZhbHVlKSkge1xuICAgICAgICBjdXJyZW50VmFsdWUuZm9yRWFjaCgodmFsOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBmb3VuZCA9IGZpbmRPcHRpb25SZWN1cnNpdmVseSh0aGlzLml0ZW1zLCB2YWwpO1xuICAgICAgICAgIGlmIChmb3VuZCAmJiAhdGhpcy5zZWxlY3RlZEl0ZW1zLmluY2x1ZGVzKGZvdW5kKSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goZm91bmQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGN1cnJlbnRWYWx1ZSAhPSBudWxsICYmIGN1cnJlbnRWYWx1ZSAhPT0gJycpIHtcbiAgICAgICAgY29uc3QgZm91bmQgPSBmaW5kT3B0aW9uUmVjdXJzaXZlbHkodGhpcy5pdGVtcywgY3VycmVudFZhbHVlKTtcbiAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW2ZvdW5kXTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghY3VycmVudFZhbHVlICYmICFjaGFuZ2VJdGVtLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0U3RhdHVzKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCkge1xuICAgICAgcmV0dXJuICdkaXNhYmxlZCc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzUmVhZG9ubHkpIHtcbiAgICAgIHJldHVybiAncmVhZG9ubHknO1xuICAgIH0gZWxzZSBpZiAodGhpcy5oYXNFcnJvcikge1xuICAgICAgcmV0dXJuICdlcnJvcic7XG4gICAgfSBlbHNlIGlmICh0aGlzLmRyb3Bkb3duT3BlbmVkKSB7XG4gICAgICByZXR1cm4gJ29wZW4nO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiAnc2VsZWN0ZWQnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ2FjdGl2ZSc7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzSWNvbkxlZnROZXcoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuaWNvbkxlZnQpIHtcbiAgICAgIHJldHVybiBHcmF2aXR5SWNvbkNvbXBvbmVudC5pc05ld0ljb24odGhpcy5pY29uTGVmdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZURyb3Bkb3duKCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMubmV0d29ya0NvbmZpZyA9IG51bGw7XG5cbiAgICBpZiAoIXRoaXMuaXNEaXNhYmxlZCAmJiAhdGhpcy5pc1JlYWRvbmx5KSB7XG4gICAgICB0aGlzLmRyb3Bkb3duT3BlbmVkID0gIXRoaXMuZHJvcGRvd25PcGVuZWQ7XG4gICAgICB0aGlzLmRyb3Bkb3duU3RhdGVDaGFuZ2UuZW1pdCh0aGlzLmRyb3Bkb3duT3BlbmVkKTtcblxuICAgICAgaWYgKCF0aGlzLmRyb3Bkb3duT3BlbmVkKSB7XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zUmVzcG9uc2UuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zWzBdKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXNSZXNwb25zZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtc1swXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgICAgICB0aGlzLmF2YWlsYWJsZU9wdGlvbnMgPSB0aGlzLml0ZW1zO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zPy5mb3JFYWNoKHNlbCA9PiB7XG4gICAgICAgICAgdGhpcy5pdGVtcz8uZm9yRWFjaChwYXJlbnQgPT4ge1xuICAgICAgICAgICAgaWYgKHBhcmVudC5jaGlsZHJlbj8uaW5jbHVkZXMoc2VsKSkge1xuICAgICAgICAgICAgICB0aGlzLm9wZW5DaGlsZHJlbk1hcC5zZXQocGFyZW50LCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNlbGVjdEl0ZW0oaXRlbVRvQWRkOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBpc1BhcmVudCA9ICEhaXRlbVRvQWRkLmNoaWxkcmVuO1xuXG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSB0aGlzLmNoZWNrSWZTZWxlY3RlZChpdGVtVG9BZGQpO1xuXG4gICAgICBpZiAoaXNTZWxlY3RlZCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGVkSXRlbXMuZmlsdGVyKGkgPT5cbiAgICAgICAgICAodGhpcy5jb25maWcgPyBpW3RoaXMuY29uZmlnLnZhbHVlXSA6IGkpICE9PVxuICAgICAgICAgICh0aGlzLmNvbmZpZyA/IGl0ZW1Ub0FkZFt0aGlzLmNvbmZpZy52YWx1ZV0gOiBpdGVtVG9BZGQpXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGlzUGFyZW50KSB7XG4gICAgICAgICAgaXRlbVRvQWRkLmNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcihpID0+IGkgIT09IGNoaWxkKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLml0ZW1zLmZvckVhY2gocGFyZW50ID0+IHtcbiAgICAgICAgICAgIGlmIChwYXJlbnQuY2hpbGRyZW4/LmluY2x1ZGVzKGl0ZW1Ub0FkZCkpIHtcbiAgICAgICAgICAgICAgY29uc3QgYW55U2VsZWN0ZWQgPSBwYXJlbnQuY2hpbGRyZW4uc29tZShjaGlsZCA9PiB0aGlzLmNoZWNrSWZTZWxlY3RlZChjaGlsZCkpO1xuICAgICAgICAgICAgICBjb25zdCBhbGxTZWxlY3RlZCA9IHBhcmVudC5jaGlsZHJlbi5ldmVyeShjaGlsZCA9PiB0aGlzLmNoZWNrSWZTZWxlY3RlZChjaGlsZCkpO1xuICAgICAgICAgICAgICBpZiAoIWFueVNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcihpID0+IGkgIT09IHBhcmVudCk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoYWxsU2VsZWN0ZWQgJiYgIXRoaXMuY2hlY2tJZlNlbGVjdGVkKHBhcmVudCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChwYXJlbnQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbVRvQWRkKTtcblxuICAgICAgICBpZiAoaXNQYXJlbnQpIHtcbiAgICAgICAgICBpdGVtVG9BZGQuY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuY2hlY2tJZlNlbGVjdGVkKGNoaWxkKSkge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChjaGlsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKHBhcmVudCA9PiB7XG4gICAgICAgICAgICBpZiAocGFyZW50LmNoaWxkcmVuPy5pbmNsdWRlcyhpdGVtVG9BZGQpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGFsbFNlbGVjdGVkID0gcGFyZW50LmNoaWxkcmVuLmV2ZXJ5KGNoaWxkID0+IHRoaXMuY2hlY2tJZlNlbGVjdGVkKGNoaWxkKSk7XG4gICAgICAgICAgICAgIGlmIChhbGxTZWxlY3RlZCAmJiAhdGhpcy5jaGVja0lmU2VsZWN0ZWQocGFyZW50KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKHBhcmVudCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbaXRlbVRvQWRkXTtcbiAgICAgIHRoaXMudG9nZ2xlRHJvcGRvd24oKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNQYXJ0aWFsbHlTZWxlY3RlZChpdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAoIWl0ZW0uY2hpbGRyZW4/Lmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRDaGlsZHJlbiA9IGl0ZW0uY2hpbGRyZW4uZmlsdGVyKGNoaWxkID0+IHRoaXMuY2hlY2tJZlNlbGVjdGVkKGNoaWxkKSk7XG4gICAgcmV0dXJuIHNlbGVjdGVkQ2hpbGRyZW4ubGVuZ3RoID4gMCAmJiBzZWxlY3RlZENoaWxkcmVuLmxlbmd0aCA8IGl0ZW0uY2hpbGRyZW4ubGVuZ3RoO1xuICB9XG5cbiAgcHVibGljIGNoZWNrSWZTZWxlY3RlZChpdGVtPzogYW55KTogYm9vbGVhbiB7XG4gICAgY29uc3QgZ2V0VmFsdWUgPSAoZWw6IGFueSkgPT4gdGhpcy5jb25maWcgPyBlbFt0aGlzLmNvbmZpZy52YWx1ZV0gOiBlbDtcblxuICAgIGlmIChpdGVtKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zLnNvbWUoc2VsZWN0ZWQgPT4gZ2V0VmFsdWUoc2VsZWN0ZWQpID09PSBnZXRWYWx1ZShpdGVtKSk7XG4gICAgfVxuXG4gICAgY29uc3QgZmxhdHRlbiA9IHRoaXMuZmxhdHRlbkl0ZW1zKHRoaXMuYXZhaWxhYmxlT3B0aW9ucyk7XG4gICAgcmV0dXJuIGZsYXR0ZW4ubGVuZ3RoID4gMCAmJiBmbGF0dGVuLmV2ZXJ5KG9wdGlvbiA9PlxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnNvbWUoc2VsZWN0ZWQgPT4gZ2V0VmFsdWUoc2VsZWN0ZWQpID09PSBnZXRWYWx1ZShvcHRpb24pKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0QWxsSXRlbXMoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBjb25zdCBmbGF0dGVuID0gdGhpcy5mbGF0dGVuSXRlbXModGhpcy5hdmFpbGFibGVPcHRpb25zKTtcbiAgICBjb25zdCBnZXRWYWx1ZSA9IChlbDogYW55KSA9PiB0aGlzLmNvbmZpZyA/IGVsW3RoaXMuY29uZmlnLnZhbHVlXSA6IGVsO1xuXG4gICAgY29uc3QgYWxsU2VsZWN0ZWQgPSBmbGF0dGVuLmV2ZXJ5KG9wdGlvbiA9PlxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnNvbWUoc2VsZWN0ZWQgPT4gZ2V0VmFsdWUoc2VsZWN0ZWQpID09PSBnZXRWYWx1ZShvcHRpb24pKVxuICAgICk7XG5cbiAgICBpZiAoYWxsU2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoc2VsZWN0ZWQgPT5cbiAgICAgICAgIWZsYXR0ZW4uc29tZShvcHRpb24gPT4gZ2V0VmFsdWUoc2VsZWN0ZWQpID09PSBnZXRWYWx1ZShvcHRpb24pKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmxhdHRlbi5mb3JFYWNoKG9wdGlvbiA9PiB7XG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RlZEl0ZW1zLnNvbWUoc2VsZWN0ZWQgPT4gZ2V0VmFsdWUoc2VsZWN0ZWQpID09PSBnZXRWYWx1ZShvcHRpb24pKSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKG9wdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmxhdHRlbkl0ZW1zKGl0ZW1zOiBhbnlbXSk6IGFueVtdIHtcbiAgICByZXR1cm4gaXRlbXMucmVkdWNlKChhY2MsIGl0ZW0pID0+IHtcbiAgICAgIGFjYy5wdXNoKGl0ZW0pO1xuICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICBhY2MucHVzaCguLi50aGlzLmZsYXR0ZW5JdGVtcyhpdGVtLmNoaWxkcmVuKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIFtdKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhclNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcblxuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXNSZXNwb25zZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1Jlc3BvbnNlLmVtaXQobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvcGVuUGFyZW50cyhpdGVtOiBhbnksIGl0ZW1zOiBhbnlbXSk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgcGFyZW50IG9mIGl0ZW1zKSB7XG4gICAgICBpZiAocGFyZW50LmNoaWxkcmVuPy5pbmNsdWRlcyhpdGVtKSkge1xuICAgICAgICB0aGlzLm9wZW5DaGlsZHJlbk1hcC5zZXQocGFyZW50LCB0cnVlKTtcbiAgICAgICAgdGhpcy5vcGVuUGFyZW50cyhwYXJlbnQsIHRoaXMuaXRlbXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIH0gZWxzZSBpZiAocGFyZW50LmNoaWxkcmVuKSB7XG4gICAgICAgIHRoaXMub3BlblBhcmVudHMoaXRlbSwgcGFyZW50LmNoaWxkcmVuKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZmlsdGVySXRlbXMoKTogdm9pZCB7XG4gICAgY29uc3Qgc2VhcmNoID0gdGhpcy5zZWFyY2hUZXh0Py50b0xvd2VyQ2FzZSgpO1xuICAgIHRoaXMub3BlbkNoaWxkcmVuTWFwLmNsZWFyKCk7XG5cbiAgICBpZiAoIXNlYXJjaCkge1xuICAgICAgdGhpcy5hdmFpbGFibGVPcHRpb25zID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLml0ZW1zKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZmlsdGVyUmVjdXJzaXZlID0gKGl0ZW1zOiBhbnlbXSk6IGFueVtdID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuXG4gICAgICBpdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBjb25zdCBoYXNDaGlsZHJlbiA9ICEhaXRlbS5jaGlsZHJlbj8ubGVuZ3RoO1xuICAgICAgICBjb25zdCBsYWJlbCA9IHRoaXMuY29uZmlnID8gaXRlbVt0aGlzLmNvbmZpZy5sYWJlbF0gOiBpdGVtO1xuICAgICAgICBjb25zdCBtYXRjaCA9IGxhYmVsPy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoKTtcblxuICAgICAgICBsZXQgZmlsdGVyZWRDaGlsZHJlbiA9IFtdO1xuICAgICAgICBpZiAoaGFzQ2hpbGRyZW4pIHtcbiAgICAgICAgICBmaWx0ZXJlZENoaWxkcmVuID0gZmlsdGVyUmVjdXJzaXZlKGl0ZW0uY2hpbGRyZW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaW5jbHVkZUl0ZW0gPSBoYXNDaGlsZHJlbiA/IGZpbHRlcmVkQ2hpbGRyZW4ubGVuZ3RoID4gMCA6IG1hdGNoO1xuXG4gICAgICAgIGlmIChpbmNsdWRlSXRlbSkge1xuICAgICAgICAgIGNvbnN0IG5ld0l0ZW0gPSB7IC4uLml0ZW0gfTtcbiAgICAgICAgICBpZiAoZmlsdGVyZWRDaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBuZXdJdGVtLmNoaWxkcmVuID0gZmlsdGVyZWRDaGlsZHJlbjtcbiAgICAgICAgICAgIHRoaXMub3BlbkNoaWxkcmVuTWFwLnNldChuZXdJdGVtLCB0cnVlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGVsZXRlIG5ld0l0ZW0uY2hpbGRyZW47XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdC5wdXNoKG5ld0l0ZW0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgdGhpcy5hdmFpbGFibGVPcHRpb25zID0gZmlsdGVyUmVjdXJzaXZlKHRoaXMuaXRlbXMpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKSBvbkRvY3VtZW50Q2xpY2soJGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2VyZWYubmF0aXZlRWxlbWVudC5jb250YWlucygkZXZlbnQudGFyZ2V0KSAmJiB0aGlzLmRyb3Bkb3duT3BlbmVkKSB7XG4gICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXNSZXNwb25zZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zWzBdKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zUmVzcG9uc2UuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXNbMF0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgICAgdGhpcy5kcm9wZG93bk9wZW5lZCA9IGZhbHNlO1xuICAgICAgdGhpcy5hdmFpbGFibGVPcHRpb25zID0gdGhpcy5pdGVtcztcbiAgICAgIHRoaXMuZHJvcGRvd25TdGF0ZUNoYW5nZS5lbWl0KHRoaXMuZHJvcGRvd25PcGVuZWQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRDdXJyZW5jeUljb25TaXplKHNpemU6IHN0cmluZykge1xuICAgIHN3aXRjaCAoc2l6ZSkge1xuICAgICAgY2FzZSAnc20nOlxuICAgICAgICByZXR1cm4gJ3NtLTE2JztcbiAgICAgIGNhc2UgJ2xnJzpcbiAgICAgICAgcmV0dXJuICdsZy0zMic7XG4gICAgICBjYXNlICd4bCc6XG4gICAgICAgIHJldHVybiAneGwtNDAnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdtZC0yNCc7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFNwYWNpbmdDbGFzcyhzaXplOiBzdHJpbmcpIHtcbiAgICBzd2l0Y2ggKHNpemUpIHtcbiAgICAgIGNhc2UgJ3NtJzpcbiAgICAgICAgcmV0dXJuICdncmF2aXR5LW1hcmdpbi1yaWdodC14eHMnO1xuICAgICAgY2FzZSAnbWQnOlxuICAgICAgICByZXR1cm4gJ2dyYXZpdHktbWFyZ2luLXJpZ2h0LXhzJztcbiAgICAgIGNhc2UgJ2xnJzpcbiAgICAgICAgcmV0dXJuICdncmF2aXR5LW1hcmdpbi1yaWdodC1zbSc7XG4gICAgICBjYXNlICd4bCc6XG4gICAgICAgIHJldHVybiAnZ3Jhdml0eS1tYXJnaW4tcmlnaHQtbWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRNdWx0aWxldmVsU3BhY2luZ0NsYXNzKHNpemU6IHN0cmluZykge1xuICAgIHN3aXRjaCAoc2l6ZSkge1xuICAgICAgY2FzZSAnc20nOlxuICAgICAgICByZXR1cm4gJ2dyYXZpdHktbWFyZ2luLXJpZ2h0LW1kJztcbiAgICAgIGNhc2UgJ21kJzpcbiAgICAgICAgcmV0dXJuICdncmF2aXR5LW1hcmdpbi1yaWdodC1sZyc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldExhYmVsVGV4dCgpOiBzdHJpbmcge1xuICAgIGxldCByZXN1bHQ6IHN0cmluZyA9ICcnO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXN1bHQgPSB0aGlzLmxhYmVsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xuICAgICAgICBsZXQgZGlzcGxheVZhbHVlID0gdGhpcy5jb25maWcgPyBpdGVtW3RoaXMuY29uZmlnLmxhYmVsXSA6IGl0ZW07XG4gICAgICAgIGxldCBzZXBhcmF0b3IgPSBpICE9PSB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoIC0gMSA/ICcsJyA6ICcnO1xuICAgICAgICByZXN1bHQgPSByZXN1bHQgKyBkaXNwbGF5VmFsdWUgKyBzZXBhcmF0b3I7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBpc0NoaWxkcmVuT3BlbihpdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5vcGVuQ2hpbGRyZW5NYXAuZ2V0KGl0ZW0pID09PSB0cnVlO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZUNoaWxkcmVuKGl0ZW06IGFueSwgZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5vcGVuQ2hpbGRyZW5NYXAuZ2V0KGl0ZW0pIHx8IGZhbHNlO1xuICAgIHRoaXMub3BlbkNoaWxkcmVuTWFwLnNldChpdGVtLCAhY3VycmVudCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGlzcGxheVZhbHVlKGNoaWxkOiBhbnksIGNvbmZpZz86IHsgbGFiZWw6IHN0cmluZyB9KTogc3RyaW5nIHtcbiAgICBpZiAoY29uZmlnPy5sYWJlbCAmJiB0eXBlb2YgY2hpbGQgPT09ICdvYmplY3QnICYmIGNoaWxkICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gY2hpbGRbY29uZmlnLmxhYmVsXSA/PyAnJztcbiAgICB9XG4gICAgcmV0dXJuIGNoaWxkID8/ICcnO1xuICB9XG5cbiAgcHVibGljIGlucHV0RGlzcGxheVZhbHVlKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkSXRlbXM/Lmxlbmd0aCkgcmV0dXJuICcnO1xuXG4gICAgY29uc3QgZ2V0VmFsdWUgPSAoaXRlbTogYW55KSA9PiB0aGlzLmNvbmZpZyA/IGl0ZW1bdGhpcy5jb25maWcudmFsdWVdIDogaXRlbTtcblxuICAgIGNvbnN0IGdldExhYmVsID0gKGl0ZW06IGFueSk6IHN0cmluZyA9PiB7XG4gICAgICBjb25zdCBiYXNlTGFiZWwgPSB0aGlzLmlzQ3VycmVuY3kgPyBpdGVtW3RoaXMuaXNvQ29uZmlnXSA6IHRoaXMuY29uZmlnID8gaXRlbVt0aGlzLmNvbmZpZy5sYWJlbF0gOiBpdGVtO1xuXG4gICAgICBpZiAoIXRoaXMubXVsdGlwbGUgJiYgaXRlbS5uZXR3b3JrPy5jb2RlICYmIChpdGVtLm5ldHdvcmtfaWQgIT09IGl0ZW0uY3VycmVuY3lfaWQgfHwgaXRlbS5jaGlsZHJlbiB8fCBpdGVtLmlzX0VSQzIwKSkge1xuICAgICAgICB0aGlzLm5ldHdvcmtDb25maWcgPSB7bGFiZWw6IGJhc2VMYWJlbCwgaXNvOiBpdGVtLm5ldHdvcms/LmNvZGUsIGlkOiBpdGVtLm5ldHdvcmtfaWR9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBiYXNlTGFiZWw7XG4gICAgfTtcblxuICAgIGlmICghdGhpcy5pdGVtcz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zLm1hcChnZXRMYWJlbCkuam9pbignLCAnKTtcbiAgICB9XG5cbiAgICBjb25zdCBsYWJlbHM6IHN0cmluZ1tdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IHBhcmVudCBvZiB0aGlzLml0ZW1zKSB7XG4gICAgICBpZiAocGFyZW50LmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgYWxsQ2hpbGRyZW5TZWxlY3RlZCA9IHBhcmVudC5jaGlsZHJlbi5ldmVyeShjaGlsZCA9PlxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5zb21lKHNlbCA9PiBnZXRWYWx1ZShzZWwpID09PSBnZXRWYWx1ZShjaGlsZCkpXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGFsbENoaWxkcmVuU2VsZWN0ZWQpIHtcbiAgICAgICAgICBsYWJlbHMucHVzaChnZXRMYWJlbChwYXJlbnQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHBhcmVudC5jaGlsZHJlbikge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtcy5zb21lKHNlbCA9PiBnZXRWYWx1ZShzZWwpID09PSBnZXRWYWx1ZShjaGlsZCkpKSB7XG4gICAgICAgICAgICAgIGxhYmVscy5wdXNoKGdldExhYmVsKGNoaWxkKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtcy5zb21lKHNlbCA9PiBnZXRWYWx1ZShzZWwpID09PSBnZXRWYWx1ZShwYXJlbnQpKSkge1xuICAgICAgICBsYWJlbHMucHVzaChnZXRMYWJlbChwYXJlbnQpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50cnVuY2F0ZShsYWJlbHMpO1xuICB9XG5cbiAgcHJpdmF0ZSB0cnVuY2F0ZShsYWJlbHM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICBjb25zdCBtYXhJdGVtcyA9IHRoaXMud2lkdGggPT09ICdzaG9ydCcgPyAzIDogdGhpcy53aWR0aCA9PT0gJ21lZGl1bScgPyA2IDogMTI7XG4gICAgaWYgKGxhYmVscy5sZW5ndGggPD0gbWF4SXRlbXMpIHJldHVybiBsYWJlbHMuam9pbignLCAnKTtcbiAgICByZXR1cm4gbGFiZWxzLnNsaWNlKDAsIG1heEl0ZW1zKS5qb2luKCcsICcpICsgJy4uLic7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJTZWFyY2goKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XG4gICAgdGhpcy5hdmFpbGFibGVPcHRpb25zID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLml0ZW1zKSk7XG4gIH1cblxuICBwdWJsaWMgcHJldmVudFR5cGluZ1doZW5Mb2NrZWQoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGlucHV0OiBIVE1MSW5wdXRFbGVtZW50KSB7XG4gICAgY29uc3QgaXNMb2NrZWQgPSAhdGhpcy5kcm9wZG93bk9wZW5lZCB8fCAhdGhpcy5pdGVtcztcblxuICAgIGlmIChpc0xvY2tlZCkge1xuICAgICAgaWYgKGV2ZW50LmtleS5sZW5ndGggPT09IDEgfHwgZXZlbnQua2V5ID09PSAnQmFja3NwYWNlJyB8fCBldmVudC5rZXkgPT09ICdEZWxldGUnKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG5cbiAgICAgIGlucHV0LmJsdXIoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJpbnB1dFR5cGUgPT09ICdmaWVsZCdcIj5cbiAgPGxhYmVsIGNsYXNzPVwiaHItbGFiZWwgc20tYm9sZCB7e2dldFN0YXR1cygpfX1cIiAqbmdJZj1cImxhYmVsXCI+XG4gICAge3sgbGFiZWwgfX0gPHNwYW4gKm5nSWY9XCJyZXF1aXJlZCB8fCBoYXNFcnJvclwiPio8L3NwYW4+XG4gIDwvbGFiZWw+XG48L25nLWNvbnRhaW5lcj5cblxuPGRpdiBjbGFzcz1cImdyYXZpdHktaW5wdXQtZmllbGQge3tpbnB1dFR5cGV9fS17e2xhYmVsU2l6ZX19IHt7c2l6ZX19IHt7d2lkdGh9fS13aWR0aCB7e2dldFN0YXR1cygpfX1cIlxuICAgICBbYXR0ci5kYXRhLWN5XT1cImN5cHJlc3NUYWdcIiAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oKTtcIj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW5wdXRUeXBlID09PSAnZmllbGQnXCI+XG4gICAgPGdyYXZpdHktaWNvbiBjbGFzcz1cImxlZnRcIiBbaWNvbk5hbWVdPVwiaWNvbkxlZnRcIiBbaWNvblNpemVdPVwiaXNJY29uTGVmdE5ldygpID8gJ21kLTE2JyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoaWNvbkxlZnQgJiYgIWRyb3Bkb3duT3BlbmVkKSB8fCAoaWNvbkxlZnQgJiYgIWl0ZW1zKVwiPjwvZ3Jhdml0eS1pY29uPlxuXG4gICAgPGdyYXZpdHktaWNvbiBjbGFzcz1cInNlYXJjaC1pY29uXCIgW2ljb25OYW1lXT1cIidzZWFyY2gnXCIgW2ljb25TaXplXT1cIidzbS0xMidcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZHJvcGRvd25PcGVuZWQgJiYgaXRlbXMpXCI+PC9ncmF2aXR5LWljb24+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiIWRyb3Bkb3duT3BlbmVkICYmIG5ldHdvcmtDb25maWdcIiBjbGFzcz1cIm5ldHdvcmstcGlsbFwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJoci1sYWJlbCB7e3NpemV9fS1yZWd1bGFyXCI+e3tuZXR3b3JrQ29uZmlnLmxhYmVsfX08L3NwYW4+XG4gICAgICA8Z3Jhdml0eS1uZXR3b3JrLXBpbGwgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIiBbbmV0d29ya109XCJ7aXNvOiBuZXR3b3JrQ29uZmlnLmlzbywgaWQ6IG5ldHdvcmtDb25maWcuaWR9XCI+PC9ncmF2aXR5LW5ldHdvcmstcGlsbD5cbiAgICA8L2Rpdj5cblxuICAgIDxpbnB1dCAqbmdJZj1cIiFuZXR3b3JrQ29uZmlnIHx8IGRyb3Bkb3duT3BlbmVkXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgY2xhc3M9XCJoci1sYWJlbCB7e3NpemV9fS1yZWd1bGFyIHt7Z2V0U3RhdHVzKCl9fVwiXG4gICAgICAgICAgIChmb2N1cyk9XCJzZWFyY2hUZXh0ID0gJydcIiBbY2xhc3MubG9ja2VkXT1cIiFkcm9wZG93bk9wZW5lZCB8fCAhaXRlbXNcIlxuICAgICAgICAgICAoa2V5ZG93bik9XCJwcmV2ZW50VHlwaW5nV2hlbkxvY2tlZCgkZXZlbnQsIHNlYXJjaElucHV0KVwiXG4gICAgICAgICAgIChpbnB1dCk9XCJmaWx0ZXJJdGVtcygpOyBkcm9wZG93bk9wZW5lZCA9IHRydWVcIlxuICAgICAgICAgICBbYXR0ci5kYXRhLWN5XT1cImN5cHJlc3NUYWcgKyAnX3NlYXJjaF9pbnB1dCdcIlxuICAgICAgICAgICAjc2VhcmNoSW5wdXRcbiAgICAgICAgICAgW25nTW9kZWxdPVwiKGRyb3Bkb3duT3BlbmVkICYmIGl0ZW1zKSA/IHNlYXJjaFRleHQgOiBpbnB1dERpc3BsYXlWYWx1ZSgpXCJcbiAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VhcmNoVGV4dCA9ICRldmVudFwiXG4gICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3soZHJvcGRvd25PcGVuZWQgJiYgaXRlbXMpID8gKGN1cnJlbnRMYW5nID09ICdlcycgPyAnQnVzY2FyJyA6ICdTZWFyY2ggaW5wdXQnKSA6IChwbGFjZWhvbGRlciA/IHBsYWNlaG9sZGVyIDogbGFiZWwpfX1cIj5cblxuICAgIDxncmF2aXR5LWljb24gY2xhc3M9XCJyaWdodFwiIFtpY29uTmFtZV09XCJkcm9wZG93bk9wZW5lZCA/ICdhcnJvdy11cCc6ICdhcnJvdy1kb3duJ1wiXG4gICAgICAgICAgICAgICAgICBbaWNvblNpemVdPVwiJ21kLTE2J1wiICpuZ0lmPVwiIWlzUmVhZG9ubHkgJiYgc2VhcmNoVGV4dC5sZW5ndGggPT0gMFwiPjwvZ3Jhdml0eS1pY29uPlxuXG4gICAgPGdyYXZpdHktaWNvbiBjbGFzcz1cInJpZ2h0XCIgW2ljb25OYW1lXT1cIid1bnN1Y2Nlc3MnXCIgKGNsaWNrKT1cImNsZWFyU2VhcmNoKClcIlxuICAgICAgICAgICAgICAgICAgW2ljb25TaXplXT1cIidtZC0xNidcIiAqbmdJZj1cImRyb3Bkb3duT3BlbmVkICYmIHNlYXJjaFRleHQubGVuZ3RoID4gMFwiPjwvZ3Jhdml0eS1pY29uPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW5wdXRUeXBlID09PSAnbGFiZWwnXCI+XG4gICAgPGdyYXZpdHktZHJvcGRvd24tbGFiZWwgKG9uQ2xpY2tMYWJlbCk9XCJ0b2dnbGVEcm9wZG93bigpXCIgW2xhYmVsXT1cImdldExhYmVsVGV4dCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2l6ZV09XCJsYWJlbFNpemVcIiBbaXNPcGVuXT1cImRyb3Bkb3duT3BlbmVkXCI+XG4gICAgPC9ncmF2aXR5LWRyb3Bkb3duLWxhYmVsPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tcGFuZWwge3tnZXRTdGF0dXMoKX19XCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiICpuZ0lmPVwiaXRlbXMgJiYgZHJvcGRvd25PcGVuZWRcIlxuICAgICAgIFthdHRyLmRhdGEtY3ldPVwiY3lwcmVzc1RhZyArICdfcGFuZWwnXCI+XG4gICAgPGRpdiBjbGFzcz1cInNlYXJjaC1pbnB1dFwiICpuZ0lmPVwiaW5wdXRUeXBlID09PSAnbGFiZWwnXCI+XG4gICAgICA8Z3Jhdml0eS1pY29uIGNsYXNzPVwic2VhcmNoLWljb25cIiBbaWNvbk5hbWVdPVwiJ3NlYXJjaCdcIiBbaWNvblNpemVdPVwiJ3NtLTEyJ1wiPjwvZ3Jhdml0eS1pY29uPlxuICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIGNsYXNzPVwiaHItbGFiZWwge3tzaXplfX0tcmVndWxhclwiIChpbnB1dCk9XCJmaWx0ZXJJdGVtcygpXCJcbiAgICAgICAgICAgICBbYXR0ci5kYXRhLWN5XT1cImN5cHJlc3NUYWcgKyAnX3NlYXJjaF9pbnB1dCdcIiAjc2VhcmNoSW5wdXRcbiAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRcIiBwbGFjZWhvbGRlcj1cInt7Y3VycmVudExhbmcgPT0gJ2VzJyA/ICdCdXNjYXInIDogJ1NlYXJjaCBpbnB1dCd9fVwiPlxuICAgICAgPGdyYXZpdHktaWNvbiBjbGFzcz1cInBvaW50ZXIgcmVzZXQtaWNvblwiIChjbGljayk9XCJzZWFyY2hUZXh0ID0gJyc7IGZpbHRlckl0ZW1zKClcIiBbaWNvbk5hbWVdPVwiJ3Vuc3VjY2VzcydcIlxuICAgICAgICAgICAgICAgICAgICBbaWNvblNpemVdPVwiJ3NtLTEyJ1wiICpuZ0lmPVwic2VhcmNoVGV4dD8ubGVuZ3RoID4gMFwiPjwvZ3Jhdml0eS1pY29uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInNlbGVjdC1hbGxcIiAqbmdJZj1cIm11bHRpcGxlICYmIGF2YWlsYWJsZU9wdGlvbnMubGVuZ3RoICE9IDBcIj5cbiAgICAgIDxncmF2aXR5LWNoZWNrYm94IFtuZ0NsYXNzXT1cImdldFNwYWNpbmdDbGFzcyhzaXplKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0QWxsSXRlbXMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJjaGVja0lmU2VsZWN0ZWQoKVwiPjwvZ3Jhdml0eS1jaGVja2JveD5cbiAgICAgIDxwIGNsYXNzPVwiaHItbGFiZWwge3tzaXplfX0tcmVndWxhclwiPnt7IGN1cnJlbnRMYW5nID09ICdlcycgPyAnU2VsZWNjaW9uYXIgdG9kbycgOiAnU2VsZWN0IGFsbCcgfX08L3A+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiaXRlbXMtY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaXRlbXNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tY29udGFpbmVyXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgYXZhaWxhYmxlT3B0aW9uc1wiXG4gICAgICAgICAgICAgW2F0dHIuZGF0YS1jeV09XCJpc0N1cnJlbmN5ID8gJ2N1cnJlbmN5X29wdGlvbl8nICsgaXRlbS5jdXJyZW5jeV9pZCA6ICcnXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImhyLWxhYmVsIGl0ZW0ge3tzaXplfX0tcmVndWxhciBwb2ludGVyXCJcbiAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJjaGVja0lmU2VsZWN0ZWQoaXRlbSlcIlxuICAgICAgICAgICAgICAgW2NsYXNzLnBhcnRpYWxdPVwiaXNQYXJ0aWFsbHlTZWxlY3RlZChpdGVtKVwiXG4gICAgICAgICAgICAgICAoY2xpY2spPVwiaXRlbS5jaGlsZHJlbj8ubGVuZ3RoID8gbXVsdGlwbGUgPyBzZWxlY3RJdGVtKGl0ZW0pIDogdG9nZ2xlQ2hpbGRyZW4oaXRlbSwgJGV2ZW50KSA6IHNlbGVjdEl0ZW0oaXRlbSlcIj5cblxuICAgICAgICAgICAgPGdyYXZpdHktY2hlY2tib3ggKm5nSWY9XCJtdWx0aXBsZVwiIFtuZ0NsYXNzXT1cImdldFNwYWNpbmdDbGFzcyhzaXplKVwiXG4gICAgICAgICAgICAgIFtpc1BhcnRpYWxdPVwiaXNQYXJ0aWFsbHlTZWxlY3RlZChpdGVtKVwiXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cImNoZWNrSWZTZWxlY3RlZChpdGVtKVwiPlxuICAgICAgICAgICAgPC9ncmF2aXR5LWNoZWNrYm94PlxuXG4gICAgICAgICAgICA8Z3Jhdml0eS1jdXJyZW5jeS1kaXNwbGF5LXYyICpuZ0lmPVwiaXNDdXJyZW5jeVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0U3BhY2luZ0NsYXNzKHNpemUpXCJcbiAgICAgICAgICAgICAgICBbdHlwZV09XCJpdGVtLnR5cGUgPT09ICdGSUFUJyA/ICdmaWF0LXNob3J0JyA6ICdzaG9ydC1ocnonXCJcbiAgICAgICAgICAgICAgICBbY3VycmVuY3ldPVwie1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW5jeV9uYW1lOiBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbmN5X2lkOiBpdGVtLmN1cnJlbmN5X2lkLCBjdXJyZW5jeV9pc286IGl0ZW0uaXNvLFxuICAgICAgICAgICAgICAgICAgICBuZXR3b3JrX2lkOiBpdGVtLm5ldHdvcms/LmlkLCBuZXR3b3JrX2lzbzogaXRlbS5uZXR3b3JrPy5jb2RlLFxuICAgICAgICAgICAgICAgICAgICBwaWxsX3R5cGU6IGNoZWNrSWZTZWxlY3RlZChpdGVtKSA/ICdzZWNvbmRhcnknIDogJ3ByaW1hcnknfVwiID5cbiAgICAgICAgICAgIDwvZ3Jhdml0eS1jdXJyZW5jeS1kaXNwbGF5LXYyPlxuXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWlzQ3VycmVuY3lcIiBbbmdDbGFzc109XCJnZXRTcGFjaW5nQ2xhc3Moc2l6ZSlcIj57eyBnZXREaXNwbGF5VmFsdWUoaXRlbSwgY29uZmlnKSB9fTwvZGl2PlxuXG4gICAgICAgICAgICA8Z3Jhdml0eS1pY29uIHN0eWxlPVwibWFyZ2luLWxlZnQ6IGF1dG9cIiAoY2xpY2spPVwidG9nZ2xlQ2hpbGRyZW4oaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uTmFtZV09XCJpc0NoaWxkcmVuT3BlbihpdGVtKSA/ICdhcnJvdy11cCcgOiAnYXJyb3ctZG93bidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvblNpemVdPVwiJ21kLTE2J1wiICpuZ0lmPVwiaXRlbS5jaGlsZHJlbj8ubGVuZ3RoXCI+PC9ncmF2aXR5LWljb24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1jaGlsZHJlblwiICpuZ0lmPVwiaXRlbS5jaGlsZHJlbj8ubGVuZ3RoICYmIGlzQ2hpbGRyZW5PcGVuKGl0ZW0pXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBpdGVtLmNoaWxkcmVuXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoci1sYWJlbCBpdGVtIHt7c2l6ZX19LXJlZ3VsYXIgcG9pbnRlclwiIFtuZ0NsYXNzXT1cInsnbXVsdGlwbGUnIDogbXVsdGlwbGV9XCJcbiAgICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiY2hlY2tJZlNlbGVjdGVkKGNoaWxkKVwiXG4gICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEl0ZW0oY2hpbGQpXCI+XG4gICAgICAgICAgICAgICAgPGdyYXZpdHktY2hlY2tib3ggKm5nSWY9XCJtdWx0aXBsZVwiIFtuZ0NsYXNzXT1cImdldE11bHRpbGV2ZWxTcGFjaW5nQ2xhc3Moc2l6ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImNoZWNrSWZTZWxlY3RlZChjaGlsZClcIj48L2dyYXZpdHktY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgPGdyYXZpdHktY3VycmVuY3kgKm5nSWY9XCJpc0N1cnJlbmN5XCIgW25nQ2xhc3NdPVwiZ2V0U3BhY2luZ0NsYXNzKHNpemUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2l6ZV09XCJnZXRDdXJyZW5jeUljb25TaXplKHNpemUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVuY3ldPVwie2N1cnJlbmN5X2lkOiBjaGlsZC5jdXJyZW5jeV9pZH1cIj48L2dyYXZpdHktY3VycmVuY3k+XG4gICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJnZXRTcGFjaW5nQ2xhc3Moc2l6ZSlcIj57eyBnZXREaXNwbGF5VmFsdWUoY2hpbGQsIGNvbmZpZykgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8Z3Jhdml0eS1uZXR3b3JrLXBpbGwgKm5nSWY9XCJpc0N1cnJlbmN5XCIgW3R5cGVdPVwiY2hlY2tJZlNlbGVjdGVkKGNoaWxkKSA/ICdzZWNvbmRhcnknIDogJ3ByaW1hcnknXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25ldHdvcmtdPVwieyBpc286IGNoaWxkLm5ldHdvcms/LmNvZGUsIGlkOiBjaGlsZC5uZXR3b3JrPy5pZCB9XCI+PC9ncmF2aXR5LW5ldHdvcmstcGlsbD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWNvbnRhaW5lclwiICpuZ0lmPVwiYXZhaWxhYmxlT3B0aW9ucy5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaHItbGFiZWwgaXRlbSB7e3NpemV9fS1ib2xkIG5vLXJlc3VsdHNcIj5cbiAgICAgICAgICAgIHt7IGN1cnJlbnRMYW5nID09ICdlcycgPyAnU2luIHJlc3VsdGFkb3MgZW5jb250cmFkb3MnIDogJ05vIHJlc3VsdHMgZm91bmQuJyB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWZvb3RlclwiICpuZ0lmPVwic2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwICYmIGF2YWlsYWJsZU9wdGlvbnMubGVuZ3RoICE9PSAwXCJcbiAgICAgICAgIFtjbGFzcy5ub3QtY2xlYXJhYmxlXT1cIiFjbGVhcmFibGVcIj5cbiAgICAgIDxncmF2aXR5LWxpbmsgKm5nSWY9XCJjbGVhcmFibGVcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJTZWxlY3Rpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgIFtmb250Q2xhc3NdPVwiJ2hyLWxhYmVsIHNtLXJlZ3VsYXInXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1jeV09XCJjeXByZXNzVGFnICsgJ19jbGVhcidcIlxuICAgICAgICAgICAgICAgICAgICBbbGlua1RleHRdPVwiY3VycmVudExhbmcgPT0gJ2VzJyA/ICdMaW1waWFyJyA6ICdDbGVhciBzZWxlY3Rpb24nXCI+XG4gICAgICA8L2dyYXZpdHktbGluaz5cblxuICAgICAgPGdyYXZpdHktbGluayAqbmdJZj1cImF2YWlsYWJsZU9wdGlvbnMubGVuZ3RoICE9IDBcIlxuICAgICAgICAgICAgICAgICAgICBbZm9udENsYXNzXT1cIidoci1sYWJlbCBzbS1ib2xkJ1wiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtY3ldPVwiY3lwcmVzc1RhZyArICdfYXBwbHknXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgdG9nZ2xlRHJvcGRvd24oKVwiXG4gICAgICAgICAgICAgICAgICAgIFtsaW5rVGV4dF09XCJjdXJyZW50TGFuZyA9PSAnZXMnID8gJ0FwbGljYXInIDogJ0FwcGx5J1wiPlxuICAgICAgPC9ncmF2aXR5LWxpbms+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWZvb3RlciBuby1yZXN1bHRzXCIgKm5nSWY9XCJhdmFpbGFibGVPcHRpb25zLmxlbmd0aCA9PT0gMFwiIFtjbGFzcy5ub3QtY2xlYXJhYmxlXT1cIiFjbGVhcmFibGVcIj5cbiAgICAgIDxncmF2aXR5LWxpbmsgKm5nSWY9XCJjbGVhcmFibGVcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJTZWFyY2goKVwiXG4gICAgICAgICAgICAgICAgICAgIFtmb250Q2xhc3NdPVwiJ2hyLWxhYmVsIHNtLXJlZ3VsYXInXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1jeV09XCJjeXByZXNzVGFnICsgJ19jbGVhcl9zZWFyY2gnXCJcbiAgICAgICAgICAgICAgICAgICAgW2xpbmtUZXh0XT1cImN1cnJlbnRMYW5nID09ICdlcycgPyAnTGltcGlhciBiw7pzcXVlZGEnIDogJ0NsZWFyIHNlYXJjaCdcIj5cbiAgICAgIDwvZ3Jhdml0eS1saW5rPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8c2VjdGlvbiBjbGFzcz1cImV4dGVybmFsLWNvbnRlbnRcIiAqbmdJZj1cIiFpdGVtcyAmJiBkcm9wZG93bk9wZW5lZFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvc2VjdGlvbj5cbjwvZGl2PlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiaW5wdXRUeXBlID09PSAnZmllbGQnXCI+XG4gIDxwIGNsYXNzPVwiaHItbGFiZWwgc20tcmVndWxhciBzdXBwb3J0aW5nLXRleHQge3tnZXRTdGF0dXMoKX19IHt7c2l6ZX19XCIgKm5nSWY9XCJzdXBwb3J0VGV4dFwiPlxuICAgIHt7IHN1cHBvcnRUZXh0IH19XG4gIDwvcD5cbiAgPHAgY2xhc3M9XCJoci1sYWJlbCBzbS1yZWd1bGFyIHN1cHBvcnRpbmctdGV4dCB7e2dldFN0YXR1cygpfX0ge3tzaXplfX1cIlxuICAgICAqbmdJZj1cIiFzdXBwb3J0VGV4dCAmJiBnZXRTdGF0dXMoKSA9PSAnYWN0aXZlJyAmJiBzZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwICYmIHJlcXVpcmVkXCI+XG4gICAge3sgY3VycmVudExhbmcgPT0gJ2VzJyA/ICdSZXF1ZXJpZG8nIDogJ1JlcXVpcmVkJyB9fVxuICA8L3A+XG48L25nLWNvbnRhaW5lcj4iXX0=
501
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Jhdml0eS1kcm9wZG93bi1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyYXZpdHktZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvZ3Jhdml0eS1kcm9wZG93bi1saXN0L2dyYXZpdHktZHJvcGRvd24tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktZHJvcGRvd24tbGlzdC9ncmF2aXR5LWRyb3Bkb3duLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxTQUFTLEVBQWMsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUErQixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7OztBQVFsSixNQUFNLE9BQU8sNEJBQTRCO0lBeUJ2QyxJQUNJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksYUFBYSxDQUFDLEtBQWM7UUFDOUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDOUIsQ0FBQztJQUtELElBQ0ksS0FBSyxDQUFDLFdBQXlDO1FBQ2pELElBQUksV0FBVyxFQUFFO1lBQ2YsV0FBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBQyxhQUFhLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztTQUN4RDtJQUNILENBQUM7SUFBQSxDQUFDO0lBV0YsWUFBNkIsWUFBMEIsRUFBVSxLQUFpQjtRQUFyRCxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUFVLFVBQUssR0FBTCxLQUFLLENBQVk7UUE3Q2xFLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsY0FBUyxHQUFZLElBQUksQ0FBQztRQUMxQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsZ0JBQVcsR0FBVyxJQUFJLENBQUM7UUFDM0IsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUM1QixlQUFVLEdBQVksS0FBSyxDQUFDO1FBQzVCLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFJNUMsc0JBQXNCO1FBQ04sY0FBUyxHQUF1QixJQUFJLENBQUM7UUFDckMsU0FBSSxHQUE4QixJQUFJLENBQUM7UUFDdkMsY0FBUyxHQUFzQixPQUFPLENBQUM7UUFDdkMsVUFBSyxHQUF3QyxPQUFPLENBQUM7UUFXM0Qsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNqQywwQkFBcUIsR0FBOEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQVMxRixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLGtCQUFhLEdBQVUsRUFBRSxDQUFDO1FBQzFCLGNBQVMsR0FBVyxLQUFLLENBQUM7UUFDM0IsZUFBVSxHQUFXLE1BQU0sQ0FBQztRQUMzQixxQkFBZ0IsR0FBVSxFQUFFLENBQUM7UUFDN0IsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFDaEMsb0JBQWUsR0FBRyxJQUFJLEdBQUcsRUFBZ0IsQ0FBQztRQUMxQyxrQkFBYSxHQUFnRCxJQUFJLENBQUM7SUFHekUsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxZQUFZLEVBQUU7WUFDbEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDcEM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUMzQixNQUFNLFVBQVUsR0FBaUIsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3pELE1BQU0sWUFBWSxHQUFHLFVBQVUsRUFBRSxZQUFZLENBQUM7WUFFOUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEtBQVksRUFBRSxLQUFVLEVBQWMsRUFBRTtnQkFDckUsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7b0JBQ3hCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7b0JBQy9ELElBQUksU0FBUyxJQUFJLEtBQUssRUFBRTt3QkFDdEIsT0FBTyxJQUFJLENBQUM7cUJBQ2I7b0JBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO3dCQUNqQixNQUFNLFVBQVUsR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO3dCQUMvRCxJQUFJLFVBQVU7NEJBQUUsT0FBTyxVQUFVLENBQUM7cUJBQ25DO2lCQUNGO2dCQUNELE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQyxDQUFDO1lBRUYsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7WUFFeEIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUMvQixZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7b0JBQ2hDLE1BQU0sS0FBSyxHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQ3JELElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7d0JBQ2hELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO3FCQUNoQztnQkFDSCxDQUFDLENBQUMsQ0FBQzthQUNKO2lCQUFNLElBQUksWUFBWSxJQUFJLElBQUksSUFBSSxZQUFZLEtBQUssRUFBRSxFQUFFO2dCQUN0RCxNQUFNLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO2dCQUM5RCxJQUFJLEtBQUssRUFBRTtvQkFDVCxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQzlCO2FBQ0Y7aUJBQU0sSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUU7Z0JBQ25ELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQzthQUN2QjtTQUNGO0lBQ0gsQ0FBQztJQUVNLFNBQVM7UUFDZCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsT0FBTyxVQUFVLENBQUM7U0FDbkI7YUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDMUIsT0FBTyxVQUFVLENBQUM7U0FDbkI7YUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDeEIsT0FBTyxPQUFPLENBQUM7U0FDaEI7YUFBTSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDOUIsT0FBTyxNQUFNLENBQUM7U0FDZjthQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3hDLE9BQU8sVUFBVSxDQUFDO1NBQ25CO2FBQU07WUFDTCxPQUFPLFFBQVEsQ0FBQztTQUNqQjtJQUNILENBQUM7SUFFTSxhQUFhO1FBQ2xCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixPQUFPLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDdEQ7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTSxjQUFjO1FBQ25CLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUUxQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDeEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7WUFDM0MsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7WUFFbkQsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQ3hCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtvQkFDakIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7d0JBQ2xDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO3FCQUNyRDtpQkFDRjtxQkFBTTtvQkFDTCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUU7d0JBQ3pCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUN4RDtpQkFDRjtnQkFDRCxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDcEM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ2hDLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO3dCQUMzQixJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFOzRCQUNsQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7eUJBQ3hDO29CQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO2FBQ0o7U0FDRjtJQUNILENBQUM7SUFFTSxVQUFVLENBQUMsU0FBYztRQUM5QixNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztRQUV0QyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUVuRCxJQUFJLFVBQVUsRUFBRTtnQkFDZCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ2pELENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDeEMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQ3pELENBQUM7Z0JBRUYsSUFBSSxRQUFRLEVBQUU7b0JBQ1osU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7d0JBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUM7b0JBQ25FLENBQUMsQ0FBQyxDQUFDO2lCQUNKO3FCQUFNO29CQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO3dCQUMxQixJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFOzRCQUN4QyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzs0QkFDL0UsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7NEJBQ2hGLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0NBQ2hCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLENBQUM7NkJBQ25FO2lDQUFNLElBQUksV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQ0FDdkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7NkJBQ2pDO3lCQUNGO29CQUNILENBQUMsQ0FBQyxDQUFDO2lCQUNKO2FBRUY7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBRW5DLElBQUksUUFBUSxFQUFFO29CQUNaLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO3dCQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFBRTs0QkFDaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7eUJBQ2hDO29CQUNILENBQUMsQ0FBQyxDQUFDO2lCQUNKO3FCQUFNO29CQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO3dCQUMxQixJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFOzRCQUN4QyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzs0QkFDaEYsSUFBSSxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dDQUNoRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzs2QkFDakM7eUJBQ0Y7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7YUFDRjtTQUNGO2FBQU07WUFDTCxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBQztJQUVNLG1CQUFtQixDQUFDLElBQVM7UUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBRXpDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEYsT0FBTyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUN2RixDQUFDO0lBRU0sZUFBZSxDQUFDLElBQVU7UUFDL0IsTUFBTSxRQUFRLEdBQUcsQ0FBQyxFQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFdkUsSUFBSSxJQUFJLEVBQUU7WUFDUixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQ25GO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN6RCxPQUFPLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FDbEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQzdFLENBQUM7SUFDSixDQUFDO0lBRU0sY0FBYyxDQUFDLEtBQWlCO1FBQ3JDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sUUFBUSxHQUFHLENBQUMsRUFBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRXZFLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FDekMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQzdFLENBQUM7UUFFRixJQUFJLFdBQVcsRUFBRTtZQUNmLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FDeEQsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUNqRSxDQUFDO1NBQ0g7YUFBTTtZQUNMLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRTtvQkFDakYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7aUJBQ2pDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFTyxZQUFZLENBQUMsS0FBWTtRQUMvQixPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDaEMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNmLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUU7Z0JBQ3pCLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2FBQy9DO1lBQ0QsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDVCxDQUFDO0lBRU0sY0FBYztRQUNuQixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUV4QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDckQ7YUFBTTtZQUNMLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdkM7SUFDSCxDQUFDO0lBRU8sV0FBVyxDQUFDLElBQVMsRUFBRSxLQUFZO1FBQ3pDLEtBQUssTUFBTSxNQUFNLElBQUksS0FBSyxFQUFFO1lBQzFCLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDdkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNyQyxNQUFNO2FBQ1A7aUJBQU0sSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFO2dCQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDekM7U0FDRjtJQUNILENBQUM7SUFFSyxXQUFXO1FBQ2pCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDOUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUU3QixJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1osSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUMvRCxPQUFPO1NBQ1A7UUFFRCxNQUFNLGVBQWUsR0FBRyxDQUFDLEtBQVksRUFBUyxFQUFFO1lBQy9DLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUVsQixLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNwQixNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUM7Z0JBRTVDLE1BQU0sY0FBYyxHQUFVLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO29CQUNoQixjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztvQkFDMUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7b0JBRTNDLElBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7d0JBQ3JCLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztxQkFDN0M7aUJBQ0Q7Z0JBRUQsTUFBTSxLQUFLLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUN6QyxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUNoRCxDQUFDO2dCQUVGLElBQUksZ0JBQWdCLEdBQVUsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLFdBQVcsRUFBRTtvQkFDaEIsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDbEQ7Z0JBRUQsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7Z0JBRXRFLElBQUksV0FBVyxFQUFFO29CQUNoQixNQUFNLE9BQU8sR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUM7b0JBQzVCLElBQUksZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTt3QkFDaEMsT0FBTyxDQUFDLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQzt3QkFDcEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO3FCQUN4Qzt5QkFBTTt3QkFDTixPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUM7cUJBQ3hCO29CQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQ3JCO1lBQ0YsQ0FBQyxDQUFDLENBQUM7WUFFSCxPQUFPLE1BQU0sQ0FBQztRQUNmLENBQUMsQ0FBQztRQUVGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFMkMsZUFBZSxDQUFDLE1BQW9CO1FBQzdFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDNUUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNqQixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUNyRDtpQkFBTTtnQkFDTCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ3pCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUN4RDthQUNGO1lBRUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7WUFDNUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDbkMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDcEQ7SUFDSCxDQUFDO0lBRU0sbUJBQW1CLENBQUMsSUFBWTtRQUNyQyxRQUFRLElBQUksRUFBRTtZQUNaLEtBQUssSUFBSTtnQkFDUCxPQUFPLE9BQU8sQ0FBQztZQUNqQixLQUFLLElBQUk7Z0JBQ1AsT0FBTyxPQUFPLENBQUM7WUFDakIsS0FBSyxJQUFJO2dCQUNQLE9BQU8sT0FBTyxDQUFDO1lBQ2pCO2dCQUNFLE9BQU8sT0FBTyxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQztJQUVNLGVBQWUsQ0FBQyxJQUFZO1FBQ2pDLFFBQVEsSUFBSSxFQUFFO1lBQ1osS0FBSyxJQUFJO2dCQUNQLE9BQU8sMEJBQTBCLENBQUM7WUFDcEMsS0FBSyxJQUFJO2dCQUNQLE9BQU8seUJBQXlCLENBQUM7WUFDbkMsS0FBSyxJQUFJO2dCQUNQLE9BQU8seUJBQXlCLENBQUM7WUFDbkMsS0FBSyxJQUFJO2dCQUNQLE9BQU8seUJBQXlCLENBQUM7WUFDbkM7Z0JBQ0UsT0FBTyxFQUFFLENBQUM7U0FDYjtJQUNILENBQUM7SUFFTSx5QkFBeUIsQ0FBQyxJQUFZO1FBQzNDLFFBQVEsSUFBSSxFQUFFO1lBQ1osS0FBSyxJQUFJO2dCQUNQLE9BQU8seUJBQXlCLENBQUM7WUFDbkMsS0FBSyxJQUFJO2dCQUNQLE9BQU8seUJBQXlCLENBQUM7WUFDbkM7Z0JBQ0UsT0FBTyxFQUFFLENBQUM7U0FDYjtJQUNILENBQUM7SUFFTSxZQUFZO1FBQ2pCLElBQUksTUFBTSxHQUFXLEVBQUUsQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNuQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUNyQjthQUFNO1lBQ0wsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3JDLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ2hFLElBQUksU0FBUyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUMvRCxNQUFNLEdBQUcsTUFBTSxHQUFHLFlBQVksR0FBRyxTQUFTLENBQUM7WUFDN0MsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxjQUFjLENBQUMsSUFBUztRQUM3QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQztJQUNqRCxDQUFDO0lBRU0sY0FBYyxDQUFDLElBQVMsRUFBRSxLQUFpQjtRQUNoRCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDO1FBQ3hELElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFTSxlQUFlLENBQUMsS0FBVSxFQUFFLE1BQTBCO1FBQzNELElBQUksTUFBTSxFQUFFLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtZQUNoRSxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ2xDO1FBQ0QsT0FBTyxLQUFLLElBQUksRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFTSxpQkFBaUI7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRTNDLE1BQU0sUUFBUSxHQUFHLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRTdFLE1BQU0sUUFBUSxHQUFHLENBQUMsSUFBUyxFQUFVLEVBQUU7WUFDckMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUUvRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEtBQUssSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDcEgsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFDLENBQUE7YUFDdEY7WUFFRCxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDLENBQUM7UUFFRixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUU7WUFDdkIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDcEQ7UUFFRCxNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7UUFFNUIsS0FBSyxNQUFNLE1BQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQy9CLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUU7Z0JBQzNCLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FDeEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ2xFLENBQUM7Z0JBRUYsSUFBSSxtQkFBbUIsRUFBRTtvQkFDdkIsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztpQkFDL0I7cUJBQU07b0JBQ0wsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFO3dCQUNuQyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFOzRCQUNyRSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO3lCQUM5QjtxQkFDRjtpQkFDRjthQUNGO2lCQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUU7Z0JBQzdFLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7YUFDL0I7U0FDRjtRQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU8sUUFBUSxDQUFDLE1BQWdCO1FBQy9CLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMvRSxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksUUFBUTtZQUFFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4RCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDdEQsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRU0sdUJBQXVCLENBQUMsS0FBb0IsRUFBRSxLQUF1QjtRQUMxRSxNQUFNLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBRXJELElBQUksUUFBUSxFQUFFO1lBQ1osSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxXQUFXLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxRQUFRLEVBQUU7Z0JBQ2pGLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQzthQUN4QjtZQUVELEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNkO0lBQ0gsQ0FBQzsrR0E1ZVUsNEJBQTRCO21HQUE1Qiw0QkFBNEIsd3NCQUY1QixDQUFDLFlBQVksQ0FBQyxxSkNSM0IsNjNSQThKZTs7NEZEcEpGLDRCQUE0QjtrQkFOeEMsU0FBUzsrQkFDRSx1QkFBdUIsYUFHdEIsQ0FBQyxZQUFZLENBQUM7NEhBSVQsS0FBSztzQkFBcEIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUNVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUNVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsTUFBTTtzQkFBckIsS0FBSztnQkFHVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxLQUFLO3NCQUFwQixLQUFLO2dCQUdGLGFBQWE7c0JBRGhCLEtBQUs7Z0JBU0ksbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNvQixxQkFBcUI7c0JBQS9DLE1BQU07dUJBQUMsVUFBVTtnQkFHZCxLQUFLO3NCQURSLFNBQVM7dUJBQUMsYUFBYTtnQkErU21CLGVBQWU7c0JBQTFELFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0ZpbHRlckJ5UGlwZX0gZnJvbSBcIi4vZmlsdGVyLWJ5LnBpcGVcIjtcbmltcG9ydCB7R3Jhdml0eUljb25Db21wb25lbnR9IGZyb20gXCIuLi9ncmF2aXR5LWljb24vZ3Jhdml0eS1pY29uLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZSwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ3Jhdml0eS1kcm9wZG93bi1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dyYXZpdHktZHJvcGRvd24tbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dyYXZpdHktZHJvcGRvd24tbGlzdC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtGaWx0ZXJCeVBpcGVdXG59KVxuZXhwb3J0IGNsYXNzIEdyYXZpdHlEcm9wZG93bkxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAvLyBDb21wb25lbnQgZmVhdHVyZXNcbiAgQElucHV0KCkgcHVibGljIGxhYmVsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBpY29uTGVmdDogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgaXRlbXM6IEFycmF5PGFueT47XG4gIEBJbnB1dCgpIHB1YmxpYyBjeXByZXNzVGFnOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgc3VwcG9ydFRleHQ6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIGhhc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBjbGVhcmFibGU6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBjdXJyZW50TGFuZzogc3RyaW5nID0gJ2VuJztcbiAgQElucHV0KCkgcHVibGljIGlzQ3VycmVuY3k6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGlzRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGlzUmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbVZhbHVlczogQXJyYXk8YW55PiB8IGFueTtcbiAgQElucHV0KCkgcHVibGljIGNvbmZpZz86IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZzsgfTtcblxuICAvLyBBcHBlYXJhbmNlIHNldHRpbmdzXG4gIEBJbnB1dCgpIHB1YmxpYyBsYWJlbFNpemU6ICdzbScgfCAnbWQnIHwgJ2xnJyA9ICdzbSc7XG4gIEBJbnB1dCgpIHB1YmxpYyBzaXplOiAnc20nIHwgJ21kJyB8ICdsZycgfCAneGwnID0gJ21kJztcbiAgQElucHV0KCkgcHVibGljIGlucHV0VHlwZTogJ2ZpZWxkJyB8ICdsYWJlbCcgPSAnZmllbGQnO1xuICBASW5wdXQoKSBwdWJsaWMgd2lkdGg6ICdzaG9ydCcgfCAnbWVkaXVtJyB8ICdmdWxsJyB8ICdmaXQnID0gJ3Nob3J0JztcblxuICBASW5wdXQoKVxuICBnZXQgZHJvcGRvd25TdGF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kcm9wZG93bk9wZW5lZDtcbiAgfVxuXG4gIHNldCBkcm9wZG93blN0YXRlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5kcm9wZG93bk9wZW5lZCA9IHZhbHVlO1xuICB9XG5cbiAgQE91dHB1dCgpIGRyb3Bkb3duU3RhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoJ3Jlc3BvbnNlJykgcHVibGljIHNlbGVjdGVkSXRlbXNSZXNwb25zZTogRXZlbnRFbWl0dGVyPGFueVtdIHwgYW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAVmlld0NoaWxkKCdzZWFyY2hJbnB1dCcpXG4gIHNldCB3YXRjaChzZWFyY2hJbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pikge1xuICAgIGlmIChzZWFyY2hJbnB1dCkge1xuICAgICAgc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cyh7cHJldmVudFNjcm9sbDogdHJ1ZX0pO1xuICAgIH1cbiAgfTtcblxuICBwdWJsaWMgc2VhcmNoVGV4dDogc3RyaW5nID0gJyc7XG4gIHB1YmxpYyBzZWxlY3RlZEl0ZW1zOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgaXNvQ29uZmlnOiBzdHJpbmcgPSAnaXNvJztcblx0cHVibGljIG5hbWVDb25maWc6IHN0cmluZyA9ICduYW1lJztcbiAgcHVibGljIGF2YWlsYWJsZU9wdGlvbnM6IGFueVtdID0gW107XG4gIHB1YmxpYyBkcm9wZG93bk9wZW5lZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgb3BlbkNoaWxkcmVuTWFwID0gbmV3IE1hcDxhbnksIGJvb2xlYW4+KCk7XG4gIHB1YmxpYyBuZXR3b3JrQ29uZmlnOiB7IGxhYmVsOiBzdHJpbmc7IGlzbzogc3RyaW5nOyBpZDogbnVtYmVyOyB9ID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZpbHRlckJ5UGlwZTogRmlsdGVyQnlQaXBlLCBwcml2YXRlIF9lcmVmOiBFbGVtZW50UmVmKSB7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ2l0ZW1zJ10/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5hdmFpbGFibGVPcHRpb25zID0gdGhpcy5pdGVtcztcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1snY3VzdG9tVmFsdWVzJ10pIHtcbiAgICAgIGNvbnN0IGNoYW5nZUl0ZW06IFNpbXBsZUNoYW5nZSA9IGNoYW5nZXNbJ2N1c3RvbVZhbHVlcyddO1xuICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gY2hhbmdlSXRlbT8uY3VycmVudFZhbHVlO1xuXG4gICAgICBjb25zdCBmaW5kT3B0aW9uUmVjdXJzaXZlbHkgPSAoaXRlbXM6IGFueVtdLCB2YWx1ZTogYW55KTogYW55IHwgbnVsbCA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgICAgIGNvbnN0IGl0ZW1WYWx1ZSA9IHRoaXMuY29uZmlnID8gaXRlbVt0aGlzLmNvbmZpZy52YWx1ZV0gOiBpdGVtO1xuICAgICAgICAgIGlmIChpdGVtVmFsdWUgPT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpdGVtLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICBjb25zdCBmb3VuZENoaWxkID0gZmluZE9wdGlvblJlY3Vyc2l2ZWx5KGl0ZW0uY2hpbGRyZW4sIHZhbHVlKTtcbiAgICAgICAgICAgIGlmIChmb3VuZENoaWxkKSByZXR1cm4gZm91bmRDaGlsZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9O1xuXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY3VycmVudFZhbHVlKSkge1xuICAgICAgICBjdXJyZW50VmFsdWUuZm9yRWFjaCgodmFsOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBmb3VuZCA9IGZpbmRPcHRpb25SZWN1cnNpdmVseSh0aGlzLml0ZW1zLCB2YWwpO1xuICAgICAgICAgIGlmIChmb3VuZCAmJiAhdGhpcy5zZWxlY3RlZEl0ZW1zLmluY2x1ZGVzKGZvdW5kKSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goZm91bmQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGN1cnJlbnRWYWx1ZSAhPSBudWxsICYmIGN1cnJlbnRWYWx1ZSAhPT0gJycpIHtcbiAgICAgICAgY29uc3QgZm91bmQgPSBmaW5kT3B0aW9uUmVjdXJzaXZlbHkodGhpcy5pdGVtcywgY3VycmVudFZhbHVlKTtcbiAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW2ZvdW5kXTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghY3VycmVudFZhbHVlICYmICFjaGFuZ2VJdGVtLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0U3RhdHVzKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCkge1xuICAgICAgcmV0dXJuICdkaXNhYmxlZCc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzUmVhZG9ubHkpIHtcbiAgICAgIHJldHVybiAncmVhZG9ubHknO1xuICAgIH0gZWxzZSBpZiAodGhpcy5oYXNFcnJvcikge1xuICAgICAgcmV0dXJuICdlcnJvcic7XG4gICAgfSBlbHNlIGlmICh0aGlzLmRyb3Bkb3duT3BlbmVkKSB7XG4gICAgICByZXR1cm4gJ29wZW4nO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiAnc2VsZWN0ZWQnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ2FjdGl2ZSc7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzSWNvbkxlZnROZXcoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuaWNvbkxlZnQpIHtcbiAgICAgIHJldHVybiBHcmF2aXR5SWNvbkNvbXBvbmVudC5pc05ld0ljb24odGhpcy5pY29uTGVmdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZURyb3Bkb3duKCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMubmV0d29ya0NvbmZpZyA9IG51bGw7XG5cbiAgICBpZiAoIXRoaXMuaXNEaXNhYmxlZCAmJiAhdGhpcy5pc1JlYWRvbmx5KSB7XG4gICAgICB0aGlzLmRyb3Bkb3duT3BlbmVkID0gIXRoaXMuZHJvcGRvd25PcGVuZWQ7XG4gICAgICB0aGlzLmRyb3Bkb3duU3RhdGVDaGFuZ2UuZW1pdCh0aGlzLmRyb3Bkb3duT3BlbmVkKTtcblxuICAgICAgaWYgKCF0aGlzLmRyb3Bkb3duT3BlbmVkKSB7XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zUmVzcG9uc2UuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zWzBdKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXNSZXNwb25zZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtc1swXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgICAgICB0aGlzLmF2YWlsYWJsZU9wdGlvbnMgPSB0aGlzLml0ZW1zO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zPy5mb3JFYWNoKHNlbCA9PiB7XG4gICAgICAgICAgdGhpcy5pdGVtcz8uZm9yRWFjaChwYXJlbnQgPT4ge1xuICAgICAgICAgICAgaWYgKHBhcmVudC5jaGlsZHJlbj8uaW5jbHVkZXMoc2VsKSkge1xuICAgICAgICAgICAgICB0aGlzLm9wZW5DaGlsZHJlbk1hcC5zZXQocGFyZW50LCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNlbGVjdEl0ZW0oaXRlbVRvQWRkOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBpc1BhcmVudCA9ICEhaXRlbVRvQWRkLmNoaWxkcmVuO1xuXG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSB0aGlzLmNoZWNrSWZTZWxlY3RlZChpdGVtVG9BZGQpO1xuXG4gICAgICBpZiAoaXNTZWxlY3RlZCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGVkSXRlbXMuZmlsdGVyKGkgPT5cbiAgICAgICAgICAodGhpcy5jb25maWcgPyBpW3RoaXMuY29uZmlnLnZhbHVlXSA6IGkpICE9PVxuICAgICAgICAgICh0aGlzLmNvbmZpZyA/IGl0ZW1Ub0FkZFt0aGlzLmNvbmZpZy52YWx1ZV0gOiBpdGVtVG9BZGQpXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGlzUGFyZW50KSB7XG4gICAgICAgICAgaXRlbVRvQWRkLmNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcihpID0+IGkgIT09IGNoaWxkKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLml0ZW1zLmZvckVhY2gocGFyZW50ID0+IHtcbiAgICAgICAgICAgIGlmIChwYXJlbnQuY2hpbGRyZW4/LmluY2x1ZGVzKGl0ZW1Ub0FkZCkpIHtcbiAgICAgICAgICAgICAgY29uc3QgYW55U2VsZWN0ZWQgPSBwYXJlbnQuY2hpbGRyZW4uc29tZShjaGlsZCA9PiB0aGlzLmNoZWNrSWZTZWxlY3RlZChjaGlsZCkpO1xuICAgICAgICAgICAgICBjb25zdCBhbGxTZWxlY3RlZCA9IHBhcmVudC5jaGlsZHJlbi5ldmVyeShjaGlsZCA9PiB0aGlzLmNoZWNrSWZTZWxlY3RlZChjaGlsZCkpO1xuICAgICAgICAgICAgICBpZiAoIWFueVNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcihpID0+IGkgIT09IHBhcmVudCk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoYWxsU2VsZWN0ZWQgJiYgIXRoaXMuY2hlY2tJZlNlbGVjdGVkKHBhcmVudCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChwYXJlbnQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbVRvQWRkKTtcblxuICAgICAgICBpZiAoaXNQYXJlbnQpIHtcbiAgICAgICAgICBpdGVtVG9BZGQuY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuY2hlY2tJZlNlbGVjdGVkKGNoaWxkKSkge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChjaGlsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKHBhcmVudCA9PiB7XG4gICAgICAgICAgICBpZiAocGFyZW50LmNoaWxkcmVuPy5pbmNsdWRlcyhpdGVtVG9BZGQpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGFsbFNlbGVjdGVkID0gcGFyZW50LmNoaWxkcmVuLmV2ZXJ5KGNoaWxkID0+IHRoaXMuY2hlY2tJZlNlbGVjdGVkKGNoaWxkKSk7XG4gICAgICAgICAgICAgIGlmIChhbGxTZWxlY3RlZCAmJiAhdGhpcy5jaGVja0lmU2VsZWN0ZWQocGFyZW50KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKHBhcmVudCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbaXRlbVRvQWRkXTtcbiAgICAgIHRoaXMudG9nZ2xlRHJvcGRvd24oKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNQYXJ0aWFsbHlTZWxlY3RlZChpdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAoIWl0ZW0uY2hpbGRyZW4/Lmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRDaGlsZHJlbiA9IGl0ZW0uY2hpbGRyZW4uZmlsdGVyKGNoaWxkID0+IHRoaXMuY2hlY2tJZlNlbGVjdGVkKGNoaWxkKSk7XG4gICAgcmV0dXJuIHNlbGVjdGVkQ2hpbGRyZW4ubGVuZ3RoID4gMCAmJiBzZWxlY3RlZENoaWxkcmVuLmxlbmd0aCA8IGl0ZW0uY2hpbGRyZW4ubGVuZ3RoO1xuICB9XG5cbiAgcHVibGljIGNoZWNrSWZTZWxlY3RlZChpdGVtPzogYW55KTogYm9vbGVhbiB7XG4gICAgY29uc3QgZ2V0VmFsdWUgPSAoZWw6IGFueSkgPT4gdGhpcy5jb25maWcgPyBlbFt0aGlzLmNvbmZpZy52YWx1ZV0gOiBlbDtcblxuICAgIGlmIChpdGVtKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zLnNvbWUoc2VsZWN0ZWQgPT4gZ2V0VmFsdWUoc2VsZWN0ZWQpID09PSBnZXRWYWx1ZShpdGVtKSk7XG4gICAgfVxuXG4gICAgY29uc3QgZmxhdHRlbiA9IHRoaXMuZmxhdHRlbkl0ZW1zKHRoaXMuYXZhaWxhYmxlT3B0aW9ucyk7XG4gICAgcmV0dXJuIGZsYXR0ZW4ubGVuZ3RoID4gMCAmJiBmbGF0dGVuLmV2ZXJ5KG9wdGlvbiA9PlxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnNvbWUoc2VsZWN0ZWQgPT4gZ2V0VmFsdWUoc2VsZWN0ZWQpID09PSBnZXRWYWx1ZShvcHRpb24pKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0QWxsSXRlbXMoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBjb25zdCBmbGF0dGVuID0gdGhpcy5mbGF0dGVuSXRlbXModGhpcy5hdmFpbGFibGVPcHRpb25zKTtcbiAgICBjb25zdCBnZXRWYWx1ZSA9IChlbDogYW55KSA9PiB0aGlzLmNvbmZpZyA/IGVsW3RoaXMuY29uZmlnLnZhbHVlXSA6IGVsO1xuXG4gICAgY29uc3QgYWxsU2VsZWN0ZWQgPSBmbGF0dGVuLmV2ZXJ5KG9wdGlvbiA9PlxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnNvbWUoc2VsZWN0ZWQgPT4gZ2V0VmFsdWUoc2VsZWN0ZWQpID09PSBnZXRWYWx1ZShvcHRpb24pKVxuICAgICk7XG5cbiAgICBpZiAoYWxsU2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoc2VsZWN0ZWQgPT5cbiAgICAgICAgIWZsYXR0ZW4uc29tZShvcHRpb24gPT4gZ2V0VmFsdWUoc2VsZWN0ZWQpID09PSBnZXRWYWx1ZShvcHRpb24pKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmxhdHRlbi5mb3JFYWNoKG9wdGlvbiA9PiB7XG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RlZEl0ZW1zLnNvbWUoc2VsZWN0ZWQgPT4gZ2V0VmFsdWUoc2VsZWN0ZWQpID09PSBnZXRWYWx1ZShvcHRpb24pKSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKG9wdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmxhdHRlbkl0ZW1zKGl0ZW1zOiBhbnlbXSk6IGFueVtdIHtcbiAgICByZXR1cm4gaXRlbXMucmVkdWNlKChhY2MsIGl0ZW0pID0+IHtcbiAgICAgIGFjYy5wdXNoKGl0ZW0pO1xuICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICBhY2MucHVzaCguLi50aGlzLmZsYXR0ZW5JdGVtcyhpdGVtLmNoaWxkcmVuKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIFtdKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhclNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcblxuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXNSZXNwb25zZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1Jlc3BvbnNlLmVtaXQobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvcGVuUGFyZW50cyhpdGVtOiBhbnksIGl0ZW1zOiBhbnlbXSk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgcGFyZW50IG9mIGl0ZW1zKSB7XG4gICAgICBpZiAocGFyZW50LmNoaWxkcmVuPy5pbmNsdWRlcyhpdGVtKSkge1xuICAgICAgICB0aGlzLm9wZW5DaGlsZHJlbk1hcC5zZXQocGFyZW50LCB0cnVlKTtcbiAgICAgICAgdGhpcy5vcGVuUGFyZW50cyhwYXJlbnQsIHRoaXMuaXRlbXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIH0gZWxzZSBpZiAocGFyZW50LmNoaWxkcmVuKSB7XG4gICAgICAgIHRoaXMub3BlblBhcmVudHMoaXRlbSwgcGFyZW50LmNoaWxkcmVuKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuXHRwdWJsaWMgZmlsdGVySXRlbXMoKTogdm9pZCB7XG5cdFx0Y29uc3Qgc2VhcmNoID0gdGhpcy5zZWFyY2hUZXh0Py50b0xvd2VyQ2FzZSgpO1xuXHRcdHRoaXMub3BlbkNoaWxkcmVuTWFwLmNsZWFyKCk7XG5cblx0XHRpZiAoIXNlYXJjaCkge1xuXHRcdFx0dGhpcy5hdmFpbGFibGVPcHRpb25zID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLml0ZW1zKSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3QgZmlsdGVyUmVjdXJzaXZlID0gKGl0ZW1zOiBhbnlbXSk6IGFueVtdID0+IHtcblx0XHRcdGNvbnN0IHJlc3VsdCA9IFtdO1xuXG5cdFx0XHRpdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuXHRcdFx0XHRjb25zdCBoYXNDaGlsZHJlbiA9ICEhaXRlbS5jaGlsZHJlbj8ubGVuZ3RoO1xuXG5cdFx0XHRcdGNvbnN0IGZpZWxkc1RvU2VhcmNoOiBhbnlbXSA9IFtdO1xuXHRcdFx0XHRpZiAodGhpcy5jb25maWcpIHtcblx0XHRcdFx0XHRmaWVsZHNUb1NlYXJjaC5wdXNoKGl0ZW1bdGhpcy5pc29Db25maWddKTtcblx0XHRcdFx0XHRmaWVsZHNUb1NlYXJjaC5wdXNoKGl0ZW1bdGhpcy5uYW1lQ29uZmlnXSk7XG5cblx0XHRcdFx0XHRpZih0aGlzLmNvbmZpZy5sYWJlbCkge1xuXHRcdFx0XHRcdFx0ZmllbGRzVG9TZWFyY2gucHVzaChpdGVtW3RoaXMuY29uZmlnLmxhYmVsXSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgbWF0Y2ggPSBmaWVsZHNUb1NlYXJjaC5zb21lKGZpZWxkID0+XG5cdFx0XHRcdFx0ZmllbGQ/LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2gpXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0bGV0IGZpbHRlcmVkQ2hpbGRyZW46IGFueVtdID0gW107XG5cdFx0XHRcdGlmIChoYXNDaGlsZHJlbikge1xuXHRcdFx0XHRcdGZpbHRlcmVkQ2hpbGRyZW4gPSBmaWx0ZXJSZWN1cnNpdmUoaXRlbS5jaGlsZHJlbik7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBpbmNsdWRlSXRlbSA9IGhhc0NoaWxkcmVuID8gZmlsdGVyZWRDaGlsZHJlbi5sZW5ndGggPiAwIDogbWF0Y2g7XG5cblx0XHRcdFx0aWYgKGluY2x1ZGVJdGVtKSB7XG5cdFx0XHRcdFx0Y29uc3QgbmV3SXRlbSA9IHsgLi4uaXRlbSB9O1xuXHRcdFx0XHRcdGlmIChmaWx0ZXJlZENoaWxkcmVuLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRcdG5ld0l0ZW0uY2hpbGRyZW4gPSBmaWx0ZXJlZENoaWxkcmVuO1xuXHRcdFx0XHRcdFx0dGhpcy5vcGVuQ2hpbGRyZW5NYXAuc2V0KG5ld0l0ZW0sIHRydWUpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRkZWxldGUgbmV3SXRlbS5jaGlsZHJlbjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmVzdWx0LnB1c2gobmV3SXRlbSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXG5cdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdH07XG5cblx0XHR0aGlzLmF2YWlsYWJsZU9wdGlvbnMgPSBmaWx0ZXJSZWN1cnNpdmUodGhpcy5pdGVtcyk7XG5cdH1cblxuXHRASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pIG9uRG9jdW1lbnRDbGljaygkZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fZXJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKCRldmVudC50YXJnZXQpICYmIHRoaXMuZHJvcGRvd25PcGVuZWQpIHtcbiAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1Jlc3BvbnNlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXNbMF0pIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXNSZXNwb25zZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtc1swXSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XG4gICAgICB0aGlzLmRyb3Bkb3duT3BlbmVkID0gZmFsc2U7XG4gICAgICB0aGlzLmF2YWlsYWJsZU9wdGlvbnMgPSB0aGlzLml0ZW1zO1xuICAgICAgdGhpcy5kcm9wZG93blN0YXRlQ2hhbmdlLmVtaXQodGhpcy5kcm9wZG93bk9wZW5lZCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldEN1cnJlbmN5SWNvblNpemUoc2l6ZTogc3RyaW5nKSB7XG4gICAgc3dpdGNoIChzaXplKSB7XG4gICAgICBjYXNlICdzbSc6XG4gICAgICAgIHJldHVybiAnc20tMTYnO1xuICAgICAgY2FzZSAnbGcnOlxuICAgICAgICByZXR1cm4gJ2xnLTMyJztcbiAgICAgIGNhc2UgJ3hsJzpcbiAgICAgICAgcmV0dXJuICd4bC00MCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ21kLTI0JztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0U3BhY2luZ0NsYXNzKHNpemU6IHN0cmluZykge1xuICAgIHN3aXRjaCAoc2l6ZSkge1xuICAgICAgY2FzZSAnc20nOlxuICAgICAgICByZXR1cm4gJ2dyYXZpdHktbWFyZ2luLXJpZ2h0LXh4cyc7XG4gICAgICBjYXNlICdtZCc6XG4gICAgICAgIHJldHVybiAnZ3Jhdml0eS1tYXJnaW4tcmlnaHQteHMnO1xuICAgICAgY2FzZSAnbGcnOlxuICAgICAgICByZXR1cm4gJ2dyYXZpdHktbWFyZ2luLXJpZ2h0LXNtJztcbiAgICAgIGNhc2UgJ3hsJzpcbiAgICAgICAgcmV0dXJuICdncmF2aXR5LW1hcmdpbi1yaWdodC1tZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldE11bHRpbGV2ZWxTcGFjaW5nQ2xhc3Moc2l6ZTogc3RyaW5nKSB7XG4gICAgc3dpdGNoIChzaXplKSB7XG4gICAgICBjYXNlICdzbSc6XG4gICAgICAgIHJldHVybiAnZ3Jhdml0eS1tYXJnaW4tcmlnaHQtbWQnO1xuICAgICAgY2FzZSAnbWQnOlxuICAgICAgICByZXR1cm4gJ2dyYXZpdHktbWFyZ2luLXJpZ2h0LWxnJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0TGFiZWxUZXh0KCk6IHN0cmluZyB7XG4gICAgbGV0IHJlc3VsdDogc3RyaW5nID0gJyc7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJlc3VsdCA9IHRoaXMubGFiZWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XG4gICAgICAgIGxldCBkaXNwbGF5VmFsdWUgPSB0aGlzLmNvbmZpZyA/IGl0ZW1bdGhpcy5jb25maWcubGFiZWxdIDogaXRlbTtcbiAgICAgICAgbGV0IHNlcGFyYXRvciA9IGkgIT09IHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggLSAxID8gJywnIDogJyc7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdCArIGRpc3BsYXlWYWx1ZSArIHNlcGFyYXRvcjtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIGlzQ2hpbGRyZW5PcGVuKGl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm9wZW5DaGlsZHJlbk1hcC5nZXQoaXRlbSkgPT09IHRydWU7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlQ2hpbGRyZW4oaXRlbTogYW55LCBldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLm9wZW5DaGlsZHJlbk1hcC5nZXQoaXRlbSkgfHwgZmFsc2U7XG4gICAgdGhpcy5vcGVuQ2hpbGRyZW5NYXAuc2V0KGl0ZW0sICFjdXJyZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREaXNwbGF5VmFsdWUoY2hpbGQ6IGFueSwgY29uZmlnPzogeyBsYWJlbDogc3RyaW5nIH0pOiBzdHJpbmcge1xuICAgIGlmIChjb25maWc/LmxhYmVsICYmIHR5cGVvZiBjaGlsZCA9PT0gJ29iamVjdCcgJiYgY2hpbGQgIT09IG51bGwpIHtcbiAgICAgIHJldHVybiBjaGlsZFtjb25maWcubGFiZWxdID8/ICcnO1xuICAgIH1cbiAgICByZXR1cm4gY2hpbGQgPz8gJyc7XG4gIH1cblxuICBwdWJsaWMgaW5wdXREaXNwbGF5VmFsdWUoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoKSByZXR1cm4gJyc7XG5cbiAgICBjb25zdCBnZXRWYWx1ZSA9IChpdGVtOiBhbnkpID0+IHRoaXMuY29uZmlnID8gaXRlbVt0aGlzLmNvbmZpZy52YWx1ZV0gOiBpdGVtO1xuXG4gICAgY29uc3QgZ2V0TGFiZWwgPSAoaXRlbTogYW55KTogc3RyaW5nID0+IHtcbiAgICAgIGNvbnN0IGJhc2VMYWJlbCA9IHRoaXMuY29uZmlnID8gaXRlbVt0aGlzLmNvbmZpZy5sYWJlbF0gOiBpdGVtO1xuXG4gICAgICBpZiAoIXRoaXMubXVsdGlwbGUgJiYgaXRlbS5uZXR3b3JrPy5jb2RlICYmIChpdGVtLm5ldHdvcmtfaWQgIT09IGl0ZW0uY3VycmVuY3lfaWQgfHwgaXRlbS5jaGlsZHJlbiB8fCBpdGVtLmlzX0VSQzIwKSkge1xuICAgICAgICB0aGlzLm5ldHdvcmtDb25maWcgPSB7bGFiZWw6IGJhc2VMYWJlbCwgaXNvOiBpdGVtLm5ldHdvcms/LmNvZGUsIGlkOiBpdGVtLm5ldHdvcmtfaWR9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBiYXNlTGFiZWw7XG4gICAgfTtcblxuICAgIGlmICghdGhpcy5pdGVtcz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zLm1hcChnZXRMYWJlbCkuam9pbignLCAnKTtcbiAgICB9XG5cbiAgICBjb25zdCBsYWJlbHM6IHN0cmluZ1tdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IHBhcmVudCBvZiB0aGlzLml0ZW1zKSB7XG4gICAgICBpZiAocGFyZW50LmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgYWxsQ2hpbGRyZW5TZWxlY3RlZCA9IHBhcmVudC5jaGlsZHJlbi5ldmVyeShjaGlsZCA9PlxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5zb21lKHNlbCA9PiBnZXRWYWx1ZShzZWwpID09PSBnZXRWYWx1ZShjaGlsZCkpXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGFsbENoaWxkcmVuU2VsZWN0ZWQpIHtcbiAgICAgICAgICBsYWJlbHMucHVzaChnZXRMYWJlbChwYXJlbnQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHBhcmVudC5jaGlsZHJlbikge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtcy5zb21lKHNlbCA9PiBnZXRWYWx1ZShzZWwpID09PSBnZXRWYWx1ZShjaGlsZCkpKSB7XG4gICAgICAgICAgICAgIGxhYmVscy5wdXNoKGdldExhYmVsKGNoaWxkKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtcy5zb21lKHNlbCA9PiBnZXRWYWx1ZShzZWwpID09PSBnZXRWYWx1ZShwYXJlbnQpKSkge1xuICAgICAgICBsYWJlbHMucHVzaChnZXRMYWJlbChwYXJlbnQpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50cnVuY2F0ZShsYWJlbHMpO1xuICB9XG5cbiAgcHJpdmF0ZSB0cnVuY2F0ZShsYWJlbHM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICBjb25zdCBtYXhJdGVtcyA9IHRoaXMud2lkdGggPT09ICdzaG9ydCcgPyAzIDogdGhpcy53aWR0aCA9PT0gJ21lZGl1bScgPyA2IDogMTI7XG4gICAgaWYgKGxhYmVscy5sZW5ndGggPD0gbWF4SXRlbXMpIHJldHVybiBsYWJlbHMuam9pbignLCAnKTtcbiAgICByZXR1cm4gbGFiZWxzLnNsaWNlKDAsIG1heEl0ZW1zKS5qb2luKCcsICcpICsgJy4uLic7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJTZWFyY2goKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XG4gICAgdGhpcy5hdmFpbGFibGVPcHRpb25zID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLml0ZW1zKSk7XG4gIH1cblxuICBwdWJsaWMgcHJldmVudFR5cGluZ1doZW5Mb2NrZWQoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGlucHV0OiBIVE1MSW5wdXRFbGVtZW50KSB7XG4gICAgY29uc3QgaXNMb2NrZWQgPSAhdGhpcy5kcm9wZG93bk9wZW5lZCB8fCAhdGhpcy5pdGVtcztcblxuICAgIGlmIChpc0xvY2tlZCkge1xuICAgICAgaWYgKGV2ZW50LmtleS5sZW5ndGggPT09IDEgfHwgZXZlbnQua2V5ID09PSAnQmFja3NwYWNlJyB8fCBldmVudC5rZXkgPT09ICdEZWxldGUnKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG5cbiAgICAgIGlucHV0LmJsdXIoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJpbnB1dFR5cGUgPT09ICdmaWVsZCdcIj5cbiAgPGxhYmVsIGNsYXNzPVwiaHItbGFiZWwgc20tYm9sZCB7e2dldFN0YXR1cygpfX1cIiAqbmdJZj1cImxhYmVsXCI+XG4gICAge3sgbGFiZWwgfX0gPHNwYW4gKm5nSWY9XCJyZXF1aXJlZCB8fCBoYXNFcnJvclwiPio8L3NwYW4+XG4gIDwvbGFiZWw+XG48L25nLWNvbnRhaW5lcj5cblxuPGRpdiBjbGFzcz1cImdyYXZpdHktaW5wdXQtZmllbGQge3tpbnB1dFR5cGV9fS17e2xhYmVsU2l6ZX19IHt7c2l6ZX19IHt7d2lkdGh9fS13aWR0aCB7e2dldFN0YXR1cygpfX1cIlxuICAgICBbYXR0ci5kYXRhLWN5XT1cImN5cHJlc3NUYWdcIiAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oKTtcIj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW5wdXRUeXBlID09PSAnZmllbGQnXCI+XG4gICAgPGdyYXZpdHktaWNvbiBjbGFzcz1cImxlZnRcIiBbaWNvbk5hbWVdPVwiaWNvbkxlZnRcIiBbaWNvblNpemVdPVwiaXNJY29uTGVmdE5ldygpID8gJ21kLTE2JyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoaWNvbkxlZnQgJiYgIWRyb3Bkb3duT3BlbmVkKSB8fCAoaWNvbkxlZnQgJiYgIWl0ZW1zKVwiPjwvZ3Jhdml0eS1pY29uPlxuXG4gICAgPGdyYXZpdHktaWNvbiBjbGFzcz1cInNlYXJjaC1pY29uXCIgW2ljb25OYW1lXT1cIidzZWFyY2gnXCIgW2ljb25TaXplXT1cIidzbS0xMidcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZHJvcGRvd25PcGVuZWQgJiYgaXRlbXMpXCI+PC9ncmF2aXR5LWljb24+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiIWRyb3Bkb3duT3BlbmVkICYmIG5ldHdvcmtDb25maWdcIiBjbGFzcz1cIm5ldHdvcmstcGlsbFwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJoci1sYWJlbCB7e3NpemV9fS1yZWd1bGFyXCI+e3tuZXR3b3JrQ29uZmlnLmxhYmVsfX08L3NwYW4+XG4gICAgICA8Z3Jhdml0eS1uZXR3b3JrLXBpbGwgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIiBbbmV0d29ya109XCJ7aXNvOiBuZXR3b3JrQ29uZmlnLmlzbywgaWQ6IG5ldHdvcmtDb25maWcuaWR9XCI+PC9ncmF2aXR5LW5ldHdvcmstcGlsbD5cbiAgICA8L2Rpdj5cblxuICAgIDxpbnB1dCAqbmdJZj1cIiFuZXR3b3JrQ29uZmlnIHx8IGRyb3Bkb3duT3BlbmVkXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgY2xhc3M9XCJoci1sYWJlbCB7e3NpemV9fS1yZWd1bGFyIHt7Z2V0U3RhdHVzKCl9fVwiXG4gICAgICAgICAgIChmb2N1cyk9XCJzZWFyY2hUZXh0ID0gJydcIiBbY2xhc3MubG9ja2VkXT1cIiFkcm9wZG93bk9wZW5lZCB8fCAhaXRlbXNcIlxuICAgICAgICAgICAoa2V5ZG93bik9XCJwcmV2ZW50VHlwaW5nV2hlbkxvY2tlZCgkZXZlbnQsIHNlYXJjaElucHV0KVwiXG4gICAgICAgICAgIChpbnB1dCk9XCJmaWx0ZXJJdGVtcygpOyBkcm9wZG93bk9wZW5lZCA9IHRydWVcIlxuICAgICAgICAgICBbYXR0ci5kYXRhLWN5XT1cImN5cHJlc3NUYWcgKyAnX3NlYXJjaF9pbnB1dCdcIlxuICAgICAgICAgICAjc2VhcmNoSW5wdXRcbiAgICAgICAgICAgW25nTW9kZWxdPVwiKGRyb3Bkb3duT3BlbmVkICYmIGl0ZW1zKSA/IHNlYXJjaFRleHQgOiBpbnB1dERpc3BsYXlWYWx1ZSgpXCJcbiAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VhcmNoVGV4dCA9ICRldmVudFwiXG4gICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3soZHJvcGRvd25PcGVuZWQgJiYgaXRlbXMpID8gKGN1cnJlbnRMYW5nID09ICdlcycgPyAnQnVzY2FyJyA6ICdTZWFyY2ggaW5wdXQnKSA6IChwbGFjZWhvbGRlciA/IHBsYWNlaG9sZGVyIDogbGFiZWwpfX1cIj5cblxuICAgIDxncmF2aXR5LWljb24gY2xhc3M9XCJyaWdodFwiIFtpY29uTmFtZV09XCJkcm9wZG93bk9wZW5lZCA/ICdhcnJvdy11cCc6ICdhcnJvdy1kb3duJ1wiXG4gICAgICAgICAgICAgICAgICBbaWNvblNpemVdPVwiJ21kLTE2J1wiICpuZ0lmPVwiIWlzUmVhZG9ubHkgJiYgc2VhcmNoVGV4dC5sZW5ndGggPT0gMFwiPjwvZ3Jhdml0eS1pY29uPlxuXG4gICAgPGdyYXZpdHktaWNvbiBjbGFzcz1cInJpZ2h0XCIgW2ljb25OYW1lXT1cIid1bnN1Y2Nlc3MnXCIgKGNsaWNrKT1cImNsZWFyU2VhcmNoKClcIlxuICAgICAgICAgICAgICAgICAgW2ljb25TaXplXT1cIidtZC0xNidcIiAqbmdJZj1cImRyb3Bkb3duT3BlbmVkICYmIHNlYXJjaFRleHQubGVuZ3RoID4gMFwiPjwvZ3Jhdml0eS1pY29uPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW5wdXRUeXBlID09PSAnbGFiZWwnXCI+XG4gICAgPGdyYXZpdHktZHJvcGRvd24tbGFiZWwgKG9uQ2xpY2tMYWJlbCk9XCJ0b2dnbGVEcm9wZG93bigpXCIgW2xhYmVsXT1cImdldExhYmVsVGV4dCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2l6ZV09XCJsYWJlbFNpemVcIiBbaXNPcGVuXT1cImRyb3Bkb3duT3BlbmVkXCI+XG4gICAgPC9ncmF2aXR5LWRyb3Bkb3duLWxhYmVsPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tcGFuZWwge3tnZXRTdGF0dXMoKX19XCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiICpuZ0lmPVwiaXRlbXMgJiYgZHJvcGRvd25PcGVuZWRcIlxuICAgICAgIFthdHRyLmRhdGEtY3ldPVwiY3lwcmVzc1RhZyArICdfcGFuZWwnXCI+XG4gICAgPGRpdiBjbGFzcz1cInNlYXJjaC1pbnB1dFwiICpuZ0lmPVwiaW5wdXRUeXBlID09PSAnbGFiZWwnXCI+XG4gICAgICA8Z3Jhdml0eS1pY29uIGNsYXNzPVwic2VhcmNoLWljb25cIiBbaWNvbk5hbWVdPVwiJ3NlYXJjaCdcIiBbaWNvblNpemVdPVwiJ3NtLTEyJ1wiPjwvZ3Jhdml0eS1pY29uPlxuICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIGNsYXNzPVwiaHItbGFiZWwge3tzaXplfX0tcmVndWxhclwiIChpbnB1dCk9XCJmaWx0ZXJJdGVtcygpXCJcbiAgICAgICAgICAgICBbYXR0ci5kYXRhLWN5XT1cImN5cHJlc3NUYWcgKyAnX3NlYXJjaF9pbnB1dCdcIiAjc2VhcmNoSW5wdXRcbiAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRcIiBwbGFjZWhvbGRlcj1cInt7Y3VycmVudExhbmcgPT0gJ2VzJyA/ICdCdXNjYXInIDogJ1NlYXJjaCBpbnB1dCd9fVwiPlxuICAgICAgPGdyYXZpdHktaWNvbiBjbGFzcz1cInBvaW50ZXIgcmVzZXQtaWNvblwiIChjbGljayk9XCJzZWFyY2hUZXh0ID0gJyc7IGZpbHRlckl0ZW1zKClcIiBbaWNvbk5hbWVdPVwiJ3Vuc3VjY2VzcydcIlxuICAgICAgICAgICAgICAgICAgICBbaWNvblNpemVdPVwiJ3NtLTEyJ1wiICpuZ0lmPVwic2VhcmNoVGV4dD8ubGVuZ3RoID4gMFwiPjwvZ3Jhdml0eS1pY29uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInNlbGVjdC1hbGxcIiAqbmdJZj1cIm11bHRpcGxlICYmIGF2YWlsYWJsZU9wdGlvbnMubGVuZ3RoICE9IDBcIj5cbiAgICAgIDxncmF2aXR5LWNoZWNrYm94IFtuZ0NsYXNzXT1cImdldFNwYWNpbmdDbGFzcyhzaXplKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0QWxsSXRlbXMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJjaGVja0lmU2VsZWN0ZWQoKVwiPjwvZ3Jhdml0eS1jaGVja2JveD5cbiAgICAgIDxwIGNsYXNzPVwiaHItbGFiZWwge3tzaXplfX0tcmVndWxhclwiPnt7IGN1cnJlbnRMYW5nID09ICdlcycgPyAnU2VsZWNjaW9uYXIgdG9kbycgOiAnU2VsZWN0IGFsbCcgfX08L3A+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiaXRlbXMtY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaXRlbXNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tY29udGFpbmVyXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgYXZhaWxhYmxlT3B0aW9uc1wiXG4gICAgICAgICAgICAgW2F0dHIuZGF0YS1jeV09XCJpc0N1cnJlbmN5ID8gJ2N1cnJlbmN5X29wdGlvbl8nICsgaXRlbS5jdXJyZW5jeV9pZCA6ICcnXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImhyLWxhYmVsIGl0ZW0ge3tzaXplfX0tcmVndWxhciBwb2ludGVyXCJcbiAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJjaGVja0lmU2VsZWN0ZWQoaXRlbSlcIlxuICAgICAgICAgICAgICAgW2NsYXNzLnBhcnRpYWxdPVwiaXNQYXJ0aWFsbHlTZWxlY3RlZChpdGVtKVwiXG4gICAgICAgICAgICAgICAoY2xpY2spPVwiaXRlbS5jaGlsZHJlbj8ubGVuZ3RoID8gbXVsdGlwbGUgPyBzZWxlY3RJdGVtKGl0ZW0pIDogdG9nZ2xlQ2hpbGRyZW4oaXRlbSwgJGV2ZW50KSA6IHNlbGVjdEl0ZW0oaXRlbSlcIj5cblxuICAgICAgICAgICAgPGdyYXZpdHktY2hlY2tib3ggKm5nSWY9XCJtdWx0aXBsZVwiIFtuZ0NsYXNzXT1cImdldFNwYWNpbmdDbGFzcyhzaXplKVwiXG4gICAgICAgICAgICAgIFtpc1BhcnRpYWxdPVwiaXNQYXJ0aWFsbHlTZWxlY3RlZChpdGVtKVwiXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cImNoZWNrSWZTZWxlY3RlZChpdGVtKVwiPlxuICAgICAgICAgICAgPC9ncmF2aXR5LWNoZWNrYm94PlxuXG4gICAgICAgICAgICA8Z3Jhdml0eS1jdXJyZW5jeS1kaXNwbGF5LXYyICpuZ0lmPVwiaXNDdXJyZW5jeVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0U3BhY2luZ0NsYXNzKHNpemUpXCJcbiAgICAgICAgICAgICAgICBbdHlwZV09XCJpdGVtLnR5cGUgPT09ICdGSUFUJyA/ICdmaWF0LXNob3J0JyA6ICdzaG9ydC1ocnonXCJcbiAgICAgICAgICAgICAgICBbY3VycmVuY3ldPVwie1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW5jeV9uYW1lOiBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbmN5X2lkOiBpdGVtLmN1cnJlbmN5X2lkLCBjdXJyZW5jeV9pc286IGl0ZW0uaXNvLFxuICAgICAgICAgICAgICAgICAgICBuZXR3b3JrX2lkOiBpdGVtLm5ldHdvcms/LmlkLCBuZXR3b3JrX2lzbzogaXRlbS5uZXR3b3JrPy5jb2RlLFxuICAgICAgICAgICAgICAgICAgICBwaWxsX3R5cGU6IGNoZWNrSWZTZWxlY3RlZChpdGVtKSA/ICdzZWNvbmRhcnknIDogJ3ByaW1hcnknfVwiID5cbiAgICAgICAgICAgIDwvZ3Jhdml0eS1jdXJyZW5jeS1kaXNwbGF5LXYyPlxuXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWlzQ3VycmVuY3lcIiBbbmdDbGFzc109XCJnZXRTcGFjaW5nQ2xhc3Moc2l6ZSlcIj57eyBnZXREaXNwbGF5VmFsdWUoaXRlbSwgY29uZmlnKSB9fTwvZGl2PlxuXG4gICAgICAgICAgICA8Z3Jhdml0eS1pY29uIHN0eWxlPVwibWFyZ2luLWxlZnQ6IGF1dG9cIiAoY2xpY2spPVwidG9nZ2xlQ2hpbGRyZW4oaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uTmFtZV09XCJpc0NoaWxkcmVuT3BlbihpdGVtKSA/ICdhcnJvdy11cCcgOiAnYXJyb3ctZG93bidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvblNpemVdPVwiJ21kLTE2J1wiICpuZ0lmPVwiaXRlbS5jaGlsZHJlbj8ubGVuZ3RoXCI+PC9ncmF2aXR5LWljb24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1jaGlsZHJlblwiICpuZ0lmPVwiaXRlbS5jaGlsZHJlbj8ubGVuZ3RoICYmIGlzQ2hpbGRyZW5PcGVuKGl0ZW0pXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBpdGVtLmNoaWxkcmVuXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoci1sYWJlbCBpdGVtIHt7c2l6ZX19LXJlZ3VsYXIgcG9pbnRlclwiIFtuZ0NsYXNzXT1cInsnbXVsdGlwbGUnIDogbXVsdGlwbGV9XCJcbiAgICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiY2hlY2tJZlNlbGVjdGVkKGNoaWxkKVwiXG4gICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEl0ZW0oY2hpbGQpXCI+XG4gICAgICAgICAgICAgICAgPGdyYXZpdHktY2hlY2tib3ggKm5nSWY9XCJtdWx0aXBsZVwiIFtuZ0NsYXNzXT1cImdldE11bHRpbGV2ZWxTcGFjaW5nQ2xhc3Moc2l6ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImNoZWNrSWZTZWxlY3RlZChjaGlsZClcIj48L2dyYXZpdHktY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgPGdyYXZpdHktY3VycmVuY3kgKm5nSWY9XCJpc0N1cnJlbmN5XCIgW25nQ2xhc3NdPVwiZ2V0U3BhY2luZ0NsYXNzKHNpemUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2l6ZV09XCJnZXRDdXJyZW5jeUljb25TaXplKHNpemUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVuY3ldPVwie2N1cnJlbmN5X2lkOiBjaGlsZC5jdXJyZW5jeV9pZH1cIj48L2dyYXZpdHktY3VycmVuY3k+XG4gICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJnZXRTcGFjaW5nQ2xhc3Moc2l6ZSlcIj57eyBnZXREaXNwbGF5VmFsdWUoY2hpbGQsIGNvbmZpZykgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8Z3Jhdml0eS1uZXR3b3JrLXBpbGwgKm5nSWY9XCJpc0N1cnJlbmN5XCIgW3R5cGVdPVwiY2hlY2tJZlNlbGVjdGVkKGNoaWxkKSA/ICdzZWNvbmRhcnknIDogJ3ByaW1hcnknXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25ldHdvcmtdPVwieyBpc286IGNoaWxkLm5ldHdvcms/LmNvZGUsIGlkOiBjaGlsZC5uZXR3b3JrPy5pZCB9XCI+PC9ncmF2aXR5LW5ldHdvcmstcGlsbD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWNvbnRhaW5lclwiICpuZ0lmPVwiYXZhaWxhYmxlT3B0aW9ucy5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaHItbGFiZWwgaXRlbSB7e3NpemV9fS1ib2xkIG5vLXJlc3VsdHNcIj5cbiAgICAgICAgICAgIHt7IGN1cnJlbnRMYW5nID09ICdlcycgPyAnU2luIHJlc3VsdGFkb3MgZW5jb250cmFkb3MnIDogJ05vIHJlc3VsdHMgZm91bmQuJyB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWZvb3RlclwiICpuZ0lmPVwic2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwICYmIGF2YWlsYWJsZU9wdGlvbnMubGVuZ3RoICE9PSAwXCJcbiAgICAgICAgIFtjbGFzcy5ub3QtY2xlYXJhYmxlXT1cIiFjbGVhcmFibGVcIj5cbiAgICAgIDxncmF2aXR5LWxpbmsgKm5nSWY9XCJjbGVhcmFibGVcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJTZWxlY3Rpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgIFtmb250Q2xhc3NdPVwiJ2hyLWxhYmVsIHNtLXJlZ3VsYXInXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1jeV09XCJjeXByZXNzVGFnICsgJ19jbGVhcidcIlxuICAgICAgICAgICAgICAgICAgICBbbGlua1RleHRdPVwiY3VycmVudExhbmcgPT0gJ2VzJyA/ICdMaW1waWFyJyA6ICdDbGVhciBzZWxlY3Rpb24nXCI+XG4gICAgICA8L2dyYXZpdHktbGluaz5cblxuICAgICAgPGdyYXZpdHktbGluayAqbmdJZj1cImF2YWlsYWJsZU9wdGlvbnMubGVuZ3RoICE9IDBcIlxuICAgICAgICAgICAgICAgICAgICBbZm9udENsYXNzXT1cIidoci1sYWJlbCBzbS1ib2xkJ1wiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtY3ldPVwiY3lwcmVzc1RhZyArICdfYXBwbHknXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgdG9nZ2xlRHJvcGRvd24oKVwiXG4gICAgICAgICAgICAgICAgICAgIFtsaW5rVGV4dF09XCJjdXJyZW50TGFuZyA9PSAnZXMnID8gJ0FwbGljYXInIDogJ0FwcGx5J1wiPlxuICAgICAgPC9ncmF2aXR5LWxpbms+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWZvb3RlciBuby1yZXN1bHRzXCIgKm5nSWY9XCJhdmFpbGFibGVPcHRpb25zLmxlbmd0aCA9PT0gMFwiIFtjbGFzcy5ub3QtY2xlYXJhYmxlXT1cIiFjbGVhcmFibGVcIj5cbiAgICAgIDxncmF2aXR5LWxpbmsgKm5nSWY9XCJjbGVhcmFibGVcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJTZWFyY2goKVwiXG4gICAgICAgICAgICAgICAgICAgIFtmb250Q2xhc3NdPVwiJ2hyLWxhYmVsIHNtLXJlZ3VsYXInXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1jeV09XCJjeXByZXNzVGFnICsgJ19jbGVhcl9zZWFyY2gnXCJcbiAgICAgICAgICAgICAgICAgICAgW2xpbmtUZXh0XT1cImN1cnJlbnRMYW5nID09ICdlcycgPyAnTGltcGlhciBiw7pzcXVlZGEnIDogJ0NsZWFyIHNlYXJjaCdcIj5cbiAgICAgIDwvZ3Jhdml0eS1saW5rPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8c2VjdGlvbiBjbGFzcz1cImV4dGVybmFsLWNvbnRlbnRcIiAqbmdJZj1cIiFpdGVtcyAmJiBkcm9wZG93bk9wZW5lZFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvc2VjdGlvbj5cbjwvZGl2PlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiaW5wdXRUeXBlID09PSAnZmllbGQnXCI+XG4gIDxwIGNsYXNzPVwiaHItbGFiZWwgc20tcmVndWxhciBzdXBwb3J0aW5nLXRleHQge3tnZXRTdGF0dXMoKX19IHt7c2l6ZX19XCIgKm5nSWY9XCJzdXBwb3J0VGV4dFwiPlxuICAgIHt7IHN1cHBvcnRUZXh0IH19XG4gIDwvcD5cbiAgPHAgY2xhc3M9XCJoci1sYWJlbCBzbS1yZWd1bGFyIHN1cHBvcnRpbmctdGV4dCB7e2dldFN0YXR1cygpfX0ge3tzaXplfX1cIlxuICAgICAqbmdJZj1cIiFzdXBwb3J0VGV4dCAmJiBnZXRTdGF0dXMoKSA9PSAnYWN0aXZlJyAmJiBzZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwICYmIHJlcXVpcmVkXCI+XG4gICAge3sgY3VycmVudExhbmcgPT0gJ2VzJyA/ICdSZXF1ZXJpZG8nIDogJ1JlcXVpcmVkJyB9fVxuICA8L3A+XG48L25nLWNvbnRhaW5lcj4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGxheS1jdXJyZW5jeS1pdGVtcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyYXZpdHktZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvZ3Jhdml0eS1kcm9wZG93bi1saXN0LWRpc3BsYXkvZGlzcGxheS1jdXJyZW5jeS1pdGVtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBEaXNwbGF5Q3VycmVuY3lJdGVtcyB7XG4gICAgbmV0d29ya19pZDogbnVtYmVyO1xuICAgIGN1cnJlbmN5X2lkOiBudW1iZXI7XG4gICAgbmV0d29ya19pc286IHN0cmluZztcbiAgICBjdXJyZW5jeV9pc286IHN0cmluZztcbiAgICBpc19leHBhbmRlZD86IGJvb2xlYW47XG4gICAgY3VycmVuY3lfbmFtZTogc3RyaW5nO1xuICAgIGJhbGFuY2VfYW1vdW50PzogbnVtYmVyO1xuICAgIGJhbGFuY2VfY3VycmVuY3k/OiBzdHJpbmc7XG4gICAgc3ViX2l0ZW1zPzogRGlzcGxheUN1cnJlbmN5SXRlbXNbXTtcbn0iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGxheS1jdXJyZW5jeS1pdGVtcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyYXZpdHktZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvZ3Jhdml0eS1kcm9wZG93bi1saXN0LWRpc3BsYXkvZGlzcGxheS1jdXJyZW5jeS1pdGVtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBEaXNwbGF5Q3VycmVuY3lJdGVtcyB7XG4gICAgbmV0d29ya19pZDogbnVtYmVyO1xuICAgIGN1cnJlbmN5X2lkOiBudW1iZXI7XG5cdFx0aXNIb3ZlcmVkPzogYm9vbGVhbjtcbiAgICBuZXR3b3JrX2lzbzogc3RyaW5nO1xuICAgIGN1cnJlbmN5X2lzbzogc3RyaW5nO1xuICAgIGlzX2V4cGFuZGVkPzogYm9vbGVhbjtcbiAgICBjdXJyZW5jeV9uYW1lOiBzdHJpbmc7XG4gICAgYmFsYW5jZV9hbW91bnQ/OiBudW1iZXI7XG4gICAgYmFsYW5jZV9jdXJyZW5jeT86IHN0cmluZztcbiAgICBzdWJfaXRlbXM/OiBEaXNwbGF5Q3VycmVuY3lJdGVtc1tdO1xufSJdfQ==