@worktile/theia 14.3.3 → 14.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -28,9 +28,7 @@ export class TheToolbarComponent {
28
28
  this.setToolbarClass();
29
29
  this.renderToolbarView();
30
30
  this.selectionChange(this.editor);
31
- if (this.isMore) {
32
- this.resizeElement();
33
- }
31
+ this.isMore && this.resizeElement();
34
32
  }
35
33
  ngOnChanges(changes) {
36
34
  const toolbarItems = changes.toolbarItems;
@@ -98,8 +96,8 @@ export class TheToolbarComponent {
98
96
  this.createToolbarItem(item);
99
97
  }
100
98
  this.createMoreGroup(group);
99
+ this.cdr.markForCheck();
101
100
  });
102
- this.cdr.markForCheck();
103
101
  }
104
102
  /**
105
103
  * calculation display toolbar and more grouped toolbars
@@ -265,4 +263,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImpo
265
263
  type: HostBinding,
266
264
  args: ['style.justifyContent']
267
265
  }] } });
268
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvY29tcG9uZW50cy90b29sYmFyL3Rvb2xiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvdG9vbGJhci90b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsS0FBSyxFQUVMLFNBQVMsRUFDVCxnQkFBZ0IsRUFPaEIsTUFBTSxFQUdOLFdBQVcsRUFDZCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUV4QyxPQUFPLEVBQTRELGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQzs7O0FBVzdGLE1BQU0sT0FBTyxtQkFBbUI7SUE2QjVCLFlBQ1ksR0FBc0IsRUFDdEIsVUFBc0IsRUFDdEIsTUFBYyxFQUNnQixxQkFBOEQ7UUFINUYsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2dCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBeUM7UUE5Qi9GLGlCQUFZLEdBQWtCLEVBQUUsQ0FBQztRQUlqQyxtQkFB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QUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUN4RDtJQUNMLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxJQUFxQjtRQUMzQyxJQUFJLElBQUksS0FBSyxlQUFlLENBQUMsT0FBTyxFQUFFO1lBQ2xDLE9BQU8sdUJBQXVCLENBQUM7U0FDbEM7UUFDRCxJQUFJLElBQUksS0FBSyxlQUFlLENBQUMsUUFBUSxFQUFFO1lBQ25DLE9BQU8sMkJBQTJCLENBQUM7U0FDdEM7UUFDRCxPQUFPLHVCQUF1QixDQUFDO0lBQ25DLENBQUM7O2lIQWhSUSxtQkFBbUIsbUdBaUNoQixvQkFBb0I7cUdBakN2QixtQkFBbUIsZ2NBYVcsZ0JBQWdCLGdFQ2hEM0Qsd0tBR0E7NEZEZ0NhLG1CQUFtQjtrQkFQL0IsU0FBUzsrQkFDSSxhQUFhLFFBRWpCO3dCQUNGLEtBQUssRUFBRSxpREFBaUQ7cUJBQzNEOzswQkFtQ0ksTUFBTTsyQkFBQyxvQkFBb0I7NENBaEN2QixNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFFbUUsZ0JBQWdCO3NCQUF4RixTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRTlCLGNBQWM7c0JBQXRELFdBQVc7dUJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIENvbXBvbmVudFJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIE9uRGVzdHJveSxcbiAgICBOZ1pvbmUsXG4gICAgSW5qZWN0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIEhvc3RCaW5kaW5nXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGh5RGl2aWRlckNvbXBvbmVudCB9IGZyb20gJ25neC10ZXRoeXMvZGl2aWRlcic7XG5pbXBvcnQgeyBFZGl0b3IsIEVsZW1lbnQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBDb21wb25lbnRUeXBlIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBUb29sYmFyQWxpZ25tZW50LCBUb29sYmFySXRlbSwgVG9vbGJhckl0ZW1zQ29tcG9zZVJldHVybiwgVG9vbGJhckl0ZW1UeXBlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy90b29sYmFyJztcbmltcG9ydCB7IFRoZVRvb2xiYXJHcm91cFRva2VuLCBUb29sYmFyTW9yZUdyb3VwIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3Rvb2xiYXInO1xuaW1wb3J0IHsgRWxlbWVudEtpbmRzLCBUb29sYmFyQWN0aW9uVHlwZXMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvbm9kZS10eXBlcyc7XG5pbXBvcnQgeyBUaGVUb29sYmFySXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL3Rvb2xiYXItaXRlbS90b29sYmFyLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IFRoZVRvb2xiYXJEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uL3Rvb2xiYXItZHJvcGRvd24vdG9vbGJhci1kcm9wZG93bi5jb21wb25lbnQnO1xuaW1wb3J0IHR5cGUgeyBUaGVUb29sYmFyR3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi90b29sYmFyLWdyb3VwL3Rvb2xiYXItZ3JvdXAuY29tcG9uZW50JztcbmltcG9ydCB7IFRoZUJhc2VUb29sYmFySXRlbSwgVGhlQmFzZVRvb2xiYXJEcm9wZG93biB9IGZyb20gJy4uLy4uL2NvcmUvdG9vbGJhci1pdGVtL2Jhc2UtdG9vbGJhci1pdGVtJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aGUtdG9vbGJhcicsXG4gICAgdGVtcGxhdGVVcmw6ICd0b29sYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAndGhlLXRvb2xiYXItY29udGFpbmVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXInXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUaGVUb29sYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgZWRpdG9yOiBFZGl0b3I7XG5cbiAgICBASW5wdXQoKSB0b29sYmFySXRlbXM6IFRvb2xiYXJJdGVtW10gPSBbXTtcblxuICAgIEBJbnB1dCgpIGFsaWduOiBUb29sYmFyQWxpZ25tZW50O1xuXG4gICAgQElucHV0KCkgY29udGFpbmVyQ2xhc3M6IHN0cmluZ1tdID0gW107XG5cbiAgICBASW5wdXQoKSBpc01vcmUgPSB0cnVlO1xuXG4gICAgQElucHV0KCkgYWZ0ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoJ3Rvb2xiYXJDb250YWluZXInLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZSB9KSB0b29sYmFyQ29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5qdXN0aWZ5Q29udGVudCcpIGdldCBqdXN0aWZ5Q29udGVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxpZ247XG4gICAgfVxuXG4gICAgY29tcG9uZW50czogTWFwPHN0cmluZywgQ29tcG9uZW50UmVmPGFueT4+ID0gbmV3IE1hcDxzdHJpbmcsIENvbXBvbmVudFJlZjxhbnk+PigpO1xuXG4gICAgY29tcG9zZVRvb2xiYXJJdGVtczogVG9vbGJhckl0ZW1zQ29tcG9zZVJldHVybjtcblxuICAgIG1vcmVHcm91cE1lbnUgPSBUb29sYmFyTW9yZUdyb3VwO1xuXG4gICAgcmVzaXplT2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyO1xuXG4gICAgZWxlbWVudFdpZHRoID0gMDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgQEluamVjdChUaGVUb29sYmFyR3JvdXBUb2tlbikgcHJpdmF0ZSB0b29sYmFyR3JvdXBDb21wb25lbnQ6IENvbXBvbmVudFR5cGU8VGhlVG9vbGJhckdyb3VwQ29tcG9uZW50PlxuICAgICkge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldFRvb2xiYXJDbGFzcygpO1xuICAgICAgICB0aGlzLnJlbmRlclRvb2xiYXJWaWV3KCk7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlKHRoaXMuZWRpdG9yKTtcblxuICAgICAgICBpZiAodGhpcy5pc01vcmUpIHtcbiAgICAgICAgICAgIHRoaXMucmVzaXplRWxlbWVudCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBjb25zdCB0b29sYmFySXRlbXMgPSBjaGFuZ2VzLnRvb2xiYXJJdGVtcztcbiAgICAgICAgaWYgKHRvb2xiYXJJdGVtcyAmJiAhdG9vbGJhckl0ZW1zLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlclRvb2xiYXJWaWV3KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVzaXplT2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldFRvb2xiYXJDbGFzcygpIHtcbiAgICAgICAgaWYgKHRoaXMuZWRpdG9yICYmICEhdGhpcy5jb250YWluZXJDbGFzcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoLi4udGhpcy5jb250YWluZXJDbGFzcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2l6ZUVsZW1lbnQoKSB7XG4gICAgICAgIGNvbnN0IGVkaXRhYmxlRWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoZW50cmllcyA9PiB7XG4gICAgICAgICAgICBmb3IgKGxldCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB3aWR0aCB9ID0gZW50cnkuY29udGVudFJlY3Q7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNNb3JlICYmIHRoaXMuZWxlbWVudFdpZHRoICE9PSB3aWR0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRXaWR0aCA9IHdpZHRoO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlclRvb2xiYXJWaWV3KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKGVkaXRhYmxlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1RhYmxlQWN0aXZlKCkge1xuICAgICAgICBjb25zdCBbdGFibGVdID0gRWRpdG9yLm5vZGVzKHRoaXMuZWRpdG9yLCB7IG1hdGNoOiBuID0+IEVsZW1lbnQuaXNFbGVtZW50KG4pICYmIG4udHlwZSA9PT0gRWxlbWVudEtpbmRzLnRhYmxlIH0pO1xuICAgICAgICByZXR1cm4gISF0YWJsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VsZWN0aW9uQ2hhbmdlKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIGlmICh0aGlzLmlzTW9yZSkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJUb29sYmFyVmlldygpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdG9vbGJhckl0ZW1zID0gWy4uLnRoaXMudG9vbGJhckl0ZW1zLCB0aGlzLm1vcmVHcm91cE1lbnVdO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdG9vbGJhckl0ZW1zKSB7XG4gICAgICAgICAgICBpZiAoaXRlbS5rZXkgIT09IFRvb2xiYXJBY3Rpb25UeXBlcy5zcGxpdCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1Db21wb25lbnQgPSB0aGlzLmNvbXBvbmVudHMuZ2V0KGl0ZW0ua2V5KTtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbUNvbXBvbmVudCAmJiBpdGVtQ29tcG9uZW50Lmluc3RhbmNlLnNlbGVjdGlvbkNoYW5nZSkge1xuICAgICAgICAgICAgICAgICAgICBpdGVtQ29tcG9uZW50Lmluc3RhbmNlLnNlbGVjdGlvbkNoYW5nZShlZGl0b3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZW5kZXJUb29sYmFyVmlldygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdG9vbGJhckl0ZW1zID0gdGhpcy50b29sYmFySXRlbXNDb21wb3NlKCk7XG4gICAgICAgIGNvbnN0IHsgaXRlbXMsIGdyb3VwIH0gPSB0b29sYmFySXRlbXM7XG5cbiAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gdGhpcy5jb21wb3NlVG9vbGJhckl0ZW1zPy5pdGVtcz8ubGVuZ3RoICYmIGdyb3VwPy5sZW5ndGggPT09IHRoaXMuY29tcG9zZVRvb2xiYXJJdGVtcz8uZ3JvdXA/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29tcG9zZVRvb2xiYXJJdGVtcyA9IHRvb2xiYXJJdGVtcztcbiAgICAgICAgdGhpcy5jb21wb25lbnRzLmNsZWFyKCk7XG4gICAgICAgIHRoaXMudG9vbGJhckNvbnRhaW5lci5jbGVhcigpO1xuXG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5rZXkgPT09IFRvb2xiYXJBY3Rpb25UeXBlcy5zcGxpdCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRvb2xiYXJTcGxpdCgpO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUb29sYmFySXRlbShpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY3JlYXRlTW9yZUdyb3VwKGdyb3VwKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNhbGN1bGF0aW9uIGRpc3BsYXkgdG9vbGJhciBhbmQgbW9yZSBncm91cGVkIHRvb2xiYXJzXG4gICAgICpcbiAgICAgKlx04pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICBHbG9iYWxUb29sYmFyVmlldyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJBcbiAgICAgKlx0fCDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgI2NoaWxkcmVuIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkCB8XG4gICAgICpcdHwgfCAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAjaXRlbXNWaWV3IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkCDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJAg4pSM4pSA4pSAICNncm91cGVkSXRlbXNEcm9wZG93biDilIDilIDilIDilJAgICB8IHxcbiAgICAgKlx0fCB8ICAgfCAgICAgICAjdW5ncm91cGVkSXRlbXMgICAgIHwgfCBUb29sYmFyU2VwYXJhdG9yVmlldyB8IHwgICAgICAgICNncm91cGVkSXRlbXMgICAgICAgfCAgIHwgfFxuICAgICAqXHR8IHwgICDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAt4pSYIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmCDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJggICB8IHxcbiAgICAgKlx0fCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcLS0tLS0tLS0tLSBvbmx5IHdoZW4gdG9vbGJhciBpdGVtcyBvdmVyZmxvdyAtLS0tLS0tLS8gICB8IHxcbiAgICAgKlx0fCDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJggfFxuICAgICAqXHTilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJhcbiAgICAgKiBzcGxpdCB3aWR0aDogMTNweFxuICAgICAqIGl0ZW0gd2lkdGg6IGRlZmF1bHQgaXRlbTogMzJweDsgZHJvcGRvd24gaXRlbTogNDhweFxuICAgICAqIGRlZmF1bHQgcGFkZGluZ1JpZ2h0OiA0cHhcbiAgICAgKiBzZXQgYXNpZGUgNTBweFxuICAgICAqL1xuICAgIHByaXZhdGUgdG9vbGJhckl0ZW1zQ29tcG9zZSgpOiBUb29sYmFySXRlbXNDb21wb3NlUmV0dXJuIHtcbiAgICAgICAgbGV0IGVsZW1lbnRXaWR0aCA9IHRoaXMuaXNNb3JlID8gdGhpcy5lbGVtZW50V2lkdGggOiBudWxsO1xuICAgICAgICAvLyBkcm9wZG93biBpdGVtICsgcGFkZGluZ1JpZ2h0XG4gICAgICAgIGNvbnN0IG1heEl0ZW1XaWR0aCA9IDUyO1xuICAgICAgICAvLyBkZWZhdWx0IGl0ZW0gKyBwYWRkaW5nUmlnaHRcbiAgICAgICAgY29uc3QgZGVmYXVsdEl0ZW1XaWR0aCA9IDM2O1xuICAgICAgICBjb25zdCBzcGxpdFdpZHRoID0gMTM7XG4gICAgICAgIGNvbnN0IGl0ZW1zOiBUb29sYmFySXRlbVtdID0gW107XG4gICAgICAgIGNvbnN0IGdyb3VwOiBUb29sYmFySXRlbVtdID0gW107XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRvb2xiYXJJdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMudG9vbGJhckl0ZW1zW2ldO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzTW9yZSkge1xuICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBpdGVtV2lkdGggPSBkZWZhdWx0SXRlbVdpZHRoO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKGl0ZW0ua2V5KSB7XG4gICAgICAgICAgICAgICAgY2FzZSBFbGVtZW50S2luZHMuaGVhZGluZ0xpc3Q6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1XaWR0aCA9IDc0O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFRvb2xiYXJBY3Rpb25UeXBlcy5zcGxpdDpcbiAgICAgICAgICAgICAgICAgICAgaXRlbVdpZHRoID0gc3BsaXRXaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBUb29sYmFyQWN0aW9uVHlwZXMudmVydGljYWxBbGlnbjpcbiAgICAgICAgICAgICAgICAgICAgaXRlbVdpZHRoID0gdGhpcy5pc1RhYmxlQWN0aXZlKCkgPyBtYXhJdGVtV2lkdGggOiAwO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0N1c3RvbUNvbXBvbmVudCA9IGl0ZW0/LnR5cGUgPT09IFRvb2xiYXJJdGVtVHlwZS5kcm9wZG93biB8fCAhIWl0ZW0/Lmljb25Db21wb25lbnQ7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1XaWR0aCA9IGlzQ3VzdG9tQ29tcG9uZW50ID8gbWF4SXRlbVdpZHRoIDogZGVmYXVsdEl0ZW1XaWR0aDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcmVtYWluaW5nV2lkdGggPSBpID09PSB0aGlzLnRvb2xiYXJJdGVtcy5sZW5ndGggLSAxID8gaXRlbVdpZHRoIDogaXRlbVdpZHRoICsgc3BsaXRXaWR0aDtcbiAgICAgICAgICAgIGNvbnN0IGFsbG93UmVuZGVyID0gZWxlbWVudFdpZHRoICYmIGVsZW1lbnRXaWR0aCA+PSByZW1haW5pbmdXaWR0aDtcbiAgICAgICAgICAgIGVsZW1lbnRXaWR0aCAtPSBpdGVtV2lkdGg7XG5cbiAgICAgICAgICAgIGlmIChhbGxvd1JlbmRlcikge1xuICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzRmlyc3RTcGxpdCA9IGdyb3VwLmxlbmd0aCA9PT0gMCAmJiBpdGVtLmtleSA9PT0gVG9vbGJhckFjdGlvblR5cGVzLnNwbGl0O1xuICAgICAgICAgICAgICAgICFpc0ZpcnN0U3BsaXQgJiYgZ3JvdXAucHVzaChpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtczogdGhpcy5wdXJlVG9vbGJhckl0ZW1zKGl0ZW1zKSxcbiAgICAgICAgICAgIGdyb3VwXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZXh0ZXJuYWxseSBkZXNpZ25hdGVkIG1vcmUgZ3JvdXBcbiAgICAgKi9cbiAgICBwcml2YXRlIHRvb2xiYXJJdGVtc0FuZE1vcmVDb21wb3NlKCkge1xuICAgICAgICBjb25zdCBpdGVtcyA9IFtdO1xuICAgICAgICBjb25zdCBncm91cCA9IFtdO1xuXG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLnRvb2xiYXJJdGVtcykge1xuICAgICAgICAgICAgaWYgKGl0ZW0ua2V5ID09PSBUb29sYmFyQWN0aW9uVHlwZXMuc3BsaXQpIHtcbiAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtczogdGhpcy5wdXJlVG9vbGJhckl0ZW1zKGl0ZW1zKSxcbiAgICAgICAgICAgIGdyb3VwXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZmlsdGVyIGFkamFjZW50IHJlcGVhdGVkIGRpdmlkZXJzXG4gICAgICogQHBhcmFtIHtUb29sYmFySXRlbVtdfSBpdGVtc1xuICAgICAqIEByZXR1cm5zXG4gICAgICogQG1lbWJlcm9mIFRoZVRvb2xiYXJDb21wb25lbnRcbiAgICAgKi9cbiAgICBwdXJlVG9vbGJhckl0ZW1zKGl0ZW1zOiBUb29sYmFySXRlbVtdKSB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShpdGVtcykpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXRlbXMuZmlsdGVyKChhLCBpKSA9PiB7XG4gICAgICAgICAgICBpZiAoaSA+IDAgJiYgaXRlbXNbaSAtIDFdLmtleSAhPT0gVG9vbGJhckFjdGlvblR5cGVzLnNwbGl0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYS5rZXkgIT09IFRvb2xiYXJBY3Rpb25UeXBlcy5zcGxpdDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVUb29sYmFySXRlbShpdGVtOiBUb29sYmFySXRlbSkge1xuICAgICAgICBjb25zdCB7IGljb25Db21wb25lbnQsIHR5cGUsIGRyb3Bkb3duTW9kZSwgZHJvcGRvd25JdGVtS2V5LCBpbmNsdWRlcywgLi4uYXJncyB9ID0gaXRlbTtcbiAgICAgICAgY29uc3Qgdmlld0NvbXBvbmVudCA9IHRoaXMudmlld0NvbXBvbmVudFR5cGUodHlwZSk7XG4gICAgICAgIGNvbnN0IGNvbXBSZWYgPSB0aGlzLnRvb2xiYXJDb250YWluZXIuY3JlYXRlQ29tcG9uZW50PFRoZUJhc2VUb29sYmFySXRlbT4oaWNvbkNvbXBvbmVudCA/IGljb25Db21wb25lbnQgOiB2aWV3Q29tcG9uZW50KTtcblxuICAgICAgICBjb21wUmVmLmluc3RhbmNlLmVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgICAgICBjb21wUmVmLmluc3RhbmNlLnRvb2xiYXJJdGVtID0gaXRlbTtcbiAgICAgICAgdGhpcy5jb21wb25lbnRzLnNldChpdGVtLmtleSwgY29tcFJlZik7XG4gICAgICAgIGlmIChpdGVtLnR5cGUgPT09IFRvb2xiYXJJdGVtVHlwZS5kcm9wZG93bikge1xuICAgICAgICAgICAgY29uc3QgZHJvcGRvd25SZWYgPSBjb21wUmVmIGFzIHVua25vd24gYXMgQ29tcG9uZW50UmVmPFRoZUJhc2VUb29sYmFyRHJvcGRvd24+O1xuICAgICAgICAgICAgZHJvcGRvd25SZWYuaW5zdGFuY2UuZHJvcGRvd25JdGVtS2V5ID0gaXRlbS5kcm9wZG93bkl0ZW1LZXk7XG4gICAgICAgICAgICBkcm9wZG93blJlZi5pbnN0YW5jZS5tZW51cyA9IGluY2x1ZGVzIGFzIFRvb2xiYXJJdGVtW107XG4gICAgICAgICAgICBkcm9wZG93blJlZi5pbnN0YW5jZS5tb2RlID0gZHJvcGRvd25Nb2RlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVUb29sYmFyU3BsaXQoKSB7XG4gICAgICAgIGNvbnN0IGNvbXBSZWYgPSB0aGlzLnRvb2xiYXJDb250YWluZXIuY3JlYXRlQ29tcG9uZW50KFRoeURpdmlkZXJDb21wb25lbnQpO1xuICAgICAgICBjb21wUmVmLmluc3RhbmNlLnRoeVZlcnRpY2FsID0gdHJ1ZTtcbiAgICAgICAgY29tcFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ214LTInKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZU1vcmVHcm91cChncm91cDogVG9vbGJhckl0ZW1bXSkge1xuICAgICAgICBpZiAoZ3JvdXAubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgY29tcFJlZiA9IHRoaXMudG9vbGJhckNvbnRhaW5lci5jcmVhdGVDb21wb25lbnQodGhpcy50b29sYmFyR3JvdXBDb21wb25lbnQpO1xuICAgICAgICAgICAgY29tcFJlZi5pbnN0YW5jZS5lZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICAgICAgICAgIGNvbXBSZWYuaW5zdGFuY2UubWVudXMgPSBncm91cDtcbiAgICAgICAgICAgIGNvbXBSZWYuaW5zdGFuY2UuaXRlbSA9IHRoaXMubW9yZUdyb3VwTWVudTtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50cy5zZXQodGhpcy5tb3JlR3JvdXBNZW51LmtleSwgY29tcFJlZik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHZpZXdDb21wb25lbnRUeXBlKHR5cGU6IFRvb2xiYXJJdGVtVHlwZSkge1xuICAgICAgICBpZiAodHlwZSA9PT0gVG9vbGJhckl0ZW1UeXBlLmRlZmF1bHQpIHtcbiAgICAgICAgICAgIHJldHVybiBUaGVUb29sYmFySXRlbUNvbXBvbmVudDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gVG9vbGJhckl0ZW1UeXBlLmRyb3Bkb3duKSB7XG4gICAgICAgICAgICByZXR1cm4gVGhlVG9vbGJhckRyb3Bkb3duQ29tcG9uZW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBUaGVUb29sYmFySXRlbUNvbXBvbmVudDtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICN0b29sYmFyQ29udGFpbmVyPjwvbmctY29udGFpbmVyPlxuPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPG5nLXRlbXBsYXRlICpuZ0lmPVwiYWZ0ZXJUZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImFmdGVyVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuIl19
266
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvY29tcG9uZW50cy90b29sYmFyL3Rvb2xiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvdG9vbGJhci90b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsS0FBSyxFQUVMLFNBQVMsRUFDVCxnQkFBZ0IsRUFPaEIsTUFBTSxFQUdOLFdBQVcsRUFDZCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUV4QyxPQUFPLEVBQTRELGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQzs7O0FBVzdGLE1BQU0sT0FBTyxtQkFBbUI7SUE2QjVCLFlBQ1ksR0FBc0IsRUFDdEIsVUFBc0IsRUFDdEIsTUFBYyxFQUNnQixxQkFBOEQ7UUFINUYsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2dCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBeUM7UUE5Qi9GLGlCQUFZLEdBQWtCLEVBQUUsQ0FBQztRQUlqQyxtQkFB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QUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUN4RDtJQUNMLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxJQUFxQjtRQUMzQyxJQUFJLElBQUksS0FBSyxlQUFlLENBQUMsT0FBTyxFQUFFO1lBQ2xDLE9BQU8sdUJBQXVCLENBQUM7U0FDbEM7UUFDRCxJQUFJLElBQUksS0FBSyxlQUFlLENBQUMsUUFBUSxFQUFFO1lBQ25DLE9BQU8sMkJBQTJCLENBQUM7U0FDdEM7UUFDRCxPQUFPLHVCQUF1QixDQUFDO0lBQ25DLENBQUM7O2lIQTdRUSxtQkFBbUIsbUdBaUNoQixvQkFBb0I7cUdBakN2QixtQkFBbUIsZ2NBYVcsZ0JBQWdCLGdFQ2hEM0Qsd0tBR0E7NEZEZ0NhLG1CQUFtQjtrQkFQL0IsU0FBUzsrQkFDSSxhQUFhLFFBRWpCO3dCQUNGLEtBQUssRUFBRSxpREFBaUQ7cUJBQzNEOzswQkFtQ0ksTUFBTTsyQkFBQyxvQkFBb0I7NENBaEN2QixNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFFbUUsZ0JBQWdCO3NCQUF4RixTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRTlCLGNBQWM7c0JBQXRELFdBQVc7dUJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIENvbXBvbmVudFJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIE9uRGVzdHJveSxcbiAgICBOZ1pvbmUsXG4gICAgSW5qZWN0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIEhvc3RCaW5kaW5nXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGh5RGl2aWRlckNvbXBvbmVudCB9IGZyb20gJ25neC10ZXRoeXMvZGl2aWRlcic7XG5pbXBvcnQgeyBFZGl0b3IsIEVsZW1lbnQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBDb21wb25lbnRUeXBlIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBUb29sYmFyQWxpZ25tZW50LCBUb29sYmFySXRlbSwgVG9vbGJhckl0ZW1zQ29tcG9zZVJldHVybiwgVG9vbGJhckl0ZW1UeXBlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy90b29sYmFyJztcbmltcG9ydCB7IFRoZVRvb2xiYXJHcm91cFRva2VuLCBUb29sYmFyTW9yZUdyb3VwIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3Rvb2xiYXInO1xuaW1wb3J0IHsgRWxlbWVudEtpbmRzLCBUb29sYmFyQWN0aW9uVHlwZXMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvbm9kZS10eXBlcyc7XG5pbXBvcnQgeyBUaGVUb29sYmFySXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL3Rvb2xiYXItaXRlbS90b29sYmFyLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IFRoZVRvb2xiYXJEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uL3Rvb2xiYXItZHJvcGRvd24vdG9vbGJhci1kcm9wZG93bi5jb21wb25lbnQnO1xuaW1wb3J0IHR5cGUgeyBUaGVUb29sYmFyR3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi90b29sYmFyLWdyb3VwL3Rvb2xiYXItZ3JvdXAuY29tcG9uZW50JztcbmltcG9ydCB7IFRoZUJhc2VUb29sYmFySXRlbSwgVGhlQmFzZVRvb2xiYXJEcm9wZG93biB9IGZyb20gJy4uLy4uL2NvcmUvdG9vbGJhci1pdGVtL2Jhc2UtdG9vbGJhci1pdGVtJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aGUtdG9vbGJhcicsXG4gICAgdGVtcGxhdGVVcmw6ICd0b29sYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAndGhlLXRvb2xiYXItY29udGFpbmVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXInXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUaGVUb29sYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgZWRpdG9yOiBFZGl0b3I7XG5cbiAgICBASW5wdXQoKSB0b29sYmFySXRlbXM6IFRvb2xiYXJJdGVtW10gPSBbXTtcblxuICAgIEBJbnB1dCgpIGFsaWduOiBUb29sYmFyQWxpZ25tZW50O1xuXG4gICAgQElucHV0KCkgY29udGFpbmVyQ2xhc3M6IHN0cmluZ1tdID0gW107XG5cbiAgICBASW5wdXQoKSBpc01vcmUgPSB0cnVlO1xuXG4gICAgQElucHV0KCkgYWZ0ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoJ3Rvb2xiYXJDb250YWluZXInLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZSB9KSB0b29sYmFyQ29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5qdXN0aWZ5Q29udGVudCcpIGdldCBqdXN0aWZ5Q29udGVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxpZ247XG4gICAgfVxuXG4gICAgY29tcG9uZW50czogTWFwPHN0cmluZywgQ29tcG9uZW50UmVmPGFueT4+ID0gbmV3IE1hcDxzdHJpbmcsIENvbXBvbmVudFJlZjxhbnk+PigpO1xuXG4gICAgY29tcG9zZVRvb2xiYXJJdGVtczogVG9vbGJhckl0ZW1zQ29tcG9zZVJldHVybjtcblxuICAgIG1vcmVHcm91cE1lbnUgPSBUb29sYmFyTW9yZUdyb3VwO1xuXG4gICAgcmVzaXplT2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyO1xuXG4gICAgZWxlbWVudFdpZHRoID0gMDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgQEluamVjdChUaGVUb29sYmFyR3JvdXBUb2tlbikgcHJpdmF0ZSB0b29sYmFyR3JvdXBDb21wb25lbnQ6IENvbXBvbmVudFR5cGU8VGhlVG9vbGJhckdyb3VwQ29tcG9uZW50PlxuICAgICkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnNldFRvb2xiYXJDbGFzcygpO1xuICAgICAgICB0aGlzLnJlbmRlclRvb2xiYXJWaWV3KCk7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgdGhpcy5pc01vcmUgJiYgdGhpcy5yZXNpemVFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBjb25zdCB0b29sYmFySXRlbXMgPSBjaGFuZ2VzLnRvb2xiYXJJdGVtcztcbiAgICAgICAgaWYgKHRvb2xiYXJJdGVtcyAmJiAhdG9vbGJhckl0ZW1zLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlclRvb2xiYXJWaWV3KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVzaXplT2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldFRvb2xiYXJDbGFzcygpIHtcbiAgICAgICAgaWYgKHRoaXMuZWRpdG9yICYmICEhdGhpcy5jb250YWluZXJDbGFzcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoLi4udGhpcy5jb250YWluZXJDbGFzcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2l6ZUVsZW1lbnQoKSB7XG4gICAgICAgIGNvbnN0IGVkaXRhYmxlRWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoZW50cmllcyA9PiB7XG4gICAgICAgICAgICBmb3IgKGxldCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB3aWR0aCB9ID0gZW50cnkuY29udGVudFJlY3Q7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNNb3JlICYmIHRoaXMuZWxlbWVudFdpZHRoICE9PSB3aWR0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRXaWR0aCA9IHdpZHRoO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlclRvb2xiYXJWaWV3KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKGVkaXRhYmxlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1RhYmxlQWN0aXZlKCkge1xuICAgICAgICBjb25zdCBbdGFibGVdID0gRWRpdG9yLm5vZGVzKHRoaXMuZWRpdG9yLCB7IG1hdGNoOiBuID0+IEVsZW1lbnQuaXNFbGVtZW50KG4pICYmIG4udHlwZSA9PT0gRWxlbWVudEtpbmRzLnRhYmxlIH0pO1xuICAgICAgICByZXR1cm4gISF0YWJsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VsZWN0aW9uQ2hhbmdlKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIGlmICh0aGlzLmlzTW9yZSkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJUb29sYmFyVmlldygpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdG9vbGJhckl0ZW1zID0gWy4uLnRoaXMudG9vbGJhckl0ZW1zLCB0aGlzLm1vcmVHcm91cE1lbnVdO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdG9vbGJhckl0ZW1zKSB7XG4gICAgICAgICAgICBpZiAoaXRlbS5rZXkgIT09IFRvb2xiYXJBY3Rpb25UeXBlcy5zcGxpdCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1Db21wb25lbnQgPSB0aGlzLmNvbXBvbmVudHMuZ2V0KGl0ZW0ua2V5KTtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbUNvbXBvbmVudCAmJiBpdGVtQ29tcG9uZW50Lmluc3RhbmNlLnNlbGVjdGlvbkNoYW5nZSkge1xuICAgICAgICAgICAgICAgICAgICBpdGVtQ29tcG9uZW50Lmluc3RhbmNlLnNlbGVjdGlvbkNoYW5nZShlZGl0b3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZW5kZXJUb29sYmFyVmlldygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdG9vbGJhckl0ZW1zID0gdGhpcy50b29sYmFySXRlbXNDb21wb3NlKCk7XG4gICAgICAgIGNvbnN0IHsgaXRlbXMsIGdyb3VwIH0gPSB0b29sYmFySXRlbXM7XG5cbiAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gdGhpcy5jb21wb3NlVG9vbGJhckl0ZW1zPy5pdGVtcz8ubGVuZ3RoICYmIGdyb3VwPy5sZW5ndGggPT09IHRoaXMuY29tcG9zZVRvb2xiYXJJdGVtcz8uZ3JvdXA/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29tcG9zZVRvb2xiYXJJdGVtcyA9IHRvb2xiYXJJdGVtcztcbiAgICAgICAgdGhpcy5jb21wb25lbnRzLmNsZWFyKCk7XG4gICAgICAgIHRoaXMudG9vbGJhckNvbnRhaW5lci5jbGVhcigpO1xuXG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5rZXkgPT09IFRvb2xiYXJBY3Rpb25UeXBlcy5zcGxpdCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRvb2xiYXJTcGxpdCgpO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUb29sYmFySXRlbShpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY3JlYXRlTW9yZUdyb3VwKGdyb3VwKTtcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjYWxjdWxhdGlvbiBkaXNwbGF5IHRvb2xiYXIgYW5kIG1vcmUgZ3JvdXBlZCB0b29sYmFyc1xuICAgICAqXG4gICAgICpcdOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAgR2xvYmFsVG9vbGJhclZpZXcg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQXG4gICAgICpcdHwg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICNjaGlsZHJlbiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJAgfFxuICAgICAqXHR8IHwgICDilIzilIDilIDilIDilIDilIDilIDilIAgI2l0ZW1zVmlldyDilIDilIDilIDilIDilIDilIDilIDilIDilJAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQIOKUjOKUgOKUgCAjZ3JvdXBlZEl0ZW1zRHJvcGRvd24g4pSA4pSA4pSA4pSQICAgfCB8XG4gICAgICpcdHwgfCAgIHwgICAgICAgI3VuZ3JvdXBlZEl0ZW1zICAgICB8IHwgVG9vbGJhclNlcGFyYXRvclZpZXcgfCB8ICAgICAgICAjZ3JvdXBlZEl0ZW1zICAgICAgIHwgICB8IHxcbiAgICAgKlx0fCB8ICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSALeKUmCDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJgg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYICAgfCB8XG4gICAgICpcdHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXC0tLS0tLS0tLS0gb25seSB3aGVuIHRvb2xiYXIgaXRlbXMgb3ZlcmZsb3cgLS0tLS0tLS0vICAgfCB8XG4gICAgICpcdHwg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYIHxcbiAgICAgKlx04pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYXG4gICAgICogc3BsaXQgd2lkdGg6IDEzcHhcbiAgICAgKiBpdGVtIHdpZHRoOiBkZWZhdWx0IGl0ZW06IDMycHg7IGRyb3Bkb3duIGl0ZW06IDQ4cHhcbiAgICAgKiBkZWZhdWx0IHBhZGRpbmdSaWdodDogNHB4XG4gICAgICogc2V0IGFzaWRlIDUwcHhcbiAgICAgKi9cbiAgICBwcml2YXRlIHRvb2xiYXJJdGVtc0NvbXBvc2UoKTogVG9vbGJhckl0ZW1zQ29tcG9zZVJldHVybiB7XG4gICAgICAgIGxldCBlbGVtZW50V2lkdGggPSB0aGlzLmlzTW9yZSA/IHRoaXMuZWxlbWVudFdpZHRoIDogbnVsbDtcbiAgICAgICAgLy8gZHJvcGRvd24gaXRlbSArIHBhZGRpbmdSaWdodFxuICAgICAgICBjb25zdCBtYXhJdGVtV2lkdGggPSA1MjtcbiAgICAgICAgLy8gZGVmYXVsdCBpdGVtICsgcGFkZGluZ1JpZ2h0XG4gICAgICAgIGNvbnN0IGRlZmF1bHRJdGVtV2lkdGggPSAzNjtcbiAgICAgICAgY29uc3Qgc3BsaXRXaWR0aCA9IDEzO1xuICAgICAgICBjb25zdCBpdGVtczogVG9vbGJhckl0ZW1bXSA9IFtdO1xuICAgICAgICBjb25zdCBncm91cDogVG9vbGJhckl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50b29sYmFySXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnRvb2xiYXJJdGVtc1tpXTtcbiAgICAgICAgICAgIGlmICghdGhpcy5pc01vcmUpIHtcbiAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgaXRlbVdpZHRoID0gZGVmYXVsdEl0ZW1XaWR0aDtcblxuICAgICAgICAgICAgc3dpdGNoIChpdGVtLmtleSkge1xuICAgICAgICAgICAgICAgIGNhc2UgRWxlbWVudEtpbmRzLmhlYWRpbmdMaXN0OlxuICAgICAgICAgICAgICAgICAgICBpdGVtV2lkdGggPSA3NDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBUb29sYmFyQWN0aW9uVHlwZXMuc3BsaXQ6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1XaWR0aCA9IHNwbGl0V2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgVG9vbGJhckFjdGlvblR5cGVzLnZlcnRpY2FsQWxpZ246XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1XaWR0aCA9IHRoaXMuaXNUYWJsZUFjdGl2ZSgpID8gbWF4SXRlbVdpZHRoIDogMDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNDdXN0b21Db21wb25lbnQgPSBpdGVtPy50eXBlID09PSBUb29sYmFySXRlbVR5cGUuZHJvcGRvd24gfHwgISFpdGVtPy5pY29uQ29tcG9uZW50O1xuICAgICAgICAgICAgICAgICAgICBpdGVtV2lkdGggPSBpc0N1c3RvbUNvbXBvbmVudCA/IG1heEl0ZW1XaWR0aCA6IGRlZmF1bHRJdGVtV2lkdGg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHJlbWFpbmluZ1dpZHRoID0gaSA9PT0gdGhpcy50b29sYmFySXRlbXMubGVuZ3RoIC0gMSA/IGl0ZW1XaWR0aCA6IGl0ZW1XaWR0aCArIHNwbGl0V2lkdGg7XG4gICAgICAgICAgICBjb25zdCBhbGxvd1JlbmRlciA9IGVsZW1lbnRXaWR0aCAmJiBlbGVtZW50V2lkdGggPj0gcmVtYWluaW5nV2lkdGg7XG4gICAgICAgICAgICBlbGVtZW50V2lkdGggLT0gaXRlbVdpZHRoO1xuXG4gICAgICAgICAgICBpZiAoYWxsb3dSZW5kZXIpIHtcbiAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0ZpcnN0U3BsaXQgPSBncm91cC5sZW5ndGggPT09IDAgJiYgaXRlbS5rZXkgPT09IFRvb2xiYXJBY3Rpb25UeXBlcy5zcGxpdDtcbiAgICAgICAgICAgICAgICAhaXNGaXJzdFNwbGl0ICYmIGdyb3VwLnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IHRoaXMucHVyZVRvb2xiYXJJdGVtcyhpdGVtcyksXG4gICAgICAgICAgICBncm91cFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGV4dGVybmFsbHkgZGVzaWduYXRlZCBtb3JlIGdyb3VwXG4gICAgICovXG4gICAgcHJpdmF0ZSB0b29sYmFySXRlbXNBbmRNb3JlQ29tcG9zZSgpIHtcbiAgICAgICAgY29uc3QgaXRlbXMgPSBbXTtcbiAgICAgICAgY29uc3QgZ3JvdXAgPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy50b29sYmFySXRlbXMpIHtcbiAgICAgICAgICAgIGlmIChpdGVtLmtleSA9PT0gVG9vbGJhckFjdGlvblR5cGVzLnNwbGl0KSB7XG4gICAgICAgICAgICAgICAgaXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IHRoaXMucHVyZVRvb2xiYXJJdGVtcyhpdGVtcyksXG4gICAgICAgICAgICBncm91cFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGZpbHRlciBhZGphY2VudCByZXBlYXRlZCBkaXZpZGVyc1xuICAgICAqIEBwYXJhbSB7VG9vbGJhckl0ZW1bXX0gaXRlbXNcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqIEBtZW1iZXJvZiBUaGVUb29sYmFyQ29tcG9uZW50XG4gICAgICovXG4gICAgcHVyZVRvb2xiYXJJdGVtcyhpdGVtczogVG9vbGJhckl0ZW1bXSkge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoaXRlbXMpKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGl0ZW1zLmZpbHRlcigoYSwgaSkgPT4ge1xuICAgICAgICAgICAgaWYgKGkgPiAwICYmIGl0ZW1zW2kgLSAxXS5rZXkgIT09IFRvb2xiYXJBY3Rpb25UeXBlcy5zcGxpdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGEua2V5ICE9PSBUb29sYmFyQWN0aW9uVHlwZXMuc3BsaXQ7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlVG9vbGJhckl0ZW0oaXRlbTogVG9vbGJhckl0ZW0pIHtcbiAgICAgICAgY29uc3QgeyBpY29uQ29tcG9uZW50LCB0eXBlLCBkcm9wZG93bk1vZGUsIGRyb3Bkb3duSXRlbUtleSwgaW5jbHVkZXMsIC4uLmFyZ3MgfSA9IGl0ZW07XG4gICAgICAgIGNvbnN0IHZpZXdDb21wb25lbnQgPSB0aGlzLnZpZXdDb21wb25lbnRUeXBlKHR5cGUpO1xuICAgICAgICBjb25zdCBjb21wUmVmID0gdGhpcy50b29sYmFyQ29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudDxUaGVCYXNlVG9vbGJhckl0ZW0+KGljb25Db21wb25lbnQgPyBpY29uQ29tcG9uZW50IDogdmlld0NvbXBvbmVudCk7XG5cbiAgICAgICAgY29tcFJlZi5pbnN0YW5jZS5lZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICAgICAgY29tcFJlZi5pbnN0YW5jZS50b29sYmFySXRlbSA9IGl0ZW07XG4gICAgICAgIHRoaXMuY29tcG9uZW50cy5zZXQoaXRlbS5rZXksIGNvbXBSZWYpO1xuICAgICAgICBpZiAoaXRlbS50eXBlID09PSBUb29sYmFySXRlbVR5cGUuZHJvcGRvd24pIHtcbiAgICAgICAgICAgIGNvbnN0IGRyb3Bkb3duUmVmID0gY29tcFJlZiBhcyB1bmtub3duIGFzIENvbXBvbmVudFJlZjxUaGVCYXNlVG9vbGJhckRyb3Bkb3duPjtcbiAgICAgICAgICAgIGRyb3Bkb3duUmVmLmluc3RhbmNlLmRyb3Bkb3duSXRlbUtleSA9IGl0ZW0uZHJvcGRvd25JdGVtS2V5O1xuICAgICAgICAgICAgZHJvcGRvd25SZWYuaW5zdGFuY2UubWVudXMgPSBpbmNsdWRlcyBhcyBUb29sYmFySXRlbVtdO1xuICAgICAgICAgICAgZHJvcGRvd25SZWYuaW5zdGFuY2UubW9kZSA9IGRyb3Bkb3duTW9kZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlVG9vbGJhclNwbGl0KCkge1xuICAgICAgICBjb25zdCBjb21wUmVmID0gdGhpcy50b29sYmFyQ29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChUaHlEaXZpZGVyQ29tcG9uZW50KTtcbiAgICAgICAgY29tcFJlZi5pbnN0YW5jZS50aHlWZXJ0aWNhbCA9IHRydWU7XG4gICAgICAgIGNvbXBSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdteC0yJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVNb3JlR3JvdXAoZ3JvdXA6IFRvb2xiYXJJdGVtW10pIHtcbiAgICAgICAgaWYgKGdyb3VwLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBSZWYgPSB0aGlzLnRvb2xiYXJDb250YWluZXIuY3JlYXRlQ29tcG9uZW50KHRoaXMudG9vbGJhckdyb3VwQ29tcG9uZW50KTtcbiAgICAgICAgICAgIGNvbXBSZWYuaW5zdGFuY2UuZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgICAgICAgICBjb21wUmVmLmluc3RhbmNlLm1lbnVzID0gZ3JvdXA7XG4gICAgICAgICAgICBjb21wUmVmLmluc3RhbmNlLml0ZW0gPSB0aGlzLm1vcmVHcm91cE1lbnU7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudHMuc2V0KHRoaXMubW9yZUdyb3VwTWVudS5rZXksIGNvbXBSZWYpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2aWV3Q29tcG9uZW50VHlwZSh0eXBlOiBUb29sYmFySXRlbVR5cGUpIHtcbiAgICAgICAgaWYgKHR5cGUgPT09IFRvb2xiYXJJdGVtVHlwZS5kZWZhdWx0KSB7XG4gICAgICAgICAgICByZXR1cm4gVGhlVG9vbGJhckl0ZW1Db21wb25lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGUgPT09IFRvb2xiYXJJdGVtVHlwZS5kcm9wZG93bikge1xuICAgICAgICAgICAgcmV0dXJuIFRoZVRvb2xiYXJEcm9wZG93bkNvbXBvbmVudDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gVGhlVG9vbGJhckl0ZW1Db21wb25lbnQ7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAjdG9vbGJhckNvbnRhaW5lcj48L25nLWNvbnRhaW5lcj5cbjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjxuZy10ZW1wbGF0ZSAqbmdJZj1cImFmdGVyVGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJhZnRlclRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -446,4 +446,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImpo
446
446
  type: ViewChild,
447
447
  args: ['globalToolbar']
448
448
  }] } });
449
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL3NyYy9lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vcGFja2FnZXMvc3JjL2VkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsU0FBUyxFQUNULEtBQUssRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixNQUFNLEVBQ04sWUFBWSxFQUlaLHVCQUF1QixFQUUxQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFvQixNQUFNLHdCQUF3QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxNQUFNLEVBQVEsVUFBVSxFQUFFLFlBQVksRUFBdUIsS0FBSyxFQUFFLElBQUksRUFBYSxNQUFNLE9BQU8sQ0FBQztBQUM1RyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQWMsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBMkMsV0FBVyxFQUFpQixVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0csT0FBTyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSx3QkFBd0IsRUFBa0IsMEJBQTBCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHcEksT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHFCQUFxQixF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QUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVJLFNBQVM7c0JBQWxCLE1BQU07Z0JBRUcsYUFBYTtzQkFBdEIsTUFBTTtnQkFFRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBRUcsa0JBQWtCO3NCQUEzQixNQUFNO2dCQUdQLGdCQUFnQjtzQkFEZixTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJL0Msb0JBQW9CO3NCQURuQixTQUFTO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUlyRSxxQkFBcUI7c0JBRHBCLFNBQVM7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgT25Jbml0LFxuICAgIE9uRGVzdHJveSxcbiAgICBDb21wb25lbnQsXG4gICAgSW5wdXQsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBmb3J3YXJkUmVmLFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgT25DaGFuZ2VzLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgTmdab25lLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDZGtTY3JvbGxhYmxlLCBTY3JvbGxEaXNwYXRjaGVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQgeyBtaXhpblVuc3Vic2NyaWJlLCBNaXhpbkJhc2UgfSBmcm9tICduZ3gtdGV0aHlzL2NvcmUnO1xuaW1wb3J0IHsgaXNLZXlIb3RrZXkgfSBmcm9tICdpcy1ob3RrZXknO1xuaW1wb3J0IHsgRWRpdG9yLCBUZXh0LCBUcmFuc2Zvcm1zLCBjcmVhdGVFZGl0b3IsIEVsZW1lbnQsIERlc2NlbmRhbnQsIFJhbmdlLCBQYXRoLCBOb2RlRW50cnkgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyB3aXRoSGlzdG9yeSB9IGZyb20gJ3NsYXRlLWhpc3RvcnknO1xuaW1wb3J0IHsgQW5ndWxhckVkaXRvciwgU2xhdGVFcnJvciwgd2l0aEFuZ3VsYXIgfSBmcm9tICdzbGF0ZS1hbmd1bGFyJztcbmltcG9ydCB7IFRoZU9wdGlvbnMsIERvbUV2ZW50RGF0YUluZm8sIFRoZUVkaXRvciwgVGhlRGF0YU1vZGUsIFRvb2xiYXJFbnRpdHksIFBsdWdpbktleXMgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTWFya1R5cGVzLCBDTElQQk9BUkRfRk9STUFUX0tFWSwgREVGQVVMVF9TQ1JPTExfQ09OVEFJTkVSLCBQbHVnaW5NZW51U3ZncywgaW5pdGlhbGl6ZURlZmF1bHRNZW51SWNvbnMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBUaGVUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90ZW1wbGF0ZS90ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGhlVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90b29sYmFyL3Rvb2xiYXIuY29tcG9uZW50JztcbmltcG9ydCB7IFRoZVRleHRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaGVDb250ZXh0U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IFRoZUNvbG9yU2VsZWN0U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY29sb3Itc2VsZWN0LnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgICBhdXRvRm9jdXMsXG4gICAgYXV0b1Njcm9sbFZpZXdIYW5kbGUsXG4gICAgZGF0YURlc2VyaWFsaXplLFxuICAgIGRhdGFTZXJpYWxpemluZyxcbiAgICBpZENyZWF0b3IsXG4gICAgc2V0RWRpdG9yVVVJRCxcbiAgICBjb2VyY2VQaXhlbHNGcm9tQ3NzVmFsdWUsXG4gICAgVEhFX0VESVRPUl9QUkVWSU9VU19TRUxFQ1RJT05cbn0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBkZWJvdW5jZSB9IGZyb20gJy4vdXRpbHMvbG9kYXNoJztcbmltcG9ydCB7IHdpdGhUaGVpYSwgY3JlYXRlVG9vbGJhciwgZ2V0UGx1Z2luT3B0aW9ucyB9IGZyb20gJy4vY29yZSc7XG5pbXBvcnQgeyBpbnRlcm5hbFBsdWdpbnMgfSBmcm9tICcuL3BsdWdpbnMnO1xuaW1wb3J0IHsgc2hvcnRjdXRzIH0gZnJvbSAnLi9zaG9ydGN1dHMnO1xuaW1wb3J0ICogYXMgVGhlVHJhbnNmb3JtcyBmcm9tICcuL3RyYW5zZm9ybXMnO1xuaW1wb3J0ICogYXMgVGhlUXVlcmllcyBmcm9tICcuL3F1ZXJpZXMnO1xuaW1wb3J0IHsgVGhlUGx1Z2luIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BsdWdpbnMvcGx1Z2lucyc7XG5pbXBvcnQgeyBRdWlja0luc2VydFBsdWdpbk9wdGlvbnMgfSBmcm9tICcuL3BsdWdpbnMvcXVpY2staW5zZXJ0L3F1aWNrLWluc2VydC5wbHVnaW4nO1xuaW1wb3J0IHsgVGh5SWNvblJlZ2lzdHJ5IH0gZnJvbSAnbmd4LXRldGh5cy9pY29uJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aGUtZWRpdG9yLCB0aGVFZGl0b3InLFxuICAgIHRlbXBsYXRlVXJsOiAnZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgVGhlQ29udGV4dFNlcnZpY2UsXG4gICAgICAgIFRoZUNvbG9yU2VsZWN0U2VydmljZSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUaGVFZGl0b3JDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3RoZS1lZGl0b3InLFxuICAgICAgICAnW2NsYXNzLnRoZS1lZGl0b3ItcmVhZG9ubHldJzogJ3RoZU9wdGlvbnM/LnJlYWRvbmx5J1xuICAgIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVGhlRWRpdG9yQ29tcG9uZW50IGV4dGVuZHMgbWl4aW5VbnN1YnNjcmliZShNaXhpbkJhc2UpIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgdmlzaWJsZVF1aWNrSW5zZXJ0UGx1cyA9IHRydWU7XG5cbiAgICBASW5wdXQoKSB0aGVPcHRpb25zOiBUaGVPcHRpb25zO1xuXG4gICAgQElucHV0KCkgdGhlUGx1Z2luczogVGhlUGx1Z2luW10gPSBbXTtcblxuICAgIEBJbnB1dCgpIHRoZUdsb2JhbFRvb2xiYXI/OiBUaGVUb29sYmFyQ29tcG9uZW50O1xuXG4gICAgQElucHV0KCkgdGhlRGVjb3JhdGU6IChlZGl0b3I6IFRoZUVkaXRvciwgbm9kZUVudHJ5OiBOb2RlRW50cnkpID0+IFJhbmdlW107XG5cbiAgICBASW5wdXQoKSB0aGVPbkVycm9yPzogKGVycm9yOiBTbGF0ZUVycm9yKSA9PiB2b2lkO1xuXG4gICAgQE91dHB1dCgpIHRoZU9uU2F2ZTogRXZlbnRFbWl0dGVyPERlc2NlbmRhbnRbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPERlc2NlbmRhbnRbXT4oKTtcblxuICAgIEBPdXRwdXQoKSB0aGVPbkRPTUV2ZW50OiBFdmVudEVtaXR0ZXI8eyBuYXRpdmVFdmVudDogRXZlbnQ7IGRhdGE/OiBEb21FdmVudERhdGFJbmZvIH0+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIHRoZUVkaXRvckNyZWF0ZWQ6IEV2ZW50RW1pdHRlcjxFZGl0b3I+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIHRoZVVwbG9hZGluZ1N0YXR1czogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpOyAvLyB0cnVlIOS4iuS8oOe7k+adnyBmYWxzZSDkuIrkvKDkuK1cblxuICAgIEBWaWV3Q2hpbGQoJ3RlbXBsYXRlSW5zdGFuY2UnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHRlbXBsYXRlSW5zdGFuY2U6IFRoZVRlbXBsYXRlQ29tcG9uZW50O1xuXG4gICAgQFZpZXdDaGlsZCgndGhlRWRpdGFibGVDb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIHRoZUVkaXRhYmxlQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIEBWaWV3Q2hpbGQoJ2dsb2JhbFRvb2xiYXInKVxuICAgIGdsb2JhbFRvb2xiYXJJbnN0YW5jZTogVGhlVG9vbGJhckNvbXBvbmVudDtcblxuICAgIGNka1Njcm9sbGFibGU6IENka1Njcm9sbGFibGU7XG5cbiAgICB0b29sYmFyRW50aXR5OiBUb29sYmFyRW50aXR5O1xuXG4gICAgZWRpdG9yOiBUaGVFZGl0b3I7XG5cbiAgICBlZGl0b3JWYWx1ZTogRGVzY2VuZGFudFtdO1xuXG4gICAgZ2xvYmFsVG9vbGJhckNsYXNzOiBzdHJpbmdbXTtcblxuICAgIGRlY29yYXRlOiAobm9kZUVudHJ5OiBOb2RlRW50cnkpID0+IFJhbmdlW107XG5cbiAgICBnZXQgdGhlR2xvYmFsVG9vbGJhckluc3RhbmNlKCk6IFRoZVRvb2xiYXJDb21wb25lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy50aGVHbG9iYWxUb29sYmFyID8gdGhpcy50aGVHbG9iYWxUb29sYmFyIDogdGhpcy5nbG9iYWxUb29sYmFySW5zdGFuY2U7XG4gICAgfVxuXG4gICAgZ2V0IG1heEhlaWdodCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGhlT3B0aW9ucz8ubWF4SGVpZ2h0ID8gYCR7dGhpcy50aGVPcHRpb25zPy5tYXhIZWlnaHR9cHhgIDogbnVsbDtcbiAgICB9XG5cbiAgICBhdXRvU2Nyb2xsVmlldyA9IGRlYm91bmNlKGZ1bmN0aW9uIChlZGl0b3I6IEVkaXRvciwgc2Nyb2xsQ29udGFpbmVyOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGF1dG9TY3JvbGxWaWV3SGFuZGxlKGVkaXRvciwgc2Nyb2xsQ29udGFpbmVyKTtcbiAgICB9LCA4MCk7XG5cbiAgICBlbGVtZW50VG9IdG1sOiBXZWFrTWFwPEVsZW1lbnQsIHN0cmluZz4gPSBuZXcgV2Vha01hcCgpO1xuXG4gICAgcHJpdmF0ZSBvbkNoYW5nZUNhbGxiYWNrOiAoXzogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICBwcml2YXRlIG9uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSB0aGVDb250ZXh0U2VydmljZTogVGhlQ29udGV4dFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHNjcm9sbERpc3BhdGNoZXI6IFNjcm9sbERpc3BhdGNoZXIsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBpY29uUmVnaXN0cnk6IFRoeUljb25SZWdpc3RyeVxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmluaXRpYWxpemUoKTtcbiAgICAgICAgdGhpcy5pbml0Q2RrU2Nyb2xsKCk7XG4gICAgICAgIGluaXRpYWxpemVEZWZhdWx0TWVudUljb25zKHRoaXMuaWNvblJlZ2lzdHJ5KTtcbiAgICAgICAgdGhpcy50aGVDb250ZXh0U2VydmljZS51cGxvYWRpbmdTdGF0dXMkLnN1YnNjcmliZShpc1VwbG9hZGluZyA9PiB7XG4gICAgICAgICAgICBpZiAoaXNVcGxvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRoZVVwbG9hZGluZ1N0YXR1cy5lbWl0KHRydWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50aGVDb250ZXh0U2VydmljZS51cGxvYWRpbmdGaWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aGVVcGxvYWRpbmdTdGF0dXMuZW1pdChmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5vbkVycm9ySGFuZGxlcigpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGNoYW5nZXMudGhlT3B0aW9ucztcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplT3B0aW9ucygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuY3VycmVudFZhbHVlPy5yZWFkb25seSAhPT0gb3B0aW9ucy5wcmV2aW91c1ZhbHVlPy5yZWFkb25seSkge1xuICAgICAgICAgICAgdGhpcy5hcHBseUF1dG9Gb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VzWyd0aGVEZWNvcmF0ZSddKSB7XG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlRGVjb3JhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5lZGl0b3I/LnNlbGVjdGlvbiAmJiAob3B0aW9ucz8uY3VycmVudFZhbHVlPy5yZWFkb25seSB8fCBvcHRpb25zPy5jdXJyZW50VmFsdWU/LmRpc2FibGVkKSkge1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5kZXNlbGVjdCh0aGlzLmVkaXRvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgVEhFX0VESVRPUl9QUkVWSU9VU19TRUxFQ1RJT04uZGVsZXRlKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgaWYgKHRoaXMuY2RrU2Nyb2xsYWJsZSkge1xuICAgICAgICAgICAgdGhpcy5jZGtTY3JvbGxhYmxlLm5nT25EZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbml0aWFsaXplKCkge1xuICAgICAgICBjb25zdCBkZWZhdWx0UGx1Z2lucyA9IGludGVybmFsUGx1Z2lucygpO1xuICAgICAgICBjb25zdCBwbHVnaW5zID0gWy4uLmRlZmF1bHRQbHVnaW5zLCAuLi50aGlzLnRoZVBsdWdpbnNdO1xuICAgICAgICB0aGlzLmVkaXRvciA9IHdpdGhUaGVpYSh3aXRoSGlzdG9yeSh3aXRoQW5ndWxhcihjcmVhdGVFZGl0b3IoKSwgQ0xJUEJPQVJEX0ZPUk1BVF9LRVkpKSwgcGx1Z2lucyk7XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVEZWNvcmF0ZSgpO1xuICAgICAgICB0aGlzLmVkaXRvci5kaXNhYmxlZCA9IHRoaXMudGhlT3B0aW9ucz8uZGlzYWJsZWQ7XG4gICAgICAgIHRoaXMuZWRpdG9yLmV4dHJhRWxlbWVudE9wdGlvbnMgPSB0aGlzLnRoZU9wdGlvbnM/LmV4dHJhRWxlbWVudE9wdGlvbnM7XG4gICAgICAgIHRoaXMuZWRpdG9yLm9wdGlvbnMgPSB0aGlzLnRoZU9wdGlvbnM7XG4gICAgICAgIHNldEVkaXRvclVVSUQodGhpcy5lZGl0b3IsIGlkQ3JlYXRvcigpKTtcbiAgICAgICAgdGhpcy50aGVDb250ZXh0U2VydmljZS5pbml0aWFsaXplKHtcbiAgICAgICAgICAgIHRoZU9wdGlvbnM6IHRoaXMudGhlT3B0aW9ucyxcbiAgICAgICAgICAgIG5hdGl2ZUVsZW1lbnQ6IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgdmlld0NvbnRhaW5lclJlZjogdGhpcy52aWV3Q29udGFpbmVyUmVmXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnRvb2xiYXJDYWxjdWxhdGUoKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAvLyBZb3UgbmVlZCB0byB3YWl0IGZvciB0aGUgZWRpdG9yIHJlbmRlcmluZyB0byBjb21wbGV0ZVxuICAgICAgICAgICAgLy8gYmVmb3JlIHRyaWdnZXJpbmcgdGhlIGV4dGVybmFsIHRvb2xiYXIgYXNzaWdubWVudCBkZXRlY3Rpb25cbiAgICAgICAgICAgIHRoaXMuZ2xvYmFsVG9vbGJhckluaXQoKTtcbiAgICAgICAgICAgIHRoaXMudGhlRWRpdG9yQ3JlYXRlZC5lbWl0KHRoaXMuZWRpdG9yKTtcbiAgICAgICAgICAgIHRoaXMuYXBwbHlBdXRvRm9jdXMoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHF1aWNrSW5zZXJ0UGx1Z2luID0gZ2V0UGx1Z2luT3B0aW9uczxRdWlja0luc2VydFBsdWdpbk9wdGlvbnM+KHRoaXMuZWRpdG9yLCBQbHVnaW5LZXlzLnF1aWNrSW5zZXJ0KTtcbiAgICAgICAgLy8gcXVpY2tJbnNlcnRcbiAgICAgICAgaWYgKHF1aWNrSW5zZXJ0UGx1Z2luLmRpc2FibGVkIHx8IHF1aWNrSW5zZXJ0UGx1Z2luLmRpc2FibGVkUGx1cykge1xuICAgICAgICAgICAgdGhpcy52aXNpYmxlUXVpY2tJbnNlcnRQbHVzID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbml0Q2RrU2Nyb2xsKCkge1xuICAgICAgICBpZiAodGhpcy5tYXhIZWlnaHQpIHtcbiAgICAgICAgICAgIHRoaXMuY2RrU2Nyb2xsYWJsZSA9IG5ldyBDZGtTY3JvbGxhYmxlKHRoaXMudGhlRWRpdGFibGVDb250YWluZXIsIHRoaXMuc2Nyb2xsRGlzcGF0Y2hlciwgdGhpcy5uZ1pvbmUpOyAgICAgICAgICAgIFxuICAgICAgICAgICAgdGhpcy5jZGtTY3JvbGxhYmxlLm5nT25Jbml0KCk7XG4gICAgICAgICAgICB0aGlzLnRoZUVkaXRhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdjZGtTY3JvbGxhYmxlJywgJycpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZU9wdGlvbnMoKSB7XG4gICAgICAgIGlmICghdGhpcy50aGVPcHRpb25zKSB7XG4gICAgICAgICAgICB0aGlzLnRoZU9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgcmVhZG9ubHk6IGZhbHNlLFxuICAgICAgICAgICAgICAgIG1vZGU6IFRoZURhdGFNb2RlLmh0bWxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnRoZU9wdGlvbnMubW9kZSkge1xuICAgICAgICAgICAgdGhpcy50aGVPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMudGhlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICBtb2RlOiBUaGVEYXRhTW9kZS5odG1sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXBwbHlBdXRvRm9jdXMoKSB7XG4gICAgICAgIGlmICghdGhpcy50aGVPcHRpb25zPy5kaXNhYmxlZCAmJiAhdGhpcy50aGVPcHRpb25zPy5yZWFkb25seSkge1xuICAgICAgICAgICAgYXV0b0ZvY3VzKHRoaXMuZWRpdG9yLCB0aGlzLnRoZU9wdGlvbnM/LmF1dG9Gb2N1cyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b29sYmFyQ2FsY3VsYXRlKCkge1xuICAgICAgICBjb25zdCB7IGdsb2JhbFRvb2xiYXJDbGFzcywgdG9vbGJhckVudGl0eSB9ID0gY3JlYXRlVG9vbGJhcih0aGlzLmVkaXRvciwgdGhpcz8udGhlT3B0aW9ucz8udG9vbGJhcik7XG4gICAgICAgIHRoaXMuZ2xvYmFsVG9vbGJhckNsYXNzID0gZ2xvYmFsVG9vbGJhckNsYXNzO1xuICAgICAgICB0aGlzLnRvb2xiYXJFbnRpdHkgPSB0b29sYmFyRW50aXR5O1xuICAgIH1cblxuICAgIGdsb2JhbFRvb2xiYXJJbml0KCkge1xuICAgICAgICBpZiAodGhpcy50aGVHbG9iYWxUb29sYmFyKSB7XG4gICAgICAgICAgICB0aGlzLnRoZUdsb2JhbFRvb2xiYXJJbnN0YW5jZS5lZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICAgICAgICAgIHRoaXMudGhlR2xvYmFsVG9vbGJhckluc3RhbmNlLnRvb2xiYXJJdGVtcyA9IHRoaXMudG9vbGJhckVudGl0eS5nbG9iYWw7XG4gICAgICAgICAgICB0aGlzLnRoZUdsb2JhbFRvb2xiYXJJbnN0YW5jZS5jb250YWluZXJDbGFzcyA9IHRoaXMuZ2xvYmFsVG9vbGJhckNsYXNzO1xuICAgICAgICAgICAgdGhpcy50aGVHbG9iYWxUb29sYmFySW5zdGFuY2UuYWxpZ24gPSB0aGlzPy50aGVPcHRpb25zPy50b29sYmFyPy5hbGlnbjtcbiAgICAgICAgICAgIHRoaXMudGhlR2xvYmFsVG9vbGJhckluc3RhbmNlLnNldFRvb2xiYXJDbGFzcygpO1xuICAgICAgICAgICAgdGhpcy50aGVHbG9iYWxUb29sYmFySW5zdGFuY2UucmVuZGVyVG9vbGJhclZpZXcoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyB8IERlc2NlbmRhbnRbXSkge1xuICAgICAgICBjb25zdCBkYXRhID0gZGF0YURlc2VyaWFsaXplKHRoaXMudGhlT3B0aW9ucz8ubW9kZSwgdmFsdWUpO1xuICAgICAgICAvLyBkYXRhLWRlc2VyaWFsaXplXG4gICAgICAgIHRoaXMuZWRpdG9yVmFsdWUgPSBkYXRhO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gZm47XG4gICAgfVxuXG4gICAgdmFsdWVDaGFuZ2UodmFsdWU6IERlc2NlbmRhbnRbXSkge1xuICAgICAgICBjb25zdCBpc0VkaXRhYmxlID0gIXRoaXMudGhlT3B0aW9ucz8ucmVhZG9ubHkgJiYgIXRoaXMudGhlT3B0aW9ucz8uZGlzYWJsZWQ7XG5cbiAgICAgICAgdGhpcy50aGVHbG9iYWxUb29sYmFySW5zdGFuY2U/LnNlbGVjdGlvbkNoYW5nZSh0aGlzLmVkaXRvcik7XG5cbiAgICAgICAgLy8gYXV0byBzY3JvbGwgdmlld1xuICAgICAgICBjb25zdCBzY3JvbGxDb250YWluZXIgPSB0aGlzLnRoZU9wdGlvbnM/LnNjcm9sbENvbnRhaW5lcjtcbiAgICAgICAgY29uc3QgbWF4SGVpZ2h0ID0gdGhpcy50aGVPcHRpb25zPy5tYXhIZWlnaHQ7XG4gICAgICAgIGlmIChpc0VkaXRhYmxlICYmIChzY3JvbGxDb250YWluZXIgfHwgbWF4SGVpZ2h0KSkge1xuICAgICAgICAgICAgY29uc3QgY29udGFpbmVyID0gbWF4SGVpZ2h0ID8gREVGQVVMVF9TQ1JPTExfQ09OVEFJTkVSIDogc2Nyb2xsQ29udGFpbmVyO1xuICAgICAgICAgICAgdGhpcy5hdXRvU2Nyb2xsVmlldyh0aGlzLmVkaXRvciwgY29udGFpbmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmVkaXRvclZhbHVlID09PSB2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZWRpdG9yVmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICAvLyBzZXJpYWxpemluZ1xuICAgICAgICBsZXQgbmV3VmFsdWUgPSB0aGlzLnNlcmlhbGl6aW5nVmFsdWUodmFsdWUpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sobmV3VmFsdWUpO1xuICAgIH1cblxuICAgIHNlcmlhbGl6aW5nVmFsdWUodmFsdWU6IERlc2NlbmRhbnRbXSk6IHN0cmluZyB8IERlc2NlbmRhbnRbXSB7XG4gICAgICAgIGlmICh0aGlzLnRoZU9wdGlvbnM/Lm1vZGUgPT09IFRoZURhdGFNb2RlLmh0bWwpIHtcbiAgICAgICAgICAgIGxldCBodG1sVmFsdWUgPSAnJztcbiAgICAgICAgICAgIHZhbHVlLmZvckVhY2goKGVsZW1lbnQ6IEVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgZWxlbWVudEh0bWwgPSB0aGlzLmVsZW1lbnRUb0h0bWwuZ2V0KGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50SHRtbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHNlcmlhbGl6aW5nXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRIdG1sID0gZGF0YVNlcmlhbGl6aW5nKHRoaXMudGhlT3B0aW9ucz8ubW9kZSwgW2VsZW1lbnRdKSBhcyBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgIGh0bWxWYWx1ZSArPSBlbGVtZW50SHRtbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50VG9IdG1sLnNldChlbGVtZW50LCBlbGVtZW50SHRtbCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaHRtbFZhbHVlICs9IGVsZW1lbnRIdG1sO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gaHRtbFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBvbkVycm9ySGFuZGxlcigpIHtcbiAgICAgICAgdGhpcy5lZGl0b3Iub25FcnJvciA9IChlcnJvckRhdGE6IFNsYXRlRXJyb3IpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRoZU9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRoZU9uRXJyb3IoZXJyb3JEYXRhKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXJyb3JEYXRhLm5hdGl2ZUVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvckRhdGEubmF0aXZlRXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHJlbmRlckVsZW1lbnQgPSAoZWxlbWVudDogRWxlbWVudCkgPT4ge1xuICAgICAgICBjb25zdCB0ZW1wbGF0ZSA9IHRoaXMudGVtcGxhdGVJbnN0YW5jZS5yZW5kZXJFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmVkaXRvci5yZW5kZXJFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gY29tcG9uZW50ID8gY29tcG9uZW50IDogdGVtcGxhdGU7XG4gICAgfTtcblxuICAgIHJlbmRlckxlYWYgPSAodGV4dDogVGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBsZWFmID0gdGhpcy5lZGl0b3IucmVuZGVyTGVhZih0ZXh0KTtcbiAgICAgICAgcmV0dXJuIGxlYWYgPyBsZWFmIDogbnVsbDtcbiAgICB9O1xuXG4gICAgcmVuZGVyVGV4dCA9ICh0ZXh0OiBUZXh0KSA9PiB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIE1hcmtUeXBlcykge1xuICAgICAgICAgICAgaWYgKHRleHRbTWFya1R5cGVzW2tleV1dKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFRoZVRleHRDb21wb25lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRleHQudGV4dC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBnZW5lcmF0ZURlY29yYXRlKCkge1xuICAgICAgICB0aGlzLmRlY29yYXRlID0gKG5vZGVFbnRyeTogTm9kZUVudHJ5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkZWNvcmF0aW9ucyA9IFtdO1xuXG4gICAgICAgICAgICBpZiAodGhpcy50aGVEZWNvcmF0ZSkge1xuICAgICAgICAgICAgICAgIGRlY29yYXRpb25zLnB1c2goLi4udGhpcy50aGVEZWNvcmF0ZSh0aGlzLmVkaXRvciwgbm9kZUVudHJ5KSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBkZWNvcmF0aW9ucztcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBvbktleURvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgc2hvcnRjdXRzKHRoaXMuZWRpdG9yLCBldmVudCk7XG4gICAgICAgIHRoaXMudGhlT25ET01FdmVudC5lbWl0KHtcbiAgICAgICAgICAgIG5hdGl2ZUV2ZW50OiBldmVudCxcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBrZXk6IGV2ZW50LmtleVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGlzS2V5SG90a2V5KCdtb2QrcycsIGV2ZW50KSkge1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRoZU9uU2F2ZS5lbWl0KHRoaXMuZWRpdG9yVmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0tleUhvdGtleSgnbW9kK2EnLCBldmVudCkpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlU2VsZWN0QWxsKCk7XG4gICAgICAgIH1cbiAgICAgICAgQW5ndWxhckVkaXRvci5vbktleWRvd24odGhpcy5lZGl0b3IsIGV2ZW50KTtcbiAgICB9O1xuXG4gICAgbW91c2Vkb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGVkaXRhYmxlRWxlbWVudCA9IEFuZ3VsYXJFZGl0b3IudG9ET01Ob2RlKHRoaXMuZWRpdG9yLCB0aGlzLmVkaXRvcik7XG4gICAgICAgIGNvbnN0IHJlY3RFZGl0YWJsZSA9IGVkaXRhYmxlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgYWJzb2x1dGVFbGVtZW50ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChldmVudC54LCBldmVudC55KTtcbiAgICAgICAgaWYgKCFlZGl0YWJsZUVsZW1lbnQuaXNFcXVhbE5vZGUoYWJzb2x1dGVFbGVtZW50KSkge1xuICAgICAgICAgICAgY29uc3QgYmxvY2tDYXJkRWxlbWVudCA9IGFic29sdXRlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuc2xhdGUtYmxvY2stY2FyZCcpO1xuICAgICAgICAgICAgaWYgKCFibG9ja0NhcmRFbGVtZW50KSByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHsgcGFkZGluZ1JpZ2h0IH0gPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlZGl0YWJsZUVsZW1lbnQsIG51bGwpO1xuICAgICAgICBjb25zdCBwYWRkaW5nUmlnaHRQaXhlbHMgPSBjb2VyY2VQaXhlbHNGcm9tQ3NzVmFsdWUocGFkZGluZ1JpZ2h0KTtcbiAgICAgICAgY29uc3QgZmFrZVJpZ2h0WCA9IHJlY3RFZGl0YWJsZS5yaWdodCAtIHBhZGRpbmdSaWdodFBpeGVscyAtIDUwO1xuICAgICAgICBsZXQgcmVsYXRpdmVFbGVtZW50ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChmYWtlUmlnaHRYLCBldmVudC55KTtcbiAgICAgICAgbGV0IHJlbGF0aXZlQmxvY2tDYXJkRWxlbWVudCA9IHJlbGF0aXZlRWxlbWVudC5jbG9zZXN0KCcuc2xhdGUtYmxvY2stY2FyZCcpO1xuICAgICAgICBpZiAocmVsYXRpdmVCbG9ja0NhcmRFbGVtZW50KSB7XG4gICAgICAgICAgICBjb25zdCBjZW50ZXJYID0gcmVjdEVkaXRhYmxlLnggKyByZWN0RWRpdGFibGUud2lkdGggLyAyO1xuICAgICAgICAgICAgY29uc3QgYmxvY2tDYXJkRW50cnkgPSBBbmd1bGFyRWRpdG9yLnRvU2xhdGVDYXJkRW50cnkodGhpcy5lZGl0b3IsIHJlbGF0aXZlQmxvY2tDYXJkRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZCk7XG4gICAgICAgICAgICBpZiAoYmxvY2tDYXJkRW50cnkgJiYgdGhpcy5lZGl0b3IuaXNCbG9ja0NhcmQoYmxvY2tDYXJkRW50cnlbMF0pKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBBbmd1bGFyRWRpdG9yLm1vdmVCbG9ja0NhcmQodGhpcy5lZGl0b3IsIGJsb2NrQ2FyZEVudHJ5WzBdLCB7IGRpcmVjdGlvbjogZXZlbnQueCA8IGNlbnRlclggPyAnbGVmdCcgOiAncmlnaHQnIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFuZGxlU2VsZWN0QWxsKCkge1xuICAgICAgICBsZXQgbm9kZTtcbiAgICAgICAgaWYgKCF0aGlzLmVkaXRvci5zZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIFRoZVRyYW5zZm9ybXMuc2V0RW5kU2VsZWN0aW9uKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBbc3RhcnQsIGVuZF0gPSBSYW5nZS5lZGdlcyh0aGlzLmVkaXRvci5zZWxlY3Rpb24pO1xuICAgICAgICBjb25zdCBzZWxlY3Rpb25SYW5nZSA9IEVkaXRvci5yYW5nZSh0aGlzLmVkaXRvciwgc3RhcnQsIGVuZCk7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lckJsb2NrcyA9IFRoZVF1ZXJpZXMuZ2V0Q29udGFpbmVyQmxvY2tzKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb250YWluZXJCbG9ja3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIFtub2RlXSA9IFRoZVF1ZXJpZXMuZ2V0Tm9kZXNCeVR5cGUodGhpcy5lZGl0b3IsIGNvbnRhaW5lckJsb2Nrc1tpXSk7XG4gICAgICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IFssIHBhdGhdID0gbm9kZTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc1N0YXJ0UGFyZW50ID0gUGF0aC5lcXVhbHMocGF0aCwgc3RhcnQucGF0aC5zbGljZSgwLCBwYXRoLmxlbmd0aCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzRW5kUGFyZW50ID0gUGF0aC5lcXVhbHMocGF0aCwgZW5kLnBhdGguc2xpY2UoMCwgcGF0aC5sZW5ndGgpKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNTdGFydFBhcmVudCAmJiBpc0VuZFBhcmVudCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBub2RlUmFuZ2UgPSBFZGl0b3IucmFuZ2UodGhpcy5lZGl0b3IsIHBhdGgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIVJhbmdlLmVxdWFscyhub2RlUmFuZ2UsIHNlbGVjdGlvblJhbmdlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QodGhpcy5lZGl0b3IsIG5vZGVSYW5nZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBub2RlID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFub2RlKSB7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdCh0aGlzLmVkaXRvciwgW10pO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBvbkNsaWNrID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIEFuZ3VsYXJFZGl0b3Iub25DbGljayh0aGlzLmVkaXRvciwgZXZlbnQpO1xuICAgICAgICB0aGlzLnRoZU9uRE9NRXZlbnQuZW1pdCh7XG4gICAgICAgICAgICBuYXRpdmVFdmVudDogZXZlbnRcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIG9uU2xhUGFzdGUgPSAoZXZlbnQ6IENsaXBib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMudGhlT25ET01FdmVudC5lbWl0KHtcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLmdldFRleHRBbmRKU09OKGV2ZW50LmNsaXBib2FyZERhdGEpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmF0aXZlRXZlbnQ6IGV2ZW50XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBvblNsYUJlZm9yZUlucHV0ID0gKFxuICAgICAgICBldmVudDogRXZlbnQgJiB7XG4gICAgICAgICAgICBpbnB1dFR5cGU6IHN0cmluZztcbiAgICAgICAgICAgIGRhdGE6IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgICBkYXRhVHJhbnNmZXI6IERhdGFUcmFuc2ZlciB8IG51bGw7XG4gICAgICAgIH1cbiAgICApID0+IHtcbiAgICAgICAgbGV0IGRhdGEgPSB7XG4gICAgICAgICAgICBpbnB1dFR5cGU6IGV2ZW50LmlucHV0VHlwZSxcbiAgICAgICAgICAgIHRleHQ6IChldmVudC5kYXRhIHx8IGV2ZW50LmRhdGFUcmFuc2ZlcikgYXMgc3RyaW5nXG4gICAgICAgIH07XG4gICAgICAgIGlmIChldmVudC5pbnB1dFR5cGUgPT09ICdpbnNlcnRGcm9tUGFzdGUnKSB7XG4gICAgICAgICAgICBkYXRhID0ge1xuICAgICAgICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5nZXRUZXh0QW5kSlNPTigoZXZlbnQuZGF0YSB8fCBldmVudC5kYXRhVHJhbnNmZXIpIGFzIERhdGFUcmFuc2ZlcilcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50aGVPbkRPTUV2ZW50LmVtaXQoe1xuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIG5hdGl2ZUV2ZW50OiBldmVudFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgb25TbGFCbHVyID0gKGV2ZW50OiBGb2N1c0V2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMudGhlT25ET01FdmVudC5lbWl0KHtcbiAgICAgICAgICAgIG5hdGl2ZUV2ZW50OiBldmVudFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgb25TbGFGb2N1cyA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy50aGVPbkRPTUV2ZW50LmVtaXQoe1xuICAgICAgICAgICAgbmF0aXZlRXZlbnQ6IGV2ZW50XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBvblNsYUN1dCA9IChldmVudDogQ2xpcGJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy50aGVPbkRPTUV2ZW50LmVtaXQoe1xuICAgICAgICAgICAgbmF0aXZlRXZlbnQ6IGV2ZW50XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBvblNsYUNvcHkgPSAoZXZlbnQ6IENsaXBib2FyZEV2ZW50KSA9PiB7fTtcblxuICAgIG9uU2xhQ29tcG9zaXRpb25TdGFydCA9IChldmVudDogQ29tcG9zaXRpb25FdmVudCkgPT4ge307XG5cbiAgICBvblNsYUNvbXBvc2l0aW9uRW5kID0gKGV2ZW50OiBDb21wb3NpdGlvbkV2ZW50KSA9PiB7fTtcblxuICAgIG9uU2xhRHJhZ1N0YXJ0ID0gKGV2ZW50OiBEcmFnRXZlbnQpID0+IHt9O1xuXG4gICAgb25TbGFEcmFnT3ZlciA9IChldmVudDogRHJhZ0V2ZW50KSA9PiB7fTtcblxuICAgIG9uRHJvcCA9IChldmVudDogRHJhZ0V2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMudGhlT25ET01FdmVudC5lbWl0KHtcbiAgICAgICAgICAgIG5hdGl2ZUV2ZW50OiBldmVudFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgZ2V0VGV4dEFuZEpTT04oZGF0YTogRGF0YVRyYW5zZmVyKSB7XG4gICAgICAgIGNvbnN0IGZyYWdtZW50ID0gZGF0YS5nZXREYXRhKGBhcHBsaWNhdGlvbi8ke0NMSVBCT0FSRF9GT1JNQVRfS0VZfWApO1xuICAgICAgICBsZXQganNvbiA9IFtdO1xuICAgICAgICBpZiAoZnJhZ21lbnQpIHtcbiAgICAgICAgICAgIGpzb24gPSBKU09OLnBhcnNlKGRlY29kZVVSSUNvbXBvbmVudCh3aW5kb3cuYXRvYihmcmFnbWVudCkpKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0ZXh0ID0gZGF0YS5nZXREYXRhKCd0ZXh0L3BsYWluJyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBqc29uLFxuICAgICAgICAgICAgdGV4dFxuICAgICAgICB9O1xuICAgIH1cbn1cbiIsIjx0aGUtdG9vbGJhclxuICAgICpuZ0lmPVwiIXRoZU9wdGlvbnM/LnJlYWRvbmx5ICYmICF0aGVHbG9iYWxUb29sYmFyXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICd0aGUtdG9vbGJhci1kaXNhYmxlZCc6IHRoZU9wdGlvbnM/LmRpc2FibGVkXG4gICAgfVwiXG4gICAgI2dsb2JhbFRvb2xiYXJcbiAgICBbZWRpdG9yXT1cImVkaXRvclwiXG4gICAgW3Rvb2xiYXJJdGVtc109XCJ0b29sYmFyRW50aXR5Lmdsb2JhbFwiXG4gICAgW2NvbnRhaW5lckNsYXNzXT1cImdsb2JhbFRvb2xiYXJDbGFzc1wiXG4gICAgW2FsaWduXT1cInRoZU9wdGlvbnM/LnRvb2xiYXI/LmFsaWduXCJcbj48L3RoZS10b29sYmFyPlxuXG48ZGl2XG4gICAgI3RoZUVkaXRhYmxlQ29udGFpbmVyXG4gICAgY2xhc3M9XCJ0aGUtZWRpdGFibGUtY29udGFpbmVyXCJcbiAgICB0aHlJbWFnZUdyb3VwXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAndGhlLWVkaXRvci1kaXNhYmxlZCc6IHRoZU9wdGlvbnM/LmRpc2FibGVkLFxuICAgICAgICAnbWF4LWhlaWdodCc6IG1heEhlaWdodFxuICAgIH1cIlxuICAgIFtuZ1N0eWxlXT1cInsgJ21heC1oZWlnaHQnOiBtYXhIZWlnaHQgfVwiXG4+XG4gICAgPHNsYXRlLWVkaXRhYmxlXG4gICAgICAgIGNsYXNzPVwidGhlLWVkaXRvci10eXBvXCJcbiAgICAgICAgW2VkaXRvcl09XCJlZGl0b3JcIlxuICAgICAgICBbbmdNb2RlbF09XCJlZGl0b3JWYWx1ZVwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICBbZGVjb3JhdGVdPVwiZGVjb3JhdGVcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwidGhlT3B0aW9ucz8ucGxhY2Vob2xkZXJcIlxuICAgICAgICBbcGxhY2Vob2xkZXJEZWNvcmF0ZV09XCJ0aGVPcHRpb25zPy5wbGFjZWhvbGRlckRlY29yYXRlID8gdGhlT3B0aW9ucz8ucGxhY2Vob2xkZXJEZWNvcmF0ZSA6IG51bGxcIlxuICAgICAgICBbcmVuZGVyRWxlbWVudF09XCJyZW5kZXJFbGVtZW50XCJcbiAgICAgICAgW3JlbmRlclRleHRdPVwicmVuZGVyVGV4dFwiXG4gICAgICAgIFtyZW5kZXJMZWFmXT1cInJlbmRlckxlYWZcIlxuICAgICAgICBbcmVhZG9ubHldPVwidGhlT3B0aW9ucz8ucmVhZG9ubHkgfHwgdGhlT3B0aW9ucz8uZGlzYWJsZWRcIlxuICAgICAgICBba2V5ZG93bl09XCJvbktleURvd25cIlxuICAgICAgICBbY2xpY2tdPVwib25DbGlja1wiXG4gICAgICAgIFtwYXN0ZV09XCJvblNsYVBhc3RlXCJcbiAgICAgICAgW2JlZm9yZUlucHV0XT1cIm9uU2xhQmVmb3JlSW5wdXRcIlxuICAgICAgICBbYmx1cl09XCJvblNsYUJsdXJcIlxuICAgICAgICBbZm9jdXNdPVwib25TbGFGb2N1c1wiXG4gICAgICAgIFtjb3B5XT1cIm9uU2xhQ29weVwiXG4gICAgICAgIFtjdXRdPVwib25TbGFDdXRcIlxuICAgICAgICBbaXNTdHJpY3REZWNvcmF0ZV09XCJmYWxzZVwiXG4gICAgICAgIFtjb21wb3NpdGlvblN0YXJ0XT1cIm9uU2xhQ29tcG9zaXRpb25TdGFydFwiXG4gICAgICAgIFtjb21wb3NpdGlvbkVuZF09XCJvblNsYUNvbXBvc2l0aW9uRW5kXCJcbiAgICAgICAgW2RyYWdTdGFydF09XCJvblNsYURyYWdTdGFydFwiXG4gICAgICAgIFtkcmFnT3Zlcl09XCJvblNsYURyYWdPdmVyXCJcbiAgICAgICAgW2Ryb3BdPVwib25Ecm9wXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJtb3VzZWRvd24oJGV2ZW50KVwiXG4gICAgPjwvc2xhdGUtZWRpdGFibGU+XG4gICAgPHRoZS1pbmxpbmUtdG9vbGJhclxuICAgICAgICAqbmdJZj1cIiF0aGVPcHRpb25zPy5yZWFkb25seSAmJiB0aGVPcHRpb25zPy5pbmxpbmVUb29sYmFyVmlzaWJsZVwiXG4gICAgICAgIFtlZGl0b3JdPVwiZWRpdG9yXCJcbiAgICAgICAgW3Rvb2xiYXJJdGVtc109XCJ0b29sYmFyRW50aXR5LmlubGluZVwiXG4gICAgPjwvdGhlLWlubGluZS10b29sYmFyPlxuICAgIDxkaXYgKm5nSWY9XCIhdGhlT3B0aW9ucz8ucmVhZG9ubHlcIiB0aGVRdWlja0luc2VydCBbZWRpdG9yXT1cImVkaXRvclwiIFtpc1Zpc2libGVdPVwidmlzaWJsZVF1aWNrSW5zZXJ0UGx1c1wiPjwvZGl2PlxuICAgIDx0aGUtdGVtcGxhdGUgI3RlbXBsYXRlSW5zdGFuY2U+PC90aGUtdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
449
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL3NyYy9lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vcGFja2FnZXMvc3JjL2VkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsU0FBUyxFQUNULEtBQUssRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixNQUFNLEVBQ04sWUFBWSxFQUlaLHVCQUF1QixFQUUxQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFvQixNQUFNLHdCQUF3QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxNQUFNLEVBQVEsVUFBVSxFQUFFLFlBQVksRUFBdUIsS0FBSyxFQUFFLElBQUksRUFBYSxNQUFNLE9BQU8sQ0FBQztBQUM1RyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQWMsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBMkMsV0FBVyxFQUFpQixVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0csT0FBTyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSx3QkFBd0IsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUdwSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUscUJBQXFCLEVB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SztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUksU0FBUztzQkFBbEIsTUFBTTtnQkFFRyxhQUFhO3NCQUF0QixNQUFNO2dCQUVHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFFRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBR1AsZ0JBQWdCO3NCQURmLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUkvQyxvQkFBb0I7c0JBRG5CLFNBQVM7dUJBQUMsc0JBQXNCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBSXJFLHFCQUFxQjtzQkFEcEIsU0FBUzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBPbkluaXQsXG4gICAgT25EZXN0cm95LFxuICAgIENvbXBvbmVudCxcbiAgICBJbnB1dCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIGZvcndhcmRSZWYsXG4gICAgT3V0cHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBPbkNoYW5nZXMsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBOZ1pvbmUsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENka1Njcm9sbGFibGUsIFNjcm9sbERpc3BhdGNoZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7IG1peGluVW5zdWJzY3JpYmUsIE1peGluQmFzZSB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyBpc0tleUhvdGtleSB9IGZyb20gJ2lzLWhvdGtleSc7XG5pbXBvcnQgeyBFZGl0b3IsIFRleHQsIFRyYW5zZm9ybXMsIGNyZWF0ZUVkaXRvciwgRWxlbWVudCwgRGVzY2VuZGFudCwgUmFuZ2UsIFBhdGgsIE5vZGVFbnRyeSB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IHdpdGhIaXN0b3J5IH0gZnJvbSAnc2xhdGUtaGlzdG9yeSc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yLCBTbGF0ZUVycm9yLCB3aXRoQW5ndWxhciB9IGZyb20gJ3NsYXRlLWFuZ3VsYXInO1xuaW1wb3J0IHsgVGhlT3B0aW9ucywgRG9tRXZlbnREYXRhSW5mbywgVGhlRWRpdG9yLCBUaGVEYXRhTW9kZSwgVG9vbGJhckVudGl0eSwgUGx1Z2luS2V5cyB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBNYXJrVHlwZXMsIENMSVBCT0FSRF9GT1JNQVRfS0VZLCBERUZBVUxUX1NDUk9MTF9DT05UQUlORVIsIGluaXRpYWxpemVEZWZhdWx0TWVudUljb25zIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgVGhlVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGVtcGxhdGUvdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IFRoZVRvb2xiYXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdG9vbGJhci90b29sYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaGVUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGhlQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2NvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBUaGVDb2xvclNlbGVjdFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2NvbG9yLXNlbGVjdC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gICAgYXV0b0ZvY3VzLFxuICAgIGF1dG9TY3JvbGxWaWV3SGFuZGxlLFxuICAgIGRhdGFEZXNlcmlhbGl6ZSxcbiAgICBkYXRhU2VyaWFsaXppbmcsXG4gICAgaWRDcmVhdG9yLFxuICAgIHNldEVkaXRvclVVSUQsXG4gICAgY29lcmNlUGl4ZWxzRnJvbUNzc1ZhbHVlLFxuICAgIFRIRV9FRElUT1JfUFJFVklPVVNfU0VMRUNUSU9OXG59IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgZGVib3VuY2UgfSBmcm9tICcuL3V0aWxzL2xvZGFzaCc7XG5pbXBvcnQgeyB3aXRoVGhlaWEsIGNyZWF0ZVRvb2xiYXIsIGdldFBsdWdpbk9wdGlvbnMgfSBmcm9tICcuL2NvcmUnO1xuaW1wb3J0IHsgaW50ZXJuYWxQbHVnaW5zIH0gZnJvbSAnLi9wbHVnaW5zJztcbmltcG9ydCB7IHNob3J0Y3V0cyB9IGZyb20gJy4vc2hvcnRjdXRzJztcbmltcG9ydCAqIGFzIFRoZVRyYW5zZm9ybXMgZnJvbSAnLi90cmFuc2Zvcm1zJztcbmltcG9ydCAqIGFzIFRoZVF1ZXJpZXMgZnJvbSAnLi9xdWVyaWVzJztcbmltcG9ydCB7IFRoZVBsdWdpbiB9IGZyb20gJy4vaW50ZXJmYWNlcy9wbHVnaW5zL3BsdWdpbnMnO1xuaW1wb3J0IHsgUXVpY2tJbnNlcnRQbHVnaW5PcHRpb25zIH0gZnJvbSAnLi9wbHVnaW5zL3F1aWNrLWluc2VydC9xdWljay1pbnNlcnQucGx1Z2luJztcbmltcG9ydCB7IFRoeUljb25SZWdpc3RyeSB9IGZyb20gJ25neC10ZXRoeXMvaWNvbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGhlLWVkaXRvciwgdGhlRWRpdG9yJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2VkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIFRoZUNvbnRleHRTZXJ2aWNlLFxuICAgICAgICBUaGVDb2xvclNlbGVjdFNlcnZpY2UsXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGhlRWRpdG9yQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICd0aGUtZWRpdG9yJyxcbiAgICAgICAgJ1tjbGFzcy50aGUtZWRpdG9yLXJlYWRvbmx5XSc6ICd0aGVPcHRpb25zPy5yZWFkb25seSdcbiAgICB9LFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFRoZUVkaXRvckNvbXBvbmVudCBleHRlbmRzIG1peGluVW5zdWJzY3JpYmUoTWl4aW5CYXNlKSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIHZpc2libGVRdWlja0luc2VydFBsdXMgPSB0cnVlO1xuXG4gICAgQElucHV0KCkgdGhlT3B0aW9uczogVGhlT3B0aW9ucztcblxuICAgIEBJbnB1dCgpIHRoZVBsdWdpbnM6IFRoZVBsdWdpbltdID0gW107XG5cbiAgICBASW5wdXQoKSB0aGVHbG9iYWxUb29sYmFyPzogVGhlVG9vbGJhckNvbXBvbmVudDtcblxuICAgIEBJbnB1dCgpIHRoZURlY29yYXRlOiAoZWRpdG9yOiBUaGVFZGl0b3IsIG5vZGVFbnRyeTogTm9kZUVudHJ5KSA9PiBSYW5nZVtdO1xuXG4gICAgQElucHV0KCkgdGhlT25FcnJvcj86IChlcnJvcjogU2xhdGVFcnJvcikgPT4gdm9pZDtcblxuICAgIEBPdXRwdXQoKSB0aGVPblNhdmU6IEV2ZW50RW1pdHRlcjxEZXNjZW5kYW50W10+ID0gbmV3IEV2ZW50RW1pdHRlcjxEZXNjZW5kYW50W10+KCk7XG5cbiAgICBAT3V0cHV0KCkgdGhlT25ET01FdmVudDogRXZlbnRFbWl0dGVyPHsgbmF0aXZlRXZlbnQ6IEV2ZW50OyBkYXRhPzogRG9tRXZlbnREYXRhSW5mbyB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSB0aGVFZGl0b3JDcmVhdGVkOiBFdmVudEVtaXR0ZXI8RWRpdG9yPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSB0aGVVcGxvYWRpbmdTdGF0dXM6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTsgLy8gdHJ1ZSDkuIrkvKDnu5PmnZ8gZmFsc2Ug5LiK5Lyg5LitXG5cbiAgICBAVmlld0NoaWxkKCd0ZW1wbGF0ZUluc3RhbmNlJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICB0ZW1wbGF0ZUluc3RhbmNlOiBUaGVUZW1wbGF0ZUNvbXBvbmVudDtcblxuICAgIEBWaWV3Q2hpbGQoJ3RoZUVkaXRhYmxlQ29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICB0aGVFZGl0YWJsZUNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICBAVmlld0NoaWxkKCdnbG9iYWxUb29sYmFyJylcbiAgICBnbG9iYWxUb29sYmFySW5zdGFuY2U6IFRoZVRvb2xiYXJDb21wb25lbnQ7XG5cbiAgICBjZGtTY3JvbGxhYmxlOiBDZGtTY3JvbGxhYmxlO1xuXG4gICAgdG9vbGJhckVudGl0eTogVG9vbGJhckVudGl0eTtcblxuICAgIGVkaXRvcjogVGhlRWRpdG9yO1xuXG4gICAgZWRpdG9yVmFsdWU6IERlc2NlbmRhbnRbXTtcblxuICAgIGdsb2JhbFRvb2xiYXJDbGFzczogc3RyaW5nW107XG5cbiAgICBkZWNvcmF0ZTogKG5vZGVFbnRyeTogTm9kZUVudHJ5KSA9PiBSYW5nZVtdO1xuXG4gICAgZ2V0IHRoZUdsb2JhbFRvb2xiYXJJbnN0YW5jZSgpOiBUaGVUb29sYmFyQ29tcG9uZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGhlR2xvYmFsVG9vbGJhciA/IHRoaXMudGhlR2xvYmFsVG9vbGJhciA6IHRoaXMuZ2xvYmFsVG9vbGJhckluc3RhbmNlO1xuICAgIH1cblxuICAgIGdldCBtYXhIZWlnaHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRoZU9wdGlvbnM/Lm1heEhlaWdodCA/IGAke3RoaXMudGhlT3B0aW9ucz8ubWF4SGVpZ2h0fXB4YCA6IG51bGw7XG4gICAgfVxuXG4gICAgYXV0b1Njcm9sbFZpZXcgPSBkZWJvdW5jZShmdW5jdGlvbiAoZWRpdG9yOiBFZGl0b3IsIHNjcm9sbENvbnRhaW5lcjogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBhdXRvU2Nyb2xsVmlld0hhbmRsZShlZGl0b3IsIHNjcm9sbENvbnRhaW5lcik7XG4gICAgfSwgODApO1xuXG4gICAgZWxlbWVudFRvSHRtbDogV2Vha01hcDxFbGVtZW50LCBzdHJpbmc+ID0gbmV3IFdlYWtNYXAoKTtcblxuICAgIHByaXZhdGUgb25DaGFuZ2VDYWxsYmFjazogKF86IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgcHJpdmF0ZSBvblRvdWNoZWRDYWxsYmFjazogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgdGhlQ29udGV4dFNlcnZpY2U6IFRoZUNvbnRleHRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBzY3JvbGxEaXNwYXRjaGVyOiBTY3JvbGxEaXNwYXRjaGVyLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgaWNvblJlZ2lzdHJ5OiBUaHlJY29uUmVnaXN0cnlcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplKCk7XG4gICAgICAgIHRoaXMuaW5pdENka1Njcm9sbCgpO1xuICAgICAgICBpbml0aWFsaXplRGVmYXVsdE1lbnVJY29ucyh0aGlzLmljb25SZWdpc3RyeSk7XG4gICAgICAgIHRoaXMudGhlQ29udGV4dFNlcnZpY2UudXBsb2FkaW5nU3RhdHVzJC5zdWJzY3JpYmUoaXNVcGxvYWRpbmcgPT4ge1xuICAgICAgICAgICAgaWYgKGlzVXBsb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50aGVVcGxvYWRpbmdTdGF0dXMuZW1pdCh0cnVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudGhlQ29udGV4dFNlcnZpY2UudXBsb2FkaW5nRmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGhlVXBsb2FkaW5nU3RhdHVzLmVtaXQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMub25FcnJvckhhbmRsZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSBjaGFuZ2VzLnRoZU9wdGlvbnM7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZU9wdGlvbnMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmN1cnJlbnRWYWx1ZT8ucmVhZG9ubHkgIT09IG9wdGlvbnMucHJldmlvdXNWYWx1ZT8ucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwbHlBdXRvRm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlc1sndGhlRGVjb3JhdGUnXSkge1xuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZURlY29yYXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZWRpdG9yPy5zZWxlY3Rpb24gJiYgKG9wdGlvbnM/LmN1cnJlbnRWYWx1ZT8ucmVhZG9ubHkgfHwgb3B0aW9ucz8uY3VycmVudFZhbHVlPy5kaXNhYmxlZCkpIHtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuZGVzZWxlY3QodGhpcy5lZGl0b3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgICAgIFRIRV9FRElUT1JfUFJFVklPVVNfU0VMRUNUSU9OLmRlbGV0ZSh0aGlzLmVkaXRvcik7XG4gICAgICAgIGlmICh0aGlzLmNka1Njcm9sbGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuY2RrU2Nyb2xsYWJsZS5uZ09uRGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZSgpIHtcbiAgICAgICAgY29uc3QgZGVmYXVsdFBsdWdpbnMgPSBpbnRlcm5hbFBsdWdpbnMoKTtcbiAgICAgICAgY29uc3QgcGx1Z2lucyA9IFsuLi5kZWZhdWx0UGx1Z2lucywgLi4udGhpcy50aGVQbHVnaW5zXTtcbiAgICAgICAgdGhpcy5lZGl0b3IgPSB3aXRoVGhlaWEod2l0aEhpc3Rvcnkod2l0aEFuZ3VsYXIoY3JlYXRlRWRpdG9yKCksIENMSVBCT0FSRF9GT1JNQVRfS0VZKSksIHBsdWdpbnMpO1xuICAgICAgICB0aGlzLmdlbmVyYXRlRGVjb3JhdGUoKTtcbiAgICAgICAgdGhpcy5lZGl0b3IuZGlzYWJsZWQgPSB0aGlzLnRoZU9wdGlvbnM/LmRpc2FibGVkO1xuICAgICAgICB0aGlzLmVkaXRvci5leHRyYUVsZW1lbnRPcHRpb25zID0gdGhpcy50aGVPcHRpb25zPy5leHRyYUVsZW1lbnRPcHRpb25zO1xuICAgICAgICB0aGlzLmVkaXRvci5vcHRpb25zID0gdGhpcy50aGVPcHRpb25zO1xuICAgICAgICBzZXRFZGl0b3JVVUlEKHRoaXMuZWRpdG9yLCBpZENyZWF0b3IoKSk7XG4gICAgICAgIHRoaXMudGhlQ29udGV4dFNlcnZpY2UuaW5pdGlhbGl6ZSh7XG4gICAgICAgICAgICB0aGVPcHRpb25zOiB0aGlzLnRoZU9wdGlvbnMsXG4gICAgICAgICAgICBuYXRpdmVFbGVtZW50OiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIHZpZXdDb250YWluZXJSZWY6IHRoaXMudmlld0NvbnRhaW5lclJlZlxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy50b29sYmFyQ2FsY3VsYXRlKCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgLy8gWW91IG5lZWQgdG8gd2FpdCBmb3IgdGhlIGVkaXRvciByZW5kZXJpbmcgdG8gY29tcGxldGVcbiAgICAgICAgICAgIC8vIGJlZm9yZSB0cmlnZ2VyaW5nIHRoZSBleHRlcm5hbCB0b29sYmFyIGFzc2lnbm1lbnQgZGV0ZWN0aW9uXG4gICAgICAgICAgICB0aGlzLmdsb2JhbFRvb2xiYXJJbml0KCk7XG4gICAgICAgICAgICB0aGlzLnRoZUVkaXRvckNyZWF0ZWQuZW1pdCh0aGlzLmVkaXRvcik7XG4gICAgICAgICAgICB0aGlzLmFwcGx5QXV0b0ZvY3VzKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBxdWlja0luc2VydFBsdWdpbiA9IGdldFBsdWdpbk9wdGlvbnM8UXVpY2tJbnNlcnRQbHVnaW5PcHRpb25zPih0aGlzLmVkaXRvciwgUGx1Z2luS2V5cy5xdWlja0luc2VydCk7XG4gICAgICAgIC8vIHF1aWNrSW5zZXJ0XG4gICAgICAgIGlmIChxdWlja0luc2VydFBsdWdpbi5kaXNhYmxlZCB8fCBxdWlja0luc2VydFBsdWdpbi5kaXNhYmxlZFBsdXMpIHtcbiAgICAgICAgICAgIHRoaXMudmlzaWJsZVF1aWNrSW5zZXJ0UGx1cyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5pdENka1Njcm9sbCgpIHtcbiAgICAgICAgaWYgKHRoaXMubWF4SGVpZ2h0KSB7XG4gICAgICAgICAgICB0aGlzLmNka1Njcm9sbGFibGUgPSBuZXcgQ2RrU2Nyb2xsYWJsZSh0aGlzLnRoZUVkaXRhYmxlQ29udGFpbmVyLCB0aGlzLnNjcm9sbERpc3BhdGNoZXIsIHRoaXMubmdab25lKTtcbiAgICAgICAgICAgIHRoaXMuY2RrU2Nyb2xsYWJsZS5uZ09uSW5pdCgpO1xuICAgICAgICAgICAgdGhpcy50aGVFZGl0YWJsZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnY2RrU2Nyb2xsYWJsZScsICcnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluaXRpYWxpemVPcHRpb25zKCkge1xuICAgICAgICBpZiAoIXRoaXMudGhlT3B0aW9ucykge1xuICAgICAgICAgICAgdGhpcy50aGVPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIHJlYWRvbmx5OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBtb2RlOiBUaGVEYXRhTW9kZS5odG1sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy50aGVPcHRpb25zLm1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMudGhlT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLnRoZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgbW9kZTogVGhlRGF0YU1vZGUuaHRtbFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFwcGx5QXV0b0ZvY3VzKCkge1xuICAgICAgICBpZiAoIXRoaXMudGhlT3B0aW9ucz8uZGlzYWJsZWQgJiYgIXRoaXMudGhlT3B0aW9ucz8ucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIGF1dG9Gb2N1cyh0aGlzLmVkaXRvciwgdGhpcy50aGVPcHRpb25zPy5hdXRvRm9jdXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9vbGJhckNhbGN1bGF0ZSgpIHtcbiAgICAgICAgY29uc3QgeyBnbG9iYWxUb29sYmFyQ2xhc3MsIHRvb2xiYXJFbnRpdHkgfSA9IGNyZWF0ZVRvb2xiYXIodGhpcy5lZGl0b3IsIHRoaXM/LnRoZU9wdGlvbnM/LnRvb2xiYXIpO1xuICAgICAgICB0aGlzLmdsb2JhbFRvb2xiYXJDbGFzcyA9IGdsb2JhbFRvb2xiYXJDbGFzcztcbiAgICAgICAgdGhpcy50b29sYmFyRW50aXR5ID0gdG9vbGJhckVudGl0eTtcbiAgICB9XG5cbiAgICBnbG9iYWxUb29sYmFySW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMudGhlR2xvYmFsVG9vbGJhcikge1xuICAgICAgICAgICAgdGhpcy50aGVHbG9iYWxUb29sYmFySW5zdGFuY2UuZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgICAgICAgICB0aGlzLnRoZUdsb2JhbFRvb2xiYXJJbnN0YW5jZS50b29sYmFySXRlbXMgPSB0aGlzLnRvb2xiYXJFbnRpdHkuZ2xvYmFsO1xuICAgICAgICAgICAgdGhpcy50aGVHbG9iYWxUb29sYmFySW5zdGFuY2UuY29udGFpbmVyQ2xhc3MgPSB0aGlzLmdsb2JhbFRvb2xiYXJDbGFzcztcbiAgICAgICAgICAgIHRoaXMudGhlR2xvYmFsVG9vbGJhckluc3RhbmNlLmFsaWduID0gdGhpcz8udGhlT3B0aW9ucz8udG9vbGJhcj8uYWxpZ247XG4gICAgICAgICAgICB0aGlzLnRoZUdsb2JhbFRvb2xiYXJJbnN0YW5jZS5zZXRUb29sYmFyQ2xhc3MoKTtcbiAgICAgICAgICAgIHRoaXMudGhlR2xvYmFsVG9vbGJhckluc3RhbmNlLnJlbmRlclRvb2xiYXJWaWV3KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcgfCBEZXNjZW5kYW50W10pIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IGRhdGFEZXNlcmlhbGl6ZSh0aGlzLnRoZU9wdGlvbnM/Lm1vZGUsIHZhbHVlKTtcbiAgICAgICAgLy8gZGF0YS1kZXNlcmlhbGl6ZVxuICAgICAgICB0aGlzLmVkaXRvclZhbHVlID0gZGF0YTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XG4gICAgICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWRDYWxsYmFjayA9IGZuO1xuICAgIH1cblxuICAgIHZhbHVlQ2hhbmdlKHZhbHVlOiBEZXNjZW5kYW50W10pIHtcbiAgICAgICAgY29uc3QgaXNFZGl0YWJsZSA9ICF0aGlzLnRoZU9wdGlvbnM/LnJlYWRvbmx5ICYmICF0aGlzLnRoZU9wdGlvbnM/LmRpc2FibGVkO1xuXG4gICAgICAgIHRoaXMudGhlR2xvYmFsVG9vbGJhckluc3RhbmNlPy5zZWxlY3Rpb25DaGFuZ2UodGhpcy5lZGl0b3IpO1xuXG4gICAgICAgIC8vIGF1dG8gc2Nyb2xsIHZpZXdcbiAgICAgICAgY29uc3Qgc2Nyb2xsQ29udGFpbmVyID0gdGhpcy50aGVPcHRpb25zPy5zY3JvbGxDb250YWluZXI7XG4gICAgICAgIGNvbnN0IG1heEhlaWdodCA9IHRoaXMudGhlT3B0aW9ucz8ubWF4SGVpZ2h0O1xuICAgICAgICBpZiAoaXNFZGl0YWJsZSAmJiAoc2Nyb2xsQ29udGFpbmVyIHx8IG1heEhlaWdodCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IG1heEhlaWdodCA/IERFRkFVTFRfU0NST0xMX0NPTlRBSU5FUiA6IHNjcm9sbENvbnRhaW5lcjtcbiAgICAgICAgICAgIHRoaXMuYXV0b1Njcm9sbFZpZXcodGhpcy5lZGl0b3IsIGNvbnRhaW5lcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5lZGl0b3JWYWx1ZSA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVkaXRvclZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgLy8gc2VyaWFsaXppbmdcbiAgICAgICAgbGV0IG5ld1ZhbHVlID0gdGhpcy5zZXJpYWxpemluZ1ZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKG5ld1ZhbHVlKTtcbiAgICB9XG5cbiAgICBzZXJpYWxpemluZ1ZhbHVlKHZhbHVlOiBEZXNjZW5kYW50W10pOiBzdHJpbmcgfCBEZXNjZW5kYW50W10ge1xuICAgICAgICBpZiAodGhpcy50aGVPcHRpb25zPy5tb2RlID09PSBUaGVEYXRhTW9kZS5odG1sKSB7XG4gICAgICAgICAgICBsZXQgaHRtbFZhbHVlID0gJyc7XG4gICAgICAgICAgICB2YWx1ZS5mb3JFYWNoKChlbGVtZW50OiBFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGVsZW1lbnRIdG1sID0gdGhpcy5lbGVtZW50VG9IdG1sLmdldChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudEh0bWwgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBzZXJpYWxpemluZ1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50SHRtbCA9IGRhdGFTZXJpYWxpemluZyh0aGlzLnRoZU9wdGlvbnM/Lm1vZGUsIFtlbGVtZW50XSkgYXMgc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICBodG1sVmFsdWUgKz0gZWxlbWVudEh0bWw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFRvSHRtbC5zZXQoZWxlbWVudCwgZWxlbWVudEh0bWwpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGh0bWxWYWx1ZSArPSBlbGVtZW50SHRtbDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGh0bWxWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgb25FcnJvckhhbmRsZXIoKSB7XG4gICAgICAgIHRoaXMuZWRpdG9yLm9uRXJyb3IgPSAoZXJyb3JEYXRhOiBTbGF0ZUVycm9yKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy50aGVPbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50aGVPbkVycm9yKGVycm9yRGF0YSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVycm9yRGF0YS5uYXRpdmVFcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3JEYXRhLm5hdGl2ZUVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICByZW5kZXJFbGVtZW50ID0gKGVsZW1lbnQ6IEVsZW1lbnQpID0+IHtcbiAgICAgICAgY29uc3QgdGVtcGxhdGUgPSB0aGlzLnRlbXBsYXRlSW5zdGFuY2UucmVuZGVyRWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5lZGl0b3IucmVuZGVyRWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudCA/IGNvbXBvbmVudCA6IHRlbXBsYXRlO1xuICAgIH07XG5cbiAgICByZW5kZXJMZWFmID0gKHRleHQ6IFRleHQpID0+IHtcbiAgICAgICAgY29uc3QgbGVhZiA9IHRoaXMuZWRpdG9yLnJlbmRlckxlYWYodGV4dCk7XG4gICAgICAgIHJldHVybiBsZWFmID8gbGVhZiA6IG51bGw7XG4gICAgfTtcblxuICAgIHJlbmRlclRleHQgPSAodGV4dDogVGV4dCkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBNYXJrVHlwZXMpIHtcbiAgICAgICAgICAgIGlmICh0ZXh0W01hcmtUeXBlc1trZXldXSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBUaGVUZXh0Q29tcG9uZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0ZXh0LnRleHQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgZ2VuZXJhdGVEZWNvcmF0ZSgpIHtcbiAgICAgICAgdGhpcy5kZWNvcmF0ZSA9IChub2RlRW50cnk6IE5vZGVFbnRyeSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGVjb3JhdGlvbnMgPSBbXTtcblxuICAgICAgICAgICAgaWYgKHRoaXMudGhlRGVjb3JhdGUpIHtcbiAgICAgICAgICAgICAgICBkZWNvcmF0aW9ucy5wdXNoKC4uLnRoaXMudGhlRGVjb3JhdGUodGhpcy5lZGl0b3IsIG5vZGVFbnRyeSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZGVjb3JhdGlvbnM7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgb25LZXlEb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIHNob3J0Y3V0cyh0aGlzLmVkaXRvciwgZXZlbnQpO1xuICAgICAgICB0aGlzLnRoZU9uRE9NRXZlbnQuZW1pdCh7XG4gICAgICAgICAgICBuYXRpdmVFdmVudDogZXZlbnQsXG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAga2V5OiBldmVudC5rZXlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChpc0tleUhvdGtleSgnbW9kK3MnLCBldmVudCkpIHtcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50aGVPblNhdmUuZW1pdCh0aGlzLmVkaXRvclZhbHVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNLZXlIb3RrZXkoJ21vZCthJywgZXZlbnQpKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVNlbGVjdEFsbCgpO1xuICAgICAgICB9XG4gICAgICAgIEFuZ3VsYXJFZGl0b3Iub25LZXlkb3duKHRoaXMuZWRpdG9yLCBldmVudCk7XG4gICAgfTtcblxuICAgIG1vdXNlZG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBjb25zdCBlZGl0YWJsZUVsZW1lbnQgPSBBbmd1bGFyRWRpdG9yLnRvRE9NTm9kZSh0aGlzLmVkaXRvciwgdGhpcy5lZGl0b3IpO1xuICAgICAgICBjb25zdCByZWN0RWRpdGFibGUgPSBlZGl0YWJsZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IGFic29sdXRlRWxlbWVudCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoZXZlbnQueCwgZXZlbnQueSk7XG4gICAgICAgIGlmICghZWRpdGFibGVFbGVtZW50LmlzRXF1YWxOb2RlKGFic29sdXRlRWxlbWVudCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrQ2FyZEVsZW1lbnQgPSBhYnNvbHV0ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnNsYXRlLWJsb2NrLWNhcmQnKTtcbiAgICAgICAgICAgIGlmICghYmxvY2tDYXJkRWxlbWVudCkgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCB7IHBhZGRpbmdSaWdodCB9ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWRpdGFibGVFbGVtZW50LCBudWxsKTtcbiAgICAgICAgY29uc3QgcGFkZGluZ1JpZ2h0UGl4ZWxzID0gY29lcmNlUGl4ZWxzRnJvbUNzc1ZhbHVlKHBhZGRpbmdSaWdodCk7XG4gICAgICAgIGNvbnN0IGZha2VSaWdodFggPSByZWN0RWRpdGFibGUucmlnaHQgLSBwYWRkaW5nUmlnaHRQaXhlbHMgLSA1MDtcbiAgICAgICAgbGV0IHJlbGF0aXZlRWxlbWVudCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoZmFrZVJpZ2h0WCwgZXZlbnQueSk7XG4gICAgICAgIGxldCByZWxhdGl2ZUJsb2NrQ2FyZEVsZW1lbnQgPSByZWxhdGl2ZUVsZW1lbnQuY2xvc2VzdCgnLnNsYXRlLWJsb2NrLWNhcmQnKTtcbiAgICAgICAgaWYgKHJlbGF0aXZlQmxvY2tDYXJkRWxlbWVudCkge1xuICAgICAgICAgICAgY29uc3QgY2VudGVyWCA9IHJlY3RFZGl0YWJsZS54ICsgcmVjdEVkaXRhYmxlLndpZHRoIC8gMjtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrQ2FyZEVudHJ5ID0gQW5ndWxhckVkaXRvci50b1NsYXRlQ2FyZEVudHJ5KHRoaXMuZWRpdG9yLCByZWxhdGl2ZUJsb2NrQ2FyZEVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQpO1xuICAgICAgICAgICAgaWYgKGJsb2NrQ2FyZEVudHJ5ICYmIHRoaXMuZWRpdG9yLmlzQmxvY2tDYXJkKGJsb2NrQ2FyZEVudHJ5WzBdKSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgQW5ndWxhckVkaXRvci5tb3ZlQmxvY2tDYXJkKHRoaXMuZWRpdG9yLCBibG9ja0NhcmRFbnRyeVswXSwgeyBkaXJlY3Rpb246IGV2ZW50LnggPCBjZW50ZXJYID8gJ2xlZnQnIDogJ3JpZ2h0JyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZVNlbGVjdEFsbCgpIHtcbiAgICAgICAgbGV0IG5vZGU7XG4gICAgICAgIGlmICghdGhpcy5lZGl0b3Iuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBUaGVUcmFuc2Zvcm1zLnNldEVuZFNlbGVjdGlvbih0aGlzLmVkaXRvcik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgW3N0YXJ0LCBlbmRdID0gUmFuZ2UuZWRnZXModGhpcy5lZGl0b3Iuc2VsZWN0aW9uKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uUmFuZ2UgPSBFZGl0b3IucmFuZ2UodGhpcy5lZGl0b3IsIHN0YXJ0LCBlbmQpO1xuICAgICAgICBjb25zdCBjb250YWluZXJCbG9ja3MgPSBUaGVRdWVyaWVzLmdldENvbnRhaW5lckJsb2Nrcyh0aGlzLmVkaXRvcik7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29udGFpbmVyQmxvY2tzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBbbm9kZV0gPSBUaGVRdWVyaWVzLmdldE5vZGVzQnlUeXBlKHRoaXMuZWRpdG9yLCBjb250YWluZXJCbG9ja3NbaV0pO1xuICAgICAgICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBbLCBwYXRoXSA9IG5vZGU7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNTdGFydFBhcmVudCA9IFBhdGguZXF1YWxzKHBhdGgsIHN0YXJ0LnBhdGguc2xpY2UoMCwgcGF0aC5sZW5ndGgpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0VuZFBhcmVudCA9IFBhdGguZXF1YWxzKHBhdGgsIGVuZC5wYXRoLnNsaWNlKDAsIHBhdGgubGVuZ3RoKSk7XG4gICAgICAgICAgICAgICAgaWYgKGlzU3RhcnRQYXJlbnQgJiYgaXNFbmRQYXJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZVJhbmdlID0gRWRpdG9yLnJhbmdlKHRoaXMuZWRpdG9yLCBwYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFSYW5nZS5lcXVhbHMobm9kZVJhbmdlLCBzZWxlY3Rpb25SYW5nZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2VsZWN0KHRoaXMuZWRpdG9yLCBub2RlUmFuZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbm9kZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghbm9kZSkge1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QodGhpcy5lZGl0b3IsIFtdKTtcbiAgICAgICAgfVxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgb25DbGljayA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBBbmd1bGFyRWRpdG9yLm9uQ2xpY2sodGhpcy5lZGl0b3IsIGV2ZW50KTtcbiAgICAgICAgdGhpcy50aGVPbkRPTUV2ZW50LmVtaXQoe1xuICAgICAgICAgICAgbmF0aXZlRXZlbnQ6IGV2ZW50XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBvblNsYVBhc3RlID0gKGV2ZW50OiBDbGlwYm9hcmRFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLnRoZU9uRE9NRXZlbnQuZW1pdCh7XG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5nZXRUZXh0QW5kSlNPTihldmVudC5jbGlwYm9hcmREYXRhKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5hdGl2ZUV2ZW50OiBldmVudFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgb25TbGFCZWZvcmVJbnB1dCA9IChcbiAgICAgICAgZXZlbnQ6IEV2ZW50ICYge1xuICAgICAgICAgICAgaW5wdXRUeXBlOiBzdHJpbmc7XG4gICAgICAgICAgICBkYXRhOiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgICAgZGF0YVRyYW5zZmVyOiBEYXRhVHJhbnNmZXIgfCBudWxsO1xuICAgICAgICB9XG4gICAgKSA9PiB7XG4gICAgICAgIGxldCBkYXRhID0ge1xuICAgICAgICAgICAgaW5wdXRUeXBlOiBldmVudC5pbnB1dFR5cGUsXG4gICAgICAgICAgICB0ZXh0OiAoZXZlbnQuZGF0YSB8fCBldmVudC5kYXRhVHJhbnNmZXIpIGFzIHN0cmluZ1xuICAgICAgICB9O1xuICAgICAgICBpZiAoZXZlbnQuaW5wdXRUeXBlID09PSAnaW5zZXJ0RnJvbVBhc3RlJykge1xuICAgICAgICAgICAgZGF0YSA9IHtcbiAgICAgICAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMuZ2V0VGV4dEFuZEpTT04oKGV2ZW50LmRhdGEgfHwgZXZlbnQuZGF0YVRyYW5zZmVyKSBhcyBEYXRhVHJhbnNmZXIpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGhlT25ET01FdmVudC5lbWl0KHtcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICBuYXRpdmVFdmVudDogZXZlbnRcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIG9uU2xhQmx1ciA9IChldmVudDogRm9jdXNFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLnRoZU9uRE9NRXZlbnQuZW1pdCh7XG4gICAgICAgICAgICBuYXRpdmVFdmVudDogZXZlbnRcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIG9uU2xhRm9jdXMgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMudGhlT25ET01FdmVudC5lbWl0KHtcbiAgICAgICAgICAgIG5hdGl2ZUV2ZW50OiBldmVudFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgb25TbGFDdXQgPSAoZXZlbnQ6IENsaXBib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMudGhlT25ET01FdmVudC5lbWl0KHtcbiAgICAgICAgICAgIG5hdGl2ZUV2ZW50OiBldmVudFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgb25TbGFDb3B5ID0gKGV2ZW50OiBDbGlwYm9hcmRFdmVudCkgPT4ge307XG5cbiAgICBvblNsYUNvbXBvc2l0aW9uU3RhcnQgPSAoZXZlbnQ6IENvbXBvc2l0aW9uRXZlbnQpID0+IHt9O1xuXG4gICAgb25TbGFDb21wb3NpdGlvbkVuZCA9IChldmVudDogQ29tcG9zaXRpb25FdmVudCkgPT4ge307XG5cbiAgICBvblNsYURyYWdTdGFydCA9IChldmVudDogRHJhZ0V2ZW50KSA9PiB7fTtcblxuICAgIG9uU2xhRHJhZ092ZXIgPSAoZXZlbnQ6IERyYWdFdmVudCkgPT4ge307XG5cbiAgICBvbkRyb3AgPSAoZXZlbnQ6IERyYWdFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLnRoZU9uRE9NRXZlbnQuZW1pdCh7XG4gICAgICAgICAgICBuYXRpdmVFdmVudDogZXZlbnRcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGdldFRleHRBbmRKU09OKGRhdGE6IERhdGFUcmFuc2Zlcikge1xuICAgICAgICBjb25zdCBmcmFnbWVudCA9IGRhdGEuZ2V0RGF0YShgYXBwbGljYXRpb24vJHtDTElQQk9BUkRfRk9STUFUX0tFWX1gKTtcbiAgICAgICAgbGV0IGpzb24gPSBbXTtcbiAgICAgICAgaWYgKGZyYWdtZW50KSB7XG4gICAgICAgICAgICBqc29uID0gSlNPTi5wYXJzZShkZWNvZGVVUklDb21wb25lbnQod2luZG93LmF0b2IoZnJhZ21lbnQpKSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdGV4dCA9IGRhdGEuZ2V0RGF0YSgndGV4dC9wbGFpbicpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAganNvbixcbiAgICAgICAgICAgIHRleHRcbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCI8dGhlLXRvb2xiYXJcbiAgICAqbmdJZj1cIiF0aGVPcHRpb25zPy5yZWFkb25seSAmJiAhdGhlR2xvYmFsVG9vbGJhclwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAndGhlLXRvb2xiYXItZGlzYWJsZWQnOiB0aGVPcHRpb25zPy5kaXNhYmxlZFxuICAgIH1cIlxuICAgICNnbG9iYWxUb29sYmFyXG4gICAgW2VkaXRvcl09XCJlZGl0b3JcIlxuICAgIFt0b29sYmFySXRlbXNdPVwidG9vbGJhckVudGl0eS5nbG9iYWxcIlxuICAgIFtjb250YWluZXJDbGFzc109XCJnbG9iYWxUb29sYmFyQ2xhc3NcIlxuICAgIFthbGlnbl09XCJ0aGVPcHRpb25zPy50b29sYmFyPy5hbGlnblwiXG4+PC90aGUtdG9vbGJhcj5cblxuPGRpdlxuICAgICN0aGVFZGl0YWJsZUNvbnRhaW5lclxuICAgIGNsYXNzPVwidGhlLWVkaXRhYmxlLWNvbnRhaW5lclwiXG4gICAgdGh5SW1hZ2VHcm91cFxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3RoZS1lZGl0b3ItZGlzYWJsZWQnOiB0aGVPcHRpb25zPy5kaXNhYmxlZCxcbiAgICAgICAgJ21heC1oZWlnaHQnOiBtYXhIZWlnaHRcbiAgICB9XCJcbiAgICBbbmdTdHlsZV09XCJ7ICdtYXgtaGVpZ2h0JzogbWF4SGVpZ2h0IH1cIlxuPlxuICAgIDxzbGF0ZS1lZGl0YWJsZVxuICAgICAgICBjbGFzcz1cInRoZS1lZGl0b3ItdHlwb1wiXG4gICAgICAgIFtlZGl0b3JdPVwiZWRpdG9yXCJcbiAgICAgICAgW25nTW9kZWxdPVwiZWRpdG9yVmFsdWVcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgW2RlY29yYXRlXT1cImRlY29yYXRlXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInRoZU9wdGlvbnM/LnBsYWNlaG9sZGVyXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyRGVjb3JhdGVdPVwidGhlT3B0aW9ucz8ucGxhY2Vob2xkZXJEZWNvcmF0ZSA/IHRoZU9wdGlvbnM/LnBsYWNlaG9sZGVyRGVjb3JhdGUgOiBudWxsXCJcbiAgICAgICAgW3JlbmRlckVsZW1lbnRdPVwicmVuZGVyRWxlbWVudFwiXG4gICAgICAgIFtyZW5kZXJUZXh0XT1cInJlbmRlclRleHRcIlxuICAgICAgICBbcmVuZGVyTGVhZl09XCJyZW5kZXJMZWFmXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cInRoZU9wdGlvbnM/LnJlYWRvbmx5IHx8IHRoZU9wdGlvbnM/LmRpc2FibGVkXCJcbiAgICAgICAgW2tleWRvd25dPVwib25LZXlEb3duXCJcbiAgICAgICAgW2NsaWNrXT1cIm9uQ2xpY2tcIlxuICAgICAgICBbcGFzdGVdPVwib25TbGFQYXN0ZVwiXG4gICAgICAgIFtiZWZvcmVJbnB1dF09XCJvblNsYUJlZm9yZUlucHV0XCJcbiAgICAgICAgW2JsdXJdPVwib25TbGFCbHVyXCJcbiAgICAgICAgW2ZvY3VzXT1cIm9uU2xhRm9jdXNcIlxuICAgICAgICBbY29weV09XCJvblNsYUNvcHlcIlxuICAgICAgICBbY3V0XT1cIm9uU2xhQ3V0XCJcbiAgICAgICAgW2lzU3RyaWN0RGVjb3JhdGVdPVwiZmFsc2VcIlxuICAgICAgICBbY29tcG9zaXRpb25TdGFydF09XCJvblNsYUNvbXBvc2l0aW9uU3RhcnRcIlxuICAgICAgICBbY29tcG9zaXRpb25FbmRdPVwib25TbGFDb21wb3NpdGlvbkVuZFwiXG4gICAgICAgIFtkcmFnU3RhcnRdPVwib25TbGFEcmFnU3RhcnRcIlxuICAgICAgICBbZHJhZ092ZXJdPVwib25TbGFEcmFnT3ZlclwiXG4gICAgICAgIFtkcm9wXT1cIm9uRHJvcFwiXG4gICAgICAgIChtb3VzZWRvd24pPVwibW91c2Vkb3duKCRldmVudClcIlxuICAgID48L3NsYXRlLWVkaXRhYmxlPlxuICAgIDx0aGUtaW5saW5lLXRvb2xiYXJcbiAgICAgICAgKm5nSWY9XCIhdGhlT3B0aW9ucz8ucmVhZG9ubHkgJiYgdGhlT3B0aW9ucz8uaW5saW5lVG9vbGJhclZpc2libGVcIlxuICAgICAgICBbZWRpdG9yXT1cImVkaXRvclwiXG4gICAgICAgIFt0b29sYmFySXRlbXNdPVwidG9vbGJhckVudGl0eS5pbmxpbmVcIlxuICAgID48L3RoZS1pbmxpbmUtdG9vbGJhcj5cbiAgICA8ZGl2ICpuZ0lmPVwiIXRoZU9wdGlvbnM/LnJlYWRvbmx5XCIgdGhlUXVpY2tJbnNlcnQgW2VkaXRvcl09XCJlZGl0b3JcIiBbaXNWaXNpYmxlXT1cInZpc2libGVRdWlja0luc2VydFBsdXNcIj48L2Rpdj5cbiAgICA8dGhlLXRlbXBsYXRlICN0ZW1wbGF0ZUluc3RhbmNlPjwvdGhlLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9pbnRlcmZhY2VzL3BsdWdpbnMvcGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWRpdG9yLCBFbGVtZW50IH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgQ3VzdG9tRWxlbWVudEtpbmRzIH0gZnJvbSAnLi4vLi4vY3VzdG9tLXR5cGVzJztcbmltcG9ydCB7IFRvb2xiYXJJdGVtIH0gZnJvbSAnLi4vdG9vbGJhcic7XG5pbXBvcnQgeyBOZXN0ZWRTdHJ1Y3R1cmVCeUtleSB9IGZyb20gJy4uL3V0aWxpdHknO1xuaW1wb3J0IHsgV2l0aFJlcXVpcmVkIH0gZnJvbSAnLi4vdXRpbGl0eS90eXBlcyc7XG5pbXBvcnQgeyBUaGVQbHVnaW5NZW51SXRlbSB9IGZyb20gJy4vcGx1Z2luLW1lbnUnO1xuaW1wb3J0IHsgTm9JbmZlciB9IGZyb20gJy4vbm8taW5mZXInO1xuaW1wb3J0IHsgUGx1Z2luS2V5LCBUaGVpYVBsdWdpbktleSB9IGZyb20gJy4vcGx1Z2luLWtleSc7XG5pbXBvcnQgeyBXaXRoT3ZlcnJpZGUgfSBmcm9tICcuL3dpdGgtb3ZlcnJpZGUnO1xuXG5leHBvcnQgdHlwZSBUaGVQbHVnaW5CYXNlT3B0aW9uID0ge1xuICAgIGFsbG93UGFyZW50VHlwZXM/OiAoQ3VzdG9tRWxlbWVudEtpbmRzIHwgc3RyaW5nKVtdO1xuICAgIGRpc2FibGVkT3BlcmF0ZVR5cGVzPzogQ3VzdG9tRWxlbWVudEtpbmRzW107XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuOyAvLyDmj5Lku7bmmK/lkKblj6/nlKhcbiAgICAvLyDlkI7mnJ/mj5Lku7bnmoTlt6XlhbfmoI/mlK/mjIHlpJbpg6joh6rlrprkuYnml7blj6/ku6XliKDpmaRcbiAgICBzaG93RnVsbHNjcmVlbj86IGJvb2xlYW47XG4gICAgc2V0RnVsbHNjcmVlbj86IChlZGl0b3I6IEVkaXRvciwgZXZlbnQ6IE1vdXNlRXZlbnQsIGVsZW1lbnQ6IEVsZW1lbnQpID0+IHZvaWQ7XG59O1xuXG5leHBvcnQgdHlwZSBUaGVQbHVnaW5PcHRpb248UD4gPSBOb0luZmVyPHtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG59PiAmXG4gICAgUCAmXG4gICAgVGhlUGx1Z2luQmFzZU9wdGlvbjtcblxuZXhwb3J0IHR5cGUgVGhlUGx1Z2luPFQgPSB7fSwgUCA9IHt9PiA9IFJlcXVpcmVkPFRoZWlhUGx1Z2luS2V5PiAmIHtcbiAgICAvKipcbiAgICAgKiDlt6XlhbfmoI/phY3nva5cbiAgICAgKi9cbiAgICB0b29sYmFySXRlbXM/OiBUb29sYmFySXRlbVtdO1xuXG4gICAgLyoqXG4gICAgICog5o+S5Lu25o+S5YWl6I+c5Y2V6YWN572uXG4gICAgICovXG4gICAgbWVudUl0ZW1zPzogVGhlUGx1Z2luTWVudUl0ZW1bXTtcblxuICAgIC8qKlxuICAgICAqIOaPkuS7tuS9v+eUqOeahOaJqeWxleWxnuaAp1xuICAgICAqL1xuICAgIG9wdGlvbnM/OiBUaGVQbHVnaW5PcHRpb248UD47XG5cbiAgICAvKipcbiAgICAgKiDmj5Lku7bltYzlpZfnu5PmnoRcbiAgICAgKi9cbiAgICBuZXN0ZWRTdHJ1Y3R1cmVCeUtleT86IE5lc3RlZFN0cnVjdHVyZUJ5S2V5O1xuXG4gICAgLyoqXG4gICAgICog55So5LqO6YCa6L+HIGtleSDmt7Hluqbopobnm5bmj5Lku7ZcbiAgICAgKi9cbiAgICBvdmVycmlkZUJ5S2V5PzogUmVjb3JkPFBsdWdpbktleSwgUGFydGlhbDxUaGVQbHVnaW48VD4+PjtcblxuICAgIC8qKlxuICAgICAqIEVkaXRvciBtZXRob2Qgb3ZlcnJpZGVycy5cbiAgICAgKi9cbiAgICB3aXRoT3ZlcnJpZGVzPzogV2l0aE92ZXJyaWRlPFQsIFA+O1xuXG4gICAgLyoqXG4gICAgICog6YCS5b2S5o+S5Lu25pSv5oyB5YWB6K645Zyo5Y2V5Liq5o+S5Lu25Lit5YyF5ZCr5aSa5Liq5o+S5Lu244CCXG4gICAgICog5pyA57uI5bCG5omA5pyJ5o+S5Lu25omB5bmz5YyW5Yiw57yW6L6R5Zmo5Lit44CCXG4gICAgICovXG4gICAgcGx1Z2lucz86IFRoZVBsdWdpbjxUPltdO1xufTtcblxuZXhwb3J0IHR5cGUgV2l0aFRoZVBsdWdpbjxUID0ge30sIFAgPSB7fT4gPSBXaXRoUmVxdWlyZWQ8VGhlUGx1Z2luPFQsIFA+LCAnb3B0aW9ucyc+O1xuXG5leHBvcnQgaW50ZXJmYWNlIE9wdGlvbkl0ZW0ge1xuICAgIGtleT86IHN0cmluZztcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9pbnRlcmZhY2VzL3BsdWdpbnMvcGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWRpdG9yLCBFbGVtZW50IH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgQ3VzdG9tRWxlbWVudEtpbmRzIH0gZnJvbSAnLi4vLi4vY3VzdG9tLXR5cGVzJztcbmltcG9ydCB7IFRvb2xiYXJJdGVtIH0gZnJvbSAnLi4vdG9vbGJhcic7XG5pbXBvcnQgeyBOZXN0ZWRTdHJ1Y3R1cmVCeUtleSB9IGZyb20gJy4uL3V0aWxpdHknO1xuaW1wb3J0IHsgV2l0aFJlcXVpcmVkIH0gZnJvbSAnLi4vdXRpbGl0eS90eXBlcyc7XG5pbXBvcnQgeyBUaGVQbHVnaW5NZW51SXRlbSB9IGZyb20gJy4vcGx1Z2luLW1lbnUnO1xuaW1wb3J0IHsgTm9JbmZlciB9IGZyb20gJy4vbm8taW5mZXInO1xuaW1wb3J0IHsgUGx1Z2luS2V5LCBUaGVpYVBsdWdpbktleSB9IGZyb20gJy4vcGx1Z2luLWtleSc7XG5pbXBvcnQgeyBXaXRoT3ZlcnJpZGUgfSBmcm9tICcuL3dpdGgtb3ZlcnJpZGUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgdHlwZSBUaGVQbHVnaW5CYXNlT3B0aW9uID0ge1xuICAgIGFsbG93UGFyZW50VHlwZXM/OiAoQ3VzdG9tRWxlbWVudEtpbmRzIHwgc3RyaW5nKVtdO1xuICAgIGRpc2FibGVkT3BlcmF0ZVR5cGVzPzogQ3VzdG9tRWxlbWVudEtpbmRzW107XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuOyAvLyDmj5Lku7bmmK/lkKblj6/nlKhcbiAgICAvLyDlkI7mnJ/mj5Lku7bnmoTlt6XlhbfmoI/mlK/mjIHlpJbpg6joh6rlrprkuYnml7blj6/ku6XliKDpmaRcbiAgICBzaG93RnVsbHNjcmVlbj86IGJvb2xlYW47XG4gICAgc2V0RnVsbHNjcmVlbj86IChlZGl0b3I6IEVkaXRvciwgZXZlbnQ6IE1vdXNlRXZlbnQsIGVsZW1lbnQ6IEVsZW1lbnQpID0+IHZvaWQ7XG4gICAgZnVsbHNjcmVlbkFjdGlvbj86IChlZGl0b3I6IEVkaXRvcikgPT4gT2JzZXJ2YWJsZTxib29sZWFuPjtcbn07XG5cbmV4cG9ydCB0eXBlIFRoZVBsdWdpbk9wdGlvbjxQPiA9IE5vSW5mZXI8e1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbn0+ICZcbiAgICBQICZcbiAgICBUaGVQbHVnaW5CYXNlT3B0aW9uO1xuXG5leHBvcnQgdHlwZSBUaGVQbHVnaW48VCA9IHt9LCBQID0ge30+ID0gUmVxdWlyZWQ8VGhlaWFQbHVnaW5LZXk+ICYge1xuICAgIC8qKlxuICAgICAqIOW3peWFt+agj+mFjee9rlxuICAgICAqL1xuICAgIHRvb2xiYXJJdGVtcz86IFRvb2xiYXJJdGVtW107XG5cbiAgICAvKipcbiAgICAgKiDmj5Lku7bmj5LlhaXoj5zljZXphY3nva5cbiAgICAgKi9cbiAgICBtZW51SXRlbXM/OiBUaGVQbHVnaW5NZW51SXRlbVtdO1xuXG4gICAgLyoqXG4gICAgICog5o+S5Lu25L2/55So55qE5omp5bGV5bGe5oCnXG4gICAgICovXG4gICAgb3B0aW9ucz86IFRoZVBsdWdpbk9wdGlvbjxQPjtcblxuICAgIC8qKlxuICAgICAqIOaPkuS7tuW1jOWll+e7k+aehFxuICAgICAqL1xuICAgIG5lc3RlZFN0cnVjdHVyZUJ5S2V5PzogTmVzdGVkU3RydWN0dXJlQnlLZXk7XG5cbiAgICAvKipcbiAgICAgKiDnlKjkuo7pgJrov4cga2V5IOa3seW6puimhuebluaPkuS7tlxuICAgICAqL1xuICAgIG92ZXJyaWRlQnlLZXk/OiBSZWNvcmQ8UGx1Z2luS2V5LCBQYXJ0aWFsPFRoZVBsdWdpbjxUPj4+O1xuXG4gICAgLyoqXG4gICAgICogRWRpdG9yIG1ldGhvZCBvdmVycmlkZXJzLlxuICAgICAqL1xuICAgIHdpdGhPdmVycmlkZXM/OiBXaXRoT3ZlcnJpZGU8VCwgUD47XG5cbiAgICAvKipcbiAgICAgKiDpgJLlvZLmj5Lku7bmlK/mjIHlhYHorrjlnKjljZXkuKrmj5Lku7bkuK3ljIXlkKvlpJrkuKrmj5Lku7bjgIJcbiAgICAgKiDmnIDnu4jlsIbmiYDmnInmj5Lku7bmiYHlubPljJbliLDnvJbovpHlmajkuK3jgIJcbiAgICAgKi9cbiAgICBwbHVnaW5zPzogVGhlUGx1Z2luPFQ+W107XG59O1xuXG5leHBvcnQgdHlwZSBXaXRoVGhlUGx1Z2luPFQgPSB7fSwgUCA9IHt9PiA9IFdpdGhSZXF1aXJlZDxUaGVQbHVnaW48VCwgUD4sICdvcHRpb25zJz47XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9uSXRlbSB7XG4gICAga2V5Pzogc3RyaW5nO1xufVxuIl19