@quadrel-enterprise-ui/framework 18.24.1 → 18.25.0

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.
@@ -118,11 +118,8 @@ export class QdCalendarComponent {
118
118
  this.weeks = Array.from({ length: Math.ceil(dates.length / 7) }, () => dates.splice(0, 7));
119
119
  }
120
120
  fillDates(momentObj) {
121
- const firstOfMonth = moment(momentObj).startOf('month').day();
122
121
  const lastOfMonth = moment(momentObj).endOf('month').day();
123
- const firstDayOfGrid = moment(momentObj)
124
- .startOf('month')
125
- .subtract(firstOfMonth === 0 ? 6 : firstOfMonth - 1, 'days');
122
+ const firstDayOfGrid = moment(momentObj).locale(this.language).startOf('month').startOf('week');
126
123
  const lastDayOfGrid = moment(momentObj).endOf('month').subtract(lastOfMonth, 'days').add(7, 'days');
127
124
  const startCalendar = firstDayOfGrid.date();
128
125
  return range(startCalendar, startCalendar + lastDayOfGrid.diff(firstDayOfGrid, 'days')).map(date => {
@@ -183,4 +180,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
183
180
  }], selectedChange: [{
184
181
  type: Output
185
182
  }] } });
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL2Zvcm1zL2RhdGVwaWNrZXIvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL2Zvcm1zL2RhdGVwaWNrZXIvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDL0IsT0FBTyxNQUFrQixNQUFNLFFBQVEsQ0FBQztBQUN4QyxPQUFPLEVBQWlCLGNBQWMsRUFBbUIsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7QUFFeEQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQztBQVFyQixNQUFNLE9BQU8sbUJBQW1CO0lBQzlCOzs7O09BSUc7SUFFSCxZQUFZLENBQTZCO0lBRXpDOzs7O09BSUc7SUFFSCxRQUFRLENBQVM7SUFFakI7Ozs7O09BS0c7SUFFSCxhQUFhLENBQW9CO0lBRWpDOztPQUVHO0lBRUgsY0FBYyxHQUFHLElBQUksWUFBWSxFQUE4QixDQUFDO0lBRWhFLFdBQVcsQ0FBUztJQUNwQixTQUFTLENBQVM7SUFFbEIsUUFBUSxDQUFXO0lBQ25CLEtBQUssR0FBMkIsRUFBRSxDQUFDO0lBQ25DLE1BQU0sQ0FBVztJQUNqQixLQUFLLENBQVc7SUFFaEIsSUFBSSxHQUFtQixjQUFjLENBQUMsT0FBTyxD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QyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO3VHQTlMVSxtQkFBbUI7MkZBQW5CLG1CQUFtQix1TkN6QmhDLHF1RUEyRUE7OzJGRGxEYSxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0UsYUFBYSxtQkFHTix1QkFBdUIsQ0FBQyxNQUFNOzhCQVMvQyxZQUFZO3NCQURYLEtBQUs7Z0JBU04sUUFBUTtzQkFEUCxLQUFLO2dCQVVOLGFBQWE7c0JBRFosS0FBSztnQkFPTixjQUFjO3NCQURiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtc3RyaWN0LWlnbm9yZVxuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHJhbmdlIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBtb21lbnQsIHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IFFkQ2FsZW5kYXJEYXksIFFkQ2FsZW5kYXJNb2RlLCBRZERpc2FibGVkRGF0ZXMgfSBmcm9tICcuLi8uLi9tb2RlbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IFFkRGF0ZUFkYXB0ZXIgfSBmcm9tICcuLi9hZGFwdGVyL2RhdGUtYWRhcHRlcic7XG5cbmNvbnN0IFllYXJzQmVmb3JlID0gOTtcbmNvbnN0IFllYXJzQWZ0ZXIgPSAyO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdxZC1jYWxlbmRhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhbGVuZGFyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFFkQ2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBUaGlzIHByb3BlcnR5IGlzIHVzZWQgdG8gaGlnaGxpZ2h0IHRoZSBzZWxlY3RlZCBkYXRlIGluIHRoZSBjYWxlbmRhci4gSXQgc2hvdWxkIGJlIGluIHRoZSBmb3JtYXQgZm9yIGV4YW1wbGUgJ0RELk1NLllZWVknIG9yICdNTS9ERC9ZWVlZJyBkZXBlbmRpbmcgb24gdGhlIGxhbmd1YWdlIHVzZWQuXG4gICAqXG4gICAqIEBleGFtcGxlICcyMDIyLTEyLTI1J1xuICAgKi9cbiAgQElucHV0KClcbiAgc2VsZWN0ZWREYXRlOiBRZENhbGVuZGFyRGF5Wydmb3JtYXR0ZWQnXTtcblxuICAvKipcbiAgICogVGhpcyBwcm9wZXJ0eSBkZXRlcm1pbmVzIHRoZSBsYW5ndWFnZSB1c2VkIGZvciBkaXNwbGF5aW5nIHRoZSB3ZWVrZGF5cyBhbmQgZm9ybWF0dGluZyB0aGUgZGF0ZXMgaW4gdGhlIGNhbGVuZGFyLiBJdCBzaG91bGQgYmUgYSB2YWxpZCBsYW5ndWFnZSBjb2RlIHN1cHBvcnRlZCBieSB0aGUgbW9tZW50LmpzIGxpYnJhcnkuXG4gICAqXG4gICAqIEBleGFtcGxlICdkZSdcbiAgICovXG4gIEBJbnB1dCgpXG4gIGxhbmd1YWdlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoaXMgcHJvcGVydHkgZGlzYWJsZXMgdGhlIGdpdmVuIGRhdGUgcmFuZ2VzLlRoZSByYW5nZXMgaGF2ZSBhIFwiZnJvbVwiIGFuZCBcInRvXCIgZGF0ZS5cbiAgICogSWYgXCJmcm9tXCIgaXMgZW1wdHksIGl0IHdpbGwgc2V0IHRoZSBkZWZhdWx0IHZhbHVlIDE5MDBcbiAgICogSWYgXCJ0b1wiIGlzIGVtcHR5LCBpdCB3aWxsIGJlIHNldCB0byB0aGUgZGVmYXVsdCAyMTAwXG4gICAqXG4gICAqL1xuICBASW5wdXQoKVxuICBkaXNhYmxlZERhdGVzOiBRZERpc2FibGVkRGF0ZXNbXTtcblxuICAvKipcbiAgICogT3V0cHV0cyBhIHZhbHVlIHdoZW4gdGhlIHVzZXIgc2VsZWN0cyBhIGRhdGUgaW4gdGhlIGNhbGVuZGFyLiBUaGUgbmV3bHkgc2VsZWN0ZWQgZGF0ZSBpcyBvdXRwdXQgYXMgYSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmcuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgc2VsZWN0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFFkQ2FsZW5kYXJEYXlbJ2Zvcm1hdHRlZCddPigpO1xuXG4gIGN1cnJlbnREYXRlOiBNb21lbnQ7XG4gIHRvZGF5RGF0ZTogTW9tZW50O1xuXG4gIHdlZWtkYXlzOiBzdHJpbmdbXTtcbiAgd2Vla3M6IEFycmF5PFFkQ2FsZW5kYXJEYXlbXT4gPSBbXTtcbiAgbW9udGhzOiBzdHJpbmdbXTtcbiAgeWVhcnM6IG51bWJlcltdO1xuXG4gIG1vZGU6IFFkQ2FsZW5kYXJNb2RlID0gUWRDYWxlbmRhck1vZGUuRGVmYXVsdDtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgUWRDYWxlbmRhck1vZGUgPSBRZENhbGVuZGFyTW9kZTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBtb21lbnQubG9jYWxlKHRoaXMubGFuZ3VhZ2UpO1xuXG4gICAgdGhpcy53ZWVrZGF5cyA9IG1vbWVudC53ZWVrZGF5c01pbih0cnVlKTtcbiAgICB0aGlzLnRvZGF5RGF0ZSA9IG1vbWVudCgpO1xuXG4gICAgdGhpcy5tb250aHMgPSBtb21lbnQubW9udGhzKCk7XG4gICAgdGhpcy55ZWFycyA9IHRoaXMuZ2V0WWVhcnMoXG4gICAgICAoUWREYXRlQWRhcHRlci5wYXJzZVRvTW9tZW50KHRoaXMuc2VsZWN0ZWREYXRlKT8uaXNWYWxpZCgpXG4gICAgICAgID8gbW9tZW50KHRoaXMuc2VsZWN0ZWREYXRlLCAnTCcsIHRoaXMubGFuZ3VhZ2UpXG4gICAgICAgIDogdGhpcy50b2RheURhdGVcbiAgICAgICkueWVhcigpXG4gICAgKTtcblxuICAgIHRoaXMuc2V0Q3VycmVudERhdGUoKTtcbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIodGhpcy5jdXJyZW50RGF0ZSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2xhbmd1YWdlJ10pIG1vbWVudC5sb2NhbGUodGhpcy5sYW5ndWFnZSk7XG4gICAgaWYgKGNoYW5nZXNbJ2Rpc2FibGVkRGF0ZXMnXSAmJiAhY2hhbmdlc1snZGlzYWJsZWREYXRlcyddLmlzRmlyc3RDaGFuZ2UoKSkgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKHRoaXMuY3VycmVudERhdGUpO1xuICB9XG5cbiAgaXNTYW1lWWVhck1vbnRoKGRheTogTW9tZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGRheS5pc1NhbWUodGhpcy5jdXJyZW50RGF0ZSwgJ21vbnRoJyk7XG4gIH1cblxuICBpc1NhbWVNb250aChtb250aCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnREYXRlLm1vbnRoKCkgPT09IG1vbnRoO1xuICB9XG5cbiAgaXNTYW1lWWVhcih5ZWFyOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gUWREYXRlQWRhcHRlci5wYXJzZVRvTW9tZW50KHRoaXMuc2VsZWN0ZWREYXRlKS55ZWFyKCkgPT09IHllYXI7XG4gIH1cblxuICBwcmV2KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1vZGUgPT09IFFkQ2FsZW5kYXJNb2RlLkRlZmF1bHQpIHtcbiAgICAgIHRoaXMuY3VycmVudERhdGUuc3VidHJhY3QoMSwgJ21vbnRocycpO1xuICAgICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKHRoaXMuY3VycmVudERhdGUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSBRZENhbGVuZGFyTW9kZS5ZZWFyUGlja2VyKSB7XG4gICAgICB0aGlzLmN1cnJlbnREYXRlLnNldCgneWVhcicsIHRoaXMuY3VycmVudERhdGUueWVhcigpIC0gKFllYXJzQmVmb3JlICsgWWVhcnNBZnRlciArIDEpKTtcbiAgICAgIHRoaXMueWVhcnMgPSB0aGlzLmdldFllYXJzKHRoaXMuY3VycmVudERhdGUueWVhcigpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJyZW50RGF0ZS5zZXQoJ3llYXInLCB0aGlzLmN1cnJlbnREYXRlLnllYXIoKSAtIDEpO1xuICAgIH1cbiAgfVxuXG4gIG5leHQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gUWRDYWxlbmRhck1vZGUuRGVmYXVsdCkge1xuICAgICAgdGhpcy5jdXJyZW50RGF0ZS5hZGQoMSwgJ21vbnRocycpO1xuICAgICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKHRoaXMuY3VycmVudERhdGUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSBRZENhbGVuZGFyTW9kZS5ZZWFyUGlja2VyKSB7XG4gICAgICB0aGlzLmN1cnJlbnREYXRlLnNldCgneWVhcicsIHRoaXMuY3VycmVudERhdGUueWVhcigpICsgKFllYXJzQmVmb3JlICsgWWVhcnNBZnRlciArIDEpKTtcbiAgICAgIHRoaXMueWVhcnMgPSB0aGlzLmdldFllYXJzKHRoaXMuY3VycmVudERhdGUueWVhcigpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJyZW50RGF0ZS5zZXQoJ3llYXInLCB0aGlzLmN1cnJlbnREYXRlLnllYXIoKSArIDEpO1xuICAgIH1cbiAgfVxuXG4gIGlzU2VsZWN0ZWQobW9tZW50T2JqOiBNb21lbnQpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWREYXRlKSByZXR1cm4gZmFsc2U7XG5cbiAgICByZXR1cm4gUWREYXRlQWRhcHRlci5mb3JtYXRUb0xvY2FsaXplZERhdGVTdHJpbmcobW9tZW50T2JqKSA9PT0gdGhpcy5zZWxlY3RlZERhdGU7XG4gIH1cblxuICBzZWxlY3REYXRlKGRhdGU6IFFkQ2FsZW5kYXJEYXkgfCBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQoZGF0ZS5mb3JtYXR0ZWQpO1xuICB9XG5cbiAgc2VsZWN0WWVhcih5ZWFyOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnREYXRlLnNldCgneWVhcicsIHllYXIpO1xuICAgIHRoaXMubW9kZSA9IFFkQ2FsZW5kYXJNb2RlLk1vbnRoUGlja2VyO1xuICB9XG5cbiAgc2VsZWN0TW9udGgobW9udGg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudERhdGUuc2V0KCdtb250aCcsIG1vbnRoKTtcbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIodGhpcy5jdXJyZW50RGF0ZSk7XG4gICAgdGhpcy5tb2RlID0gUWRDYWxlbmRhck1vZGUuRGVmYXVsdDtcbiAgfVxuXG4gIGNoYW5nZU1vZGUobnI6IFFkQ2FsZW5kYXJNb2RlKTogdm9pZCB7XG4gICAgdGhpcy5tb2RlID0gbnI7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlQ2FsZW5kYXIobW9tZW50T2JqOiBNb21lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlcyA9IHRoaXMuZmlsbERhdGVzKG1vbWVudE9iaik7XG4gICAgdGhpcy53ZWVrcyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IE1hdGguY2VpbChkYXRlcy5sZW5ndGggLyA3KSB9LCAoKSA9PiBkYXRlcy5zcGxpY2UoMCwgNykpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWxsRGF0ZXMobW9tZW50T2JqOiBNb21lbnQpOiBRZENhbGVuZGFyRGF5W10ge1xuICAgIGNvbnN0IGZpcnN0T2ZNb250aCA9IG1vbWVudChtb21lbnRPYmopLnN0YXJ0T2YoJ21vbnRoJykuZGF5KCk7XG4gICAgY29uc3QgbGFzdE9mTW9udGggPSBtb21lbnQobW9tZW50T2JqKS5lbmRPZignbW9udGgnKS5kYXkoKTtcbiAgICBjb25zdCBmaXJzdERheU9mR3JpZCA9IG1vbWVudChtb21lbnRPYmopXG4gICAgICAuc3RhcnRPZignbW9udGgnKVxuICAgICAgLnN1YnRyYWN0KGZpcnN0T2ZNb250aCA9PT0gMCA/IDYgOiBmaXJzdE9mTW9udGggLSAxLCAnZGF5cycpO1xuICAgIGNvbnN0IGxhc3REYXlPZkdyaWQgPSBtb21lbnQobW9tZW50T2JqKS5lbmRPZignbW9udGgnKS5zdWJ0cmFjdChsYXN0T2ZNb250aCwgJ2RheXMnKS5hZGQoNywgJ2RheXMnKTtcbiAgICBjb25zdCBzdGFydENhbGVuZGFyID0gZmlyc3REYXlPZkdyaWQuZGF0ZSgpO1xuXG4gICAgcmV0dXJuIHJhbmdlKHN0YXJ0Q2FsZW5kYXIsIHN0YXJ0Q2FsZW5kYXIgKyBsYXN0RGF5T2ZHcmlkLmRpZmYoZmlyc3REYXlPZkdyaWQsICdkYXlzJykpLm1hcChkYXRlID0+IHtcbiAgICAgIGNvbnN0IG5ld0RhdGUgPSBtb21lbnQoZmlyc3REYXlPZkdyaWQpLmRhdGUoZGF0ZSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZvcm1hdHRlZDogUWREYXRlQWRhcHRlci5mb3JtYXRUb0xvY2FsaXplZERhdGVTdHJpbmcobmV3RGF0ZSksXG4gICAgICAgIG1vbWVudDogbmV3RGF0ZSxcbiAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuaXNTZWxlY3RlZChuZXdEYXRlKSxcbiAgICAgICAgdG9kYXk6IHRoaXMuaXNUb2RheShuZXdEYXRlKSxcbiAgICAgICAgZGlzYWJsZWQ6IHRoaXMuaXNEaXNhYmxlZChuZXdEYXRlKVxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaXNUb2RheShtb21lbnRPYmo6IE1vbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRvZGF5RGF0ZS5pc1NhbWUobW9tZW50T2JqLCAnZGF5Jyk7XG4gIH1cblxuICBwcml2YXRlIHNldEN1cnJlbnREYXRlKCk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnREYXRlOiBNb21lbnQgPSAodGhpcy5jdXJyZW50RGF0ZSA9IFFkRGF0ZUFkYXB0ZXIucGFyc2VUb01vbWVudCh0aGlzLnNlbGVjdGVkRGF0ZSk/LmlzVmFsaWQoKVxuICAgICAgPyBtb21lbnQodGhpcy5zZWxlY3RlZERhdGUsICdMJywgJ2RlJylcbiAgICAgIDogdGhpcy50b2RheURhdGUpO1xuXG4gICAgdGhpcy5jdXJyZW50RGF0ZSA9IGN1cnJlbnREYXRlO1xuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gUWREYXRlQWRhcHRlci5mb3JtYXRUb0xvY2FsaXplZERhdGVTdHJpbmcoY3VycmVudERhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRZZWFycyh5ZWFyOiBudW1iZXIpOiBudW1iZXJbXSB7XG4gICAgY29uc3QgeWVhcnNCZWZvcmUgPSBZZWFyc0JlZm9yZTtcbiAgICBjb25zdCB5ZWFyc0FmdGVyID0gWWVhcnNBZnRlcjtcbiAgICBjb25zdCByZXN1bHQ6IG51bWJlcltdID0gW107XG5cbiAgICBmb3IgKGxldCBpID0geWVhciAtIHllYXJzQmVmb3JlOyBpIDw9IHllYXIgKyB5ZWFyc0FmdGVyOyBpKyspIHtcbiAgICAgIHJlc3VsdC5wdXNoKGkpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIGlzRGlzYWJsZWQoZGF0ZTogTW9tZW50KTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkRGF0ZXMpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZERhdGVzLnNvbWUoZGlzYWJsZWREYXRlID0+IHtcbiAgICAgIGxldCBmcm9tRGF0ZSA9IG1vbWVudChkaXNhYmxlZERhdGUuZnJvbSk7XG4gICAgICBsZXQgdG9EYXRlID0gbW9tZW50KGRpc2FibGVkRGF0ZS50byk7XG4gICAgICBpZiAoIWRpc2FibGVkRGF0ZS5mcm9tKSBmcm9tRGF0ZSA9IG1vbWVudCgnMTkwMC0wMS0wMVQwMDowMDowMC4wMDBaJyk7XG4gICAgICBpZiAoIWRpc2FibGVkRGF0ZS50bykgdG9EYXRlID0gbW9tZW50KCcyMTAwLTAxLTAxVDAwOjAwOjAwLjAwMFonKTtcblxuICAgICAgcmV0dXJuIGRhdGUuaXNBZnRlcihmcm9tRGF0ZSwgJ2RheScpICYmIGRhdGUuaXNCZWZvcmUodG9EYXRlLCAnZGF5Jyk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJuYXZcIj5cbiAgPGJ1dHRvbiAoY2xpY2spPVwicHJldigpXCI+XG4gICAgPHFkLWljb24gaWNvbj1cImFycm93TGVmdFwiPjwvcWQtaWNvbj5cbiAgPC9idXR0b24+XG5cbiAgPG5nLWNvbnRhaW5lcj5cbiAgICA8c3BhblxuICAgICAgKm5nSWY9XCJtb2RlID09PSBRZENhbGVuZGFyTW9kZS5EZWZhdWx0XCJcbiAgICAgIGNsYXNzPVwiY3VycmVudC1tb250aC15ZWFyXCJcbiAgICAgIChjbGljayk9XCJjaGFuZ2VNb2RlKFFkQ2FsZW5kYXJNb2RlLlllYXJQaWNrZXIpXCJcbiAgICA+XG4gICAgICB7eyBjdXJyZW50RGF0ZS5sb2NhbGUobGFuZ3VhZ2UpLmZvcm1hdChcIk1NTU1cIikgfX0ge3sgY3VycmVudERhdGU/LmZvcm1hdChcIllZWVlcIikgfX1cbiAgICA8L3NwYW4+XG4gICAgPHNwYW5cbiAgICAgICpuZ0lmPVwibW9kZSA9PT0gUWRDYWxlbmRhck1vZGUuWWVhclBpY2tlclwiXG4gICAgICBjbGFzcz1cImN1cnJlbnQteWVhcnMtbGlzdFwiXG4gICAgICAoY2xpY2spPVwiY2hhbmdlTW9kZShRZENhbGVuZGFyTW9kZS5Nb250aFBpY2tlcilcIlxuICAgID5cbiAgICAgIHt7IHllYXJzWzBdIH19IC0ge3sgeWVhcnNbeWVhcnMubGVuZ3RoIC0gMV0gfX1cbiAgICA8L3NwYW4+XG4gICAgPHNwYW5cbiAgICAgICpuZ0lmPVwibW9kZSA9PT0gUWRDYWxlbmRhck1vZGUuTW9udGhQaWNrZXJcIlxuICAgICAgY2xhc3M9XCJjdXJyZW50LXllYXJcIlxuICAgICAgKGNsaWNrKT1cImNoYW5nZU1vZGUoUWRDYWxlbmRhck1vZGUuWWVhclBpY2tlcilcIlxuICAgID5cbiAgICAgIHt7IGN1cnJlbnREYXRlPy5mb3JtYXQoXCJZWVlZXCIpIH19XG4gICAgPC9zcGFuPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8YnV0dG9uIChjbGljayk9XCJuZXh0KClcIj5cbiAgICA8cWQtaWNvbiBpY29uPVwiYXJyb3dSaWdodFwiPjwvcWQtaWNvbj5cbiAgPC9idXR0b24+XG48L2Rpdj5cblxuPHRhYmxlICpuZ0lmPVwibW9kZSA9PT0gUWRDYWxlbmRhck1vZGUuRGVmYXVsdFwiPlxuICA8dGhlYWQ+PC90aGVhZD5cbiAgPHRib2R5PlxuICAgIDx0cj5cbiAgICAgIDx0ZCBjbGFzcz1cIndlZWtkYXlcIiAqbmdGb3I9XCJsZXQgbmFtZSBvZiB3ZWVrZGF5c1wiPnt7IG5hbWUgfX08L3RkPlxuICAgIDwvdHI+XG4gICAgPHRyICpuZ0Zvcj1cImxldCB3ZWVrIG9mIHdlZWtzXCI+XG4gICAgICA8dGRcbiAgICAgICAgY2xhc3M9XCJkYXkge3sgZGF5Lm1vbWVudC5kYXRlKCkgfX1cIlxuICAgICAgICAqbmdGb3I9XCJsZXQgZGF5IG9mIHdlZWtcIlxuICAgICAgICAoY2xpY2spPVwic2VsZWN0RGF0ZShkYXkpXCJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgIHRvZGF5OiBkYXkudG9kYXksXG4gICAgICAgICAgc2VsZWN0ZWQ6IGRheS5zZWxlY3RlZCxcbiAgICAgICAgICBoaWRkZW46ICFpc1NhbWVZZWFyTW9udGgoZGF5Lm1vbWVudCksXG4gICAgICAgICAgZGlzYWJsZWQ6IGRheS5kaXNhYmxlZFxuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgICAge3sgZGF5Lm1vbWVudC5kYXRlKCkgfX1cbiAgICAgIDwvdGQ+XG4gICAgPC90cj5cbiAgPC90Ym9keT5cbjwvdGFibGU+XG5cbjxkaXYgY2xhc3M9XCJjYWxlbmRhclwiICpuZ0lmPVwibW9kZSAhPT0gUWRDYWxlbmRhck1vZGUuRGVmYXVsdFwiPlxuICA8ZGl2IGNsYXNzPVwicGlja2VyXCIgKm5nSWY9XCJtb2RlID09PSBRZENhbGVuZGFyTW9kZS5ZZWFyUGlja2VyXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbCB7eyB5ZWFyIH19XCIgKm5nRm9yPVwibGV0IHllYXIgb2YgeWVhcnNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeVwiIChjbGljayk9XCJzZWxlY3RZZWFyKHllYXIpXCIgW25nQ2xhc3NdPVwieyBzZWxlY3RlZDogaXNTYW1lWWVhcih5ZWFyKSB9XCI+XG4gICAgICAgIHt7IHllYXIgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwicGlja2VyXCIgKm5nSWY9XCJtb2RlID09PSBRZENhbGVuZGFyTW9kZS5Nb250aFBpY2tlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wge3sgbW9udGggfX1cIiAqbmdGb3I9XCJsZXQgbW9udGggb2YgbW9udGhzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZW50cnlcIiAoY2xpY2spPVwic2VsZWN0TW9udGgoaSlcIiBbbmdDbGFzc109XCJ7IHNlbGVjdGVkOiBpc1NhbWVNb250aChpKSwgbW9udGggfVwiPlxuICAgICAgICB7eyBtb250aCB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL2Zvcm1zL2RhdGVwaWNrZXIvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL2Zvcm1zL2RhdGVwaWNrZXIvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDL0IsT0FBTyxNQUFrQixNQUFNLFFBQVEsQ0FBQztBQUN4QyxPQUFPLEVBQWlCLGNBQWMsRUFBbUIsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7QUFFeEQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQztBQVFyQixNQUFNLE9BQU8sbUJBQW1CO0lBQzlCOzs7O09BSUc7SUFFSCxZQUFZLENBQTZCO0lBRXpDOzs7O09BSUc7SUFFSCxRQUFRLENBQVM7SUFFakI7Ozs7O09BS0c7SUFFSCxhQUFhLENBQW9CO0lBRWpDOztPQUVHO0lBRUgsY0FBYyxHQUFHLElBQUksWUFBWSxFQUE4QixDQUFDO0lBRWhFLFdBQVcsQ0FBUztJQUNwQixTQUFTLENBQVM7SUFFbEIsUUFBUSxDQUFXO0lBQ25CLEtBQUssR0FBMkIsRUFBRSxDQUFDO0lBQ25DLE1BQU0sQ0FBVztJQUNqQixLQUFLLENBQVc7SUFFaEIsSUFBSSxHQUFtQixjQUFjLENBQUMsT0FBTyxD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LFNBQVM7K0JBQ0UsYUFBYSxtQkFHTix1QkFBdUIsQ0FBQyxNQUFNOzhCQVMvQyxZQUFZO3NCQURYLEtBQUs7Z0JBU04sUUFBUTtzQkFEUCxLQUFLO2dCQVVOLGFBQWE7c0JBRFosS0FBSztnQkFPTixjQUFjO3NCQURiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtc3RyaWN0LWlnbm9yZVxuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHJhbmdlIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBtb21lbnQsIHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IFFkQ2FsZW5kYXJEYXksIFFkQ2FsZW5kYXJNb2RlLCBRZERpc2FibGVkRGF0ZXMgfSBmcm9tICcuLi8uLi9tb2RlbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IFFkRGF0ZUFkYXB0ZXIgfSBmcm9tICcuLi9hZGFwdGVyL2RhdGUtYWRhcHRlcic7XG5cbmNvbnN0IFllYXJzQmVmb3JlID0gOTtcbmNvbnN0IFllYXJzQWZ0ZXIgPSAyO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdxZC1jYWxlbmRhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhbGVuZGFyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFFkQ2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBUaGlzIHByb3BlcnR5IGlzIHVzZWQgdG8gaGlnaGxpZ2h0IHRoZSBzZWxlY3RlZCBkYXRlIGluIHRoZSBjYWxlbmRhci4gSXQgc2hvdWxkIGJlIGluIHRoZSBmb3JtYXQgZm9yIGV4YW1wbGUgJ0RELk1NLllZWVknIG9yICdNTS9ERC9ZWVlZJyBkZXBlbmRpbmcgb24gdGhlIGxhbmd1YWdlIHVzZWQuXG4gICAqXG4gICAqIEBleGFtcGxlICcyMDIyLTEyLTI1J1xuICAgKi9cbiAgQElucHV0KClcbiAgc2VsZWN0ZWREYXRlOiBRZENhbGVuZGFyRGF5Wydmb3JtYXR0ZWQnXTtcblxuICAvKipcbiAgICogVGhpcyBwcm9wZXJ0eSBkZXRlcm1pbmVzIHRoZSBsYW5ndWFnZSB1c2VkIGZvciBkaXNwbGF5aW5nIHRoZSB3ZWVrZGF5cyBhbmQgZm9ybWF0dGluZyB0aGUgZGF0ZXMgaW4gdGhlIGNhbGVuZGFyLiBJdCBzaG91bGQgYmUgYSB2YWxpZCBsYW5ndWFnZSBjb2RlIHN1cHBvcnRlZCBieSB0aGUgbW9tZW50LmpzIGxpYnJhcnkuXG4gICAqXG4gICAqIEBleGFtcGxlICdkZSdcbiAgICovXG4gIEBJbnB1dCgpXG4gIGxhbmd1YWdlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoaXMgcHJvcGVydHkgZGlzYWJsZXMgdGhlIGdpdmVuIGRhdGUgcmFuZ2VzLlRoZSByYW5nZXMgaGF2ZSBhIFwiZnJvbVwiIGFuZCBcInRvXCIgZGF0ZS5cbiAgICogSWYgXCJmcm9tXCIgaXMgZW1wdHksIGl0IHdpbGwgc2V0IHRoZSBkZWZhdWx0IHZhbHVlIDE5MDBcbiAgICogSWYgXCJ0b1wiIGlzIGVtcHR5LCBpdCB3aWxsIGJlIHNldCB0byB0aGUgZGVmYXVsdCAyMTAwXG4gICAqXG4gICAqL1xuICBASW5wdXQoKVxuICBkaXNhYmxlZERhdGVzOiBRZERpc2FibGVkRGF0ZXNbXTtcblxuICAvKipcbiAgICogT3V0cHV0cyBhIHZhbHVlIHdoZW4gdGhlIHVzZXIgc2VsZWN0cyBhIGRhdGUgaW4gdGhlIGNhbGVuZGFyLiBUaGUgbmV3bHkgc2VsZWN0ZWQgZGF0ZSBpcyBvdXRwdXQgYXMgYSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmcuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgc2VsZWN0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFFkQ2FsZW5kYXJEYXlbJ2Zvcm1hdHRlZCddPigpO1xuXG4gIGN1cnJlbnREYXRlOiBNb21lbnQ7XG4gIHRvZGF5RGF0ZTogTW9tZW50O1xuXG4gIHdlZWtkYXlzOiBzdHJpbmdbXTtcbiAgd2Vla3M6IEFycmF5PFFkQ2FsZW5kYXJEYXlbXT4gPSBbXTtcbiAgbW9udGhzOiBzdHJpbmdbXTtcbiAgeWVhcnM6IG51bWJlcltdO1xuXG4gIG1vZGU6IFFkQ2FsZW5kYXJNb2RlID0gUWRDYWxlbmRhck1vZGUuRGVmYXVsdDtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgUWRDYWxlbmRhck1vZGUgPSBRZENhbGVuZGFyTW9kZTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBtb21lbnQubG9jYWxlKHRoaXMubGFuZ3VhZ2UpO1xuXG4gICAgdGhpcy53ZWVrZGF5cyA9IG1vbWVudC53ZWVrZGF5c01pbih0cnVlKTtcbiAgICB0aGlzLnRvZGF5RGF0ZSA9IG1vbWVudCgpO1xuXG4gICAgdGhpcy5tb250aHMgPSBtb21lbnQubW9udGhzKCk7XG4gICAgdGhpcy55ZWFycyA9IHRoaXMuZ2V0WWVhcnMoXG4gICAgICAoUWREYXRlQWRhcHRlci5wYXJzZVRvTW9tZW50KHRoaXMuc2VsZWN0ZWREYXRlKT8uaXNWYWxpZCgpXG4gICAgICAgID8gbW9tZW50KHRoaXMuc2VsZWN0ZWREYXRlLCAnTCcsIHRoaXMubGFuZ3VhZ2UpXG4gICAgICAgIDogdGhpcy50b2RheURhdGVcbiAgICAgICkueWVhcigpXG4gICAgKTtcblxuICAgIHRoaXMuc2V0Q3VycmVudERhdGUoKTtcbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIodGhpcy5jdXJyZW50RGF0ZSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2xhbmd1YWdlJ10pIG1vbWVudC5sb2NhbGUodGhpcy5sYW5ndWFnZSk7XG4gICAgaWYgKGNoYW5nZXNbJ2Rpc2FibGVkRGF0ZXMnXSAmJiAhY2hhbmdlc1snZGlzYWJsZWREYXRlcyddLmlzRmlyc3RDaGFuZ2UoKSkgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKHRoaXMuY3VycmVudERhdGUpO1xuICB9XG5cbiAgaXNTYW1lWWVhck1vbnRoKGRheTogTW9tZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGRheS5pc1NhbWUodGhpcy5jdXJyZW50RGF0ZSwgJ21vbnRoJyk7XG4gIH1cblxuICBpc1NhbWVNb250aChtb250aCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnREYXRlLm1vbnRoKCkgPT09IG1vbnRoO1xuICB9XG5cbiAgaXNTYW1lWWVhcih5ZWFyOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gUWREYXRlQWRhcHRlci5wYXJzZVRvTW9tZW50KHRoaXMuc2VsZWN0ZWREYXRlKS55ZWFyKCkgPT09IHllYXI7XG4gIH1cblxuICBwcmV2KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1vZGUgPT09IFFkQ2FsZW5kYXJNb2RlLkRlZmF1bHQpIHtcbiAgICAgIHRoaXMuY3VycmVudERhdGUuc3VidHJhY3QoMSwgJ21vbnRocycpO1xuICAgICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKHRoaXMuY3VycmVudERhdGUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSBRZENhbGVuZGFyTW9kZS5ZZWFyUGlja2VyKSB7XG4gICAgICB0aGlzLmN1cnJlbnREYXRlLnNldCgneWVhcicsIHRoaXMuY3VycmVudERhdGUueWVhcigpIC0gKFllYXJzQmVmb3JlICsgWWVhcnNBZnRlciArIDEpKTtcbiAgICAgIHRoaXMueWVhcnMgPSB0aGlzLmdldFllYXJzKHRoaXMuY3VycmVudERhdGUueWVhcigpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJyZW50RGF0ZS5zZXQoJ3llYXInLCB0aGlzLmN1cnJlbnREYXRlLnllYXIoKSAtIDEpO1xuICAgIH1cbiAgfVxuXG4gIG5leHQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gUWRDYWxlbmRhck1vZGUuRGVmYXVsdCkge1xuICAgICAgdGhpcy5jdXJyZW50RGF0ZS5hZGQoMSwgJ21vbnRocycpO1xuICAgICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKHRoaXMuY3VycmVudERhdGUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSBRZENhbGVuZGFyTW9kZS5ZZWFyUGlja2VyKSB7XG4gICAgICB0aGlzLmN1cnJlbnREYXRlLnNldCgneWVhcicsIHRoaXMuY3VycmVudERhdGUueWVhcigpICsgKFllYXJzQmVmb3JlICsgWWVhcnNBZnRlciArIDEpKTtcbiAgICAgIHRoaXMueWVhcnMgPSB0aGlzLmdldFllYXJzKHRoaXMuY3VycmVudERhdGUueWVhcigpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJyZW50RGF0ZS5zZXQoJ3llYXInLCB0aGlzLmN1cnJlbnREYXRlLnllYXIoKSArIDEpO1xuICAgIH1cbiAgfVxuXG4gIGlzU2VsZWN0ZWQobW9tZW50T2JqOiBNb21lbnQpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWREYXRlKSByZXR1cm4gZmFsc2U7XG5cbiAgICByZXR1cm4gUWREYXRlQWRhcHRlci5mb3JtYXRUb0xvY2FsaXplZERhdGVTdHJpbmcobW9tZW50T2JqKSA9PT0gdGhpcy5zZWxlY3RlZERhdGU7XG4gIH1cblxuICBzZWxlY3REYXRlKGRhdGU6IFFkQ2FsZW5kYXJEYXkgfCBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQoZGF0ZS5mb3JtYXR0ZWQpO1xuICB9XG5cbiAgc2VsZWN0WWVhcih5ZWFyOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnREYXRlLnNldCgneWVhcicsIHllYXIpO1xuICAgIHRoaXMubW9kZSA9IFFkQ2FsZW5kYXJNb2RlLk1vbnRoUGlja2VyO1xuICB9XG5cbiAgc2VsZWN0TW9udGgobW9udGg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudERhdGUuc2V0KCdtb250aCcsIG1vbnRoKTtcbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIodGhpcy5jdXJyZW50RGF0ZSk7XG4gICAgdGhpcy5tb2RlID0gUWRDYWxlbmRhck1vZGUuRGVmYXVsdDtcbiAgfVxuXG4gIGNoYW5nZU1vZGUobnI6IFFkQ2FsZW5kYXJNb2RlKTogdm9pZCB7XG4gICAgdGhpcy5tb2RlID0gbnI7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlQ2FsZW5kYXIobW9tZW50T2JqOiBNb21lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlcyA9IHRoaXMuZmlsbERhdGVzKG1vbWVudE9iaik7XG4gICAgdGhpcy53ZWVrcyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IE1hdGguY2VpbChkYXRlcy5sZW5ndGggLyA3KSB9LCAoKSA9PiBkYXRlcy5zcGxpY2UoMCwgNykpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWxsRGF0ZXMobW9tZW50T2JqOiBNb21lbnQpOiBRZENhbGVuZGFyRGF5W10ge1xuICAgIGNvbnN0IGxhc3RPZk1vbnRoID0gbW9tZW50KG1vbWVudE9iaikuZW5kT2YoJ21vbnRoJykuZGF5KCk7XG4gICAgY29uc3QgZmlyc3REYXlPZkdyaWQgPSBtb21lbnQobW9tZW50T2JqKS5sb2NhbGUodGhpcy5sYW5ndWFnZSkuc3RhcnRPZignbW9udGgnKS5zdGFydE9mKCd3ZWVrJyk7XG4gICAgY29uc3QgbGFzdERheU9mR3JpZCA9IG1vbWVudChtb21lbnRPYmopLmVuZE9mKCdtb250aCcpLnN1YnRyYWN0KGxhc3RPZk1vbnRoLCAnZGF5cycpLmFkZCg3LCAnZGF5cycpO1xuICAgIGNvbnN0IHN0YXJ0Q2FsZW5kYXIgPSBmaXJzdERheU9mR3JpZC5kYXRlKCk7XG5cbiAgICByZXR1cm4gcmFuZ2Uoc3RhcnRDYWxlbmRhciwgc3RhcnRDYWxlbmRhciArIGxhc3REYXlPZkdyaWQuZGlmZihmaXJzdERheU9mR3JpZCwgJ2RheXMnKSkubWFwKGRhdGUgPT4ge1xuICAgICAgY29uc3QgbmV3RGF0ZSA9IG1vbWVudChmaXJzdERheU9mR3JpZCkuZGF0ZShkYXRlKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZm9ybWF0dGVkOiBRZERhdGVBZGFwdGVyLmZvcm1hdFRvTG9jYWxpemVkRGF0ZVN0cmluZyhuZXdEYXRlKSxcbiAgICAgICAgbW9tZW50OiBuZXdEYXRlLFxuICAgICAgICBzZWxlY3RlZDogdGhpcy5pc1NlbGVjdGVkKG5ld0RhdGUpLFxuICAgICAgICB0b2RheTogdGhpcy5pc1RvZGF5KG5ld0RhdGUpLFxuICAgICAgICBkaXNhYmxlZDogdGhpcy5pc0Rpc2FibGVkKG5ld0RhdGUpXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1RvZGF5KG1vbWVudE9iajogTW9tZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudG9kYXlEYXRlLmlzU2FtZShtb21lbnRPYmosICdkYXknKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q3VycmVudERhdGUoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudERhdGU6IE1vbWVudCA9ICh0aGlzLmN1cnJlbnREYXRlID0gUWREYXRlQWRhcHRlci5wYXJzZVRvTW9tZW50KHRoaXMuc2VsZWN0ZWREYXRlKT8uaXNWYWxpZCgpXG4gICAgICA/IG1vbWVudCh0aGlzLnNlbGVjdGVkRGF0ZSwgJ0wnLCAnZGUnKVxuICAgICAgOiB0aGlzLnRvZGF5RGF0ZSk7XG5cbiAgICB0aGlzLmN1cnJlbnREYXRlID0gY3VycmVudERhdGU7XG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSBRZERhdGVBZGFwdGVyLmZvcm1hdFRvTG9jYWxpemVkRGF0ZVN0cmluZyhjdXJyZW50RGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIGdldFllYXJzKHllYXI6IG51bWJlcik6IG51bWJlcltdIHtcbiAgICBjb25zdCB5ZWFyc0JlZm9yZSA9IFllYXJzQmVmb3JlO1xuICAgIGNvbnN0IHllYXJzQWZ0ZXIgPSBZZWFyc0FmdGVyO1xuICAgIGNvbnN0IHJlc3VsdDogbnVtYmVyW10gPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSB5ZWFyIC0geWVhcnNCZWZvcmU7IGkgPD0geWVhciArIHllYXJzQWZ0ZXI7IGkrKykge1xuICAgICAgcmVzdWx0LnB1c2goaSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgaXNEaXNhYmxlZChkYXRlOiBNb21lbnQpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWREYXRlcykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0aGlzLmRpc2FibGVkRGF0ZXMuc29tZShkaXNhYmxlZERhdGUgPT4ge1xuICAgICAgbGV0IGZyb21EYXRlID0gbW9tZW50KGRpc2FibGVkRGF0ZS5mcm9tKTtcbiAgICAgIGxldCB0b0RhdGUgPSBtb21lbnQoZGlzYWJsZWREYXRlLnRvKTtcbiAgICAgIGlmICghZGlzYWJsZWREYXRlLmZyb20pIGZyb21EYXRlID0gbW9tZW50KCcxOTAwLTAxLTAxVDAwOjAwOjAwLjAwMFonKTtcbiAgICAgIGlmICghZGlzYWJsZWREYXRlLnRvKSB0b0RhdGUgPSBtb21lbnQoJzIxMDAtMDEtMDFUMDA6MDA6MDAuMDAwWicpO1xuXG4gICAgICByZXR1cm4gZGF0ZS5pc0FmdGVyKGZyb21EYXRlLCAnZGF5JykgJiYgZGF0ZS5pc0JlZm9yZSh0b0RhdGUsICdkYXknKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm5hdlwiPlxuICA8YnV0dG9uIChjbGljayk9XCJwcmV2KClcIj5cbiAgICA8cWQtaWNvbiBpY29uPVwiYXJyb3dMZWZ0XCI+PC9xZC1pY29uPlxuICA8L2J1dHRvbj5cblxuICA8bmctY29udGFpbmVyPlxuICAgIDxzcGFuXG4gICAgICAqbmdJZj1cIm1vZGUgPT09IFFkQ2FsZW5kYXJNb2RlLkRlZmF1bHRcIlxuICAgICAgY2xhc3M9XCJjdXJyZW50LW1vbnRoLXllYXJcIlxuICAgICAgKGNsaWNrKT1cImNoYW5nZU1vZGUoUWRDYWxlbmRhck1vZGUuWWVhclBpY2tlcilcIlxuICAgID5cbiAgICAgIHt7IGN1cnJlbnREYXRlLmxvY2FsZShsYW5ndWFnZSkuZm9ybWF0KFwiTU1NTVwiKSB9fSB7eyBjdXJyZW50RGF0ZT8uZm9ybWF0KFwiWVlZWVwiKSB9fVxuICAgIDwvc3Bhbj5cbiAgICA8c3BhblxuICAgICAgKm5nSWY9XCJtb2RlID09PSBRZENhbGVuZGFyTW9kZS5ZZWFyUGlja2VyXCJcbiAgICAgIGNsYXNzPVwiY3VycmVudC15ZWFycy1saXN0XCJcbiAgICAgIChjbGljayk9XCJjaGFuZ2VNb2RlKFFkQ2FsZW5kYXJNb2RlLk1vbnRoUGlja2VyKVwiXG4gICAgPlxuICAgICAge3sgeWVhcnNbMF0gfX0gLSB7eyB5ZWFyc1t5ZWFycy5sZW5ndGggLSAxXSB9fVxuICAgIDwvc3Bhbj5cbiAgICA8c3BhblxuICAgICAgKm5nSWY9XCJtb2RlID09PSBRZENhbGVuZGFyTW9kZS5Nb250aFBpY2tlclwiXG4gICAgICBjbGFzcz1cImN1cnJlbnQteWVhclwiXG4gICAgICAoY2xpY2spPVwiY2hhbmdlTW9kZShRZENhbGVuZGFyTW9kZS5ZZWFyUGlja2VyKVwiXG4gICAgPlxuICAgICAge3sgY3VycmVudERhdGU/LmZvcm1hdChcIllZWVlcIikgfX1cbiAgICA8L3NwYW4+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxidXR0b24gKGNsaWNrKT1cIm5leHQoKVwiPlxuICAgIDxxZC1pY29uIGljb249XCJhcnJvd1JpZ2h0XCI+PC9xZC1pY29uPlxuICA8L2J1dHRvbj5cbjwvZGl2PlxuXG48dGFibGUgKm5nSWY9XCJtb2RlID09PSBRZENhbGVuZGFyTW9kZS5EZWZhdWx0XCI+XG4gIDx0aGVhZD48L3RoZWFkPlxuICA8dGJvZHk+XG4gICAgPHRyPlxuICAgICAgPHRkIGNsYXNzPVwid2Vla2RheVwiICpuZ0Zvcj1cImxldCBuYW1lIG9mIHdlZWtkYXlzXCI+e3sgbmFtZSB9fTwvdGQ+XG4gICAgPC90cj5cbiAgICA8dHIgKm5nRm9yPVwibGV0IHdlZWsgb2Ygd2Vla3NcIj5cbiAgICAgIDx0ZFxuICAgICAgICBjbGFzcz1cImRheSB7eyBkYXkubW9tZW50LmRhdGUoKSB9fVwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBkYXkgb2Ygd2Vla1wiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3REYXRlKGRheSlcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgdG9kYXk6IGRheS50b2RheSxcbiAgICAgICAgICBzZWxlY3RlZDogZGF5LnNlbGVjdGVkLFxuICAgICAgICAgIGhpZGRlbjogIWlzU2FtZVllYXJNb250aChkYXkubW9tZW50KSxcbiAgICAgICAgICBkaXNhYmxlZDogZGF5LmRpc2FibGVkXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgICB7eyBkYXkubW9tZW50LmRhdGUoKSB9fVxuICAgICAgPC90ZD5cbiAgICA8L3RyPlxuICA8L3Rib2R5PlxuPC90YWJsZT5cblxuPGRpdiBjbGFzcz1cImNhbGVuZGFyXCIgKm5nSWY9XCJtb2RlICE9PSBRZENhbGVuZGFyTW9kZS5EZWZhdWx0XCI+XG4gIDxkaXYgY2xhc3M9XCJwaWNrZXJcIiAqbmdJZj1cIm1vZGUgPT09IFFkQ2FsZW5kYXJNb2RlLlllYXJQaWNrZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sIHt7IHllYXIgfX1cIiAqbmdGb3I9XCJsZXQgeWVhciBvZiB5ZWFyc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImVudHJ5XCIgKGNsaWNrKT1cInNlbGVjdFllYXIoeWVhcilcIiBbbmdDbGFzc109XCJ7IHNlbGVjdGVkOiBpc1NhbWVZZWFyKHllYXIpIH1cIj5cbiAgICAgICAge3sgeWVhciB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJwaWNrZXJcIiAqbmdJZj1cIm1vZGUgPT09IFFkQ2FsZW5kYXJNb2RlLk1vbnRoUGlja2VyXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbCB7eyBtb250aCB9fVwiICpuZ0Zvcj1cImxldCBtb250aCBvZiBtb250aHM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeVwiIChjbGljayk9XCJzZWxlY3RNb250aChpKVwiIFtuZ0NsYXNzXT1cInsgc2VsZWN0ZWQ6IGlzU2FtZU1vbnRoKGkpLCBtb250aCB9XCI+XG4gICAgICAgIHt7IG1vbnRoIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1jb25maWcuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL3BhZ2UvbW9kZWwvcGFnZS1jb25maWcuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBRZE1lbnVCdXR0b25BY3Rpb25Db25maWcgfSBmcm9tICcuLi8uLi9idXR0b24vbW9kZWwvYnV0dG9uLWNvbmZpZyc7XG5pbXBvcnQgeyBRZFBhZ2VIZWFkZXJGYWNldENvbmZpZyB9IGZyb20gJy4vcGFnZS1oZWFkZXItZmFjZXQuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29uZmlndXJhdGlvbiBvZiBRZFBhZ2UuXG4gKlxuICogQHRlbXBsYXRlIFQgLSBUaGUgdHlwZSBvZiB0aGUgcGFnZSBvYmplY3QgZGF0YVxuICovXG5leHBvcnQgdHlwZSBRZFBhZ2VDb25maWc8VCBleHRlbmRzIG9iamVjdCA9IG9iamVjdD4gPVxuICB8IFFkUGFnZUNvbmZpZ092ZXJ2aWV3XG4gIHwgUWRQYWdlQ29uZmlnQ3JlYXRlPFQ+XG4gIHwgUWRQYWdlQ29uZmlnSW5zcGVjdDxUPlxuICB8IFFkUGFnZUNvbmZpZ0N1c3RvbTxUPjtcblxuZXhwb3J0IGludGVyZmFjZSBRZFBhZ2VTZWxlY3RlZENvbnRleHQge1xuICB2YWx1ZTogc3RyaW5nO1xuICBsYWJlbDoge1xuICAgIGkxOG46IHN0cmluZztcbiAgfTtcbn1cblxuaW50ZXJmYWNlIFFkUGFnZUNvbnRleHRDb25maWdCYXNlIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEZXNjcmlwdGlvbiBmb3IgdGhlIHNwZWNpZmljIGhlYWRlciBmYWNldFxuICAgKi9cbiAgbGFiZWw6IHtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gaTE4biBzdHJpbmcgZm9yIHRoZSBkZXNjcmlwdGlvbiwgdXNlZCBmb3IgdHJhbnNsYXRpb24uXG4gICAgICovXG4gICAgaTE4bjogc3RyaW5nO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQWxsb3dzIHRvIGlkZW50aWZ5IHRoZSBjb250ZXh0XG4gICAqL1xuICBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVnaXN0ZXIgc29tZSBoYW5kbGVyIHRoYXQgaXMgZXhlY3V0ZWQgd2hlbiB0aGUgc2VsZWN0aW9uIGNoYW5nZXMuXG4gICAqL1xuICBjaGFuZ2VkPzogKHNlbGVjdGlvbjogUWRQYWdlU2VsZWN0ZWRDb250ZXh0IHwgUWRQYWdlU2VsZWN0ZWRDb250ZXh0W10gfCBudWxsKSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGZvciBhIGNvbnRleHQgd2l0aCBzaW5nbGUgc2VsZWN0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUWRQYWdlQ29udGV4dENvbmZpZ1NpbmdsZSBleHRlbmRzIFFkUGFnZUNvbnRleHRDb25maWdCYXNlIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmVzIHRoZSB0eXBlIG9uIGhvdyB0aGUgY29udGV4dCBzZWxlY3Rpb24gaGFwcGVucy5cbiAgICovXG4gIHR5cGU6ICdzaW5nbGUnO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQXZhaWxhYmxlIG9wdGlvbnMgZm9yIHNlbGVjdGlvbi5cbiAgICovXG4gIG9wdGlvbnM6IFFkUGFnZVNlbGVjdGVkQ29udGV4dFtdO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29uZmlndXJlcyB3aGV0aGVyIHRoZSBjb250ZXh0IG9wdGlvbnMgYXJlIHNlYXJjaGFibGUgZm9yIHRoZSB1c2VyLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgaGFzU2VhcmNoPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFBsYWNlaG9sZGVyIGZvciBzZWFyY2hcbiAgICovXG4gIHNlYXJjaFBsYWNlaG9sZGVyPzoge1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBpMThuIHN0cmluZ1xuICAgICAqL1xuICAgIGkxOG46IHN0cmluZztcbiAgfTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRpdGxlIGZvciB0aGUgZGlhbG9nIHRoYXQgd2lsbCBiZSBvcGVuZWRcbiAgICovXG4gIHRpdGxlPzoge1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBpMThuIHN0cmluZ1xuICAgICAqL1xuICAgIGkxOG46IHN0cmluZztcbiAgfTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29uZmlndXJhdGlvbiBmb3IgYSBjb250ZXh0IHdpdGggbXVsdGkgc2VsZWN0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUWRQYWdlQ29udGV4dENvbmZpZ011bHRpIGV4dGVuZHMgUWRQYWdlQ29udGV4dENvbmZpZ0Jhc2Uge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyZXMgdGhlIHR5cGUgb24gaG93IHRoZSBjb250ZXh0IHNlbGVjdGlvbiBoYXBwZW5zLlxuICAgKi9cbiAgdHlwZTogJ211bHRpJztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEF2YWlsYWJsZSBvcHRpb25zIGZvciBzZWxlY3Rpb24uXG4gICAqL1xuICBvcHRpb25zOiBRZFBhZ2VTZWxlY3RlZENvbnRleHRbXTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyZXMgd2hldGhlciB0aGUgY29udGV4dCBvcHRpb25zIGFyZSBzZWFyY2hhYmxlIGZvciB0aGUgdXNlci5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGhhc1NlYXJjaD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQbGFjZWhvbGRlciBmb3Igc2VhcmNoXG5cbiAgICovXG4gIHNlYXJjaFBsYWNlaG9sZGVyPzoge1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBpMThuIHN0cmluZ1xuICAgICAqL1xuICAgIGkxOG46IHN0cmluZztcbiAgfTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRpdGxlIGZvciB0aGUgZGlhbG9nIHRoYXQgd2lsbCBiZSBvcGVuZWRcbiAgICovXG4gIHRpdGxlPzoge1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBpMThuIHN0cmluZ1xuICAgICAqL1xuICAgIGkxOG46IHN0cmluZztcbiAgfTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29uZmlndXJhdGlvbiBmb3IgYSBjb250ZXh0IHdpdGggY3VzdG9tIHNlbGVjdGlvbiAoZS4gZy4geW91ciBvd24gZGlhbG9nKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFFkUGFnZUNvbnRleHRDb25maWdDdXN0b20gZXh0ZW5kcyBRZFBhZ2VDb250ZXh0Q29uZmlnQmFzZSB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29uZmlndXJlcyB0aGUgdHlwZSBvbiBob3cgdGhlIGNvbnRleHQgc2VsZWN0aW9uIGhhcHBlbnMuXG4gICAqL1xuICB0eXBlOiAnY3VzdG9tJztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEhhbmRsZXIgdG8gb3BlbiBhIGN1c3RvbSBkaWFsb2cgZm9yIHNlbGVjdGlvblxuICAgKi9cbiAgb3BlbjogKCkgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29uZmlndXJlcyB0aGUgY29udGV4dCB3aXRoIG9uZSBvZiB0aGUgYXZhaWxhYmxlIHR5cGVzXG4gKi9cbmV4cG9ydCB0eXBlIFFkUGFnZUNvbnRleHRDb25maWcgPSBRZFBhZ2VDb250ZXh0Q29uZmlnU2luZ2xlIHwgUWRQYWdlQ29udGV4dENvbmZpZ011bHRpIHwgUWRQYWdlQ29udGV4dENvbmZpZ0N1c3RvbTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQmFzZSBjb25maWd1cmF0aW9uIGZvciBRZFBhZ2UuXG4gKi9cbmludGVyZmFjZSBRZFBhZ2VDb25maWdCYXNlIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUaXRsZSBvZiB0aGUgcGFnZS5cbiAgICovXG4gIHRpdGxlOiBRZFBhZ2VUaXRsZTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEhpZGVzIGNvbnRleHRzIGZyb20gYmVpbmcgc2hvd24uIFRoZSBDb250ZXh0U2VydmljZSB3aWxsIHN0aWxsIHdvcmsgaW4gdGhlIGJhY2tncm91bmQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBoaWRlQ29udGV4dHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTGFiZWwgZm9yIHRoZSBtZW51IGJ1dHRvbiBvZiBjdXN0b20gYWN0aW9ucy5cbiAgICovXG4gIGN1c3RvbUFjdGlvbnNMYWJlbD86IFFkUGFnZUN1c3RvbUFjdGlvbnNMYWJlbDtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29uZmlndXJhdGlvbiBmb3IgdGhlIG92ZXJ2aWV3IHBhZ2UgdHlwZS5cbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSB0eXBlIG9mIHRoZSBwYWdlIG9iamVjdCBkYXRhXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUWRQYWdlQ29uZmlnT3ZlcnZpZXcgZXh0ZW5kcyBRZFBhZ2VDb25maWdCYXNlIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQYWdlIFR5cGVcbiAgICpcbiAgICogQGRlZmF1bHQgJ292ZXJ2aWV3J1xuICAgKi9cbiAgcGFnZVR5cGU/OiAnb3ZlcnZpZXcnOyAvLyBPcHRpb25hbCB0byBtYWtlIGl0IGRlZmF1bHRcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyYXRpb24gc3BlY2lmaWMgdG8gdGhlIG92ZXJ2aWV3IHBhZ2UgdHlwZS5cbiAgICovXG4gIHBhZ2VUeXBlQ29uZmlnPzogUWRQYWdlVHlwZU92ZXJ2aWV3Q29uZmlnO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGZvciB0aGUgY3JlYXRlIHBhZ2UgdHlwZS5cbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSB0eXBlIG9mIHRoZSBwYWdlIG9iamVjdCBkYXRhXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUWRQYWdlQ29uZmlnQ3JlYXRlPFQgZXh0ZW5kcyBvYmplY3QgPSBvYmplY3Q+IGV4dGVuZHMgUWRQYWdlQ29uZmlnQmFzZSB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUGFnZSBUeXBlXG4gICAqXG4gICAqIEBkZWZhdWx0ICdjcmVhdGUnXG4gICAqL1xuICBwYWdlVHlwZTogJ2NyZWF0ZSc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIHNwZWNpZmljIHRvIHRoZSBjcmVhdGUgcGFnZSB0eXBlLlxuICAgKi9cbiAgcGFnZVR5cGVDb25maWc/OiBRZFBhZ2VUeXBlQ3JlYXRlQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gcGxhY2VkIGluIHRoZSBoZWFkZXIgb2YgdGhlIHBhZ2UuIENvbmNlcm5zIGN1cnJlbnQgc2hvd24gb2JqZWN0LlxuICAgKi9cbiAgaGVhZGVyRmFjZXRzPzogUWRQYWdlSGVhZGVyRmFjZXRDb25maWc8VD5bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBRZFBhZ2VDb25maWdJbnNwZWN0PFQgZXh0ZW5kcyBvYmplY3QgPSBvYmplY3Q+IGV4dGVuZHMgUWRQYWdlQ29uZmlnQmFzZSB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUGFnZSBUeXBlXG4gICAqXG4gICAqIEBkZWZhdWx0ICdpbnNwZWN0J1xuICAgKi9cbiAgcGFnZVR5cGU6ICdpbnNwZWN0JztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyYXRpb24gc3BlY2lmaWMgdG8gdGhlIGluc3BlY3QgcGFnZSB0eXBlLlxuICAgKi9cbiAgcGFnZVR5cGVDb25maWc/OiBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIHBsYWNlZCBpbiB0aGUgaGVhZGVyIG9mIHRoZSBwYWdlLiBDb25jZXJucyBjdXJyZW50IHNob3duIG9iamVjdC5cbiAgICovXG4gIGhlYWRlckZhY2V0cz86IFFkUGFnZUhlYWRlckZhY2V0Q29uZmlnPFQ+W107XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGZhY2V0cyBpbiBoZWFkZXIgc2hvdWxkIGJlIGNvbGxhcHNlZCBhbmQgY3VzdG9tIGFjdGlvbnMgYXJlIGluIGEgbWVudS4gVGhpcyBtb2RlIGlzIGRlc2lnbmVkIGZvciB0b3VjaCBkZXZpY2VzIGFuZCBtb2JpbGUgcGhvbmVzIG9ubHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBhZGFwdGl2ZU1vZGU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFFkUGFnZUNvbmZpZ0N1c3RvbTxUIGV4dGVuZHMgb2JqZWN0ID0gb2JqZWN0PiBleHRlbmRzIFFkUGFnZUNvbmZpZ0Jhc2Uge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFBhZ2UgVHlwZVxuICAgKlxuICAgKiBAZGVmYXVsdCAnY3VzdG9tJ1xuICAgKi9cbiAgcGFnZVR5cGU6ICdjdXN0b20nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29uZmlndXJhdGlvbiBzcGVjaWZpYyB0byB0aGUgY3VzdG9tIHBhZ2UgdHlwZS5cbiAgICovXG4gIHBhZ2VUeXBlQ29uZmlnPzogUWRQYWdlVHlwZUN1c3RvbUNvbmZpZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIHBsYWNlZCBpbiB0aGUgaGVhZGVyIG9mIHRoZSBwYWdlLiBDb25jZXJucyBjdXJyZW50IHNob3duIG9iamVjdC5cbiAgICovXG4gIGhlYWRlckZhY2V0cz86IFFkUGFnZUhlYWRlckZhY2V0Q29uZmlnPFQ+W107XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGZhY2V0cyBpbiBoZWFkZXIgc2hvdWxkIGJlIGNvbGxhcHNlZCBhbmQgY3VzdG9tIGFjdGlvbnMgYXJlIGluIGEgbWVudS4gVGhpcyBtb2RlIGlzIGRlc2lnbmVkIGZvciB0b3VjaCBkZXZpY2VzIGFuZCBtb2JpbGUgcGhvbmVzIG9ubHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBhZGFwdGl2ZU1vZGU/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyZXMgdGhlIG92ZXJ2aWV3IHBhZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRZFBhZ2VUeXBlT3ZlcnZpZXdDb25maWcge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEN1c3RvbSBhY3Rpb25zIGZvciB0aGUgaGVhZGVyLlxuICAgKiBZb3UgY2FuIGRlZmluZSBhIGxhYmVsLCBhIGhhbmRsZXIsIGFuZCB5b3UgY2FuIGRpc2FibGUgb3IgaGlkZSB0aGUgYWN0aW9uLlxuICAgKlxuICAgKiAqIElmIHRoZXJlIGV4aXN0cyBtb3JlIHRoYW4gMSBDdXN0b20gQWN0aW9uLCBhIFFkTWVudUJ1dHRvbiB3aWxsIGJlIGRpc3BsYXllZC5cbiAgICpcbiAgICogKiBUaGVzZSBhY3Rpb25zIGFyZSBub3QgaW50ZW5kZWQgdG8gaW5mbHVlbmNlIHRoZSBjb3JlIHByb2Nlc3MgZmxvdyBvciBtYW5pcHVsYXRlIHRoZSBvYmplY3QgZGlyZWN0bHkuIEluc3RlYWQsIHRoZXkgc2hvdWxkIGJlIHVzZWQgZm9yIHNpZGUgZWZmZWN0cywgc3VjaCBhcyB0cmlnZ2VyaW5nIG5vdGlmaWNhdGlvbnMsIHVwZGF0aW5nIGV4dGVybmFsIHNlcnZpY2VzLCBvciBleGVjdXRpbmcgc3VwcGxlbWVudGFyeSB0YXNrcyB0aGF0IGRvIG5vdCBhbHRlciB0aGUgbWFpbiBzdGF0ZSBvZiB0aGUgb2JqZWN0LlxuICAgKi9cbiAgY3VzdG9tQWN0aW9ucz86IFFkTWVudUJ1dHRvbkFjdGlvbkNvbmZpZ1tdO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmVzIHRoZSBjcmVhdGUgcGFnZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRZFBhZ2VUeXBlQ3JlYXRlQ29uZmlnIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGZvciB0aGUgc2F2ZSBkcmFmdCBhY3Rpb24uXG4gICAqL1xuICBzYXZlRHJhZnQ/OiBRZFBhZ2VTYXZlRHJhZnRBY3Rpb247XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGZvciB0aGUgY2FuY2VsIGJ1dHRvbi5cbiAgICovXG4gIGNhbmNlbDogUWRQYWdlQ2FuY2VsQWN0aW9uO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29uZmlndXJhdGlvbiBmb3IgdGhlIHN1Ym1pdCBidXR0b24uXG4gICAqL1xuICBzdWJtaXQ6IFFkUGFnZUNyZWF0ZVN1Ym1pdEFjdGlvbjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEN1c3RvbSBhY3Rpb25zIGZvciB0aGUgaGVhZGVyLlxuICAgKiBZb3UgY2FuIGRlZmluZSBhIGxhYmVsLCBhIGhhbmRsZXIsIGFuZCB5b3UgY2FuIGRpc2FibGUgb3IgaGlkZSB0aGUgYWN0aW9uLlxuICAgKlxuICAgKiAqIElmIHRoZXJlIGV4aXN0cyBtb3JlIHRoYW4gMSBDdXN0b20gQWN0aW9uLCBhIFFkTWVudUJ1dHRvbiB3aWxsIGJlIGRpc3BsYXllZC5cbiAgICpcbiAgICogKiBUaGVzZSBhY3Rpb25zIGFyZSBub3QgaW50ZW5kZWQgdG8gaW5mbHVlbmNlIHRoZSBjb3JlIHByb2Nlc3MgZmxvdyBvciBtYW5pcHVsYXRlIHRoZSBvYmplY3QgZGlyZWN0bHkuIEluc3RlYWQsIHRoZXkgc2hvdWxkIGJlIHVzZWQgZm9yIHNpZGUgZWZmZWN0cywgc3VjaCBhcyB0cmlnZ2VyaW5nIG5vdGlmaWNhdGlvbnMsIHVwZGF0aW5nIGV4dGVybmFsIHNlcnZpY2VzLCBvciBleGVjdXRpbmcgc3VwcGxlbWVudGFyeSB0YXNrcyB0aGF0IGRvIG5vdCBhbHRlciB0aGUgbWFpbiBzdGF0ZSBvZiB0aGUgb2JqZWN0LlxuICAgKi9cbiAgY3VzdG9tQWN0aW9ucz86IFFkTWVudUJ1dHRvbkFjdGlvbkNvbmZpZ1tdO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmVzIHRoZSBpbnNwZWN0IHBhZ2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUWRQYWdlVHlwZUluc3BlY3RDb25maWcge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE9wZXJhdGlvbiBtb2RlIGZvciB0aGUgcGFnZS5cbiAgICpcbiAgICogKiBUaGlzIHByb3BlcnR5IGRldGVybWluZXMgdGhlIG1vZGUgaW4gd2hpY2ggdGhlIHBhZ2Ugb3BlcmF0ZXMuIEl0IGNhbiBiZSBlaXRoZXIgJ3ZpZXcnIG9yICdlZGl0Jy5cbiAgICpcbiAgICogKiAqKnZpZXcqKjogVGhlIHBhZ2UgaXMgaW4gcmVhZC1vbmx5IG1vZGUuXG4gICAqICogKiplZGl0Kio6IFRoZSBwYWdlIGFsbG93cyBtb2RpZmljYXRpb25zLlxuICAgKi9cbiAgb3BlcmF0aW9uTW9kZT86IFFkSW5zcGVjdE9wZXJhdGlvbk1vZGU7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBTcGVjaWZpZXMgd2hldGhlciB0aGUgdXNlciBjYW4gZWRpdCB0aGUgb2JqZWN0IG9yIG5vdC5cbiAgICovXG4gIGhpZGVFZGl0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBlZGl0IGFjdGlvbi5cbiAgICovXG4gIGVkaXQ/OiBRZFBhZ2VFZGl0QWN0aW9uO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29uZmlndXJhdGlvbiBmb3IgdGhlIHNhdmUgYWN0aW9uLlxuICAgKi9cbiAgc2F2ZT86IFFkUGFnZVNhdmVBY3Rpb247XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGZvciB0aGUgY2FuY2VsIGFjdGlvbi5cbiAgICovXG4gIGNhbmNlbDogUWRQYWdlQ2FuY2VsQWN0aW9uO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29uZmlndXJhdGlvbiBmb3IgdGhlIGRlbGV0ZSBhY3Rpb24uXG4gICAqL1xuICBkZWxldGU/OiBRZFBhZ2VEZWxldGVBY3Rpb247XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGZvciB0aGUgYXJjaGl2ZSBhY3Rpb24uXG4gICAqL1xuICBhcmNoaXZlPzogUWRQYWdlQXJjaGl2ZUFjdGlvbjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBzdWJtaXQgYWN0aW9uLlxuICAgKi9cbiAgc3VibWl0PzogUWRQYWdlU3VibWl0QWN0aW9uO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3VzdG9tIGFjdGlvbnMgZm9yIHRoZSBoZWFkZXIuXG4gICAqIFlvdSBjYW4gZGVmaW5lIGEgbGFiZWwsIGEgaGFuZGxlciwgYW5kIHlvdSBjYW4gZGlzYWJsZSBvciBoaWRlIHRoZSBhY3Rpb24uXG4gICAqXG4gICAqICogSWYgdGhlcmUgZXhpc3RzIG1vcmUgdGhhbiAxIEN1c3RvbSBBY3Rpb24sIGEgUWRNZW51QnV0dG9uIHdpbGwgYmUgZGlzcGxheWVkLlxuICAgKlxuICAgKiAqIEluIHRoZSBcIkluc3BlY3RcIiBwYWdlIHR5cGUsIHlvdSBjYW4gYXNzaWduIGN1c3RvbSBhY3Rpb25zIHRvIHRoZSBvcGVyYXRpb24gbW9kZXMgXCJ2aWV3XCIgb3IgXCJlZGl0LlwiIEJ5IGRlZmF1bHQsIHRoZSBhY3Rpb24gaXMgYWN0aXZlIGluIGJvdGggbW9kZXMuXG4gICAqXG4gICAqICogVGhlc2UgYWN0aW9ucyBhcmUgbm90IGludGVuZGVkIHRvIGluZmx1ZW5jZSB0aGUgY29yZSBwcm9jZXNzIGZsb3cgb3IgbWFuaXB1bGF0ZSB0aGUgb2JqZWN0IGRpcmVjdGx5LiBJbnN0ZWFkLCB0aGV5IHNob3VsZCBiZSB1c2VkIGZvciBzaWRlIGVmZmVjdHMsIHN1Y2ggYXMgdHJpZ2dlcmluZyBub3RpZmljYXRpb25zLCB1cGRhdGluZyBleHRlcm5hbCBzZXJ2aWNlcywgb3IgZXhlY3V0aW5nIHN1cHBsZW1lbnRhcnkgdGFza3MgdGhhdCBkbyBub3QgYWx0ZXIgdGhlIG1haW4gc3RhdGUgb2YgdGhlIG9iamVjdC5cbiAgICovXG4gIGN1c3RvbUFjdGlvbnM/OiAoUWRNZW51QnV0dG9uQWN0aW9uQ29uZmlnICYgeyBvcGVyYXRpb25Nb2RlPzogUWRJbnNwZWN0T3BlcmF0aW9uTW9kZSB9KVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFFkUGFnZVR5cGVDdXN0b21Db25maWcge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEN1c3RvbSBhY3Rpb25zIGZvciB0aGUgaGVhZGVyLlxuICAgKiBZb3UgY2FuIGRlZmluZSBhIGxhYmVsLCBhIGhhbmRsZXIsIGFuZCB5b3UgY2FuIGRpc2FibGUgb3IgaGlkZSB0aGUgYWN0aW9uLlxuICAgKlxuICAgKiAqIElmIHRoZXJlIGV4aXN0cyBtb3JlIHRoYW4gMSBDdXN0b20gQWN0aW9uLCBhIFFkTWVudUJ1dHRvbiB3aWxsIGJlIGRpc3BsYXllZC5cbiAgICpcbiAgICogKiBUaGVzZSBhY3Rpb25zIGFyZSBub3QgaW50ZW5kZWQgdG8gaW5mbHVlbmNlIHRoZSBjb3JlIHByb2Nlc3MgZmxvdyBvciBtYW5pcHVsYXRlIHRoZSBvYmplY3QgZGlyZWN0bHkuIEluc3RlYWQsIHRoZXkgc2hvdWxkIGJlIHVzZWQgZm9yIHNpZGUgZWZmZWN0cywgc3VjaCBhcyB0cmlnZ2VyaW5nIG5vdGlmaWNhdGlvbnMsIHVwZGF0aW5nIGV4dGVybmFsIHNlcnZpY2VzLCBvciBleGVjdXRpbmcgc3VwcGxlbWVudGFyeSB0YXNrcyB0aGF0IGRvIG5vdCBhbHRlciB0aGUgbWFpbiBzdGF0ZSBvZiB0aGUgb2JqZWN0LlxuICAgKi9cbiAgY3VzdG9tQWN0aW9ucz86IFFkTWVudUJ1dHRvbkFjdGlvbkNvbmZpZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFFkUGFnZVRpdGxlIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEZWZpbmVzIHRoZSB0cmFuc2xhdGlvbiBrZXlcbiAgICpcbiAgICogKiBAZXhhbXBsZSB7IGkxOG46IFwiaTE4bi5vdmVydmlldy50aXRsZVwifVxuICAgKi9cbiAgaTE4bjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGZvciB0aGUgY3VzdG9tIGFjdGlvbnMgbGFiZWwsIHVzZWQgd2hlbiBtdWx0aXBsZSBjdXN0b20gYWN0aW9ucyBleGlzdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRZFBhZ2VDdXN0b21BY3Rpb25zTGFiZWwge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIExhYmVsIGZvciB0aGUgbWVudSBidXR0b24gb2YgY3VzdG9tIGFjdGlvbnMsIHVzZWQgZm9yIHRyYW5zbGF0aW9uLlxuICAgKlxuICAgKiAqIElmIG5vIGN1c3RvbSB0cmFuc2xhdGlvbiBrZXkgaXMgcHJvdmlkZWQsIGEgc3RhbmRhcmQgbGFiZWwgd2lsbCBiZSB1c2VkIGJ5IGRlZmF1bHQuXG4gICAqXG4gICAqICogVGhpcyBsYWJlbCBiZWNvbWVzIHZpc2libGUgaWYgbW9yZSB0aGFuIG9uZSBjdXN0b20gYWN0aW9uIGlzIGRlZmluZWQsIGFzIHRoZSBhY3Rpb25zIHdpbGwgYmUgZ3JvdXBlZCB1bmRlciBhIFFkTWVudUJ1dHRvbiB0aGF0IGRpc3BsYXlzIHRoaXMgbGFiZWwuXG4gICAqL1xuICBpMThuOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE9wZXJhdGlvbiBtb2RlcyBmb3IgdGhlIGluc3BlY3QgcGFnZS5cbiAqXG4gKiBAZGVmYXVsdCAndmlldydcbiAqL1xuZXhwb3J0IHR5cGUgUWRJbnNwZWN0T3BlcmF0aW9uTW9kZSA9ICd2aWV3JyB8ICdlZGl0JztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciB0aGUgc2F2ZSBhY3Rpb24sIGluY2x1ZGluZyBvcHRpb25hbCB2YWxpZGF0aW9uIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUWRQYWdlU2F2ZUFjdGlvbiB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTGFiZWwgZm9yIHRoZSBzYXZlIGFjdGlvbiwgdXNlZCBmb3IgdHJhbnNsYXRpb24uXG4gICAqXG4gICAqICogSWYgbm8gY3VzdG9tIHRyYW5zbGF0aW9uIGtleSBpcyBwcm92aWRlZCwgYSBzdGFuZGFyZCBsYWJlbCB3aWxsIGJlIHVzZWQgYnkgZGVmYXVsdC5cbiAgICovXG4gIGxhYmVsPzogeyBpMThuOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEhhbmRsZXIgZnVuY3Rpb24gdGhhdCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgc2F2ZSBhY3Rpb24gaXMgZXhlY3V0ZWQuXG4gICAqL1xuICBoYW5kbGVyOiAoZm9ybVZhbHVlcz86IGFueSkgPT4gdm9pZDtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHZhbGlkYXRpb24gZmxhZywgZGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIGZvcm0gdmFsaWRhdGlvbiBpcyByZXF1aXJlZCBiZWZvcmUgc2F2aW5nIGFuZCBlbnN1cmVzIHRoYXQgY2hhbmdlcyBtdXN0IGJlIHByZXNlbnQgaW4gdGhlIGZvcm0gYmVmb3JlIHNhdmluZy5cbiAgICpcbiAgICogKiBCeSBkZWZhdWx0LCB0aGlzIGZsYWcgaXMgc2V0IHRvIHRydWUsIG1lYW5pbmcgdGhhdCB2YWxpZGF0aW9uIGlzIGVuZm9yY2VkLCBhbmQgdGhlIGZvcm0gd2lsbCBvbmx5IHNhdmUgaWYgdGhlcmUgYXJlIGNoYW5nZXMuXG4gICAqXG4gICAqICogSWYgc2V0IHRvIGBmYWxzZWAsIHRoZSBmb3JtIHdpbGwgYmUgc2F2ZWQgd2l0aG91dCB2YWxpZGF0aW9uIGNoZWNrcywgYnV0IGNoYW5nZXMgbXVzdCBzdGlsbCBiZSBwcmVzZW50IHRvIHByb2NlZWQgd2l0aCB0aGUgc2F2ZSBvcGVyYXRpb24uXG4gICAqXG4gICAqICogVGhpcyBmbGFnIGlzIHVzZWZ1bCBpbiBzY2VuYXJpb3Mgd2hlcmUgZm9ybSB2YWxpZGF0aW9uIGlzIG5vdCBuZWVkZWQgb3Igc2hvdWxkIGJlIGJ5cGFzc2VkLCBidXQgaXQgZW5zdXJlcyB0aGF0IG9ubHkgbW9kaWZpZWQgZm9ybXMgY2FuIGJlIHNhdmVkLlxuICAgKi9cbiAgaGFzVmFsaWRhdGlvbj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3IgdGhlIHNhZmUgZHJhZnQgYWN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFFkUGFnZVNhdmVEcmFmdEFjdGlvbiB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTGFiZWwgZm9yIHRoZSBzYXZlIGRyYWZ0IGFjdGlvbiwgdXNlZCBmb3IgdHJhbnNsYXRpb24uXG4gICAqXG4gICAqICogSWYgbm8gY3VzdG9tIHRyYW5zbGF0aW9uIGtleSBpcyBwcm92aWRlZCwgYSBzdGFuZGFyZCBsYWJlbCB3aWxsIGJlIHVzZWQgYnkgZGVmYXVsdC5cbiAgICovXG4gIGxhYmVsPzogeyBpMThuOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEhhbmRsZXIgZnVuY3Rpb24gdGhhdCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgc2F2ZSBkcmFmdCBhY3Rpb24gaXMgZXhlY3V0ZWQuXG4gICAqL1xuICBoYW5kbGVyOiAoKSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIHRoZSBjYW5jZWwgYWN0aW9uLCBpbmNsdWRpbmcgYW4gb3B0aW9uYWwgY29uZmlybWF0aW9uIG1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUWRQYWdlQ2FuY2VsQWN0aW9uIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMYWJlbCBmb3IgdGhlIGNhbmNlbCBhY3Rpb24sIHVzZWQgZm9yIHRyYW5zbGF0aW9uLlxuICAgKlxuICAgKiAqIElmIG5vIGN1c3RvbSB0cmFuc2xhdGlvbiBrZXkgaXMgcHJvdmlkZWQsIGEgc3RhbmRhcmQgbGFiZWwgd2lsbCBiZSB1c2VkIGJ5IGRlZmF1bHQuXG4gICAqL1xuICBsYWJlbD86IHsgaTE4bjogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBIYW5kbGVyIGZ1bmN0aW9uIHRoYXQgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIGNhbmNlbCBhY3Rpb24gaXMgZXhlY3V0ZWQuXG4gICAqL1xuICBoYW5kbGVyOiAoZm9ybVZhbHVlcz86IGFueSkgPT4gdm9pZDtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEFuIG9wdGlvbmFsIGNvbmZpcm1hdGlvbiBtZXNzYWdlIGRpc3BsYXllZCBpbiBhIGRpYWxvZyB3aGVuIHRoZSB1c2VyIGF0dGVtcHRzIHRvIGNhbmNlbCB0aGUgb3BlcmF0aW9uLCB3YXJuaW5nIHRoYXQgYWxsIGNoYW5nZXMgd2lsbCBiZSBkaXNjYXJkZWQuXG4gICAqIElmIG5vIGN1c3RvbSBtZXNzYWdlIGlzIHByb3ZpZGVkLCBhIHN0YW5kYXJkIG1lc3NhZ2Ugd2lsbCBiZSBzaG93biBieSBkZWZhdWx0LlxuICAgKlxuICAgKiAqIFRoZSBjYW5jZWxsYXRpb24gcHJvY2VzcyBjaGVja3Mgd2hldGhlciB0aGVyZSBhcmUgdW5zYXZlZCBjaGFuZ2VzIGluIHRoZSBmb3JtLiBJZiB0aGVyZSBhcmUgY2hhbmdlcywgdGhlIGRpYWxvZyB3aWxsIGFwcGVhci5cbiAgICpcbiAgICogKiBJZiBubyBjaGFuZ2VzIGFyZSBkZXRlY3RlZCwgdGhlIGNhbmNlbGxhdGlvbiBwcm9jZWVkcyB3aXRob3V0IHNob3dpbmcgdGhlIGNvbmZpcm1hdGlvbiBkaWFsb2cuXG4gICAqL1xuICBjb25maXJtYXRpb25NZXNzYWdlPzogeyBpMThuOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciB0aGUgc3VibWl0IGFjdGlvbiBvbiBjcmVhdGUgcGFnZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUWRQYWdlQ3JlYXRlU3VibWl0QWN0aW9uIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMYWJlbCBmb3IgdGhlIHN1Ym1pdCBhY3Rpb24sIHVzZWQgZm9yIHRyYW5zbGF0aW9uLlxuICAgKlxuICAgKiAqIElmIG5vIGN1c3RvbSB0cmFuc2xhdGlvbiBrZXkgaXMgcHJvdmlkZWQsIGEgc3RhbmRhcmQgbGFiZWwgd2lsbCBiZSB1c2VkIGJ5IGRlZmF1bHQuXG4gICAqL1xuICBsYWJlbD86IHsgaTE4bjogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBIYW5kbGVyIGZ1bmN0aW9uIHRoYXQgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHN1Ym1pdCBhY3Rpb24gaXMgZXhlY3V0ZWQuXG4gICAqL1xuICBoYW5kbGVyOiAoZm9ybVZhbHVlcz86IGFueSkgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciB0aGUgc3VibWl0IGFjdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRZFBhZ2VTdWJtaXRBY3Rpb24ge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIExhYmVsIGZvciB0aGUgc3VibWl0IGFjdGlvbiwgdXNlZCBmb3IgdHJhbnNsYXRpb24uXG4gICAqXG4gICAqICogSWYgbm8gY3VzdG9tIHRyYW5zbGF0aW9uIGtleSBpcyBwcm92aWRlZCwgYSBzdGFuZGFyZCBsYWJlbCB3aWxsIGJlIHVzZWQgYnkgZGVmYXVsdC5cbiAgICovXG4gIGxhYmVsPzogeyBpMThuOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEhhbmRsZXIgZnVuY3Rpb24gdGhhdCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgc3VibWl0IGFjdGlvbiBpcyBleGVjdXRlZC5cbiAgICovXG4gIGhhbmRsZXI6IChmb3JtVmFsdWVzPzogYW55KSA9PiB2b2lkO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQnkgZGVmYXVsdCwgdGhlIHZpc2liaWxpdHkgb2YgdGhlIHN1Ym1pdCBidXR0b24gZGVwZW5kcyBvbiB0aGUgcGFnZSB0eXBlIGFuZCB0aGUgb3BlcmF0aW9uIG1vZGUuXG4gICAqIFRvIGNvbXBsZXRlbHkgaGlkZSB0aGUgc3VibWl0IGJ1dHRvbiwgeW91IGNhbiBzZXQgdGhpcyBpc0hpZGRlbiBmbGFnLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgaXNIaWRkZW4/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIHRoZSBlZGl0IGFjdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRZFBhZ2VFZGl0QWN0aW9uIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMYWJlbCBmb3IgdGhlIGVkaXQgYWN0aW9uLCB1c2VkIGZvciB0cmFuc2xhdGlvbi5cbiAgICpcbiAgICogKiBJZiBubyBjdXN0b20gdHJhbnNsYXRpb24ga2V5IGlzIHByb3ZpZGVkLCBhIHN0YW5kYXJkIGxhYmVsIHdpbGwgYmUgdXNlZCBieSBkZWZhdWx0LlxuICAgKi9cbiAgbGFiZWw/OiB7IGkxOG46IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSGFuZGxlciBmdW5jdGlvbiB0aGF0IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBlZGl0IGFjdGlvbiBpcyBleGVjdXRlZC5cbiAgICovXG4gIGhhbmRsZXI6IChmb3JtVmFsdWVzPzogYW55KSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIHRoZSBkZWxldGUgYWN0aW9uLlxuICpcbiAqICogVGhpcyBhY3Rpb24gaXMgcmVwcmVzZW50ZWQgYXMgYW4gaWNvbiwgc28gaXQgZG9lcyBub3QgcmVxdWlyZSBhIGxhYmVsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFFkUGFnZURlbGV0ZUFjdGlvbiB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSGFuZGxlciBmdW5jdGlvbiB0aGF0IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBkZWxldGUgYWN0aW9uIGlzIGV4ZWN1dGVkLlxuICAgKi9cbiAgaGFuZGxlcjogKGZvcm1WYWx1ZXM/OiBhbnkpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3IgdGhlIGFyY2hpdmUgYWN0aW9uLlxuICpcbiAqICogVGhpcyBhY3Rpb24gaXMgcmVwcmVzZW50ZWQgYXMgYW4gaWNvbiwgc28gaXQgZG9lcyBub3QgcmVxdWlyZSBhIGxhYmVsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFFkUGFnZUFyY2hpdmVBY3Rpb24ge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEhhbmRsZXIgZnVuY3Rpb24gdGhhdCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgYXJjaGl2ZSBhY3Rpb24gaXMgZXhlY3V0ZWQuXG4gICAqL1xuICBoYW5kbGVyOiAoZm9ybVZhbHVlcz86IGFueSkgPT4gdm9pZDtcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1jb25maWcuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL3BhZ2UvbW9kZWwvcGFnZS1jb25maWcuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFFkTWVudUJ1dHRvbkFjdGlvbkNvbmZpZyB9IGZyb20gJy4uLy4uL2J1dHRvbi9tb2RlbC9idXR0b24tY29uZmlnJztcbmltcG9ydCB7IFFkUGFnZUhlYWRlckZhY2V0Q29uZmlnIH0gZnJvbSAnLi9wYWdlLWhlYWRlci1mYWNldC5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIG9mIFFkUGFnZS5cbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSB0eXBlIG9mIHRoZSBwYWdlIG9iamVjdCBkYXRhXG4gKi9cbmV4cG9ydCB0eXBlIFFkUGFnZUNvbmZpZzxUIGV4dGVuZHMgb2JqZWN0ID0gb2JqZWN0PiA9XG4gIHwgUWRQYWdlQ29uZmlnT3ZlcnZpZXdcbiAgfCBRZFBhZ2VDb25maWdDcmVhdGU8VD5cbiAgfCBRZFBhZ2VDb25maWdJbnNwZWN0PFQ+XG4gIHwgUWRQYWdlQ29uZmlnQ3VzdG9tPFQ+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFFkUGFnZVNlbGVjdGVkQ29udGV4dCB7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGxhYmVsOiB7XG4gICAgaTE4bjogc3RyaW5nO1xuICB9O1xufVxuXG5pbnRlcmZhY2UgUWRQYWdlQ29udGV4dENvbmZpZ0Jhc2Uge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIERlc2NyaXB0aW9uIGZvciB0aGUgc3BlY2lmaWMgaGVhZGVyIGZhY2V0XG4gICAqL1xuICBsYWJlbDoge1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBpMThuIHN0cmluZyBmb3IgdGhlIGRlc2NyaXB0aW9uLCB1c2VkIGZvciB0cmFuc2xhdGlvbi5cbiAgICAgKi9cbiAgICBpMThuOiBzdHJpbmc7XG4gIH07XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBBbGxvd3MgdG8gaWRlbnRpZnkgdGhlIGNvbnRleHRcbiAgICovXG4gIGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZWdpc3RlciBzb21lIGhhbmRsZXIgdGhhdCBpcyBleGVjdXRlZCB3aGVuIHRoZSBzZWxlY3Rpb24gY2hhbmdlcy5cbiAgICovXG4gIGNoYW5nZWQ/OiAoc2VsZWN0aW9uOiBRZFBhZ2VTZWxlY3RlZENvbnRleHQgfCBRZFBhZ2VTZWxlY3RlZENvbnRleHRbXSB8IG51bGwpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyYXRpb24gZm9yIGEgY29udGV4dCB3aXRoIHNpbmdsZSBzZWxlY3Rpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRZFBhZ2VDb250ZXh0Q29uZmlnU2luZ2xlIGV4dGVuZHMgUWRQYWdlQ29udGV4dENvbmZpZ0Jhc2Uge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyZXMgdGhlIHR5cGUgb24gaG93IHRoZSBjb250ZXh0IHNlbGVjdGlvbiBoYXBwZW5zLlxuICAgKi9cbiAgdHlwZTogJ3NpbmdsZSc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBBdmFpbGFibGUgb3B0aW9ucyBmb3Igc2VsZWN0aW9uLlxuICAgKi9cbiAgb3B0aW9uczogUWRQYWdlU2VsZWN0ZWRDb250ZXh0W107XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmVzIHdoZXRoZXIgdGhlIGNvbnRleHQgb3B0aW9ucyBhcmUgc2VhcmNoYWJsZSBmb3IgdGhlIHVzZXIuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBoYXNTZWFyY2g/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUGxhY2Vob2xkZXIgZm9yIHNlYXJjaFxuICAgKi9cbiAgc2VhcmNoUGxhY2Vob2xkZXI/OiB7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIGkxOG4gc3RyaW5nXG4gICAgICovXG4gICAgaTE4bjogc3RyaW5nO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVGl0bGUgZm9yIHRoZSBkaWFsb2cgdGhhdCB3aWxsIGJlIG9wZW5lZFxuICAgKi9cbiAgdGl0bGU/OiB7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIGkxOG4gc3RyaW5nXG4gICAgICovXG4gICAgaTE4bjogc3RyaW5nO1xuICB9O1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGZvciBhIGNvbnRleHQgd2l0aCBtdWx0aSBzZWxlY3Rpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRZFBhZ2VDb250ZXh0Q29uZmlnTXVsdGkgZXh0ZW5kcyBRZFBhZ2VDb250ZXh0Q29uZmlnQmFzZSB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29uZmlndXJlcyB0aGUgdHlwZSBvbiBob3cgdGhlIGNvbnRleHQgc2VsZWN0aW9uIGhhcHBlbnMuXG4gICAqL1xuICB0eXBlOiAnbXVsdGknO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQXZhaWxhYmxlIG9wdGlvbnMgZm9yIHNlbGVjdGlvbi5cbiAgICovXG4gIG9wdGlvbnM6IFFkUGFnZVNlbGVjdGVkQ29udGV4dFtdO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29uZmlndXJlcyB3aGV0aGVyIHRoZSBjb250ZXh0IG9wdGlvbnMgYXJlIHNlYXJjaGFibGUgZm9yIHRoZSB1c2VyLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgaGFzU2VhcmNoPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFBsYWNlaG9sZGVyIGZvciBzZWFyY2hcblxuICAgKi9cbiAgc2VhcmNoUGxhY2Vob2xkZXI/OiB7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIGkxOG4gc3RyaW5nXG4gICAgICovXG4gICAgaTE4bjogc3RyaW5nO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVGl0bGUgZm9yIHRoZSBkaWFsb2cgdGhhdCB3aWxsIGJlIG9wZW5lZFxuICAgKi9cbiAgdGl0bGU/OiB7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIGkxOG4gc3RyaW5nXG4gICAgICovXG4gICAgaTE4bjogc3RyaW5nO1xuICB9O1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGZvciBhIGNvbnRleHQgd2l0aCBjdXN0b20gc2VsZWN0aW9uIChlLiBnLiB5b3VyIG93biBkaWFsb2cpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUWRQYWdlQ29udGV4dENvbmZpZ0N1c3RvbSBleHRlbmRzIFFkUGFnZUNvbnRleHRDb25maWdCYXNlIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmVzIHRoZSB0eXBlIG9uIGhvdyB0aGUgY29udGV4dCBzZWxlY3Rpb24gaGFwcGVucy5cbiAgICovXG4gIHR5cGU6ICdjdXN0b20nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSGFuZGxlciB0byBvcGVuIGEgY3VzdG9tIGRpYWxvZyBmb3Igc2VsZWN0aW9uXG4gICAqL1xuICBvcGVuOiAoKSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmVzIHRoZSBjb250ZXh0IHdpdGggb25lIG9mIHRoZSBhdmFpbGFibGUgdHlwZXNcbiAqL1xuZXhwb3J0IHR5cGUgUWRQYWdlQ29udGV4dENvbmZpZyA9IFFkUGFnZUNvbnRleHRDb25maWdTaW5nbGUgfCBRZFBhZ2VDb250ZXh0Q29uZmlnTXVsdGkgfCBRZFBhZ2VDb250ZXh0Q29uZmlnQ3VzdG9tO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBCYXNlIGNvbmZpZ3VyYXRpb24gZm9yIFFkUGFnZS5cbiAqL1xuaW50ZXJmYWNlIFFkUGFnZUNvbmZpZ0Jhc2Uge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRpdGxlIG9mIHRoZSBwYWdlLlxuICAgKi9cbiAgdGl0bGU6IFFkUGFnZVRpdGxlO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSGlkZXMgY29udGV4dHMgZnJvbSBiZWluZyBzaG93bi4gVGhlIENvbnRleHRTZXJ2aWNlIHdpbGwgc3RpbGwgd29yayBpbiB0aGUgYmFja2dyb3VuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGhpZGVDb250ZXh0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMYWJlbCBmb3IgdGhlIG1lbnUgYnV0dG9uIG9mIGN1c3RvbSBhY3Rpb25zLlxuICAgKi9cbiAgY3VzdG9tQWN0aW9uc0xhYmVsPzogUWRQYWdlQ3VzdG9tQWN0aW9uc0xhYmVsO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGZvciB0aGUgb3ZlcnZpZXcgcGFnZSB0eXBlLlxuICpcbiAqIEB0ZW1wbGF0ZSBUIC0gVGhlIHR5cGUgb2YgdGhlIHBhZ2Ugb2JqZWN0IGRhdGFcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRZFBhZ2VDb25maWdPdmVydmlldyBleHRlbmRzIFFkUGFnZUNvbmZpZ0Jhc2Uge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFBhZ2UgVHlwZVxuICAgKlxuICAgKiBAZGVmYXVsdCAnb3ZlcnZpZXcnXG4gICAqL1xuICBwYWdlVHlwZT86ICdvdmVydmlldyc7IC8vIE9wdGlvbmFsIHRvIG1ha2UgaXQgZGVmYXVsdFxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29uZmlndXJhdGlvbiBzcGVjaWZpYyB0byB0aGUgb3ZlcnZpZXcgcGFnZSB0eXBlLlxuICAgKi9cbiAgcGFnZVR5cGVDb25maWc/OiBRZFBhZ2VUeXBlT3ZlcnZpZXdDb25maWc7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBjcmVhdGUgcGFnZSB0eXBlLlxuICpcbiAqIEB0ZW1wbGF0ZSBUIC0gVGhlIHR5cGUgb2YgdGhlIHBhZ2Ugb2JqZWN0IGRhdGFcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRZFBhZ2VDb25maWdDcmVhdGU8VCBleHRlbmRzIG9iamVjdCA9IG9iamVjdD4gZXh0ZW5kcyBRZFBhZ2VDb25maWdCYXNlIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQYWdlIFR5cGVcbiAgICpcbiAgICogQGRlZmF1bHQgJ2NyZWF0ZSdcbiAgICovXG4gIHBhZ2VUeXBlOiAnY3JlYXRlJztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyYXRpb24gc3BlY2lmaWMgdG8gdGhlIGNyZWF0ZSBwYWdlIHR5cGUuXG4gICAqL1xuICBwYWdlVHlwZUNvbmZpZz86IFFkUGFnZVR5cGVDcmVhdGVDb25maWc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBJbmZvcm1hdGlvbiBwbGFjZWQgaW4gdGhlIGhlYWRlciBvZiB0aGUgcGFnZS4gQ29uY2VybnMgY3VycmVudCBzaG93biBvYmplY3QuXG4gICAqL1xuICBoZWFkZXJGYWNldHM/OiBRZFBhZ2VIZWFkZXJGYWNldENvbmZpZzxUPltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFFkUGFnZUNvbmZpZ0luc3BlY3Q8VCBleHRlbmRzIG9iamVjdCA9IG9iamVjdD4gZXh0ZW5kcyBRZFBhZ2VDb25maWdCYXNlIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQYWdlIFR5cGVcbiAgICpcbiAgICogQGRlZmF1bHQgJ2luc3BlY3QnXG4gICAqL1xuICBwYWdlVHlwZTogJ2luc3BlY3QnO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29uZmlndXJhdGlvbiBzcGVjaWZpYyB0byB0aGUgaW5zcGVjdCBwYWdlIHR5cGUuXG4gICAqL1xuICBwYWdlVHlwZUNvbmZpZz86IFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gcGxhY2VkIGluIHRoZSBoZWFkZXIgb2YgdGhlIHBhZ2UuIENvbmNlcm5zIGN1cnJlbnQgc2hvd24gb2JqZWN0LlxuICAgKi9cbiAgaGVhZGVyRmFjZXRzPzogUWRQYWdlSGVhZGVyRmFjZXRDb25maWc8VD5bXTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIERldGVybWluZXMgd2hldGhlciB0aGUgZmFjZXRzIGluIGhlYWRlciBzaG91bGQgYmUgY29sbGFwc2VkIGFuZCBjdXN0b20gYWN0aW9ucyBhcmUgaW4gYSBtZW51LiBUaGlzIG1vZGUgaXMgZGVzaWduZWQgZm9yIHRvdWNoIGRldmljZXMgYW5kIG1vYmlsZSBwaG9uZXMgb25seS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGFkYXB0aXZlTW9kZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUWRQYWdlQ29uZmlnQ3VzdG9tPFQgZXh0ZW5kcyBvYmplY3QgPSBvYmplY3Q+IGV4dGVuZHMgUWRQYWdlQ29uZmlnQmFzZSB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUGFnZSBUeXBlXG4gICAqXG4gICAqIEBkZWZhdWx0ICdjdXN0b20nXG4gICAqL1xuICBwYWdlVHlwZTogJ2N1c3RvbSc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIHNwZWNpZmljIHRvIHRoZSBjdXN0b20gcGFnZSB0eXBlLlxuICAgKi9cbiAgcGFnZVR5cGVDb25maWc/OiBRZFBhZ2VUeXBlQ3VzdG9tQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gcGxhY2VkIGluIHRoZSBoZWFkZXIgb2YgdGhlIHBhZ2UuIENvbmNlcm5zIGN1cnJlbnQgc2hvd24gb2JqZWN0LlxuICAgKi9cbiAgaGVhZGVyRmFjZXRzPzogUWRQYWdlSGVhZGVyRmFjZXRDb25maWc8VD5bXTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIERldGVybWluZXMgd2hldGhlciB0aGUgZmFjZXRzIGluIGhlYWRlciBzaG91bGQgYmUgY29sbGFwc2VkIGFuZCBjdXN0b20gYWN0aW9ucyBhcmUgaW4gYSBtZW51LiBUaGlzIG1vZGUgaXMgZGVzaWduZWQgZm9yIHRvdWNoIGRldmljZXMgYW5kIG1vYmlsZSBwaG9uZXMgb25seS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGFkYXB0aXZlTW9kZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29uZmlndXJlcyB0aGUgb3ZlcnZpZXcgcGFnZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFFkUGFnZVR5cGVPdmVydmlld0NvbmZpZyB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3VzdG9tIGFjdGlvbnMgZm9yIHRoZSBoZWFkZXIuXG4gICAqIFlvdSBjYW4gZGVmaW5lIGEgbGFiZWwsIGEgaGFuZGxlciwgYW5kIHlvdSBjYW4gZGlzYWJsZSBvciBoaWRlIHRoZSBhY3Rpb24uXG4gICAqXG4gICAqICogSWYgdGhlcmUgZXhpc3RzIG1vcmUgdGhhbiAxIEN1c3RvbSBBY3Rpb24sIGEgUWRNZW51QnV0dG9uIHdpbGwgYmUgZGlzcGxheWVkLlxuICAgKlxuICAgKiAqIFRoZXNlIGFjdGlvbnMgYXJlIG5vdCBpbnRlbmRlZCB0byBpbmZsdWVuY2UgdGhlIGNvcmUgcHJvY2VzcyBmbG93IG9yIG1hbmlwdWxhdGUgdGhlIG9iamVjdCBkaXJlY3RseS4gSW5zdGVhZCwgdGhleSBzaG91bGQgYmUgdXNlZCBmb3Igc2lkZSBlZmZlY3RzLCBzdWNoIGFzIHRyaWdnZXJpbmcgbm90aWZpY2F0aW9ucywgdXBkYXRpbmcgZXh0ZXJuYWwgc2VydmljZXMsIG9yIGV4ZWN1dGluZyBzdXBwbGVtZW50YXJ5IHRhc2tzIHRoYXQgZG8gbm90IGFsdGVyIHRoZSBtYWluIHN0YXRlIG9mIHRoZSBvYmplY3QuXG4gICAqL1xuICBjdXN0b21BY3Rpb25zPzogUWRNZW51QnV0dG9uQWN0aW9uQ29uZmlnW107XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyZXMgdGhlIGNyZWF0ZSBwYWdlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFFkUGFnZVR5cGVDcmVhdGVDb25maWcge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBzYXZlIGRyYWZ0IGFjdGlvbi5cbiAgICovXG4gIHNhdmVEcmFmdD86IFFkUGFnZVNhdmVEcmFmdEFjdGlvbjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBjYW5jZWwgYnV0dG9uLlxuICAgKi9cbiAgY2FuY2VsOiBRZFBhZ2VDYW5jZWxBY3Rpb247XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGZvciB0aGUgc3VibWl0IGJ1dHRvbi5cbiAgICovXG4gIHN1Ym1pdDogUWRQYWdlQ3JlYXRlU3VibWl0QWN0aW9uO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3VzdG9tIGFjdGlvbnMgZm9yIHRoZSBoZWFkZXIuXG4gICAqIFlvdSBjYW4gZGVmaW5lIGEgbGFiZWwsIGEgaGFuZGxlciwgYW5kIHlvdSBjYW4gZGlzYWJsZSBvciBoaWRlIHRoZSBhY3Rpb24uXG4gICAqXG4gICAqICogSWYgdGhlcmUgZXhpc3RzIG1vcmUgdGhhbiAxIEN1c3RvbSBBY3Rpb24sIGEgUWRNZW51QnV0dG9uIHdpbGwgYmUgZGlzcGxheWVkLlxuICAgKlxuICAgKiAqIFRoZXNlIGFjdGlvbnMgYXJlIG5vdCBpbnRlbmRlZCB0byBpbmZsdWVuY2UgdGhlIGNvcmUgcHJvY2VzcyBmbG93IG9yIG1hbmlwdWxhdGUgdGhlIG9iamVjdCBkaXJlY3RseS4gSW5zdGVhZCwgdGhleSBzaG91bGQgYmUgdXNlZCBmb3Igc2lkZSBlZmZlY3RzLCBzdWNoIGFzIHRyaWdnZXJpbmcgbm90aWZpY2F0aW9ucywgdXBkYXRpbmcgZXh0ZXJuYWwgc2VydmljZXMsIG9yIGV4ZWN1dGluZyBzdXBwbGVtZW50YXJ5IHRhc2tzIHRoYXQgZG8gbm90IGFsdGVyIHRoZSBtYWluIHN0YXRlIG9mIHRoZSBvYmplY3QuXG4gICAqL1xuICBjdXN0b21BY3Rpb25zPzogUWRNZW51QnV0dG9uQWN0aW9uQ29uZmlnW107XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyZXMgdGhlIGluc3BlY3QgcGFnZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZyB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gT3BlcmF0aW9uIG1vZGUgZm9yIHRoZSBwYWdlLlxuICAgKlxuICAgKiAqIFRoaXMgcHJvcGVydHkgZGV0ZXJtaW5lcyB0aGUgbW9kZSBpbiB3aGljaCB0aGUgcGFnZSBvcGVyYXRlcy4gSXQgY2FuIGJlIGVpdGhlciAndmlldycgb3IgJ2VkaXQnLlxuICAgKlxuICAgKiAqICoqdmlldyoqOiBUaGUgcGFnZSBpcyBpbiByZWFkLW9ubHkgbW9kZS5cbiAgICogKiAqKmVkaXQqKjogVGhlIHBhZ2UgYWxsb3dzIG1vZGlmaWNhdGlvbnMuXG4gICAqL1xuICBvcGVyYXRpb25Nb2RlPzogUWRJbnNwZWN0T3BlcmF0aW9uTW9kZTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFNwZWNpZmllcyB3aGV0aGVyIHRoZSB1c2VyIGNhbiBlZGl0IHRoZSBvYmplY3Qgb3Igbm90LlxuICAgKi9cbiAgaGlkZUVkaXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29uZmlndXJhdGlvbiBmb3IgdGhlIGVkaXQgYWN0aW9uLlxuICAgKi9cbiAgZWRpdD86IFFkUGFnZUVkaXRBY3Rpb247XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGZvciB0aGUgc2F2ZSBhY3Rpb24uXG4gICAqL1xuICBzYXZlPzogUWRQYWdlU2F2ZUFjdGlvbjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBjYW5jZWwgYWN0aW9uLlxuICAgKi9cbiAgY2FuY2VsOiBRZFBhZ2VDYW5jZWxBY3Rpb247XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGZvciB0aGUgZGVsZXRlIGFjdGlvbi5cbiAgICovXG4gIGRlbGV0ZT86IFFkUGFnZURlbGV0ZUFjdGlvbjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBhcmNoaXZlIGFjdGlvbi5cbiAgICovXG4gIGFyY2hpdmU/OiBRZFBhZ2VBcmNoaXZlQWN0aW9uO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29uZmlndXJhdGlvbiBmb3IgdGhlIHN1Ym1pdCBhY3Rpb24uXG4gICAqL1xuICBzdWJtaXQ/OiBRZFBhZ2VTdWJtaXRBY3Rpb247XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDdXN0b20gYWN0aW9ucyBmb3IgdGhlIGhlYWRlci5cbiAgICogWW91IGNhbiBkZWZpbmUgYSBsYWJlbCwgYSBoYW5kbGVyLCBhbmQgeW91IGNhbiBkaXNhYmxlIG9yIGhpZGUgdGhlIGFjdGlvbi5cbiAgICpcbiAgICogKiBJZiB0aGVyZSBleGlzdHMgbW9yZSB0aGFuIDEgQ3VzdG9tIEFjdGlvbiwgYSBRZE1lbnVCdXR0b24gd2lsbCBiZSBkaXNwbGF5ZWQuXG4gICAqXG4gICAqICogSW4gdGhlIFwiSW5zcGVjdFwiIHBhZ2UgdHlwZSwgeW91IGNhbiBhc3NpZ24gY3VzdG9tIGFjdGlvbnMgdG8gdGhlIG9wZXJhdGlvbiBtb2RlcyBcInZpZXdcIiBvciBcImVkaXQuXCIgQnkgZGVmYXVsdCwgdGhlIGFjdGlvbiBpcyBhY3RpdmUgaW4gYm90aCBtb2Rlcy5cbiAgICpcbiAgICogKiBUaGVzZSBhY3Rpb25zIGFyZSBub3QgaW50ZW5kZWQgdG8gaW5mbHVlbmNlIHRoZSBjb3JlIHByb2Nlc3MgZmxvdyBvciBtYW5pcHVsYXRlIHRoZSBvYmplY3QgZGlyZWN0bHkuIEluc3RlYWQsIHRoZXkgc2hvdWxkIGJlIHVzZWQgZm9yIHNpZGUgZWZmZWN0cywgc3VjaCBhcyB0cmlnZ2VyaW5nIG5vdGlmaWNhdGlvbnMsIHVwZGF0aW5nIGV4dGVybmFsIHNlcnZpY2VzLCBvciBleGVjdXRpbmcgc3VwcGxlbWVudGFyeSB0YXNrcyB0aGF0IGRvIG5vdCBhbHRlciB0aGUgbWFpbiBzdGF0ZSBvZiB0aGUgb2JqZWN0LlxuICAgKi9cbiAgY3VzdG9tQWN0aW9ucz86IChRZE1lbnVCdXR0b25BY3Rpb25Db25maWcgJiB7IG9wZXJhdGlvbk1vZGU/OiBRZEluc3BlY3RPcGVyYXRpb25Nb2RlIH0pW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUWRQYWdlVHlwZUN1c3RvbUNvbmZpZyB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3VzdG9tIGFjdGlvbnMgZm9yIHRoZSBoZWFkZXIuXG4gICAqIFlvdSBjYW4gZGVmaW5lIGEgbGFiZWwsIGEgaGFuZGxlciwgYW5kIHlvdSBjYW4gZGlzYWJsZSBvciBoaWRlIHRoZSBhY3Rpb24uXG4gICAqXG4gICAqICogSWYgdGhlcmUgZXhpc3RzIG1vcmUgdGhhbiAxIEN1c3RvbSBBY3Rpb24sIGEgUWRNZW51QnV0dG9uIHdpbGwgYmUgZGlzcGxheWVkLlxuICAgKlxuICAgKiAqIFRoZXNlIGFjdGlvbnMgYXJlIG5vdCBpbnRlbmRlZCB0byBpbmZsdWVuY2UgdGhlIGNvcmUgcHJvY2VzcyBmbG93IG9yIG1hbmlwdWxhdGUgdGhlIG9iamVjdCBkaXJlY3RseS4gSW5zdGVhZCwgdGhleSBzaG91bGQgYmUgdXNlZCBmb3Igc2lkZSBlZmZlY3RzLCBzdWNoIGFzIHRyaWdnZXJpbmcgbm90aWZpY2F0aW9ucywgdXBkYXRpbmcgZXh0ZXJuYWwgc2VydmljZXMsIG9yIGV4ZWN1dGluZyBzdXBwbGVtZW50YXJ5IHRhc2tzIHRoYXQgZG8gbm90IGFsdGVyIHRoZSBtYWluIHN0YXRlIG9mIHRoZSBvYmplY3QuXG4gICAqL1xuICBjdXN0b21BY3Rpb25zPzogUWRNZW51QnV0dG9uQWN0aW9uQ29uZmlnW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUWRQYWdlVGl0bGUge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIERlZmluZXMgdGhlIHRyYW5zbGF0aW9uIGtleVxuICAgKlxuICAgKiAqIEBleGFtcGxlIHsgaTE4bjogXCJpMThuLm92ZXJ2aWV3LnRpdGxlXCJ9XG4gICAqL1xuICBpMThuOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBjdXN0b20gYWN0aW9ucyBsYWJlbCwgdXNlZCB3aGVuIG11bHRpcGxlIGN1c3RvbSBhY3Rpb25zIGV4aXN0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFFkUGFnZUN1c3RvbUFjdGlvbnNMYWJlbCB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTGFiZWwgZm9yIHRoZSBtZW51IGJ1dHRvbiBvZiBjdXN0b20gYWN0aW9ucywgdXNlZCBmb3IgdHJhbnNsYXRpb24uXG4gICAqXG4gICAqICogSWYgbm8gY3VzdG9tIHRyYW5zbGF0aW9uIGtleSBpcyBwcm92aWRlZCwgYSBzdGFuZGFyZCBsYWJlbCB3aWxsIGJlIHVzZWQgYnkgZGVmYXVsdC5cbiAgICpcbiAgICogKiBUaGlzIGxhYmVsIGJlY29tZXMgdmlzaWJsZSBpZiBtb3JlIHRoYW4gb25lIGN1c3RvbSBhY3Rpb24gaXMgZGVmaW5lZCwgYXMgdGhlIGFjdGlvbnMgd2lsbCBiZSBncm91cGVkIHVuZGVyIGEgUWRNZW51QnV0dG9uIHRoYXQgZGlzcGxheXMgdGhpcyBsYWJlbC5cbiAgICovXG4gIGkxOG46IHN0cmluZztcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gT3BlcmF0aW9uIG1vZGVzIGZvciB0aGUgaW5zcGVjdCBwYWdlLlxuICpcbiAqIEBkZWZhdWx0ICd2aWV3J1xuICovXG5leHBvcnQgdHlwZSBRZEluc3BlY3RPcGVyYXRpb25Nb2RlID0gJ3ZpZXcnIHwgJ2VkaXQnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIHRoZSBzYXZlIGFjdGlvbiwgaW5jbHVkaW5nIG9wdGlvbmFsIHZhbGlkYXRpb24gY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRZFBhZ2VTYXZlQWN0aW9uIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMYWJlbCBmb3IgdGhlIHNhdmUgYWN0aW9uLCB1c2VkIGZvciB0cmFuc2xhdGlvbi5cbiAgICpcbiAgICogKiBJZiBubyBjdXN0b20gdHJhbnNsYXRpb24ga2V5IGlzIHByb3ZpZGVkLCBhIHN0YW5kYXJkIGxhYmVsIHdpbGwgYmUgdXNlZCBieSBkZWZhdWx0LlxuICAgKi9cbiAgbGFiZWw/OiB7IGkxOG46IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVHJpZ2dlcmVkIHdoZW4gdGhlIHNhdmUgYWN0aW9uIGlzIGV4ZWN1dGVkLlxuICAgKlxuICAgKiBTdWNjZXNzIGNyaXRlcmlhOlxuICAgKiAtIElmIHRoZSBoYW5kbGVyIHJldHVybnMgYW4gT2JzZXJ2YWJsZTxib29sZWFuPiwgb25seSB0aGUgZmlyc3QgZW1pc3Npb24gYWZ0ZXIgdGhlIHNhdmUgY2xpY2sgY291bnRzOlxuICAgKiAgIC0gKip0cnVlOioqIHN1Y2Nlc3MgLSB0b2dnbGUgdG8gdmlldyBhbmQgYXBwbHkgdGhlIHNhdmVkIHZhbHVlc1xuICAgKiAgIC0gKipmYWxzZToqKiBmYWlsdXJlL2NhbmNlbCAtIHN0YXkgaW4gZWRpdCBtb2RlXG4gICAqIC0gSWYgdGhlIGhhbmRsZXIgcmV0dXJucyBubyBPYnNlcnZhYmxlICh2b2lkKSwgdGhlIHNhdmUgaXMgdHJlYXRlZCBhcyBpbnN0YW50IHN1Y2Nlc3MgKHRvZ2dsZSArIGFwcGx5IHZhbHVlcykuXG4gICAqXG4gICAqIE9uIGEgc3VjY2Vzc2Z1bCBzYXZlLCB0aGUgZnJhbWV3b3JrIGFwcGxpZXMgdGhlIHZhbHVlcyBhbmQgcmVzZXRzIGl0cyBpbnRlcm5hbCB2YWxpZGF0aW9uIGFuZCBjaGFuZ2UtdHJhY2tpbmcgc3RhdGUuXG4gICAqL1xuICBoYW5kbGVyOiAoZm9ybVZhbHVlcz86IGFueSkgPT4gdm9pZCB8IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCB2YWxpZGF0aW9uIGZsYWcsIGRlZmF1bHRzIHRvIHRydWUuXG4gICAqIERldGVybWluZXMgd2hldGhlciBmb3JtIHZhbGlkYXRpb24gaXMgcmVxdWlyZWQgYmVmb3JlIHNhdmluZyBhbmQgZW5zdXJlcyB0aGF0IGNoYW5nZXMgbXVzdCBiZSBwcmVzZW50IGluIHRoZSBmb3JtIGJlZm9yZSBzYXZpbmcuXG4gICAqXG4gICAqICogQnkgZGVmYXVsdCwgdGhpcyBmbGFnIGlzIHNldCB0byB0cnVlLCBtZWFuaW5nIHRoYXQgdmFsaWRhdGlvbiBpcyBlbmZvcmNlZCwgYW5kIHRoZSBmb3JtIHdpbGwgb25seSBzYXZlIGlmIHRoZXJlIGFyZSBjaGFuZ2VzLlxuICAgKlxuICAgKiAqIElmIHNldCB0byBgZmFsc2VgLCB0aGUgZm9ybSB3aWxsIGJlIHNhdmVkIHdpdGhvdXQgdmFsaWRhdGlvbiBjaGVja3MsIGJ1dCBjaGFuZ2VzIG11c3Qgc3RpbGwgYmUgcHJlc2VudCB0byBwcm9jZWVkIHdpdGggdGhlIHNhdmUgb3BlcmF0aW9uLlxuICAgKlxuICAgKiAqIFRoaXMgZmxhZyBpcyB1c2VmdWwgaW4gc2NlbmFyaW9zIHdoZXJlIGZvcm0gdmFsaWRhdGlvbiBpcyBub3QgbmVlZGVkIG9yIHNob3VsZCBiZSBieXBhc3NlZCwgYnV0IGl0IGVuc3VyZXMgdGhhdCBvbmx5IG1vZGlmaWVkIGZvcm1zIGNhbiBiZSBzYXZlZC5cbiAgICovXG4gIGhhc1ZhbGlkYXRpb24/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIHRoZSBzYWZlIGRyYWZ0IGFjdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRZFBhZ2VTYXZlRHJhZnRBY3Rpb24ge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIExhYmVsIGZvciB0aGUgc2F2ZSBkcmFmdCBhY3Rpb24sIHVzZWQgZm9yIHRyYW5zbGF0aW9uLlxuICAgKlxuICAgKiAqIElmIG5vIGN1c3RvbSB0cmFuc2xhdGlvbiBrZXkgaXMgcHJvdmlkZWQsIGEgc3RhbmRhcmQgbGFiZWwgd2lsbCBiZSB1c2VkIGJ5IGRlZmF1bHQuXG4gICAqL1xuICBsYWJlbD86IHsgaTE4bjogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBIYW5kbGVyIGZ1bmN0aW9uIHRoYXQgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHNhdmUgZHJhZnQgYWN0aW9uIGlzIGV4ZWN1dGVkLlxuICAgKi9cbiAgaGFuZGxlcjogKCkgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciB0aGUgY2FuY2VsIGFjdGlvbiwgaW5jbHVkaW5nIGFuIG9wdGlvbmFsIGNvbmZpcm1hdGlvbiBtZXNzYWdlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFFkUGFnZUNhbmNlbEFjdGlvbiB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTGFiZWwgZm9yIHRoZSBjYW5jZWwgYWN0aW9uLCB1c2VkIGZvciB0cmFuc2xhdGlvbi5cbiAgICpcbiAgICogKiBJZiBubyBjdXN0b20gdHJhbnNsYXRpb24ga2V5IGlzIHByb3ZpZGVkLCBhIHN0YW5kYXJkIGxhYmVsIHdpbGwgYmUgdXNlZCBieSBkZWZhdWx0LlxuICAgKi9cbiAgbGFiZWw/OiB7IGkxOG46IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSGFuZGxlciBmdW5jdGlvbiB0aGF0IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBjYW5jZWwgYWN0aW9uIGlzIGV4ZWN1dGVkLlxuICAgKi9cbiAgaGFuZGxlcjogKGZvcm1WYWx1ZXM/OiBhbnkpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBBbiBvcHRpb25hbCBjb25maXJtYXRpb24gbWVzc2FnZSBkaXNwbGF5ZWQgaW4gYSBkaWFsb2cgd2hlbiB0aGUgdXNlciBhdHRlbXB0cyB0byBjYW5jZWwgdGhlIG9wZXJhdGlvbiwgd2FybmluZyB0aGF0IGFsbCBjaGFuZ2VzIHdpbGwgYmUgZGlzY2FyZGVkLlxuICAgKiBJZiBubyBjdXN0b20gbWVzc2FnZSBpcyBwcm92aWRlZCwgYSBzdGFuZGFyZCBtZXNzYWdlIHdpbGwgYmUgc2hvd24gYnkgZGVmYXVsdC5cbiAgICpcbiAgICogKiBUaGUgY2FuY2VsbGF0aW9uIHByb2Nlc3MgY2hlY2tzIHdoZXRoZXIgdGhlcmUgYXJlIHVuc2F2ZWQgY2hhbmdlcyBpbiB0aGUgZm9ybS4gSWYgdGhlcmUgYXJlIGNoYW5nZXMsIHRoZSBkaWFsb2cgd2lsbCBhcHBlYXIuXG4gICAqXG4gICAqICogSWYgbm8gY2hhbmdlcyBhcmUgZGV0ZWN0ZWQsIHRoZSBjYW5jZWxsYXRpb24gcHJvY2VlZHMgd2l0aG91dCBzaG93aW5nIHRoZSBjb25maXJtYXRpb24gZGlhbG9nLlxuICAgKi9cbiAgY29uZmlybWF0aW9uTWVzc2FnZT86IHsgaTE4bjogc3RyaW5nIH07XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3IgdGhlIHN1Ym1pdCBhY3Rpb24gb24gY3JlYXRlIHBhZ2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFFkUGFnZUNyZWF0ZVN1Ym1pdEFjdGlvbiB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTGFiZWwgZm9yIHRoZSBzdWJtaXQgYWN0aW9uLCB1c2VkIGZvciB0cmFuc2xhdGlvbi5cbiAgICpcbiAgICogKiBJZiBubyBjdXN0b20gdHJhbnNsYXRpb24ga2V5IGlzIHByb3ZpZGVkLCBhIHN0YW5kYXJkIGxhYmVsIHdpbGwgYmUgdXNlZCBieSBkZWZhdWx0LlxuICAgKi9cbiAgbGFiZWw/OiB7IGkxOG46IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSGFuZGxlciBmdW5jdGlvbiB0aGF0IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBzdWJtaXQgYWN0aW9uIGlzIGV4ZWN1dGVkLlxuICAgKi9cbiAgaGFuZGxlcjogKGZvcm1WYWx1ZXM/OiBhbnkpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3IgdGhlIHN1Ym1pdCBhY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUWRQYWdlU3VibWl0QWN0aW9uIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMYWJlbCBmb3IgdGhlIHN1Ym1pdCBhY3Rpb24sIHVzZWQgZm9yIHRyYW5zbGF0aW9uLlxuICAgKlxuICAgKiAqIElmIG5vIGN1c3RvbSB0cmFuc2xhdGlvbiBrZXkgaXMgcHJvdmlkZWQsIGEgc3RhbmRhcmQgbGFiZWwgd2lsbCBiZSB1c2VkIGJ5IGRlZmF1bHQuXG4gICAqL1xuICBsYWJlbD86IHsgaTE4bjogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBIYW5kbGVyIGZ1bmN0aW9uIHRoYXQgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHN1Ym1pdCBhY3Rpb24gaXMgZXhlY3V0ZWQuXG4gICAqL1xuICBoYW5kbGVyOiAoZm9ybVZhbHVlcz86IGFueSkgPT4gdm9pZDtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEJ5IGRlZmF1bHQsIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBzdWJtaXQgYnV0dG9uIGRlcGVuZHMgb24gdGhlIHBhZ2UgdHlwZSBhbmQgdGhlIG9wZXJhdGlvbiBtb2RlLlxuICAgKiBUbyBjb21wbGV0ZWx5IGhpZGUgdGhlIHN1Ym1pdCBidXR0b24sIHlvdSBjYW4gc2V0IHRoaXMgaXNIaWRkZW4gZmxhZy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGlzSGlkZGVuPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciB0aGUgZWRpdCBhY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUWRQYWdlRWRpdEFjdGlvbiB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTGFiZWwgZm9yIHRoZSBlZGl0IGFjdGlvbiwgdXNlZCBmb3IgdHJhbnNsYXRpb24uXG4gICAqXG4gICAqICogSWYgbm8gY3VzdG9tIHRyYW5zbGF0aW9uIGtleSBpcyBwcm92aWRlZCwgYSBzdGFuZGFyZCBsYWJlbCB3aWxsIGJlIHVzZWQgYnkgZGVmYXVsdC5cbiAgICovXG4gIGxhYmVsPzogeyBpMThuOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEhhbmRsZXIgZnVuY3Rpb24gdGhhdCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgZWRpdCBhY3Rpb24gaXMgZXhlY3V0ZWQuXG4gICAqL1xuICBoYW5kbGVyOiAoZm9ybVZhbHVlcz86IGFueSkgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciB0aGUgZGVsZXRlIGFjdGlvbi5cbiAqXG4gKiAqIFRoaXMgYWN0aW9uIGlzIHJlcHJlc2VudGVkIGFzIGFuIGljb24sIHNvIGl0IGRvZXMgbm90IHJlcXVpcmUgYSBsYWJlbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRZFBhZ2VEZWxldGVBY3Rpb24ge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEhhbmRsZXIgZnVuY3Rpb24gdGhhdCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgZGVsZXRlIGFjdGlvbiBpcyBleGVjdXRlZC5cbiAgICovXG4gIGhhbmRsZXI6IChmb3JtVmFsdWVzPzogYW55KSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIHRoZSBhcmNoaXZlIGFjdGlvbi5cbiAqXG4gKiAqIFRoaXMgYWN0aW9uIGlzIHJlcHJlc2VudGVkIGFzIGFuIGljb24sIHNvIGl0IGRvZXMgbm90IHJlcXVpcmUgYSBsYWJlbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRZFBhZ2VBcmNoaXZlQWN0aW9uIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBIYW5kbGVyIGZ1bmN0aW9uIHRoYXQgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIGFyY2hpdmUgYWN0aW9uIGlzIGV4ZWN1dGVkLlxuICAgKi9cbiAgaGFuZGxlcjogKGZvcm1WYWx1ZXM/OiBhbnkpID0+IHZvaWQ7XG59XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import { ChangeDetectionStrategy, Component, HostBinding, HostListener, Inject, Input, Optional } from '@angular/core';
2
- import { BehaviorSubject, combineLatest, Subject, switchMap } from 'rxjs';
2
+ import { BehaviorSubject, combineLatest, isObservable, Subject, switchMap } from 'rxjs';
3
3
  import { debounceTime, filter, map, take, takeUntil, tap } from 'rxjs/operators';
