ctt-puro 0.41.7 → 0.41.8

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.
@@ -186,7 +186,10 @@ export class PuroEngineComponent {
186
186
  if (this.glValue)
187
187
  params.append('_gl', this.glValue);
188
188
  const sep = this.button.url.includes('?') ? '&' : '?';
189
- this.generatedUrl = `${this.button.url}${sep}${params.toString()}`;
189
+ const safeParams = params && typeof params.toString === 'function'
190
+ ? params.toString()
191
+ : '';
192
+ this.generatedUrl = `${this.button.url}${sep}${safeParams}`;
190
193
  }
191
194
  applyGuests() {
192
195
  const adultsSelect = document.getElementById('adult');
@@ -204,7 +207,8 @@ export class PuroEngineComponent {
204
207
  const guestsLabel = document.querySelector('.js-personas-subfields .banner__fieldControl');
205
208
  if (guestsLabel) {
206
209
  const total = this.guests.adults + this.guests.kids;
207
- guestsLabel.textContent = total <= 9 ? '0' + total : String(total);
210
+ guestsLabel.textContent =
211
+ total <= 9 ? '0' + total : String(total);
208
212
  }
209
213
  }
210
214
  this.cdr.markForCheck();
@@ -250,4 +254,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
250
254
  }], glValue: [{
251
255
  type: Input
252
256
  }] } });
