ngx-scandoc 1.3.0 → 1.3.1

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.
@@ -87,6 +87,15 @@ export class ScanComponent extends BaseComponent {
87
87
  load: 0,
88
88
  };
89
89
  this.scanProvider = this.injector.get(ScanProvider);
90
+ if (!this.scanProvider.config.development) {
91
+ // console = {
92
+ // log: (...args: any) => {},
93
+ // time: (...args: any) => {},
94
+ // timeEnd: (...args: any) => {},
95
+ // warn: (...args: any) => {},
96
+ // error: (...args: any) => {},
97
+ // };
98
+ }
90
99
  }
91
100
  get class() {
92
101
  return this.isMobile;
@@ -144,12 +153,14 @@ export class ScanComponent extends BaseComponent {
144
153
  }
145
154
  this.cd.detectChanges();
146
155
  if (this.scannedImages.length > 4 && !this.validation) {
147
- this.scannedImages.forEach((img) => {
148
- const consoleBackground = "font-size:100px;background-image: url('" +
149
- img.imageResized +
150
- "');background-size: contain; background-repeat: no-repeat;";
151
- console.log('%c ', consoleBackground);
152
- });
156
+ if (this.scanProvider.config.development) {
157
+ this.scannedImages.forEach((img) => {
158
+ const consoleBackground = "font-size:100px;background-image: url('" +
159
+ img.imageResized +
160
+ "');background-size: contain; background-repeat: no-repeat;";
161
+ console.log('%c ', consoleBackground);
162
+ });
163
+ }
153
164
  // this.frontImage = webcamImage.imageResized;
154
165
  console.timeEnd('scan');
155
166
  console.time('scan');
@@ -702,4 +713,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
702
713
  type: HostListener,
703
714
  args: ['window:resize', ['$event']]
704
715
  }] } });