4
4
  import { QdDialogComponent, QdDialogService, QdDialogSize } from '../../dialog/dialog.module';
5
5
  import { QdPageCancelConfirmationDialogComponent } from '../cancel-confirmation-dialog/page-cancel-confirmation-dialog.component';
@@ -193,10 +193,12 @@ export class QdPageObjectHeaderComponent {
193
193
  });
194
194
  }
195
195
  save() {
196
- this.pageStoreService.toggleViewonly(true);
197
- if (this.saveButton?.handler)
198
- this.saveButton.handler(this.formGroupManagerService.getAllValues());
199
- this.formGroupManagerService.takeFormGroupsSnapshot();
196
+ const handleSuccess = () => {
197
+ this.pageStoreService.toggleViewonly(true);
198
+ this.formGroupManagerService.takeFormGroupsSnapshot();
199
+ };
200
+ const result = this.saveButton?.handler?.(this.formGroupManagerService.getAllValues());
201
+ isObservable(result) ? result.pipe(take(1)).subscribe((ok) => ok && handleSuccess()) : handleSuccess();
200
202
  }
201
203
  changeContext(context, selection, event) {
202
204
  event.stopPropagation();
@@ -304,4 +306,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
304
306
  type: HostListener,
305
307
  args: ['click']
306
308
  }] } });