253
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1lbmdpbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1lbmdpbmUvcHVyby1lbmdpbmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1lbmdpbmUvcHVyby1lbmdpbmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxLQUFLLEVBRUwsV0FBVyxFQUNYLE1BQU0sRUFDTixNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILFdBQVcsRUFFWCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLFVBQVUsR0FDYixNQUFNLGdCQUFnQixDQUFDO0FBR3hCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFldEQsTUFBTSxPQUFPLG1CQUFtQjtJQWJoQztRQWNxQixPQUFFLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pCLGVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDakMsUUFBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2hDLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFlekMsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsV0FBTSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFD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RCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFHRCxRQUFRLENBQUMsQ0FBUTtRQUNiLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQzVDO0lBQ0wsQ0FBQzsrR0E3UlEsbUJBQW1CO21HQUFuQixtQkFBbUIsdVdDcENoQyw2ME9BaUtBLHlERHRJUSxZQUFZLDhCQUNaLG1CQUFtQix5cENBQ25CLFdBQVcsK0JBQ1gsbUJBQW1COzs0RkFNZCxtQkFBbUI7a0JBYi9CLFNBQVM7K0JBQ0ksaUJBQWlCLGNBQ2YsSUFBSSxXQUNQO3dCQUNMLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixXQUFXO3dCQUNYLG1CQUFtQjtxQkFDdEIsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU07OEJBUXRDLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgUExBVEZPUk1fSUQsXG4gICAgaW5qZWN0LFxuICAgIE5nWm9uZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEZvcm1CdWlsZGVyLFxuICAgIEZvcm1Hcm91cCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFB1cm9CdXR0b25JLCBQdXJvSW5wdXRJIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBQdXJvRHJvcGRvd25JIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9wdXJvLWRyb3Bkb3duLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQdXJvU2NyaXB0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaWItcHVyby1lbmdpbmUnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBQdXJvU2NyaXB0RGlyZWN0aXZlLFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3B1cm8tZW5naW5lLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vcHVyby1lbmdpbmUuY29tcG9uZW50LnNjc3MnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQdXJvRW5naW5lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gICAgQElucHV0KCkgZGF0ZXBpY2tlckluPzogUHVyb0lucHV0STtcbiAgICBASW5wdXQoKSBkYXRlcGlja2VyT3V0PzogUHVyb0lucHV0STtcbiAgICBASW5wdXQoKSBndWVzdHNJbnB1dD86IFB1cm9JbnB1dEk7XG4gICAgQElucHV0KCkgcHJvbW9JbnB1dD86IFB1cm9JbnB1dEk7XG4gICAgQElucHV0KCkgYWR1bHRzRHJvcGRvd24/OiBQdXJvRHJvcGRvd25JO1xuICAgIEBJbnB1dCgpIGtpZHNEcm9wZG93bj86IFB1cm9Ecm9wZG93bkk7XG4gICAgQElucHV0KCkgYnRuQXBwbHk/OiBQdXJvQnV0dG9uSTtcbiAgICBASW5wdXQoKSBidXR0b24/OiBQdXJvQnV0dG9uSTtcbiAgICBASW5wdXQoKSBsYW5nPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGNvZGlnbz86IHN0cmluZztcbiAgICBASW5wdXQoKSBnbFZhbHVlPzogc3RyaW5nO1xuXG4gICAgZm9ybSE6IEZvcm1Hcm91cDtcbiAgICBnZW5lcmF0ZWRVcmwgPSAnJztcbiAgICBndWVzdHMgPSB7IGFkdWx0czogMiwga2lkczogMCB9O1xuICAgIHByaXZhdGUgaXNTeW5jaW5nID0gZmFsc2U7XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBjb25zdCB0b21vcnJvdyA9IG5ldyBEYXRlKHRvZGF5KTtcbiAgICAgICAgdG9tb3Jyb3cuc2V0RGF0ZSh0b2RheS5nZXREYXRlKCkgKyAxKTtcblxuICAgICAgICBjb25zdCBmb3JtYXR0ZWRUb2RheSA9IHRoaXMuZm9ybWF0RGF0ZSh0b2RheSk7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZFRvbW9ycm93ID0gdGhpcy5mb3JtYXREYXRlKHRvbW9ycm93KTtcblxuICAgICAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgICAgIGRhdGVwaWNrZXJJbjogW1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZXBpY2tlckluPy52YWx1ZSB8fCBmb3JtYXR0ZWRUb2RheSxcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGRhdGVwaWNrZXJPdXQ6IFtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVwaWNrZXJPdXQ/LnZhbHVlIHx8IGZvcm1hdHRlZFRvbW9ycm93LFxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcHJvbW9JbnB1dDogW3RoaXMucHJvbW9JbnB1dD8udmFsdWUgfHwgJyddLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChcbiAgICAgICAgICAgICAgICAgICAgKGEsIGIpID0+IEpTT04uc3RyaW5naWZ5KGEpID09PSBKU09OLnN0cmluZ2lmeShiKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlR2VuZXJhdGVkVXJsKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zYXZlRW5naW5lRGF0YSgpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5iaW5kRGF0ZXBpY2tlckV2ZW50cygpLCA0MDApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVHZW5lcmF0ZWRVcmwoKTtcbiAgICB9XG5cbiAgICAvKiogVmluY3VsYSBsb3MgaW5wdXRzIGRlbCBwbHVnaW4gZGF0ZXBpY2tlciBjb24gZWwgZm9ybXVsYXJpbyBBbmd1bGFyICovXG4gICAgcHJpdmF0ZSBiaW5kRGF0ZXBpY2tlckV2ZW50cygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5JbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgICAgICAgJ0luLWRhdGUxJ1xuICAgICAgICApIGFzIEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsO1xuICAgICAgICBjb25zdCBvdXRJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgICAgICAgJ091dC1kYXRlMSdcbiAgICAgICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbDtcbiAgICAgICAgaWYgKCFpbklucHV0IHx8ICFvdXRJbnB1dCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IGZpcmVOYXRpdmUgPSAoZWw6IEhUTUxJbnB1dEVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgIGVsLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSB9KSk7XG4gICAgICAgICAgICBlbC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZWwuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdjaGFuZ2VEYXRlJywgeyBidWJibGVzOiB0cnVlIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gY2F0Y2gge31cbiAgICAgICAgfTtcblxuICAgICAgICAvKiogU2luY3Jvbml6YSB2YWxvcmVzIGRlc2RlIGVsIHBsdWdpbiBoYWNpYSBlbCBmb3JtIEFuZ3VsYXIgKi9cbiAgICAgICAgY29uc3Qgc3luY0Zyb21QbHVnaW4gPSAoc291cmNlOiAnaW4nIHwgJ291dCcpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU3luY2luZykgcmV0dXJuO1xuICAgICAgICAgICAgdGhpcy5pc1N5bmNpbmcgPSB0cnVlO1xuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByYXdJbiA9IChpbklucHV0LnZhbHVlIHx8ICcnKS50cmltKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd091dCA9IChvdXRJbnB1dC52YWx1ZSB8fCAnJykudHJpbSgpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIExsZWdhZGFcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJhd0luICYmIHJhd0luICE9PSB0aGlzLmZvcm0udmFsdWUuZGF0ZXBpY2tlckluKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGRhdGVwaWNrZXJJbjogcmF3SW4gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGVtaXRFdmVudDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbkRhdGUgPSB0aGlzLnBhcnNlRGF0ZShyYXdJbik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvdXREYXRlID0gcmF3T3V0ID8gdGhpcy5wYXJzZURhdGUocmF3T3V0KSA6IG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNpIGxhIHNhbGlkYSA8PSBsbGVnYWRhIOKGkiBmb3J6YXIgKzEgZMOtYVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvdXREYXRlIHx8IG91dERhdGUgPD0gaW5EYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGx1czEgPSBuZXcgRGF0ZShpbkRhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsdXMxLnNldERhdGUoaW5EYXRlLmdldERhdGUoKSArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZE91dCA9IHRoaXMuZm9ybWF0RGF0ZShwbHVzMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0SW5wdXQudmFsdWUgPSBmb3JtYXR0ZWRPdXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyZU5hdGl2ZShvdXRJbnB1dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgZGF0ZXBpY2tlck91dDogZm9ybWF0dGVkT3V0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgZW1pdEV2ZW50OiB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gU2FsaWRhXG4gICAgICAgICAgICAgICAgICAgIGlmIChyYXdPdXQgJiYgcmF3T3V0ICE9PSB0aGlzLmZvcm0udmFsdWUuZGF0ZXBpY2tlck91dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBkYXRlcGlja2VyT3V0OiByYXdPdXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGVtaXRFdmVudDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gbGltcGlhciBwbGFjZWhvbGRlcnMgdmlzdWFsbWVudGVcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluSW5wdXQudmFsdWUpIGluSW5wdXQucGxhY2Vob2xkZXIgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgaWYgKG91dElucHV0LnZhbHVlKSBvdXRJbnB1dC5wbGFjZWhvbGRlciA9ICcnO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTeW5jaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8g8J+UuSBFc2N1Y2hhciBldmVudG9zIGRlbCBwbHVnaW4geSBkZSBpbnB1dCBuYXRpdm9cbiAgICAgICAgY29uc3QgZXZlbnRzID0gW1xuICAgICAgICAgICAgJ2NoYW5nZScsXG4gICAgICAgICAgICAnaW5wdXQnLFxuICAgICAgICAgICAgJ2JsdXInLFxuICAgICAgICAgICAgJ2NsaWNrJyxcbiAgICAgICAgICAgICdjaGFuZ2VEYXRlJyxcbiAgICAgICAgICAgICdkYXRlQ2hhbmdlJyxcbiAgICAgICAgICAgICdhcHBseS5kYXRlcmFuZ2VwaWNrZXInLFxuICAgICAgICBdO1xuICAgICAgICBldmVudHMuZm9yRWFjaCgoZXZ0KSA9PlxuICAgICAgICAgICAgaW5JbnB1dC5hZGRFdmVudExpc3RlbmVyKGV2dCwgKCkgPT4gc3luY0Zyb21QbHVnaW4oJ2luJykpXG4gICAgICAgICk7XG4gICAgICAgIGV2ZW50cy5mb3JFYWNoKChldnQpID0+XG4gICAgICAgICAgICBvdXRJbnB1dC5hZGRFdmVudExpc3RlbmVyKGV2dCwgKCkgPT4gc3luY0Zyb21QbHVnaW4oJ291dCcpKVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIPCflLkgU2luY3Jvbml6YWNpw7NuIHByb2FjdGl2YSAoY2FkYSA1MDBtcylcbiAgICAgICAgc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNTeW5jaW5nKSByZXR1cm47XG4gICAgICAgICAgICBjb25zdCByYXdJbiA9IChpbklucHV0LnZhbHVlIHx8ICcnKS50cmltKCk7XG4gICAgICAgICAgICBjb25zdCByYXdPdXQgPSAob3V0SW5wdXQudmFsdWUgfHwgJycpLnRyaW0oKTtcbiAgICAgICAgICAgIGlmIChyYXdJbiAmJiByYXdJbiAhPT0gdGhpcy5mb3JtLnZhbHVlLmRhdGVwaWNrZXJJbikge1xuICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBkYXRlcGlja2VySW46IHJhd0luIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGVtaXRFdmVudDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJhd091dCAmJiByYXdPdXQgIT09IHRoaXMuZm9ybS52YWx1ZS5kYXRlcGlja2VyT3V0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGRhdGVwaWNrZXJPdXQ6IHJhd091dCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgNTAwKTtcblxuICAgICAgICAvLyDwn5S5IFJlZnJlc2NhciBwbGFjZWhvbGRlcnMgaW5pY2lhbGVzXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogR3VhcmRhIGVuIHNlc3Npb25TdG9yYWdlICovXG4gICAgcHJpdmF0ZSBzYXZlRW5naW5lRGF0YSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XG4gICAgICAgIGNvbnN0IHsgZGF0ZXBpY2tlckluLCBkYXRlcGlja2VyT3V0LCBwcm9tb0lucHV0IH0gPSB0aGlzLmZvcm0udmFsdWU7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAgICAgICBkYXRlaW46IGRhdGVwaWNrZXJJbixcbiAgICAgICAgICAgIGRhdGVvdXQ6IGRhdGVwaWNrZXJPdXQsXG4gICAgICAgICAgICBhZHVsdHM6IHRoaXMuZ3Vlc3RzLmFkdWx0cyxcbiAgICAgICAgICAgIGtpZHM6IHRoaXMuZ3Vlc3RzLmtpZHMsXG4gICAgICAgICAgICBwcm9tbzogcHJvbW9JbnB1dCB8fCAnJyxcbiAgICAgICAgfTtcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgncHVyb0VuZ2luZURhdGEnLCBKU09OLnN0cmluZ2lmeShwYXlsb2FkKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXREYXRlKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBkZCA9IFN0cmluZyhkYXRlLmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICAgICAgY29uc3QgbW0gPSBTdHJpbmcoZGF0ZS5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICAgICAgY29uc3QgeXl5eSA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgcmV0dXJuIGAke2RkfS8ke21tfS8ke3l5eXl9YDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBhcnNlRGF0ZSh2YWx1ZTogc3RyaW5nKTogRGF0ZSB7XG4gICAgICAgIGNvbnN0IGNsZWFuID0gdmFsdWUudHJpbSgpLnJlcGxhY2VBbGwoJy0nLCAnLycpLnJlcGxhY2VBbGwoJy4nLCAnLycpO1xuICAgICAgICBjb25zdCBbZCwgbSwgeV0gPSBjbGVhbi5zcGxpdCgnLycpLm1hcChOdW1iZXIpO1xuICAgICAgICByZXR1cm4gbmV3IERhdGUoeSwgbSAtIDEsIGQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9ybWF0RGF0ZUZvclVybChkYXRlU3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBbZCwgbSwgeV0gPSBkYXRlU3RyLnJlcGxhY2VBbGwoJy0nLCAnLycpLnNwbGl0KCcvJykubWFwKE51bWJlcik7XG4gICAgICAgIHJldHVybiBgJHtTdHJpbmcoZCkucGFkU3RhcnQoMiwgJzAnKX0tJHtTdHJpbmcobSkucGFkU3RhcnQoMiwgJzAnKX0tJHt5fWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVHZW5lcmF0ZWRVcmwoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5idXR0b24/LnVybCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHsgZGF0ZXBpY2tlckluLCBkYXRlcGlja2VyT3V0LCBwcm9tb0lucHV0IH0gPSB0aGlzLmZvcm0udmFsdWU7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcblxuICAgICAgICBpZiAodGhpcy5jb2RpZ28gJiYgdGhpcy5sYW5nKSB7XG4gICAgICAgICAgICBjb25zdCBpc01vYmlsZSA9XG4gICAgICAgICAgICAgICAgL01vYml8QW5kcm9pZHxpUGhvbmV8aVBhZHxpUG9kfFdpbmRvd3MgUGhvbmUvaS50ZXN0KFxuICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3IudXNlckFnZW50XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGFmZmlsaWF0ZSA9IGAke3RoaXMuY29kaWdvfV8ke3RoaXMubGFuZ31fJHtcbiAgICAgICAgICAgICAgICBpc01vYmlsZSA/ICdtb2JpbGUnIDogJ1BDJ1xuICAgICAgICAgICAgfWA7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdhZmZpbGlhdGUnLCBhZmZpbGlhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRhdGVwaWNrZXJJbiAmJiBkYXRlcGlja2VyT3V0KSB7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdkYXRlaW4nLCB0aGlzLmZvcm1hdERhdGVGb3JVcmwoZGF0ZXBpY2tlckluKSk7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdkYXRlb3V0JywgdGhpcy5mb3JtYXREYXRlRm9yVXJsKGRhdGVwaWNrZXJPdXQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmd1ZXN0cy5hZHVsdHMpXG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdhZHVsdG9zJywgU3RyaW5nKHRoaXMuZ3Vlc3RzLmFkdWx0cykpO1xuICAgICAgICBpZiAodGhpcy5ndWVzdHMua2lkcylcbiAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ2NoaWxkcmVuJywgU3RyaW5nKHRoaXMuZ3Vlc3RzLmtpZHMpKTtcblxuICAgICAgICBpZiAocHJvbW9JbnB1dCkge1xuICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgncHJvbScsIHByb21vSW5wdXQpO1xuICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgncHJvbV9jbGVhbicsICcwJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdwcm9tX2NsZWFuJywgJzEnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmdsVmFsdWUpIHBhcmFtcy5hcHBlbmQoJ19nbCcsIHRoaXMuZ2xWYWx1ZSk7XG5cbiAgICAgICAgY29uc3Qgc2VwID0gdGhpcy5idXR0b24udXJsLmluY2x1ZGVzKCc/JykgPyAnJicgOiAnPyc7XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVkVXJsID0gYCR7dGhpcy5idXR0b24udXJsfSR7c2VwfSR7cGFyYW1zLnRvU3RyaW5nKCl9YDtcbiAgICB9XG5cbiAgICBhcHBseUd1ZXN0cygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYWR1bHRzU2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkdWx0JykgYXMgSFRNTFNlbGVjdEVsZW1lbnQgfCBudWxsO1xuICAgICAgICBjb25zdCBraWRzU2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoaWxkJykgYXMgSFRNTFNlbGVjdEVsZW1lbnQgfCBudWxsO1xuXG4gICAgICAgIGlmIChhZHVsdHNTZWxlY3QpIHRoaXMuZ3Vlc3RzLmFkdWx0cyA9IE51bWJlcihhZHVsdHNTZWxlY3QudmFsdWUpIHx8IDI7XG4gICAgICAgIGlmIChraWRzU2VsZWN0KSB0aGlzLmd1ZXN0cy5raWRzID0gTnVtYmVyKGtpZHNTZWxlY3QudmFsdWUpIHx8IDA7XG5cbiAgICAgICAgLy8g8J+UuSBHdWFyZGEgZW4gc2Vzc2lvblN0b3JhZ2VcbiAgICAgICAgdGhpcy5zYXZlRW5naW5lRGF0YSgpO1xuXG4gICAgICAgIC8vIPCflLkgQWN0dWFsaXphIGxhIFVSTCBjb24gbG9zIG51ZXZvcyB2YWxvcmVzXG4gICAgICAgIHRoaXMudXBkYXRlR2VuZXJhdGVkVXJsKCk7XG5cbiAgICAgICAgLy8g8J+UuSBSZWZyZXNjYSBsYSBVSSBkZWwgY29udGFkb3IgKGNhbXBvIHByaW5jaXBhbCDigJxndWVzdHPigJ0pXG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBjb25zdCBndWVzdHNMYWJlbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgICAgICAgJy5qcy1wZXJzb25hcy1zdWJmaWVsZHMgLmJhbm5lcl9fZmllbGRDb250cm9sJ1xuICAgICAgICAgICAgKSBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG4gICAgICAgICAgICBpZiAoZ3Vlc3RzTGFiZWwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0b3RhbCA9IHRoaXMuZ3Vlc3RzLmFkdWx0cyArIHRoaXMuZ3Vlc3RzLmtpZHM7XG4gICAgICAgICAgICAgICAgZ3Vlc3RzTGFiZWwudGV4dENvbnRlbnQgPSB0b3RhbCA8PSA5ID8gJzAnICsgdG90YWwgOiBTdHJpbmcodG90YWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG5cbiAgICBvblN1Ym1pdChlOiBFdmVudCk6IHZvaWQge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMudXBkYXRlR2VuZXJhdGVkVXJsKCk7XG4gICAgICAgIGlmICh0aGlzLmdlbmVyYXRlZFVybCkge1xuICAgICAgICAgICAgd2luZG93Lm9wZW4odGhpcy5nZW5lcmF0ZWRVcmwsICdfYmxhbmsnKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdXJvSG90ZWwge1xuICAgIGlkPzogc3RyaW5nO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgdGlja2V0Pzogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBQdXJvR3Vlc3RWYWx1ZSB7XG4gICAgYWR1bHRzOiBudW1iZXI7XG4gICAga2lkczogeyBjb2RlPzogbnVtYmVyOyBjb2RlQWdlcz86IG51bWJlcltdIH07XG4gICAgaW5mYW50czogbnVtYmVyO1xufVxuIiwiQGlmIChmb3JtKSB7XG4gICAgPGZvcm1cbiAgICAgICAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgICAgICAgc2NyaXB0TG9hZGVyXG4gICAgICAgIFtkYXRhTG9hZGVkXT1cInRydWVcIlxuICAgICAgICAoc3VibWl0KT1cIm9uU3VibWl0KCRldmVudClcIlxuICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJhbm5lcl9fZmlsdGVyXCI+XG4gICAgICAgICAgICA8IS0tIPCflLkgRkVDSEEgREUgRU5UUkFEQSAtLT5cbiAgICAgICAgICAgIEBpZiAoZGF0ZXBpY2tlckluKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhbm5lcl9fZmllbGRHcm91cFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWVsZElubmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGRhdGVwaWNrZXJJbi50aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImJhbm5lcl9fZmllbGRMYWJlbFwiIGZvcj1cIkluLWRhdGUxXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRhdGVwaWNrZXJJbi50aXRsZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYW5uZXJfX2ZpZWxkQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cIkluLWRhdGUxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRvZ2dsZT1cImRhdGVwaWNrZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiSW4tZGF0ZTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cImRhdGVwaWNrZXJJbi5wbGFjZWhvbGRlciA/PyAnZGQvbW0veXl5eSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRhdGVwaWNrZXJJblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWVsZEljb25cIj48aSBjbGFzcz1cImljb24tODlcIj48L2k+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8IS0tIPCflLkgRkVDSEEgREUgU0FMSURBIC0tPlxuICAgICAgICAgICAgQGlmIChkYXRlcGlja2VyT3V0KSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhbm5lcl9fZmllbGRHcm91cFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWVsZElubmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGRhdGVwaWNrZXJPdXQudGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJiYW5uZXJfX2ZpZWxkTGFiZWxcIiBmb3I9XCJPdXQtZGF0ZTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZGF0ZXBpY2tlck91dC50aXRsZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYW5uZXJfX2ZpZWxkQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cIk91dC1kYXRlMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJkYXRlcGlja2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cIk91dC1kYXRlMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwiZGF0ZXBpY2tlck91dC5wbGFjZWhvbGRlciA/PyAnZGQvbW0veXl5eSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRhdGVwaWNrZXJPdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhbm5lcl9fZmllbGRJY29uXCI+PGkgY2xhc3M9XCJpY29uLTg5XCI+PC9pPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPCEtLSDwn5S5IEhVw4lTUEVERVMgLS0+XG4gICAgICAgICAgICBAaWYgKGd1ZXN0c0lucHV0KSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhbm5lcl9fZmllbGRHcm91cFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhbm5lcl9fZmllbGRJbm5lciBqcy1wZXJzb25hcy1zdWJmaWVsZHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImd1ZXN0c0lucHV0LnRpdGxlID8/ICdHdWVzdHMnXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChndWVzdHNJbnB1dC50aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImJhbm5lcl9fZmllbGRMYWJlbFwiPnt7IGd1ZXN0c0lucHV0LnRpdGxlIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYW5uZXJfX2ZpZWxkQ29udHJvbFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhbm5lcl9fZmllbGRJY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBhcmlhLWhpZGRlbj1cInRydWVcIiBmb2N1c2FibGU9XCJmYWxzZVwiIHdpZHRoPVwiMTVcIiBoZWlnaHQ9XCI4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1c2UgaHJlZj1cIiNzZWxlY3QtYXJyb3dcIj48L3VzZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhbm5lcl9fZmllbGRTdWIganMtZmllbGRTdWJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWR1bHRzRHJvcGRvd24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWVsZElubmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImJhbm5lcl9fZmllbGRMYWJlbFwiIGZvcj1cImFkdWx0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhZHVsdHNEcm9wZG93bi50aXRsZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhbm5lcl9fZmllbGRDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJhZHVsdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImFkdWx0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiYXBwbHlHdWVzdHMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKG9wdGlvbiBvZiBhZHVsdHNEcm9wZG93bi5vcHRpb25zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJvcHRpb24uY29kZVwiPnt7IG9wdGlvbi5uYW1lIH19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWVsZEljb25cIj48aSBjbGFzcz1cImljb24tOTJcIj48L2k+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoa2lkc0Ryb3Bkb3duKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhbm5lcl9fZmllbGRJbm5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJiYW5uZXJfX2ZpZWxkTGFiZWxcIiBmb3I9XCJjaGlsZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sga2lkc0Ryb3Bkb3duLnRpdGxlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFubmVyX19maWVsZENvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImNoaWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY2hpbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJhcHBseUd1ZXN0cygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAob3B0aW9uIG9mIGtpZHNEcm9wZG93bi5vcHRpb25zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJvcHRpb24uY29kZVwiPnt7IG9wdGlvbi5uYW1lIH19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWVsZEljb25cIj48aSBjbGFzcz1cImljb24tOTNcIj48L2k+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYnRuQXBwbHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuX19ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bl9fcHJpbWFyeSBqcy1hcHBseS1ndWVzdHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJidG5BcHBseS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYXBwbHlHdWVzdHMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGJ0bkFwcGx5LmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIDwhLS0g8J+UuSBQUk9NTyBDT0RFIC0tPlxuICAgICAgICAgICAgQGlmIChwcm9tb0lucHV0KSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhbm5lcl9fZmllbGRHcm91cFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWVsZElubmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJiYW5uZXJfX2ZpZWxkTGFiZWxcIj57eyBwcm9tb0lucHV0LnRpdGxlIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInh4eHhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFubmVyX19maWVsZENvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInByb21vSW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhbm5lcl9fZmllbGRJY29uXCI+PGkgY2xhc3M9XCJpY29uLTkwXCI+PC9pPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPCEtLSDwn5S5IEJPVMOTTiAtLT5cbiAgICAgICAgICAgIEBpZiAoYnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhbm5lcl9fZmllbGRCdG5cIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG5fX3ByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJidXR0b24ubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBidXR0b24ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG59XG4iXX0=
257
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1lbmdpbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1lbmdpbmUvcHVyby1lbmdpbmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1lbmdpbmUvcHVyby1lbmdpbmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxLQUFLLEVBRUwsV0FBVyxFQUNYLE1BQU0sRUFDTixNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILFdBQVcsRUFFWCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLFVBQVUsR0FDYixNQUFNLGdCQUFnQixDQUFDO0FBR3hCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFldEQsTUFBTSxPQUFPLG1CQUFtQjtJQWJoQztRQWNxQixPQUFFLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pCLGVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDakMsUUFBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2hDLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFlekMsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsV0FBTSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFD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bmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgUExBVEZPUk1fSUQsXG4gICAgaW5qZWN0LFxuICAgIE5nWm9uZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEZvcm1CdWlsZGVyLFxuICAgIEZvcm1Hcm91cCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFB1cm9CdXR0b25JLCBQdXJvSW5wdXRJIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBQdXJvRHJvcGRvd25JIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9wdXJvLWRyb3Bkb3duLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQdXJvU2NyaXB0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaWItcHVyby1lbmdpbmUnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBQdXJvU2NyaXB0RGlyZWN0aXZlLFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3B1cm8tZW5naW5lLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vcHVyby1lbmdpbmUuY29tcG9uZW50LnNjc3MnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQdXJvRW5naW5lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gICAgQElucHV0KCkgZGF0ZXBpY2tlckluPzogUHVyb0lucHV0STtcbiAgICBASW5wdXQoKSBkYXRlcGlja2VyT3V0PzogUHVyb0lucHV0STtcbiAgICBASW5wdXQoKSBndWVzdHNJbnB1dD86IFB1cm9JbnB1dEk7XG4gICAgQElucHV0KCkgcHJvbW9JbnB1dD86IFB1cm9JbnB1dEk7XG4gICAgQElucHV0KCkgYWR1bHRzRHJvcGRvd24/OiBQdXJvRHJvcGRvd25JO1xuICAgIEBJbnB1dCgpIGtpZHNEcm9wZG93bj86IFB1cm9Ecm9wZG93bkk7XG4gICAgQElucHV0KCkgYnRuQXBwbHk/OiBQdXJvQnV0dG9uSTtcbiAgICBASW5wdXQoKSBidXR0b24/OiBQdXJvQnV0dG9uSTtcbiAgICBASW5wdXQoKSBsYW5nPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGNvZGlnbz86IHN0cmluZztcbiAgICBASW5wdXQoKSBnbFZhbHVlPzogc3RyaW5nO1xuXG4gICAgZm9ybSE6IEZvcm1Hcm91cDtcbiAgICBnZW5lcmF0ZWRVcmwgPSAnJztcbiAgICBndWVzdHMgPSB7IGFkdWx0czogMiwga2lkczogMCB9O1xuICAgIHByaXZhdGUgaXNTeW5jaW5nID0gZmFsc2U7XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBjb25zdCB0b21vcnJvdyA9IG5ldyBEYXRlKHRvZGF5KTtcbiAgICAgICAgdG9tb3Jyb3cuc2V0RGF0ZSh0b2RheS5nZXREYXRlKCkgKyAxKTtcblxuICAgICAgICBjb25zdCBmb3JtYXR0ZWRUb2RheSA9IHRoaXMuZm9ybWF0RGF0ZSh0b2RheSk7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZFRvbW9ycm93ID0gdGhpcy5mb3JtYXREYXRlKHRvbW9ycm93KTtcblxuICAgICAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgICAgIGRhdGVwaWNrZXJJbjogW1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZXBpY2tlckluPy52YWx1ZSB8fCBmb3JtYXR0ZWRUb2RheSxcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGRhdGVwaWNrZXJPdXQ6IFtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVwaWNrZXJPdXQ/LnZhbHVlIHx8IGZvcm1hdHRlZFRvbW9ycm93LFxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcHJvbW9JbnB1dDogW3RoaXMucHJvbW9JbnB1dD8udmFsdWUgfHwgJyddLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChcbiAgICAgICAgICAgICAgICAgICAgKGEsIGIpID0+IEpTT04uc3RyaW5naWZ5KGEpID09PSBKU09OLnN0cmluZ2lmeShiKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlR2VuZXJhdGVkVXJsKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zYXZlRW5naW5lRGF0YSgpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5iaW5kRGF0ZXBpY2tlckV2ZW50cygpLCA0MDApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVHZW5lcmF0ZWRVcmwoKTtcbiAgICB9XG5cbiAgICAvKiogVmluY3VsYSBsb3MgaW5wdXRzIGRlbCBwbHVnaW4gZGF0ZXBpY2tlciBjb24gZWwgZm9ybXVsYXJpbyBBbmd1bGFyICovXG4gICAgcHJpdmF0ZSBiaW5kRGF0ZXBpY2tlckV2ZW50cygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5JbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgICAgICAgJ0luLWRhdGUxJ1xuICAgICAgICApIGFzIEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsO1xuICAgICAgICBjb25zdCBvdXRJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgICAgICAgJ091dC1kYXRlMSdcbiAgICAgICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbDtcbiAgICAgICAgaWYgKCFpbklucHV0IHx8ICFvdXRJbnB1dCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IGZpcmVOYXRpdmUgPSAoZWw6IEhUTUxJbnB1dEVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgIGVsLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSB9KSk7XG4gICAgICAgICAgICBlbC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZWwuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdjaGFuZ2VEYXRlJywgeyBidWJibGVzOiB0cnVlIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gY2F0Y2gge31cbiAgICAgICAgfTtcblxuICAgICAgICAvKiogU2luY3Jvbml6YSB2YWxvcmVzIGRlc2RlIGVsIHBsdWdpbiBoYWNpYSBlbCBmb3JtIEFuZ3VsYXIgKi9cbiAgICAgICAgY29uc3Qgc3luY0Zyb21QbHVnaW4gPSAoc291cmNlOiAnaW4nIHwgJ291dCcpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU3luY2luZykgcmV0dXJuO1xuICAgICAgICAgICAgdGhpcy5pc1N5bmNpbmcgPSB0cnVlO1xuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByYXdJbiA9IChpbklucHV0LnZhbHVlIHx8ICcnKS50cmltKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd091dCA9IChvdXRJbnB1dC52YWx1ZSB8fCAnJykudHJpbSgpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIExsZWdhZGFcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJhd0luICYmIHJhd0luICE9PSB0aGlzLmZvcm0udmFsdWUuZGF0ZXBpY2tlckluKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGRhdGVwaWNrZXJJbjogcmF3SW4gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGVtaXRFdmVudDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbkRhdGUgPSB0aGlzLnBhcnNlRGF0ZShyYXdJbik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvdXREYXRlID0gcmF3T3V0ID8gdGhpcy5wYXJzZURhdGUocmF3T3V0KSA6IG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNpIGxhIHNhbGlkYSA8PSBsbGVnYWRhIOKGkiBmb3J6YXIgKzEgZMOtYVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvdXREYXRlIHx8IG91dERhdGUgPD0gaW5EYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGx1czEgPSBuZXcgRGF0ZShpbkRhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsdXMxLnNldERhdGUoaW5EYXRlLmdldERhdGUoKSArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZE91dCA9IHRoaXMuZm9ybWF0RGF0ZShwbHVzMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0SW5wdXQudmFsdWUgPSBmb3JtYXR0ZWRPdXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyZU5hdGl2ZShvdXRJbnB1dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgZGF0ZXBpY2tlck91dDogZm9ybWF0dGVkT3V0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgZW1pdEV2ZW50OiB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gU2FsaWRhXG4gICAgICAgICAgICAgICAgICAgIGlmIChyYXdPdXQgJiYgcmF3T3V0ICE9PSB0aGlzLmZvcm0udmFsdWUuZGF0ZXBpY2tlck91dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBkYXRlcGlja2VyT3V0OiByYXdPdXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGVtaXRFdmVudDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gbGltcGlhciBwbGFjZWhvbGRlcnMgdmlzdWFsbWVudGVcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluSW5wdXQudmFsdWUpIGluSW5wdXQucGxhY2Vob2xkZXIgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgaWYgKG91dElucHV0LnZhbHVlKSBvdXRJbnB1dC5wbGFjZWhvbGRlciA9ICcnO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTeW5jaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8g8J+UuSBFc2N1Y2hhciBldmVudG9zIGRlbCBwbHVnaW4geSBkZSBpbnB1dCBuYXRpdm9cbiAgICAgICAgY29uc3QgZXZlbnRzID0gW1xuICAgICAgICAgICAgJ2NoYW5nZScsXG4gICAgICAgICAgICAnaW5wdXQnLFxuICAgICAgICAgICAgJ2JsdXInLFxuICAgICAgICAgICAgJ2NsaWNrJyxcbiAgICAgICAgICAgICdjaGFuZ2VEYXRlJyxcbiAgICAgICAgICAgICdkYXRlQ2hhbmdlJyxcbiAgICAgICAgICAgICdhcHBseS5kYXRlcmFuZ2VwaWNrZXInLFxuICAgICAgICBdO1xuICAgICAgICBldmVudHMuZm9yRWFjaCgoZXZ0KSA9PlxuICAgICAgICAgICAgaW5JbnB1dC5hZGRFdmVudExpc3RlbmVyKGV2dCwgKCkgPT4gc3luY0Zyb21QbHVnaW4oJ2luJykpXG4gICAgICAgICk7XG4gICAgICAgIGV2ZW50cy5mb3JFYWNoKChldnQpID0+XG4gICAgICAgICAgICBvdXRJbnB1dC5hZGRFdmVudExpc3RlbmVyKGV2dCwgKCkgPT4gc3luY0Zyb21QbHVnaW4oJ291dCcpKVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIPCflLkgU2luY3Jvbml6YWNpw7NuIHByb2FjdGl2YSAoY2FkYSA1MDBtcylcbiAgICAgICAgc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNTeW5jaW5nKSByZXR1cm47XG4gICAgICAgICAgICBjb25zdCByYXdJbiA9IChpbklucHV0LnZhbHVlIHx8ICcnKS50cmltKCk7XG4gICAgICAgICAgICBjb25zdCByYXdPdXQgPSAob3V0SW5wdXQudmFsdWUgfHwgJycpLnRyaW0oKTtcbiAgICAgICAgICAgIGlmIChyYXdJbiAmJiByYXdJbiAhPT0gdGhpcy5mb3JtLnZhbHVlLmRhdGVwaWNrZXJJbikge1xuICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBkYXRlcGlja2VySW46IHJhd0luIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGVtaXRFdmVudDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJhd091dCAmJiByYXdPdXQgIT09IHRoaXMuZm9ybS52YWx1ZS5kYXRlcGlja2VyT3V0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGRhdGVwaWNrZXJPdXQ6IHJhd091dCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgNTAwKTtcblxuICAgICAgICAvLyDwn5S5IFJlZnJlc2NhciBwbGFjZWhvbGRlcnMgaW5pY2lhbGVzXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogR3VhcmRhIGVuIHNlc3Npb25TdG9yYWdlICovXG4gICAgcHJpdmF0ZSBzYXZlRW5naW5lRGF0YSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XG4gICAgICAgIGNvbnN0IHsgZGF0ZXBpY2tlckluLCBkYXRlcGlja2VyT3V0LCBwcm9tb0lucHV0IH0gPSB0aGlzLmZvcm0udmFsdWU7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAgICAgICBkYXRlaW46IGRhdGVwaWNrZXJJbixcbiAgICAgICAgICAgIGRhdGVvdXQ6IGRhdGVwaWNrZXJPdXQsXG4gICAgICAgICAgICBhZHVsdHM6IHRoaXMuZ3Vlc3RzLmFkdWx0cyxcbiAgICAgICAgICAgIGtpZHM6IHRoaXMuZ3Vlc3RzLmtpZHMsXG4gICAgICAgICAgICBwcm9tbzogcHJvbW9JbnB1dCB8fCAnJyxcbiAgICAgICAgfTtcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgncHVyb0VuZ2luZURhdGEnLCBKU09OLnN0cmluZ2lmeShwYXlsb2FkKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXREYXRlKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBkZCA9IFN0cmluZyhkYXRlLmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICAgICAgY29uc3QgbW0gPSBTdHJpbmcoZGF0ZS5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICAgICAgY29uc3QgeXl5eSA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgcmV0dXJuIGAke2RkfS8ke21tfS8ke3l5eXl9YDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBhcnNlRGF0ZSh2YWx1ZTogc3RyaW5nKTogRGF0ZSB7XG4gICAgICAgIGNvbnN0IGNsZWFuID0gdmFsdWUudHJpbSgpLnJlcGxhY2VBbGwoJy0nLCAnLycpLnJlcGxhY2VBbGwoJy4nLCAnLycpO1xuICAgICAgICBjb25zdCBbZCwgbSwgeV0gPSBjbGVhbi5zcGxpdCgnLycpLm1hcChOdW1iZXIpO1xuICAgICAgICByZXR1cm4gbmV3IERhdGUoeSwgbSAtIDEsIGQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9ybWF0RGF0ZUZvclVybChkYXRlU3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBbZCwgbSwgeV0gPSBkYXRlU3RyLnJlcGxhY2VBbGwoJy0nLCAnLycpLnNwbGl0KCcvJykubWFwKE51bWJlcik7XG4gICAgICAgIHJldHVybiBgJHtTdHJpbmcoZCkucGFkU3RhcnQoMiwgJzAnKX0tJHtTdHJpbmcobSkucGFkU3RhcnQoMiwgJzAnKX0tJHt5fWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVHZW5lcmF0ZWRVcmwoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5idXR0b24/LnVybCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHsgZGF0ZXBpY2tlckluLCBkYXRlcGlja2VyT3V0LCBwcm9tb0lucHV0IH0gPSB0aGlzLmZvcm0udmFsdWU7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcblxuICAgICAgICBpZiAodGhpcy5jb2RpZ28gJiYgdGhpcy5sYW5nKSB7XG4gICAgICAgICAgICBjb25zdCBpc01vYmlsZSA9XG4gICAgICAgICAgICAgICAgL01vYml8QW5kcm9pZHxpUGhvbmV8aVBhZHxpUG9kfFdpbmRvd3MgUGhvbmUvaS50ZXN0KFxuICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3IudXNlckFnZW50XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGFmZmlsaWF0ZSA9IGAke3RoaXMuY29kaWdvfV8ke3RoaXMubGFuZ31fJHtcbiAgICAgICAgICAgICAgICBpc01vYmlsZSA/ICdtb2JpbGUnIDogJ1BDJ1xuICAgICAgICAgICAgfWA7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdhZmZpbGlhdGUnLCBhZmZpbGlhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRhdGVwaWNrZXJJbiAmJiBkYXRlcGlja2VyT3V0KSB7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdkYXRlaW4nLCB0aGlzLmZvcm1hdERhdGVGb3JVcmwoZGF0ZXBpY2tlckluKSk7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdkYXRlb3V0JywgdGhpcy5mb3JtYXREYXRlRm9yVXJsKGRhdGVwaWNrZXJPdXQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmd1ZXN0cy5hZHVsdHMpXG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdhZHVsdG9zJywgU3RyaW5nKHRoaXMuZ3Vlc3RzLmFkdWx0cykpO1xuICAgICAgICBpZiAodGhpcy5ndWVzdHMua2lkcylcbiAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ2NoaWxkcmVuJywgU3RyaW5nKHRoaXMuZ3Vlc3RzLmtpZHMpKTtcblxuICAgICAgICBpZiAocHJvbW9JbnB1dCkge1xuICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgncHJvbScsIHByb21vSW5wdXQpO1xuICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgncHJvbV9jbGVhbicsICcwJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdwcm9tX2NsZWFuJywgJzEnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmdsVmFsdWUpIHBhcmFtcy5hcHBlbmQoJ19nbCcsIHRoaXMuZ2xWYWx1ZSk7XG5cbiAgICAgICAgY29uc3Qgc2VwID0gdGhpcy5idXR0b24udXJsLmluY2x1ZGVzKCc/JykgPyAnJicgOiAnPyc7XG4gICAgICAgIGNvbnN0IHNhZmVQYXJhbXMgPVxuICAgICAgICAgICAgcGFyYW1zICYmIHR5cGVvZiBwYXJhbXMudG9TdHJpbmcgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgICAgICA/IHBhcmFtcy50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgOiAnJztcbiAgICAgICAgdGhpcy5nZW5lcmF0ZWRVcmwgPSBgJHt0aGlzLmJ1dHRvbi51cmx9JHtzZXB9JHtzYWZlUGFyYW1zfWA7XG4gICAgfVxuXG4gICAgYXBwbHlHdWVzdHMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFkdWx0c1NlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgICAgICAgJ2FkdWx0J1xuICAgICAgICApIGFzIEhUTUxTZWxlY3RFbGVtZW50IHwgbnVsbDtcbiAgICAgICAgY29uc3Qga2lkc1NlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgICAgICAgJ2NoaWxkJ1xuICAgICAgICApIGFzIEhUTUxTZWxlY3RFbGVtZW50IHwgbnVsbDtcblxuICAgICAgICBpZiAoYWR1bHRzU2VsZWN0KSB0aGlzLmd1ZXN0cy5hZHVsdHMgPSBOdW1iZXIoYWR1bHRzU2VsZWN0LnZhbHVlKSB8fCAyO1xuICAgICAgICBpZiAoa2lkc1NlbGVjdCkgdGhpcy5ndWVzdHMua2lkcyA9IE51bWJlcihraWRzU2VsZWN0LnZhbHVlKSB8fCAwO1xuXG4gICAgICAgIC8vIPCflLkgR3VhcmRhIGVuIHNlc3Npb25TdG9yYWdlXG4gICAgICAgIHRoaXMuc2F2ZUVuZ2luZURhdGEoKTtcblxuICAgICAgICAvLyDwn5S5IEFjdHVhbGl6YSBsYSBVUkwgY29uIGxvcyBudWV2b3MgdmFsb3Jlc1xuICAgICAgICB0aGlzLnVwZGF0ZUdlbmVyYXRlZFVybCgpO1xuXG4gICAgICAgIC8vIPCflLkgUmVmcmVzY2EgbGEgVUkgZGVsIGNvbnRhZG9yIChjYW1wbyBwcmluY2lwYWwg4oCcZ3Vlc3Rz4oCdKVxuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgY29uc3QgZ3Vlc3RzTGFiZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgICAgICcuanMtcGVyc29uYXMtc3ViZmllbGRzIC5iYW5uZXJfX2ZpZWxkQ29udHJvbCdcbiAgICAgICAgICAgICkgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgICAgICAgICAgaWYgKGd1ZXN0c0xhYmVsKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdG90YWwgPSB0aGlzLmd1ZXN0cy5hZHVsdHMgKyB0aGlzLmd1ZXN0cy5raWRzO1xuICAgICAgICAgICAgICAgIGd1ZXN0c0xhYmVsLnRleHRDb250ZW50ID1cbiAgICAgICAgICAgICAgICAgICAgdG90YWwgPD0gOSA/ICcwJyArIHRvdGFsIDogU3RyaW5nKHRvdGFsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIG9uU3VibWl0KGU6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy51cGRhdGVHZW5lcmF0ZWRVcmwoKTtcbiAgICAgICAgaWYgKHRoaXMuZ2VuZXJhdGVkVXJsKSB7XG4gICAgICAgICAgICB3aW5kb3cub3Blbih0aGlzLmdlbmVyYXRlZFVybCwgJ19ibGFuaycpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1cm9Ib3RlbCB7XG4gICAgaWQ/OiBzdHJpbmc7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICB0aWNrZXQ/OiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIFB1cm9HdWVzdFZhbHVlIHtcbiAgICBhZHVsdHM6IG51bWJlcjtcbiAgICBraWRzOiB7IGNvZGU/OiBudW1iZXI7IGNvZGVBZ2VzPzogbnVtYmVyW10gfTtcbiAgICBpbmZhbnRzOiBudW1iZXI7XG59XG4iLCJAaWYgKGZvcm0pIHtcbiAgICA8Zm9ybVxuICAgICAgICBbZm9ybUdyb3VwXT1cImZvcm1cIlxuICAgICAgICBzY3JpcHRMb2FkZXJcbiAgICAgICAgW2RhdGFMb2FkZWRdPVwidHJ1ZVwiXG4gICAgICAgIChzdWJtaXQpPVwib25TdWJtaXQoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWx0ZXJcIj5cbiAgICAgICAgICAgIDwhLS0g8J+UuSBGRUNIQSBERSBFTlRSQURBIC0tPlxuICAgICAgICAgICAgQGlmIChkYXRlcGlja2VySW4pIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWVsZEdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYW5uZXJfX2ZpZWxkSW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZGF0ZXBpY2tlckluLnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYmFubmVyX19maWVsZExhYmVsXCIgZm9yPVwiSW4tZGF0ZTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZGF0ZXBpY2tlckluLnRpdGxlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhbm5lcl9fZmllbGRDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiSW4tZGF0ZTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiZGF0ZXBpY2tlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJJbi1kYXRlMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwiZGF0ZXBpY2tlckluLnBsYWNlaG9sZGVyID8/ICdkZC9tbS95eXl5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGF0ZXBpY2tlckluXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYW5uZXJfX2ZpZWxkSWNvblwiPjxpIGNsYXNzPVwiaWNvbi04OVwiPjwvaT48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIDwhLS0g8J+UuSBGRUNIQSBERSBTQUxJREEgLS0+XG4gICAgICAgICAgICBAaWYgKGRhdGVwaWNrZXJPdXQpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWVsZEdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYW5uZXJfX2ZpZWxkSW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZGF0ZXBpY2tlck91dC50aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImJhbm5lcl9fZmllbGRMYWJlbFwiIGZvcj1cIk91dC1kYXRlMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRlcGlja2VyT3V0LnRpdGxlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhbm5lcl9fZmllbGRDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiT3V0LWRhdGUxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRvZ2dsZT1cImRhdGVwaWNrZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiT3V0LWRhdGUxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJkYXRlcGlja2VyT3V0LnBsYWNlaG9sZGVyID8/ICdkZC9tbS95eXl5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGF0ZXBpY2tlck91dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWVsZEljb25cIj48aSBjbGFzcz1cImljb24tODlcIj48L2k+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8IS0tIPCflLkgSFXDiVNQRURFUyAtLT5cbiAgICAgICAgICAgIEBpZiAoZ3Vlc3RzSW5wdXQpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWVsZEdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFubmVyX19maWVsZElubmVyIGpzLXBlcnNvbmFzLXN1YmZpZWxkc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZ3Vlc3RzSW5wdXQudGl0bGUgPz8gJ0d1ZXN0cydcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGd1ZXN0c0lucHV0LnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYmFubmVyX19maWVsZExhYmVsXCI+e3sgZ3Vlc3RzSW5wdXQudGl0bGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhbm5lcl9fZmllbGRDb250cm9sXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWVsZEljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGZvY3VzYWJsZT1cImZhbHNlXCIgd2lkdGg9XCIxNVwiIGhlaWdodD1cIjhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZSBocmVmPVwiI3NlbGVjdC1hcnJvd1wiPjwvdXNlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWVsZFN1YiBqcy1maWVsZFN1YlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhZHVsdHNEcm9wZG93bikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYW5uZXJfX2ZpZWxkSW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYmFubmVyX19maWVsZExhYmVsXCIgZm9yPVwiYWR1bHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFkdWx0c0Ryb3Bkb3duLnRpdGxlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFubmVyX19maWVsZENvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImFkdWx0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiYWR1bHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJhcHBseUd1ZXN0cygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAob3B0aW9uIG9mIGFkdWx0c0Ryb3Bkb3duLm9wdGlvbnM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIm9wdGlvbi5jb2RlXCI+e3sgb3B0aW9uLm5hbWUgfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYW5uZXJfX2ZpZWxkSWNvblwiPjxpIGNsYXNzPVwiaWNvbi05MlwiPjwvaT48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChraWRzRHJvcGRvd24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWVsZElubmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImJhbm5lcl9fZmllbGRMYWJlbFwiIGZvcj1cImNoaWxkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBraWRzRHJvcGRvd24udGl0bGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYW5uZXJfX2ZpZWxkQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY2hpbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjaGlsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImFwcGx5R3Vlc3RzKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChvcHRpb24gb2Yga2lkc0Ryb3Bkb3duLm9wdGlvbnM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIm9wdGlvbi5jb2RlXCI+e3sgb3B0aW9uLm5hbWUgfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYW5uZXJfX2ZpZWxkSWNvblwiPjxpIGNsYXNzPVwiaWNvbi05M1wiPjwvaT48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChidG5BcHBseSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG5fX2dyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuX19wcmltYXJ5IGpzLWFwcGx5LWd1ZXN0c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImJ0bkFwcGx5LmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseUd1ZXN0cygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgYnRuQXBwbHkubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPCEtLSDwn5S5IFBST01PIENPREUgLS0+XG4gICAgICAgICAgICBAaWYgKHByb21vSW5wdXQpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWVsZEdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYW5uZXJfX2ZpZWxkSW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImJhbm5lcl9fZmllbGRMYWJlbFwiPnt7IHByb21vSW5wdXQudGl0bGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwieHh4eFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYW5uZXJfX2ZpZWxkQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicHJvbW9JbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWVsZEljb25cIj48aSBjbGFzcz1cImljb24tOTBcIj48L2k+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8IS0tIPCflLkgQk9Uw5NOIC0tPlxuICAgICAgICAgICAgQGlmIChidXR0b24pIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWVsZEJ0blwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bl9fcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImJ1dHRvbi5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGJ1dHRvbi5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cbn1cbiJdfQ==
@@ -323,7 +323,10 @@ export class PuroEngineModalComponent {
323
323
  if (!baseUrl)
324
324
  return;
325
325
  const sep = baseUrl.includes('?') ? '&' : '?';
326
- this.generatedUrl = `${baseUrl}${sep}${params.toString()}`;
326
+ const safeParams = params && typeof params.toString === 'function'
327
+ ? params.toString()
328
+ : '';
329
+ this.generatedUrl = `${baseUrl}${sep}${safeParams}`;
327
330
  }