705
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvY29yZS9jb21wb25lbnRzL3NjYW4vc2Nhbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvY29yZS9jb21wb25lbnRzL3NjYW4vc2Nhbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixNQUFNLEVBQ04sWUFBWSxFQUlaLHVCQUF1QixFQUN2QixLQUFLLEVBSUwsV0FBVyxHQUdaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQWdELE1BQU0sTUFBTSxDQUFDO0FBRzdFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQXlCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQU1oRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQTBCbEQsTUFBTSxPQUFPLGFBQ1gsU0FBUSxhQUFhO0lBZ0dyQixZQUNTLEVBQXFCLEVBQ3BCLElBQVksRUFDYixjQUF3QyxFQUN2QyxRQUFrQixFQUNsQixjQUE4QixFQUM5QixRQUFrQixFQUVsQixTQUEyQixFQUUzQixRQUFxQixFQUNyQixJQUFzQixFQUV0QixJQUFrQixDQUFDLDhCQUE4Qjs7UUFFekQsS0FBSyxFQUFFLENBQUM7UUFkRCxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNwQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ2IsbUJBQWMsR0FBZCxjQUFjLENBQTBCO1FBQ3ZDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFFbEIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFFM0IsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUNyQixTQUFJLEdBQUosSUFBSSxDQUFrQjtRQUV0QixTQUFJLEdBQUosSUFBSSxDQUFjO1FBMUc1QixrQkFBYSxHQUFRO1lBQ25CO2dCQUNFLEtBQUssRUFBRSwwQ0FBMEM7Z0JBQ2pELFdBQVcsRUFBRSxxREFBcUQ7Z0JBQ2xFLElBQUksRUFBRSxPQUFPO2FBQ2Q7WUFDRDtnQkFDRSxLQUFLLEVBQUUseUNBQXlDO2dCQUNoRCxXQUFXLEVBQUUsb0RBQW9EO2dCQUNqRSxRQUFRLEVBQUUsSUFBSTtnQkFDZCxJQUFJLEVBQUUsTUFBTTthQUNiO1NBQ0YsQ0FBQztRQUNPLFNBQUksR0FBRyxTQUFTLENBQUM7UUFFaEIsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFJdkMsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzVCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLGNBQVMsR0FBVyxDQUFDLENBQUM7UUFFdEIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFFdkIsMEJBQTBCO1FBQzFCLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUs3QixZQUFPLEdBQVEsSUFBSSxDQUFDO1FBR3BCLGNBQVMsR0FBRyxNQUFNLENBQUM7UUFDbkIsZ0JBQVcsR0FBUSx1QkFBdUIsQ0FBQztRQUUzQywwQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFDOUIsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUNkLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRXBCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFFaEIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFLckIsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzdCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLFlBQU8sR0FBb0I7WUFDekIsd0JBQXdCLEVBQUUsSUFBSTtZQUM5QixPQUFPLEVBQUUsSUFBSTtZQUNiLFFBQVEsRUFBRSxJQUFJO1lBQ2QsY0FBYyxFQUFFLElBQUk7U0FDckIsQ0FBQztRQUVGLGNBQVMsR0FBUSxFQUFFLENBQUM7UUFFcEIsV0FBTSxHQUFRLElBQUksQ0FBQztRQUduQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGtCQUFhLEdBQVUsRUFBRSxDQUFDO1FBQzFCLGNBQVMsR0FBUSxDQUFDLENBQUM7UUFDWixZQUFPLEdBQW9CLElBQUksT0FBTyxFQUFVLENBQUM7UUFDeEQsK0ZBQStGO1FBQ3hGLGVBQVUsR0FBOEIsSUFBSSxPQUFPLEVBRXZELENBQUM7UUFDSixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixTQUFJLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekIsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmLGFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUM3QyxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQzVCLHdCQUFtQixHQUFlO1lBQ2hDLElBQUksRUFBRSxDQUFDO1lBQ1AsSUFBSSxFQUFFLENBQUM7U0FDUixDQUFDO1FBK0JBLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQTlCRCxJQUFpQyxLQUFLO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBR0QsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBdUJPLFlBQVk7UUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRztZQUNiLE9BQU8sRUFBRSxJQUFJO1lBQ2IsUUFBUSxFQUFFLElBQUk7WUFDZCxjQUFjLEVBQUUsSUFBSTtZQUNwQix3QkFBd0IsRUFBRSxJQUFJO1NBQy9CLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixvQkFBb0I7UUFDcEIsbUJBQW1CO1FBRW5CLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1FBRWxDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQzNDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFO2dCQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7YUFDeEM7WUFDRCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzFCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTSxXQUFXLENBQUMsV0FBd0I7UUFDekMsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLENBQUMsRUFBRTtZQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUM3QjtRQUNELHVEQUF1RDtRQUN2RCxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUMvQixNQUFNLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRWxDLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksR0FBRyxDQUFDLEVBQUU7Z0JBQ3JDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUM7Z0JBQzFDLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7Z0JBQ3pCLGdDQUFnQztnQkFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7YUFDdkI7WUFFRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztZQUVyQyxJQUFJLFdBQVcsQ0FBQyxTQUFTLEVBQUU7Z0JBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNyQyxJQUFJLENBQUMseUJBQXlCLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQ3ZEO1lBRUQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN4QixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ3JELElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQ2pDLE1BQU0saUJBQWlCLEdBQ3JCLHlDQUF5Qzt3QkFDekMsR0FBRyxDQUFDLFlBQVk7d0JBQ2hCLDREQUE0RCxDQUFDO29CQUMvRCxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO2dCQUMzQyxDQUFDLENBQUMsQ0FBQztnQkFDSCxnREFBZ0Q7Z0JBRWhELE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3JCLGNBQWM7Z0JBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDcEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDNUMsa0JBQWtCO2dCQUNsQixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztnQkFDeEIsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDcEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7Z0JBRXZCLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2FBQzNDO2lCQUFNO2dCQUNMLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtvQkFDcEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2lCQUNiO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxlQUFlLENBQ3JCLFdBQWdCLEVBQ2hCLE1BQVcsRUFDWCxPQUEyQixPQUFPO1FBRWxDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUN4RSxJQUFJLENBQUMsV0FBVyxHQUFHLGdCQUFnQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDcEQscUNBQXFDO1lBQ3JDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMvQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDO1lBRWpELDRDQUE0QztZQUM1QywyQ0FBMkM7WUFDM0MsSUFBSTtZQUVKLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7Z0JBQ3RCLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUV6QyxrREFBa0Q7Z0JBQ2xELElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBRXhCLElBQUksS0FBSyxHQUFHLGFBQWEsQ0FBQztnQkFDMUIsSUFBSSxJQUFJLElBQUksUUFBUSxFQUFFO29CQUNwQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUM3RCxLQUFLLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQztpQkFDckI7Z0JBRUQsSUFBSSxRQUFRLEtBQUssTUFBTSxFQUFFO29CQUN2Qiw0QkFBNEI7b0JBQzVCLElBQUksSUFBSSxLQUFLLE9BQU8sRUFBRTt3QkFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO3FCQUNyQzt5QkFBTTt3QkFDTCxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7cUJBQ3JDO29CQUVELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUU7d0JBQzlELE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7d0JBQ3ZCLElBQUksSUFBSSxJQUFJLFFBQVEsRUFBRTs0QkFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQzt5QkFDMUM7d0JBQ0QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO3FCQUN4Qjt5QkFBTTt3QkFDTCxNQUFNLEdBQUcsR0FBRyxJQUFJLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDckMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7d0JBRTNCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO3dCQUV6QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO3dCQUUzQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTs0QkFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7NEJBQ3ZCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7eUJBQ3pCO3dCQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsbUJBQW1CLENBQUM7cUJBQ3hDO2lCQUNGO3FCQUFNO29CQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztvQkFDcEMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDdkIsSUFBSSxJQUFJLElBQUksUUFBUSxFQUFFO3dCQUNwQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO3FCQUMxQztvQkFDRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7aUJBQ3hCO2dCQUVELElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO2dCQUV4QiwrQ0FBK0M7Z0JBRS9DLHlCQUF5QjthQUMxQjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztnQkFDeEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ2I7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFFeEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVNLGVBQWUsQ0FBQyxLQUFzQjtRQUMzQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNwRCxDQUFDO0lBRU8sVUFBVSxDQUFDLE9BQTJCLE9BQU87UUFDbkQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTVDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVPLHFCQUFxQixDQUFDLElBQVM7UUFDckMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLDhDQUE4QztRQUM5QyxnREFBZ0Q7UUFDaEQsSUFBSTtRQUNKLHVEQUF1RDtRQUV2RCxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuRSxDQUFDO0lBQ08seUJBQXlCLENBQy9CLEdBQVEsRUFDUixPQUEyQixPQUFPO1FBRWxDLGlDQUFpQztRQUNqQyxJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUM7UUFDL0QsTUFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUVsRCxJQUNFLElBQUksR0FBRyxlQUFlO1lBQ3RCLENBQUMsSUFBSSxDQUFDLHFCQUFxQjtRQUUzQixJQUFJO1FBQ0osc0NBQXNDO1VBQ3RDO1lBQ0EsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztZQUNsQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFFL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO2dCQUNqQixrQ0FBa0M7Z0JBQ2xDLDhDQUE4QztnQkFDOUMsMkNBQTJDO2dCQUMzQyxNQUFNO2dCQUNOLHVCQUF1QjtnQkFDdkIsbUNBQW1DO2dCQUNuQyxNQUFNO2dCQUNOLEtBQUs7Z0JBRUwsb0RBQW9EO2dCQUNwRCwyQkFBMkI7Z0JBQzNCLE1BQU07Z0JBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7b0JBQ3hCLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFO3dCQUMzQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztxQkFDMUI7eUJBQU07d0JBQ0wsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7NEJBQ2hCLElBQUksRUFBRSxZQUFZOzRCQUNsQixJQUFJLEVBQUUsRUFBRTt5QkFDVCxDQUFDLENBQUM7cUJBQ0o7b0JBQ0QsMEJBQTBCO2lCQUMzQjtnQkFFRCxzQ0FBc0M7Z0JBQ3RDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUU1QiwyQkFBMkI7Z0JBQzNCLHlEQUF5RDtnQkFDekQsd0JBQXdCO2dCQUN4QixnQkFBZ0I7Z0JBQ2hCLDZCQUE2QjtnQkFDN0IsTUFBTTtnQkFDTixpQ0FBaUM7Z0JBQ2pDLHdDQUF3QztnQkFDeEMsTUFBTTtZQUNSLENBQUMsQ0FBQyxDQUFDO1lBQ0gscUNBQXFDO1lBQ3JDLHNEQUFzRDtZQUV0RCx3QkFBd0I7WUFDeEIsa0RBQWtEO1lBQ2xELHNDQUFzQztZQUN0QyxnQ0FBZ0M7WUFDaEMsc0NBQXNDO1lBQ3RDLDBCQUEwQjtZQUMxQixpQkFBaUI7WUFDakIsNkNBQTZDO1lBQzdDLFNBQVM7WUFDVCxrQkFBa0I7WUFDbEIsaUNBQWlDO1lBQ2pDLFNBQVM7WUFDVCxPQUFPO1lBQ1AsaUJBQWlCO1NBQ2xCO0lBQ0gsQ0FBQztJQUNELGVBQWU7UUFDYix1QkFBdUI7UUFFdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFeEIsc0RBQXNEO1FBRXRELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ25FLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1lBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzFELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVoQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7WUFDaEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7WUFDekUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO1FBRUgsK0RBQStEO1FBQy9ELDRCQUE0QjtRQUM1QixpQkFBaUI7UUFDakIsa0NBQWtDO1FBQ2xDLHFDQUFxQztRQUNyQyxRQUFRO1FBRVIsMENBQTBDO1FBQzFDLGtDQUFrQztRQUNsQyw2Q0FBNkM7UUFFN0MsbURBQW1EO1FBQ25ELHVEQUF1RDtRQUN2RCxzQ0FBc0M7UUFDdEMsMkNBQTJDO1FBQzNDLG1DQUFtQztRQUNuQyxZQUFZO1FBRVosZ0RBQWdEO1FBRWhELGdEQUFnRDtRQUNoRCxpRUFBaUU7UUFDakUsVUFBVTtRQUVWLG9DQUFvQztRQUNwQyxpRUFBaUU7UUFDakUseUJBQXlCO1FBQ3pCLGlEQUFpRDtRQUNqRCw4Q0FBOEM7UUFDOUMsdURBQXVEO1FBQ3ZELDZCQUE2QjtRQUM3QixtQ0FBbUM7UUFDbkMsK0JBQStCO1FBRS9CLHlFQUF5RTtRQUN6RSxrQ0FBa0M7UUFFbEMsa0VBQWtFO1FBRWxFLDBDQUEwQztRQUMxQyxVQUFVO1FBQ1YsaUNBQWlDO1FBQ2pDLFVBQVU7UUFDVixNQUFNO1FBQ04sS0FBSztJQUNQLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxNQUFXO1FBQzNCLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDO1FBRWpDLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEQsY0FBYyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDN0IsY0FBYyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDL0IsTUFBTSxHQUFHLEdBQVEsY0FBYyxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRTdELElBQUksR0FBRyxFQUFFO1lBQ1AsR0FBRyxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztZQUNsQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDcEMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDaEQsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFFBQVE7UUFDTixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFTO1FBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUV6QixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztRQUNqQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdkMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsY0FBYyxDQUFDLElBQVM7UUFDdEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVPLFlBQVksQ0FBQyxHQUFRO1FBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFdEIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwRTtRQUNELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBQ0QsZUFBZTtRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNqQixJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7WUFDaEQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2QsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsMENBQTBDO1FBQzFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDeEIsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4QixNQUFNLE9BQU8sR0FBUTtZQUNuQix3QkFBd0IsRUFBRSxJQUFJO1lBQzlCLFVBQVUsRUFBRTtnQkFDVixjQUFjLEVBQUUsUUFBUTtnQkFDeEIsaUJBQWlCLEVBQUUsS0FBSztnQkFDeEIsYUFBYSxFQUFFLFFBQVE7Z0JBQ3ZCLGdCQUFnQixFQUFFLEtBQUs7Z0JBQ3ZCLFVBQVUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztnQkFDaEMsU0FBUyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO2FBQ3JFO1lBQ0QsUUFBUSxFQUFFO2dCQUNSLGNBQWMsRUFBRSxJQUFJO2dCQUNwQix5QkFBeUIsRUFBRSxJQUFJO2dCQUMvQiwwQkFBMEIsRUFBRSxJQUFJO2dCQUNoQyxrQkFBa0IsRUFBRSxJQUFJO2dCQUN4QixjQUFjLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjO2FBQ2pEO1lBQ0QscURBQXFEO1NBQ3RELENBQUM7UUFDRixJQUFJLENBQUMsVUFBVSxHQUFHLHlCQUF5QixHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO1FBQzVFLElBQUksQ0FBQyxTQUFTLEdBQUcseUJBQXlCLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUM7UUFDMUUsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFO1lBQ2hDLE9BQU8sQ0FBQyxRQUFRLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztTQUN6QztRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBRTNELE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FDVCxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQ3ZDLFVBQVUsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFO1lBQ3BCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtnQkFDdEIscUNBQXFDO2dCQUNyQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBRTVELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUNoQztZQUVELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtnQkFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO2dCQUNwQixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzFCLENBQUMsQ0FBQyxDQUFDO1lBQ0gseUJBQXlCO1lBQ3pCLE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQ0gsQ0FDRixDQUFDLFNBQVMsQ0FDVCxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQ1osb0JBQW9CO1lBQ3BCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDMUIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMxQixPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RCLDBCQUEwQjtZQUMxQixPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3pELE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDckIsa0JBQWtCO1lBQ2xCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7WUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFFckIsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLE1BQU0sRUFBRTtnQkFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7Z0JBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDO2dCQUN4QixxQkFBcUI7Z0JBRXJCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO2dCQUNwQixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN4QixPQUFPO2FBQ1I7WUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssTUFBTSxFQUFFO2dCQUM1QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztnQkFDbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7Z0JBQ3hCLHFCQUFxQjtnQkFFckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3hCLE9BQU87YUFDUjtZQUNELElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLE1BQU0sRUFBRTtnQkFDbkUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBRWxELHlCQUF5QjtnQkFFekIsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDM0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3JELE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQzlCLG1DQUFtQztnQkFDbkMsMkJBQTJCO2dCQUUzQixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO2dCQUUzQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFO29CQUM3QixLQUFLLENBQUMsT0FBTzt3QkFDWCx5QkFBeUIsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQztpQkFDekQ7Z0JBRUQsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRTtvQkFDN0IsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7b0JBQ3JDLEtBQUssQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQVUsRUFBRSxDQUFTLEVBQUUsRUFBRTt3QkFDckQsT0FBTyxFQUFFLElBQUksRUFBRSx5QkFBeUIsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDNUQsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7Z0JBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7Z0JBQ25CLG9DQUFvQztnQkFFcEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7b0JBQ2hCLElBQUksRUFBRSxZQUFZO29CQUNsQixLQUFLO29CQUNMLE9BQU87aUJBQ1IsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtvQkFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7b0JBQ25CLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ25CLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBRXhCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztvQkFDdEQsMkJBQTJCO29CQUMzQixPQUFPO29CQUNQLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3hCLENBQUMsQ0FBQyxDQUFDO2FBQ0o7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDckIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO29CQUN0QixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ2xDO2dCQUNELHFCQUFxQjtnQkFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO29CQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztvQkFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzFCLENBQUMsQ0FBQyxDQUFDO2dCQUNILHFDQUFxQztnQkFFckMsZ0JBQWdCO2FBQ2pCO1lBRUQsMkJBQTJCO1lBQzNCLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0IsQ0FBQyxFQUNELENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDTixtQkFBbUI7WUFDbkIscUJBQXFCO1lBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7WUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDdkIsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUU7Z0JBQzFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1osSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU0sTUFBTTtRQUNYLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7WUFDcEMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUU1QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFaEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsR0FBRztRQUNELGdCQUFnQjtRQUVoQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFO1lBQ3BDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNyRSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLE9BQU8sRUFBRTtnQkFDeEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUM7YUFDNUM7WUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pFLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzNCO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDaEIsSUFBSSxFQUFFLGVBQWU7WUFDckIsSUFBSSxFQUFFO2dCQUNKLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2FBQ3BCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELE1BQU07UUFDSixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQztRQUNuQyxJQUFJLENBQUMsT0FBTzthQUNULFVBQVUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDO2FBQ3RCLFdBQVcsRUFBRTthQUNiLFNBQVMsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQ3ZCLElBQUksSUFBSSxFQUFFO2dCQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2xCLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsRUFBRTtvQkFDeEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7aUJBQzNCO2dCQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO29CQUNwQixJQUFJLEVBQUUsUUFBUTtvQkFDZCxJQUFJLEVBQUUsSUFBSSxDQUFDLGNBQWM7aUJBQzFCLENBQUMsQ0FBQztnQkFDSCw0Q0FBNEM7Z0JBQzVDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDekI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxTQUFTLENBQUMsRUFBTztRQUNmLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFjO1FBQ3ZCLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQzVELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1lBQzNCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2QsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQ1I7SUFDSCxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQVk7UUFDcEIsSUFBSSxHQUFHLEVBQUU7WUFDUCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDbkI7YUFBTTtZQUNMLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUNoQztRQUNELElBQUksSUFBSSxDQUFDLHdCQUF3QixFQUFFO1lBQ2pDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUM3QztRQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFeEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7OzBHQWp5QlUsYUFBYTs4RkFBYixhQUFhLDRSQzNEMUIseTlNQTJOQTsyRkRoS2EsYUFBYTtrQkFOekIsU0FBUzsrQkFDRSxVQUFVLG1CQUdILHVCQUF1QixDQUFDLE1BQU07a1dBbUJ0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNJLE9BQU87c0JBQWhCLE1BQU07Z0JBMkRFLFVBQVU7c0JBQWxCLEtBQUs7Z0JBTTJCLEtBQUs7c0JBQXJDLFdBQVc7dUJBQUMsY0FBYztnQkFLM0IsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgVmlld0NoaWxkLFxuICBFdmVudEVtaXR0ZXIsXG4gIE91dHB1dCxcbiAgSG9zdExpc3RlbmVyLFxuICBFbGVtZW50UmVmLFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE5nWm9uZSxcbiAgSW5qZWN0b3IsXG4gIEhvc3RCaW5kaW5nLFxuICBWaWV3UmVmLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiwgZm9ya0pvaW4sIGZyb20sIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XG5cbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgc3dpdGNoTWFwLCBtYXAsIGRlbGF5LCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBTY2FuUHJvdmlkZXIgfSBmcm9tICcuLi8uLi8uLi9wcm92aWRlcnMvc2Nhbi5wcm92aWRlcic7XG5pbXBvcnQgeyBXZWJjYW1JbWFnZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvY29tcG9uZW50cy93ZWJjYW0vZG9tYWluL3dlYmNhbS1pbWFnZSc7XG5pbXBvcnQgeyBXZWJjYW1Jbml0RXJyb3IgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2NvbXBvbmVudHMvd2ViY2FtL2RvbWFpbi93ZWJjYW0taW5pdC1lcnJvcic7XG5pbXBvcnQgeyBBdXRoUHJvdmlkZXIgfSBmcm9tICcuLi8uLi8uLi9wcm92aWRlcnMvYXV0aC5wcm92aWRlcic7XG5pbXBvcnQgeyBOZ3hTY2FuZG9jQ2FtZXJhUHJvdmlkZXIgfSBmcm9tICcuLi8uLi8uLi9wcm92aWRlcnMvY2FtZXJhLnByb3ZpZGVyJztcbmltcG9ydCB7IExheW91dFByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vLi4vcHJvdmlkZXJzL2xheW91dC5wcm92aWRlcic7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIElXaW5kb3cgZXh0ZW5kcyBXaW5kb3cge1xuICBUZXh0RGV0ZWN0b3I6IGFueTtcbn1cblxuaW50ZXJmYWNlIFRyb3VibGVzaG9vdGluZyB7XG4gIFJlcXVlc3Q6IGFueTtcbiAgUmVzcG9uc2U6IGFueTtcbiAgRXhwZWN0ZWRPdXRwdXQ6IGFueTtcbiAgQWNjZXB0VGVybXNBbmRDb25kaXRpb25zOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgVGltZXN0YW1wcyB7XG4gIHRpbWU6IG51bWJlcjtcbiAgbG9hZDogbnVtYmVyO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtc2NhbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zY2FuLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2Nhbi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NhbkNvbXBvbmVudFxuICBleHRlbmRzIEJhc2VDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcbntcbiAgc2NhbkJsYXN0RGF0YTogYW55ID0gW1xuICAgIHtcbiAgICAgIHRpdGxlOiAncG1zLmRpYWxvZ3MuY29tcG9uZW50cy5zY2FuUHJvZmlsZS5mcm9udCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ3Btcy5kaWFsb2dzLmNvbXBvbmVudHMuc2NhblByb2ZpbGUuZnJvbnREZXNjcmlwdGlvbicsXG4gICAgICBzaWRlOiAnRlJPTlQnLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdwbXMuZGlhbG9ncy5jb21wb25lbnRzLnNjYW5Qcm9maWxlLmJhY2snLFxuICAgICAgZGVzY3JpcHRpb246ICdwbXMuZGlhbG9ncy5jb21wb25lbnRzLnNjYW5Qcm9maWxlLmJhY2tEZXNjcmlwdGlvbicsXG4gICAgICBkaXNhYmxlZDogdHJ1ZSxcbiAgICAgIHNpZGU6ICdCQUNLJyxcbiAgICB9LFxuICBdO1xuICBASW5wdXQoKSB0eXBlID0gJ2Rlc2t0b3AnO1xuICBASW5wdXQoKSBkaWFsb2dzOiBhbnk7XG4gIEBPdXRwdXQoKSBhY3Rpb25zID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHB1YmxpYyBkZXZpY2VJZD86IHN0cmluZztcblxuICBzY2FuUmVzdWx0cyA9IG5ldyBTdWJqZWN0KCk7XG4gIHNjYW5TZWNvbmRTaWRlID0gZmFsc2U7XG4gIHN0YXJ0VGltZTogbnVtYmVyID0gMDtcblxuICBzY2FuSW5Qcm9ncmVzcyA9IGZhbHNlO1xuXG4gIC8vIHdlYmNhbSBzbmFwc2hvdCB0cmlnZ2VyXG4gIGRvY3VtZW50VHlwZVNlbGVjdGVkID0gZmFsc2U7XG4gIGltYWdlSGFuZGxlclN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcbiAgc2VsZWN0ZWRTaWRlOiBhbnk7XG4gIGltYWdlczogYW55O1xuICBzY2FuVGltZW91dDogYW55O1xuICBwcmV2aWV3OiBhbnkgPSBudWxsO1xuICBzY2FuVHlwZTogYW55O1xuXG4gIGVycm9yQ29kZSA9ICcxMDAwJztcbiAgZGlzcGxheUluZm86IGFueSA9ICdzY2FuZG9jLmluZm8ucG9zaXRpb24nO1xuXG4gIHZlcmlmaWNhdGlvbkVycm9yU2VudCA9IGZhbHNlO1xuICBlcnJvciA9IGZhbHNlO1xuICBjYW1lcmFSZWFkeSA9IGZhbHNlO1xuICByZXN1bHQ6IGFueTtcbiAgc2NhbmluZyA9IGZhbHNlO1xuXG4gIHByb21wdE1hbnVhbCA9IGZhbHNlO1xuXG4gIGZyb250SW1hZ2U6IGFueTtcbiAgYmFja0ltYWdlOiBhbnk7XG5cbiAgaW1hZ2VIYW5kbGVyID0gbmV3IFN1YmplY3QoKTtcbiAgbWFudWFsRGF0YVNldCA9IGZhbHNlO1xuICBsb2dEYXRhOiBUcm91Ymxlc2hvb3RpbmcgPSB7XG4gICAgQWNjZXB0VGVybXNBbmRDb25kaXRpb25zOiB0cnVlLFxuICAgIFJlcXVlc3Q6IG51bGwsXG4gICAgUmVzcG9uc2U6IG51bGwsXG4gICAgRXhwZWN0ZWRPdXRwdXQ6IG51bGwsXG4gIH07XG5cbiAgc2NhbkRhdGFzOiBhbnkgPSBbXTtcbiAgc2NhblNpZGU6IGFueTtcbiAgaWRTY2FuOiBhbnkgPSBudWxsO1xuICB3ZWJjYW1JbWFnZT86IFdlYmNhbUltYWdlO1xuICBtb2RlbDogYW55O1xuICB2YWxpZGF0aW9uID0gZmFsc2U7XG4gIHNjYW5uZWRJbWFnZXM6IGFueVtdID0gW107XG4gIHNjYW5EZWxheTogYW55ID0gMDtcbiAgcHVibGljIHRyaWdnZXI6IFN1YmplY3Q8bnVtYmVyPiA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcbiAgLy8gc3dpdGNoIHRvIG5leHQgLyBwcmV2aW91cyAvIHNwZWNpZmljIHdlYmNhbTsgdHJ1ZS9mYWxzZTogZm9yd2FyZC9iYWNrd2FyZHMsIHN0cmluZzogZGV2aWNlSWRcbiAgcHVibGljIG5leHRXZWJjYW06IFN1YmplY3Q8Ym9vbGVhbiB8IHN0cmluZz4gPSBuZXcgU3ViamVjdDxcbiAgICBib29sZWFuIHwgc3RyaW5nXG4gID4oKTtcbiAgaW1hZ2VWZXJpZmllZCA9IGZhbHNlO1xuICBmb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gIG1hbnVhbCA9IGZhbHNlO1xuICBpc01vYmlsZSA9IHRoaXMucGxhdGZvcm0uSU9TIHx8IHRoaXMucGxhdGZvcm0uQU5EUk9JRDtcbiAgQElucHV0KCkgc2hvd0RpYWxvZyA9IGZhbHNlO1xuICBzY2FuSW1hZ2VUaW1lc3RhbXBzOiBUaW1lc3RhbXBzID0ge1xuICAgIHRpbWU6IDAsXG4gICAgbG9hZDogMCxcbiAgfTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1vYmlsZScpIGdldCBjbGFzcygpIHtcbiAgICByZXR1cm4gdGhpcy5pc01vYmlsZTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxuICBvblJlc2l6ZSgpIHtcbiAgICBpZiAodGhpcy5yZXN1bHQpIHtcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIHNjYW5Qcm92aWRlciE6IFNjYW5Qcm92aWRlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgem9uZTogTmdab25lLFxuICAgIHB1YmxpYyBjYW1lcmFQcm92aWRlcjogTmd4U2NhbmRvY0NhbWVyYVByb3ZpZGVyLFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgbGF5b3V0UHJvdmlkZXI6IExheW91dFByb3ZpZGVyLFxuICAgIHByaXZhdGUgcGxhdGZvcm06IFBsYXRmb3JtLFxuXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG5cbiAgICBwcml2YXRlIHNuYWNrQmFyOiBNYXRTbmFja0JhcixcbiAgICBwcml2YXRlIHZpZXc6IFZpZXdDb250YWluZXJSZWYsXG5cbiAgICBwcml2YXRlIGF1dGg6IEF1dGhQcm92aWRlciAvLyBwcml2YXRlIGFwaTogU2VydmVyUHJvdmlkZXJcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnNjYW5Qcm92aWRlciA9IHRoaXMuaW5qZWN0b3IuZ2V0KFNjYW5Qcm92aWRlcik7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0TG9nRGF0YSgpIHtcbiAgICB0aGlzLmxvZ0RhdGEgPSB7XG4gICAgICBSZXF1ZXN0OiBudWxsLFxuICAgICAgUmVzcG9uc2U6IG51bGwsXG4gICAgICBFeHBlY3RlZE91dHB1dDogbnVsbCxcbiAgICAgIEFjY2VwdFRlcm1zQW5kQ29uZGl0aW9uczogdHJ1ZSxcbiAgICB9O1xuICB9XG5cbiAgaW5pdCgpIHtcbiAgICB0aGlzLmF1dGguYWNjZXNUb2tlbi5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnJlc2V0TG9nRGF0YSgpO1xuICAgIC8vIHRoaXMucmVzdWx0PXRydWU7XG4gICAgLy8gdGhpcy5yZXN1bHQgPXt9O1xuXG4gICAgY29uc29sZS5sb2coJ0lOSVQgU0NBTicpO1xuICB9XG5cbiAgY29udGludWUoKSB7XG4gICAgdGhpcy5kb2N1bWVudFR5cGVTZWxlY3RlZCA9IGZhbHNlO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNlbGVjdGVkU2lkZS5pbWFnZSA9IHRoaXMud2ViY2FtSW1hZ2U7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFNpZGUuc2lkZSA9PT0gJ0ZST05UJykge1xuICAgICAgICB0aGlzLnNjYW5CbGFzdERhdGFbMV0uZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0sIDIwMCk7XG4gIH1cblxuICBzY2FuKCkge1xuICAgIHRoaXMudHJpZ2dlci5uZXh0KG5ldyBEYXRlKCkuZ2V0VGltZSgpKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVJbWFnZSh3ZWJjYW1JbWFnZTogV2ViY2FtSW1hZ2UpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGFydFRpbWUgPT09IDApIHtcbiAgICAgIHRoaXMuc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB9XG4gICAgLy8gY29uc29sZS5sb2coJ1tyZWNlaXZlZCB3ZWJjYW0gaW1hZ2VdJywgd2ViY2FtSW1hZ2UpO1xuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBjb25zdCB0aW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG5cbiAgICAgIGlmICh0aGlzLnNjYW5JbWFnZVRpbWVzdGFtcHMubG9hZCA+IDApIHtcbiAgICAgICAgY29uc3QgeyBsb2FkIH0gPSB0aGlzLnNjYW5JbWFnZVRpbWVzdGFtcHM7XG4gICAgICAgIGNvbnN0IGRpZmYgPSB0aW1lIC0gbG9hZDtcbiAgICAgICAgLy8gICBjb25zb2xlLmxvZygndGltZTonLCBkaWZmKTtcbiAgICAgICAgdGhpcy5zY2FuRGVsYXkgPSBkaWZmO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNjYW5JbWFnZVRpbWVzdGFtcHMubG9hZCA9IHRpbWU7XG5cbiAgICAgIGlmICh3ZWJjYW1JbWFnZS5pbWFnZURhdGEpIHtcbiAgICAgICAgdGhpcy5zY2FubmVkSW1hZ2VzLnB1c2god2ViY2FtSW1hZ2UpO1xuICAgICAgICB0aGlzLmhhbmRsZUxvbmdWYWxpZGF0aW9uRXJyb3Iod2ViY2FtSW1hZ2UsICd3b3JrZXInKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICBpZiAodGhpcy5zY2FubmVkSW1hZ2VzLmxlbmd0aCA+IDQgJiYgIXRoaXMudmFsaWRhdGlvbikge1xuICAgICAgICB0aGlzLnNjYW5uZWRJbWFnZXMuZm9yRWFjaCgoaW1nKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29uc29sZUJhY2tncm91bmQgPVxuICAgICAgICAgICAgXCJmb250LXNpemU6MTAwcHg7YmFja2dyb3VuZC1pbWFnZTogdXJsKCdcIiArXG4gICAgICAgICAgICBpbWcuaW1hZ2VSZXNpemVkICtcbiAgICAgICAgICAgIFwiJyk7YmFja2dyb3VuZC1zaXplOiBjb250YWluOyBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1wiO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCclYyAgICAnLCBjb25zb2xlQmFja2dyb3VuZCk7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyAgIHRoaXMuZnJvbnRJbWFnZSA9IHdlYmNhbUltYWdlLmltYWdlUmVzaXplZDtcblxuICAgICAgICBjb25zb2xlLnRpbWVFbmQoJ3NjYW4nKTtcbiAgICAgICAgY29uc29sZS50aW1lKCdzY2FuJyk7XG4gICAgICAgIC8vIGdldCBsYXN0IDEwXG4gICAgICAgIGNvbnNvbGUubG9nKCdDQVBUVVJFRDonLCB0aGlzLnNjYW5uZWRJbWFnZXMubGVuZ3RoKTtcbiAgICAgICAgY29uc3QgaW1hZ2VzID0gdGhpcy5zY2FubmVkSW1hZ2VzLnNsaWNlKC01KTtcbiAgICAgICAgLy8gc2V0IGltYWdlcyB0byAwXG4gICAgICAgIHRoaXMuc2Nhbm5lZEltYWdlcyA9IFtdO1xuICAgICAgICBjb25zdCBpbWFnZXNBcnJheSA9IGltYWdlcy5tYXAoKG0pID0+IG0uaW1hZ2VSZXNpemVkLnNwbGl0KCcsJylbMV0pO1xuICAgICAgICB0aGlzLnZhbGlkYXRpb24gPSB0cnVlO1xuXG4gICAgICAgIHRoaXMuaGFuZGxlQnVyc3REYXRhKGltYWdlc0FycmF5LCBpbWFnZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuY2FtZXJhUmVhZHkpIHtcbiAgICAgICAgICB0aGlzLnNjYW4oKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVCdXJzdERhdGEoXG4gICAgaW1hZ2VzQXJyYXk6IGFueSxcbiAgICBpbWFnZXM6IGFueSxcbiAgICB0eXBlOiAnd29ya2VyJyB8ICdwbGFpbicgPSAncGxhaW4nXG4gICkge1xuICAgIHRoaXMuX19zdWJzKHRoaXMuc2NhblByb3ZpZGVyLmJ1cnN0KGltYWdlc0FycmF5KSkuc3Vic2NyaWJlKChyZXNwOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuZGlzcGxheUluZm8gPSAnc2NhbmRvYy5pbmZvLmMnICsgcmVzcC5JbmZvQ29kZTtcbiAgICAgIC8vIGNvbnNvbGUudGltZUVuZCgndmFsaWRhdGlvblBPU1QnKTtcbiAgICAgIGNvbnNvbGUubG9nKCdBbmFseXNpc1RpbWUnLCByZXNwLkFuYWx5c2lzVGltZSk7XG4gICAgICBjb25zdCB7IERvY1R5cGUsIFNlcmllcywgU2lkZSwgSW5mb0NvZGUgfSA9IHJlc3A7XG5cbiAgICAgIC8vIGlmIChJbmZvQ29kZSA9PT0gJzEwMDYnICYmIHRoaXMuaWRTY2FuKSB7XG4gICAgICAvLyAgIHRoaXMuaGFuZGxlTG9uZ1ZhbGlkYXRpb25FcnJvcihpbWFnZSk7XG4gICAgICAvLyB9XG5cbiAgICAgIGlmIChyZXNwLlZhbGlkYXRlZCkge1xuICAgICAgICB0aGlzLmRpc3BsYXlJbmZvID0gJyc7XG4gICAgICAgIGNvbnNvbGUubG9nKCdbU0NBTk5FRCBJTkRFWF0nLCByZXNwLkluZGV4KTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJbWFnZSA9IGltYWdlc1tyZXNwLkluZGV4XTtcblxuICAgICAgICAvLyB0aGlzLnByZXZpZXcgPSB0aGlzLndlYmNhbUltYWdlLmltYWdlQXNEYXRhVXJsO1xuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICBsZXQgaW1hZ2UgPSBzZWxlY3RlZEltYWdlO1xuICAgICAgICBpZiAodHlwZSA9PSAnd29ya2VyJykge1xuICAgICAgICAgIGNvbnN0IGRhdGFVcmwgPSB0aGlzLmhhbmRsZUJpdG1hcEltYWdlKHNlbGVjdGVkSW1hZ2UuYml0bWFwKTtcbiAgICAgICAgICBpbWFnZSA9IHsgZGF0YVVybCB9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEluZm9Db2RlID09PSAnMTAwNycpIHtcbiAgICAgICAgICAvLyBGb3IgSUQgYXNrIGZvciBvdGhlciBzaWRlXG4gICAgICAgICAgaWYgKFNpZGUgPT09ICdGUk9OVCcpIHtcbiAgICAgICAgICAgIHRoaXMuc2NhbkJsYXN0RGF0YVswXS5pbWFnZSA9IGltYWdlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNjYW5CbGFzdERhdGFbMV0uaW1hZ2UgPSBpbWFnZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodGhpcy5zY2FuQmxhc3REYXRhWzBdLmltYWdlICYmIHRoaXMuc2NhbkJsYXN0RGF0YVsxXS5pbWFnZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdVUExPQUQnKTtcbiAgICAgICAgICAgIGlmICh0eXBlID09ICd3b3JrZXInKSB7XG4gICAgICAgICAgICAgIHRoaXMuaW1hZ2VIYW5kbGVyLm5leHQoeyB0eXBlOiAnc3RvcCcgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNjYW5CbGFzdEZpbmlzaCgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBudW0gPSBTaWRlID09PSAnRlJPTlQnID8gMSA6IDA7XG4gICAgICAgICAgICB0aGlzLnNjYW5TZWNvbmRTaWRlID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5zaW5nbGVTY2FuKHRoaXMuc2NhbkJsYXN0RGF0YVtudW1dKTtcblxuICAgICAgICAgICAgdGhpcy5pZFNjYW4gPSB0aGlzLnNjYW5CbGFzdERhdGFbbnVtXS5zaWRlO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuc2hvd0RpYWxvZykge1xuICAgICAgICAgICAgICB0aGlzLnNob3dEaWFsb2cgPSB0cnVlO1xuICAgICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5SW5mbyA9ICdzY2FuZG9jLmluZm8udHVybic7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2NhbkJsYXN0RGF0YVswXS5pbWFnZSA9IGltYWdlO1xuICAgICAgICAgIGNvbnNvbGUud2FybignVVBMT0FEJyk7XG4gICAgICAgICAgaWYgKHR5cGUgPT0gJ3dvcmtlcicpIHtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VIYW5kbGVyLm5leHQoeyB0eXBlOiAnc3RvcCcgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2NhbkJsYXN0RmluaXNoKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNjYW5uZWRJbWFnZXMgPSBbXTtcblxuICAgICAgICAvLyB0aGlzLnNjYW5CbGFzdERhdGFbMF0uaW1hZ2UgPSBzZWxlY3RlZEltYWdlO1xuXG4gICAgICAgIC8vdGhpcy5zY2FuQmxhc3RGaW5pc2goKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudmFsaWRhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNjYW4oKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNsb3NlRGlhbG9nKCkge1xuICAgIHRoaXMuc2hvd0RpYWxvZyA9IGZhbHNlO1xuICAgIHRoaXMudmFsaWRhdGlvbiA9IGZhbHNlO1xuXG4gICAgdGhpcy5zY2FuKCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlSW5pdEVycm9yKGVycm9yOiBXZWJjYW1Jbml0RXJyb3IpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gIH1cblxuICBnZXQgc2NhbkJsYXN0Q2FuVXBsb2FkKCkge1xuICAgIHJldHVybiB0aGlzLnNjYW5CbGFzdERhdGFbMF0uaW1hZ2UgPyB0cnVlIDogZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIG1hbnVhbE1vZGUodHlwZTogJ3dvcmtlcicgfCAncGxhaW4nID0gJ3BsYWluJykge1xuICAgIHRoaXMubWFudWFsID0gdHJ1ZTtcbiAgICB0aGlzLnByb21wdE1hbnVhbCA9IGZhbHNlO1xuICAgIHRoaXMuc2NhbkluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICB0aGlzLmNhbWVyYVByb3ZpZGVyLiRzaG93U3dpdGNoLm5leHQoZmFsc2UpO1xuXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUV4dHJhY3Rpb25FcnJvcihkYXRhOiBhbnkpIHtcbiAgICB0aGlzLmxvZ0RhdGEuRXhwZWN0ZWRPdXRwdXQgPSB7fTtcbiAgICAvLyBpZiAodGhpcy5sb2dEYXRhLkV4cGVjdGVkT3V0cHV0Py5fYXZhdGFyKSB7XG4gICAgLy8gICBkZWxldGUgdGhpcy5sb2dEYXRhLkV4cGVjdGVkT3V0cHV0Ll9hdmF0YXI7XG4gICAgLy8gfVxuICAgIC8vIHRoaXMuc2NhblByb3ZpZGVyLnNlbmRMb2codGhpcy5sb2dEYXRhKS5zdWJzY3JpYmUoKTtcblxuICAgIGNvbnNvbGUubG9nKCdMT0cgREFUQScsIHRoaXMubG9nRGF0YSk7XG4gICAgdGhpcy5fX3N1YnModGhpcy5zY2FuUHJvdmlkZXIuc2VuZExvZyh0aGlzLmxvZ0RhdGEpKS5zdWJzY3JpYmUoKTtcbiAgfVxuICBwcml2YXRlIGhhbmRsZUxvbmdWYWxpZGF0aW9uRXJyb3IoXG4gICAgaW1nOiBhbnksXG4gICAgdHlwZTogJ3dvcmtlcicgfCAncGxhaW4nID0gJ3BsYWluJ1xuICApIHtcbiAgICAvLyBzYXZlIGN1cnJlbnQgaW1hZ2UgYWZ0ZXIgMTBzZWNcbiAgICBsZXQgTUFOVUFMX0lOVEVSVkFMID0gdGhpcy5zY2FuUHJvdmlkZXIuY29uZmlnLm1hbnVhbFNjYW5EZWxheTtcbiAgICBjb25zdCBkaWZmID0gKERhdGUubm93KCkgLSB0aGlzLnN0YXJ0VGltZSkgLyAxMDAwO1xuXG4gICAgaWYgKFxuICAgICAgZGlmZiA+IE1BTlVBTF9JTlRFUlZBTCAmJlxuICAgICAgIXRoaXMudmVyaWZpY2F0aW9uRXJyb3JTZW50XG5cbiAgICAgIC8vJiZcbiAgICAgIC8vdGhpcy5zY2FuUHJvdmlkZXIuY29uZmlnLmRldmVsb3BtZW50XG4gICAgKSB7XG4gICAgICB0aGlzLnZlcmlmaWNhdGlvbkVycm9yU2VudCA9IHRydWU7XG4gICAgICBjb25zb2xlLndhcm4oJ1tIQU5ETEUgRVJST1JdJyk7XG5cbiAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAvLyBjb25zdCByZWYgPSB0aGlzLnNuYWNrQmFyLm9wZW4oXG4gICAgICAgIC8vICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnc2NhbmRvYy5tYW51YWwnKSxcbiAgICAgICAgLy8gICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdzY2FuZG9jLnllcycpLFxuICAgICAgICAvLyAgIHtcbiAgICAgICAgLy8gICAgIGR1cmF0aW9uOiAxMDAwMCxcbiAgICAgICAgLy8gICAgIHZpZXdDb250YWluZXJSZWY6IHRoaXMudmlldyxcbiAgICAgICAgLy8gICB9XG4gICAgICAgIC8vICk7XG5cbiAgICAgICAgLy8gdGhpcy5fX3N1YnMocmVmLm9uQWN0aW9uKCkpLnN1YnNjcmliZSgocmVzcCkgPT4ge1xuICAgICAgICAvLyAgIHRoaXMubWFudWFsTW9kZSh0eXBlKTtcbiAgICAgICAgLy8gfSk7XG4gICAgICAgIGlmICghdGhpcy5zY2FuU2Vjb25kU2lkZSkge1xuICAgICAgICAgIGlmICh0aGlzLnNjYW5Qcm92aWRlci5jb25maWcuc2hvd01hbnVhbE1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMucHJvbXB0TWFudWFsID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hY3Rpb25zLmVtaXQoe1xuICAgICAgICAgICAgICB0eXBlOiAnbWFudWFsTW9kZScsXG4gICAgICAgICAgICAgIGRhdGE6IHt9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vICBNQU5VQUxfSU5URVJWQUwgKz0gMTA7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0aGlzLnZlcmlmaWNhdGlvbkVycm9yU2VudCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0YXJ0VGltZSA9IERhdGUubm93KCk7XG5cbiAgICAgICAgLy90aGlzLnByb21wdE1hbnVhbCA9IHRydWU7XG4gICAgICAgIC8vIHRoaXMuZGlhbG9ncy5wcm9tcHRNYW51YWwoKS5zdWJzY3JpYmUoKHJlc3A6IGFueSkgPT4ge1xuICAgICAgICAvLyAgIGNvbnNvbGUud2FybihyZXNwKTtcbiAgICAgICAgLy8gICBpZiAocmVzcCkge1xuICAgICAgICAvLyAgICAgdGhpcy5tYW51YWxNb2RlKHR5cGUpO1xuICAgICAgICAvLyAgIH1cbiAgICAgICAgLy8gICB0aGlzLnN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgICAgIC8vICAgdGhpcy52ZXJpZmljYXRpb25FcnJvclNlbnQgPSBmYWxzZTtcbiAgICAgICAgLy8gfSk7XG4gICAgICB9KTtcbiAgICAgIC8vIHRoaXMudmVyaWZpY2F0aW9uRXJyb3JTZW50ID0gdHJ1ZTtcbiAgICAgIC8vIGNvbnN0IGRhdGFVcmwgPSB0aGlzLmhhbmRsZUJpdG1hcEltYWdlKGltZy5iaXRtYXApO1xuXG4gICAgICAvLyBjb25zb2xlLndhcm4oJ1NFTlQnKTtcbiAgICAgIC8vIC8vICB0aGlzLmRpc3BsYXlJbmZvID0gJ0NhbnQgZGV0ZWN0IGRvY3VtZW50ISc7XG4gICAgICAvLyB0aGlzLmxvZ0RhdGEuUmVxdWVzdCA9IHRoaXMuX19zdWJzKFxuICAgICAgLy8gICB0aGlzLnNjYW5Qcm92aWRlci5zZW5kTG9nKHtcbiAgICAgIC8vICAgICBBY2NlcHRUZXJtc0FuZENvbmRpdGlvbnM6IHRydWUsXG4gICAgICAvLyAgICAgRXhwZWN0ZWRPdXRwdXQ6IHt9LFxuICAgICAgLy8gICAgIFJlcXVlc3Q6IHtcbiAgICAgIC8vICAgICAgIHZlcmlmaWNhdGlvbjogZGF0YVVybC5zcGxpdCgnLCcpWzFdLFxuICAgICAgLy8gICAgIH0sXG4gICAgICAvLyAgICAgUmVzcG9uc2U6IHtcbiAgICAgIC8vICAgICAgIFRyYW5zYWN0aW9uSUQ6IHV1aWR2NCgpLFxuICAgICAgLy8gICAgIH0sXG4gICAgICAvLyAgIH0pXG4gICAgICAvLyApLnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgLy8gIHRoaXMucmVzdWx0ID0gdHJ1ZTtcblxuICAgIHRoaXMuY2FtZXJhUHJvdmlkZXIuJHNob3dTd2l0Y2gubmV4dCh0cnVlKTtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcblxuICAgIC8vIHRoaXMuc2NhblJlc3VsdHMubmV4dCh7IHR5cGU6ICdtb2RlbCcsIGRhdGE6IHt9IH0pO1xuXG4gICAgdGhpcy5fX3N1YnModGhpcy5jYW1lcmFQcm92aWRlci53ZWJjYW1PYnNlcnZhYmxlKS5zdWJzY3JpYmUoKHJlc3ApID0+IHtcbiAgICAgIHRoaXMuY2FtZXJhUmVhZHkgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2NhbkluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2Nhbm5lZEltYWdlcyA9IFtdO1xuICAgIH0pO1xuICAgIHRoaXMuX19zdWJzKHRoaXMuY2FtZXJhUHJvdmlkZXIuc2VsZmllJCkuc3Vic2NyaWJlKChyZXNwKSA9PiB7XG4gICAgICB0aGlzLnNlbGZpZSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5hdXRvU2NhbigpO1xuXG4gICAgdGhpcy5fX3N1YnModGhpcy5sYXlvdXRQcm92aWRlci5icmVha3BvaW50JCkuc3Vic2NyaWJlKCh2OiBhbnkpID0+IHtcbiAgICAgIHRoaXMuaXNNb2JpbGUgPSAhdi5tYXRjaGVzIHx8IHRoaXMucGxhdGZvcm0uSU9TIHx8IHRoaXMucGxhdGZvcm0uQU5EUk9JRDtcbiAgICAgIGNvbnNvbGUubG9nKCdNTk9CSUxFJywgdGhpcy5pc01vYmlsZSk7XG4gICAgfSk7XG5cbiAgICAvLyB0aGlzLmltYWdlSGFuZGxlclN1YnNjcmlwdGlvbiA9IHRoaXMuaW1hZ2VIYW5kbGVyLnN1YnNjcmliZShcbiAgICAvLyAgICh3ZWJjYW1JbWFnZTogYW55KSA9PiB7XG4gICAgLy8gICAgIC8vIHJldHVybjtcbiAgICAvLyAgICAgaWYgKHRoaXMuc3RhcnRUaW1lID09PSAwKSB7XG4gICAgLy8gICAgICAgdGhpcy5zdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIC8vICAgICB9XG5cbiAgICAvLyAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAvLyAgICAgICBpZiAod2ViY2FtSW1hZ2UuYmFzZTY0KSB7XG4gICAgLy8gICAgICAgICBjb25zdCB0aW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG5cbiAgICAvLyAgICAgICAgIGlmICh0aGlzLnNjYW5JbWFnZVRpbWVzdGFtcHMubG9hZCA+IDApIHtcbiAgICAvLyAgICAgICAgICAgY29uc3QgeyBsb2FkIH0gPSB0aGlzLnNjYW5JbWFnZVRpbWVzdGFtcHM7XG4gICAgLy8gICAgICAgICAgIGNvbnN0IGRpZmYgPSB0aW1lIC0gbG9hZDtcbiAgICAvLyAgICAgICAgICAgLy8gY29uc29sZS53YXJuKCdUSU1FJywgZGlmZik7XG4gICAgLy8gICAgICAgICAgIHRoaXMuc2NhbkRlbGF5ID0gZGlmZjtcbiAgICAvLyAgICAgICAgIH1cblxuICAgIC8vICAgICAgICAgdGhpcy5zY2FuSW1hZ2VUaW1lc3RhbXBzLmxvYWQgPSB0aW1lO1xuXG4gICAgLy8gICAgICAgICB0aGlzLnNjYW5uZWRJbWFnZXMucHVzaCh3ZWJjYW1JbWFnZSk7XG4gICAgLy8gICAgICAgICB0aGlzLmhhbmRsZUxvbmdWYWxpZGF0aW9uRXJyb3Iod2ViY2FtSW1hZ2UsICd3b3JrZXInKTtcbiAgICAvLyAgICAgICB9XG5cbiAgICAvLyAgICAgICAvLyB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAvLyAgICAgICBpZiAodGhpcy5zY2FubmVkSW1hZ2VzLmxlbmd0aCA+IDQgJiYgIXRoaXMudmFsaWRhdGlvbikge1xuICAgIC8vICAgICAgICAgLy8gZ2V0IGxhc3QgMTBcbiAgICAvLyAgICAgICAgIGNvbnNvbGUudGltZUVuZCgndmFsaWRhdGlvblRPVEFMX1VJJyk7XG4gICAgLy8gICAgICAgICBjb25zb2xlLnRpbWUoJ3ZhbGlkYXRpb25UT1RBTF9VSScpO1xuICAgIC8vICAgICAgICAgY29uc3QgaW1hZ2VzID0gdGhpcy5zY2FubmVkSW1hZ2VzLnNsaWNlKC01KTtcbiAgICAvLyAgICAgICAgIC8vIHNldCBpbWFnZXMgdG8gMFxuICAgIC8vICAgICAgICAgdGhpcy5zY2FubmVkSW1hZ2VzID0gW107XG4gICAgLy8gICAgICAgICBjb25zb2xlLmxvZyhpbWFnZXMpO1xuXG4gICAgLy8gICAgICAgICBjb25zdCBpbWFnZXNBcnJheSA9IGltYWdlcy5tYXAoKG0pID0+IG0uYmFzZTY0LnNwbGl0KCcsJylbMV0pO1xuICAgIC8vICAgICAgICAgdGhpcy52YWxpZGF0aW9uID0gdHJ1ZTtcblxuICAgIC8vICAgICAgICAgLy8gdGhpcy5oYW5kbGVCdXJzdERhdGEoaW1hZ2VzQXJyYXksIGltYWdlcywgJ3dvcmtlcicpO1xuXG4gICAgLy8gICAgICAgICBjb25zb2xlLnRpbWUoJ3ZhbGlkYXRpb25QT1NUJyk7XG4gICAgLy8gICAgICAgfVxuICAgIC8vICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIC8vICAgICB9KTtcbiAgICAvLyAgIH1cbiAgICAvLyApO1xuICB9XG5cbiAgaGFuZGxlQml0bWFwSW1hZ2UoYml0bWFwOiBhbnkpIHtcbiAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGJpdG1hcDtcblxuICAgIGNvbnN0IG9mZnNjcmVlblNtYWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgb2Zmc2NyZWVuU21hbGwud2lkdGggPSB3aWR0aDtcbiAgICBvZmZzY3JlZW5TbWFsbC5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgY29uc3QgY3R4OiBhbnkgPSBvZmZzY3JlZW5TbWFsbC5nZXRDb250ZXh0KCdiaXRtYXByZW5kZXJlcicpO1xuXG4gICAgaWYgKGN0eCkge1xuICAgICAgY3R4LmltYWdlU21vb3RoaW5nRW5hYmxlZCA9IGZhbHNlO1xuICAgICAgY3R4LnRyYW5zZmVyRnJvbUltYWdlQml0bWFwKGJpdG1hcCk7XG4gICAgICBiaXRtYXAuY2xvc2UoKTtcbiAgICAgIGNvbnN0IGRhdGEgPSBjdHguY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvanBlZycpO1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgYXV0b1NjYW4oKSB7XG4gICAgY29uc3Qgc2lkZSA9IHRoaXMuc2NhbkJsYXN0RGF0YVswXTtcbiAgICB0aGlzLmlkU2NhbiA9IG51bGw7XG4gICAgdGhpcy5zaW5nbGVTY2FuKHNpZGUpO1xuICB9XG5cbiAgc2luZ2xlU2NhbihzaWRlOiBhbnkpIHtcbiAgICB0aGlzLnNjYW5UeXBlID0gc2lkZS5zaWRlO1xuICAgIHRoaXMucHJldmlldyA9IG51bGw7XG4gICAgdGhpcy5zZWxlY3RlZFNpZGUgPSBzaWRlO1xuXG4gICAgdGhpcy5zZWxlY3RlZFNpZGUuaW1hZ2UgPSBudWxsO1xuICAgIHRoaXMuZG9jdW1lbnRUeXBlU2VsZWN0ZWQgPSB0cnVlO1xuICAgIHRoaXMuc2NhbkJsYXN0RGF0YVsxXS5kaXNhYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbWFudWFsU2NhbkRhdGEoZGF0YTogYW55KSB7XG4gICAgY29uc29sZS5sb2coZGF0YSk7XG4gICAgdGhpcy5zY2FuQmxhc3REYXRhID0gZGF0YTtcbiAgICB0aGlzLm1hbnVhbCA9IGZhbHNlO1xuICAgIHRoaXMubWFudWFsRGF0YVNldCA9IHRydWU7XG4gICAgdGhpcy5zY2FuQmxhc3RGaW5pc2goKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SW1nQmFzZTY0KG51bTogYW55KSB7XG4gICAgY29uc29sZS5sb2coJ0dFVCA2NCcpO1xuXG4gICAgaWYgKHRoaXMubWFudWFsRGF0YVNldCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2NhbkJsYXN0RGF0YVtudW1dLmltYWdlLl9pbWFnZUFzRGF0YVVybC5zcGxpdCgnLCcpWzFdO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zY2FuQmxhc3REYXRhW251bV0uaW1hZ2UuZGF0YVVybC5zcGxpdCgnLCcpWzFdO1xuICB9XG4gIHNjYW5CbGFzdEZpbmlzaCgpIHtcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgIHRoaXMuY2FtZXJhUHJvdmlkZXIuJHNob3dTd2l0Y2gubmV4dChmYWxzZSk7XG4gICAgfSk7XG4gICAgY29uc29sZS50aW1lKCd1cGxvYWQnKTtcbiAgICBpZiAodGhpcy50eXBlID09PSAnbW9iaWxlJykge1xuICAgICAgdGhpcy5hY3Rpb25zLmVtaXQoeyBkYXRhOiB0aGlzLnNjYW5CbGFzdERhdGEgfSk7XG4gICAgICB0aGlzLnJldGFrZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmlkU2NhbiA9IG51bGw7XG4gICAgLy8gY29uc3QgbG9hZGluZyA9IHRoaXMuZGlhbG9ncy5sb2FkaW5nKCk7XG4gICAgdGhpcy5zY2FuaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICBjb25zb2xlLnRpbWUoJ3BheWxvYWQnKTtcbiAgICBjb25zdCBwYXlsb2FkOiBhbnkgPSB7XG4gICAgICBBY2NlcHRUZXJtc0FuZENvbmRpdGlvbnM6IHRydWUsXG4gICAgICBEYXRhRmllbGRzOiB7XG4gICAgICAgIEZyb250SW1hZ2VUeXBlOiAnYmFzZTY0JyxcbiAgICAgICAgRnJvbnRJbWFnZUNyb3BwZWQ6IGZhbHNlLFxuICAgICAgICBCYWNrSW1hZ2VUeXBlOiAnYmFzZTY0JyxcbiAgICAgICAgQmFja0ltYWdlQ3JvcHBlZDogZmFsc2UsXG4gICAgICAgIEZyb250SW1hZ2U6IHRoaXMuZ2V0SW1nQmFzZTY0KDApLFxuICAgICAgICBCYWNrSW1hZ2U6IHRoaXMuc2NhbkJsYXN0RGF0YVsxXS5pbWFnZSA/IHRoaXMuZ2V0SW1nQmFzZTY0KDEpIDogbnVsbCxcbiAgICAgIH0sXG4gICAgICBTZXR0aW5nczoge1xuICAgICAgICBTaG91bGRWYWxpZGF0ZTogdHJ1ZSxcbiAgICAgICAgU2hvdWxkUmV0dXJuRG9jdW1lbnRJbWFnZTogdHJ1ZSxcbiAgICAgICAgU2hvdWxkUmV0dXJuRmFjZUlmRGV0ZWN0ZWQ6IHRydWUsXG4gICAgICAgIFNraXBJbWFnZVNpemVDaGVjazogdHJ1ZSxcbiAgICAgICAgQ2FuU3RvcmVJbWFnZXM6IHRoaXMuc2NhblByb3ZpZGVyLmNhblN0b3JlSW1hZ2VzLFxuICAgICAgfSxcbiAgICAgIC8vIENhbGxCYWNrVXJsOiAnaHR0cDovL2RlbW86NTAwMC9yZXBvcnQvZXh0cmFjdGVkLycsXG4gICAgfTtcbiAgICB0aGlzLmZyb250SW1hZ2UgPSAnZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwnICsgcGF5bG9hZC5EYXRhRmllbGRzLkZyb250SW1hZ2U7XG4gICAgdGhpcy5iYWNrSW1hZ2UgPSAnZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwnICsgcGF5bG9hZC5EYXRhRmllbGRzLkJhY2tJbWFnZTtcbiAgICBpZiAoIXRoaXMuc2NhbkJsYXN0RGF0YVsxXS5pbWFnZSkge1xuICAgICAgcGF5bG9hZC5TZXR0aW5ncy5JZ25vcmVCYWNrSW1hZ2UgPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLmxvZ0RhdGEuUmVxdWVzdCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocGF5bG9hZCkpO1xuXG4gICAgY29uc29sZS50aW1lRW5kKCdwYXlsb2FkJyk7XG4gICAgdGhpcy5fX3N1YnMoXG4gICAgICB0aGlzLnNjYW5Qcm92aWRlci5ibGFzdFBvc3QocGF5bG9hZCkucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcigoZTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMubWFudWFsRGF0YVNldCkge1xuICAgICAgICAgICAgLy8gY29uc29sZS53YXJuKCdNQU5VQUwgREFUQSBTRVQnLGUpO1xuICAgICAgICAgICAgdGhpcy5sb2dEYXRhLlJlc3BvbnNlID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShlLmVycm9yKSk7XG5cbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRXh0cmFjdGlvbkVycm9yKHt9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdFRUUnLCBlKTtcbiAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApLnN1YnNjcmliZShcbiAgICAgIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhkYXRhKTtcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGRhdGEuRGF0YTtcbiAgICAgICAgY29uc29sZS50aW1lRW5kKCd1cGxvYWQnKTtcbiAgICAgICAgY29uc29sZS50aW1lKCdwYXJzZScpO1xuICAgICAgICAvLyBkYXRhLkluZm9Db2RlID0gJzEwMDEnO1xuICAgICAgICBjb25zb2xlLnRpbWUoJ3AnKTtcbiAgICAgICAgdGhpcy5sb2dEYXRhLlJlc3BvbnNlID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gICAgICAgIGNvbnNvbGUudGltZUVuZCgncCcpO1xuICAgICAgICAvL2xvYWRpbmcuY2xvc2UoKTtcbiAgICAgICAgdGhpcy5kb2N1bWVudFR5cGVTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuc2NhbmluZyA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChkYXRhLkluZm9Db2RlID09PSAnMTAwMScpIHtcbiAgICAgICAgICB0aGlzLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnW0VSUk9SXSAxMDAxJyk7XG4gICAgICAgICAgdGhpcy5lcnJvckNvZGUgPSAnMTAwMSc7XG4gICAgICAgICAgLy8gdGhpcy5zY2FuU2lkZSA9IDA7XG5cbiAgICAgICAgICB0aGlzLnByZXZpZXcgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YS5JbmZvQ29kZSA9PT0gJzEwMDInKSB7XG4gICAgICAgICAgdGhpcy5lcnJvciA9IHRydWU7XG4gICAgICAgICAgY29uc29sZS5sb2coJ1tFUlJPUl0gMTAwMicpO1xuICAgICAgICAgIHRoaXMuZXJyb3JDb2RlID0gJzEwMDInO1xuICAgICAgICAgIC8vIHRoaXMuc2NhblNpZGUgPSAwO1xuXG4gICAgICAgICAgdGhpcy5wcmV2aWV3ID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc3VsdHMgJiYgZGF0YS5NZXRhZGF0YS5sZW5ndGggPiAwICYmIGRhdGEuSW5mb0NvZGUgPT09ICcxMDAwJykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdFeHRyYWN0aW9uIHRpbWUnLCBkYXRhLkFuYWx5c2lzVGltZSk7XG5cbiAgICAgICAgICAvLyAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG5cbiAgICAgICAgICBjb25zb2xlLnRpbWUoJ3BhcnNlYmxhc3QnKTtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLnNjYW5Qcm92aWRlci5wYXJzZUJsYXN0KHJlc3VsdHMpO1xuICAgICAgICAgIGNvbnNvbGUudGltZUVuZCgncGFyc2VibGFzdCcpO1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdSRVMnLCB0aGlzLnJlc3VsdCk7XG4gICAgICAgICAgLy8gdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgICBjb25zdCBtb2RlbCA9IHJlc3VsdC5tb2RlbDtcblxuICAgICAgICAgIGlmIChkYXRhLkltYWdlRGF0YT8uRmFjZUltYWdlKSB7XG4gICAgICAgICAgICBtb2RlbC5fYXZhdGFyID1cbiAgICAgICAgICAgICAgJ2RhdGE6aW1hZ2UvanBlZztiYXNlNjQsJyArIGRhdGEuSW1hZ2VEYXRhPy5GYWNlSW1hZ2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGRhdGEuSW1hZ2VEYXRhPy5Eb2N1bWVudHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgRG9jdW1lbnRzIH0gPSBkYXRhLkltYWdlRGF0YTtcbiAgICAgICAgICAgIG1vZGVsLmltYWdlcyA9IERvY3VtZW50cy5tYXAoKGltYWdlOiBhbnksIGk6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4geyBkYXRhOiAnZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwnICsgRG9jdW1lbnRzW2ldIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5tb2RlbCA9IG1vZGVsO1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdNT0RFTCcsIHRoaXMubW9kZWwpO1xuXG4gICAgICAgICAgdGhpcy5hY3Rpb25zLmVtaXQoe1xuICAgICAgICAgICAgdHlwZTogJ3NjYW5GaW5pc2gnLFxuICAgICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgICByZXN1bHRzLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZXN1bHQgPSB0cnVlO1xuICAgICAgICAgICAgY29uc29sZS50aW1lKCdmZicpO1xuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgICAgIHRoaXMuc2NhblJlc3VsdHMubmV4dCh7IHR5cGU6ICdtb2RlbCcsIGRhdGE6IG1vZGVsIH0pO1xuICAgICAgICAgICAgLy8gdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAvLyAgfSk7XG4gICAgICAgICAgICBjb25zb2xlLnRpbWVFbmQoJ2ZmJyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ0VSUk9SJyk7XG4gICAgICAgICAgaWYgKHRoaXMubWFudWFsRGF0YVNldCkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVFeHRyYWN0aW9uRXJyb3IoZGF0YSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIHRoaXMuc2NhblNpZGUgPSAwO1xuICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lcnJvciA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnByZXZpZXcgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgLy8gdGhpcy5kb2N1bWVudFR5cGVTZWxlY3RlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgLy8gdGhpcy5yZXRyeSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIGNvbnNvbGUudGltZUVuZCgncGFyc2UnKTtcbiAgICAgIH0sXG4gICAgICAoZXJyKSA9PiB7XG4gICAgICAgIC8vIGxvYWRpbmcuY2xvc2UoKTtcbiAgICAgICAgLy8gdGhpcy5zY2FuU2lkZSA9IDA7XG4gICAgICAgIHRoaXMuZXJyb3IgPSB0cnVlO1xuICAgICAgICB0aGlzLnByZXZpZXcgPSB0cnVlO1xuICAgICAgICB0aGlzLmRvY3VtZW50VHlwZVNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zY2FuaW5nID0gZmFsc2U7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHJldHJ5KCkge1xuICAgIHRoaXMucHJldmlldyA9IGZhbHNlO1xuICAgIHRoaXMudmFsaWRhdGlvbiA9IGZhbHNlO1xuICAgIHRoaXMuZXJyb3JDb2RlID0gJzEwMDAnO1xuICAgIHRoaXMucmVzdWx0ID0gZmFsc2U7XG4gICAgdGhpcy5pZFNjYW4gPSBudWxsO1xuICAgIHRoaXMuY2FtZXJhUHJvdmlkZXIuJHNob3dTd2l0Y2gubmV4dCh0cnVlKTtcbiAgICBpZiAodGhpcy5lcnJvcikge1xuICAgICAgdGhpcy5kb2N1bWVudFR5cGVTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5zY2FuQmxhc3REYXRhLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICBlbGVtZW50LmltYWdlID0gbnVsbDtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmVycm9yID0gZmFsc2U7XG4gICAgdGhpcy5zdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMuYXV0b1NjYW4oKTtcbiAgICB0aGlzLnNjYW4oKTtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyByZXRha2UoKSB7XG4gICAgdGhpcy52YWxpZGF0aW9uID0gZmFsc2U7XG4gICAgdGhpcy5wcmV2aWV3ID0gZmFsc2U7XG4gICAgdGhpcy5lcnJvciA9IGZhbHNlO1xuICAgIHRoaXMucmVzdWx0ID0gZmFsc2U7XG4gICAgdGhpcy5zY2FuU2lkZSA9IDA7XG4gICAgdGhpcy5jYW1lcmFQcm92aWRlci4kc2hvd1N3aXRjaC5uZXh0KHRydWUpO1xuICAgIHRoaXMuaW1hZ2VWZXJpZmllZCA9IGZhbHNlO1xuICAgIHRoaXMuc2NhbkRhdGFzID0gW107XG4gICAgdGhpcy5zY2FuaW5nID0gZmFsc2U7XG4gICAgdGhpcy5pbWFnZXMgPSBbXTtcbiAgICB0aGlzLnNjYW5JblByb2dyZXNzID0gZmFsc2U7XG4gICAgdGhpcy5zdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMuaWRTY2FuID0gbnVsbDtcbiAgICB0aGlzLmRvY3VtZW50VHlwZVNlbGVjdGVkID0gZmFsc2U7XG4gICAgdGhpcy5zY2FuQmxhc3REYXRhLmZvckVhY2goKG06IGFueSkgPT4ge1xuICAgICAgbS5pbWFnZSA9IG51bGw7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNjYW5TZWNvbmRTaWRlID0gZmFsc2U7XG5cbiAgICB0aGlzLmF1dG9TY2FuKCk7XG5cbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHVzZSgpIHtcbiAgICAvLyBzYXZlIGltYWdlcz8/XG5cbiAgICBpZiAodGhpcy5zY2FuUHJvdmlkZXIuY2FuU3RvcmVJbWFnZXMpIHtcbiAgICAgIHRoaXMubG9nRGF0YS5FeHBlY3RlZE91dHB1dCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5tb2RlbCkpO1xuICAgICAgaWYgKHRoaXMubG9nRGF0YS5FeHBlY3RlZE91dHB1dD8uX2F2YXRhcikge1xuICAgICAgICBkZWxldGUgdGhpcy5sb2dEYXRhLkV4cGVjdGVkT3V0cHV0Ll9hdmF0YXI7XG4gICAgICB9XG4gICAgICB0aGlzLl9fc3Vicyh0aGlzLnNjYW5Qcm92aWRlci5zZW5kTG9nKHRoaXMubG9nRGF0YSkpLnN1YnNjcmliZSgpO1xuICAgICAgY29uc29sZS5sb2codGhpcy5sb2dEYXRhKTtcbiAgICB9XG5cbiAgICB0aGlzLmFjdGlvbnMuZW1pdCh7XG4gICAgICB0eXBlOiAnc2NhbkRhdGFDbG9zZScsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIG1vZGVsOiB0aGlzLm1vZGVsLFxuICAgICAgICBpbWFnZXM6IHRoaXMuaW1hZ2VzLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBzZWxmaWUoKSB7XG4gICAgY29uc3QgYXZhdGFyID0gdGhpcy5tb2RlbD8uX2F2YXRhcjtcbiAgICB0aGlzLmRpYWxvZ3NcbiAgICAgIC5zY2FuU2VsZmllKHsgYXZhdGFyIH0pXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgLnN1YnNjcmliZSgocmVzcDogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXNwKSB7XG4gICAgICAgICAgY29uc29sZS5sb2cocmVzcCk7XG4gICAgICAgICAgaWYgKHRoaXMuc2NhblByb3ZpZGVyLmVuYWJsZVZlcmlmaWNhdGlvbikge1xuICAgICAgICAgICAgdGhpcy5pbWFnZVZlcmlmaWVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5zY2FuUmVzdWx0cy5uZXh0KHtcbiAgICAgICAgICAgIHR5cGU6ICdhdmF0YXInLFxuICAgICAgICAgICAgZGF0YTogcmVzcC5pbWFnZUFzRGF0YVVybCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICAvLyB0aGlzLm1vZGVsLl9hdmF0YXIgPSByZXNwLmltYWdlQXNEYXRhVXJsO1xuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIGNhbWVyYU9mZihldjogYW55KSB7XG4gICAgdGhpcy5jYW1lcmFSZWFkeSA9IGZhbHNlO1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgdmlkZW9SZWFkeShldmVudDogYm9vbGVhbikge1xuICAgIGNvbnNvbGUubG9nKCdSRUFEWScsIGV2ZW50KTtcbiAgICB0aGlzLmNhbWVyYVJlYWR5ID0gZXZlbnQ7XG4gICAgaWYgKHRoaXMuY2FtZXJhUmVhZHkgJiYgIXRoaXMuc2NhbkluUHJvZ3Jlc3MgJiYgIXRoaXMubWFudWFsKSB7XG4gICAgICB0aGlzLnNjYW5JblByb2dyZXNzID0gdHJ1ZTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnNjYW4oKTtcbiAgICAgIH0sIDIwKTtcbiAgICB9XG4gIH1cblxuICBtYW51YWxTZXQoa2V5OiBib29sZWFuKSB7XG4gICAgaWYgKGtleSkge1xuICAgICAgdGhpcy5tYW51YWxNb2RlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHJvbXB0TWFudWFsID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2NhblRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNjYW5UaW1lb3V0KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaW1hZ2VIYW5kbGVyU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmltYWdlSGFuZGxlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKCdERVNUUk9YWScpO1xuXG4gICAgdGhpcy5fX2Rlc3Ryb3koKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lclxuICAqbmdJZj1cImNhbWVyYVByb3ZpZGVyLnJlY3RQb3NpdGlvbi50ID4gMCAmJiBkaXNwbGF5SW5mbyAmJiAhcmVzdWx0ICYmICFtYW51YWxcIlxuPlxuICA8ZGl2IGNsYXNzPVwiaGludFwiIFtuZ1N0eWxlXT1cInsgdG9wOiBjYW1lcmFQcm92aWRlci5oaW50UG9zaXRpb24gKyAncHgnIH1cIj5cbiAgICA8c3BhbiBjbGFzcz1cInRleHRcIj5cbiAgICAgIHt7IGRpc3BsYXlJbmZvIHwgdHJhbnNsYXRlIH19XG4gICAgPC9zcGFuPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0RpYWxvZ1wiPlxuICA8ZGl2IGNsYXNzPVwicGFnZVR1cm5cIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImlubmVyXCI+XG4gICAgICAgIDxtYXQtaWNvbj4zNjA8L21hdC1pY29uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpZFNjYW4gPT09ICdCQUNLJ1wiPlxuICAgICAgICAgICAge3sgXCJzY2FuZG9jLnR1cm5BbmRDYXB0dXJlLmJhY2tcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpZFNjYW4gPT09ICdGUk9OVCdcIj5cbiAgICAgICAgICAgIHt7IFwic2NhbmRvYy50dXJuQW5kQ2FwdHVyZS5mcm9udFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8Zm9vdGVyPlxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjbG9zZURpYWxvZygpXCIgbWF0LXJhaXNlZC1idXR0b24+T2s8L2J1dHRvbj5cbiAgICAgIDwvZm9vdGVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwicHJvbXB0TWFudWFsXCI+XG4gIDxkaXYgY2xhc3M9XCJtYW51YWxNb2RlXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbm5lclwiPlxuICAgICAgICA8bWF0LWljb24+c2NyZWVuc2hvdF9rZXlib2FyZDwvbWF0LWljb24+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0XCI+XG4gICAgICAgICAge3sgXCJzY2FuZG9jLm1hbnVhbFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8Zm9vdGVyPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDhweFwiXG4gICAgICAgICAgKGNsaWNrKT1cIm1hbnVhbFNldCh0cnVlKVwiXG4gICAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgPlxuICAgICAgICAgIHt7IFwic2NhbmRvYy55ZXNcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDhweFwiXG4gICAgICAgICAgKGNsaWNrKT1cIm1hbnVhbFNldChmYWxzZSlcIlxuICAgICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgID5cbiAgICAgICAgICB7eyBcInNjYW5kb2Mubm9cIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZm9vdGVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlc3VsdFwiPlxuICA8c2VjdGlvbj5cbiAgICA8bmd4LXNjYW4tcmVzdWx0c1xuICAgICAgKGFjdGlvbik9XCJzZWxmaWUoKVwiXG4gICAgICBbZm9ybV09XCJmb3JtXCJcbiAgICAgIFtkYXRhXT1cInNjYW5SZXN1bHRzXCJcbiAgICA+PC9uZ3gtc2Nhbi1yZXN1bHRzPlxuXG4gICAgPGZvb3Rlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJtci00XCIgbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cInJldGFrZSgpXCI+XG4gICAgICAgICAge3sgXCJzY2FuZG9jLnJlVGFrZVwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImVycm9yIHx8IGZvcm0uaW52YWxpZFwiXG4gICAgICAgICAgY2xhc3M9XCJtbC00XCJcbiAgICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgICAgIChjbGljayk9XCJ1c2UoKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBcInNjYW5kb2MudXNlRGF0YVwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9mb290ZXI+XG4gIDwvc2VjdGlvbj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwibWFudWFsXCI+XG4gIDxzZWN0aW9uPlxuICAgIDxuZ3gtbWFudWFsLXNjYW4gKGFjdGlvbik9XCJtYW51YWxTY2FuRGF0YSgkZXZlbnQpXCI+PC9uZ3gtbWFudWFsLXNjYW4+XG4gIDwvc2VjdGlvbj5cbjwvbmctY29udGFpbmVyPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFyZXN1bHQgJiYgZG9jdW1lbnRUeXBlU2VsZWN0ZWQgJiYgIW1hbnVhbFwiPlxuICA8c2VjdGlvbj5cbiAgICA8ZGl2ICN3cmFwZXIgY2xhc3M9XCJ3cmFwZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJsb2FkaW5nXCIgKm5nSWY9XCIoIWNhbWVyYVJlYWR5ICYmICFwcmV2aWV3KSB8fCBzY2FuaW5nXCI+XG4gICAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIG1vZGU9XCJpbmRldGVybWluYXRlXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZXJyb3JcIj5cbiAgICAgICAgPG5neC1zY2FuZG9jLXdlYmNhbVxuICAgICAgICAgICpuZ0lmPVwiIXByZXZpZXcgJiYgIXNjYW5pbmdcIlxuICAgICAgICAgIGNsYXNzPVwibWFpblwiXG4gICAgICAgICAgI3dlYmNhbVxuICAgICAgICAgIHR5cGU9XCJkb2N1bWVudFwiXG4gICAgICAgICAgW3RyaWdnZXJdPVwidHJpZ2dlclwiXG4gICAgICAgICAgW2ltYWdlSGFuZGxlcl09XCJpbWFnZUhhbmRsZXJcIlxuICAgICAgICAgIChpbWFnZUNhcHR1cmUpPVwiaGFuZGxlSW1hZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgKGluaXRFcnJvcik9XCJoYW5kbGVJbml0RXJyb3IoJGV2ZW50KVwiXG4gICAgICAgICAgKGRlc3Ryb3llZCk9XCJjYW1lcmFPZmYoJGV2ZW50KVwiXG4gICAgICAgICAgKHZpZGVvUmVhZHkpPVwidmlkZW9SZWFkeSgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICA8L25neC1zY2FuZG9jLXdlYmNhbT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInByZXZpZXdEYXRhXCJcbiAgICAgICAgKm5nSWY9XCJwcmV2aWV3XCJcbiAgICAgICAgc3R5bGU9XCJcbiAgICAgICAgICB6LWluZGV4OiAyMDtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLTE2IGVycm9yXCIgKm5nSWY9XCJlcnJvclwiPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uPmVycm9yX291dGxpbmU8L21hdC1pY29uXG4gICAgICAgICAgICAgID48c3BhbiBjbGFzcz1cIm1sLThcIj57e1xuICAgICAgICAgICAgICAgIFwic2NhbmRvYy51bmFibGVUb0RldGVjdElkXCIgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVycm9yQ29kZSA9PT0gJzEwMDEnXCI+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAge3sgXCJzY2FuZG9jLmV4dHJhY3Rpb24uYzEwMDFcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVycm9yQ29kZSA9PT0gJzEwMDInXCI+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAge3sgXCJzY2FuZG9jLmV4dHJhY3Rpb24uYzEwMDJcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8dWwgKm5nSWY9XCJlcnJvckNvZGUgPT09ICcxMDAwJ1wiPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAge3sgXCJzY2FuZG9jLnBsYWNlSWRDbG9zZVRvRGV2aWNlXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIHt7IFwic2NhbmRvYy5lbnN1cmVTdWZmaWNpZW50TGlnaHRcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAge3sgXCJzY2FuZG9jLmhvbGREb2N1bWVudFN0ZWFkeVwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICB7eyBcInNjYW5kb2MubWFrZVN1cmVBbGxFZGdlc09mVGhlSWRBcmVWaXNpYmxlXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICBcInNjYW5kb2MubWFrZVN1cmVUaGVyZUFyZU5vR2xhcmVBbmRTaGFkb3dzT25UaGVJZFwiIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzY2FuUHJldmlld1wiICpuZ0lmPVwiIWVycm9yICYmICFzY2FuaW5nXCI+XG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwicHktMTZcIiBzdHlsZT1cImZvbnQtc2l6ZTogMTZweFwiPlxuICAgICAgICAgIHt7XG4gICAgICAgICAgICBcInNjYW5kb2MuZW5zdXJlQWxsVGV4dHNBcmVWaXNpYmxlXCJcbiAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICB9fVxuICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJpbWFnZVwiXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1pbWFnZV09XCIndXJsKCcgKyBwcmV2aWV3ICsgJyknXCJcbiAgICAgICAgICA+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8Zm9vdGVyICpuZ0lmPVwicHJldmlld1wiPlxuICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZGlzcGxheUluZm9cIiAqbmdJZj1cIiFwcmV2aWV3ICYmIGNhbWVyYVJlYWR5XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlzcGxheUluZm9cIj5cbiAgICAgICAge3sgZGlzcGxheUluZm8gfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PiAtLT5cbiAgICAgIDwhLS0gPGRpdiBzdHlsZT1cImhlaWdodDogMjZweFwiPlxuICAgICAgPGRpdlxuICAgICAgICBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjsgZm9udC1zaXplOiAxOHB4XCJcbiAgICAgICAgKm5nSWY9XCJpZFNjYW4gJiYgIXByZXZpZXcgJiYgY2FtZXJhUmVhZHlcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaWRTY2FuID09PSAnQkFDSydcIj5cbiAgICAgICAgICBUdXJuIGRvY3VtZW50IGFuZDpcbiAgICAgICAgICB7eyBcInNjYW5kb2MuY2FwdHVyZUJhY2tcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlkU2NhbiA9PT0gJ0ZST05UJ1wiPlxuICAgICAgICAgIFR1cm4gZG9jdW1lbnQgYW5kOlxuICAgICAgICAgIHt7IFwic2NhbmRvYy5jYXB0dXJlRnJvbnRcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PiAtLT5cblxuICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIiAqbmdJZj1cInByZXZpZXdcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1yLTRcIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwicmV0cnkoKVwiPlxuICAgICAgICAgIHt7IFwic2NhbmRvYy5yZXRyeVwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZXJyb3JcIlxuICAgICAgICAgIGNsYXNzPVwibWwtNFwiXG4gICAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgICAoY2xpY2spPVwiY29udGludWUoKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBcInNjYW5kb2MuY29udGludWVXaXRoU2VsZWN0ZWRJbWFnZVwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9mb290ZXI+XG4gIDwvc2VjdGlvbj5cbjwvbmctY29udGFpbmVyPlxuIl19
716
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvY29yZS9jb21wb25lbnRzL3NjYW4vc2Nhbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvY29yZS9jb21wb25lbnRzL3NjYW4vc2Nhbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixNQUFNLEVBQ04sWUFBWSxFQUlaLHVCQUF1QixFQUN2QixLQUFLLEVBSUwsV0FBVyxHQUdaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQWdELE1BQU0sTUFBTSxDQUFDO0FBRzdFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQXlCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQU1oRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQTBCbEQsTUFBTSxPQUFPLGFBQ1gsU0FBUSxhQUFhO0lBZ0dyQixZQUNTLEVBQXFCLEVBQ3BCLElBQVksRUFDYixjQUF3QyxFQUN2QyxRQUFrQixFQUNsQixjQUE4QixFQUM5QixRQUFrQixFQUVsQixTQUEyQixFQUUzQixRQUFxQixFQUNyQixJQUFzQixFQUV0QixJQUFrQixDQUFDLDhCQUE4Qjs7UUFFekQsS0FBSyxFQUFFLENBQUM7UUFkRCxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNwQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ2IsbUJBQWMsR0FBZCxjQUFjLENBQTBCO1FBQ3ZDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsbUJBQWMs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RUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgVmlld0NoaWxkLFxuICBFdmVudEVtaXR0ZXIsXG4gIE91dHB1dCxcbiAgSG9zdExpc3RlbmVyLFxuICBFbGVtZW50UmVmLFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE5nWm9uZSxcbiAgSW5qZWN0b3IsXG4gIEhvc3RCaW5kaW5nLFxuICBWaWV3UmVmLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiwgZm9ya0pvaW4sIGZyb20sIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XG5cbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgc3dpdGNoTWFwLCBtYXAsIGRlbGF5LCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBTY2FuUHJvdmlkZXIgfSBmcm9tICcuLi8uLi8uLi9wcm92aWRlcnMvc2Nhbi5wcm92aWRlcic7XG5pbXBvcnQgeyBXZWJjYW1JbWFnZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvY29tcG9uZW50cy93ZWJjYW0vZG9tYWluL3dlYmNhbS1pbWFnZSc7XG5pbXBvcnQgeyBXZWJjYW1Jbml0RXJyb3IgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2NvbXBvbmVudHMvd2ViY2FtL2RvbWFpbi93ZWJjYW0taW5pdC1lcnJvcic7XG5pbXBvcnQgeyBBdXRoUHJvdmlkZXIgfSBmcm9tICcuLi8uLi8uLi9wcm92aWRlcnMvYXV0aC5wcm92aWRlcic7XG5pbXBvcnQgeyBOZ3hTY2FuZG9jQ2FtZXJhUHJvdmlkZXIgfSBmcm9tICcuLi8uLi8uLi9wcm92aWRlcnMvY2FtZXJhLnByb3ZpZGVyJztcbmltcG9ydCB7IExheW91dFByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vLi4vcHJvdmlkZXJzL2xheW91dC5wcm92aWRlcic7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIElXaW5kb3cgZXh0ZW5kcyBXaW5kb3cge1xuICBUZXh0RGV0ZWN0b3I6IGFueTtcbn1cblxuaW50ZXJmYWNlIFRyb3VibGVzaG9vdGluZyB7XG4gIFJlcXVlc3Q6IGFueTtcbiAgUmVzcG9uc2U6IGFueTtcbiAgRXhwZWN0ZWRPdXRwdXQ6IGFueTtcbiAgQWNjZXB0VGVybXNBbmRDb25kaXRpb25zOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgVGltZXN0YW1wcyB7XG4gIHRpbWU6IG51bWJlcjtcbiAgbG9hZDogbnVtYmVyO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtc2NhbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zY2FuLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2Nhbi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NhbkNvbXBvbmVudFxuICBleHRlbmRzIEJhc2VDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcbntcbiAgc2NhbkJsYXN0RGF0YTogYW55ID0gW1xuICAgIHtcbiAgICAgIHRpdGxlOiAncG1zLmRpYWxvZ3MuY29tcG9uZW50cy5zY2FuUHJvZmlsZS5mcm9udCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ3Btcy5kaWFsb2dzLmNvbXBvbmVudHMuc2NhblByb2ZpbGUuZnJvbnREZXNjcmlwdGlvbicsXG4gICAgICBzaWRlOiAnRlJPTlQnLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdwbXMuZGlhbG9ncy5jb21wb25lbnRzLnNjYW5Qcm9maWxlLmJhY2snLFxuICAgICAgZGVzY3JpcHRpb246ICdwbXMuZGlhbG9ncy5jb21wb25lbnRzLnNjYW5Qcm9maWxlLmJhY2tEZXNjcmlwdGlvbicsXG4gICAgICBkaXNhYmxlZDogdHJ1ZSxcbiAgICAgIHNpZGU6ICdCQUNLJyxcbiAgICB9LFxuICBdO1xuICBASW5wdXQoKSB0eXBlID0gJ2Rlc2t0b3AnO1xuICBASW5wdXQoKSBkaWFsb2dzOiBhbnk7XG4gIEBPdXRwdXQoKSBhY3Rpb25zID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHB1YmxpYyBkZXZpY2VJZD86IHN0cmluZztcblxuICBzY2FuUmVzdWx0cyA9IG5ldyBTdWJqZWN0KCk7XG4gIHNjYW5TZWNvbmRTaWRlID0gZmFsc2U7XG4gIHN0YXJ0VGltZTogbnVtYmVyID0gMDtcblxuICBzY2FuSW5Qcm9ncmVzcyA9IGZhbHNlO1xuXG4gIC8vIHdlYmNhbSBzbmFwc2hvdCB0cmlnZ2VyXG4gIGRvY3VtZW50VHlwZVNlbGVjdGVkID0gZmFsc2U7XG4gIGltYWdlSGFuZGxlclN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcbiAgc2VsZWN0ZWRTaWRlOiBhbnk7XG4gIGltYWdlczogYW55O1xuICBzY2FuVGltZW91dDogYW55O1xuICBwcmV2aWV3OiBhbnkgPSBudWxsO1xuICBzY2FuVHlwZTogYW55O1xuXG4gIGVycm9yQ29kZSA9ICcxMDAwJztcbiAgZGlzcGxheUluZm86IGFueSA9ICdzY2FuZG9jLmluZm8ucG9zaXRpb24nO1xuXG4gIHZlcmlmaWNhdGlvbkVycm9yU2VudCA9IGZhbHNlO1xuICBlcnJvciA9IGZhbHNlO1xuICBjYW1lcmFSZWFkeSA9IGZhbHNlO1xuICByZXN1bHQ6IGFueTtcbiAgc2NhbmluZyA9IGZhbHNlO1xuXG4gIHByb21wdE1hbnVhbCA9IGZhbHNlO1xuXG4gIGZyb250SW1hZ2U6IGFueTtcbiAgYmFja0ltYWdlOiBhbnk7XG5cbiAgaW1hZ2VIYW5kbGVyID0gbmV3IFN1YmplY3QoKTtcbiAgbWFudWFsRGF0YVNldCA9IGZhbHNlO1xuICBsb2dEYXRhOiBUcm91Ymxlc2hvb3RpbmcgPSB7XG4gICAgQWNjZXB0VGVybXNBbmRDb25kaXRpb25zOiB0cnVlLFxuICAgIFJlcXVlc3Q6IG51bGwsXG4gICAgUmVzcG9uc2U6IG51bGwsXG4gICAgRXhwZWN0ZWRPdXRwdXQ6IG51bGwsXG4gIH07XG5cbiAgc2NhbkRhdGFzOiBhbnkgPSBbXTtcbiAgc2NhblNpZGU6IGFueTtcbiAgaWRTY2FuOiBhbnkgPSBudWxsO1xuICB3ZWJjYW1JbWFnZT86IFdlYmNhbUltYWdlO1xuICBtb2RlbDogYW55O1xuICB2YWxpZGF0aW9uID0gZmFsc2U7XG4gIHNjYW5uZWRJbWFnZXM6IGFueVtdID0gW107XG4gIHNjYW5EZWxheTogYW55ID0gMDtcbiAgcHVibGljIHRyaWdnZXI6IFN1YmplY3Q8bnVtYmVyPiA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcbiAgLy8gc3dpdGNoIHRvIG5leHQgLyBwcmV2aW91cyAvIHNwZWNpZmljIHdlYmNhbTsgdHJ1ZS9mYWxzZTogZm9yd2FyZC9iYWNrd2FyZHMsIHN0cmluZzogZGV2aWNlSWRcbiAgcHVibGljIG5leHRXZWJjYW06IFN1YmplY3Q8Ym9vbGVhbiB8IHN0cmluZz4gPSBuZXcgU3ViamVjdDxcbiAgICBib29sZWFuIHwgc3RyaW5nXG4gID4oKTtcbiAgaW1hZ2VWZXJpZmllZCA9IGZhbHNlO1xuICBmb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gIG1hbnVhbCA9IGZhbHNlO1xuICBpc01vYmlsZSA9IHRoaXMucGxhdGZvcm0uSU9TIHx8IHRoaXMucGxhdGZvcm0uQU5EUk9JRDtcbiAgQElucHV0KCkgc2hvd0RpYWxvZyA9IGZhbHNlO1xuICBzY2FuSW1hZ2VUaW1lc3RhbXBzOiBUaW1lc3RhbXBzID0ge1xuICAgIHRpbWU6IDAsXG4gICAgbG9hZDogMCxcbiAgfTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1vYmlsZScpIGdldCBjbGFzcygpIHtcbiAgICByZXR1cm4gdGhpcy5pc01vYmlsZTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxuICBvblJlc2l6ZSgpIHtcbiAgICBpZiAodGhpcy5yZXN1bHQpIHtcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIHNjYW5Qcm92aWRlciE6IFNjYW5Qcm92aWRlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgem9uZTogTmdab25lLFxuICAgIHB1YmxpYyBjYW1lcmFQcm92aWRlcjogTmd4U2NhbmRvY0NhbWVyYVByb3ZpZGVyLFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgbGF5b3V0UHJvdmlkZXI6IExheW91dFByb3ZpZGVyLFxuICAgIHByaXZhdGUgcGxhdGZvcm06IFBsYXRmb3JtLFxuXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG5cbiAgICBwcml2YXRlIHNuYWNrQmFyOiBNYXRTbmFja0JhcixcbiAgICBwcml2YXRlIHZpZXc6IFZpZXdDb250YWluZXJSZWYsXG5cbiAgICBwcml2YXRlIGF1dGg6IEF1dGhQcm92aWRlciAvLyBwcml2YXRlIGFwaTogU2VydmVyUHJvdmlkZXJcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnNjYW5Qcm92aWRlciA9IHRoaXMuaW5qZWN0b3IuZ2V0KFNjYW5Qcm92aWRlcik7XG5cbiAgICBpZiAoIXRoaXMuc2NhblByb3ZpZGVyLmNvbmZpZy5kZXZlbG9wbWVudCkge1xuICAgICAgLy8gY29uc29sZSA9IHtcbiAgICAgIC8vICAgbG9nOiAoLi4uYXJnczogYW55KSA9PiB7fSxcbiAgICAgIC8vICAgdGltZTogKC4uLmFyZ3M6IGFueSkgPT4ge30sXG4gICAgICAvLyAgIHRpbWVFbmQ6ICguLi5hcmdzOiBhbnkpID0+IHt9LFxuICAgICAgLy8gICB3YXJuOiAoLi4uYXJnczogYW55KSA9PiB7fSxcbiAgICAgIC8vICAgZXJyb3I6ICguLi5hcmdzOiBhbnkpID0+IHt9LFxuICAgICAgLy8gfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc2V0TG9nRGF0YSgpIHtcbiAgICB0aGlzLmxvZ0RhdGEgPSB7XG4gICAgICBSZXF1ZXN0OiBudWxsLFxuICAgICAgUmVzcG9uc2U6IG51bGwsXG4gICAgICBFeHBlY3RlZE91dHB1dDogbnVsbCxcbiAgICAgIEFjY2VwdFRlcm1zQW5kQ29uZGl0aW9uczogdHJ1ZSxcbiAgICB9O1xuICB9XG5cbiAgaW5pdCgpIHtcbiAgICB0aGlzLmF1dGguYWNjZXNUb2tlbi5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnJlc2V0TG9nRGF0YSgpO1xuICAgIC8vIHRoaXMucmVzdWx0PXRydWU7XG4gICAgLy8gdGhpcy5yZXN1bHQgPXt9O1xuXG4gICAgY29uc29sZS5sb2coJ0lOSVQgU0NBTicpO1xuICB9XG5cbiAgY29udGludWUoKSB7XG4gICAgdGhpcy5kb2N1bWVudFR5cGVTZWxlY3RlZCA9IGZhbHNlO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNlbGVjdGVkU2lkZS5pbWFnZSA9IHRoaXMud2ViY2FtSW1hZ2U7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFNpZGUuc2lkZSA9PT0gJ0ZST05UJykge1xuICAgICAgICB0aGlzLnNjYW5CbGFzdERhdGFbMV0uZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0sIDIwMCk7XG4gIH1cblxuICBzY2FuKCkge1xuICAgIHRoaXMudHJpZ2dlci5uZXh0KG5ldyBEYXRlKCkuZ2V0VGltZSgpKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVJbWFnZSh3ZWJjYW1JbWFnZTogV2ViY2FtSW1hZ2UpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGFydFRpbWUgPT09IDApIHtcbiAgICAgIHRoaXMuc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB9XG4gICAgLy8gY29uc29sZS5sb2coJ1tyZWNlaXZlZCB3ZWJjYW0gaW1hZ2VdJywgd2ViY2FtSW1hZ2UpO1xuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBjb25zdCB0aW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG5cbiAgICAgIGlmICh0aGlzLnNjYW5JbWFnZVRpbWVzdGFtcHMubG9hZCA+IDApIHtcbiAgICAgICAgY29uc3QgeyBsb2FkIH0gPSB0aGlzLnNjYW5JbWFnZVRpbWVzdGFtcHM7XG4gICAgICAgIGNvbnN0IGRpZmYgPSB0aW1lIC0gbG9hZDtcbiAgICAgICAgLy8gICBjb25zb2xlLmxvZygndGltZTonLCBkaWZmKTtcbiAgICAgICAgdGhpcy5zY2FuRGVsYXkgPSBkaWZmO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNjYW5JbWFnZVRpbWVzdGFtcHMubG9hZCA9IHRpbWU7XG5cbiAgICAgIGlmICh3ZWJjYW1JbWFnZS5pbWFnZURhdGEpIHtcbiAgICAgICAgdGhpcy5zY2FubmVkSW1hZ2VzLnB1c2god2ViY2FtSW1hZ2UpO1xuICAgICAgICB0aGlzLmhhbmRsZUxvbmdWYWxpZGF0aW9uRXJyb3Iod2ViY2FtSW1hZ2UsICd3b3JrZXInKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICBpZiAodGhpcy5zY2FubmVkSW1hZ2VzLmxlbmd0aCA+IDQgJiYgIXRoaXMudmFsaWRhdGlvbikge1xuICAgICAgICBpZiAodGhpcy5zY2FuUHJvdmlkZXIuY29uZmlnLmRldmVsb3BtZW50KSB7XG4gICAgICAgICAgdGhpcy5zY2FubmVkSW1hZ2VzLmZvckVhY2goKGltZykgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29uc29sZUJhY2tncm91bmQgPVxuICAgICAgICAgICAgICBcImZvbnQtc2l6ZToxMDBweDtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ1wiICtcbiAgICAgICAgICAgICAgaW1nLmltYWdlUmVzaXplZCArXG4gICAgICAgICAgICAgIFwiJyk7YmFja2dyb3VuZC1zaXplOiBjb250YWluOyBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1wiO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJyVjICAgICcsIGNvbnNvbGVCYWNrZ3JvdW5kKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyAgIHRoaXMuZnJvbnRJbWFnZSA9IHdlYmNhbUltYWdlLmltYWdlUmVzaXplZDtcblxuICAgICAgICBjb25zb2xlLnRpbWVFbmQoJ3NjYW4nKTtcbiAgICAgICAgY29uc29sZS50aW1lKCdzY2FuJyk7XG4gICAgICAgIC8vIGdldCBsYXN0IDEwXG4gICAgICAgIGNvbnNvbGUubG9nKCdDQVBUVVJFRDonLCB0aGlzLnNjYW5uZWRJbWFnZXMubGVuZ3RoKTtcbiAgICAgICAgY29uc3QgaW1hZ2VzID0gdGhpcy5zY2FubmVkSW1hZ2VzLnNsaWNlKC01KTtcbiAgICAgICAgLy8gc2V0IGltYWdlcyB0byAwXG4gICAgICAgIHRoaXMuc2Nhbm5lZEltYWdlcyA9IFtdO1xuICAgICAgICBjb25zdCBpbWFnZXNBcnJheSA9IGltYWdlcy5tYXAoKG0pID0+IG0uaW1hZ2VSZXNpemVkLnNwbGl0KCcsJylbMV0pO1xuICAgICAgICB0aGlzLnZhbGlkYXRpb24gPSB0cnVlO1xuXG4gICAgICAgIHRoaXMuaGFuZGxlQnVyc3REYXRhKGltYWdlc0FycmF5LCBpbWFnZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuY2FtZXJhUmVhZHkpIHtcbiAgICAgICAgICB0aGlzLnNjYW4oKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVCdXJzdERhdGEoXG4gICAgaW1hZ2VzQXJyYXk6IGFueSxcbiAgICBpbWFnZXM6IGFueSxcbiAgICB0eXBlOiAnd29ya2VyJyB8ICdwbGFpbicgPSAncGxhaW4nXG4gICkge1xuICAgIHRoaXMuX19zdWJzKHRoaXMuc2NhblByb3ZpZGVyLmJ1cnN0KGltYWdlc0FycmF5KSkuc3Vic2NyaWJlKChyZXNwOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuZGlzcGxheUluZm8gPSAnc2NhbmRvYy5pbmZvLmMnICsgcmVzcC5JbmZvQ29kZTtcbiAgICAgIC8vIGNvbnNvbGUudGltZUVuZCgndmFsaWRhdGlvblBPU1QnKTtcbiAgICAgIGNvbnNvbGUubG9nKCdBbmFseXNpc1RpbWUnLCByZXNwLkFuYWx5c2lzVGltZSk7XG4gICAgICBjb25zdCB7IERvY1R5cGUsIFNlcmllcywgU2lkZSwgSW5mb0NvZGUgfSA9IHJlc3A7XG5cbiAgICAgIC8vIGlmIChJbmZvQ29kZSA9PT0gJzEwMDYnICYmIHRoaXMuaWRTY2FuKSB7XG4gICAgICAvLyAgIHRoaXMuaGFuZGxlTG9uZ1ZhbGlkYXRpb25FcnJvcihpbWFnZSk7XG4gICAgICAvLyB9XG5cbiAgICAgIGlmIChyZXNwLlZhbGlkYXRlZCkge1xuICAgICAgICB0aGlzLmRpc3BsYXlJbmZvID0gJyc7XG4gICAgICAgIGNvbnNvbGUubG9nKCdbU0NBTk5FRCBJTkRFWF0nLCByZXNwLkluZGV4KTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJbWFnZSA9IGltYWdlc1tyZXNwLkluZGV4XTtcblxuICAgICAgICAvLyB0aGlzLnByZXZpZXcgPSB0aGlzLndlYmNhbUltYWdlLmltYWdlQXNEYXRhVXJsO1xuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICBsZXQgaW1hZ2UgPSBzZWxlY3RlZEltYWdlO1xuICAgICAgICBpZiAodHlwZSA9PSAnd29ya2VyJykge1xuICAgICAgICAgIGNvbnN0IGRhdGFVcmwgPSB0aGlzLmhhbmRsZUJpdG1hcEltYWdlKHNlbGVjdGVkSW1hZ2UuYml0bWFwKTtcbiAgICAgICAgICBpbWFnZSA9IHsgZGF0YVVybCB9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEluZm9Db2RlID09PSAnMTAwNycpIHtcbiAgICAgICAgICAvLyBGb3IgSUQgYXNrIGZvciBvdGhlciBzaWRlXG4gICAgICAgICAgaWYgKFNpZGUgPT09ICdGUk9OVCcpIHtcbiAgICAgICAgICAgIHRoaXMuc2NhbkJsYXN0RGF0YVswXS5pbWFnZSA9IGltYWdlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNjYW5CbGFzdERhdGFbMV0uaW1hZ2UgPSBpbWFnZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodGhpcy5zY2FuQmxhc3REYXRhWzBdLmltYWdlICYmIHRoaXMuc2NhbkJsYXN0RGF0YVsxXS5pbWFnZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdVUExPQUQnKTtcbiAgICAgICAgICAgIGlmICh0eXBlID09ICd3b3JrZXInKSB7XG4gICAgICAgICAgICAgIHRoaXMuaW1hZ2VIYW5kbGVyLm5leHQoeyB0eXBlOiAnc3RvcCcgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNjYW5CbGFzdEZpbmlzaCgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBudW0gPSBTaWRlID09PSAnRlJPTlQnID8gMSA6IDA7XG4gICAgICAgICAgICB0aGlzLnNjYW5TZWNvbmRTaWRlID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5zaW5nbGVTY2FuKHRoaXMuc2NhbkJsYXN0RGF0YVtudW1dKTtcblxuICAgICAgICAgICAgdGhpcy5pZFNjYW4gPSB0aGlzLnNjYW5CbGFzdERhdGFbbnVtXS5zaWRlO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuc2hvd0RpYWxvZykge1xuICAgICAgICAgICAgICB0aGlzLnNob3dEaWFsb2cgPSB0cnVlO1xuICAgICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5SW5mbyA9ICdzY2FuZG9jLmluZm8udHVybic7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2NhbkJsYXN0RGF0YVswXS5pbWFnZSA9IGltYWdlO1xuICAgICAgICAgIGNvbnNvbGUud2FybignVVBMT0FEJyk7XG4gICAgICAgICAgaWYgKHR5cGUgPT0gJ3dvcmtlcicpIHtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VIYW5kbGVyLm5leHQoeyB0eXBlOiAnc3RvcCcgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2NhbkJsYXN0RmluaXNoKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNjYW5uZWRJbWFnZXMgPSBbXTtcblxuICAgICAgICAvLyB0aGlzLnNjYW5CbGFzdERhdGFbMF0uaW1hZ2UgPSBzZWxlY3RlZEltYWdlO1xuXG4gICAgICAgIC8vdGhpcy5zY2FuQmxhc3RGaW5pc2goKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudmFsaWRhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNjYW4oKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNsb3NlRGlhbG9nKCkge1xuICAgIHRoaXMuc2hvd0RpYWxvZyA9IGZhbHNlO1xuICAgIHRoaXMudmFsaWRhdGlvbiA9IGZhbHNlO1xuXG4gICAgdGhpcy5zY2FuKCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlSW5pdEVycm9yKGVycm9yOiBXZWJjYW1Jbml0RXJyb3IpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gIH1cblxuICBnZXQgc2NhbkJsYXN0Q2FuVXBsb2FkKCkge1xuICAgIHJldHVybiB0aGlzLnNjYW5CbGFzdERhdGFbMF0uaW1hZ2UgPyB0cnVlIDogZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIG1hbnVhbE1vZGUodHlwZTogJ3dvcmtlcicgfCAncGxhaW4nID0gJ3BsYWluJykge1xuICAgIHRoaXMubWFudWFsID0gdHJ1ZTtcbiAgICB0aGlzLnByb21wdE1hbnVhbCA9IGZhbHNlO1xuICAgIHRoaXMuc2NhbkluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICB0aGlzLmNhbWVyYVByb3ZpZGVyLiRzaG93U3dpdGNoLm5leHQoZmFsc2UpO1xuXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUV4dHJhY3Rpb25FcnJvcihkYXRhOiBhbnkpIHtcbiAgICB0aGlzLmxvZ0RhdGEuRXhwZWN0ZWRPdXRwdXQgPSB7fTtcbiAgICAvLyBpZiAodGhpcy5sb2dEYXRhLkV4cGVjdGVkT3V0cHV0Py5fYXZhdGFyKSB7XG4gICAgLy8gICBkZWxldGUgdGhpcy5sb2dEYXRhLkV4cGVjdGVkT3V0cHV0Ll9hdmF0YXI7XG4gICAgLy8gfVxuICAgIC8vIHRoaXMuc2NhblByb3ZpZGVyLnNlbmRMb2codGhpcy5sb2dEYXRhKS5zdWJzY3JpYmUoKTtcblxuICAgIGNvbnNvbGUubG9nKCdMT0cgREFUQScsIHRoaXMubG9nRGF0YSk7XG4gICAgdGhpcy5fX3N1YnModGhpcy5zY2FuUHJvdmlkZXIuc2VuZExvZyh0aGlzLmxvZ0RhdGEpKS5zdWJzY3JpYmUoKTtcbiAgfVxuICBwcml2YXRlIGhhbmRsZUxvbmdWYWxpZGF0aW9uRXJyb3IoXG4gICAgaW1nOiBhbnksXG4gICAgdHlwZTogJ3dvcmtlcicgfCAncGxhaW4nID0gJ3BsYWluJ1xuICApIHtcbiAgICAvLyBzYXZlIGN1cnJlbnQgaW1hZ2UgYWZ0ZXIgMTBzZWNcbiAgICBsZXQgTUFOVUFMX0lOVEVSVkFMID0gdGhpcy5zY2FuUHJvdmlkZXIuY29uZmlnLm1hbnVhbFNjYW5EZWxheTtcbiAgICBjb25zdCBkaWZmID0gKERhdGUubm93KCkgLSB0aGlzLnN0YXJ0VGltZSkgLyAxMDAwO1xuXG4gICAgaWYgKFxuICAgICAgZGlmZiA+IE1BTlVBTF9JTlRFUlZBTCAmJlxuICAgICAgIXRoaXMudmVyaWZpY2F0aW9uRXJyb3JTZW50XG5cbiAgICAgIC8vJiZcbiAgICAgIC8vdGhpcy5zY2FuUHJvdmlkZXIuY29uZmlnLmRldmVsb3BtZW50XG4gICAgKSB7XG4gICAgICB0aGlzLnZlcmlmaWNhdGlvbkVycm9yU2VudCA9IHRydWU7XG4gICAgICBjb25zb2xlLndhcm4oJ1tIQU5ETEUgRVJST1JdJyk7XG5cbiAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAvLyBjb25zdCByZWYgPSB0aGlzLnNuYWNrQmFyLm9wZW4oXG4gICAgICAgIC8vICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnc2NhbmRvYy5tYW51YWwnKSxcbiAgICAgICAgLy8gICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdzY2FuZG9jLnllcycpLFxuICAgICAgICAvLyAgIHtcbiAgICAgICAgLy8gICAgIGR1cmF0aW9uOiAxMDAwMCxcbiAgICAgICAgLy8gICAgIHZpZXdDb250YWluZXJSZWY6IHRoaXMudmlldyxcbiAgICAgICAgLy8gICB9XG4gICAgICAgIC8vICk7XG5cbiAgICAgICAgLy8gdGhpcy5fX3N1YnMocmVmLm9uQWN0aW9uKCkpLnN1YnNjcmliZSgocmVzcCkgPT4ge1xuICAgICAgICAvLyAgIHRoaXMubWFudWFsTW9kZSh0eXBlKTtcbiAgICAgICAgLy8gfSk7XG4gICAgICAgIGlmICghdGhpcy5zY2FuU2Vjb25kU2lkZSkge1xuICAgICAgICAgIGlmICh0aGlzLnNjYW5Qcm92aWRlci5jb25maWcuc2hvd01hbnVhbE1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMucHJvbXB0TWFudWFsID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hY3Rpb25zLmVtaXQoe1xuICAgICAgICAgICAgICB0eXBlOiAnbWFudWFsTW9kZScsXG4gICAgICAgICAgICAgIGRhdGE6IHt9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vICBNQU5VQUxfSU5URVJWQUwgKz0gMTA7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0aGlzLnZlcmlmaWNhdGlvbkVycm9yU2VudCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0YXJ0VGltZSA9IERhdGUubm93KCk7XG5cbiAgICAgICAgLy90aGlzLnByb21wdE1hbnVhbCA9IHRydWU7XG4gICAgICAgIC8vIHRoaXMuZGlhbG9ncy5wcm9tcHRNYW51YWwoKS5zdWJzY3JpYmUoKHJlc3A6IGFueSkgPT4ge1xuICAgICAgICAvLyAgIGNvbnNvbGUud2FybihyZXNwKTtcbiAgICAgICAgLy8gICBpZiAocmVzcCkge1xuICAgICAgICAvLyAgICAgdGhpcy5tYW51YWxNb2RlKHR5cGUpO1xuICAgICAgICAvLyAgIH1cbiAgICAgICAgLy8gICB0aGlzLnN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgICAgIC8vICAgdGhpcy52ZXJpZmljYXRpb25FcnJvclNlbnQgPSBmYWxzZTtcbiAgICAgICAgLy8gfSk7XG4gICAgICB9KTtcbiAgICAgIC8vIHRoaXMudmVyaWZpY2F0aW9uRXJyb3JTZW50ID0gdHJ1ZTtcbiAgICAgIC8vIGNvbnN0IGRhdGFVcmwgPSB0aGlzLmhhbmRsZUJpdG1hcEltYWdlKGltZy5iaXRtYXApO1xuXG4gICAgICAvLyBjb25zb2xlLndhcm4oJ1NFTlQnKTtcbiAgICAgIC8vIC8vICB0aGlzLmRpc3BsYXlJbmZvID0gJ0NhbnQgZGV0ZWN0IGRvY3VtZW50ISc7XG4gICAgICAvLyB0aGlzLmxvZ0RhdGEuUmVxdWVzdCA9IHRoaXMuX19zdWJzKFxuICAgICAgLy8gICB0aGlzLnNjYW5Qcm92aWRlci5zZW5kTG9nKHtcbiAgICAgIC8vICAgICBBY2NlcHRUZXJtc0FuZENvbmRpdGlvbnM6IHRydWUsXG4gICAgICAvLyAgICAgRXhwZWN0ZWRPdXRwdXQ6IHt9LFxuICAgICAgLy8gICAgIFJlcXVlc3Q6IHtcbiAgICAgIC8vICAgICAgIHZlcmlmaWNhdGlvbjogZGF0YVVybC5zcGxpdCgnLCcpWzFdLFxuICAgICAgLy8gICAgIH0sXG4gICAgICAvLyAgICAgUmVzcG9uc2U6IHtcbiAgICAgIC8vICAgICAgIFRyYW5zYWN0aW9uSUQ6IHV1aWR2NCgpLFxuICAgICAgLy8gICAgIH0sXG4gICAgICAvLyAgIH0pXG4gICAgICAvLyApLnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgLy8gIHRoaXMucmVzdWx0ID0gdHJ1ZTtcblxuICAgIHRoaXMuY2FtZXJhUHJvdmlkZXIuJHNob3dTd2l0Y2gubmV4dCh0cnVlKTtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcblxuICAgIC8vIHRoaXMuc2NhblJlc3VsdHMubmV4dCh7IHR5cGU6ICdtb2RlbCcsIGRhdGE6IHt9IH0pO1xuXG4gICAgdGhpcy5fX3N1YnModGhpcy5jYW1lcmFQcm92aWRlci53ZWJjYW1PYnNlcnZhYmxlKS5zdWJzY3JpYmUoKHJlc3ApID0+IHtcbiAgICAgIHRoaXMuY2FtZXJhUmVhZHkgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2NhbkluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2Nhbm5lZEltYWdlcyA9IFtdO1xuICAgIH0pO1xuICAgIHRoaXMuX19zdWJzKHRoaXMuY2FtZXJhUHJvdmlkZXIuc2VsZmllJCkuc3Vic2NyaWJlKChyZXNwKSA9PiB7XG4gICAgICB0aGlzLnNlbGZpZSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5hdXRvU2NhbigpO1xuXG4gICAgdGhpcy5fX3N1YnModGhpcy5sYXlvdXRQcm92aWRlci5icmVha3BvaW50JCkuc3Vic2NyaWJlKCh2OiBhbnkpID0+IHtcbiAgICAgIHRoaXMuaXNNb2JpbGUgPSAhdi5tYXRjaGVzIHx8IHRoaXMucGxhdGZvcm0uSU9TIHx8IHRoaXMucGxhdGZvcm0uQU5EUk9JRDtcbiAgICAgIGNvbnNvbGUubG9nKCdNTk9CSUxFJywgdGhpcy5pc01vYmlsZSk7XG4gICAgfSk7XG5cbiAgICAvLyB0aGlzLmltYWdlSGFuZGxlclN1YnNjcmlwdGlvbiA9IHRoaXMuaW1hZ2VIYW5kbGVyLnN1YnNjcmliZShcbiAgICAvLyAgICh3ZWJjYW1JbWFnZTogYW55KSA9PiB7XG4gICAgLy8gICAgIC8vIHJldHVybjtcbiAgICAvLyAgICAgaWYgKHRoaXMuc3RhcnRUaW1lID09PSAwKSB7XG4gICAgLy8gICAgICAgdGhpcy5zdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIC8vICAgICB9XG5cbiAgICAvLyAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAvLyAgICAgICBpZiAod2ViY2FtSW1hZ2UuYmFzZTY0KSB7XG4gICAgLy8gICAgICAgICBjb25zdCB0aW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG5cbiAgICAvLyAgICAgICAgIGlmICh0aGlzLnNjYW5JbWFnZVRpbWVzdGFtcHMubG9hZCA+IDApIHtcbiAgICAvLyAgICAgICAgICAgY29uc3QgeyBsb2FkIH0gPSB0aGlzLnNjYW5JbWFnZVRpbWVzdGFtcHM7XG4gICAgLy8gICAgICAgICAgIGNvbnN0IGRpZmYgPSB0aW1lIC0gbG9hZDtcbiAgICAvLyAgICAgICAgICAgLy8gY29uc29sZS53YXJuKCdUSU1FJywgZGlmZik7XG4gICAgLy8gICAgICAgICAgIHRoaXMuc2NhbkRlbGF5ID0gZGlmZjtcbiAgICAvLyAgICAgICAgIH1cblxuICAgIC8vICAgICAgICAgdGhpcy5zY2FuSW1hZ2VUaW1lc3RhbXBzLmxvYWQgPSB0aW1lO1xuXG4gICAgLy8gICAgICAgICB0aGlzLnNjYW5uZWRJbWFnZXMucHVzaCh3ZWJjYW1JbWFnZSk7XG4gICAgLy8gICAgICAgICB0aGlzLmhhbmRsZUxvbmdWYWxpZGF0aW9uRXJyb3Iod2ViY2FtSW1hZ2UsICd3b3JrZXInKTtcbiAgICAvLyAgICAgICB9XG5cbiAgICAvLyAgICAgICAvLyB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAvLyAgICAgICBpZiAodGhpcy5zY2FubmVkSW1hZ2VzLmxlbmd0aCA+IDQgJiYgIXRoaXMudmFsaWRhdGlvbikge1xuICAgIC8vICAgICAgICAgLy8gZ2V0IGxhc3QgMTBcbiAgICAvLyAgICAgICAgIGNvbnNvbGUudGltZUVuZCgndmFsaWRhdGlvblRPVEFMX1VJJyk7XG4gICAgLy8gICAgICAgICBjb25zb2xlLnRpbWUoJ3ZhbGlkYXRpb25UT1RBTF9VSScpO1xuICAgIC8vICAgICAgICAgY29uc3QgaW1hZ2VzID0gdGhpcy5zY2FubmVkSW1hZ2VzLnNsaWNlKC01KTtcbiAgICAvLyAgICAgICAgIC8vIHNldCBpbWFnZXMgdG8gMFxuICAgIC8vICAgICAgICAgdGhpcy5zY2FubmVkSW1hZ2VzID0gW107XG4gICAgLy8gICAgICAgICBjb25zb2xlLmxvZyhpbWFnZXMpO1xuXG4gICAgLy8gICAgICAgICBjb25zdCBpbWFnZXNBcnJheSA9IGltYWdlcy5tYXAoKG0pID0+IG0uYmFzZTY0LnNwbGl0KCcsJylbMV0pO1xuICAgIC8vICAgICAgICAgdGhpcy52YWxpZGF0aW9uID0gdHJ1ZTtcblxuICAgIC8vICAgICAgICAgLy8gdGhpcy5oYW5kbGVCdXJzdERhdGEoaW1hZ2VzQXJyYXksIGltYWdlcywgJ3dvcmtlcicpO1xuXG4gICAgLy8gICAgICAgICBjb25zb2xlLnRpbWUoJ3ZhbGlkYXRpb25QT1NUJyk7XG4gICAgLy8gICAgICAgfVxuICAgIC8vICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIC8vICAgICB9KTtcbiAgICAvLyAgIH1cbiAgICAvLyApO1xuICB9XG5cbiAgaGFuZGxlQml0bWFwSW1hZ2UoYml0bWFwOiBhbnkpIHtcbiAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGJpdG1hcDtcblxuICAgIGNvbnN0IG9mZnNjcmVlblNtYWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgb2Zmc2NyZWVuU21hbGwud2lkdGggPSB3aWR0aDtcbiAgICBvZmZzY3JlZW5TbWFsbC5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgY29uc3QgY3R4OiBhbnkgPSBvZmZzY3JlZW5TbWFsbC5nZXRDb250ZXh0KCdiaXRtYXByZW5kZXJlcicpO1xuXG4gICAgaWYgKGN0eCkge1xuICAgICAgY3R4LmltYWdlU21vb3RoaW5nRW5hYmxlZCA9IGZhbHNlO1xuICAgICAgY3R4LnRyYW5zZmVyRnJvbUltYWdlQml0bWFwKGJpdG1hcCk7XG4gICAgICBiaXRtYXAuY2xvc2UoKTtcbiAgICAgIGNvbnN0IGRhdGEgPSBjdHguY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvanBlZycpO1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgYXV0b1NjYW4oKSB7XG4gICAgY29uc3Qgc2lkZSA9IHRoaXMuc2NhbkJsYXN0RGF0YVswXTtcbiAgICB0aGlzLmlkU2NhbiA9IG51bGw7XG4gICAgdGhpcy5zaW5nbGVTY2FuKHNpZGUpO1xuICB9XG5cbiAgc2luZ2xlU2NhbihzaWRlOiBhbnkpIHtcbiAgICB0aGlzLnNjYW5UeXBlID0gc2lkZS5zaWRlO1xuICAgIHRoaXMucHJldmlldyA9IG51bGw7XG4gICAgdGhpcy5zZWxlY3RlZFNpZGUgPSBzaWRlO1xuXG4gICAgdGhpcy5zZWxlY3RlZFNpZGUuaW1hZ2UgPSBudWxsO1xuICAgIHRoaXMuZG9jdW1lbnRUeXBlU2VsZWN0ZWQgPSB0cnVlO1xuICAgIHRoaXMuc2NhbkJsYXN0RGF0YVsxXS5kaXNhYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbWFudWFsU2NhbkRhdGEoZGF0YTogYW55KSB7XG4gICAgY29uc29sZS5sb2coZGF0YSk7XG4gICAgdGhpcy5zY2FuQmxhc3REYXRhID0gZGF0YTtcbiAgICB0aGlzLm1hbnVhbCA9IGZhbHNlO1xuICAgIHRoaXMubWFudWFsRGF0YVNldCA9IHRydWU7XG4gICAgdGhpcy5zY2FuQmxhc3RGaW5pc2goKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SW1nQmFzZTY0KG51bTogYW55KSB7XG4gICAgY29uc29sZS5sb2coJ0dFVCA2NCcpO1xuXG4gICAgaWYgKHRoaXMubWFudWFsRGF0YVNldCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2NhbkJsYXN0RGF0YVtudW1dLmltYWdlLl9pbWFnZUFzRGF0YVVybC5zcGxpdCgnLCcpWzFdO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zY2FuQmxhc3REYXRhW251bV0uaW1hZ2UuZGF0YVVybC5zcGxpdCgnLCcpWzFdO1xuICB9XG4gIHNjYW5CbGFzdEZpbmlzaCgpIHtcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgIHRoaXMuY2FtZXJhUHJvdmlkZXIuJHNob3dTd2l0Y2gubmV4dChmYWxzZSk7XG4gICAgfSk7XG4gICAgY29uc29sZS50aW1lKCd1cGxvYWQnKTtcbiAgICBpZiAodGhpcy50eXBlID09PSAnbW9iaWxlJykge1xuICAgICAgdGhpcy5hY3Rpb25zLmVtaXQoeyBkYXRhOiB0aGlzLnNjYW5CbGFzdERhdGEgfSk7XG4gICAgICB0aGlzLnJldGFrZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmlkU2NhbiA9IG51bGw7XG4gICAgLy8gY29uc3QgbG9hZGluZyA9IHRoaXMuZGlhbG9ncy5sb2FkaW5nKCk7XG4gICAgdGhpcy5zY2FuaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICBjb25zb2xlLnRpbWUoJ3BheWxvYWQnKTtcbiAgICBjb25zdCBwYXlsb2FkOiBhbnkgPSB7XG4gICAgICBBY2NlcHRUZXJtc0FuZENvbmRpdGlvbnM6IHRydWUsXG4gICAgICBEYXRhRmllbGRzOiB7XG4gICAgICAgIEZyb250SW1hZ2VUeXBlOiAnYmFzZTY0JyxcbiAgICAgICAgRnJvbnRJbWFnZUNyb3BwZWQ6IGZhbHNlLFxuICAgICAgICBCYWNrSW1hZ2VUeXBlOiAnYmFzZTY0JyxcbiAgICAgICAgQmFja0ltYWdlQ3JvcHBlZDogZmFsc2UsXG4gICAgICAgIEZyb250SW1hZ2U6IHRoaXMuZ2V0SW1nQmFzZTY0KDApLFxuICAgICAgICBCYWNrSW1hZ2U6IHRoaXMuc2NhbkJsYXN0RGF0YVsxXS5pbWFnZSA/IHRoaXMuZ2V0SW1nQmFzZTY0KDEpIDogbnVsbCxcbiAgICAgIH0sXG4gICAgICBTZXR0aW5nczoge1xuICAgICAgICBTaG91bGRWYWxpZGF0ZTogdHJ1ZSxcbiAgICAgICAgU2hvdWxkUmV0dXJuRG9jdW1lbnRJbWFnZTogdHJ1ZSxcbiAgICAgICAgU2hvdWxkUmV0dXJuRmFjZUlmRGV0ZWN0ZWQ6IHRydWUsXG4gICAgICAgIFNraXBJbWFnZVNpemVDaGVjazogdHJ1ZSxcbiAgICAgICAgQ2FuU3RvcmVJbWFnZXM6IHRoaXMuc2NhblByb3ZpZGVyLmNhblN0b3JlSW1hZ2VzLFxuICAgICAgfSxcbiAgICAgIC8vIENhbGxCYWNrVXJsOiAnaHR0cDovL2RlbW86NTAwMC9yZXBvcnQvZXh0cmFjdGVkLycsXG4gICAgfTtcbiAgICB0aGlzLmZyb250SW1hZ2UgPSAnZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwnICsgcGF5bG9hZC5EYXRhRmllbGRzLkZyb250SW1hZ2U7XG4gICAgdGhpcy5iYWNrSW1hZ2UgPSAnZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwnICsgcGF5bG9hZC5EYXRhRmllbGRzLkJhY2tJbWFnZTtcbiAgICBpZiAoIXRoaXMuc2NhbkJsYXN0RGF0YVsxXS5pbWFnZSkge1xuICAgICAgcGF5bG9hZC5TZXR0aW5ncy5JZ25vcmVCYWNrSW1hZ2UgPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLmxvZ0RhdGEuUmVxdWVzdCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocGF5bG9hZCkpO1xuXG4gICAgY29uc29sZS50aW1lRW5kKCdwYXlsb2FkJyk7XG4gICAgdGhpcy5fX3N1YnMoXG4gICAgICB0aGlzLnNjYW5Qcm92aWRlci5ibGFzdFBvc3QocGF5bG9hZCkucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcigoZTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMubWFudWFsRGF0YVNldCkge1xuICAgICAgICAgICAgLy8gY29uc29sZS53YXJuKCdNQU5VQUwgREFUQSBTRVQnLGUpO1xuICAgICAgICAgICAgdGhpcy5sb2dEYXRhLlJlc3BvbnNlID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShlLmVycm9yKSk7XG5cbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRXh0cmFjdGlvbkVycm9yKHt9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdFRUUnLCBlKTtcbiAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApLnN1YnNjcmliZShcbiAgICAgIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhkYXRhKTtcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGRhdGEuRGF0YTtcbiAgICAgICAgY29uc29sZS50aW1lRW5kKCd1cGxvYWQnKTtcbiAgICAgICAgY29uc29sZS50aW1lKCdwYXJzZScpO1xuICAgICAgICAvLyBkYXRhLkluZm9Db2RlID0gJzEwMDEnO1xuICAgICAgICBjb25zb2xlLnRpbWUoJ3AnKTtcbiAgICAgICAgdGhpcy5sb2dEYXRhLlJlc3BvbnNlID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gICAgICAgIGNvbnNvbGUudGltZUVuZCgncCcpO1xuICAgICAgICAvL2xvYWRpbmcuY2xvc2UoKTtcbiAgICAgICAgdGhpcy5kb2N1bWVudFR5cGVTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuc2NhbmluZyA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChkYXRhLkluZm9Db2RlID09PSAnMTAwMScpIHtcbiAgICAgICAgICB0aGlzLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnW0VSUk9SXSAxMDAxJyk7XG4gICAgICAgICAgdGhpcy5lcnJvckNvZGUgPSAnMTAwMSc7XG4gICAgICAgICAgLy8gdGhpcy5zY2FuU2lkZSA9IDA7XG5cbiAgICAgICAgICB0aGlzLnByZXZpZXcgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YS5JbmZvQ29kZSA9PT0gJzEwMDInKSB7XG4gICAgICAgICAgdGhpcy5lcnJvciA9IHRydWU7XG4gICAgICAgICAgY29uc29sZS5sb2coJ1tFUlJPUl0gMTAwMicpO1xuICAgICAgICAgIHRoaXMuZXJyb3JDb2RlID0gJzEwMDInO1xuICAgICAgICAgIC8vIHRoaXMuc2NhblNpZGUgPSAwO1xuXG4gICAgICAgICAgdGhpcy5wcmV2aWV3ID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc3VsdHMgJiYgZGF0YS5NZXRhZGF0YS5sZW5ndGggPiAwICYmIGRhdGEuSW5mb0NvZGUgPT09ICcxMDAwJykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdFeHRyYWN0aW9uIHRpbWUnLCBkYXRhLkFuYWx5c2lzVGltZSk7XG5cbiAgICAgICAgICAvLyAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG5cbiAgICAgICAgICBjb25zb2xlLnRpbWUoJ3BhcnNlYmxhc3QnKTtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLnNjYW5Qcm92aWRlci5wYXJzZUJsYXN0KHJlc3VsdHMpO1xuICAgICAgICAgIGNvbnNvbGUudGltZUVuZCgncGFyc2VibGFzdCcpO1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdSRVMnLCB0aGlzLnJlc3VsdCk7XG4gICAgICAgICAgLy8gdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgICBjb25zdCBtb2RlbCA9IHJlc3VsdC5tb2RlbDtcblxuICAgICAgICAgIGlmIChkYXRhLkltYWdlRGF0YT8uRmFjZUltYWdlKSB7XG4gICAgICAgICAgICBtb2RlbC5fYXZhdGFyID1cbiAgICAgICAgICAgICAgJ2RhdGE6aW1hZ2UvanBlZztiYXNlNjQsJyArIGRhdGEuSW1hZ2VEYXRhPy5GYWNlSW1hZ2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGRhdGEuSW1hZ2VEYXRhPy5Eb2N1bWVudHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgRG9jdW1lbnRzIH0gPSBkYXRhLkltYWdlRGF0YTtcbiAgICAgICAgICAgIG1vZGVsLmltYWdlcyA9IERvY3VtZW50cy5tYXAoKGltYWdlOiBhbnksIGk6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4geyBkYXRhOiAnZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwnICsgRG9jdW1lbnRzW2ldIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5tb2RlbCA9IG1vZGVsO1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdNT0RFTCcsIHRoaXMubW9kZWwpO1xuXG4gICAgICAgICAgdGhpcy5hY3Rpb25zLmVtaXQoe1xuICAgICAgICAgICAgdHlwZTogJ3NjYW5GaW5pc2gnLFxuICAgICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgICByZXN1bHRzLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZXN1bHQgPSB0cnVlO1xuICAgICAgICAgICAgY29uc29sZS50aW1lKCdmZicpO1xuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgICAgIHRoaXMuc2NhblJlc3VsdHMubmV4dCh7IHR5cGU6ICdtb2RlbCcsIGRhdGE6IG1vZGVsIH0pO1xuICAgICAgICAgICAgLy8gdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAvLyAgfSk7XG4gICAgICAgICAgICBjb25zb2xlLnRpbWVFbmQoJ2ZmJyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ0VSUk9SJyk7XG4gICAgICAgICAgaWYgKHRoaXMubWFudWFsRGF0YVNldCkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVFeHRyYWN0aW9uRXJyb3IoZGF0YSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIHRoaXMuc2NhblNpZGUgPSAwO1xuICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lcnJvciA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnByZXZpZXcgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgLy8gdGhpcy5kb2N1bWVudFR5cGVTZWxlY3RlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgLy8gdGhpcy5yZXRyeSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIGNvbnNvbGUudGltZUVuZCgncGFyc2UnKTtcbiAgICAgIH0sXG4gICAgICAoZXJyKSA9PiB7XG4gICAgICAgIC8vIGxvYWRpbmcuY2xvc2UoKTtcbiAgICAgICAgLy8gdGhpcy5zY2FuU2lkZSA9IDA7XG4gICAgICAgIHRoaXMuZXJyb3IgPSB0cnVlO1xuICAgICAgICB0aGlzLnByZXZpZXcgPSB0cnVlO1xuICAgICAgICB0aGlzLmRvY3VtZW50VHlwZVNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zY2FuaW5nID0gZmFsc2U7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHJldHJ5KCkge1xuICAgIHRoaXMucHJldmlldyA9IGZhbHNlO1xuICAgIHRoaXMudmFsaWRhdGlvbiA9IGZhbHNlO1xuICAgIHRoaXMuZXJyb3JDb2RlID0gJzEwMDAnO1xuICAgIHRoaXMucmVzdWx0ID0gZmFsc2U7XG4gICAgdGhpcy5pZFNjYW4gPSBudWxsO1xuICAgIHRoaXMuY2FtZXJhUHJvdmlkZXIuJHNob3dTd2l0Y2gubmV4dCh0cnVlKTtcbiAgICBpZiAodGhpcy5lcnJvcikge1xuICAgICAgdGhpcy5kb2N1bWVudFR5cGVTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5zY2FuQmxhc3REYXRhLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICBlbGVtZW50LmltYWdlID0gbnVsbDtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmVycm9yID0gZmFsc2U7XG4gICAgdGhpcy5zdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMuYXV0b1NjYW4oKTtcbiAgICB0aGlzLnNjYW4oKTtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyByZXRha2UoKSB7XG4gICAgdGhpcy52YWxpZGF0aW9uID0gZmFsc2U7XG4gICAgdGhpcy5wcmV2aWV3ID0gZmFsc2U7XG4gICAgdGhpcy5lcnJvciA9IGZhbHNlO1xuICAgIHRoaXMucmVzdWx0ID0gZmFsc2U7XG4gICAgdGhpcy5zY2FuU2lkZSA9IDA7XG4gICAgdGhpcy5jYW1lcmFQcm92aWRlci4kc2hvd1N3aXRjaC5uZXh0KHRydWUpO1xuICAgIHRoaXMuaW1hZ2VWZXJpZmllZCA9IGZhbHNlO1xuICAgIHRoaXMuc2NhbkRhdGFzID0gW107XG4gICAgdGhpcy5zY2FuaW5nID0gZmFsc2U7XG4gICAgdGhpcy5pbWFnZXMgPSBbXTtcbiAgICB0aGlzLnNjYW5JblByb2dyZXNzID0gZmFsc2U7XG4gICAgdGhpcy5zdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMuaWRTY2FuID0gbnVsbDtcbiAgICB0aGlzLmRvY3VtZW50VHlwZVNlbGVjdGVkID0gZmFsc2U7XG4gICAgdGhpcy5zY2FuQmxhc3REYXRhLmZvckVhY2goKG06IGFueSkgPT4ge1xuICAgICAgbS5pbWFnZSA9IG51bGw7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNjYW5TZWNvbmRTaWRlID0gZmFsc2U7XG5cbiAgICB0aGlzLmF1dG9TY2FuKCk7XG5cbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHVzZSgpIHtcbiAgICAvLyBzYXZlIGltYWdlcz8/XG5cbiAgICBpZiAodGhpcy5zY2FuUHJvdmlkZXIuY2FuU3RvcmVJbWFnZXMpIHtcbiAgICAgIHRoaXMubG9nRGF0YS5FeHBlY3RlZE91dHB1dCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5tb2RlbCkpO1xuICAgICAgaWYgKHRoaXMubG9nRGF0YS5FeHBlY3RlZE91dHB1dD8uX2F2YXRhcikge1xuICAgICAgICBkZWxldGUgdGhpcy5sb2dEYXRhLkV4cGVjdGVkT3V0cHV0Ll9hdmF0YXI7XG4gICAgICB9XG4gICAgICB0aGlzLl9fc3Vicyh0aGlzLnNjYW5Qcm92aWRlci5zZW5kTG9nKHRoaXMubG9nRGF0YSkpLnN1YnNjcmliZSgpO1xuICAgICAgY29uc29sZS5sb2codGhpcy5sb2dEYXRhKTtcbiAgICB9XG5cbiAgICB0aGlzLmFjdGlvbnMuZW1pdCh7XG4gICAgICB0eXBlOiAnc2NhbkRhdGFDbG9zZScsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIG1vZGVsOiB0aGlzLm1vZGVsLFxuICAgICAgICBpbWFnZXM6IHRoaXMuaW1hZ2VzLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBzZWxmaWUoKSB7XG4gICAgY29uc3QgYXZhdGFyID0gdGhpcy5tb2RlbD8uX2F2YXRhcjtcbiAgICB0aGlzLmRpYWxvZ3NcbiAgICAgIC5zY2FuU2VsZmllKHsgYXZhdGFyIH0pXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgLnN1YnNjcmliZSgocmVzcDogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXNwKSB7XG4gICAgICAgICAgY29uc29sZS5sb2cocmVzcCk7XG4gICAgICAgICAgaWYgKHRoaXMuc2NhblByb3ZpZGVyLmVuYWJsZVZlcmlmaWNhdGlvbikge1xuICAgICAgICAgICAgdGhpcy5pbWFnZVZlcmlmaWVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5zY2FuUmVzdWx0cy5uZXh0KHtcbiAgICAgICAgICAgIHR5cGU6ICdhdmF0YXInLFxuICAgICAgICAgICAgZGF0YTogcmVzcC5pbWFnZUFzRGF0YVVybCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICAvLyB0aGlzLm1vZGVsLl9hdmF0YXIgPSByZXNwLmltYWdlQXNEYXRhVXJsO1xuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIGNhbWVyYU9mZihldjogYW55KSB7XG4gICAgdGhpcy5jYW1lcmFSZWFkeSA9IGZhbHNlO1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgdmlkZW9SZWFkeShldmVudDogYm9vbGVhbikge1xuICAgIGNvbnNvbGUubG9nKCdSRUFEWScsIGV2ZW50KTtcbiAgICB0aGlzLmNhbWVyYVJlYWR5ID0gZXZlbnQ7XG4gICAgaWYgKHRoaXMuY2FtZXJhUmVhZHkgJiYgIXRoaXMuc2NhbkluUHJvZ3Jlc3MgJiYgIXRoaXMubWFudWFsKSB7XG4gICAgICB0aGlzLnNjYW5JblByb2dyZXNzID0gdHJ1ZTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnNjYW4oKTtcbiAgICAgIH0sIDIwKTtcbiAgICB9XG4gIH1cblxuICBtYW51YWxTZXQoa2V5OiBib29sZWFuKSB7XG4gICAgaWYgKGtleSkge1xuICAgICAgdGhpcy5tYW51YWxNb2RlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHJvbXB0TWFudWFsID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2NhblRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNjYW5UaW1lb3V0KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaW1hZ2VIYW5kbGVyU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmltYWdlSGFuZGxlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKCdERVNUUk9YWScpO1xuXG4gICAgdGhpcy5fX2Rlc3Ryb3koKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lclxuICAqbmdJZj1cImNhbWVyYVByb3ZpZGVyLnJlY3RQb3NpdGlvbi50ID4gMCAmJiBkaXNwbGF5SW5mbyAmJiAhcmVzdWx0ICYmICFtYW51YWxcIlxuPlxuICA8ZGl2IGNsYXNzPVwiaGludFwiIFtuZ1N0eWxlXT1cInsgdG9wOiBjYW1lcmFQcm92aWRlci5oaW50UG9zaXRpb24gKyAncHgnIH1cIj5cbiAgICA8c3BhbiBjbGFzcz1cInRleHRcIj5cbiAgICAgIHt7IGRpc3BsYXlJbmZvIHwgdHJhbnNsYXRlIH19XG4gICAgPC9zcGFuPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0RpYWxvZ1wiPlxuICA8ZGl2IGNsYXNzPVwicGFnZVR1cm5cIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImlubmVyXCI+XG4gICAgICAgIDxtYXQtaWNvbj4zNjA8L21hdC1pY29uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpZFNjYW4gPT09ICdCQUNLJ1wiPlxuICAgICAgICAgICAge3sgXCJzY2FuZG9jLnR1cm5BbmRDYXB0dXJlLmJhY2tcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpZFNjYW4gPT09ICdGUk9OVCdcIj5cbiAgICAgICAgICAgIHt7IFwic2NhbmRvYy50dXJuQW5kQ2FwdHVyZS5mcm9udFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8Zm9vdGVyPlxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjbG9zZURpYWxvZygpXCIgbWF0LXJhaXNlZC1idXR0b24+T2s8L2J1dHRvbj5cbiAgICAgIDwvZm9vdGVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwicHJvbXB0TWFudWFsXCI+XG4gIDxkaXYgY2xhc3M9XCJtYW51YWxNb2RlXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbm5lclwiPlxuICAgICAgICA8bWF0LWljb24+c2NyZWVuc2hvdF9rZXlib2FyZDwvbWF0LWljb24+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0XCI+XG4gICAgICAgICAge3sgXCJzY2FuZG9jLm1hbnVhbFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8Zm9vdGVyPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDhweFwiXG4gICAgICAgICAgKGNsaWNrKT1cIm1hbnVhbFNldCh0cnVlKVwiXG4gICAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgPlxuICAgICAgICAgIHt7IFwic2NhbmRvYy55ZXNcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDhweFwiXG4gICAgICAgICAgKGNsaWNrKT1cIm1hbnVhbFNldChmYWxzZSlcIlxuICAgICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgID5cbiAgICAgICAgICB7eyBcInNjYW5kb2Mubm9cIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZm9vdGVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlc3VsdFwiPlxuICA8c2VjdGlvbj5cbiAgICA8bmd4LXNjYW4tcmVzdWx0c1xuICAgICAgKGFjdGlvbik9XCJzZWxmaWUoKVwiXG4gICAgICBbZm9ybV09XCJmb3JtXCJcbiAgICAgIFtkYXRhXT1cInNjYW5SZXN1bHRzXCJcbiAgICA+PC9uZ3gtc2Nhbi1yZXN1bHRzPlxuXG4gICAgPGZvb3Rlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJtci00XCIgbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cInJldGFrZSgpXCI+XG4gICAgICAgICAge3sgXCJzY2FuZG9jLnJlVGFrZVwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImVycm9yIHx8IGZvcm0uaW52YWxpZFwiXG4gICAgICAgICAgY2xhc3M9XCJtbC00XCJcbiAgICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgICAgIChjbGljayk9XCJ1c2UoKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBcInNjYW5kb2MudXNlRGF0YVwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9mb290ZXI+XG4gIDwvc2VjdGlvbj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwibWFudWFsXCI+XG4gIDxzZWN0aW9uPlxuICAgIDxuZ3gtbWFudWFsLXNjYW4gKGFjdGlvbik9XCJtYW51YWxTY2FuRGF0YSgkZXZlbnQpXCI+PC9uZ3gtbWFudWFsLXNjYW4+XG4gIDwvc2VjdGlvbj5cbjwvbmctY29udGFpbmVyPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFyZXN1bHQgJiYgZG9jdW1lbnRUeXBlU2VsZWN0ZWQgJiYgIW1hbnVhbFwiPlxuICA8c2VjdGlvbj5cbiAgICA8ZGl2ICN3cmFwZXIgY2xhc3M9XCJ3cmFwZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJsb2FkaW5nXCIgKm5nSWY9XCIoIWNhbWVyYVJlYWR5ICYmICFwcmV2aWV3KSB8fCBzY2FuaW5nXCI+XG4gICAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIG1vZGU9XCJpbmRldGVybWluYXRlXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZXJyb3JcIj5cbiAgICAgICAgPG5neC1zY2FuZG9jLXdlYmNhbVxuICAgICAgICAgICpuZ0lmPVwiIXByZXZpZXcgJiYgIXNjYW5pbmdcIlxuICAgICAgICAgIGNsYXNzPVwibWFpblwiXG4gICAgICAgICAgI3dlYmNhbVxuICAgICAgICAgIHR5cGU9XCJkb2N1bWVudFwiXG4gICAgICAgICAgW3RyaWdnZXJdPVwidHJpZ2dlclwiXG4gICAgICAgICAgW2ltYWdlSGFuZGxlcl09XCJpbWFnZUhhbmRsZXJcIlxuICAgICAgICAgIChpbWFnZUNhcHR1cmUpPVwiaGFuZGxlSW1hZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgKGluaXRFcnJvcik9XCJoYW5kbGVJbml0RXJyb3IoJGV2ZW50KVwiXG4gICAgICAgICAgKGRlc3Ryb3llZCk9XCJjYW1lcmFPZmYoJGV2ZW50KVwiXG4gICAgICAgICAgKHZpZGVvUmVhZHkpPVwidmlkZW9SZWFkeSgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICA8L25neC1zY2FuZG9jLXdlYmNhbT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInByZXZpZXdEYXRhXCJcbiAgICAgICAgKm5nSWY9XCJwcmV2aWV3XCJcbiAgICAgICAgc3R5bGU9XCJcbiAgICAgICAgICB6LWluZGV4OiAyMDtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLTE2IGVycm9yXCIgKm5nSWY9XCJlcnJvclwiPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uPmVycm9yX291dGxpbmU8L21hdC1pY29uXG4gICAgICAgICAgICAgID48c3BhbiBjbGFzcz1cIm1sLThcIj57e1xuICAgICAgICAgICAgICAgIFwic2NhbmRvYy51bmFibGVUb0RldGVjdElkXCIgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVycm9yQ29kZSA9PT0gJzEwMDEnXCI+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAge3sgXCJzY2FuZG9jLmV4dHJhY3Rpb24uYzEwMDFcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVycm9yQ29kZSA9PT0gJzEwMDInXCI+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAge3sgXCJzY2FuZG9jLmV4dHJhY3Rpb24uYzEwMDJcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8dWwgKm5nSWY9XCJlcnJvckNvZGUgPT09ICcxMDAwJ1wiPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAge3sgXCJzY2FuZG9jLnBsYWNlSWRDbG9zZVRvRGV2aWNlXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIHt7IFwic2NhbmRvYy5lbnN1cmVTdWZmaWNpZW50TGlnaHRcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAge3sgXCJzY2FuZG9jLmhvbGREb2N1bWVudFN0ZWFkeVwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICB7eyBcInNjYW5kb2MubWFrZVN1cmVBbGxFZGdlc09mVGhlSWRBcmVWaXNpYmxlXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICBcInNjYW5kb2MubWFrZVN1cmVUaGVyZUFyZU5vR2xhcmVBbmRTaGFkb3dzT25UaGVJZFwiIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzY2FuUHJldmlld1wiICpuZ0lmPVwiIWVycm9yICYmICFzY2FuaW5nXCI+XG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwicHktMTZcIiBzdHlsZT1cImZvbnQtc2l6ZTogMTZweFwiPlxuICAgICAgICAgIHt7XG4gICAgICAgICAgICBcInNjYW5kb2MuZW5zdXJlQWxsVGV4dHNBcmVWaXNpYmxlXCJcbiAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICB9fVxuICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJpbWFnZVwiXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1pbWFnZV09XCIndXJsKCcgKyBwcmV2aWV3ICsgJyknXCJcbiAgICAgICAgICA+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8Zm9vdGVyICpuZ0lmPVwicHJldmlld1wiPlxuICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZGlzcGxheUluZm9cIiAqbmdJZj1cIiFwcmV2aWV3ICYmIGNhbWVyYVJlYWR5XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlzcGxheUluZm9cIj5cbiAgICAgICAge3sgZGlzcGxheUluZm8gfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PiAtLT5cbiAgICAgIDwhLS0gPGRpdiBzdHlsZT1cImhlaWdodDogMjZweFwiPlxuICAgICAgPGRpdlxuICAgICAgICBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjsgZm9udC1zaXplOiAxOHB4XCJcbiAgICAgICAgKm5nSWY9XCJpZFNjYW4gJiYgIXByZXZpZXcgJiYgY2FtZXJhUmVhZHlcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaWRTY2FuID09PSAnQkFDSydcIj5cbiAgICAgICAgICBUdXJuIGRvY3VtZW50IGFuZDpcbiAgICAgICAgICB7eyBcInNjYW5kb2MuY2FwdHVyZUJhY2tcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlkU2NhbiA9PT0gJ0ZST05UJ1wiPlxuICAgICAgICAgIFR1cm4gZG9jdW1lbnQgYW5kOlxuICAgICAgICAgIHt7IFwic2NhbmRvYy5jYXB0dXJlRnJvbnRcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PiAtLT5cblxuICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIiAqbmdJZj1cInByZXZpZXdcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1yLTRcIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwicmV0cnkoKVwiPlxuICAgICAgICAgIHt7IFwic2NhbmRvYy5yZXRyeVwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZXJyb3JcIlxuICAgICAgICAgIGNsYXNzPVwibWwtNFwiXG4gICAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgICAoY2xpY2spPVwiY29udGludWUoKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBcInNjYW5kb2MuY29udGludWVXaXRoU2VsZWN0ZWRJbWFnZVwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9mb290ZXI+XG4gIDwvc2VjdGlvbj5cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -24,7 +24,6 @@ export class HttpErrorInterceptor {
24
24
  return next.handle(req);
25
25
  }