307
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9wYWdlL29iamVjdC1oZWFkZXIvcGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9wYWdlL29iamVjdC1oZWFkZXIvcGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxRQUFRLEVBRVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlGLE9BQU8sRUFBRSx1Q0FBdUMsRUFBRSxNQUFNLHlFQUF5RSxDQUFDO0FBZ0JsSSxPQUFPLEVBQUUsNkJBQTZCLEVBQXdCLE1BQU0sK0JBQStCLENBQUM7QUFDcEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDMUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdkYsT0FB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Q0FBQyxXQUFXLENBQUMsQ0FBQzthQUN4QyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDbkIsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDWixJQUFJLENBQUMsdUJBQXVCLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztnQkFDN0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO3VHQXZVVSwyQkFBMkIsa0JBK0loQiw2QkFBNkI7MkZBL0l4QywyQkFBMkIseVVDL0N4QyxpaE1BK0pBOzsyRkRoSGEsMkJBQTJCO2tCQVB2QyxTQUFTOytCQUNFLHVCQUF1QixtQkFHaEIsdUJBQXVCLENBQUMsTUFBTSxRQUN6QyxFQUFFLHNCQUFzQixFQUFFLG1CQUFtQixFQUFFOzswQkFpSmxELFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsNkJBQTZCOzswQkFDaEQsUUFBUTs7MEJBQ1IsUUFBUTs4S0EvSVgsTUFBTTtzQkFETCxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFJekIsYUFBYTtzQkFEWixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFHRixNQUFNO3NCQUE1QixLQUFLO3VCQUFDLGNBQWM7Z0JBR2pCLFVBQVU7c0JBRGIsV0FBVzt1QkFBQyxpQkFBaUI7Z0JBTTlCLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YmplY3QsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIG1hcCwgdGFrZSwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBRZE1lbnVCdXR0b25BY3Rpb25Db25maWcsIFFkTWVudUJ1dHRvbkNvbmZpZyB9IGZyb20gJy4uLy4uL2J1dHRvbi9tb2RlbC9idXR0b24tY29uZmlnJztcbmltcG9ydCB7IFFkRGlhbG9nQ29tcG9uZW50LCBRZERpYWxvZ1NlcnZpY2UsIFFkRGlhbG9nU2l6ZSB9IGZyb20gJy4uLy4uL2RpYWxvZy9kaWFsb2cubW9kdWxlJztcbmltcG9ydCB7IFFkUGFnZUNhbmNlbENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2NhbmNlbC1jb25maXJtYXRpb24tZGlhbG9nL3BhZ2UtY2FuY2VsLWNvbmZpcm1hdGlvbi1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIFFkSW5zcGVjdE9wZXJhdGlvbk1vZGUsXG4gIFFkUGFnZUNvbmZpZyxcbiAgUWRQYWdlQ29uZmlnQ3JlYXRlLFxuICBRZFBhZ2VDb25maWdDdXN0b20sXG4gIFFkUGFnZUNvbmZpZ0luc3BlY3QsXG4gIFFkUGFnZUNvbnRleHRDb25maWcsXG4gIFFkUGFnZVNlbGVjdGVkQ29udGV4dCxcbiAgUWRQYWdlVHlwZUluc3BlY3RDb25maWdcbn0gZnJvbSAnLi4vbW9kZWwvcGFnZS1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gIFFkRmFjZXRPcHRpb25NdWx0aVNlbGVjdCxcbiAgUWRGYWNldE9wdGlvblNpbmdsZVNlbGVjdCxcbiAgUWRQYWdlSGVhZGVyRmFjZXRDb25maWdcbn0gZnJvbSAnLi4vbW9kZWwvcGFnZS1oZWFkZXItZmFjZXQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFFEX1BBR0VfT0JKRUNUX1JFU09MVkVSX1RPS0VOLCBRZFBhZ2VPYmplY3RSZXNvbHZlciB9IGZyb20gJy4uL21vZGVsL3BhZ2Utb2JqZWN0LXJlc29sdmVyJztcbmltcG9ydCB7IFFkQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvc2VydmljZXMvY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IFFkRm9ybUdyb3VwTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvc2VydmljZXMvZm9ybS1ncm91cC1tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUWRQYWdlU3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL3NlcnZpY2VzL3BhZ2Utc3RvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBRZFJlc29sdmVyVHJpZ2dlclNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvc2VydmljZXMvcmVzb2x2ZXItdHJpZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7IFFkQ29udGV4dFNlbGVjdERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY29udGV4dC1zZWxlY3QtZGlhbG9nL2NvbnRleHQtc2VsZWN0LWRpYWxvZy5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdxZC1wYWdlLW9iamVjdC1oZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vcGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7ICdbc3R5bGUuYm9yZGVyQm90dG9tXSc6ICdib3JkZXJCb3R0b21TdHlsZScgfVxufSlcbmV4cG9ydCBjbGFzcyBRZFBhZ2VPYmplY3RIZWFkZXJDb21wb25lbnQ8VCBleHRlbmRzIG9iamVjdD4gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgY29uZmlnITogUWRQYWdlQ29uZmlnPFQ+O1xuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIGhhc05hdmlnYXRpb24gPSBmYWxzZTtcblxuICBASW5wdXQoJ2RhdGEtdGVzdC1pZCcpIHRlc3RJZCA9ICdwYWdlLW9iamVjdC1oZWFkZXInO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaW4tZGlhbG9nJylcbiAgZ2V0IGlzSW5EaWFsb2coKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5kaWFsb2dDb21wb25lbnQ7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIHRvZ2dsZUZhY2V0cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYWRhcHRpdmVNb2RlIHx8ICh0aGlzLmhlYWRlckZhY2V0cz8ubGVuZ3RoID8/IDApID49IDIpIHJldHVybjtcblxuICAgIHRoaXMuZmFjZXRzQ29sbGFwc2VkID0gIXRoaXMuZmFjZXRzQ29sbGFwc2VkO1xuICB9XG5cbiAgZ2V0IGFkYXB0aXZlTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMuY29uZmlnIGFzIFFkUGFnZUNvbmZpZ0luc3BlY3QgfCBRZFBhZ2VDb25maWdDdXN0b20pLmFkYXB0aXZlTW9kZTtcbiAgfVxuXG4gIHByaXZhdGUgX3BhZ2VPYmplY3REYXRhU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VD4oe30gYXMgVCk7XG4gIHByaXZhdGUgX2lzTG9hZGluZ1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSBfY3VzdG9tQWN0aW9uc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFFkTWVudUJ1dHRvbkNvbmZpZz4oeyBhY3Rpb25zOiBbXSB9KTtcbiAgcHJpdmF0ZSBfZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcGFnZU9iamVjdERhdGEkOiBPYnNlcnZhYmxlPFQ+ID0gdGhpcy5fcGFnZU9iamVjdERhdGFTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICBpc0xvYWRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5faXNMb2FkaW5nU3ViamVjdC5hc09ic2VydmFibGUoKS5waXBlKGRlYm91bmNlVGltZSg0MDApKTtcbiAgY3VzdG9tQWN0aW9ucyQ6IE9ic2VydmFibGU8UWRNZW51QnV0dG9uQ29uZmlnPiA9IHRoaXMuX2N1c3RvbUFjdGlvbnNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGZhY2V0c0NvbGxhcHNlZCA9IHRydWU7XG5cbiAgY29udGV4dHMkITogT2JzZXJ2YWJsZTxcbiAgICB7XG4gICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgdmFsdWU6IFFkUGFnZVNlbGVjdGVkQ29udGV4dFtdO1xuICAgICAgY29udGV4dDogUWRQYWdlQ29udGV4dENvbmZpZztcbiAgICAgIHNlbGVjdGlvbjogUWRQYWdlU2VsZWN0ZWRDb250ZXh0IHwgUWRQYWdlU2VsZWN0ZWRDb250ZXh0W107XG4gICAgfVtdXG4gID47XG5cbiAgZ2V0IGJvcmRlckJvdHRvbVN0eWxlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFnZVR5cGUgPSB0aGlzLmNvbmZpZy5wYWdlVHlwZTtcblxuICAgIHJldHVybiBwYWdlVHlwZSA9PT0gJ2NyZWF0ZScgfHxcbiAgICAgIChwYWdlVHlwZSA9PT0gJ2luc3BlY3QnICYmIHRoaXMuaGFzTmF2aWdhdGlvbikgfHxcbiAgICAgIChwYWdlVHlwZSA9PT0gJ2N1c3RvbScgJiYgdGhpcy5oYXNOYXZpZ2F0aW9uKSB8fFxuICAgICAgKHBhZ2VUeXBlID09PSAnb3ZlcnZpZXcnICYmIHRoaXMuaGFzTmF2aWdhdGlvbilcbiAgICAgID8gJ25vbmUgIWltcG9ydGFudCdcbiAgICAgIDogJyc7XG4gIH1cblxuICBnZXQgc2hvd0VkaXQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmlzSW5zcGVjdEFuZFZpZXdNb2RlJC5waXBlKG1hcCh2ID0+IHYgJiYgIXRoaXMuaGlkZUVkaXQpKTtcbiAgfVxuXG4gIGdldCBzaG93RGVsZXRlJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5pc0luc3BlY3RBbmRWaWV3TW9kZSQucGlwZShtYXAodiA9PiB2ICYmICEhdGhpcy5kZWxldGVCdXR0b24pKTtcbiAgfVxuXG4gIGdldCBzaG93QXJjaGl2ZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaXNJbnNwZWN0QW5kVmlld01vZGUkLnBpcGUobWFwKHYgPT4gdiAmJiAhIXRoaXMuYXJjaGl2ZUJ1dHRvbikpO1xuICB9XG5cbiAgZ2V0IHNob3dDYW5jZWwkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmlzSW5zcGVjdEFuZFZpZXdNb2RlJC5waXBlKG1hcCh2ID0+ICF2ICYmICEhdGhpcy5jYW5jZWxCdXR0b24gJiYgIXRoaXMuaXNDcmVhdGUpKTtcbiAgfVxuXG4gIGdldCBzaG93U2F2ZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaXNJbnNwZWN0QW5kVmlld01vZGUkLnBpcGUobWFwKHYgPT4gIXYgJiYgISF0aGlzLnNhdmVCdXR0b24pKTtcbiAgfVxuXG4gIGdldCBoZWFkZXJGYWNldHMoKTogUWRQYWdlSGVhZGVyRmFjZXRDb25maWc8VD5bXSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMuaGFzSGVhZGVyRmFjZXRzKHRoaXMuY29uZmlnKSkgcmV0dXJuIHRoaXMuY29uZmlnLmhlYWRlckZhY2V0cztcbiAgfVxuXG4gIGdldCBpc0luc3BlY3RBbmRWaWV3TW9kZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMucGFnZVN0b3JlU2VydmljZS5pc1ZpZXdvbmx5JC5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCQpLFxuICAgICAgbWFwKGlzVmlldyA9PiB0aGlzLmNvbmZpZy5wYWdlVHlwZSA9PT0gJ2luc3BlY3QnICYmIGlzVmlldylcbiAgICApO1xuICB9XG5cbiAgZ2V0IGlzQ3JlYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5wYWdlVHlwZSA9PT0gJ2NyZWF0ZSc7XG4gIH1cblxuICBnZXQgaXNPdmVydmlldygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcucGFnZVR5cGUgPT09ICdvdmVydmlldyc7XG4gIH1cblxuICBnZXQgaXNDb250ZXh0U2VsZWN0YWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcucGFnZVR5cGUgPT09ICdvdmVydmlldycgfHwgdGhpcy5jb25maWcucGFnZVR5cGUgPT09ICdjdXN0b20nO1xuICB9XG5cbiAgZ2V0IGVkaXRCdXR0b24oKTogUWRQYWdlVHlwZUluc3BlY3RDb25maWdbJ2VkaXQnXSB7XG4gICAgcmV0dXJuICh0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZyBhcyBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZyk/LmVkaXQ7XG4gIH1cblxuICBnZXQgZGVsZXRlQnV0dG9uKCk6IFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnWydkZWxldGUnXSB7XG4gICAgcmV0dXJuICh0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZyBhcyBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZyk/LmRlbGV0ZTtcbiAgfVxuXG4gIGdldCBhcmNoaXZlQnV0dG9uKCk6IFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnWydhcmNoaXZlJ10ge1xuICAgIHJldHVybiAodGhpcy5jb25maWcucGFnZVR5cGVDb25maWcgYXMgUWRQYWdlVHlwZUluc3BlY3RDb25maWcpPy5hcmNoaXZlO1xuICB9XG5cbiAgZ2V0IGNhbmNlbEJ1dHRvbigpOiBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZ1snY2FuY2VsJ10ge1xuICAgIHJldHVybiAodGhpcy5jb25maWcucGFnZVR5cGVDb25maWcgYXMgUWRQYWdlVHlwZUluc3BlY3RDb25maWcpPy5jYW5jZWw7XG4gIH1cblxuICBnZXQgc2F2ZUJ1dHRvbigpOiBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZ1snc2F2ZSddIHtcbiAgICByZXR1cm4gKHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnIGFzIFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnKT8uc2F2ZTtcbiAgfVxuXG4gIGdldCBoaWRlRWRpdCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZyBhcyBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZyB8IHVuZGVmaW5lZDtcblxuICAgIGlmICghY29uZmlnKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGNvbmZpZy5vcGVyYXRpb25Nb2RlICE9PSAnZWRpdCcpIHJldHVybiBjb25maWcuaGlkZUVkaXQgPT09IHRydWU7XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXQgaGFzVmFsdWVzQ2hhbmdlZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UuJGhhc1ZhbHVlc0NoYW5nZWQoKTtcbiAgfVxuXG4gIGdldCAkY2FuU2F2ZSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBpZiAoKHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnIGFzIFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnKT8uc2F2ZT8uaGFzVmFsaWRhdGlvbiA9PT0gZmFsc2UpXG4gICAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZS4kaGFzVmFsdWVzQ2hhbmdlZCgpO1xuXG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZS4kYXJlRm9ybUdyb3Vwc1ZhbGlkKCksXG4gICAgICB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLiRoYXNWYWx1ZXNDaGFuZ2VkKClcbiAgICBdKS5waXBlKG1hcCgoW2lzVmFsaWQsIGhhc0NoYW5nZXNdKSA9PiBpc1ZhbGlkICYmIGhhc0NoYW5nZXMpKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoUURfUEFHRV9PQkpFQ1RfUkVTT0xWRVJfVE9LRU4pIHByaXZhdGUgcGFnZU9iamVjdFJlc29sdmVyOiBRZFBhZ2VPYmplY3RSZXNvbHZlcjxUPixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlOiBRZEZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZGlhbG9nQ29tcG9uZW50OiBRZERpYWxvZ0NvbXBvbmVudCxcbiAgICBwcml2YXRlIGRpYWxvZzogUWREaWFsb2dTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IFFkQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZXNvbHZlclRyaWdnZXJTZXJ2aWNlOiBRZFJlc29sdmVyVHJpZ2dlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwYWdlU3RvcmVTZXJ2aWNlOiBRZFBhZ2VTdG9yZVNlcnZpY2U8VD5cbiAgKSB7XG4gICAgaWYgKHBhZ2VPYmplY3RSZXNvbHZlcikge1xuICAgICAgY29uc3Qgb3JpZ2luYWxVcGRhdGVNZXRhZGF0YSA9IHRoaXMucGFnZU9iamVjdFJlc29sdmVyLnVwZGF0ZU1ldGFkYXRhPy5iaW5kKHRoaXMucGFnZU9iamVjdFJlc29sdmVyKTtcbiAgICAgIHRoaXMucGFnZU9iamVjdFJlc29sdmVyLnVwZGF0ZU1ldGFkYXRhID0gKHByb3BzOiBQYXJ0aWFsPFQ+KTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlTWV0YWRhdGEocHJvcHMpO1xuICAgICAgICBpZiAob3JpZ2luYWxVcGRhdGVNZXRhZGF0YSkgb3JpZ2luYWxVcGRhdGVNZXRhZGF0YShwcm9wcyk7XG4gICAgICB9O1xuXG4gICAgICB0aGlzLnNldHVwUmVzb2x2ZXJUcmlnZ2VyKCk7XG4gICAgfVxuXG4gICAgdGhpcy5pbml0Q29udGV4dHMoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBhZ2VPYmplY3RSZXNvbHZlcikgdGhpcy5zZXR1cFJlc29sdmVyVHJpZ2dlcigpO1xuXG4gICAgdGhpcy51cGRhdGVDdXN0b21BY3Rpb25zKCk7XG4gICAgdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZS50YWtlRm9ybUdyb3Vwc1NuYXBzaG90KCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2NvbmZpZyddICYmICFjaGFuZ2VzWydjb25maWcnXS5maXJzdENoYW5nZSkgdGhpcy51cGRhdGVDdXN0b21BY3Rpb25zKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2VTdG9yZVNlcnZpY2UudG9nZ2xlVmlld29ubHkoZmFsc2UpO1xuXG4gICAgdGhpcy5fZGVzdHJveWVkJC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveWVkJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgdXBkYXRlTWV0YWRhdGEobWV0YWRhdGE6IFBhcnRpYWw8VD4pOiB2b2lkIHtcbiAgICBjb25zdCB1cGRhdGVkTWV0YWRhdGEgPSB7IC4uLnRoaXMuX3BhZ2VPYmplY3REYXRhU3ViamVjdC52YWx1ZSwgLi4ubWV0YWRhdGEgfTtcbiAgICB0aGlzLl9wYWdlT2JqZWN0RGF0YVN1YmplY3QubmV4dCh1cGRhdGVkTWV0YWRhdGEpO1xuICB9XG5cbiAgaGFuZGxlQWN0aW9uKGZhY2V0OiBRZEZhY2V0T3B0aW9uU2luZ2xlU2VsZWN0IHwgUWRGYWNldE9wdGlvbk11bHRpU2VsZWN0KTogdm9pZCB7XG4gICAgZmFjZXQ/LmFjdGlvbj8uaGFuZGxlcigpO1xuICB9XG5cbiAgaGFzSGVhZGVyRmFjZXRzKFxuICAgIGNvbmZpZzogUWRQYWdlQ29uZmlnPFQ+XG4gICk6IGNvbmZpZyBpcyBRZFBhZ2VDb25maWdDcmVhdGU8VD4gfCBRZFBhZ2VDb25maWdJbnNwZWN0PFQ+IHwgUWRQYWdlQ29uZmlnQ3VzdG9tPFQ+IHtcbiAgICByZXR1cm4gKHRoaXMuY29uZmlnIGFzIHsgaGVhZGVyRmFjZXRzOiBRZFBhZ2VIZWFkZXJGYWNldENvbmZpZzxUPltdIH0pLmhlYWRlckZhY2V0cyAhPSBudWxsO1xuICB9XG5cbiAgZWRpdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLnRha2VGb3JtR3JvdXBzU25hcHNob3QoKTtcbiAgICB0aGlzLnBhZ2VTdG9yZVNlcnZpY2UudG9nZ2xlVmlld29ubHkoZmFsc2UpO1xuICAgIGlmICh0aGlzLmVkaXRCdXR0b24/LmhhbmRsZXIpIHRoaXMuZWRpdEJ1dHRvbi5oYW5kbGVyKCk7XG4gIH1cblxuICBjYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZVxuICAgICAgLiRoYXNWYWx1ZXNDaGFuZ2VkKClcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKGhhc0NoYW5nZWQgPT4ge1xuICAgICAgICBpZiAoaGFzQ2hhbmdlZCkgdGhpcy5vcGVuQ2FuY2VsRGlhbG9nKCk7XG4gICAgICAgIGVsc2UgdGhpcy5wYWdlU3RvcmVTZXJ2aWNlLnRvZ2dsZVZpZXdvbmx5KHRydWUpO1xuICAgICAgfSk7XG4gIH1cblxuICBzYXZlKCk6IHZvaWQge1xuICAgIHRoaXMucGFnZVN0b3JlU2VydmljZS50b2dnbGVWaWV3b25seSh0cnVlKTtcblxuICAgIGlmICh0aGlzLnNhdmVCdXR0b24/LmhhbmRsZXIpIHRoaXMuc2F2ZUJ1dHRvbi5oYW5kbGVyKHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UuZ2V0QWxsVmFsdWVzKCkpO1xuXG4gICAgdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZS50YWtlRm9ybUdyb3Vwc1NuYXBzaG90KCk7XG4gIH1cblxuICBjaGFuZ2VDb250ZXh0KFxuICAgIGNvbnRleHQ6IFFkUGFnZUNvbnRleHRDb25maWcsXG4gICAgc2VsZWN0aW9uOiBRZFBhZ2VTZWxlY3RlZENvbnRleHQgfCBRZFBhZ2VTZWxlY3RlZENvbnRleHRbXSxcbiAgICBldmVudDogTW91c2VFdmVudFxuICApOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGlmIChjb250ZXh0LnR5cGUgPT09ICdjdXN0b20nKSB7XG4gICAgICBjb250ZXh0Lm9wZW4oKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oUWRDb250ZXh0U2VsZWN0RGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB7IGNvbmZpZzogY29udGV4dCwgc2VsZWN0aW9uIH0sXG4gICAgICBkaWFsb2dTaXplOiBRZERpYWxvZ1NpemUuU21hbGwsXG4gICAgICB0aXRsZTogY29udGV4dC50aXRsZVxuICAgIH0pO1xuXG4gICAgZGlhbG9nUmVmLmNsb3NlZC5zdWJzY3JpYmUoKGRhdGE6IHsgc2VsZWN0ZWQ6IFFkUGFnZVNlbGVjdGVkQ29udGV4dFtdIH0pID0+IHtcbiAgICAgIGlmIChkYXRhKSB0aGlzLmNvbnRleHRTZXJ2aWNlLnNldFZhbHVlKGNvbnRleHQuaWQsIGRhdGEuc2VsZWN0ZWQpO1xuICAgIH0pO1xuICB9XG5cbiAgY2xlYXJDb250ZXh0KGNvbnRleHQ6IFFkUGFnZUNvbnRleHRDb25maWcpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLmNsZWFyKGNvbnRleHQuaWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFJlc29sdmVyVHJpZ2dlcigpOiB2b2lkIHtcbiAgICB0aGlzLnJlc29sdmVyVHJpZ2dlclNlcnZpY2VcbiAgICAgIC5zaG91bGRUcmlnZ2VyUmVzb2x2ZXIodGhpcy5wYWdlT2JqZWN0UmVzb2x2ZXIuY29uZmlnPy50cmlnZ2VyT24gPz8gJ3BhdGhQYXJhbXNDaGFuZ2UnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQkKSxcbiAgICAgICAgZmlsdGVyKHNob3VsZFRyaWdnZXIgPT4gc2hvdWxkVHJpZ2dlciksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLl9pc0xvYWRpbmdTdWJqZWN0Lm5leHQodHJ1ZSkpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5wYWdlT2JqZWN0UmVzb2x2ZXIucmVzb2x2ZSgpKSxcbiAgICAgICAgdGFwKG9iamVjdERhdGEgPT4gdGhpcy5fcGFnZU9iamVjdERhdGFTdWJqZWN0Lm5leHQob2JqZWN0RGF0YSkpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5faXNMb2FkaW5nU3ViamVjdC5uZXh0KGZhbHNlKSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdENvbnRleHRzKCk6IHZvaWQge1xuICAgIHRoaXMuY29udGV4dHMkID0gdGhpcy5jb250ZXh0U2VydmljZS5jb250ZXh0cyQucGlwZShcbiAgICAgIG1hcChjb250ZXh0cyA9PiBjb250ZXh0cy5maWx0ZXIoY29udGV4dCA9PiBjb250ZXh0LnNlbGVjdGlvbiB8fCB0aGlzLmNvbmZpZy5wYWdlVHlwZSA9PT0gJ292ZXJ2aWV3JykpLFxuICAgICAgbWFwKGNvbnRleHRzID0+XG4gICAgICAgIGNvbnRleHRzPy5tYXAoKHsgc2VsZWN0aW9uLCBjb250ZXh0IH0pID0+ICh7XG4gICAgICAgICAgbGFiZWw6IGNvbnRleHQubGFiZWwuaTE4bixcbiAgICAgICAgICB2YWx1ZTogQXJyYXkuaXNBcnJheShzZWxlY3Rpb24/LnZhbHVlKVxuICAgICAgICAgICAgPyBzZWxlY3Rpb24/LnZhbHVlLmZpbHRlcihpdGVtID0+IGl0ZW0gIT09IG51bGwgJiYgaXRlbSAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgOiBzZWxlY3Rpb24/LnZhbHVlICE9PSBudWxsICYmIHNlbGVjdGlvbj8udmFsdWUgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyBbc2VsZWN0aW9uPy52YWx1ZV1cbiAgICAgICAgICAgIDogKFtdIGFzIFFkUGFnZVNlbGVjdGVkQ29udGV4dFtdKSxcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIHNlbGVjdGlvbjogc2VsZWN0aW9uPy52YWx1ZSA/PyBbXVxuICAgICAgICB9KSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDdXN0b21BY3Rpb25zKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbmZpZy5wYWdlVHlwZSA9PT0gJ2luc3BlY3QnKSB7XG4gICAgICBjb25zdCBvcGVyYXRpb25Nb2RlID0gdGhpcy5jb25maWcucGFnZVR5cGVDb25maWc/Lm9wZXJhdGlvbk1vZGU7XG5cbiAgICAgIGlmIChvcGVyYXRpb25Nb2RlKSB0aGlzLnBhZ2VTdG9yZVNlcnZpY2UudG9nZ2xlVmlld29ubHkob3BlcmF0aW9uTW9kZSA9PT0gJ3ZpZXcnKTtcblxuICAgICAgdGhpcy5wYWdlU3RvcmVTZXJ2aWNlLmlzVmlld29ubHkkLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCQpKS5zdWJzY3JpYmUoaXNWaWV3b25seSA9PiB7XG4gICAgICAgIGNvbnN0IGN1c3RvbUFjdGlvbnMgPSB0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZz8uY3VzdG9tQWN0aW9ucyA/PyBbXTtcblxuICAgICAgICB0aGlzLl9jdXN0b21BY3Rpb25zU3ViamVjdC5uZXh0KHRoaXMuZ2V0Q3VzdG9tQWN0aW9uc0J5TW9kZShjdXN0b21BY3Rpb25zLCBpc1ZpZXdvbmx5ID8gJ3ZpZXcnIDogJ2VkaXQnKSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWcucGFnZVR5cGUgIT09ICdpbnNwZWN0JylcbiAgICAgIHRoaXMuX2N1c3RvbUFjdGlvbnNTdWJqZWN0Lm5leHQoeyBhY3Rpb25zOiB0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZz8uY3VzdG9tQWN0aW9ucyA/PyBbXSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q3VzdG9tQWN0aW9uc0J5TW9kZShcbiAgICBjdXN0b21BY3Rpb25zOiAoUWRNZW51QnV0dG9uQWN0aW9uQ29uZmlnICYgeyBvcGVyYXRpb25Nb2RlPzogUWRJbnNwZWN0T3BlcmF0aW9uTW9kZSB9KVtdLFxuICAgIG1vZGU6IFFkSW5zcGVjdE9wZXJhdGlvbk1vZGVcbiAgKTogUWRNZW51QnV0dG9uQ29uZmlnIHtcbiAgICBjb25zdCBhY3Rpb25zID0gY3VzdG9tQWN0aW9uc1xuICAgICAgLmZpbHRlcihhY3Rpb24gPT4gIWFjdGlvbi5vcGVyYXRpb25Nb2RlIHx8IGFjdGlvbi5vcGVyYXRpb25Nb2RlID09PSBtb2RlKVxuICAgICAgLm1hcChhY3Rpb24gPT4ge1xuICAgICAgICBjb25zdCBtZW51QnV0dG9uQWN0aW9uID0geyAuLi5hY3Rpb24gfTtcbiAgICAgICAgZGVsZXRlIG1lbnVCdXR0b25BY3Rpb24ub3BlcmF0aW9uTW9kZTtcbiAgICAgICAgcmV0dXJuIG1lbnVCdXR0b25BY3Rpb247XG4gICAgICB9KTtcblxuICAgIHJldHVybiB7IGFjdGlvbnMgfTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbkNhbmNlbERpYWxvZygpOiB2b2lkIHtcbiAgICB0aGlzLmRpYWxvZ1xuICAgICAgLm9wZW4oUWRQYWdlQ2FuY2VsQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgIHRpdGxlOiB7IGkxOG46ICdpMThuLnFkLnBhZ2UuY2FuY2VsLmNvbmZpcm1hdGlvbi5kaWFsb2cudGl0bGUnIH0sXG4gICAgICAgIGRpYWxvZ1NpemU6IFFkRGlhbG9nU2l6ZS5TbWFsbCxcbiAgICAgICAgZGF0YTogdGhpcy5jb25maWcucGFnZVR5cGVDb25maWdcbiAgICAgIH0pXG4gICAgICAuY2xvc2VkLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCQpKVxuICAgICAgLnN1YnNjcmliZShjb25maXJtID0+IHtcbiAgICAgICAgaWYgKGNvbmZpcm0pIHtcbiAgICAgICAgICB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLnJlc3RvcmVGb3JtR3JvdXBzRnJvbVNuYXBzaG90KCk7XG4gICAgICAgICAgdGhpcy5wYWdlU3RvcmVTZXJ2aWNlLnRvZ2dsZVZpZXdvbmx5KHRydWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImxvYWRpbmctb3ZlcmxheVwiICpuZ0lmPVwiaXNMb2FkaW5nJCB8IGFzeW5jXCI+PHFkLXNwaW5uZXI+PC9xZC1zcGlubmVyPjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwib2JqZWN0LWhlYWRlci10b3BcIj5cbiAgPGhlYWRlciBjbGFzcz1cIm9iamVjdC1oZWFkZXItdGl0bGVcIj57eyBjb25maWcudGl0bGUuaTE4biB8IHRyYW5zbGF0ZSB9fTwvaGVhZGVyPlxuICA8ZGl2IGNsYXNzPVwib2JqZWN0LWhlYWRlci10b29sYmFyXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbi1pY29uXCIgZGF0YS10ZXN0LWlkPVwiYXJjaGl2ZS1idXR0b25cIj5cbiAgICAgIDxxZC1pY29uXG4gICAgICAgICpuZ0lmPVwic2hvd0FyY2hpdmUkIHwgYXN5bmNcIlxuICAgICAgICAoY2xpY2spPVwiYXJjaGl2ZUJ1dHRvbj8uaGFuZGxlcigpXCJcbiAgICAgICAgY2xhc3M9XCJoZWFkZXItYWN0aW9uLWljb25cIlxuICAgICAgICBbaWNvbl09XCIncmVzdWx0TmV3J1wiXG4gICAgICA+PC9xZC1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbi1pY29uXCIgZGF0YS10ZXN0LWlkPVwiZGVsZXRlLWJ1dHRvblwiPlxuICAgICAgPHFkLWljb25cbiAgICAgICAgY2xhc3M9XCJoZWFkZXItYWN0aW9uLWljb25cIlxuICAgICAgICAqbmdJZj1cInNob3dEZWxldGUkIHwgYXN5bmNcIlxuICAgICAgICAoY2xpY2spPVwiZGVsZXRlQnV0dG9uPy5oYW5kbGVyKClcIlxuICAgICAgICBbaWNvbl09XCIndHJhc2gnXCJcbiAgICAgID48L3FkLWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uICpuZ0lmPVwic2hvd0VkaXQkIHwgYXN5bmNcIiBxZEJ1dHRvbiAoY2xpY2spPVwiZWRpdCgpXCIgZGF0YS10ZXN0LWlkPVwiZWRpdC1idXR0b25cIj5cbiAgICAgIHt7IGVkaXRCdXR0b24/LmxhYmVsPy5pMThuIHx8IFwiaTE4bi5xZC5wYWdlLmhlYWRlci5lZGl0XCIgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b24gKm5nSWY9XCJzaG93Q2FuY2VsJCB8IGFzeW5jXCIgcWRCdXR0b24gcWRCdXR0b25HaG9zdCAoY2xpY2spPVwiY2FuY2VsKClcIiBkYXRhLXRlc3QtaWQ9XCJjYW5jZWwtYnV0dG9uXCI+XG4gICAgICB7eyBjYW5jZWxCdXR0b24ubGFiZWw/LmkxOG4gfHwgXCJpMThuLnFkLnBhZ2UuaGVhZGVyLmNhbmNlbFwiIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uXG4gICAgICAqbmdJZj1cInNob3dTYXZlJCB8IGFzeW5jXCJcbiAgICAgIHFkQnV0dG9uXG4gICAgICAoY2xpY2spPVwic2F2ZSgpXCJcbiAgICAgIGRhdGEtdGVzdC1pZD1cInNhdmUtYnV0dG9uXCJcbiAgICAgIFtkaXNhYmxlZF09XCIoJGNhblNhdmUgfCBhc3luYykgPT09IGZhbHNlXCJcbiAgICA+XG4gICAgICB7eyBzYXZlQnV0dG9uLmxhYmVsPy5pMThuIHx8IFwiaTE4bi5xZC5wYWdlLmhlYWRlci5zYXZlXCIgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21BY3Rpb25zJCB8IGFzeW5jIGFzIGN1c3RvbUFjdGlvbnNcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYWRhcHRpdmVNb2RlOyBlbHNlIGFkYXB0aXZlXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBbcWRNZW51QnV0dG9uXT1cImN1c3RvbUFjdGlvbnNcIlxuICAgICAgICAgIFthdXRvU2l6ZV09XCJmYWxzZVwiXG4gICAgICAgICAgW2RhdGEtdGVzdC1pZF09XCIncGFnZS0nXCJcbiAgICAgICAgICAqbmdJZj1cImN1c3RvbUFjdGlvbnMuYWN0aW9ucy5sZW5ndGggPiAxOyBlbHNlIHNpbmdsZUJ1dHRvblwiXG4gICAgICAgICAgZGF0YS10ZXN0LWlkPVwiY3VzdG9tLWJ1dHRvblwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBjb25maWc/LmN1c3RvbUFjdGlvbnNMYWJlbD8uaTE4biB8fCBcImkxOG4ucWQucGFnZS5oZWFkZXIuYWN0aW9uc1wiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc2luZ2xlQnV0dG9uPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoY3VzdG9tQWN0aW9ucyQgfCBhc3luYykuYWN0aW9uc1swXSBhcyBzaW5nbGVBY3Rpb25cIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgcWRCdXR0b25cbiAgICAgICAgICAgICAgKm5nSWY9XCJzaW5nbGVBY3Rpb24uaGFuZGxlciAmJiAhc2luZ2xlQWN0aW9uLmlzSGlkZGVuXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNpbmdsZUFjdGlvbi5pc0Rpc2FibGVkXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNpbmdsZUFjdGlvbi5oYW5kbGVyKClcIlxuICAgICAgICAgICAgICBkYXRhLXRlc3QtaWQ9XCJjdXN0b20tYnV0dG9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgc2luZ2xlQWN0aW9uLmxhYmVsPy5pMThuIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctdGVtcGxhdGUgI2FkYXB0aXZlPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCIoY3VzdG9tQWN0aW9ucyQgfCBhc3luYyk/LmFjdGlvbnMubGVuZ3RoID49IDFcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiYWRhcHRpdmUtbWVudS1idXR0b25cIlxuICAgICAgICAgIFtxZFBvcG92ZXJPbkNsaWNrXT1cIm1lbnVcIlxuICAgICAgICAgIFtxZFBvcG92ZXJDbG9zZVN0cmF0ZWd5XT1cIidvbkV2ZXJ5Q2xpY2snXCJcbiAgICAgICAgICBbcWRQb3BvdmVyU3RvcFByb3BhZ2F0aW9uXT1cInRydWVcIlxuICAgICAgICAgIFtxZFBvcG92ZXJNaW5XaWR0aF09XCIxNjBcIlxuICAgICAgICA+XG4gICAgICAgICAgPHFkLWljb24gaWNvbj1cIm92ZXJmbG93TWVudVZlcnRpY2FsXCI+PC9xZC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI21lbnU+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBjdXN0b21BY3Rpb25zLmFjdGlvbnM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgY2xhc3M9XCJhZGFwdGl2ZS1tZW51LWVudHJ5XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFjdGlvbi5pc0Rpc2FibGVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3Rpb24uaGFuZGxlcigpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBhY3Rpb24ubGFiZWwuaTE4biB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cIm9iamVjdC1oZWFkZXItZmFjZXRzXCIgW25nQ2xhc3NdPVwieyBhbW9uZ1RoZW1zZWx2ZXM6IGFkYXB0aXZlTW9kZSAmJiAhZmFjZXRzQ29sbGFwc2VkIH1cIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBhZ2VPYmplY3REYXRhJCB8IGFzeW5jIGFzIGRhdGFcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cIm9iamVjdC1oZWFkZXItZmFjZXRcIlxuICAgICAgKm5nRm9yPVwibGV0IGZhY2V0IG9mIGhlYWRlckZhY2V0cyB8IHNsaWNlIDogMCA6IChhZGFwdGl2ZU1vZGUgJiYgZmFjZXRzQ29sbGFwc2VkID8gMiA6IGhlYWRlckZhY2V0cz8ubGVuZ3RoID8/IDApXCJcbiAgICAgIFthdHRyLmRhdGEtdGVzdC1pZF09XCJ0ZXN0SWQgKyAnLWZhY2V0LScgKyBmYWNldC5uYW1lXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmFjZXQtbGFiZWxcIj57eyBmYWNldC5sYWJlbC5pMThuIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICA8cWQtZHluYW1pYy1mYWNldCBjbGFzcz1cImR5bmFtaWMtZmFjZXRcIiBbZmFjZXRdPVwiZmFjZXRcIiBbZGF0YV09XCJkYXRhXCI+PC9xZC1keW5hbWljLWZhY2V0PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbmZpZy5oaWRlQ29udGV4dHMgJiYgY29udGV4dHMkIHwgYXN5bmMgYXMgY29udGV4dHNcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cIm9iamVjdC1oZWFkZXItZmFjZXRcIlxuICAgICAgKm5nRm9yPVwiXG4gICAgICAgIGxldCBjb250ZXh0IG9mIGNvbnRleHRzXG4gICAgICAgICAgfCBzbGljZSA6IDAgOiAoYWRhcHRpdmVNb2RlICYmIGZhY2V0c0NvbGxhcHNlZCA/IDIgLSAoaGVhZGVyRmFjZXRzPy5sZW5ndGggPz8gMCkgOiBjb250ZXh0cy5sZW5ndGgpO1xuICAgICAgICBsZXQgaW5kZXggPSBpbmRleDtcbiAgICAgICAgbGV0IGZpcnN0ID0gZmlyc3RcbiAgICAgIFwiXG4gICAgICBbbmdDbGFzc109XCJ7IGhhc0RpdmlkZXI6IGhlYWRlckZhY2V0cyAmJiBmaXJzdCB9XCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmFjZXQtbGFiZWxcIj57eyBjb250ZXh0LmxhYmVsIHwgdHJhbnNsYXRlIH19PC9kaXY+XG5cbiAgICAgIDxzcGFuICpuZ0lmPVwiY29udGV4dC52YWx1ZS5sZW5ndGggPT09IDBcIiBjbGFzcz1cIm5vLXNlbGVjdGVkLWNvbnRleHRcIj57e1xuICAgICAgICBcImkxOG4ucWQucGFnZS5jb250ZXh0Lm5vU2VsZWN0aW9uUGxhY2Vob2xkZXJcIiB8IHRyYW5zbGF0ZVxuICAgICAgfX08L3NwYW4+XG5cbiAgICAgIDxzcGFuICpuZ0lmPVwiY29udGV4dC52YWx1ZS5sZW5ndGggIT09IDBcIj5cbiAgICAgICAgPHFkLWNoaXAgc3RhdGU9XCJub25lXCIgW2Nsb3NlXT1cImlzQ29udGV4dFNlbGVjdGFibGVcIiAoY2xvc2VDbGlja0VtaXR0ZXIpPVwiY2xlYXJDb250ZXh0KGNvbnRleHQuY29udGV4dClcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB2YWwgb2YgY29udGV4dC52YWx1ZTsgbGV0IGxhc3QgPSBsYXN0XCI+XG4gICAgICAgICAgICB7eyB2YWwubGFiZWwuaTE4biB8IHRyYW5zbGF0ZSB9fTxzcGFuICpuZ0lmPVwiIWxhc3RcIj4sIDwvc3Bhbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9xZC1jaGlwPlxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8c3BhbiAqbmdJZj1cImlzQ29udGV4dFNlbGVjdGFibGUgJiYgKCFmYWNldHNDb2xsYXBzZWQgfHwgIWFkYXB0aXZlTW9kZSlcIiBjbGFzcz1cInNlbGVjdC1idXR0b25cIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHFkQnV0dG9uXG4gICAgICAgICAgcWRCdXR0b25MaW5rXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cImNoYW5nZUNvbnRleHQoY29udGV4dC5jb250ZXh0LCBjb250ZXh0LnNlbGVjdGlvbiwgJGV2ZW50KVwiXG4gICAgICAgICAgW2RhdGEtdGVzdC1pZF09XCInb2JqZWN0LWhlYWRlci1zZWxlY3QtY29udGV4dC0nICsgY29udGV4dC5jb250ZXh0LmlkXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7XG4gICAgICAgICAgICBjb250ZXh0LnZhbHVlLmxlbmd0aCAhPT0gMFxuICAgICAgICAgICAgICA/IChcImkxOG4ucWQucGFnZS5jb250ZXh0LmJ1dHRvbi5jaGFuZ2VcIiB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgOiAoXCJpMThuLnFkLnBhZ2UuY29udGV4dC5idXR0b24uc2VsZWN0XCIgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxzcGFuIGNsYXNzPVwiZmFjZXRzLXRvZ2dsZXJcIiAqbmdJZj1cImFkYXB0aXZlTW9kZSAmJiBoZWFkZXJGYWNldHMubGVuZ3RoICsgKGNvbnRleHRzJCB8IGFzeW5jKS5sZW5ndGggPiAyXCI+XG4gICAgPHNwYW4gKm5nSWY9XCJmYWNldHNDb2xsYXBzZWRcIj4re3sgaGVhZGVyRmFjZXRzLmxlbmd0aCArIChjb250ZXh0cyQgfCBhc3luYykubGVuZ3RoIC0gMiB9fTwvc3Bhbj5cbiAgICA8YnV0dG9uIHFkSWNvbkJ1dHRvbj5cbiAgICAgIDxxZC1pY29uIFtpY29uXT1cImZhY2V0c0NvbGxhcHNlZCA/ICdjdHJsRG93bicgOiAnY3RybFRvcCdcIj48L3FkLWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvc3Bhbj5cbjwvZGl2PlxuIl19
309
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9wYWdlL29iamVjdC1oZWFkZXIvcGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9wYWdlL29iamVjdC1oZWFkZXIvcGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxRQUFRLEVBRVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RixPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQztBQWdCbEksT0FBTyxFQUFFLDZCQUE2QixFQUF3QixNQUFNLCtCQUErQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFD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IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGlzT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbWFwLCB0YWtlLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFFkTWVudUJ1dHRvbkFjdGlvbkNvbmZpZywgUWRNZW51QnV0dG9uQ29uZmlnIH0gZnJvbSAnLi4vLi4vYnV0dG9uL21vZGVsL2J1dHRvbi1jb25maWcnO1xuaW1wb3J0IHsgUWREaWFsb2dDb21wb25lbnQsIFFkRGlhbG9nU2VydmljZSwgUWREaWFsb2dTaXplIH0gZnJvbSAnLi4vLi4vZGlhbG9nL2RpYWxvZy5tb2R1bGUnO1xuaW1wb3J0IHsgUWRQYWdlQ2FuY2VsQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vY2FuY2VsLWNvbmZpcm1hdGlvbi1kaWFsb2cvcGFnZS1jYW5jZWwtY29uZmlybWF0aW9uLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgUWRJbnNwZWN0T3BlcmF0aW9uTW9kZSxcbiAgUWRQYWdlQ29uZmlnLFxuICBRZFBhZ2VDb25maWdDcmVhdGUsXG4gIFFkUGFnZUNvbmZpZ0N1c3RvbSxcbiAgUWRQYWdlQ29uZmlnSW5zcGVjdCxcbiAgUWRQYWdlQ29udGV4dENvbmZpZyxcbiAgUWRQYWdlU2VsZWN0ZWRDb250ZXh0LFxuICBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZ1xufSBmcm9tICcuLi9tb2RlbC9wYWdlLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgUWRGYWNldE9wdGlvbk11bHRpU2VsZWN0LFxuICBRZEZhY2V0T3B0aW9uU2luZ2xlU2VsZWN0LFxuICBRZFBhZ2VIZWFkZXJGYWNldENvbmZpZ1xufSBmcm9tICcuLi9tb2RlbC9wYWdlLWhlYWRlci1mYWNldC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUURfUEFHRV9PQkpFQ1RfUkVTT0xWRVJfVE9LRU4sIFFkUGFnZU9iamVjdFJlc29sdmVyIH0gZnJvbSAnLi4vbW9kZWwvcGFnZS1vYmplY3QtcmVzb2x2ZXInO1xuaW1wb3J0IHsgUWRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy9jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUWRGb3JtR3JvdXBNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy9mb3JtLWdyb3VwLW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBRZFBhZ2VTdG9yZVNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvc2VydmljZXMvcGFnZS1zdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IFFkUmVzb2x2ZXJUcmlnZ2VyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy9yZXNvbHZlci10cmlnZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUWRDb250ZXh0U2VsZWN0RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jb250ZXh0LXNlbGVjdC1kaWFsb2cvY29udGV4dC1zZWxlY3QtZGlhbG9nLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3FkLXBhZ2Utb2JqZWN0LWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdlLW9iamVjdC1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYWdlLW9iamVjdC1oZWFkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHsgJ1tzdHlsZS5ib3JkZXJCb3R0b21dJzogJ2JvcmRlckJvdHRvbVN0eWxlJyB9XG59KVxuZXhwb3J0IGNsYXNzIFFkUGFnZU9iamVjdEhlYWRlckNvbXBvbmVudDxUIGV4dGVuZHMgb2JqZWN0PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBjb25maWchOiBRZFBhZ2VDb25maWc8VD47XG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgaGFzTmF2aWdhdGlvbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgnZGF0YS10ZXN0LWlkJykgdGVzdElkID0gJ3BhZ2Utb2JqZWN0LWhlYWRlcic7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pbi1kaWFsb2cnKVxuICBnZXQgaXNJbkRpYWxvZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmRpYWxvZ0NvbXBvbmVudDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgdG9nZ2xlRmFjZXRzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5hZGFwdGl2ZU1vZGUgfHwgKHRoaXMuaGVhZGVyRmFjZXRzPy5sZW5ndGggPz8gMCkgPj0gMikgcmV0dXJuO1xuXG4gICAgdGhpcy5mYWNldHNDb2xsYXBzZWQgPSAhdGhpcy5mYWNldHNDb2xsYXBzZWQ7XG4gIH1cblxuICBnZXQgYWRhcHRpdmVNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5jb25maWcgYXMgUWRQYWdlQ29uZmlnSW5zcGVjdCB8IFFkUGFnZUNvbmZpZ0N1c3RvbSkuYWRhcHRpdmVNb2RlO1xuICB9XG5cbiAgcHJpdmF0ZSBfcGFnZU9iamVjdERhdGFTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUPih7fSBhcyBUKTtcbiAgcHJpdmF0ZSBfaXNMb2FkaW5nU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIF9jdXN0b21BY3Rpb25zU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UWRNZW51QnV0dG9uQ29uZmlnPih7IGFjdGlvbnM6IFtdIH0pO1xuICBwcml2YXRlIF9kZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwYWdlT2JqZWN0RGF0YSQ6IE9ic2VydmFibGU8VD4gPSB0aGlzLl9wYWdlT2JqZWN0RGF0YVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIGlzTG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLl9pc0xvYWRpbmdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGVib3VuY2VUaW1lKDQwMCkpO1xuICBjdXN0b21BY3Rpb25zJDogT2JzZXJ2YWJsZTxRZE1lbnVCdXR0b25Db25maWc+ID0gdGhpcy5fY3VzdG9tQWN0aW9uc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgZmFjZXRzQ29sbGFwc2VkID0gdHJ1ZTtcblxuICBjb250ZXh0cyQhOiBPYnNlcnZhYmxlPFxuICAgIHtcbiAgICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgICB2YWx1ZTogUWRQYWdlU2VsZWN0ZWRDb250ZXh0W107XG4gICAgICBjb250ZXh0OiBRZFBhZ2VDb250ZXh0Q29uZmlnO1xuICAgICAgc2VsZWN0aW9uOiBRZFBhZ2VTZWxlY3RlZENvbnRleHQgfCBRZFBhZ2VTZWxlY3RlZENvbnRleHRbXTtcbiAgICB9W11cbiAgPjtcblxuICBnZXQgYm9yZGVyQm90dG9tU3R5bGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYWdlVHlwZSA9IHRoaXMuY29uZmlnLnBhZ2VUeXBlO1xuXG4gICAgcmV0dXJuIHBhZ2VUeXBlID09PSAnY3JlYXRlJyB8fFxuICAgICAgKHBhZ2VUeXBlID09PSAnaW5zcGVjdCcgJiYgdGhpcy5oYXNOYXZpZ2F0aW9uKSB8fFxuICAgICAgKHBhZ2VUeXBlID09PSAnY3VzdG9tJyAmJiB0aGlzLmhhc05hdmlnYXRpb24pIHx8XG4gICAgICAocGFnZVR5cGUgPT09ICdvdmVydmlldycgJiYgdGhpcy5oYXNOYXZpZ2F0aW9uKVxuICAgICAgPyAnbm9uZSAhaW1wb3J0YW50J1xuICAgICAgOiAnJztcbiAgfVxuXG4gIGdldCBzaG93RWRpdCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaXNJbnNwZWN0QW5kVmlld01vZGUkLnBpcGUobWFwKHYgPT4gdiAmJiAhdGhpcy5oaWRlRWRpdCkpO1xuICB9XG5cbiAgZ2V0IHNob3dEZWxldGUkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmlzSW5zcGVjdEFuZFZpZXdNb2RlJC5waXBlKG1hcCh2ID0+IHYgJiYgISF0aGlzLmRlbGV0ZUJ1dHRvbikpO1xuICB9XG5cbiAgZ2V0IHNob3dBcmNoaXZlJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5pc0luc3BlY3RBbmRWaWV3TW9kZSQucGlwZShtYXAodiA9PiB2ICYmICEhdGhpcy5hcmNoaXZlQnV0dG9uKSk7XG4gIH1cblxuICBnZXQgc2hvd0NhbmNlbCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaXNJbnNwZWN0QW5kVmlld01vZGUkLnBpcGUobWFwKHYgPT4gIXYgJiYgISF0aGlzLmNhbmNlbEJ1dHRvbiAmJiAhdGhpcy5pc0NyZWF0ZSkpO1xuICB9XG5cbiAgZ2V0IHNob3dTYXZlJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5pc0luc3BlY3RBbmRWaWV3TW9kZSQucGlwZShtYXAodiA9PiAhdiAmJiAhIXRoaXMuc2F2ZUJ1dHRvbikpO1xuICB9XG5cbiAgZ2V0IGhlYWRlckZhY2V0cygpOiBRZFBhZ2VIZWFkZXJGYWNldENvbmZpZzxUPltdIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5oYXNIZWFkZXJGYWNldHModGhpcy5jb25maWcpKSByZXR1cm4gdGhpcy5jb25maWcuaGVhZGVyRmFjZXRzO1xuICB9XG5cbiAgZ2V0IGlzSW5zcGVjdEFuZFZpZXdNb2RlJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5wYWdlU3RvcmVTZXJ2aWNlLmlzVmlld29ubHkkLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkJCksXG4gICAgICBtYXAoaXNWaWV3ID0+IHRoaXMuY29uZmlnLnBhZ2VUeXBlID09PSAnaW5zcGVjdCcgJiYgaXNWaWV3KVxuICAgICk7XG4gIH1cblxuICBnZXQgaXNDcmVhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnBhZ2VUeXBlID09PSAnY3JlYXRlJztcbiAgfVxuXG4gIGdldCBpc092ZXJ2aWV3KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5wYWdlVHlwZSA9PT0gJ292ZXJ2aWV3JztcbiAgfVxuXG4gIGdldCBpc0NvbnRleHRTZWxlY3RhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5wYWdlVHlwZSA9PT0gJ292ZXJ2aWV3JyB8fCB0aGlzLmNvbmZpZy5wYWdlVHlwZSA9PT0gJ2N1c3RvbSc7XG4gIH1cblxuICBnZXQgZWRpdEJ1dHRvbigpOiBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZ1snZWRpdCddIHtcbiAgICByZXR1cm4gKHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnIGFzIFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnKT8uZWRpdDtcbiAgfVxuXG4gIGdldCBkZWxldGVCdXR0b24oKTogUWRQYWdlVHlwZUluc3BlY3RDb25maWdbJ2RlbGV0ZSddIHtcbiAgICByZXR1cm4gKHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnIGFzIFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnKT8uZGVsZXRlO1xuICB9XG5cbiAgZ2V0IGFyY2hpdmVCdXR0b24oKTogUWRQYWdlVHlwZUluc3BlY3RDb25maWdbJ2FyY2hpdmUnXSB7XG4gICAgcmV0dXJuICh0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZyBhcyBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZyk/LmFyY2hpdmU7XG4gIH1cblxuICBnZXQgY2FuY2VsQnV0dG9uKCk6IFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnWydjYW5jZWwnXSB7XG4gICAgcmV0dXJuICh0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZyBhcyBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZyk/LmNhbmNlbDtcbiAgfVxuXG4gIGdldCBzYXZlQnV0dG9uKCk6IFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnWydzYXZlJ10ge1xuICAgIHJldHVybiAodGhpcy5jb25maWcucGFnZVR5cGVDb25maWcgYXMgUWRQYWdlVHlwZUluc3BlY3RDb25maWcpPy5zYXZlO1xuICB9XG5cbiAgZ2V0IGhpZGVFZGl0KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnIGFzIFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnIHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKCFjb25maWcpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoY29uZmlnLm9wZXJhdGlvbk1vZGUgIT09ICdlZGl0JykgcmV0dXJuIGNvbmZpZy5oaWRlRWRpdCA9PT0gdHJ1ZTtcblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGdldCBoYXNWYWx1ZXNDaGFuZ2VkJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZS4kaGFzVmFsdWVzQ2hhbmdlZCgpO1xuICB9XG5cbiAgZ2V0ICRjYW5TYXZlKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIGlmICgodGhpcy5jb25maWcucGFnZVR5cGVDb25maWcgYXMgUWRQYWdlVHlwZUluc3BlY3RDb25maWcpPy5zYXZlPy5oYXNWYWxpZGF0aW9uID09PSBmYWxzZSlcbiAgICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLiRoYXNWYWx1ZXNDaGFuZ2VkKCk7XG5cbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLiRhcmVGb3JtR3JvdXBzVmFsaWQoKSxcbiAgICAgIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UuJGhhc1ZhbHVlc0NoYW5nZWQoKVxuICAgIF0pLnBpcGUobWFwKChbaXNWYWxpZCwgaGFzQ2hhbmdlc10pID0+IGlzVmFsaWQgJiYgaGFzQ2hhbmdlcykpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChRRF9QQUdFX09CSkVDVF9SRVNPTFZFUl9UT0tFTikgcHJpdmF0ZSBwYWdlT2JqZWN0UmVzb2x2ZXI6IFFkUGFnZU9iamVjdFJlc29sdmVyPFQ+LFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZm9ybUdyb3VwTWFuYWdlclNlcnZpY2U6IFFkRm9ybUdyb3VwTWFuYWdlclNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBkaWFsb2dDb21wb25lbnQ6IFFkRGlhbG9nQ29tcG9uZW50LFxuICAgIHByaXZhdGUgZGlhbG9nOiBRZERpYWxvZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogUWRDb250ZXh0U2VydmljZSxcbiAgICBwcml2YXRlIHJlc29sdmVyVHJpZ2dlclNlcnZpY2U6IFFkUmVzb2x2ZXJUcmlnZ2VyU2VydmljZSxcbiAgICBwcml2YXRlIHBhZ2VTdG9yZVNlcnZpY2U6IFFkUGFnZVN0b3JlU2VydmljZTxUPlxuICApIHtcbiAgICBpZiAocGFnZU9iamVjdFJlc29sdmVyKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbFVwZGF0ZU1ldGFkYXRhID0gdGhpcy5wYWdlT2JqZWN0UmVzb2x2ZXIudXBkYXRlTWV0YWRhdGE/LmJpbmQodGhpcy5wYWdlT2JqZWN0UmVzb2x2ZXIpO1xuICAgICAgdGhpcy5wYWdlT2JqZWN0UmVzb2x2ZXIudXBkYXRlTWV0YWRhdGEgPSAocHJvcHM6IFBhcnRpYWw8VD4pOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVNZXRhZGF0YShwcm9wcyk7XG4gICAgICAgIGlmIChvcmlnaW5hbFVwZGF0ZU1ldGFkYXRhKSBvcmlnaW5hbFVwZGF0ZU1ldGFkYXRhKHByb3BzKTtcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuc2V0dXBSZXNvbHZlclRyaWdnZXIoKTtcbiAgICB9XG5cbiAgICB0aGlzLmluaXRDb250ZXh0cygpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGFnZU9iamVjdFJlc29sdmVyKSB0aGlzLnNldHVwUmVzb2x2ZXJUcmlnZ2VyKCk7XG5cbiAgICB0aGlzLnVwZGF0ZUN1c3RvbUFjdGlvbnMoKTtcbiAgICB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLnRha2VGb3JtR3JvdXBzU25hcHNob3QoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snY29uZmlnJ10gJiYgIWNoYW5nZXNbJ2NvbmZpZyddLmZpcnN0Q2hhbmdlKSB0aGlzLnVwZGF0ZUN1c3RvbUFjdGlvbnMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucGFnZVN0b3JlU2VydmljZS50b2dnbGVWaWV3b25seShmYWxzZSk7XG5cbiAgICB0aGlzLl9kZXN0cm95ZWQkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95ZWQkLmNvbXBsZXRlKCk7XG4gIH1cblxuICB1cGRhdGVNZXRhZGF0YShtZXRhZGF0YTogUGFydGlhbDxUPik6IHZvaWQge1xuICAgIGNvbnN0IHVwZGF0ZWRNZXRhZGF0YSA9IHsgLi4udGhpcy5fcGFnZU9iamVjdERhdGFTdWJqZWN0LnZhbHVlLCAuLi5tZXRhZGF0YSB9O1xuICAgIHRoaXMuX3BhZ2VPYmplY3REYXRhU3ViamVjdC5uZXh0KHVwZGF0ZWRNZXRhZGF0YSk7XG4gIH1cblxuICBoYW5kbGVBY3Rpb24oZmFjZXQ6IFFkRmFjZXRPcHRpb25TaW5nbGVTZWxlY3QgfCBRZEZhY2V0T3B0aW9uTXVsdGlTZWxlY3QpOiB2b2lkIHtcbiAgICBmYWNldD8uYWN0aW9uPy5oYW5kbGVyKCk7XG4gIH1cblxuICBoYXNIZWFkZXJGYWNldHMoXG4gICAgY29uZmlnOiBRZFBhZ2VDb25maWc8VD5cbiAgKTogY29uZmlnIGlzIFFkUGFnZUNvbmZpZ0NyZWF0ZTxUPiB8IFFkUGFnZUNvbmZpZ0luc3BlY3Q8VD4gfCBRZFBhZ2VDb25maWdDdXN0b208VD4ge1xuICAgIHJldHVybiAodGhpcy5jb25maWcgYXMgeyBoZWFkZXJGYWNldHM6IFFkUGFnZUhlYWRlckZhY2V0Q29uZmlnPFQ+W10gfSkuaGVhZGVyRmFjZXRzICE9IG51bGw7XG4gIH1cblxuICBlZGl0KCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UudGFrZUZvcm1Hcm91cHNTbmFwc2hvdCgpO1xuICAgIHRoaXMucGFnZVN0b3JlU2VydmljZS50b2dnbGVWaWV3b25seShmYWxzZSk7XG4gICAgaWYgKHRoaXMuZWRpdEJ1dHRvbj8uaGFuZGxlcikgdGhpcy5lZGl0QnV0dG9uLmhhbmRsZXIoKTtcbiAgfVxuXG4gIGNhbmNlbCgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlXG4gICAgICAuJGhhc1ZhbHVlc0NoYW5nZWQoKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoaGFzQ2hhbmdlZCA9PiB7XG4gICAgICAgIGlmIChoYXNDaGFuZ2VkKSB0aGlzLm9wZW5DYW5jZWxEaWFsb2coKTtcbiAgICAgICAgZWxzZSB0aGlzLnBhZ2VTdG9yZVNlcnZpY2UudG9nZ2xlVmlld29ubHkodHJ1ZSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHNhdmUoKTogdm9pZCB7XG4gICAgY29uc3QgaGFuZGxlU3VjY2VzcyA9ICgpOiB2b2lkID0+IHtcbiAgICAgIHRoaXMucGFnZVN0b3JlU2VydmljZS50b2dnbGVWaWV3b25seSh0cnVlKTtcbiAgICAgIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UudGFrZUZvcm1Hcm91cHNTbmFwc2hvdCgpO1xuICAgIH07XG5cbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnNhdmVCdXR0b24/LmhhbmRsZXI/Lih0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLmdldEFsbFZhbHVlcygpKTtcblxuICAgIGlzT2JzZXJ2YWJsZShyZXN1bHQpID8gcmVzdWx0LnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChvazogYm9vbGVhbikgPT4gb2sgJiYgaGFuZGxlU3VjY2VzcygpKSA6IGhhbmRsZVN1Y2Nlc3MoKTtcbiAgfVxuXG4gIGNoYW5nZUNvbnRleHQoXG4gICAgY29udGV4dDogUWRQYWdlQ29udGV4dENvbmZpZyxcbiAgICBzZWxlY3Rpb246IFFkUGFnZVNlbGVjdGVkQ29udGV4dCB8IFFkUGFnZVNlbGVjdGVkQ29udGV4dFtdLFxuICAgIGV2ZW50OiBNb3VzZUV2ZW50XG4gICk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgaWYgKGNvbnRleHQudHlwZSA9PT0gJ2N1c3RvbScpIHtcbiAgICAgIGNvbnRleHQub3BlbigpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihRZENvbnRleHRTZWxlY3REaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHsgY29uZmlnOiBjb250ZXh0LCBzZWxlY3Rpb24gfSxcbiAgICAgIGRpYWxvZ1NpemU6IFFkRGlhbG9nU2l6ZS5TbWFsbCxcbiAgICAgIHRpdGxlOiBjb250ZXh0LnRpdGxlXG4gICAgfSk7XG5cbiAgICBkaWFsb2dSZWYuY2xvc2VkLnN1YnNjcmliZSgoZGF0YTogeyBzZWxlY3RlZDogUWRQYWdlU2VsZWN0ZWRDb250ZXh0W10gfSkgPT4ge1xuICAgICAgaWYgKGRhdGEpIHRoaXMuY29udGV4dFNlcnZpY2Uuc2V0VmFsdWUoY29udGV4dC5pZCwgZGF0YS5zZWxlY3RlZCk7XG4gICAgfSk7XG4gIH1cblxuICBjbGVhckNvbnRleHQoY29udGV4dDogUWRQYWdlQ29udGV4dENvbmZpZyk6IHZvaWQge1xuICAgIHRoaXMuY29udGV4dFNlcnZpY2UuY2xlYXIoY29udGV4dC5pZCk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwUmVzb2x2ZXJUcmlnZ2VyKCk6IHZvaWQge1xuICAgIHRoaXMucmVzb2x2ZXJUcmlnZ2VyU2VydmljZVxuICAgICAgLnNob3VsZFRyaWdnZXJSZXNvbHZlcih0aGlzLnBhZ2VPYmplY3RSZXNvbHZlci5jb25maWc/LnRyaWdnZXJPbiA/PyAncGF0aFBhcmFtc0NoYW5nZScpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCQpLFxuICAgICAgICBmaWx0ZXIoc2hvdWxkVHJpZ2dlciA9PiBzaG91bGRUcmlnZ2VyKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuX2lzTG9hZGluZ1N1YmplY3QubmV4dCh0cnVlKSksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnBhZ2VPYmplY3RSZXNvbHZlci5yZXNvbHZlKCkpLFxuICAgICAgICB0YXAob2JqZWN0RGF0YSA9PiB0aGlzLl9wYWdlT2JqZWN0RGF0YVN1YmplY3QubmV4dChvYmplY3REYXRhKSksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLl9pc0xvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0Q29udGV4dHMoKTogdm9pZCB7XG4gICAgdGhpcy5jb250ZXh0cyQgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLmNvbnRleHRzJC5waXBlKFxuICAgICAgbWFwKGNvbnRleHRzID0+IGNvbnRleHRzLmZpbHRlcihjb250ZXh0ID0+IGNvbnRleHQuc2VsZWN0aW9uIHx8IHRoaXMuY29uZmlnLnBhZ2VUeXBlID09PSAnb3ZlcnZpZXcnKSksXG4gICAgICBtYXAoY29udGV4dHMgPT5cbiAgICAgICAgY29udGV4dHM/Lm1hcCgoeyBzZWxlY3Rpb24sIGNvbnRleHQgfSkgPT4gKHtcbiAgICAgICAgICBsYWJlbDogY29udGV4dC5sYWJlbC5pMThuLFxuICAgICAgICAgIHZhbHVlOiBBcnJheS5pc0FycmF5KHNlbGVjdGlvbj8udmFsdWUpXG4gICAgICAgICAgICA/IHNlbGVjdGlvbj8udmFsdWUuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0gbnVsbCAmJiBpdGVtICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICA6IHNlbGVjdGlvbj8udmFsdWUgIT09IG51bGwgJiYgc2VsZWN0aW9uPy52YWx1ZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IFtzZWxlY3Rpb24/LnZhbHVlXVxuICAgICAgICAgICAgOiAoW10gYXMgUWRQYWdlU2VsZWN0ZWRDb250ZXh0W10pLFxuICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgc2VsZWN0aW9uOiBzZWxlY3Rpb24/LnZhbHVlID8/IFtdXG4gICAgICAgIH0pKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUN1c3RvbUFjdGlvbnMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29uZmlnLnBhZ2VUeXBlID09PSAnaW5zcGVjdCcpIHtcbiAgICAgIGNvbnN0IG9wZXJhdGlvbk1vZGUgPSB0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZz8ub3BlcmF0aW9uTW9kZTtcblxuICAgICAgaWYgKG9wZXJhdGlvbk1vZGUpIHRoaXMucGFnZVN0b3JlU2VydmljZS50b2dnbGVWaWV3b25seShvcGVyYXRpb25Nb2RlID09PSAndmlldycpO1xuXG4gICAgICB0aGlzLnBhZ2VTdG9yZVNlcnZpY2UuaXNWaWV3b25seSQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkJCkpLnN1YnNjcmliZShpc1ZpZXdvbmx5ID0+IHtcbiAgICAgICAgY29uc3QgY3VzdG9tQWN0aW9ucyA9IHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnPy5jdXN0b21BY3Rpb25zID8/IFtdO1xuXG4gICAgICAgIHRoaXMuX2N1c3RvbUFjdGlvbnNTdWJqZWN0Lm5leHQodGhpcy5nZXRDdXN0b21BY3Rpb25zQnlNb2RlKGN1c3RvbUFjdGlvbnMsIGlzVmlld29ubHkgPyAndmlldycgOiAnZWRpdCcpKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZy5wYWdlVHlwZSAhPT0gJ2luc3BlY3QnKVxuICAgICAgdGhpcy5fY3VzdG9tQWN0aW9uc1N1YmplY3QubmV4dCh7IGFjdGlvbnM6IHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnPy5jdXN0b21BY3Rpb25zID8/IFtdIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDdXN0b21BY3Rpb25zQnlNb2RlKFxuICAgIGN1c3RvbUFjdGlvbnM6IChRZE1lbnVCdXR0b25BY3Rpb25Db25maWcgJiB7IG9wZXJhdGlvbk1vZGU/OiBRZEluc3BlY3RPcGVyYXRpb25Nb2RlIH0pW10sXG4gICAgbW9kZTogUWRJbnNwZWN0T3BlcmF0aW9uTW9kZVxuICApOiBRZE1lbnVCdXR0b25Db25maWcge1xuICAgIGNvbnN0IGFjdGlvbnMgPSBjdXN0b21BY3Rpb25zXG4gICAgICAuZmlsdGVyKGFjdGlvbiA9PiAhYWN0aW9uLm9wZXJhdGlvbk1vZGUgfHwgYWN0aW9uLm9wZXJhdGlvbk1vZGUgPT09IG1vZGUpXG4gICAgICAubWFwKGFjdGlvbiA9PiB7XG4gICAgICAgIGNvbnN0IG1lbnVCdXR0b25BY3Rpb24gPSB7IC4uLmFjdGlvbiB9O1xuICAgICAgICBkZWxldGUgbWVudUJ1dHRvbkFjdGlvbi5vcGVyYXRpb25Nb2RlO1xuICAgICAgICByZXR1cm4gbWVudUJ1dHRvbkFjdGlvbjtcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHsgYWN0aW9ucyB9O1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuQ2FuY2VsRGlhbG9nKCk6IHZvaWQge1xuICAgIHRoaXMuZGlhbG9nXG4gICAgICAub3BlbihRZFBhZ2VDYW5jZWxDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgdGl0bGU6IHsgaTE4bjogJ2kxOG4ucWQucGFnZS5jYW5jZWwuY29uZmlybWF0aW9uLmRpYWxvZy50aXRsZScgfSxcbiAgICAgICAgZGlhbG9nU2l6ZTogUWREaWFsb2dTaXplLlNtYWxsLFxuICAgICAgICBkYXRhOiB0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZ1xuICAgICAgfSlcbiAgICAgIC5jbG9zZWQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkJCkpXG4gICAgICAuc3Vic2NyaWJlKGNvbmZpcm0gPT4ge1xuICAgICAgICBpZiAoY29uZmlybSkge1xuICAgICAgICAgIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UucmVzdG9yZUZvcm1Hcm91cHNGcm9tU25hcHNob3QoKTtcbiAgICAgICAgICB0aGlzLnBhZ2VTdG9yZVNlcnZpY2UudG9nZ2xlVmlld29ubHkodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibG9hZGluZy1vdmVybGF5XCIgKm5nSWY9XCJpc0xvYWRpbmckIHwgYXN5bmNcIj48cWQtc3Bpbm5lcj48L3FkLXNwaW5uZXI+PC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJvYmplY3QtaGVhZGVyLXRvcFwiPlxuICA8aGVhZGVyIGNsYXNzPVwib2JqZWN0LWhlYWRlci10aXRsZVwiPnt7IGNvbmZpZy50aXRsZS5pMThuIHwgdHJhbnNsYXRlIH19PC9oZWFkZXI+XG4gIDxkaXYgY2xhc3M9XCJvYmplY3QtaGVhZGVyLXRvb2xiYXJcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uLWljb25cIiBkYXRhLXRlc3QtaWQ9XCJhcmNoaXZlLWJ1dHRvblwiPlxuICAgICAgPHFkLWljb25cbiAgICAgICAgKm5nSWY9XCJzaG93QXJjaGl2ZSQgfCBhc3luY1wiXG4gICAgICAgIChjbGljayk9XCJhcmNoaXZlQnV0dG9uPy5oYW5kbGVyKClcIlxuICAgICAgICBjbGFzcz1cImhlYWRlci1hY3Rpb24taWNvblwiXG4gICAgICAgIFtpY29uXT1cIidyZXN1bHROZXcnXCJcbiAgICAgID48L3FkLWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uLWljb25cIiBkYXRhLXRlc3QtaWQ9XCJkZWxldGUtYnV0dG9uXCI+XG4gICAgICA8cWQtaWNvblxuICAgICAgICBjbGFzcz1cImhlYWRlci1hY3Rpb24taWNvblwiXG4gICAgICAgICpuZ0lmPVwic2hvd0RlbGV0ZSQgfCBhc3luY1wiXG4gICAgICAgIChjbGljayk9XCJkZWxldGVCdXR0b24/LmhhbmRsZXIoKVwiXG4gICAgICAgIFtpY29uXT1cIid0cmFzaCdcIlxuICAgICAgPjwvcWQtaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b24gKm5nSWY9XCJzaG93RWRpdCQgfCBhc3luY1wiIHFkQnV0dG9uIChjbGljayk9XCJlZGl0KClcIiBkYXRhLXRlc3QtaWQ9XCJlZGl0LWJ1dHRvblwiPlxuICAgICAge3sgZWRpdEJ1dHRvbj8ubGFiZWw/LmkxOG4gfHwgXCJpMThuLnFkLnBhZ2UuaGVhZGVyLmVkaXRcIiB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvbiAqbmdJZj1cInNob3dDYW5jZWwkIHwgYXN5bmNcIiBxZEJ1dHRvbiBxZEJ1dHRvbkdob3N0IChjbGljayk9XCJjYW5jZWwoKVwiIGRhdGEtdGVzdC1pZD1cImNhbmNlbC1idXR0b25cIj5cbiAgICAgIHt7IGNhbmNlbEJ1dHRvbi5sYWJlbD8uaTE4biB8fCBcImkxOG4ucWQucGFnZS5oZWFkZXIuY2FuY2VsXCIgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwic2hvd1NhdmUkIHwgYXN5bmNcIlxuICAgICAgcWRCdXR0b25cbiAgICAgIChjbGljayk9XCJzYXZlKClcIlxuICAgICAgZGF0YS10ZXN0LWlkPVwic2F2ZS1idXR0b25cIlxuICAgICAgW2Rpc2FibGVkXT1cIigkY2FuU2F2ZSB8IGFzeW5jKSA9PT0gZmFsc2VcIlxuICAgID5cbiAgICAgIHt7IHNhdmVCdXR0b24ubGFiZWw/LmkxOG4gfHwgXCJpMThuLnFkLnBhZ2UuaGVhZGVyLnNhdmVcIiB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUFjdGlvbnMkIHwgYXN5bmMgYXMgY3VzdG9tQWN0aW9uc1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhZGFwdGl2ZU1vZGU7IGVsc2UgYWRhcHRpdmVcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIFtxZE1lbnVCdXR0b25dPVwiY3VzdG9tQWN0aW9uc1wiXG4gICAgICAgICAgW2F1dG9TaXplXT1cImZhbHNlXCJcbiAgICAgICAgICBbZGF0YS10ZXN0LWlkXT1cIidwYWdlLSdcIlxuICAgICAgICAgICpuZ0lmPVwiY3VzdG9tQWN0aW9ucy5hY3Rpb25zLmxlbmd0aCA+IDE7IGVsc2Ugc2luZ2xlQnV0dG9uXCJcbiAgICAgICAgICBkYXRhLXRlc3QtaWQ9XCJjdXN0b20tYnV0dG9uXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGNvbmZpZz8uY3VzdG9tQWN0aW9uc0xhYmVsPy5pMThuIHx8IFwiaTE4bi5xZC5wYWdlLmhlYWRlci5hY3Rpb25zXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNzaW5nbGVCdXR0b24+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihjdXN0b21BY3Rpb25zJCB8IGFzeW5jKS5hY3Rpb25zWzBdIGFzIHNpbmdsZUFjdGlvblwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBxZEJ1dHRvblxuICAgICAgICAgICAgICAqbmdJZj1cInNpbmdsZUFjdGlvbi5oYW5kbGVyICYmICFzaW5nbGVBY3Rpb24uaXNIaWRkZW5cIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2luZ2xlQWN0aW9uLmlzRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2luZ2xlQWN0aW9uLmhhbmRsZXIoKVwiXG4gICAgICAgICAgICAgIGRhdGEtdGVzdC1pZD1cImN1c3RvbS1idXR0b25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBzaW5nbGVBY3Rpb24ubGFiZWw/LmkxOG4gfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjYWRhcHRpdmU+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdJZj1cIihjdXN0b21BY3Rpb25zJCB8IGFzeW5jKT8uYWN0aW9ucy5sZW5ndGggPj0gMVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJhZGFwdGl2ZS1tZW51LWJ1dHRvblwiXG4gICAgICAgICAgW3FkUG9wb3Zlck9uQ2xpY2tdPVwibWVudVwiXG4gICAgICAgICAgW3FkUG9wb3ZlckNsb3NlU3RyYXRlZ3ldPVwiJ29uRXZlcnlDbGljaydcIlxuICAgICAgICAgIFtxZFBvcG92ZXJTdG9wUHJvcGFnYXRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgW3FkUG9wb3Zlck1pbldpZHRoXT1cIjE2MFwiXG4gICAgICAgID5cbiAgICAgICAgICA8cWQtaWNvbiBpY29uPVwib3ZlcmZsb3dNZW51VmVydGljYWxcIj48L3FkLWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbWVudT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGN1c3RvbUFjdGlvbnMuYWN0aW9uczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICBjbGFzcz1cImFkYXB0aXZlLW1lbnUtZW50cnlcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWN0aW9uLmlzRGlzYWJsZWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGlvbi5oYW5kbGVyKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGFjdGlvbi5sYWJlbC5pMThuIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwib2JqZWN0LWhlYWRlci1mYWNldHNcIiBbbmdDbGFzc109XCJ7IGFtb25nVGhlbXNlbHZlczogYWRhcHRpdmVNb2RlICYmICFmYWNldHNDb2xsYXBzZWQgfVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwicGFnZU9iamVjdERhdGEkIHwgYXN5bmMgYXMgZGF0YVwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwib2JqZWN0LWhlYWRlci1mYWNldFwiXG4gICAgICAqbmdGb3I9XCJsZXQgZmFjZXQgb2YgaGVhZGVyRmFjZXRzIHwgc2xpY2UgOiAwIDogKGFkYXB0aXZlTW9kZSAmJiBmYWNldHNDb2xsYXBzZWQgPyAyIDogaGVhZGVyRmFjZXRzPy5sZW5ndGggPz8gMClcIlxuICAgICAgW2F0dHIuZGF0YS10ZXN0LWlkXT1cInRlc3RJZCArICctZmFjZXQtJyArIGZhY2V0Lm5hbWVcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJmYWNldC1sYWJlbFwiPnt7IGZhY2V0LmxhYmVsLmkxOG4gfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgIDxxZC1keW5hbWljLWZhY2V0IGNsYXNzPVwiZHluYW1pYy1mYWNldFwiIFtmYWNldF09XCJmYWNldFwiIFtkYXRhXT1cImRhdGFcIj48L3FkLWR5bmFtaWMtZmFjZXQ+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29uZmlnLmhpZGVDb250ZXh0cyAmJiBjb250ZXh0cyQgfCBhc3luYyBhcyBjb250ZXh0c1wiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwib2JqZWN0LWhlYWRlci1mYWNldFwiXG4gICAgICAqbmdGb3I9XCJcbiAgICAgICAgbGV0IGNvbnRleHQgb2YgY29udGV4dHNcbiAgICAgICAgICB8IHNsaWNlIDogMCA6IChhZGFwdGl2ZU1vZGUgJiYgZmFjZXRzQ29sbGFwc2VkID8gMiAtIChoZWFkZXJGYWNldHM/Lmxlbmd0aCA/PyAwKSA6IGNvbnRleHRzLmxlbmd0aCk7XG4gICAgICAgIGxldCBpbmRleCA9IGluZGV4O1xuICAgICAgICBsZXQgZmlyc3QgPSBmaXJzdFxuICAgICAgXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgaGFzRGl2aWRlcjogaGVhZGVyRmFjZXRzICYmIGZpcnN0IH1cIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJmYWNldC1sYWJlbFwiPnt7IGNvbnRleHQubGFiZWwgfCB0cmFuc2xhdGUgfX08L2Rpdj5cblxuICAgICAgPHNwYW4gKm5nSWY9XCJjb250ZXh0LnZhbHVlLmxlbmd0aCA9PT0gMFwiIGNsYXNzPVwibm8tc2VsZWN0ZWQtY29udGV4dFwiPnt7XG4gICAgICAgIFwiaTE4bi5xZC5wYWdlLmNvbnRleHQubm9TZWxlY3Rpb25QbGFjZWhvbGRlclwiIHwgdHJhbnNsYXRlXG4gICAgICB9fTwvc3Bhbj5cblxuICAgICAgPHNwYW4gKm5nSWY9XCJjb250ZXh0LnZhbHVlLmxlbmd0aCAhPT0gMFwiPlxuICAgICAgICA8cWQtY2hpcCBzdGF0ZT1cIm5vbmVcIiBbY2xvc2VdPVwiaXNDb250ZXh0U2VsZWN0YWJsZVwiIChjbG9zZUNsaWNrRW1pdHRlcik9XCJjbGVhckNvbnRleHQoY29udGV4dC5jb250ZXh0KVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZhbCBvZiBjb250ZXh0LnZhbHVlOyBsZXQgbGFzdCA9IGxhc3RcIj5cbiAgICAgICAgICAgIHt7IHZhbC5sYWJlbC5pMThuIHwgdHJhbnNsYXRlIH19PHNwYW4gKm5nSWY9XCIhbGFzdFwiPiwgPC9zcGFuPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3FkLWNoaXA+XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDxzcGFuICpuZ0lmPVwiaXNDb250ZXh0U2VsZWN0YWJsZSAmJiAoIWZhY2V0c0NvbGxhcHNlZCB8fCAhYWRhcHRpdmVNb2RlKVwiIGNsYXNzPVwic2VsZWN0LWJ1dHRvblwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgcWRCdXR0b25cbiAgICAgICAgICBxZEJ1dHRvbkxpbmtcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlQ29udGV4dChjb250ZXh0LmNvbnRleHQsIGNvbnRleHQuc2VsZWN0aW9uLCAkZXZlbnQpXCJcbiAgICAgICAgICBbZGF0YS10ZXN0LWlkXT1cIidvYmplY3QtaGVhZGVyLXNlbGVjdC1jb250ZXh0LScgKyBjb250ZXh0LmNvbnRleHQuaWRcIlxuICAgICAgICA+XG4gICAgICAgICAge3tcbiAgICAgICAgICAgIGNvbnRleHQudmFsdWUubGVuZ3RoICE9PSAwXG4gICAgICAgICAgICAgID8gKFwiaTE4bi5xZC5wYWdlLmNvbnRleHQuYnV0dG9uLmNoYW5nZVwiIHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgICA6IChcImkxOG4ucWQucGFnZS5jb250ZXh0LmJ1dHRvbi5zZWxlY3RcIiB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPHNwYW4gY2xhc3M9XCJmYWNldHMtdG9nZ2xlclwiICpuZ0lmPVwiYWRhcHRpdmVNb2RlICYmIGhlYWRlckZhY2V0cy5sZW5ndGggKyAoY29udGV4dHMkIHwgYXN5bmMpLmxlbmd0aCA+IDJcIj5cbiAgICA8c3BhbiAqbmdJZj1cImZhY2V0c0NvbGxhcHNlZFwiPit7eyBoZWFkZXJGYWNldHMubGVuZ3RoICsgKGNvbnRleHRzJCB8IGFzeW5jKS5sZW5ndGggLSAyIH19PC9zcGFuPlxuICAgIDxidXR0b24gcWRJY29uQnV0dG9uPlxuICAgICAgPHFkLWljb24gW2ljb25dPVwiZmFjZXRzQ29sbGFwc2VkID8gJ2N0cmxEb3duJyA6ICdjdHJsVG9wJ1wiPjwvcWQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9zcGFuPlxuPC9kaXY+XG4iXX0=
@@ -10639,11 +10639,8 @@ class QdCalendarComponent {
10639
10639
  this.weeks = Array.from({ length: Math.ceil(dates.length / 7) }, () => dates.splice(0, 7));
10640
10640
  }