328
331
  // actions
329
332
  applyGuests() {
@@ -360,4 +363,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
360
363
  }], ctorParameters: () => [], propDecorators: { isHotel: [{
361
364
  type: Input
362
365
  }] } });
363
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1lbmdpbmUtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1lbmdpbmUtbW9kYWwvcHVyby1lbmdpbmUtbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1lbmdpbmUtbW9kYWwvcHVyby1lbmdpbmUtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFdBQVcsR0FDZCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsV0FBVyxFQUVYLG1CQUFtQixFQUNuQixVQUFVLEdBQ2IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBaUIvRCxNQUFNLE9BQU8sd0JBQXdCO0lBbUJqQztRQWxCaUIsT0FBRSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6QixlQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pDLFFBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENB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K0dBbmJRLHdCQUF3QjttR0FBeEIsd0JBQXdCLGlIQ3RDckMsbTZxQkE4V0EsMElEbFZRLFlBQVksOEJBQ1osbUJBQW1CLHcyQ0FDbkIsbUJBQW1CLGlGQUNuQiwyQkFBMkIsaUlBQzNCLG1CQUFtQjs7NEZBTWQsd0JBQXdCO2tCQWRwQyxTQUFTOytCQUNJLHVCQUF1QixjQUNyQixJQUFJLFdBQ1A7d0JBQ0wsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsMkJBQTJCO3dCQUMzQixtQkFBbUI7cUJBQ3RCLG1CQUdnQix1QkFBdUIsQ0FBQyxNQUFNO3dEQVN0QyxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIGNvbXB1dGVkLFxuICAgIGVmZmVjdCxcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIFBMQVRGT1JNX0lELFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgRm9ybUJ1aWxkZXIsXG4gICAgRm9ybUdyb3VwLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBQdXJvU2xpZGVyRGlyZWN0aXZlLCBQdXJvU2NyaXB0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBQdXJvRHluYW1pY0hlYWRpbmdDb21wb25lbnQgfSBmcm9tICcuLi8uLi9zaGFyZWQvcHVyby1keW5hbWljLWhlYWRpbmcnO1xuaW1wb3J0IHsgTW9kYWxTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tb2RhbC1zdGF0ZSc7XG5pbXBvcnQgeyBQdXJvRW5naW5lTW9kYWxJIH0gZnJvbSAnLi9wdXJvLWVuZ2luZS1tb2RhbC5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xpYi1wdXJvLWVuZ2luZS1tb2RhbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgUHVyb1NsaWRlckRpcmVjdGl2ZSxcbiAgICAgICAgUHVyb0R5bmFtaWNIZWFkaW5nQ29tcG9uZW50LFxuICAgICAgICBQdXJvU2NyaXB0RGlyZWN0aXZlLFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3B1cm8tZW5naW5lLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vcHVyby1lbmdpbmUtbW9kYWwuY29tcG9uZW50LnNjc3MnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQdXJvRW5naW5lTW9kYWxDb21wb25lbnQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtb2RhbCA9IGluamVjdChNb2RhbFN0YXRlU2VydmljZSk7XG5cbiAgICBASW5wdXQoKSBpc0hvdGVsPzogYm9vbGVhbjtcblxuICAgIGlzT3BlbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMubW9kYWwuaXNFbmdpbmVPcGVuKCkpO1xuICAgIGRhdGEgPSBjb21wdXRlZDxQdXJvRW5naW5lTW9kYWxJIHwgdW5kZWZpbmVkPigoKSA9PlxuICAgICAgICB0aGlzLm1vZGFsLmVuZ2luZURhdGEoKVxuICAgICk7XG5cbiAgICBmb3JtPzogRm9ybUdyb3VwO1xuICAgIGdlbmVyYXRlZFVybCA9ICcnO1xuICAgIGd1ZXN0cyA9IHsgYWR1bHRzOiAyLCBraWRzOiAwIH07XG4gICAgcHJpdmF0ZSBjdXJyZW50RW5naW5lSWQ/OiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgLy8g8J+UuSBSZWFjY2lvbmEgYSBjYW1iaW9zIGRlbCBlbmdpbmVEYXRhIChudWV2byBtb3RvciBjYXJnYWRvKVxuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZW5naW5lRGF0YSA9IHRoaXMuZGF0YSgpO1xuICAgICAgICAgICAgaWYgKCFlbmdpbmVEYXRhPy5lbmdpbmUpIHJldHVybjtcblxuICAgICAgICAgICAgY29uc3QgbmV3RW5naW5lVXJsID1cbiAgICAgICAgICAgICAgICBlbmdpbmVEYXRhLmVuZ2luZS5idXR0b24/LnVybCA/PyBlbmdpbmVEYXRhLmVuZ2luZS51cmwgPz8gbnVsbDtcbiAgICAgICAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IGAke25ld0VuZ2luZVVybH1gO1xuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudEVuZ2luZUlkID09PSBzaWduYXR1cmUpIHJldHVybjtcblxuICAgICAgICAgICAgLy8g8J+noCBBbnRlcyBkZSByZS1pbmljaWFsaXphciwgY29uc2VydmEgZWwgaG90ZWwgc2VsZWNjaW9uYWRvIGFjdHVhbFxuICAgICAgICAgICAgY29uc3QgcHJldkxvY2F0aW9uID0gdGhpcy5mb3JtPy52YWx1ZS5sb2NhdGlvbjtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTZWxlY3RlZCA9IHRoaXMubW9kYWwuc2VsZWN0ZWRIb3RlbElkKCk7XG5cbiAgICAgICAgICAgIHRoaXMuY3VycmVudEVuZ2luZUlkID0gc2lnbmF0dXJlO1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplRm9ybShlbmdpbmVEYXRhKTtcblxuICAgICAgICAgICAgLy8g8J+ptSBSZXN0YXVyYSBzZWxlY2Npw7NuIHNpIGVsIG1vdG9yIGNhbWJpw7MgcG9yIHVwZGF0ZSBkZSBob3RlbFxuICAgICAgICAgICAgaWYgKGN1cnJlbnRTZWxlY3RlZCAmJiB0aGlzLmZvcm0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgeyBsb2NhdGlvbjogU3RyaW5nKGN1cnJlbnRTZWxlY3RlZCkgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXG4gICAgICAgICAgICAgICAgICAgICdsb2NhdGlvbidcbiAgICAgICAgICAgICAgICApIGFzIEhUTUxTZWxlY3RFbGVtZW50IHwgbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0RWwpIHNlbGVjdEVsLnZhbHVlID0gU3RyaW5nKGN1cnJlbnRTZWxlY3RlZCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHByZXZMb2NhdGlvbiAmJiB0aGlzLmZvcm0pIHtcbiAgICAgICAgICAgICAgICAvLyBmYWxsYmFjayBzaSBlbCBtb3RvciBzZSByZWNhcmdhIHNpbiBjYW1iaW8gZGUgaG90ZWxcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgeyBsb2NhdGlvbjogcHJldkxvY2F0aW9uIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgcHJvbW8gdmFsdWUgZW1wdHkgYW5kIHJlc2V0IGxhYmVsIHBvc2l0aW9uXG4gICAgICAgICAgICBjb25zdCBwcm9tb0lucHV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICAgICAgICAnI3Byb21vJ1xuICAgICAgICAgICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybT8uZ2V0KCdwcm9tb0lucHV0Jyk/LnZhbHVlID09PSAnJyAmJiBwcm9tb0lucHV0KSB7XG4gICAgICAgICAgICAgICAgcHJvbW9JbnB1dC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlTGFiZWxQb3NpdGlvbihwcm9tb0lucHV0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhvdGVsSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcbiAgICAgICAgICAgICAgICAgICAgICAgICdsb2NhdGlvbidcbiAgICAgICAgICAgICAgICAgICAgKSBhcyBIVE1MU2VsZWN0RWxlbWVudCB8IG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGhvdGVsSW5wdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlSG90ZWxMYWJlbFBvc2l0aW9uKGhvdGVsSW5wdXQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyDwn5S5IFJlZ2VuZXJhIGxhIFVSTCBjdWFuZG8gY2FtYmllbiBsb3MgdmFsb3JlcyBkZWwgbW90b3JcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVuZ2luZURhdGEgPSB0aGlzLmRhdGEoKTtcbiAgICAgICAgICAgIGlmICghZW5naW5lRGF0YT8uZW5naW5lIHx8ICF0aGlzLmZvcm0pIHJldHVybjtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlR2VuZXJhdGVkVXJsKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBkID0gdGhpcy5kYXRhKCk7XG4gICAgICAgIGlmIChkPy5lbmdpbmUpIHRoaXMuaW5pdGlhbGl6ZUZvcm0oZCk7XG4gICAgfVxuXG4gICAgLy8gZm9ybSBpbml0aWFsaXphdGlvblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZUZvcm0oZDogUHVyb0VuZ2luZU1vZGFsSSk6IHZvaWQge1xuICAgICAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGNvbnN0IHRvbW9ycm93ID0gbmV3IERhdGUodG9kYXkpO1xuICAgICAgICB0b21vcnJvdy5zZXREYXRlKHRvZGF5LmdldERhdGUoKSArIDEpO1xuXG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZFRvZGF5ID0gdGhpcy5mb3JtYXRETVkodG9kYXkpO1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWRUb21vcnJvdyA9IHRoaXMuZm9ybWF0RE1ZKHRvbW9ycm93KTtcblxuICAgICAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgICAgIGxvY2F0aW9uOiBbXG4gICAgICAgICAgICAgICAgZD8uZW5naW5lPy5sb2NhdGlvbkRyb3Bkb3duPy5vcHRpb25zPy5bMF0/LmNvZGUgfHwgJycsXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBkYXRlcGlja2VySW46IFtcbiAgICAgICAgICAgICAgICBkPy5lbmdpbmU/LmRhdGVwaWNrZXJJbj8udmFsdWUgfHwgZm9ybWF0dGVkVG9kYXksXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBkYXRlcGlja2VyT3V0OiBbXG4gICAgICAgICAgICAgICAgZD8uZW5naW5lPy5kYXRlcGlja2VyT3V0Py52YWx1ZSB8fCBmb3JtYXR0ZWRUb21vcnJvdyxcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHByb21vSW5wdXQ6IFtkPy5lbmdpbmU/LnByb21vSW5wdXQ/LnZhbHVlIHx8ICcnXSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5ub3JtYWxpemVEYXRlc0Zyb21Gb3JtKCk7XG5cbiAgICAgICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXG4gICAgICAgICAgICAgICAgICAgIChhLCBiKSA9PiBKU09OLnN0cmluZ2lmeShhKSA9PT0gSlNPTi5zdHJpbmdpZnkoYilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUdlbmVyYXRlZFVybCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZUVuZ2luZURhdGEoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJpbmREYXRlcGlja2VyRXZlbnRzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5iaW5kTG9jYXRpb25DaGFuZ2UoKTtcbiAgICAgICAgICAgIH0sIDQwMCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZUdlbmVyYXRlZFVybCgpO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvLyBsb2NhdGlvblxuICAgIHByaXZhdGUgYmluZExvY2F0aW9uQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcbiAgICAgICAgICAgICdsb2NhdGlvbidcbiAgICAgICAgKSBhcyBIVE1MU2VsZWN0RWxlbWVudCB8IG51bGw7XG4gICAgICAgIGlmICghc2VsZWN0KSByZXR1cm47XG5cbiAgICAgICAgc2VsZWN0LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkQ29kZSA9IHNlbGVjdC52YWx1ZTtcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkQ29kZSAhPT0gdGhpcy5mb3JtPy52YWx1ZS5sb2NhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0/LnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGxvY2F0aW9uOiBzZWxlY3RlZENvZGUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgZW1pdEV2ZW50OiB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVHZW5lcmF0ZWRVcmwoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zYXZlRW5naW5lRGF0YSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBob3RlbElkID0gTnVtYmVyKHNlbGVjdGVkQ29kZSkgfHwgbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLm1vZGFsLnNldFNlbGVjdGVkSG90ZWwoaG90ZWxJZCk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVHZW5lcmF0ZWRVcmwoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBsYWJlbCBzeXRsZVxuXG4gICAgcHVibGljIGNoYW5nZUxhYmVsUG9zaXRpb24oZTogRXZlbnQgfCBIVE1MSW5wdXRFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlucHV0VGFyZ2V0ID1cbiAgICAgICAgICAgIGUgaW5zdGFuY2VvZiBFdmVudCA/IChlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KSA6IGU7XG5cbiAgICAgICAgaWYgKCFpbnB1dFRhcmdldCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IGZpZWxkTGFiZWwgPSBpbnB1dFRhcmdldD8ucHJldmlvdXNTaWJsaW5nIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAgIGNvbnN0IHRleHRMZW5ndGggPSBpbnB1dFRhcmdldC52YWx1ZS5sZW5ndGggKiAxLjI7XG4gICAgICAgIGlmICh0ZXh0TGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgIGZpZWxkTGFiZWw/LnN0eWxlPy5zZXRQcm9wZXJ0eSgnLS1sYWJlbC1sZWZ0LXBvc2l0aW9uJywgJzhyZW0nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghKHRleHRMZW5ndGggPiAyOCkpXG4gICAgICAgICAgICAgICAgZmllbGRMYWJlbD8uc3R5bGU/LnNldFByb3BlcnR5KFxuICAgICAgICAgICAgICAgICAgICAnLS1sYWJlbC1sZWZ0LXBvc2l0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgdGV4dExlbmd0aCArIDMgKyAncmVtJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHVibGljIGNoYW5nZUhvdGVsTGFiZWxQb3NpdGlvbihlOiBFdmVudCB8IEhUTUxTZWxlY3RFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlucHV0VGFyZ2V0ID1cbiAgICAgICAgICAgIGUgaW5zdGFuY2VvZiBFdmVudCA/IChlLnRhcmdldCBhcyBIVE1MU2VsZWN0RWxlbWVudCkgOiBlO1xuICAgICAgICBjb25zdCBmaWVsZExhYmVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICAgIGBsYWJlbFtmb3I9XCIke2lucHV0VGFyZ2V0Py5pZH1cIl1gXG4gICAgICAgICkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHRleHQgPSBpbnB1dFRhcmdldC5vcHRpb25zW2lucHV0VGFyZ2V0LnNlbGVjdGVkSW5kZXhdLnRleHQ7XG5cbiAgICAgICAgY29uc3QgdGV4dExlbmd0aCA9IHRleHQubGVuZ3RoICogMS4yO1xuICAgICAgICBpZiAodGV4dExlbmd0aCA+IDI2ICYmIGZpZWxkTGFiZWwgJiYgZmllbGRMYWJlbC5zdHlsZSkge1xuICAgICAgICAgICAgZmllbGRMYWJlbD8uc3R5bGU/LnNldFByb3BlcnR5KCctLWxhYmVsLWxlZnQtcG9zaXRpb24nLCAnMzRyZW0nKTtcbiAgICAgICAgICAgIGZpZWxkTGFiZWwuc3R5bGUubWF4V2lkdGggPSAnMTAwcHgnO1xuICAgICAgICB9IGVsc2UgaWYgKGZpZWxkTGFiZWwgJiYgZmllbGRMYWJlbC5zdHlsZSkge1xuICAgICAgICAgICAgZmllbGRMYWJlbD8uc3R5bGU/LnNldFByb3BlcnR5KFxuICAgICAgICAgICAgICAgICctLWxhYmVsLWxlZnQtcG9zaXRpb24nLFxuICAgICAgICAgICAgICAgIHRleHRMZW5ndGggKyAyICsgJ3JlbSdcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBmaWVsZExhYmVsLnN0eWxlLm1heFdpZHRoID0gJ2luaGVyaXQnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZGF0ZXBpY2tlciBzeW5jXG4gICAgcHJpdmF0ZSBiaW5kRGF0ZXBpY2tlckV2ZW50cygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5JbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgICAgICAgJ0luLWRhdGUyJ1xuICAgICAgICApIGFzIEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsO1xuICAgICAgICBjb25zdCBvdXRJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgICAgICAgJ091dC1kYXRlMidcbiAgICAgICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbDtcbiAgICAgICAgaWYgKCFpbklucHV0IHx8ICFvdXRJbnB1dCkgcmV0dXJuO1xuXG4gICAgICAgIC8vIE5vcm1hbGl6YSBhIGRkL21tL3l5eXkgc2kgdmllbmUgY29uIG90cm9zIHNlcGFyYWRvcmVzXG4gICAgICAgIGNvbnN0IG5vcm0gPSAocmF3OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG0gPSByYXcudHJpbSgpLm1hdGNoKC8oXFxkezEsMn0pXFxEKyhcXGR7MSwyfSlcXEQrKFxcZHs0fSkvKTtcbiAgICAgICAgICAgIGlmICghbSkgcmV0dXJuICcnO1xuICAgICAgICAgICAgY29uc3QgZCA9IG1bMV0ucGFkU3RhcnQoMiwgJzAnKTtcbiAgICAgICAgICAgIGNvbnN0IG1vID0gbVsyXS5wYWRTdGFydCgyLCAnMCcpO1xuICAgICAgICAgICAgY29uc3QgeSA9IG1bM107XG4gICAgICAgICAgICByZXR1cm4gYCR7ZH0vJHttb30vJHt5fWA7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgYXBwbHlTeW5jID0gKCkgPT4ge1xuICAgICAgICAgICAgLy8gTMOpZSB2YWxvcmVzIHJlYWxlcyBkZWwgRE9NXG4gICAgICAgICAgICBjb25zdCByYXdJbiA9IGluSW5wdXQudmFsdWUgfHwgJyc7XG4gICAgICAgICAgICBjb25zdCByYXdPdXQgPSBvdXRJbnB1dC52YWx1ZSB8fCAnJztcblxuICAgICAgICAgICAgLy8gTm9ybWFsaXphXG4gICAgICAgICAgICBjb25zdCBpblN0ciA9IG5vcm0ocmF3SW4pO1xuICAgICAgICAgICAgY29uc3Qgb3V0U3RyID0gbm9ybShyYXdPdXQpO1xuXG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBwYXRjaGVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICBpZiAoaW5TdHIgJiYgaW5TdHIgIT09IHRoaXMuZm9ybT8udmFsdWUuZGF0ZXBpY2tlckluKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybT8ucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgZGF0ZXBpY2tlckluOiBpblN0ciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBwYXRjaGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG91dFN0ciAmJiBvdXRTdHIgIT09IHRoaXMuZm9ybT8udmFsdWUuZGF0ZXBpY2tlck91dCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0/LnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGRhdGVwaWNrZXJPdXQ6IG91dFN0ciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBwYXRjaGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBBc2VndXJhIG91dCA+PSBpbiAoKzEgbm9jaGUgc2kgaGFjZSBmYWx0YSlcbiAgICAgICAgICAgICAgICBjb25zdCBjaGFuZ2VkID0gdGhpcy5ub3JtYWxpemVEYXRlc0Zyb21Gb3JtKCk7XG4gICAgICAgICAgICAgICAgaWYgKGNoYW5nZWQgJiYgdGhpcy5mb3JtKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZGF0ZXBpY2tlck91dCB9ID0gdGhpcy5mb3JtLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0ZXBpY2tlck91dCAmJiBvdXRJbnB1dC52YWx1ZSAhPT0gZGF0ZXBpY2tlck91dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3V0SW5wdXQudmFsdWUgPSBkYXRlcGlja2VyT3V0OyAvLyByZWZsZWphIGVuIFVJIHBvciBzaSBlbCBwbHVnaW4gbm8gbG8gaGFjZVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHBhdGNoZWQgfHwgY2hhbmdlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUdlbmVyYXRlZFVybCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNhdmVFbmdpbmVEYXRhKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIPCflIEgV2F0Y2hlciBjb24gcmVxdWVzdEFuaW1hdGlvbkZyYW1lICh1bHRyYWxpZ2VybylcbiAgICAgICAgY29uc3Qgd2F0Y2hJbnB1dCA9IChlbDogSFRNTElucHV0RWxlbWVudCwgb25DaGFuZ2U6ICgpID0+IHZvaWQpID0+IHtcbiAgICAgICAgICAgIGxldCBsYXN0ID0gJyc7XG4gICAgICAgICAgICBjb25zdCB0aWNrID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1ciA9IGVsLnZhbHVlO1xuICAgICAgICAgICAgICAgIGlmIChjdXIgIT09IGxhc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgbGFzdCA9IGN1cjtcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRpY2spO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aWNrKTtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBEaXNwYXJhIHRhbWJpw6luIGVuIGV2ZW50b3Mg4oCccG9yIHNpIGFjYXNv4oCdXG4gICAgICAgIFsnaW5wdXQnLCAnY2hhbmdlJywgJ2JsdXInLCAna2V5dXAnLCAncGFzdGUnLCAnY2xpY2snXS5mb3JFYWNoKFxuICAgICAgICAgICAgKGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgIGluSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcihldnQsIGFwcGx5U3luYyk7XG4gICAgICAgICAgICAgICAgb3V0SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcihldnQsIGFwcGx5U3luYyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gQXJyYW5xdWVcbiAgICAgICAgYXBwbHlTeW5jKCk7XG4gICAgICAgIHdhdGNoSW5wdXQoaW5JbnB1dCwgYXBwbHlTeW5jKTtcbiAgICAgICAgd2F0Y2hJbnB1dChvdXRJbnB1dCwgYXBwbHlTeW5jKTtcbiAgICB9XG5cbiAgICAvLyBoZWxwZXJzXG4gICAgcHJpdmF0ZSBleHRyYWN0RE1ZKFxuICAgICAgICByYXc6IHN0cmluZ1xuICAgICk6IHsgZDogbnVtYmVyOyBtOiBudW1iZXI7IHk6IG51bWJlciB9IHwgbnVsbCB7XG4gICAgICAgIGlmICghcmF3KSByZXR1cm4gbnVsbDtcbiAgICAgICAgY29uc3QgbSA9IHJhdy5tYXRjaCgvKFxcZHsxLDJ9KVxcRCsoXFxkezEsMn0pXFxEKyhcXGR7NH0pLyk7XG4gICAgICAgIGlmICghbSkgcmV0dXJuIG51bGw7XG4gICAgICAgIGNvbnN0IGQgPSBOdW1iZXIobVsxXSk7XG4gICAgICAgIGNvbnN0IG1vID0gTnVtYmVyKG1bMl0pO1xuICAgICAgICBjb25zdCB5ID0gTnVtYmVyKG1bM10pO1xuICAgICAgICBpZiAoIWQgfHwgIW1vIHx8ICF5KSByZXR1cm4gbnVsbDtcbiAgICAgICAgcmV0dXJuIHsgZCwgbTogbW8sIHkgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRvRGF0ZSh7IGQsIG0sIHkgfTogeyBkOiBudW1iZXI7IG06IG51bWJlcjsgeTogbnVtYmVyIH0pOiBEYXRlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHksIG0gLSAxLCBkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvcm1hdERNWShkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZGQgPSBTdHJpbmcoZGF0ZS5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgICAgIGNvbnN0IG1tID0gU3RyaW5nKGRhdGUuZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgICAgIGNvbnN0IHl5eXkgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIHJldHVybiBgJHtkZH0vJHttbX0vJHt5eXl5fWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXREYXRlRm9yVXJsKGRhdGVTdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGRteSA9IHRoaXMuZXh0cmFjdERNWShkYXRlU3RyKTtcbiAgICAgICAgaWYgKCFkbXkpIHJldHVybiAnJztcbiAgICAgICAgY29uc3QgZGQgPSBTdHJpbmcoZG15LmQpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgICAgIGNvbnN0IG1tID0gU3RyaW5nKGRteS5tKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgICAgICBjb25zdCB5eXl5ID0gZG15Lnk7XG4gICAgICAgIHJldHVybiBgJHtkZH0tJHttbX0tJHt5eXl5fWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBub3JtYWxpemVEYXRlc0Zyb21Gb3JtKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuZm9ybSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBjb25zdCB7IGRhdGVwaWNrZXJJbiwgZGF0ZXBpY2tlck91dCB9ID0gdGhpcy5mb3JtLnZhbHVlO1xuXG4gICAgICAgIGNvbnN0IGluRE1ZID0gdGhpcy5leHRyYWN0RE1ZKFN0cmluZyhkYXRlcGlja2VySW4gfHwgJycpKTtcbiAgICAgICAgY29uc3Qgb3V0RE1ZID0gdGhpcy5leHRyYWN0RE1ZKFN0cmluZyhkYXRlcGlja2VyT3V0IHx8ICcnKSk7XG5cbiAgICAgICAgaWYgKCFpbkRNWSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IGluRGF0ZSA9IHRoaXMudG9EYXRlKGluRE1ZKTtcbiAgICAgICAgbGV0IHVwZGF0ZWQgPSBmYWxzZTtcblxuICAgICAgICBpZiAoIW91dERNWSB8fCB0aGlzLnRvRGF0ZShvdXRETVkpIDw9IGluRGF0ZSkge1xuICAgICAgICAgICAgY29uc3QgcGx1czEgPSBuZXcgRGF0ZShpbkRhdGUpO1xuICAgICAgICAgICAgcGx1czEuc2V0RGF0ZShpbkRhdGUuZ2V0RGF0ZSgpICsgMSk7XG4gICAgICAgICAgICBjb25zdCBuZXdPdXQgPSB0aGlzLmZvcm1hdERNWShwbHVzMSk7XG4gICAgICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgICAgICB7IGRhdGVwaWNrZXJPdXQ6IG5ld091dCB9LFxuICAgICAgICAgICAgICAgIHsgZW1pdEV2ZW50OiB0cnVlIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB1cGRhdGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cGRhdGVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2F2ZUVuZ2luZURhdGEoKTogdm9pZCB7XG4gICAgICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xuICAgICAgICBjb25zdCB7IGxvY2F0aW9uLCBkYXRlcGlja2VySW4sIGRhdGVwaWNrZXJPdXQsIHByb21vSW5wdXQgfSA9XG4gICAgICAgICAgICB0aGlzLmZvcm0hLnZhbHVlO1xuICAgICAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgICAgICAgbG9jYXRpb24sXG4gICAgICAgICAgICBkYXRlcGlja2VySW4sXG4gICAgICAgICAgICBkYXRlcGlja2VyT3V0LFxuICAgICAgICAgICAgcHJvbW9JbnB1dCxcbiAgICAgICAgICAgIC4uLnRoaXMuZ3Vlc3RzLFxuICAgICAgICB9O1xuICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdwdXJvRW5naW5lTW9kYWxEYXRhJywgSlNPTi5zdHJpbmdpZnkocGF5bG9hZCkpO1xuICAgIH1cblxuICAgIC8vIHVybCBnZW5lcmF0aW9uXG4gICAgcHJpdmF0ZSB1cGRhdGVHZW5lcmF0ZWRVcmwoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGQgPSB0aGlzLmRhdGEoKT8uZW5naW5lO1xuICAgICAgICBpZiAoIWQgfHwgIXRoaXMuZm9ybSkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMubm9ybWFsaXplRGF0ZXNGcm9tRm9ybSgpO1xuXG4gICAgICAgIGNvbnN0IHsgbG9jYXRpb24sIGRhdGVwaWNrZXJJbiwgZGF0ZXBpY2tlck91dCwgcHJvbW9JbnB1dCB9ID1cbiAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZTtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuXG4gICAgICAgIGlmIChsb2NhdGlvbikgcGFyYW1zLmFwcGVuZCgnaG90ZWwnLCBsb2NhdGlvbik7XG4gICAgICAgIGlmIChkYXRlcGlja2VySW4pXG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdkYXRlaW4nLCB0aGlzLmZvcm1hdERhdGVGb3JVcmwoZGF0ZXBpY2tlckluKSk7XG4gICAgICAgIGlmIChkYXRlcGlja2VyT3V0KVxuICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnZGF0ZW91dCcsIHRoaXMuZm9ybWF0RGF0ZUZvclVybChkYXRlcGlja2VyT3V0KSk7XG4gICAgICAgIGlmIChwcm9tb0lucHV0KSBwYXJhbXMuYXBwZW5kKCdwcm9tJywgcHJvbW9JbnB1dCk7XG4gICAgICAgIHBhcmFtcy5hcHBlbmQoJ2FkdWx0cycsIFN0cmluZyh0aGlzLmd1ZXN0cy5hZHVsdHMpKTtcbiAgICAgICAgcGFyYW1zLmFwcGVuZCgnY2hpbGRyZW4nLCBTdHJpbmcodGhpcy5ndWVzdHMua2lkcykpO1xuXG4gICAgICAgIGxldCBiYXNlVXJsID0gJyc7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNIb3RlbCkge1xuICAgICAgICAgICAgYmFzZVVybCA9IGQudXJsID8/IGQuYnV0dG9uPy51cmwgPz8gJyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEhvdGVsID0gZC5sb2NhdGlvbkRyb3Bkb3duPy5vcHRpb25zPy5maW5kKFxuICAgICAgICAgICAgICAgIChvcHQpID0+IFN0cmluZyhvcHQuY29kZSkgPT09IFN0cmluZyhsb2NhdGlvbilcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBiYXNlVXJsID0gc2VsZWN0ZWRIb3RlbD8udXJsID8/IGQudXJsID8/IGQuYnV0dG9uPy51cmwgPz8gJyc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWJhc2VVcmwpIHJldHVybjtcblxuICAgICAgICBjb25zdCBzZXAgPSBiYXNlVXJsLmluY2x1ZGVzKCc/JykgPyAnJicgOiAnPyc7XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVkVXJsID0gYCR7YmFzZVVybH0ke3NlcH0ke3BhcmFtcy50b1N0cmluZygpfWA7XG4gICAgfVxuXG4gICAgLy8gYWN0aW9uc1xuICAgIGFwcGx5R3Vlc3RzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhZHVsdHNTZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcbiAgICAgICAgICAgICdhZHVsdDEnXG4gICAgICAgICkgYXMgSFRNTFNlbGVjdEVsZW1lbnQgfCBudWxsO1xuICAgICAgICBjb25zdCBraWRzU2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXG4gICAgICAgICAgICAnY2hpbGQxJ1xuICAgICAgICApIGFzIEhUTUxTZWxlY3RFbGVtZW50IHwgbnVsbDtcbiAgICAgICAgaWYgKGFkdWx0c1NlbGVjdCkgdGhpcy5ndWVzdHMuYWR1bHRzID0gTnVtYmVyKGFkdWx0c1NlbGVjdC52YWx1ZSkgfHwgMjtcbiAgICAgICAgaWYgKGtpZHNTZWxlY3QpIHRoaXMuZ3Vlc3RzLmtpZHMgPSBOdW1iZXIoa2lkc1NlbGVjdC52YWx1ZSkgfHwgMDtcbiAgICAgICAgdGhpcy51cGRhdGVHZW5lcmF0ZWRVcmwoKTtcbiAgICB9XG5cbiAgICBvblN1Ym1pdChlOiBFdmVudCk6IHZvaWQge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMudXBkYXRlR2VuZXJhdGVkVXJsKCk7XG4gICAgICAgIGlmICh0aGlzLmdlbmVyYXRlZFVybCkge1xuICAgICAgICAgICAgd2luZG93Lm9wZW4odGhpcy5nZW5lcmF0ZWRVcmwsICdfYmxhbmsnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vZGFsLmNsb3NlRW5naW5lKCk7XG4gICAgfVxufVxuIiwiQGlmIChpc09wZW4oKSkge1xuICAgIDxzZWN0aW9uIGNsYXNzPVwiZW5naW5lLW1vZGFsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlbmdpbmUtbW9kYWxfX292ZXJsYXlcIiAoY2xpY2spPVwiY2xvc2UoKVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZW5naW5lLW1vZGFsX19jb250ZW50XCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZW5naW5lLW1vZGFsX19jbG9zZVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2xvc2UoKVwiPlxuICAgICAgICAgICAgICAgIOKclVxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiYm9va2luZ1wiPlxuICAgICAgICAgICAgICAgIDwhLS0g8J+UuSBTbGlkZXIgZGUgdmVudGFqYXMgLS0+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJvb2tpbmdfX2FkdmFudGFnZXMganMtYWN0aXZlLXNsaWRlclwiXG4gICAgICAgICAgICAgICAgICAgIGRhdGEtc2xpZGVyX25hbWU9XCJqcy1hZHYtc2xpZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgW3B1cm9TbGlkZXJdPVwiZGF0YSgpPy5hZHZhbnRhZ2VzPy5pdGVtc1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9va2luZ19fYWR2YW50YWdlcy0taW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZGF0YSgpPy50aXRsZUFkdmFudGFnZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXB1cm8tZHluYW1pYy1oZWFkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YWddPVwiZGF0YSgpPy50YWdzPy50aXRsZSB8fCAnc3BhbidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3NDbGFzcz1cImJvb2tpbmdfX3RpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwiZGF0YSgpPy50aXRsZUFkdmFudGFnZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2xpYi1wdXJvLWR5bmFtaWMtaGVhZGluZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJqcy1hZHYtc2xpZGVyIGFkdl9fc2xpZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gb2YgZGF0YSgpPy5hZHZhbnRhZ2VzPy5pdGVtcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgJGluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib29raW5nX19hZHZJdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uaWNvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJpdGVtLmljb25cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0udGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBpdGVtLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgaXRlbS5kZXNjcmlwdGlvbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwianMtc2xpZGVyLWFycm93c1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwhLS0g8J+UuSBGT1JNVUxBUklPIC0tPlxuICAgICAgICAgICAgICAgIEBpZiAoZm9ybSkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9va2luZ19fZm9ybVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvb2tpbmdfX2Zvcm0tLWlubmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1Ym1pdCk9XCJvblN1Ym1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0TG9hZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhTG9hZGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChkYXRhKCk/LmVuZ2luZT8udGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYm9va2luZ19fdGl0bGVcIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEoKT8uZW5naW5lPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9va2luZ19fYm94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFpc0hvdGVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSDwn5S5IExPQ0FUSU9OIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib29raW5nX19maWVsZEdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYm9va2luZ19fZmllbGRJbm5lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tbGFiZWwtbGVmdC1wb3NpdGlvbjogMzRyZW07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEoKT8uZW5naW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ubG9jYXRpb25Ecm9wZG93blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJib29raW5nX19maWVsZExhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwibG9jYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEoKT8uZW5naW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5sb2NhdGlvbkRyb3Bkb3duXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYm9va2luZ19fZmllbGRDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJsb2NhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJsb2NhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VIb3RlbExhYmVsUG9zaXRpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiBvZiBkYXRhKCk/LmVuZ2luZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5sb2NhdGlvbkRyb3Bkb3duXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Lm9wdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrICRpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLmNvZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvb2tpbmdfX2ZpZWxkSWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbi02MlwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSDwn5S5IERBVEVQSUNLRVJTIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvb2tpbmdfX2ZpZWxkR3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9va2luZ19fZmllbGRJbm5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYm9va2luZ19fZmllbGRMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJJbi1kYXRlMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tbGFiZWwtbGVmdC1wb3NpdGlvbjogMTRyZW07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEoKT8uZW5naW5lPy5kYXRlcGlja2VySW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJib29raW5nX19maWVsZENvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJJbi1kYXRlMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkYXRlcGlja2VySW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEoKT8uZW5naW5lPy5kYXRlcGlja2VySW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5wbGFjZWhvbGRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiZGF0ZXBpY2tlcjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZUxhYmVsUG9zaXRpb24oJGV2ZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvb2tpbmdfX2ZpZWxkSWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uLTg5XCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9va2luZ19fZmllbGRHcm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib29raW5nX19maWVsZElubmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJib29raW5nX19maWVsZExhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cIk91dC1kYXRlMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tbGFiZWwtbGVmdC1wb3NpdGlvbjogMTRyZW07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEoKT8uZW5naW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZGF0ZXBpY2tlck91dD8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYm9va2luZ19fZmllbGRDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiT3V0LWRhdGUyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRhdGVwaWNrZXJPdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEoKT8uZW5naW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZGF0ZXBpY2tlck91dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LnBsYWNlaG9sZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJkYXRlcGlja2VyMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlTGFiZWxQb3NpdGlvbigkZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9va2luZ19fZmllbGRJY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb24tODlcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0g8J+UuSBHVUVTVFMgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9va2luZ19fZmllbGRHcm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJib29raW5nX19maWVsZElubmVyIGpzLXBlcnNvbmFzLXN1YmZpZWxkc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJvb2tpbmdfX2ZpZWxkTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwiZ3Vlc3RzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1sYWJlbC1sZWZ0LXBvc2l0aW9uOiA2cmVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhKCk/LmVuZ2luZT8uZ3Vlc3RzSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib29raW5nX19maWVsZENvbnRyb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9va2luZ19fZmllbGRJY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTVcIiBoZWlnaHQ9XCI4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPVwiI3NlbGVjdC1hcnJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvdXNlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJvb2tpbmdfX2ZpZWxkU3ViIGpzLWZpZWxkU3ViXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib29raW5nX19maWVsZElubmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJvb2tpbmdfX2ZpZWxkTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cImFkdWx0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWxhYmVsLWxlZnQtcG9zaXRpb246IDZyZW07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhKCk/LmVuZ2luZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5hZHVsdHNEcm9wZG93blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJvb2tpbmdfX2ZpZWxkQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJhZHVsdDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiYXBwbHlHdWVzdHMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiBvZiBkYXRhKCk/LmVuZ2luZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5hZHVsdHNEcm9wZG93blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5vcHRpb25zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjayAkaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi5jb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb24ubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib29raW5nX19maWVsZEljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb24tOTJcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvb2tpbmdfX2ZpZWxkSW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYm9va2luZ19fZmllbGRMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwiY2hpbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tbGFiZWwtbGVmdC1wb3NpdGlvbjogNnJlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEoKT8uZW5naW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LmtpZHNEcm9wZG93blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJvb2tpbmdfX2ZpZWxkQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjaGlsZDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiYXBwbHlHdWVzdHMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiBvZiBkYXRhKCk/LmVuZ2luZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5raWRzRHJvcGRvd25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ub3B0aW9ucztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgJGluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24uY29kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9va2luZ19fZmllbGRJY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uLTkzXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG5fX2dyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuX19wcmltYXJ5IGpzLWFwcGx5LWd1ZXN0czFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseUd1ZXN0cygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhKCk/LmVuZ2luZT8uYnRuQXBwbHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ubGFiZWwgPz8gJ0FwcGx5J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0g8J+UuSBQUk9NTyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib29raW5nX19maWVsZEdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvb2tpbmdfX2ZpZWxkSW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJvb2tpbmdfX2ZpZWxkTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWxhYmVsLWxlZnQtcG9zaXRpb246IDlyZW07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwicHJvbW9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEoKT8uZW5naW5lPy5wcm9tb0lucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwicHJvbW9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ4eHh4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYm9va2luZ19fZmllbGRDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInByb21vSW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZUxhYmVsUG9zaXRpb24oJGV2ZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvb2tpbmdfX2ZpZWxkSWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uLTkwXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIPCflLkgU1VCTUlUIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bl9fZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG5fX3ByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEoKT8uZW5naW5lPy5idXR0b24/LmxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cbn1cbiJdfQ==
366
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1lbmdpbmUtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1lbmdpbmUtbW9kYWwvcHVyby1lbmdpbmUtbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1lbmdpbmUtbW9kYWwvcHVyby1lbmdpbmUtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFdBQVcsR0FDZCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsV0FBVyxFQUVYLG1CQUFtQixFQUNuQixVQUFVLEdBQ2IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBaUIvRCxNQUFNLE9BQU8sd0JBQXdCO0lBbUJqQztRQWxCaUIsT0FBRSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6QixlQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pDLFFBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENB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Q0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDNUM7SUFDTCxDQUFDO0lBRUQsS0FBSztRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDN0IsQ0FBQzsrR0F2YlEsd0JBQXdCO21HQUF4Qix3QkFBd0IsaUhDdENyQyxtNnFCQThXQSwwSURsVlEsWUFBWSw4QkFDWixtQkFBbUIsdzJDQUNuQixtQkFBbUIsaUZBQ25CLDJCQUEyQixpSUFDM0IsbUJBQW1COzs0RkFNZCx3QkFBd0I7a0JBZHBDLFNBQVM7K0JBQ0ksdUJBQXVCLGNBQ3JCLElBQUksV0FDUDt3QkFDTCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQiwyQkFBMkI7d0JBQzNCLG1CQUFtQjtxQkFDdEIsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU07d0RBU3RDLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgY29tcHV0ZWQsXG4gICAgZWZmZWN0LFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgUExBVEZPUk1fSUQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBGb3JtQnVpbGRlcixcbiAgICBGb3JtR3JvdXAsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFB1cm9TbGlkZXJEaXJlY3RpdmUsIFB1cm9TY3JpcHREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IFB1cm9EeW5hbWljSGVhZGluZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL3NoYXJlZC9wdXJvLWR5bmFtaWMtaGVhZGluZyc7XG5pbXBvcnQgeyBNb2RhbFN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21vZGFsLXN0YXRlJztcbmltcG9ydCB7IFB1cm9FbmdpbmVNb2RhbEkgfSBmcm9tICcuL3B1cm8tZW5naW5lLW1vZGFsLmludGVyZmFjZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGliLXB1cm8tZW5naW5lLW1vZGFsJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBQdXJvU2xpZGVyRGlyZWN0aXZlLFxuICAgICAgICBQdXJvRHluYW1pY0hlYWRpbmdDb21wb25lbnQsXG4gICAgICAgIFB1cm9TY3JpcHREaXJlY3RpdmUsXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHVyby1lbmdpbmUtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9wdXJvLWVuZ2luZS1tb2RhbC5jb21wb25lbnQuc2NzcycsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFB1cm9FbmdpbmVNb2RhbENvbXBvbmVudCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmYiA9IGluamVjdChGb3JtQnVpbGRlcik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1vZGFsID0gaW5qZWN0KE1vZGFsU3RhdGVTZXJ2aWNlKTtcblxuICAgIEBJbnB1dCgpIGlzSG90ZWw/OiBib29sZWFuO1xuXG4gICAgaXNPcGVuID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5tb2RhbC5pc0VuZ2luZU9wZW4oKSk7XG4gICAgZGF0YSA9IGNvbXB1dGVkPFB1cm9FbmdpbmVNb2RhbEkgfCB1bmRlZmluZWQ+KCgpID0+XG4gICAgICAgIHRoaXMubW9kYWwuZW5naW5lRGF0YSgpXG4gICAgKTtcblxuICAgIGZvcm0/OiBGb3JtR3JvdXA7XG4gICAgZ2VuZXJhdGVkVXJsID0gJyc7XG4gICAgZ3Vlc3RzID0geyBhZHVsdHM6IDIsIGtpZHM6IDAgfTtcbiAgICBwcml2YXRlIGN1cnJlbnRFbmdpbmVJZD86IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAvLyDwn5S5IFJlYWNjaW9uYSBhIGNhbWJpb3MgZGVsIGVuZ2luZURhdGEgKG51ZXZvIG1vdG9yIGNhcmdhZG8pXG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBlbmdpbmVEYXRhID0gdGhpcy5kYXRhKCk7XG4gICAgICAgICAgICBpZiAoIWVuZ2luZURhdGE/LmVuZ2luZSkgcmV0dXJuO1xuXG4gICAgICAgICAgICBjb25zdCBuZXdFbmdpbmVVcmwgPVxuICAgICAgICAgICAgICAgIGVuZ2luZURhdGEuZW5naW5lLmJ1dHRvbj8udXJsID8/IGVuZ2luZURhdGEuZW5naW5lLnVybCA/PyBudWxsO1xuICAgICAgICAgICAgY29uc3Qgc2lnbmF0dXJlID0gYCR7bmV3RW5naW5lVXJsfWA7XG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50RW5naW5lSWQgPT09IHNpZ25hdHVyZSkgcmV0dXJuO1xuXG4gICAgICAgICAgICAvLyDwn6egIEFudGVzIGRlIHJlLWluaWNpYWxpemFyLCBjb25zZXJ2YSBlbCBob3RlbCBzZWxlY2Npb25hZG8gYWN0dWFsXG4gICAgICAgICAgICBjb25zdCBwcmV2TG9jYXRpb24gPSB0aGlzLmZvcm0/LnZhbHVlLmxvY2F0aW9uO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFNlbGVjdGVkID0gdGhpcy5tb2RhbC5zZWxlY3RlZEhvdGVsSWQoKTtcblxuICAgICAgICAgICAgdGhpcy5jdXJyZW50RW5naW5lSWQgPSBzaWduYXR1cmU7XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVGb3JtKGVuZ2luZURhdGEpO1xuXG4gICAgICAgICAgICAvLyDwn6m1IFJlc3RhdXJhIHNlbGVjY2nDs24gc2kgZWwgbW90b3IgY2FtYmnDsyBwb3IgdXBkYXRlIGRlIGhvdGVsXG4gICAgICAgICAgICBpZiAoY3VycmVudFNlbGVjdGVkICYmIHRoaXMuZm9ybSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICB7IGxvY2F0aW9uOiBTdHJpbmcoY3VycmVudFNlbGVjdGVkKSB9LFxuICAgICAgICAgICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0RWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcbiAgICAgICAgICAgICAgICAgICAgJ2xvY2F0aW9uJ1xuICAgICAgICAgICAgICAgICkgYXMgSFRNTFNlbGVjdEVsZW1lbnQgfCBudWxsO1xuICAgICAgICAgICAgICAgIGlmIChzZWxlY3RFbCkgc2VsZWN0RWwudmFsdWUgPSBTdHJpbmcoY3VycmVudFNlbGVjdGVkKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocHJldkxvY2F0aW9uICYmIHRoaXMuZm9ybSkge1xuICAgICAgICAgICAgICAgIC8vIGZhbGxiYWNrIHNpIGVsIG1vdG9yIHNlIHJlY2FyZ2Egc2luIGNhbWJpbyBkZSBob3RlbFxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICB7IGxvY2F0aW9uOiBwcmV2TG9jYXRpb24gfSxcbiAgICAgICAgICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBDaGVjayBpZiBwcm9tbyB2YWx1ZSBlbXB0eSBhbmQgcmVzZXQgbGFiZWwgcG9zaXRpb25cbiAgICAgICAgICAgIGNvbnN0IHByb21vSW5wdXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgICAgICcjcHJvbW8nXG4gICAgICAgICAgICApIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtPy5nZXQoJ3Byb21vSW5wdXQnKT8udmFsdWUgPT09ICcnICYmIHByb21vSW5wdXQpIHtcbiAgICAgICAgICAgICAgICBwcm9tb0lucHV0LnZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VMYWJlbFBvc2l0aW9uKHByb21vSW5wdXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaG90ZWxJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2xvY2F0aW9uJ1xuICAgICAgICAgICAgICAgICAgICApIGFzIEhUTUxTZWxlY3RFbGVtZW50IHwgbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaG90ZWxJbnB1dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VIb3RlbExhYmVsUG9zaXRpb24oaG90ZWxJbnB1dCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIPCflLkgUmVnZW5lcmEgbGEgVVJMIGN1YW5kbyBjYW1iaWVuIGxvcyB2YWxvcmVzIGRlbCBtb3RvclxuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZW5naW5lRGF0YSA9IHRoaXMuZGF0YSgpO1xuICAgICAgICAgICAgaWYgKCFlbmdpbmVEYXRhPy5lbmdpbmUgfHwgIXRoaXMuZm9ybSkgcmV0dXJuO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVHZW5lcmF0ZWRVcmwoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGQgPSB0aGlzLmRhdGEoKTtcbiAgICAgICAgaWYgKGQ/LmVuZ2luZSkgdGhpcy5pbml0aWFsaXplRm9ybShkKTtcbiAgICB9XG5cbiAgICAvLyBmb3JtIGluaXRpYWxpemF0aW9uXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplRm9ybShkOiBQdXJvRW5naW5lTW9kYWxJKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgICAgICAgY29uc3QgdG9tb3Jyb3cgPSBuZXcgRGF0ZSh0b2RheSk7XG4gICAgICAgIHRvbW9ycm93LnNldERhdGUodG9kYXkuZ2V0RGF0ZSgpICsgMSk7XG5cbiAgICAgICAgY29uc3QgZm9ybWF0dGVkVG9kYXkgPSB0aGlzLmZvcm1hdERNWSh0b2RheSk7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZFRvbW9ycm93ID0gdGhpcy5mb3JtYXRETVkodG9tb3Jyb3cpO1xuXG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICAgICAgbG9jYXRpb246IFtcbiAgICAgICAgICAgICAgICBkPy5lbmdpbmU/LmxvY2F0aW9uRHJvcGRvd24/Lm9wdGlvbnM/LlswXT8uY29kZSB8fCAnJyxcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGRhdGVwaWNrZXJJbjogW1xuICAgICAgICAgICAgICAgIGQ/LmVuZ2luZT8uZGF0ZXBpY2tlckluPy52YWx1ZSB8fCBmb3JtYXR0ZWRUb2RheSxcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGRhdGVwaWNrZXJPdXQ6IFtcbiAgICAgICAgICAgICAgICBkPy5lbmdpbmU/LmRhdGVwaWNrZXJPdXQ/LnZhbHVlIHx8IGZvcm1hdHRlZFRvbW9ycm93LFxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcHJvbW9JbnB1dDogW2Q/LmVuZ2luZT8ucHJvbW9JbnB1dD8udmFsdWUgfHwgJyddLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm5vcm1hbGl6ZURhdGVzRnJvbUZvcm0oKTtcblxuICAgICAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChcbiAgICAgICAgICAgICAgICAgICAgKGEsIGIpID0+IEpTT04uc3RyaW5naWZ5KGEpID09PSBKU09OLnN0cmluZ2lmeShiKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlR2VuZXJhdGVkVXJsKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zYXZlRW5naW5lRGF0YSgpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYmluZERhdGVwaWNrZXJFdmVudHMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJpbmRMb2NhdGlvbkNoYW5nZSgpO1xuICAgICAgICAgICAgfSwgNDAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlR2VuZXJhdGVkVXJsKCk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8vIGxvY2F0aW9uXG4gICAgcHJpdmF0ZSBiaW5kTG9jYXRpb25DaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgICAgICAgJ2xvY2F0aW9uJ1xuICAgICAgICApIGFzIEhUTUxTZWxlY3RFbGVtZW50IHwgbnVsbDtcbiAgICAgICAgaWYgKCFzZWxlY3QpIHJldHVybjtcblxuICAgICAgICBzZWxlY3QuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRDb2RlID0gc2VsZWN0LnZhbHVlO1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRDb2RlICE9PSB0aGlzLmZvcm0/LnZhbHVlLmxvY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybT8ucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbG9jYXRpb246IHNlbGVjdGVkQ29kZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUdlbmVyYXRlZFVybCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNhdmVFbmdpbmVEYXRhKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGhvdGVsSWQgPSBOdW1iZXIoc2VsZWN0ZWRDb2RlKSB8fCBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMubW9kYWwuc2V0U2VsZWN0ZWRIb3RlbChob3RlbElkKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUdlbmVyYXRlZFVybCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIGxhYmVsIHN5dGxlXG5cbiAgICBwdWJsaWMgY2hhbmdlTGFiZWxQb3NpdGlvbihlOiBFdmVudCB8IEhUTUxJbnB1dEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5wdXRUYXJnZXQgPVxuICAgICAgICAgICAgZSBpbnN0YW5jZW9mIEV2ZW50ID8gKGUudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpIDogZTtcblxuICAgICAgICBpZiAoIWlucHV0VGFyZ2V0KSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgZmllbGRMYWJlbCA9IGlucHV0VGFyZ2V0Py5wcmV2aW91c1NpYmxpbmcgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgY29uc3QgdGV4dExlbmd0aCA9IGlucHV0VGFyZ2V0LnZhbHVlLmxlbmd0aCAqIDEuMjtcbiAgICAgICAgaWYgKHRleHRMZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgZmllbGRMYWJlbD8uc3R5bGU/LnNldFByb3BlcnR5KCctLWxhYmVsLWxlZnQtcG9zaXRpb24nLCAnOHJlbScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCEodGV4dExlbmd0aCA+IDI4KSlcbiAgICAgICAgICAgICAgICBmaWVsZExhYmVsPy5zdHlsZT8uc2V0UHJvcGVydHkoXG4gICAgICAgICAgICAgICAgICAgICctLWxhYmVsLWxlZnQtcG9zaXRpb24nLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0TGVuZ3RoICsgMyArICdyZW0nXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwdWJsaWMgY2hhbmdlSG90ZWxMYWJlbFBvc2l0aW9uKGU6IEV2ZW50IHwgSFRNTFNlbGVjdEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5wdXRUYXJnZXQgPVxuICAgICAgICAgICAgZSBpbnN0YW5jZW9mIEV2ZW50ID8gKGUudGFyZ2V0IGFzIEhUTUxTZWxlY3RFbGVtZW50KSA6IGU7XG4gICAgICAgIGNvbnN0IGZpZWxkTGFiZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgYGxhYmVsW2Zvcj1cIiR7aW5wdXRUYXJnZXQ/LmlkfVwiXWBcbiAgICAgICAgKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgY29uc3QgdGV4dCA9IGlucHV0VGFyZ2V0Lm9wdGlvbnNbaW5wdXRUYXJnZXQuc2VsZWN0ZWRJbmRleF0udGV4dDtcblxuICAgICAgICBjb25zdCB0ZXh0TGVuZ3RoID0gdGV4dC5sZW5ndGggKiAxLjI7XG4gICAgICAgIGlmICh0ZXh0TGVuZ3RoID4gMjYgJiYgZmllbGRMYWJlbCAmJiBmaWVsZExhYmVsLnN0eWxlKSB7XG4gICAgICAgICAgICBmaWVsZExhYmVsPy5zdHlsZT8uc2V0UHJvcGVydHkoJy0tbGFiZWwtbGVmdC1wb3NpdGlvbicsICczNHJlbScpO1xuICAgICAgICAgICAgZmllbGRMYWJlbC5zdHlsZS5tYXhXaWR0aCA9ICcxMDBweCc7XG4gICAgICAgIH0gZWxzZSBpZiAoZmllbGRMYWJlbCAmJiBmaWVsZExhYmVsLnN0eWxlKSB7XG4gICAgICAgICAgICBmaWVsZExhYmVsPy5zdHlsZT8uc2V0UHJvcGVydHkoXG4gICAgICAgICAgICAgICAgJy0tbGFiZWwtbGVmdC1wb3NpdGlvbicsXG4gICAgICAgICAgICAgICAgdGV4dExlbmd0aCArIDIgKyAncmVtJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGZpZWxkTGFiZWwuc3R5bGUubWF4V2lkdGggPSAnaW5oZXJpdCc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBkYXRlcGlja2VyIHN5bmNcbiAgICBwcml2YXRlIGJpbmREYXRlcGlja2VyRXZlbnRzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbklucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXG4gICAgICAgICAgICAnSW4tZGF0ZTInXG4gICAgICAgICkgYXMgSFRNTElucHV0RWxlbWVudCB8IG51bGw7XG4gICAgICAgIGNvbnN0IG91dElucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXG4gICAgICAgICAgICAnT3V0LWRhdGUyJ1xuICAgICAgICApIGFzIEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsO1xuICAgICAgICBpZiAoIWluSW5wdXQgfHwgIW91dElucHV0KSByZXR1cm47XG5cbiAgICAgICAgLy8gTm9ybWFsaXphIGEgZGQvbW0veXl5eSBzaSB2aWVuZSBjb24gb3Ryb3Mgc2VwYXJhZG9yZXNcbiAgICAgICAgY29uc3Qgbm9ybSA9IChyYXc6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgY29uc3QgbSA9IHJhdy50cmltKCkubWF0Y2goLyhcXGR7MSwyfSlcXEQrKFxcZHsxLDJ9KVxcRCsoXFxkezR9KS8pO1xuICAgICAgICAgICAgaWYgKCFtKSByZXR1cm4gJyc7XG4gICAgICAgICAgICBjb25zdCBkID0gbVsxXS5wYWRTdGFydCgyLCAnMCcpO1xuICAgICAgICAgICAgY29uc3QgbW8gPSBtWzJdLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgICAgICAgICBjb25zdCB5ID0gbVszXTtcbiAgICAgICAgICAgIHJldHVybiBgJHtkfS8ke21vfS8ke3l9YDtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBhcHBseVN5bmMgPSAoKSA9PiB7XG4gICAgICAgICAgICAvLyBMw6llIHZhbG9yZXMgcmVhbGVzIGRlbCBET01cbiAgICAgICAgICAgIGNvbnN0IHJhd0luID0gaW5JbnB1dC52YWx1ZSB8fCAnJztcbiAgICAgICAgICAgIGNvbnN0IHJhd091dCA9IG91dElucHV0LnZhbHVlIHx8ICcnO1xuXG4gICAgICAgICAgICAvLyBOb3JtYWxpemFcbiAgICAgICAgICAgIGNvbnN0IGluU3RyID0gbm9ybShyYXdJbik7XG4gICAgICAgICAgICBjb25zdCBvdXRTdHIgPSBub3JtKHJhd091dCk7XG5cbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHBhdGNoZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIGlmIChpblN0ciAmJiBpblN0ciAhPT0gdGhpcy5mb3JtPy52YWx1ZS5kYXRlcGlja2VySW4pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtPy5wYXRjaFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBkYXRlcGlja2VySW46IGluU3RyIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGVtaXRFdmVudDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHBhdGNoZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAob3V0U3RyICYmIG91dFN0ciAhPT0gdGhpcy5mb3JtPy52YWx1ZS5kYXRlcGlja2VyT3V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybT8ucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgZGF0ZXBpY2tlck91dDogb3V0U3RyIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGVtaXRFdmVudDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHBhdGNoZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIEFzZWd1cmEgb3V0ID49IGluICgrMSBub2NoZSBzaSBoYWNlIGZhbHRhKVxuICAgICAgICAgICAgICAgIGNvbnN0IGNoYW5nZWQgPSB0aGlzLm5vcm1hbGl6ZURhdGVzRnJvbUZvcm0oKTtcbiAgICAgICAgICAgICAgICBpZiAoY2hhbmdlZCAmJiB0aGlzLmZvcm0pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBkYXRlcGlja2VyT3V0IH0gPSB0aGlzLmZvcm0udmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRlcGlja2VyT3V0ICYmIG91dElucHV0LnZhbHVlICE9PSBkYXRlcGlja2VyT3V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdXRJbnB1dC52YWx1ZSA9IGRhdGVwaWNrZXJPdXQ7IC8vIHJlZmxlamEgZW4gVUkgcG9yIHNpIGVsIHBsdWdpbiBubyBsbyBoYWNlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAocGF0Y2hlZCB8fCBjaGFuZ2VkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlR2VuZXJhdGVkVXJsKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2F2ZUVuZ2luZURhdGEoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8g8J+UgSBXYXRjaGVyIGNvbiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgKHVsdHJhbGlnZXJvKVxuICAgICAgICBjb25zdCB3YXRjaElucHV0ID0gKGVsOiBIVE1MSW5wdXRFbGVtZW50LCBvbkNoYW5nZTogKCkgPT4gdm9pZCkgPT4ge1xuICAgICAgICAgICAgbGV0IGxhc3QgPSAnJztcbiAgICAgICAgICAgIGNvbnN0IHRpY2sgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VyID0gZWwudmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKGN1ciAhPT0gbGFzdCkge1xuICAgICAgICAgICAgICAgICAgICBsYXN0ID0gY3VyO1xuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGljayk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRpY2spO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIERpc3BhcmEgdGFtYmnDqW4gZW4gZXZlbnRvcyDigJxwb3Igc2kgYWNhc2/igJ1cbiAgICAgICAgWydpbnB1dCcsICdjaGFuZ2UnLCAnYmx1cicsICdrZXl1cCcsICdwYXN0ZScsICdjbGljayddLmZvckVhY2goXG4gICAgICAgICAgICAoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgaW5JbnB1dC5hZGRFdmVudExpc3RlbmVyKGV2dCwgYXBwbHlTeW5jKTtcbiAgICAgICAgICAgICAgICBvdXRJbnB1dC5hZGRFdmVudExpc3RlbmVyKGV2dCwgYXBwbHlTeW5jKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICAvLyBBcnJhbnF1ZVxuICAgICAgICBhcHBseVN5bmMoKTtcbiAgICAgICAgd2F0Y2hJbnB1dChpbklucHV0LCBhcHBseVN5bmMpO1xuICAgICAgICB3YXRjaElucHV0KG91dElucHV0LCBhcHBseVN5bmMpO1xuICAgIH1cblxuICAgIC8vIGhlbHBlcnNcbiAgICBwcml2YXRlIGV4dHJhY3RETVkoXG4gICAgICAgIHJhdzogc3RyaW5nXG4gICAgKTogeyBkOiBudW1iZXI7IG06IG51bWJlcjsgeTogbnVtYmVyIH0gfCBudWxsIHtcbiAgICAgICAgaWYgKCFyYXcpIHJldHVybiBudWxsO1xuICAgICAgICBjb25zdCBtID0gcmF3Lm1hdGNoKC8oXFxkezEsMn0pXFxEKyhcXGR7MSwyfSlcXEQrKFxcZHs0fSkvKTtcbiAgICAgICAgaWYgKCFtKSByZXR1cm4gbnVsbDtcbiAgICAgICAgY29uc3QgZCA9IE51bWJlcihtWzFdKTtcbiAgICAgICAgY29uc3QgbW8gPSBOdW1iZXIobVsyXSk7XG4gICAgICAgIGNvbnN0IHkgPSBOdW1iZXIobVszXSk7XG4gICAgICAgIGlmICghZCB8fCAhbW8gfHwgIXkpIHJldHVybiBudWxsO1xuICAgICAgICByZXR1cm4geyBkLCBtOiBtbywgeSB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgdG9EYXRlKHsgZCwgbSwgeSB9OiB7IGQ6IG51bWJlcjsgbTogbnVtYmVyOyB5OiBudW1iZXIgfSk6IERhdGUge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUoeSwgbSAtIDEsIGQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9ybWF0RE1ZKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBkZCA9IFN0cmluZyhkYXRlLmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICAgICAgY29uc3QgbW0gPSBTdHJpbmcoZGF0ZS5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICAgICAgY29uc3QgeXl5eSA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgcmV0dXJuIGAke2RkfS8ke21tfS8ke3l5eXl9YDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvcm1hdERhdGVGb3JVcmwoZGF0ZVN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZG15ID0gdGhpcy5leHRyYWN0RE1ZKGRhdGVTdHIpO1xuICAgICAgICBpZiAoIWRteSkgcmV0dXJuICcnO1xuICAgICAgICBjb25zdCBkZCA9IFN0cmluZyhkbXkuZCkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICAgICAgY29uc3QgbW0gPSBTdHJpbmcoZG15Lm0pLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgICAgIGNvbnN0IHl5eXkgPSBkbXkueTtcbiAgICAgICAgcmV0dXJuIGAke2RkfS0ke21tfS0ke3l5eXl9YDtcbiAgICB9XG5cbiAgICBwcml2YXRlIG5vcm1hbGl6ZURhdGVzRnJvbUZvcm0oKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5mb3JtKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGNvbnN0IHsgZGF0ZXBpY2tlckluLCBkYXRlcGlja2VyT3V0IH0gPSB0aGlzLmZvcm0udmFsdWU7XG5cbiAgICAgICAgY29uc3QgaW5ETVkgPSB0aGlzLmV4dHJhY3RETVkoU3RyaW5nKGRhdGVwaWNrZXJJbiB8fCAnJykpO1xuICAgICAgICBjb25zdCBvdXRETVkgPSB0aGlzLmV4dHJhY3RETVkoU3RyaW5nKGRhdGVwaWNrZXJPdXQgfHwgJycpKTtcblxuICAgICAgICBpZiAoIWluRE1ZKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgaW5EYXRlID0gdGhpcy50b0RhdGUoaW5ETVkpO1xuICAgICAgICBsZXQgdXBkYXRlZCA9IGZhbHNlO1xuXG4gICAgICAgIGlmICghb3V0RE1ZIHx8IHRoaXMudG9EYXRlKG91dERNWSkgPD0gaW5EYXRlKSB7XG4gICAgICAgICAgICBjb25zdCBwbHVzMSA9IG5ldyBEYXRlKGluRGF0ZSk7XG4gICAgICAgICAgICBwbHVzMS5zZXREYXRlKGluRGF0ZS5nZXREYXRlKCkgKyAxKTtcbiAgICAgICAgICAgIGNvbnN0IG5ld091dCA9IHRoaXMuZm9ybWF0RE1ZKHBsdXMxKTtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKFxuICAgICAgICAgICAgICAgIHsgZGF0ZXBpY2tlck91dDogbmV3T3V0IH0sXG4gICAgICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IHRydWUgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHVwZGF0ZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVwZGF0ZWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzYXZlRW5naW5lRGF0YSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XG4gICAgICAgIGNvbnN0IHsgbG9jYXRpb24sIGRhdGVwaWNrZXJJbiwgZGF0ZXBpY2tlck91dCwgcHJvbW9JbnB1dCB9ID1cbiAgICAgICAgICAgIHRoaXMuZm9ybSEudmFsdWU7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAgICAgICBsb2NhdGlvbixcbiAgICAgICAgICAgIGRhdGVwaWNrZXJJbixcbiAgICAgICAgICAgIGRhdGVwaWNrZXJPdXQsXG4gICAgICAgICAgICBwcm9tb0lucHV0LFxuICAgICAgICAgICAgLi4udGhpcy5ndWVzdHMsXG4gICAgICAgIH07XG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ3B1cm9FbmdpbmVNb2RhbERhdGEnLCBKU09OLnN0cmluZ2lmeShwYXlsb2FkKSk7XG4gICAgfVxuXG4gICAgLy8gdXJsIGdlbmVyYXRpb25cbiAgICBwcml2YXRlIHVwZGF0ZUdlbmVyYXRlZFVybCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZCA9IHRoaXMuZGF0YSgpPy5lbmdpbmU7XG4gICAgICAgIGlmICghZCB8fCAhdGhpcy5mb3JtKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5ub3JtYWxpemVEYXRlc0Zyb21Gb3JtKCk7XG5cbiAgICAgICAgY29uc3QgeyBsb2NhdGlvbiwgZGF0ZXBpY2tlckluLCBkYXRlcGlja2VyT3V0LCBwcm9tb0lucHV0IH0gPVxuICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlO1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG5cbiAgICAgICAgaWYgKGxvY2F0aW9uKSBwYXJhbXMuYXBwZW5kKCdob3RlbCcsIGxvY2F0aW9uKTtcbiAgICAgICAgaWYgKGRhdGVwaWNrZXJJbilcbiAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ2RhdGVpbicsIHRoaXMuZm9ybWF0RGF0ZUZvclVybChkYXRlcGlja2VySW4pKTtcbiAgICAgICAgaWYgKGRhdGVwaWNrZXJPdXQpXG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdkYXRlb3V0JywgdGhpcy5mb3JtYXREYXRlRm9yVXJsKGRhdGVwaWNrZXJPdXQpKTtcbiAgICAgICAgaWYgKHByb21vSW5wdXQpIHBhcmFtcy5hcHBlbmQoJ3Byb20nLCBwcm9tb0lucHV0KTtcbiAgICAgICAgcGFyYW1zLmFwcGVuZCgnYWR1bHRzJywgU3RyaW5nKHRoaXMuZ3Vlc3RzLmFkdWx0cykpO1xuICAgICAgICBwYXJhbXMuYXBwZW5kKCdjaGlsZHJlbicsIFN0cmluZyh0aGlzLmd1ZXN0cy5raWRzKSk7XG5cbiAgICAgICAgbGV0IGJhc2VVcmwgPSAnJztcblxuICAgICAgICBpZiAodGhpcy5pc0hvdGVsKSB7XG4gICAgICAgICAgICBiYXNlVXJsID0gZC51cmwgPz8gZC5idXR0b24/LnVybCA/PyAnJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkSG90ZWwgPSBkLmxvY2F0aW9uRHJvcGRvd24/Lm9wdGlvbnM/LmZpbmQoXG4gICAgICAgICAgICAgICAgKG9wdCkgPT4gU3RyaW5nKG9wdC5jb2RlKSA9PT0gU3RyaW5nKGxvY2F0aW9uKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGJhc2VVcmwgPSBzZWxlY3RlZEhvdGVsPy51cmwgPz8gZC51cmwgPz8gZC5idXR0b24/LnVybCA/PyAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghYmFzZVVybCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHNlcCA9IGJhc2VVcmwuaW5jbHVkZXMoJz8nKSA/ICcmJyA6ICc/JztcbiAgICAgICAgY29uc3Qgc2FmZVBhcmFtcyA9XG4gICAgICAgICAgICBwYXJhbXMgJiYgdHlwZW9mIHBhcmFtcy50b1N0cmluZyA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgICAgID8gcGFyYW1zLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICA6ICcnO1xuICAgICAgICB0aGlzLmdlbmVyYXRlZFVybCA9IGAke2Jhc2VVcmx9JHtzZXB9JHtzYWZlUGFyYW1zfWA7XG4gICAgfVxuXG4gICAgLy8gYWN0aW9uc1xuICAgIGFwcGx5R3Vlc3RzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhZHVsdHNTZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcbiAgICAgICAgICAgICdhZHVsdDEnXG4gICAgICAgICkgYXMgSFRNTFNlbGVjdEVsZW1lbnQgfCBudWxsO1xuICAgICAgICBjb25zdCBraWRzU2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXG4gICAgICAgICAgICAnY2hpbGQxJ1xuICAgICAgICApIGFzIEhUTUxTZWxlY3RFbGVtZW50IHwgbnVsbDtcbiAgICAgICAgaWYgKGFkdWx0c1NlbGVjdCkgdGhpcy5ndWVzdHMuYWR1bHRzID0gTnVtYmVyKGFkdWx0c1NlbGVjdC52YWx1ZSkgfHwgMjtcbiAgICAgICAgaWYgKGtpZHNTZWxlY3QpIHRoaXMuZ3Vlc3RzLmtpZHMgPSBOdW1iZXIoa2lkc1NlbGVjdC52YWx1ZSkgfHwgMDtcbiAgICAgICAgdGhpcy51cGRhdGVHZW5lcmF0ZWRVcmwoKTtcbiAgICB9XG5cbiAgICBvblN1Ym1pdChlOiBFdmVudCk6IHZvaWQge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMudXBkYXRlR2VuZXJhdGVkVXJsKCk7XG4gICAgICAgIGlmICh0aGlzLmdlbmVyYXRlZFVybCkge1xuICAgICAgICAgICAgd2luZG93Lm9wZW4odGhpcy5nZW5lcmF0ZWRVcmwsICdfYmxhbmsnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vZGFsLmNsb3NlRW5naW5lKCk7XG4gICAgfVxufVxuIiwiQGlmIChpc09wZW4oKSkge1xuICAgIDxzZWN0aW9uIGNsYXNzPVwiZW5naW5lLW1vZGFsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlbmdpbmUtbW9kYWxfX292ZXJsYXlcIiAoY2xpY2spPVwiY2xvc2UoKVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZW5naW5lLW1vZGFsX19jb250ZW50XCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZW5naW5lLW1vZGFsX19jbG9zZVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2xvc2UoKVwiPlxuICAgICAgICAgICAgICAgIOKclVxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiYm9va2luZ1wiPlxuICAgICAgICAgICAgICAgIDwhLS0g8J+UuSBTbGlkZXIgZGUgdmVudGFqYXMgLS0+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJvb2tpbmdfX2FkdmFudGFnZXMganMtYWN0aXZlLXNsaWRlclwiXG4gICAgICAgICAgICAgICAgICAgIGRhdGEtc2xpZGVyX25hbWU9XCJqcy1hZHYtc2xpZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgW3B1cm9TbGlkZXJdPVwiZGF0YSgpPy5hZHZhbnRhZ2VzPy5pdGVtc1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9va2luZ19fYWR2YW50YWdlcy0taW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZGF0YSgpPy50aXRsZUFkdmFudGFnZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXB1cm8tZHluYW1pYy1oZWFkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YWddPVwiZGF0YSgpPy50YWdzPy50aXRsZSB8fCAnc3BhbidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3NDbGFzcz1cImJvb2tpbmdfX3RpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwiZGF0YSgpPy50aXRsZUFkdmFudGFnZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2xpYi1wdXJvLWR5bmFtaWMtaGVhZGluZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJqcy1hZHYtc2xpZGVyIGFkdl9fc2xpZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gb2YgZGF0YSgpPy5hZHZhbnRhZ2VzPy5pdGVtcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgJGluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib29raW5nX19hZHZJdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uaWNvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJpdGVtLmljb25cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0udGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBpdGVtLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgaXRlbS5kZXNjcmlwdGlvbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwianMtc2xpZGVyLWFycm93c1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwhLS0g8J+UuSBGT1JNVUxBUklPIC0tPlxuICAgICAgICAgICAgICAgIEBpZiAoZm9ybSkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9va2luZ19fZm9ybVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvb2tpbmdfX2Zvcm0tLWlubmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1Ym1pdCk9XCJvblN1Ym1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0TG9hZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhTG9hZGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChkYXRhKCk/LmVuZ2luZT8udGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYm9va2luZ19fdGl0bGVcIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEoKT8uZW5naW5lPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9va2luZ19fYm94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFpc0hvdGVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSDwn5S5IExPQ0FUSU9OIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib29raW5nX19maWVsZEdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYm9va2luZ19fZmllbGRJbm5lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tbGFiZWwtbGVmdC1wb3NpdGlvbjogMzRyZW07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEoKT8uZW5naW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ubG9jYXRpb25Ecm9wZG93blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJib29raW5nX19maWVsZExhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwibG9jYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEoKT8uZW5naW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5sb2NhdGlvbkRyb3Bkb3duXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYm9va2luZ19fZmllbGRDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJsb2NhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJsb2NhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VIb3RlbExhYmVsUG9zaXRpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiBvZiBkYXRhKCk/LmVuZ2luZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5sb2NhdGlvbkRyb3Bkb3duXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Lm9wdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrICRpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLmNvZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvb2tpbmdfX2ZpZWxkSWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbi02MlwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSDwn5S5IERBVEVQSUNLRVJTIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvb2tpbmdfX2ZpZWxkR3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9va2luZ19fZmllbGRJbm5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYm9va2luZ19fZmllbGRMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJJbi1kYXRlMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tbGFiZWwtbGVmdC1wb3NpdGlvbjogMTRyZW07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEoKT8uZW5naW5lPy5kYXRlcGlja2VySW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJib29raW5nX19maWVsZENvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJJbi1kYXRlMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkYXRlcGlja2VySW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEoKT8uZW5naW5lPy5kYXRlcGlja2VySW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5wbGFjZWhvbGRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiZGF0ZXBpY2tlcjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZUxhYmVsUG9zaXRpb24oJGV2ZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvb2tpbmdfX2ZpZWxkSWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uLTg5XCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9va2luZ19fZmllbGRHcm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib29raW5nX19maWVsZElubmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJib29raW5nX19maWVsZExhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cIk91dC1kYXRlMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tbGFiZWwtbGVmdC1wb3NpdGlvbjogMTRyZW07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEoKT8uZW5naW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZGF0ZXBpY2tlck91dD8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYm9va2luZ19fZmllbGRDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiT3V0LWRhdGUyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRhdGVwaWNrZXJPdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEoKT8uZW5naW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZGF0ZXBpY2tlck91dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LnBsYWNlaG9sZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJkYXRlcGlja2VyMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlTGFiZWxQb3NpdGlvbigkZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9va2luZ19fZmllbGRJY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb24tODlcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0g8J+UuSBHVUVTVFMgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9va2luZ19fZmllbGRHcm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJib29raW5nX19maWVsZElubmVyIGpzLXBlcnNvbmFzLXN1YmZpZWxkc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJvb2tpbmdfX2ZpZWxkTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwiZ3Vlc3RzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1sYWJlbC1sZWZ0LXBvc2l0aW9uOiA2cmVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhKCk/LmVuZ2luZT8uZ3Vlc3RzSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib29raW5nX19maWVsZENvbnRyb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9va2luZ19fZmllbGRJY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTVcIiBoZWlnaHQ9XCI4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPVwiI3NlbGVjdC1hcnJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvdXNlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJvb2tpbmdfX2ZpZWxkU3ViIGpzLWZpZWxkU3ViXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib29raW5nX19maWVsZElubmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJvb2tpbmdfX2ZpZWxkTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cImFkdWx0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWxhYmVsLWxlZnQtcG9zaXRpb246IDZyZW07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhKCk/LmVuZ2luZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5hZHVsdHNEcm9wZG93blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJvb2tpbmdfX2ZpZWxkQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJhZHVsdDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiYXBwbHlHdWVzdHMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiBvZiBkYXRhKCk/LmVuZ2luZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5hZHVsdHNEcm9wZG93blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5vcHRpb25zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjayAkaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi5jb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb24ubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib29raW5nX19maWVsZEljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb24tOTJcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvb2tpbmdfX2ZpZWxkSW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYm9va2luZ19fZmllbGRMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwiY2hpbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tbGFiZWwtbGVmdC1wb3NpdGlvbjogNnJlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEoKT8uZW5naW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LmtpZHNEcm9wZG93blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJvb2tpbmdfX2ZpZWxkQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjaGlsZDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiYXBwbHlHdWVzdHMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiBvZiBkYXRhKCk/LmVuZ2luZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5raWRzRHJvcGRvd25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ub3B0aW9ucztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgJGluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24uY29kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9va2luZ19fZmllbGRJY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uLTkzXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG5fX2dyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuX19wcmltYXJ5IGpzLWFwcGx5LWd1ZXN0czFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseUd1ZXN0cygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhKCk/LmVuZ2luZT8uYnRuQXBwbHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ubGFiZWwgPz8gJ0FwcGx5J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0g8J+UuSBQUk9NTyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib29raW5nX19maWVsZEdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvb2tpbmdfX2ZpZWxkSW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJvb2tpbmdfX2ZpZWxkTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWxhYmVsLWxlZnQtcG9zaXRpb246IDlyZW07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwicHJvbW9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEoKT8uZW5naW5lPy5wcm9tb0lucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwicHJvbW9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ4eHh4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYm9va2luZ19fZmllbGRDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInByb21vSW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZUxhYmVsUG9zaXRpb24oJGV2ZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvb2tpbmdfX2ZpZWxkSWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uLTkwXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIPCflLkgU1VCTUlUIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bl9fZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG5fX3ByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEoKT8uZW5naW5lPy5idXR0b24/LmxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cbn1cbiJdfQ==