26
26
  }
27
- console.log('AUTH II');
28
27
  this.inflightAuthRequest = authProvider.accesToken;
29
28
  return this.inflightAuthRequest.pipe(share(), switchMap((token) => {
30
29
  // unset request inflight
@@ -74,4 +73,4 @@ HttpErrorInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0",
74
73
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HttpErrorInterceptor, decorators: [{
75
74
  type: Injectable
76
75
  }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJjZXB0b3IucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvcHJvdmlkZXJzL2ludGVyY2VwdG9yLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxXQUFXLEdBR1osTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUcvQyxNQUFNLE9BQU8sb0JBQW9CO0lBRy9CLFlBQW9CLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7SUFBRyxDQUFDO0lBRTFDLFNBQVMsQ0FDUCxHQUFxQixFQUNyQixJQUFpQjtRQUVqQix1QkFBdUI7UUFDdkIsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3BFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtRQUVELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXJELElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUU7WUFDcEMsTUFBTSxLQUFLLEdBQ1QsWUFBWSxDQUFDLE1BQU0sQ0FBQyxZQUFZO2lCQUM3QixHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDZCxPQUFPLEdB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SztTQUNyQixDQUFDLENBQUM7SUFDTCxDQUFDOztpSEFwRlUsb0JBQW9CO3FIQUFwQixvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEh0dHBFdmVudCxcbiAgSHR0cEhhbmRsZXIsXG4gIEh0dHBIZWFkZXJzLFxuICBIdHRwSW50ZXJjZXB0b3IsXG4gIEh0dHBSZXF1ZXN0LFxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgc2hhcmUsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEF1dGhQcm92aWRlciB9IGZyb20gJy4vYXV0aC5wcm92aWRlcic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBIdHRwRXJyb3JJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG4gIGluZmxpZ2h0QXV0aFJlcXVlc3QhOiBPYnNlcnZhYmxlPGFueT4gfCBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuXG4gIGludGVyY2VwdChcbiAgICByZXE6IEh0dHBSZXF1ZXN0PGFueT4sXG4gICAgbmV4dDogSHR0cEhhbmRsZXJcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgIC8vY29uc29sZS5sb2cocmVxLnVybCk7XG4gICAgaWYgKHJlcS51cmwuaW5kZXhPZignL2tzLycpID49IDAgfHwgcmVxLnVybC5pbmRleE9mKCcvYXNzZXRzLycpID49IDApIHtcbiAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpO1xuICAgIH1cblxuICAgIGNvbnN0IGF1dGhQcm92aWRlciA9IHRoaXMuaW5qZWN0b3IuZ2V0KEF1dGhQcm92aWRlcik7XG5cbiAgICBpZiAoYXV0aFByb3ZpZGVyLmNvbmZpZy52YWxpZERvbWFpbnMpIHtcbiAgICAgIGNvbnN0IHZhbGlkID1cbiAgICAgICAgYXV0aFByb3ZpZGVyLmNvbmZpZy52YWxpZERvbWFpbnNcbiAgICAgICAgICAubWFwKChkb21haW4pID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZXEudXJsLmluZGV4T2YoZG9tYWluKSA+PSAwO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmZpbHRlcigobSkgPT4gbSkubGVuZ3RoID4gMDtcbiAgICAgIGlmICghdmFsaWQpIHtcbiAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coJ0FVVEggSUknKTtcbiAgICB0aGlzLmluZmxpZ2h0QXV0aFJlcXVlc3QgPSBhdXRoUHJvdmlkZXIuYWNjZXNUb2tlbjtcblxuICAgIHJldHVybiB0aGlzLmluZmxpZ2h0QXV0aFJlcXVlc3QucGlwZShcbiAgICAgIHNoYXJlKCksXG4gICAgICBzd2l0Y2hNYXAoKHRva2VuOiBzdHJpbmcpID0+IHtcbiAgICAgICAgLy8gdW5zZXQgcmVxdWVzdCBpbmZsaWdodFxuICAgICAgICB0aGlzLmluZmxpZ2h0QXV0aFJlcXVlc3QgPSBudWxsO1xuXG4gICAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gcmVxLmhlYWRlcnMuZ2V0KCdUcmFuc2FjdGlvbklEJyk7XG4gICAgICAgIGNvbnN0IGF1dGhSZXEgPSByZXEuY2xvbmUoe1xuICAgICAgICAgIGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycyh0b2tlbiwgdHJhbnNhY3Rpb24gfHwgJycpLFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUoYXV0aFJlcSk7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycjogYW55KSA9PiB7XG4gICAgICAgIGxldCB0b2tlbkV4cGlyZWQgPSBmYWxzZTtcbiAgICAgICAgaWYgKGVyci5lcnJvcnMpIHtcbiAgICAgICAgICBjb25zdCBmaW5kID0gZXJyLmVycm9zLmZpbmQoXG4gICAgICAgICAgICAoZXM6IHN0cmluZykgPT4gZXMuaW5kZXhPZignSW52YWxpZCB0b2tlbicpID4gLTFcbiAgICAgICAgICApO1xuICAgICAgICAgIHRva2VuRXhwaXJlZCA9IGZpbmQgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5sb2coZXJyKTtcblxuICAgICAgICBpZiAoZXJyLnN0YXR1cyA9PT0gNDAxIHx8IGVyci5zdGF0dXMgPT09IDQwMyB8fCB0b2tlbkV4cGlyZWQpIHtcbiAgICAgICAgICByZXR1cm4gYXV0aFByb3ZpZGVyLnJlZnJlc2hUb2tlbigpLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKHRva2VuKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gcmVxLmhlYWRlcnMuZ2V0KCdUcmFuc2FjdGlvbklEJyk7XG4gICAgICAgICAgICAgIGNvbnN0IGF1dGhSZXEgPSByZXEuY2xvbmUoe1xuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycyh0b2tlbiwgdHJhbnNhY3Rpb24gfHwgJycpLFxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUoYXV0aFJlcSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRIZWFkZXJzKHRva2VuOiBzdHJpbmcsIFRyYW5zYWN0aW9uSUQ6IHN0cmluZykge1xuICAgIGlmIChUcmFuc2FjdGlvbklEKSB7XG4gICAgICByZXR1cm4gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgQXV0aG9yaXphdGlvbjogdG9rZW4sXG4gICAgICAgIFRyYW5zYWN0aW9uSUQsXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgQXV0aG9yaXphdGlvbjogdG9rZW4sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJjZXB0b3IucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvcHJvdmlkZXJzL2ludGVyY2VwdG9yLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxXQUFXLEdBR1osTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUcvQyxNQUFNLE9BQU8sb0JBQW9CO0lBRy9CLFlBQW9CLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7SUFBRyxDQUFDO0lBRTFDLFNBQVMsQ0FDUCxHQUFxQixFQUNyQixJQUFpQjtRQUVqQix1QkFBdUI7UUFDdkIsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3BFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtRQUVELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXJELElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUU7WUFDcEMsTUFBTSxLQUFLLEdBQ1QsWUFBWSxDQUFDLE1BQU0sQ0FBQyxZQUFZO2lCQUM3QixHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDZCxPQUFPLEdB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QjtxSEFBcEIsb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBIdHRwRXZlbnQsXG4gIEh0dHBIYW5kbGVyLFxuICBIdHRwSGVhZGVycyxcbiAgSHR0cEludGVyY2VwdG9yLFxuICBIdHRwUmVxdWVzdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHNoYXJlLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBdXRoUHJvdmlkZXIgfSBmcm9tICcuL2F1dGgucHJvdmlkZXInO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSHR0cEVycm9ySW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuICBpbmZsaWdodEF1dGhSZXF1ZXN0ITogT2JzZXJ2YWJsZTxhbnk+IHwgbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge31cblxuICBpbnRlcmNlcHQoXG4gICAgcmVxOiBIdHRwUmVxdWVzdDxhbnk+LFxuICAgIG5leHQ6IEh0dHBIYW5kbGVyXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICAvL2NvbnNvbGUubG9nKHJlcS51cmwpO1xuICAgIGlmIChyZXEudXJsLmluZGV4T2YoJy9rcy8nKSA+PSAwIHx8IHJlcS51cmwuaW5kZXhPZignL2Fzc2V0cy8nKSA+PSAwKSB7XG4gICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKTtcbiAgICB9XG5cbiAgICBjb25zdCBhdXRoUHJvdmlkZXIgPSB0aGlzLmluamVjdG9yLmdldChBdXRoUHJvdmlkZXIpO1xuXG4gICAgaWYgKGF1dGhQcm92aWRlci5jb25maWcudmFsaWREb21haW5zKSB7XG4gICAgICBjb25zdCB2YWxpZCA9XG4gICAgICAgIGF1dGhQcm92aWRlci5jb25maWcudmFsaWREb21haW5zXG4gICAgICAgICAgLm1hcCgoZG9tYWluKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVxLnVybC5pbmRleE9mKGRvbWFpbikgPj0gMDtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5maWx0ZXIoKG0pID0+IG0pLmxlbmd0aCA+IDA7XG4gICAgICBpZiAoIXZhbGlkKSB7XG4gICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpO1xuICAgICAgfVxuICAgIH1cblxuXG4gICAgdGhpcy5pbmZsaWdodEF1dGhSZXF1ZXN0ID0gYXV0aFByb3ZpZGVyLmFjY2VzVG9rZW47XG5cbiAgICByZXR1cm4gdGhpcy5pbmZsaWdodEF1dGhSZXF1ZXN0LnBpcGUoXG4gICAgICBzaGFyZSgpLFxuICAgICAgc3dpdGNoTWFwKCh0b2tlbjogc3RyaW5nKSA9PiB7XG4gICAgICAgIC8vIHVuc2V0IHJlcXVlc3QgaW5mbGlnaHRcbiAgICAgICAgdGhpcy5pbmZsaWdodEF1dGhSZXF1ZXN0ID0gbnVsbDtcblxuICAgICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IHJlcS5oZWFkZXJzLmdldCgnVHJhbnNhY3Rpb25JRCcpO1xuICAgICAgICBjb25zdCBhdXRoUmVxID0gcmVxLmNsb25lKHtcbiAgICAgICAgICBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnModG9rZW4sIHRyYW5zYWN0aW9uIHx8ICcnKSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKGF1dGhSZXEpO1xuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKChlcnI6IGFueSkgPT4ge1xuICAgICAgICBsZXQgdG9rZW5FeHBpcmVkID0gZmFsc2U7XG4gICAgICAgIGlmIChlcnIuZXJyb3JzKSB7XG4gICAgICAgICAgY29uc3QgZmluZCA9IGVyci5lcnJvcy5maW5kKFxuICAgICAgICAgICAgKGVzOiBzdHJpbmcpID0+IGVzLmluZGV4T2YoJ0ludmFsaWQgdG9rZW4nKSA+IC0xXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0b2tlbkV4cGlyZWQgPSBmaW5kID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKGVycik7XG5cbiAgICAgICAgaWYgKGVyci5zdGF0dXMgPT09IDQwMSB8fCBlcnIuc3RhdHVzID09PSA0MDMgfHwgdG9rZW5FeHBpcmVkKSB7XG4gICAgICAgICAgcmV0dXJuIGF1dGhQcm92aWRlci5yZWZyZXNoVG9rZW4oKS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKCh0b2tlbikgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IHJlcS5oZWFkZXJzLmdldCgnVHJhbnNhY3Rpb25JRCcpO1xuICAgICAgICAgICAgICBjb25zdCBhdXRoUmVxID0gcmVxLmNsb25lKHtcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnModG9rZW4sIHRyYW5zYWN0aW9uIHx8ICcnKSxcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKGF1dGhSZXEpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycik7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SGVhZGVycyh0b2tlbjogc3RyaW5nLCBUcmFuc2FjdGlvbklEOiBzdHJpbmcpIHtcbiAgICBpZiAoVHJhbnNhY3Rpb25JRCkge1xuICAgICAgcmV0dXJuIG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIEF1dGhvcml6YXRpb246IHRva2VuLFxuICAgICAgICBUcmFuc2FjdGlvbklELFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgIEF1dGhvcml6YXRpb246IHRva2VuLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -2394,6 +2394,15 @@ class ScanComponent extends BaseComponent {
2394
2394
  load: 0,
2395
2395
  };
2396
2396
  this.scanProvider = this.injector.get(ScanProvider);
2397
+ if (!this.scanProvider.config.development) {
2398
+ // console = {
2399
+ // log: (...args: any) => {},
2400
+ // time: (...args: any) => {},
2401
+ // timeEnd: (...args: any) => {},
2402
+ // warn: (...args: any) => {},
2403
+ // error: (...args: any) => {},
2404
+ // };
2405
+ }
2397
2406
  }
2398
2407
  get class() {
2399
2408
  return this.isMobile;
@@ -2451,12 +2460,14 @@ class ScanComponent extends BaseComponent {
2451
2460
  }
2452
2461
  this.cd.detectChanges();
2453
2462
  if (this.scannedImages.length > 4 && !this.validation) {
2454
- this.scannedImages.forEach((img) => {
2455
- const consoleBackground = "font-size:100px;background-image: url('" +
2456
- img.imageResized +
2457
- "');background-size: contain; background-repeat: no-repeat;";
2458
- console.log('%c ', consoleBackground);
2459
- });
2463
+ if (this.scanProvider.config.development) {
2464
+ this.scannedImages.forEach((img) => {
2465
+ const consoleBackground = "font-size:100px;background-image: url('" +
2466
+ img.imageResized +
2467
+ "');background-size: contain; background-repeat: no-repeat;";
2468
+ console.log('%c ', consoleBackground);
2469
+ });
2470
+ }
2460
2471
  // this.frontImage = webcamImage.imageResized;
2461
2472
  console.timeEnd('scan');
2462
2473
  console.time('scan');
@@ -3959,7 +3970,6 @@ class HttpErrorInterceptor {
3959
3970
  return next.handle(req);
3960
3971
  }
3961
3972
  }
3962
- console.log('AUTH II');
3963
3973
  this.inflightAuthRequest = authProvider.accesToken;
3964
3974
  return this.inflightAuthRequest.pipe(share(), switchMap((token) => {
3965
3975
  // unset request inflight