10641
10641
  fillDates(momentObj) {
10642
- const firstOfMonth = moment(momentObj).startOf('month').day();
10643
10642
  const lastOfMonth = moment(momentObj).endOf('month').day();
10644
- const firstDayOfGrid = moment(momentObj)
10645
- .startOf('month')
10646
- .subtract(firstOfMonth === 0 ? 6 : firstOfMonth - 1, 'days');
10643
+ const firstDayOfGrid = moment(momentObj).locale(this.language).startOf('month').startOf('week');
10647
10644
  const lastDayOfGrid = moment(momentObj).endOf('month').subtract(lastOfMonth, 'days').add(7, 'days');
10648
10645
  const startCalendar = firstDayOfGrid.date();
10649
10646
  return range(startCalendar, startCalendar + lastDayOfGrid.diff(firstDayOfGrid, 'days')).map(date => {
@@ -33190,10 +33187,12 @@ class QdPageObjectHeaderComponent {
33190
33187
  });
33191
33188
  }
33192
33189
  save() {
33193
- this.pageStoreService.toggleViewonly(true);
33194
- if (this.saveButton?.handler)
33195
- this.saveButton.handler(this.formGroupManagerService.getAllValues());
33196
- this.formGroupManagerService.takeFormGroupsSnapshot();
33190
+ const handleSuccess = () => {
33191
+ this.pageStoreService.toggleViewonly(true);
33192
+ this.formGroupManagerService.takeFormGroupsSnapshot();
33193
+ };
33194
+ const result = this.saveButton?.handler?.(this.formGroupManagerService.getAllValues());
33195
+ isObservable(result) ? result.pipe(take(1)).subscribe((ok) => ok && handleSuccess()) : handleSuccess();
33197
33196
  }
33198
33197
  changeContext(context, selection, event) {
33199
33198
  event.stopPropagation();