@doolehealth/service-lib 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,12 +5,15 @@ import moment from 'moment';
5
5
  import { DatePipe } from '@angular/common';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "./language.service";
8
+ import * as i2 from "@ngx-translate/core";
8
9
  highchartsMore(HighCharts);
9
10
  export class HighchartsService {
10
- constructor(languageService) {
11
+ constructor(languageService, translate) {
11
12
  this.languageService = languageService;
13
+ this.translate = translate;
12
14
  this.weekdaysES = ['Domingo', 'Lunes', 'Martes', 'Miercoles', 'Jueves', 'Viernes', 'Sábado'];
13
15
  this.weekdaysCA = ['Diumenge', 'Dilluns', 'Dimarts', 'Dimecres', 'Dijous', 'Divendres', 'Dissabte'];
16
+ this.weeksDay = [];
14
17
  this.graphData = [];
15
18
  this.series = [];
16
19
  this.withTooltip = false;
@@ -579,7 +582,7 @@ export class HighchartsService {
579
582
  this.setYAxis(minY, maxY, ranges, units);
580
583
  this.setSeries(name, graphData, pointWidth);
581
584
  }
582
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HighchartsService, deps: [{ token: i1.LanguageService }], target: i0.ɵɵFactoryTarget.Injectable }); }
585
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HighchartsService, deps: [{ token: i1.LanguageService }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
583
586
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HighchartsService, providedIn: 'root' }); }
584
587
  }
585
588
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HighchartsService, decorators: [{
@@ -587,5 +590,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
587
590
  args: [{
588
591
  providedIn: 'root'
589
592
  }]
590
- }], ctorParameters: () => [{ type: i1.LanguageService }] });
591
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlnaGNoYXJ0cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2VydmljZS1saWIvc3JjL2xpYi9zZXJ2aWNlcy9oaWdoY2hhcnRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEtBQUssVUFBVSxNQUFNLFlBQVksQ0FBQztBQUN6QyxPQUFPLGNBQWMsTUFBTSw0QkFBNEIsQ0FBQztBQUV4RCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFGM0MsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBb0IzQixNQUFNLE9BQU8saUJBQWlCO0lBaUI1QixZQUNVLGVBQWdDO1FBQWhDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQWpCMUMsZUFBVSxHQUFHLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFDdkYsZUFBVSxHQUFHLENBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFFOUYsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUdmLFdBQU0sR0FBVSxFQUFFLENBQUE7UUFPbEIsZ0JBQVcsR0FBRyxLQUFLLENBQUE7UUFFbkIsbUJBQWMsR0FBRyxHQUFHLENBQUE7SUFHaEIsQ0FBQztJQUVMLFFBQVEsQ0FBQyxLQUFLO1FBQ1osSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7SUFDcEIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFLO1FBQ1osSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7SUFDcEIsQ0FBQztJ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QUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ3pDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3BCLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRXpDLHNDQUFzQztRQUN0QyxzQ0FBc0M7UUFDdEMsbUNBQW1DO1FBQ25DLHdDQUF3QztRQUV4QyxRQUFRLEdBQUcsRUFBRSxDQUFDO1lBQ1osS0FBSyxPQUFPO2dCQUNWLFNBQVMsR0FBRyxXQUFXLENBQUE7Z0JBQ3ZCLE1BQU07WUFDUixLQUFLLEtBQUssQ0FBQztZQUNYLEtBQUssS0FBSyxDQUFDO1lBQ1gsS0FBSyxVQUFVLENBQUM7WUFDaEI7Z0JBQ0UsU0FBUyxHQUFHLFVBQVUsQ0FBQTtnQkFDdEIsTUFBTTtRQUNWLENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUNoQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQTtJQUM3QyxDQUFDOytHQTdtQlUsaUJBQWlCO21IQUFqQixpQkFBaUIsY0FGaEIsTUFBTTs7NEZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSB9IGZyb20gJy4vbGFuZ3VhZ2Uuc2VydmljZSc7XG5pbXBvcnQgKiBhcyBIaWdoQ2hhcnRzIGZyb20gJ2hpZ2hjaGFydHMnO1xuaW1wb3J0IGhpZ2hjaGFydHNNb3JlIGZyb20gJ2hpZ2hjaGFydHMvaGlnaGNoYXJ0cy1tb3JlJztcbmhpZ2hjaGFydHNNb3JlKEhpZ2hDaGFydHMpO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuZXhwb3J0IGludGVyZmFjZSBzZXJpZSB7XG4gIG5hbWU6IHN0cmluZyxcbiAgdHlwZT86IHN0cmluZyxcbiAgY29sb3JLZXk/OiBzdHJpbmcsXG4gIHBvaW50V2lkdGg/OiBudW1iZXIsXG4gIGNvbG9yQnlQb2ludD86IGJvb2xlYW4sXG4gIGNvbG9yPzogc3RyaW5nLFxuICBkYXRhOiBBcnJheTxhbnk+LFxuICBsaW5lV2lkdGg/OiBudW1iZXIsXG4gIG1hcmtlcj86IHtcbiAgICByYWRpdXM6IG51bWJlclxuICB9XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEhpZ2hjaGFydHNTZXJ2aWNlIHtcbiAgd2Vla2RheXNFUyA9IFsnRG9taW5nbycsICdMdW5lcycsICdNYXJ0ZXMnLCAnTWllcmNvbGVzJywgJ0p1ZXZlcycsICdWaWVybmVzJywgJ1PDoWJhZG8nXVxuICB3ZWVrZGF5c0NBID0gWydEaXVtZW5nZScsICdEaWxsdW5zJywgJ0RpbWFydHMnLCAnRGltZWNyZXMnLCAnRGlqb3VzJywgJ0RpdmVuZHJlcycsICdEaXNzYWJ0ZSddXG4gIHRpdGxlOiBzdHJpbmc7XG4gIGdyYXBoRGF0YSA9IFtdO1xuICByYW5nZXM6IGFueTtcbiAgdW5pdHM6IHN0cmluZztcbiAgc2VyaWVzOiBhbnlbXSA9IFtdXG4gIHhBeGlzOiBhbnlcbiAgeUF4aXM6IGFueVxuICBtaW5ZOiBhbnlcbiAgbWF4WTogYW55XG4gIGdyYXBoQmFzZU9uOiBzdHJpbmdcbiAgcG9pbnRXaWR0aDogbnVtYmVyO1xuICB3aXRoVG9vbHRpcCA9IGZhbHNlXG4gIGV4dHJhVG9vbHRpcDogYW55O1xuICBzY3JvbGxNaW5XaWR0aCA9IDU1MFxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlLFxuICApIHsgfVxuXG4gIHNldFRpdGxlKHRpdGxlKXtcbiAgICB0aGlzLnRpdGxlID0gdGl0bGVcbiAgfVxuXG4gIHNldFVuaXRzKHVuaXRzKXtcbiAgICB0aGlzLnVuaXRzID0gdW5pdHNcbiAgfVxuXG4gIHNldExvY2FsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5sYW5ndWFnZVNlcnZpY2UuZ2V0Q3VycmVudCgpO1xuICB9XG5cbiAgc2V0UG9pbnRXaWR0aChpbnRlcnZhbCk6IG51bWJlcntcbiAgICBzd2l0Y2ggKGludGVydmFsKSB7XG4gICAgICBjYXNlICcxZCc6ICAgICAgICBcbiAgICAgICAgcmV0dXJuIDEyO1xuICAgICAgY2FzZSAnMXcnOiAgICAgICAgXG4gICAgICAgIHJldHVybiAxMjsgIFxuICAgICAgY2FzZSAnMW0nOiAgICAgICAgXG4gICAgICAgIHJldHVybiA4OyAgIFxuICAgICAgY2FzZSAnMXknOiAgICAgICAgXG4gICAgICAgIHJldHVybiAxMjsgIFxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIDIwO1xuICAgIH1cbiAgfVxuXG4gIHNldFNjcm9sbE1pbldpZHRoKGludGVydmFsKXtcbiAgICBzd2l0Y2ggKGludGVydmFsKSB7XG4gICAgICBjYXNlICcxZCc6ICAgICAgICBcbiAgICAgICAgdGhpcy5zY3JvbGxNaW5XaWR0aCA9IDYwMDtcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJzF3JzogICAgICAgIFxuICAgICAgICB0aGlzLnNjcm9sbE1pbldpZHRoID0gNTAwOyAgXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICcxbSc6ICAgICAgICBcbiAgICAgICAgdGhpcy5zY3JvbGxNaW5XaWR0aCA9IDYwMDsgICBcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJzF5JzogICAgICAgIFxuICAgICAgICB0aGlzLnNjcm9sbE1pbldpZHRoID0gNTAwOyAgXG4gICAgICAgIGJyZWFrXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLnNjcm9sbE1pbldpZHRoID0gNTAwO1xuICAgIH1cbiAgfVxuXG4gIGFkZFRvb2x0aXAoaW50ZXJ2YWwpe1xuICAgIHN3aXRjaCAoaW50ZXJ2YWwpIHtcbiAgICAgIGNhc2UgJzFkJzogICAgICAgIFxuICAgICAgICB0aGlzLndpdGhUb29sdGlwID0gZmFsc2U7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICcxdyc6ICAgICAgICBcbiAgICAgIHRoaXMud2l0aFRvb2x0aXAgPSBmYWxzZTsgXG4gICAgICBicmVha1xuICAgICAgY2FzZSAnMW0nOiAgICAgICAgXG4gICAgICB0aGlzLndpdGhUb29sdGlwID0gdHJ1ZTsgXG4gICAgICBicmVha1xuICAgICAgY2FzZSAnMXknOiAgICBcbiAgICAgIGJyZWFrICAgIFxuICAgICAgdGhpcy53aXRoVG9vbHRpcCA9IGZhbHNlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgIHRoaXMud2l0aFRvb2x0aXAgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBnZXRXZWVrZGF5KCl7XG4gICByZXR1cm4gKHRoaXMuc2V0TG9jYWxlKCkgPT0gJ2VzJykgPyB0aGlzLndlZWtkYXlzRVMgOiB0aGlzLndlZWtkYXlzQ0FcbiAgfVxuXG4gIHNldFNlcmllcyhuYW1lLCBkYXRhLCBwb2ludFdpZHRoPywgbGluZVdpZHRoPywgY29sb3I/LCBjb2xvcktleT8sIGNvbG9yQnlQb2ludD8pe1xuICAgIGNvbnN0IHNlcmllX25hbWUgPSBuYW1lPyBuYW1lOiB0aGlzLnVuaXRzO1xuICAgIGNvbnN0IHNlcmllX2RhdGEgPSAoZGF0YSAmJiBkYXRhLmxlbmd0aCA+IDApPyBkYXRhOiB0aGlzLmdyYXBoRGF0YVxuICAgIGNvbnN0IHNlcmllX3BvaW50V2lkdGggPSBwb2ludFdpZHRoPyBwb2ludFdpZHRoOnRoaXMucG9pbnRXaWR0aFxuICAgIGNvbnN0IHNlcmllX2NvbG9yQnlQb2ludCA9IGNvbG9yQnlQb2ludD8gdHJ1ZTpmYWxzZTtcbiAgICBsZXQgc2VyaWU6IHNlcmllID0geyBuYW1lOiBzZXJpZV9uYW1lLCBkYXRhOiBzZXJpZV9kYXRhLCBwb2ludFdpZHRoOnNlcmllX3BvaW50V2lkdGgsIGNvbG9yQnlQb2ludDogIHNlcmllX2NvbG9yQnlQb2ludH1cbiAgICAvL2lmIChwb2ludFdpZHRoICE9IHVuZGVmaW5lZCkgc2VyaWVbJ3BvaW50V2lkdGgnXSA9IHBvaW50V2lkdGhcbiAgICBpZiAobGluZVdpZHRoKSBzZXJpZVsnbGluZVdpZHRoJ10gPSBsaW5lV2lkdGhcbiAgICBpZiAoY29sb3IpIHNlcmllWydjb2xvciddID0gY29sb3JcbiAgICBpZiAoY29sb3JLZXkpIHNlcmllWydjb2xvcktleSddID0gY29sb3JLZXlcbiAgICB0aGlzLnNlcmllcyA9IFtdXG4gICAgdGhpcy5zZXJpZXMucHVzaChzZXJpZSlcbiAgfVxuXG4gIC8vIHR5cGU6IHRoaXMudHlwZUNoYXJ0LFxuICAvLyBtYXhSYW5nZTogdGhpcy5taW4uZ2V0VGltZSgpLFxuICAvLyBjYXRlZ29yaWVzOiB0aGlzLndpdGhUb29sdGlwPyB0aGlzLmdyYXBoRGF0ZXM6IG51bGxcbiAgc2V0WEF4aXModHlwZSwgY2F0ZWdvcmllcywgbWF4UmFuZ2U/KXtcbiAgICB0aGlzLnhBeGlzID0ge3R5cGU6IHR5cGUsIG1heFJhbmdlOiBtYXhSYW5nZSwgY2F0ZWdvcmllczogY2F0ZWdvcmllcywgIGNyb3NzaGFpcjogdHJ1ZX1cbiAgfVxuXG4gIHNldFlBeGlzKG1pblksbWF4WSwgcmFuZ2VzLCB0ZXh0KXtcbiAgICAvL2NvbnNvbGUubG9nKCdbQWN0aXZpdHlHb2FsUGFnZV0gZ2VuZXJhdGVDaGFydCgpIG1heFk6ICcsIG1heFkpO1xuICAgIC8vU29sbyBwYXJhIEhQQyByZXF1aWVyZW4gcXVlIGVsIHZhbG9yIG3DrW5pbW8gZGUgZ3LDoWZpY2Egc2VhIDAsIGFxdcOtIHZhbGlkbyBxdWUgc2kgbm8gaGF5IHZhbG9yZXMgbmVnYXRpdm9zIHNlIGVsIG1pblkgPSAwO1xuICAgIGNvbnN0IHlfbWluID0gIG1pblk7Ly8gKG1pblkgPiAwKSA/IDAgOiBtaW5ZO1xuICAgIGNvbnN0IHlfbWF4ID0gKG1heFkpPyBtYXhZOiB0aGlzLm1heFlcbiAgICBjb25zdCB5X3RpdGxlID0ge3RleHQ6IHRleHQsIGFsaWduOiAnaGlnaCd9XG4gICAgdGhpcy55QXhpcyA9IHttaW46IHlfbWluLCBtYXg6IHlfbWF4LCBhbGlnblRpY2tzOiBmYWxzZSwgdGlja0ludGVydmFsOiBudWxsLCBzdGFydE9uVGljazogZmFsc2UsIHRpdGxlOnlfdGl0bGUsIG9wcG9zaXRlOiB0cnVlLCBwbG90QmFuZHM6IHJhbmdlc31cbiAgfVxuXG4gIHNldE1pblkodmFsdWVzQSwgdmFsdWVzQil7XG4gICAgaWYodmFsdWVzQSAmJiB2YWx1ZXNCICYmIHZhbHVlc0IubGVuZ3RoID4gMCl7XG4gICAgICBjb25zdCBBID0gTWF0aC5taW4uYXBwbHkobnVsbCwgdmFsdWVzQSlcbiAgICAgIGNvbnN0IEIgPSBNYXRoLm1pbi5hcHBseShudWxsLCB2YWx1ZXNCKVxuICAgICAgdGhpcy5taW5ZID0gQT5CPyBCOkFcbiAgICAgIHJldHVybiB0aGlzLm1pbllcbiAgICB9ZWxzZXtcbiAgICAgIHRoaXMubWluWSA9IE1hdGgubWluLmFwcGx5KG51bGwsIHZhbHVlc0EpXG4gICAgICByZXR1cm4gdGhpcy5taW5ZXG4gICAgfVxuICB9XG5cbiAgc2V0TWF4WSh2YWx1ZXNBLCB2YWx1ZXNCKXtcbiAgICBpZih2YWx1ZXNBICYmIHZhbHVlc0IgJiYgdmFsdWVzQi5sZW5ndGggPiAwKXtcbiAgICAgIGNvbnN0IEEgPSBNYXRoLm1heC5hcHBseShudWxsLCB2YWx1ZXNBKVxuICAgICAgY29uc3QgQiA9IE1hdGgubWF4LmFwcGx5KG51bGwsIHZhbHVlc0IpXG4gICAgICB0aGlzLm1heFkgPSBBPkI/IEE6QlxuICAgICAgcmV0dXJuIHRoaXMubWF4WVxuICAgIH1lbHNle1xuICAgICAgdGhpcy5tYXhZID0gIE1hdGgubWF4LmFwcGx5KG51bGwsIHZhbHVlc0EpXG4gICAgICByZXR1cm4gdGhpcy5tYXhZXG4gICAgfVxuICB9XG5cblxuICBnZXRPcHRpb25zQ2hhcnQoZ3JhcGhCYXNlT24pIHtcbiAgICAvLy8vY29uc29sZS5sb2coJ1tBY3Rpdml0eUdvYWxQYWdlXSBnZW5lcmF0ZUNoYXJ0KCkgZ3JhcGhCYXNlT246ICcsIGdyYXBoQmFzZU9uKTtcbiAgICBsZXQgIGNoYXJ0cyAvLz0gSGlnaENoYXJ0c1xuICAgIHN3aXRjaCAoZ3JhcGhCYXNlT24pIHtcbiAgICAgIGNhc2UgJ2F2Zyc6ICBcbiAgICAgICAgLy9jaGFydHMuY2hhcnQoJ2NvbnRhaW5lcicsIHtcbiAgICAgICAgY2hhcnRzID0ge1xuICAgICAgICAgIGNoYXJ0OiB7XG4gICAgICAgICAgICByZW5kZXJUbzogJ2NvbnRhaW5lcicsXG4gICAgICAgICAgICB0eXBlOiAnY29sdW1uJyxcbiAgICAgICAgICAgIHpvb21UeXBlOiAneCcsXG4gICAgICAgICAgICBzY3JvbGxhYmxlUGxvdEFyZWE6IHtcbiAgICAgICAgICAgICAgbWluV2lkdGg6IHRoaXMuc2Nyb2xsTWluV2lkdGgsXG4gICAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uWDogMVxuICAgICAgICAgICAgfSAgIFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdGl0bGU6IHtcbiAgICAgICAgICAgIHRleHQ6IHRoaXMudGl0bGUgXG4gICAgICAgICAgfSxcbiAgICAgICAgICB4QXhpczogIHRoaXMueEF4aXMsXG4gICAgICAgICAgeUF4aXM6IHRoaXMueUF4aXMsXG4gICAgICAgICAgcmFuZ2VTZWxlY3Rvcjoge1xuICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGxvdE9wdGlvbnM6IHtcbiAgICAgICAgICAgIHNlcmllczoge1xuICAgICAgICAgICAgICBhbGxvd1BvaW50U2VsZWN0OiB0cnVlLFxuICAgICAgICAgICAgICBib3JkZXJXaWR0aDogMSxcbiAgICAgICAgICAgICAgZGF0YUxhYmVsczoge1xuICAgICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgZm9ybWF0OiAne3BvaW50Lnl9J1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgbGVnZW5kOiB7XG4gICAgICAgICAgICBlbmFibGVkOiBmYWxzZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgY3JlZGl0czoge1xuICAgICAgICAgICAgZW5hYmxlZDogZmFsc2VcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlcmllczogdGhpcy5zZXJpZXMsXG4gICAgICAgICAgdG9vbHRpcDoge1xuICAgICAgICAgICAgdmFsdWVTdWZmaXg6IGAgJHt0aGlzLnVuaXRzfWBcbiAgICAgICAgICB9LFxuICAgICAgICAgIGxhbmc6IHtcbiAgICAgICAgICAgIHdlZWtkYXlzOiB0aGlzLmdldFdlZWtkYXkoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncmFuZ2UnOiAgIFxuICAgICAgIC8vY2hhcnRzLmNoYXJ0KCdjb250YWluZXInLCB7XG4gICAgICAgIGNoYXJ0cyA9IHtcbiAgICAgICAgICBjaGFydDoge1xuICAgICAgICAgICAgcmVuZGVyVG86ICdjb250YWluZXInLFxuICAgICAgICAgICAgdHlwZTogJ2FyZWFyYW5nZScsXG4gICAgICAgICAgICB6b29tVHlwZTogJ3gnLFxuICAgICAgICAgICAgc2Nyb2xsYWJsZVBsb3RBcmVhOiB7XG4gICAgICAgICAgICAgICAgbWluV2lkdGg6IHRoaXMuc2Nyb2xsTWluV2lkdGgsXG4gICAgICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb25YOiAxXG4gICAgICAgICAgICB9ICAgIFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdGl0bGU6IHtcbiAgICAgICAgICAgIHRleHQ6IHRoaXMudGl0bGUgXG4gICAgICAgICAgfSxcbiAgICAgICAgICB4QXhpczogdGhpcy54QXhpcyxcbiAgICAgICAgICB5QXhpczogdGhpcy55QXhpcyxcbiAgICAgICAgICBsZWdlbmQ6IHtcbiAgICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjcmVkaXRzOiB7XG4gICAgICAgICAgICBlbmFibGVkOiBmYWxzZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VyaWVzOiB0aGlzLnNlcmllcyxcbiAgICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgICB2YWx1ZVN1ZmZpeDogYCAke3RoaXMudW5pdHN9YFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbGFuZzoge1xuICAgICAgICAgICAgd2Vla2RheXM6IHRoaXMuZ2V0V2Vla2RheSgpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vKTtcbiAgICAgICAgXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbGFzVmFsdWUnOiAvL2JhcnJhIG8gcHVudG8gdmFsb3IgZGUgMCBhbCBpbmljaW9cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vY2hhcnRzLmNoYXJ0KCdjb250YWluZXInLCB7XG4gICAgICAgIGNoYXJ0cyA9IHtcbiAgICAgICAgICBjaGFydDoge1xuICAgICAgICAgICAgcmVuZGVyVG86ICdjb250YWluZXInLFxuICAgICAgICAgICAgdHlwZTogJ2NvbHVtbicsXG4gICAgICAgICAgICB6b29tVHlwZTogJ3gnLFxuICAgICAgICAgICAgc2Nyb2xsYWJsZVBsb3RBcmVhOiB7XG4gICAgICAgICAgICAgIG1pbldpZHRoOiB0aGlzLnNjcm9sbE1pbldpZHRoLFxuICAgICAgICAgICAgICBzY3JvbGxQb3NpdGlvblg6IDFcbiAgICAgICAgICAgIH0gICBcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRpdGxlOiB7XG4gICAgICAgICAgICB0ZXh0OiB0aGlzLnRpdGxlIFxuICAgICAgICAgIH0sXG4gICAgICAgICAgeEF4aXM6ICB0aGlzLnhBeGlzLFxuICAgICAgICAgIHlBeGlzOiB0aGlzLnlBeGlzLFxuICAgICAgICAgIHJhbmdlU2VsZWN0b3I6IHtcbiAgICAgICAgICAgIGVuYWJsZWQ6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBsb3RPcHRpb25zOiB7XG4gICAgICAgICAgICBzZXJpZXM6IHtcbiAgICAgICAgICAgICAgYWxsb3dQb2ludFNlbGVjdDogdHJ1ZSxcbiAgICAgICAgICAgICAgYm9yZGVyV2lkdGg6IDEsXG4gICAgICAgICAgICAgIGRhdGFMYWJlbHM6IHtcbiAgICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIGZvcm1hdDogJ3twb2ludC55fSdcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGxlZ2VuZDoge1xuICAgICAgICAgICAgZW5hYmxlZDogZmFsc2VcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNyZWRpdHM6IHtcbiAgICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZXJpZXM6IHRoaXMuc2VyaWVzLFxuICAgICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgIHZhbHVlU3VmZml4OiBgICR7dGhpcy51bml0c31gXG4gICAgICAgICAgfSxcbiAgICAgICAgICBsYW5nOiB7XG4gICAgICAgICAgICB3ZWVrZGF5czogdGhpcy5nZXRXZWVrZGF5KClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8pO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cblxuICAgIGlmKHRoaXMud2l0aFRvb2x0aXApe1xuICAgICAgbGV0IHRvb2wgPSBgPHRhYmxlPjx0cj48dGggY29sc3Bhbj1cIjFcIj57cG9pbnQua2V5fSAke3RoaXMuZXh0cmFUb29sdGlwfTwvdGg+PC90cj5gIC8vXG4gICAgICBIaWdoQ2hhcnRzLnNldE9wdGlvbnMoe1xuICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgaGVhZGVyRm9ybWF0OiB0b29sLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNoYXJ0c1xuICB9XG5cbiAgZ3JvdXBCeUNhdGVnb3J5KGludGVydmFsLCBlbGVtZW50KXtcbiAgIGxldCBsYW5ndWFnZT0gdGhpcy5sYW5ndWFnZVNlcnZpY2UuZ2V0Q3VycmVudCgpO1xuICAgIC8vLy9jb25zb2xlLmxvZygnW0hpZ2hjaGFydHNTZXJ2aWNlXSBncm91cEJ5Q2F0ZWdvcnkgJywgZWxlbWVudC5kYXRlX3ZhbHVlKTtcbiAgICBsZXQgZWxlbWVudERhdGUgPSBuZXcgRGF0ZShlbGVtZW50LmRhdGVfdmFsdWUpO1xuICAgIGxldCBncm91cEJ5RGF0ZSA9IFwiXCI7XG4gICAgbGV0IHRvb2x0aXAgPSBcIlwiO1xuICAgIC8vLy9jb25zb2xlLmxvZygnW0hpZ2hjaGFydHNTZXJ2aWNlXSBncm91cEJ5Q2F0ZWdvcnkgJywgZWxlbWVudC5kYXRlX3ZhbHVlKTtcbiAgICBzd2l0Y2ggKGludGVydmFsKSB7XG4gICAgICBjYXNlICcxZCc6Ly8gZ3JvdXAgYnkgZGF5XG4gICAgICAgIGxldCBob3VyID0gZWxlbWVudC5kYXRlPy5zcGxpdCgnICcpWzFdXG4gICAgICAgIGdyb3VwQnlEYXRlID0gaG91clxuICAgICAgICAvLyBsZXQgaXNBbGxWYWx1ZSA9ICh0aGlzLmdyYXBoQmFzZU9uID09ICdsYXNWYWx1ZScgfHwgdGhpcy5ncmFwaEJhc2VPbiA9PSAncmFuZ2UnKT8gdHJ1ZTpmYWxzZVxuICAgICAgICAvLyBncm91cEJ5RGF0ZSA9IGlzQWxsVmFsdWU/IGhvdXIgOiBob3VyLnNwbGl0KCc6JylbMF0gKyAnOicgKyBob3VyLnNwbGl0KCc6JylbMV07XG4gICAgICAgIHRvb2x0aXAgPSBtb21lbnQoZWxlbWVudERhdGUsIFwiWVlZWS1NTS1ERFwiKS5sb2NhbGUoJ2VzJykuZGF0ZSgpICsgJy8nICsgZWxlbWVudERhdGUudG9Mb2NhbGVTdHJpbmcoJ2VzLUVTJywgeyBtb250aDogJ3Nob3J0JyB9KSArICcvJyArIGVsZW1lbnREYXRlLmdldEZ1bGxZZWFyKCkrJyAnK2dyb3VwQnlEYXRlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJzF3JzpcbiAgICAgICAgbGV0IGRhdGUgPSB0aGlzLmZvcm1hdFNlbGVjdGVkRGF0ZShlbGVtZW50LmRhdGVfdmFsdWUpXG4gICAgICAgIGxldCBkYXkgPSBkYXRlLnRvTG9jYWxlU3RyaW5nKGxhbmd1YWdlLCB7IHdlZWtkYXk6ICdzaG9ydCcgfSlcbiAgICAgICAgZ3JvdXBCeURhdGUgPSB0aGlzLnRpdGxlQ2FzZShkYXkpICsnICcrIHRoaXMuZm9ybWF0U2VsZWN0ZWREYXRlMihlbGVtZW50LmRhdGVfdmFsdWUsICdkJylcbiAgICAgICAgdG9vbHRpcCA9IG1vbWVudChlbGVtZW50RGF0ZSwgXCJZWVlZLU1NLUREXCIpLmxvY2FsZSgnZXMnKS5kYXRlKCkgKyAnLycgKyBlbGVtZW50RGF0ZS50b0xvY2FsZVN0cmluZygnZXMtRVMnLCB7IG1vbnRoOiAnc2hvcnQnIH0pICsgJy8nICsgZWxlbWVudERhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICcxbSc6XG4gICAgICAgIC8vbGV0IG1vbnRoID0gZWxlbWVudERhdGUudG9Mb2NhbGVTdHJpbmcoJ2VzLUVTJywgeyBtb250aDogJ3Nob3J0JyB9KTtcbiAgICAgICAgZ3JvdXBCeURhdGUgPSB0aGlzLmZvcm1hdFNlbGVjdGVkRGF0ZTIoZWxlbWVudC5kYXRlX3ZhbHVlLCAnZCcpIC8vKyAnICcgKyBtb250aFxuICAgICAgICB0b29sdGlwID0gbW9tZW50KGVsZW1lbnREYXRlLCBcIllZWVktTU0tRERcIikubG9jYWxlKCdlcycpLmRhdGUoKSArICcvJyArIGVsZW1lbnREYXRlLnRvTG9jYWxlU3RyaW5nKCdlcy1FUycsIHsgbW9udGg6ICdzaG9ydCcgfSkgKyAnLycgKyBlbGVtZW50RGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJzF5JzpcbiAgICAgICAgbGV0IG1vbnRoID0gbmV3IERhdGUoKTsgbW9udGguc2V0TW9udGgoTnVtYmVyKGVsZW1lbnQuZGF0ZV92YWx1ZSktMSk7IFxuICAgICAgICBncm91cEJ5RGF0ZSA9IG1vbnRoLnRvTG9jYWxlU3RyaW5nKGxhbmd1YWdlLCB7IG1vbnRoOiAnc2hvcnQnIH0pXG4gICAgICAgIGdyb3VwQnlEYXRlID0gdGhpcy50aXRsZUNhc2UoZ3JvdXBCeURhdGUpIDtcbiAgICAgICAgdG9vbHRpcCA9ICBtb250aC50b0xvY2FsZVN0cmluZyhsYW5ndWFnZSwgeyBtb250aDogJ3Nob3J0JyB9KSArICcvJyArIG1vbnRoLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWtcbiAgICB9XG4gICAgcmV0dXJuIHtncm91cEJ5RGF0ZTogZ3JvdXBCeURhdGUsIHRvb2x0aXA6IHRvb2x0aXB9XG4gIH1cblxuICBmb3JtYXRTZWxlY3RlZERhdGUyKGQsIGZvcm1hdCkge1xuICAgIHZhciBhdXhkYXRlID0gZC5zcGxpdCgnICcpXG4gICAgZCA9IGQucmVwbGFjZSgnICcsICdUJylcbiAgICBsZXQgZGF0ZTAgPSBuZXcgRGF0ZShkKS50b1VUQ1N0cmluZygpO1xuICAgIGxldCBkYXRlID0gbmV3IERhdGUoZGF0ZTApO1xuICAgIGxldCB0aW1lID0gYXV4ZGF0ZVsxXTtcbiAgICBkYXRlLnNldEhvdXJzKHRpbWUuc3Vic3RyaW5nKDAsIDIpKTtcbiAgICBkYXRlLnNldE1pbnV0ZXModGltZS5zdWJzdHJpbmcoMywgNSkpO1xuICAgIGxldCBsYW5ndWFnZSA9IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLmdldEN1cnJlbnQoKTtcbiAgICBjb25zdCBkYXRlUGlwZTogRGF0ZVBpcGUgPSBuZXcgRGF0ZVBpcGUoJ2VuJyk7XG4gICAgcmV0dXJuIGRhdGVQaXBlLnRyYW5zZm9ybShkYXRlLCBmb3JtYXQpO1xuICB9XG5cbiAgZm9ybWF0U2VsZWN0ZWREYXRlKGQpIHtcbiAgICB2YXIgYXV4ZGF0ZSA9IGQuc3BsaXQoJyAnKVxuICAgIGQgPSBkLnJlcGxhY2UoJyAnLCAnVCcpXG4gICAgbGV0IGRhdGUwID0gbmV3IERhdGUoZCkudG9VVENTdHJpbmcoKTtcbiAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKGRhdGUwKTtcbiAgICBsZXQgdGltZSA9IGF1eGRhdGVbMV07XG4gICAgZGF0ZS5zZXRIb3Vycyh0aW1lLnN1YnN0cmluZygwLCAyKSk7XG4gICAgZGF0ZS5zZXRNaW51dGVzKHRpbWUuc3Vic3RyaW5nKDMsIDUpKTtcbiAgICByZXR1cm4gZGF0ZVxuICB9XG5cbiAgdGl0bGVDYXNlKHdvcmQpe1xuICAgIHJldHVybiB3b3JkLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKVxuICB9XG5cbiAgZ2V0R3JvdXBlZERhdGEoanNvbiwgaW50ZXJ2YWwsIHdpdGhvVG9sdGlwPzpib29sZWFuKXtcbiAgICBsZXQgd2l0aFRvb2x0aXA6IGJvb2xlYW4gPSBmYWxzZVxuICAgIGxldCB0b29sdGlwID0gW11cbiAgICBsZXQgZ3JvdXBEYXRhOiBhbnk7XG4gICAgbGV0IGdyb3VwcyA9IFtdXG4gICAgbGV0IHZhbHVlc0EgPSBbXTtcbiAgICBsZXQgdmFsdWVzQiA9IFtdO1xuICAgIGxldCBkYXRlc0EgPSBbXTtcbiAgICBsZXQgZ3JhcGhEYXRhID0gW107XG4gICAgbGV0IGdyYXBoQmFzZU9uID0ganNvbi5ncmFwaEJhc2VPblxuICAgIHRoaXMuZ3JhcGhCYXNlT24gPSBqc29uLmdyYXBoQmFzZU9uO1xuICAgIHN3aXRjaCAoZ3JhcGhCYXNlT24pIHtcbiAgICAgIGNhc2UgJ2F2ZXJhZ2UnOiBcbiAgICAgIGNhc2UgJ2F2Zyc6IFxuICAgICAgICBncm91cHMgPSBqc29uLnZhbHVlcy5yZWR1Y2UoKGdyb3VwcywgZWxlbWVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gTnVtYmVyKGVsZW1lbnQuYXZnKTtcbiAgICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuZ3JvdXBCeUNhdGVnb3J5KGludGVydmFsLCBlbGVtZW50KVxuICAgICAgICAgIC8vIElmIGRhdGUgZG9lc24ndCBleGlzdCBpbiBhcnJheSwgdGhlbiBjcmVhdGUgaXRcbiAgICAgICAgICBpZiAoIWdyb3Vwc1tncm91cC5ncm91cEJ5RGF0ZV0pIHtcbiAgICAgICAgICAgIGdyb3Vwc1tncm91cC5ncm91cEJ5RGF0ZV0gPSBbXTtcbiAgICAgICAgICAgIGdyb3Vwc1tncm91cC5ncm91cEJ5RGF0ZV0udmFsdWUgPSAwO1xuICAgICAgICAgIH1cbiAgICAgICAgICBncm91cHNbZ3JvdXAuZ3JvdXBCeURhdGVdLnZhbHVlICs9IHZhbHVlO1xuICAgICAgICAgIGdyb3Vwc1tncm91cC5ncm91cEJ5RGF0ZV0udG9vbHRpcCA9IGdyb3VwLnRvb2x0aXAgICAgICAgXG4gICAgICAgICAgcmV0dXJuIGdyb3VwcztcbiAgICAgICAgfSwge30pOyBcbiAgICAgICAgLy8vL2NvbnNvbGUubG9nKCdbSGlnaGNoYXJ0c1NlcnZpY2VdIHJhbmdlR3JhcGgnLCBncm91cHMpOyBcbiAgICAgICAgT2JqZWN0LmtleXMoZ3JvdXBzKS5tYXAoKGRhdGUpID0+IHtcbiAgICAgICAgICBkYXRlc0EucHVzaChkYXRlKTtcbiAgICAgICAgICB2YWx1ZXNBLnB1c2goZ3JvdXBzW2RhdGVdLnZhbHVlKTtcbiAgICAgICAgICAvLyBpZih3aXRoVG9vbHRpcClcbiAgICAgICAgICAvLyAgIGdyYXBoRGF0YS5wdXNoKHt5OiBncm91cHNbZGF0ZV0udG90YWwsIHRvb2x0aXA6IGdyb3Vwc1tkYXRlXS50b29sdGlwfSk7XG4gICAgICAgICAgLy8gZWxzZVxuICAgICAgICAgICAgaWYod2l0aFRvb2x0aXApXG4gICAgICAgICAgICB0b29sdGlwLnB1c2goZ3JvdXBzW2RhdGVdLnRvb2x0aXApXG4gICAgICAgICAgICBncmFwaERhdGEucHVzaChbZGF0ZSwgZ3JvdXBzW2RhdGVdLnZhbHVlXSk7XG4gICAgXG4gICAgICAgIH0pOyAgXG4gICAgICAgIC8vLy9jb25zb2xlLmxvZygnW0hpZ2hjaGFydHNTZXJ2aWNlXSBncmFwaERhdGEnLCBncmFwaERhdGEpO1xuICAgICAgICBncm91cERhdGEgPSB7ZGF0ZXM6IGRhdGVzQSwgdmFsdWVzQTogdmFsdWVzQSwgZ3JhcGhEYXRhOiBncmFwaERhdGF9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdyYW5nZSc6IFxuICAgICAgICBncm91cHMgPSBqc29uLnZhbHVlcy5yZWR1Y2UoKGdyb3VwcywgZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVNYXggPSBOdW1iZXIoZWxlbWVudC5tYXgpO1xuICAgICAgICAgICAgY29uc3QgdmFsdWVNaW4gPSBOdW1iZXIoZWxlbWVudC5taW4pO1xuICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLmdyb3VwQnlDYXRlZ29yeShpbnRlcnZhbCwgZWxlbWVudClcbiAgICAgICAgICAgIC8vIElmIGRhdGUgZG9lc24ndCBleGlzdCBpbiBhcnJheSwgdGhlbiBjcmVhdGUgaXRcbiAgICAgICAgICAgIGlmICghZ3JvdXBzW2dyb3VwLmdyb3VwQnlEYXRlXSkge1xuICAgICAgICAgICAgICBncm91cHNbZ3JvdXAuZ3JvdXBCeURhdGVdID0gW107XG4gICAgICAgICAgICAgIGdyb3Vwc1tncm91cC5ncm91cEJ5RGF0ZV0udmFsdWVNYXggPSAwO1xuICAgICAgICAgICAgICBncm91cHNbZ3JvdXAuZ3JvdXBCeURhdGVdLnZhbHVlTWluID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGdyb3Vwc1tncm91cC5ncm91cEJ5RGF0ZV0udmFsdWVNYXggKz0gdmFsdWVNYXg7XG4gICAgICAgICAgICBncm91cHNbZ3JvdXAuZ3JvdXBCeURhdGVdLnZhbHVlTWluICs9IHZhbHVlTWluO1xuICAgICAgICAgICAgZ3JvdXBzW2dyb3VwLmdyb3VwQnlEYXRlXS50b29sdGlwID0gZ3JvdXAudG9vbHRpcFxuICAgICAgICAgICAgXG4gICAgICAgICAgICByZXR1cm4gZ3JvdXBzO1xuICAgICAgICAgIH0sIHt9KTtcbiAgICAgICAgLy8vL2NvbnNvbGUubG9nKCdbSGlnaGNoYXJ0c1NlcnZpY2VdIHJhbmdlR3JhcGgnLCBncm91cHMpOyBcbiAgICAgICAgICBPYmplY3Qua2V5cyhncm91cHMpLm1hcCgoZGF0ZSkgPT4ge1xuICAgICAgICAgICAgZGF0ZXNBLnB1c2goZGF0ZSk7XG4gICAgICAgICAgICB2YWx1ZXNBLnB1c2goZ3JvdXBzW2RhdGVdLnZhbHVlTWF4KTtcbiAgICAgICAgICAgIHZhbHVlc0IucHVzaChncm91cHNbZGF0ZV0udmFsdWVNaW4pO1xuICAgICAgICAgICAgLy8gaWYod2l0aFRvb2x0aXApXG4gICAgICAgICAgICAvLyAgIGdyYXBoRGF0YS5wdXNoKHt5OiBncm91cHNbZGF0ZV0udG90YWwsIHRvb2x0aXA6IGdyb3Vwc1tkYXRlXS50b29sdGlwfSk7XG4gICAgICAgICAgICAvLyBlbHNlXG4gICAgICAgICAgICAgIGlmKHdpdGhUb29sdGlwKVxuICAgICAgICAgICAgICB0b29sdGlwLnB1c2goZ3JvdXBzW2RhdGVdLnRvb2x0aXApXG4gICAgICAgICAgICAgIGdyYXBoRGF0YS5wdXNoKFtkYXRlLCBncm91cHNbZGF0ZV0udmFsdWVNaW4sIGdyb3Vwc1tkYXRlXS52YWx1ZU1heF0pO1xuICAgICAgXG4gICAgICAgICAgfSk7ICBcbiAgICAgICAgLy8vL2NvbnNvbGUubG9nKCdbSGlnaGNoYXJ0c1NlcnZpY2VdIGdyYXBoRGF0YScsIGdyYXBoRGF0YSk7XG4gICAgICAgIGdyb3VwRGF0YSA9IHtkYXRlczogZGF0ZXNBLCB2YWx1ZXNBOiB2YWx1ZXNBLCB2YWx1ZXNCOiB2YWx1ZXNCLCBncmFwaERhdGE6IGdyYXBoRGF0YX1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3N1bSc6ICBcbiAgICAgICAgZ3JvdXBzID0ganNvbi52YWx1ZXMucmVkdWNlKChncm91cHMsIGVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gTnVtYmVyKGVsZW1lbnQudmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLmdyb3VwQnlDYXRlZ29yeShpbnRlcnZhbCwgZWxlbWVudClcbiAgICAgICAgICAgIC8vIElmIGRhdGUgZG9lc24ndCBleGlzdCBpbiBhcnJheSwgdGhlbiBjcmVhdGUgaXRcbiAgICAgICAgICAgIGlmICghZ3JvdXBzW2dyb3VwLmdyb3VwQnlEYXRlXSkge1xuICAgICAgICAgICAgICBncm91cHNbZ3JvdXAuZ3JvdXBCeURhdGVdID0gW107XG4gICAgICAgICAgICAgIGdyb3Vwc1tncm91cC5ncm91cEJ5RGF0ZV0udmFsdWUgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ3JvdXBzW2dyb3VwLmdyb3VwQnlEYXRlXS52YWx1ZSArPSB2YWx1ZTtcbiAgICAgICAgICAgIGdyb3Vwc1tncm91cC5ncm91cEJ5RGF0ZV0udG9vbHRpcCA9IGdyb3VwLnRvb2x0aXAgICAgICAgXG4gICAgICAgICAgICByZXR1cm4gZ3JvdXBzO1xuICAgICAgICB9LCB7fSk7IFxuICAgICAgICAvLy8vY29uc29sZS5sb2coJ1tIaWdoY2hhcnRzU2VydmljZV0gcmFuZ2VHcmFwaCcsIGdyb3Vwcyk7IFxuICAgICAgICBPYmplY3Qua2V5cyhncm91cHMpLm1hcCgoZGF0ZSkgPT4ge1xuICAgICAgICAgIGRhdGVzQS5wdXNoKGRhdGUpO1xuICAgICAgICAgIHZhbHVlc0EucHVzaChncm91cHNbZGF0ZV0udmFsdWUpO1xuICAgICAgICAgIC8vIGlmKHdpdGhUb29sdGlwKVxuICAgICAgICAgIC8vICAgZ3JhcGhEYXRhLnB1c2goe3k6IGdyb3Vwc1tkYXRlXS50b3RhbCwgdG9vbHRpcDogZ3JvdXBzW2RhdGVdLnRvb2x0aXB9KTtcbiAgICAgICAgICAvLyBlbHNlXG4gICAgICAgICAgICBpZih3aXRoVG9vbHRpcClcbiAgICAgICAgICAgIHRvb2x0aXAucHVzaChncm91cHNbZGF0ZV0udG9vbHRpcClcbiAgICAgICAgICAgIGdyYXBoRGF0YS5wdXNoKFtkYXRlLCBncm91cHNbZGF0ZV0udmFsdWVdKTtcbiAgICAgICAgfSk7ICBcbiAgICAgICAgLy8vL2NvbnNvbGUubG9nKCdbSGlnaGNoYXJ0c1NlcnZpY2VdIGdyYXBoRGF0YScsIGdyYXBoRGF0YSk7XG4gICAgICAgIGdyb3VwRGF0YSA9IHtkYXRlczogZGF0ZXNBLCB2YWx1ZXNBOiB2YWx1ZXNBLCBncmFwaERhdGE6IGdyYXBoRGF0YX1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2xhc1ZhbHVlJzogIFxuICAgICAgZGVmYXVsdDpcbiAgICAgICAganNvbi52YWx1ZXMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IE51bWJlcihlbGVtZW50LnZhbHVlKTtcbiAgICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuZ3JvdXBCeUNhdGVnb3J5KGludGVydmFsLCBlbGVtZW50KVxuICAgICAgICAgIC8vIElmIGRhdGUgZG9lc24ndCBleGlzdCBpbiBhcnJheSwgdGhlbiBjcmVhdGUgaXRcbiAgICAgICAgICBpZiAoIWdyb3Vwc1tncm91cC5ncm91cEJ5RGF0ZV0pIHtcbiAgICAgICAgICAgIGdyb3Vwc1tncm91cC5ncm91cEJ5RGF0ZV0gPSBbXTtcbiAgICAgICAgICAgIGdyb3Vwc1tncm91cC5ncm91cEJ5RGF0ZV0udmFsdWUgPSAwO1xuICAgICAgICAgIH1cbiAgICAgICAgICBncm91cHNbZ3JvdXAuZ3JvdXBCeURhdGVdLnZhbHVlICs9IHZhbHVlO1xuICAgICAgICAgIGdyb3Vwc1tncm91cC5ncm91cEJ5RGF0ZV0udG9vbHRpcCA9IGdyb3VwLnRvb2x0aXAgICAgIFxuICAgICAgICB9KVxuICAgICAgICAvLy8vY29uc29sZS5sb2coJ1tIaWdoY2hhcnRzU2VydmljZV0gcmFuZ2VHcmFwaCcsIGdyb3Vwcyk7IFxuICAgICAgICBPYmplY3Qua2V5cyhncm91cHMpLm1hcCgoZGF0ZSkgPT4ge1xuICAgICAgICAgIGRhdGVzQS5wdXNoKGRhdGUpO1xuICAgICAgICAgIHZhbHVlc0EucHVzaChncm91cHNbZGF0ZV0udmFsdWUpO1xuICAgICAgICAgIC8vIGlmKHdpdGhUb29sdGlwKVxuICAgICAgICAgIC8vICAgZ3JhcGhEYXRhLnB1c2goe3k6IGdyb3Vwc1tkYXRlXS50b3RhbCwgdG9vbHRpcDogZ3JvdXBzW2RhdGVdLnRvb2x0aXB9KTtcbiAgICAgICAgICAvLyBlbHNlXG4gICAgICAgICAgICBpZih3aXRoVG9vbHRpcClcbiAgICAgICAgICAgIHRvb2x0aXAucHVzaChncm91cHNbZGF0ZV0udG9vbHRpcClcbiAgICAgICAgICAgIGdyYXBoRGF0YS5wdXNoKFtkYXRlLCBncm91cHNbZGF0ZV0udmFsdWVdKTsgICBcbiAgICAgICAgfSk7ICBcbiAgICAgICAgLy8vL2NvbnNvbGUubG9nKCdbSGlnaGNoYXJ0c1NlcnZpY2VdIGdyYXBoRGF0YScsIGdyYXBoRGF0YSk7XG4gICAgICAgIGdyb3VwRGF0YSA9IHtkYXRlczogZGF0ZXNBLCB2YWx1ZXNBOiB2YWx1ZXNBLCBncmFwaERhdGE6IGdyYXBoRGF0YX1cbiAgICAgICAgYnJlYWtcbiAgICB9XG4gICAgcmV0dXJuIGdyb3VwRGF0YTtcbiAgfVxuXG4gIGdldFJhbmdlcyhlbGVtZW50LCBtaW4sIG1heCkge1xuICAgIGxldCBub3JtYWxWYWx1ZSA9IFtdXG4gICAgbGV0IG91dFJhbmdlVmFsdWUgPSBbXVxuICAgIGxldCBkYW5nZXJWYWx1ZSA9IFtdXG4gICAgbGV0IHZhbHVlID0gW11cbiAgICBsZXQgcmFuZ2VzID0gZWxlbWVudC5yYW5nZXM7XG5cbiAgICByYW5nZXMuZm9yRWFjaChyYW5nZSA9PiB7XG4gICAgICB2YXIgciA9IFtdO1xuICAgICAgdmFyIGNvbG9yO1xuXG4gICAgICAgIC8qXG4gICAgICAqIE5vIHRvbWEgZW4gY3VlbnRhIGxvcyBkZWNpbWFsZXMgY29uIGNvbWEgKCwpXG4gICAgICAqL1xuICAgICAgcmFuZ2UudmFsdWUxID0gIHBhcnNlRmxvYXQocmFuZ2UudmFsdWUxPy5yZXBsYWNlKFwiLFwiLFwiLlwiKSk7XG4gICAgICByYW5nZS52YWx1ZTIgPSAgcGFyc2VGbG9hdChyYW5nZS52YWx1ZTI/LnJlcGxhY2UoXCIsXCIsXCIuXCIpKTtcblxuICAgICAgaWYgKHJhbmdlLnJhbmdlQ29uZGl0aW9uID09ICc+JyB8fCByYW5nZS5yYW5nZUNvbmRpdGlvbiA9PSAnPT4nKSB7XG4gICAgICAgIHJbXCJmcm9tXCJdID0gcmFuZ2UudmFsdWUxO1xuICAgICAgICBjb25zdCBtYXhWYWx1ZSA9IHRoaXMuZ2V0TWF4UmFuZ2UocmFuZ2UudmFsdWUxLCBtYXgpIDtcbiAgICAgICAgLy9jb25zb2xlLmxvZygnW0FjdGl2aXR5R29hbFBhZ2VdIG1heFZhbHVlICcsIG1heFZhbHVlKTtcbiAgICAgICAgcltcInRvXCJdID0gdGhpcy5nZXRNYXhSYW5nZShyYW5nZS52YWx1ZTEsIG1heCkgO1xuICAgICAgfVxuXG4gICAgICBpZiAocmFuZ2UucmFuZ2VDb25kaXRpb24gPT0gJzwnIHx8IHJhbmdlLnJhbmdlQ29uZGl0aW9uID09ICc8PScpIHtcbiAgICAgICAgcltcImZyb21cIl0gPSBtaW47XG4gICAgICAgIHJbXCJ0b1wiXSA9IHJhbmdlLnZhbHVlMTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJhbmdlLnJhbmdlQ29uZGl0aW9uID09ICdhPHg8YicpIHtcbiAgICAgICAgcltcImZyb21cIl0gPSByYW5nZS52YWx1ZTE7XG4gICAgICAgIHJbXCJ0b1wiXSA9IHJhbmdlLnZhbHVlMjtcbiAgICAgIH1cblxuICAgICAgaWYgKHJhbmdlLnJhbmdlVHlwZSA9PSBcInN1Y2Nlc3NcIilcbiAgICAgICAgY29sb3IgPSAncmdiYSg5NiwgMTczLCAxMjEsIDAuMSknO1xuICAgICAgZWxzZSBpZiAocmFuZ2UucmFuZ2VUeXBlID09IFwid2FybmluZ1wiKVxuICAgICAgICBjb2xvciA9ICdyZ2JhKDI0NSwgMTU3LCAyNCwgMC4xKSc7IC8vJ3JnYigyNDMsIDE1NiwgMTgsIDAuMSknXG4gICAgICBlbHNlIGlmIChyYW5nZS5yYW5nZVR5cGUgPT0gXCJkYW5nZXJcIilcbiAgICAgICAgY29sb3IgPSAncmdiYSgyNDUsIDQ2LCAyNCwgMC4xKSc7IC8vJ3JnYigyMzEsIDc2LCA2MCwgMC4xKSdcblxuICAgICAgcltcImNvbG9yXCJdID0gY29sb3I7XG4gICAgICB2YWx1ZS5wdXNoKHIpO1xuXG4gICAgICBpZiAocmFuZ2UucmFuZ2VUeXBlID09PSBcInN1Y2Nlc3NcIikge1xuICAgICAgICBub3JtYWxWYWx1ZS5wdXNoKHJhbmdlLmNvbmRpdGlvblN0cmluZylcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHJhbmdlLnJhbmdlVHlwZSA9PSBcIndhcm5pbmdcIikge1xuICAgICAgICBvdXRSYW5nZVZhbHVlLnB1c2gocmFuZ2UuY29uZGl0aW9uU3RyaW5nKVxuICAgICAgfVxuICAgICAgZWxzZSBpZiAocmFuZ2UucmFuZ2VUeXBlID09IFwiZGFuZ2VyXCIpIHtcbiAgICAgICAgZGFuZ2VyVmFsdWUucHVzaChyYW5nZS5jb25kaXRpb25TdHJpbmcpXG4gICAgICB9XG5cbiAgICB9KTtcbiAgICBpZiAodmFsdWU/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGxldCByYW5nZXNFbGVtZW50ID0ge1xuICAgICAgICBuYW1lOiBlbGVtZW50Lm5hbWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBlbGVtZW50LmRlc2NyaXB0aW9uLFxuICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgIG5vcm1hbFZhbHVlOiBub3JtYWxWYWx1ZSxcbiAgICAgICAgb3V0UmFuZ2VWYWx1ZTogb3V0UmFuZ2VWYWx1ZSxcbiAgICAgICAgZGFuZ2VyVmFsdWU6IGRhbmdlclZhbHVlXG4gICAgICB9XG4gICAgICAvL2NvbnNvbGUubG9nKCdbQWN0aXZpdHlHb2FsUGFnZV0gZ2V0UmFuZ2VzKCkgcmFuZ2VzOiAnLCByYW5nZXNFbGVtZW50KTtcbiAgICAgIHJldHVybiByYW5nZXNFbGVtZW50XG4gICAgfVxuICAgIGVsc2UgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG4gIC8vQXF1aSBzZSBzZXRlYSBlbCB2YWxvciBtYXggZW4gWSBzdW1hbmRvIGVsIHJhbmdvIG3DoXhpbW8geSB2YWxvciBtw6F4aW1vIGluZ3Jlc2FkbyBkaXZkaWRvIGVudHJlIDJcbiAgZ2V0TWF4UmFuZ2UocmFuZ2VNYXgsIG1heCl7XG4gICAgbGV0IHZhbHVlMSA9IE51bWJlcihyYW5nZU1heClcbiAgICBsZXQgdmFsdWUyID0gTnVtYmVyKG1heClcbiAgICBpZih2YWx1ZTIgPD0gdmFsdWUxKVxuICAgICAgdGhpcy5tYXhZID0gdmFsdWUxICsgdmFsdWUyLzI7ICAgXG4gICAgZWxzZSBcbiAgICAgIHRoaXMubWF4WSA9IHZhbHVlMlxuICAgICAgcmV0dXJuIHRoaXMubWF4WSBcbiAgfVxuXG4gIHNldEhpZ2hjaGFydHNPcHRpb25zKGpzb24sIHBhcmFtcyl7XG4gICAgbGV0IG9wdCA9IGpzb24/LmdyYXBoQmFzZU9uXG4gICAgbGV0IGludGVydmFsID0gcGFyYW1zLmludGVydmFsXG4gICAgbGV0IG5hbWUgPSBqc29uPy5uYW1lXG4gICAgbGV0IHR5cGVDaGFydCA9ICcnXG4gICAgbGV0IHZhbHVlc0EgPSBbXTtcbiAgICBsZXQgdmFsdWVzQiA9IFtdO1xuICAgIGxldCBkYXRlc0EgPSBbXTtcbiAgICBsZXQgZ3JhcGhEYXRhID0gW107XG4gICAgbGV0IHJhbmdlcztcbiAgICBsZXQgbWluWTtcbiAgICBsZXQgbWF4WTtcbiAgICBsZXQgcG9pbnRXaWR0aCA9IDIwXG4gICAgbGV0IHVuaXRzID0ganNvbj8udW5pdHNcblxuICAgIHRoaXMudW5pdHMgPSBqc29uLnVuaXRzXG5cbiAgICBjb25zdCBkYXRhID0gdGhpcy5nZXRHcm91cGVkRGF0YShqc29uLCBpbnRlcnZhbCk7XG4gICAgZ3JhcGhEYXRhID0gZGF0YT8uZ3JhcGhEYXRhXG4gICAgdmFsdWVzQSA9IGRhdGE/LnZhbHVlc0FcbiAgICB2YWx1ZXNCID0gZGF0YT8udmFsdWVzQlxuICAgIGRhdGVzQSA9IGRhdGE/LmRhdGVzXG5cbiAgICBtaW5ZID0gdGhpcy5zZXRNaW5ZKCB2YWx1ZXNBLCB2YWx1ZXNCKTtcbiAgICBtYXhZID0gdGhpcy5zZXRNYXhZKCB2YWx1ZXNBLCB2YWx1ZXNCKTtcbiAgICByYW5nZXMgPSB0aGlzLmdldFJhbmdlcyhqc29uLCBtaW5ZLCBtYXhZKVxuICAgIHRoaXMucmFuZ2VzID0gcmFuZ2VzXG4gICAgcG9pbnRXaWR0aCA9IHRoaXMuc2V0UG9pbnRXaWR0aChpbnRlcnZhbClcblxuICAgIC8vY29uc29sZS5sb2coXCIqIHZhbHVlc0E6IFwiLCB2YWx1ZXNBKTtcbiAgICAvL2NvbnNvbGUubG9nKFwiKiB2YWx1ZXNCOiBcIiwgdmFsdWVzQik7XG4gICAgLy9jb25zb2xlLmxvZyhcIiogZGF0ZXM6IFwiLCBkYXRlc0EpO1xuICAgIC8vY29uc29sZS5sb2coXCIqIGdyYXBoaWM6IFwiLCBncmFwaERhdGEpO1xuXG4gICAgc3dpdGNoIChvcHQpIHtcbiAgICAgIGNhc2UgJ3JhbmdlJzpcbiAgICAgICAgdHlwZUNoYXJ0ID0gJ2FyZWFyYW5nZSdcbiAgICAgICAgYnJlYWs7IFxuICAgICAgY2FzZSAnc3VtJzpcbiAgICAgIGNhc2UgJ2F2Zyc6XG4gICAgICBjYXNlICdsYXNWYWx1ZSc6IFxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdHlwZUNoYXJ0ID0gJ2NhdGVnb3J5J1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICB0aGlzLnNldFhBeGlzKHR5cGVDaGFydCwgZGF0ZXNBKVxuICAgIHRoaXMuc2V0WUF4aXMobWluWSxtYXhZLCByYW5nZXMsIHVuaXRzKVxuICAgIHRoaXMuc2V0U2VyaWVzKG5hbWUsIGdyYXBoRGF0YSwgcG9pbnRXaWR0aClcbiAgfVxuXG59XG4iXX0=
593
+ }], ctorParameters: () => [{ type: i1.LanguageService }, { type: i2.TranslateService }] });
594
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlnaGNoYXJ0cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2VydmljZS1saWIvc3JjL2xpYi9zZXJ2aWNlcy9oaWdoY2hhcnRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEtBQUssVUFBVSxNQUFNLFlBQVksQ0FBQztBQUN6QyxPQUFPLGNBQWMsTUFBTSw0QkFBNEIsQ0FBQztBQUV4RCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBRjNDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQXFCM0IsTUFBTSxPQUFPLGlCQUFpQjtJQWtCNUIsWUFDVSxlQUFnQyxFQUNoQyxTQUEyQjtRQUQzQixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFuQnJDLGVBQVUsR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBQ3ZGLGVBQVUsR0FBRyxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFBO1FBQzlGLGFBQVEsR0FBRyxFQUFFLENBQUE7UUFFYixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBR2YsV0FBTSxHQUFVLEVBQUUsQ0FBQTtRQU9sQixnQkFBVyxHQUFHLEtBQUssQ0FBQTtRQUVuQixtQkFBYyxHQUFHLEdBQUcsQ0FBQTtJQUloQixDQUFDO0lBRUwsUUFBUSxDQUFDLEtBQUs7UUFDWixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtJQUNwQixDQUFDO0lB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QUksQ0FBQyxPQUFPLENBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDekMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7UUFDcEIsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7UUFFekMsc0NBQXNDO1FBQ3RDLHNDQUFzQztRQUN0QyxtQ0FBbUM7UUFDbkMsd0NBQXdDO1FBRXhDLFFBQVEsR0FBRyxFQUFFLENBQUM7WUFDWixLQUFLLE9BQU87Z0JBQ1YsU0FBUyxHQUFHLFdBQVcsQ0FBQTtnQkFDdkIsTUFBTTtZQUNSLEtBQUssS0FBSyxDQUFDO1lBQ1gsS0FBSyxLQUFLLENBQUM7WUFDWCxLQUFLLFVBQVUsQ0FBQztZQUNoQjtnQkFDRSxTQUFTLEdBQUcsVUFBVSxDQUFBO2dCQUN0QixNQUFNO1FBQ1YsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFBO0lBQzdDLENBQUM7K0dBL21CVSxpQkFBaUI7bUhBQWpCLGlCQUFpQixjQUZoQixNQUFNOzs0RkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9sYW5ndWFnZS5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIEhpZ2hDaGFydHMgZnJvbSAnaGlnaGNoYXJ0cyc7XG5pbXBvcnQgaGlnaGNoYXJ0c01vcmUgZnJvbSAnaGlnaGNoYXJ0cy9oaWdoY2hhcnRzLW1vcmUnO1xuaGlnaGNoYXJ0c01vcmUoSGlnaENoYXJ0cyk7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5leHBvcnQgaW50ZXJmYWNlIHNlcmllIHtcbiAgbmFtZTogc3RyaW5nLFxuICB0eXBlPzogc3RyaW5nLFxuICBjb2xvcktleT86IHN0cmluZyxcbiAgcG9pbnRXaWR0aD86IG51bWJlcixcbiAgY29sb3JCeVBvaW50PzogYm9vbGVhbixcbiAgY29sb3I/OiBzdHJpbmcsXG4gIGRhdGE6IEFycmF5PGFueT4sXG4gIGxpbmVXaWR0aD86IG51bWJlcixcbiAgbWFya2VyPzoge1xuICAgIHJhZGl1czogbnVtYmVyXG4gIH1cbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSGlnaGNoYXJ0c1NlcnZpY2Uge1xuICB3ZWVrZGF5c0VTID0gWydEb21pbmdvJywgJ0x1bmVzJywgJ01hcnRlcycsICdNaWVyY29sZXMnLCAnSnVldmVzJywgJ1ZpZXJuZXMnLCAnU8OhYmFkbyddXG4gIHdlZWtkYXlzQ0EgPSBbJ0RpdW1lbmdlJywgJ0RpbGx1bnMnLCAnRGltYXJ0cycsICdEaW1lY3JlcycsICdEaWpvdXMnLCAnRGl2ZW5kcmVzJywgJ0Rpc3NhYnRlJ11cbiAgd2Vla3NEYXkgPSBbXVxuICB0aXRsZTogc3RyaW5nO1xuICBncmFwaERhdGEgPSBbXTtcbiAgcmFuZ2VzOiBhbnk7XG4gIHVuaXRzOiBzdHJpbmc7XG4gIHNlcmllczogYW55W10gPSBbXVxuICB4QXhpczogYW55XG4gIHlBeGlzOiBhbnlcbiAgbWluWTogYW55XG4gIG1heFk6IGFueVxuICBncmFwaEJhc2VPbjogc3RyaW5nXG4gIHBvaW50V2lkdGg6IG51bWJlcjtcbiAgd2l0aFRvb2x0aXAgPSBmYWxzZVxuICBleHRyYVRvb2x0aXA6IGFueTtcbiAgc2Nyb2xsTWluV2lkdGggPSA1NTBcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZVxuICApIHsgfVxuXG4gIHNldFRpdGxlKHRpdGxlKXtcbiAgICB0aGlzLnRpdGxlID0gdGl0bGVcbiAgfVxuXG4gIHNldFVuaXRzKHVuaXRzKXtcbiAgICB0aGlzLnVuaXRzID0gdW5pdHNcbiAgfVxuXG4gIHNldExvY2FsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5sYW5ndWFnZVNlcnZpY2UuZ2V0Q3VycmVudCgpO1xuICB9XG5cbiAgc2V0UG9pbnRXaWR0aChpbnRlcnZhbCk6IG51bWJlcntcbiAgICBzd2l0Y2ggKGludGVydmFsKSB7XG4gICAgICBjYXNlICcxZCc6ICAgICAgICBcbiAgICAgICAgcmV0dXJuIDEyO1xuICAgICAgY2FzZSAnMXcnOiAgICAgICAgXG4gICAgICAgIHJldHVybiAxMjsgIFxuICAgICAgY2FzZSAnMW0nOiAgICAgICAgXG4gICAgICAgIHJldHVybiA4OyAgIFxuICAgICAgY2FzZSAnMXknOiAgICAgICAgXG4gICAgICAgIHJldHVybiAxMjsgIFxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIDIwO1xuICAgIH1cbiAgfVxuXG4gIHNldFNjcm9sbE1pbldpZHRoKGludGVydmFsKXtcbiAgICBzd2l0Y2ggKGludGVydmFsKSB7XG4gICAgICBjYXNlICcxZCc6ICAgICAgICBcbiAgICAgICAgdGhpcy5zY3JvbGxNaW5XaWR0aCA9IDYwMDtcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJzF3JzogICAgICAgIFxuICAgICAgICB0aGlzLnNjcm9sbE1pbldpZHRoID0gNTAwOyAgXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICcxbSc6ICAgICAgICBcbiAgICAgICAgdGhpcy5zY3JvbGxNaW5XaWR0aCA9IDYwMDsgICBcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJzF5JzogICAgICAgIFxuICAgICAgICB0aGlzLnNjcm9sbE1pbldpZHRoID0gNTAwOyAgXG4gICAgICAgIGJyZWFrXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLnNjcm9sbE1pbldpZHRoID0gNTAwO1xuICAgIH1cbiAgfVxuXG4gIGFkZFRvb2x0aXAoaW50ZXJ2YWwpe1xuICAgIHN3aXRjaCAoaW50ZXJ2YWwpIHtcbiAgICAgIGNhc2UgJzFkJzogICAgICAgIFxuICAgICAgICB0aGlzLndpdGhUb29sdGlwID0gZmFsc2U7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICcxdyc6ICAgICAgICBcbiAgICAgIHRoaXMud2l0aFRvb2x0aXAgPSBmYWxzZTsgXG4gICAgICBicmVha1xuICAgICAgY2FzZSAnMW0nOiAgICAgICAgXG4gICAgICB0aGlzLndpdGhUb29sdGlwID0gdHJ1ZTsgXG4gICAgICBicmVha1xuICAgICAgY2FzZSAnMXknOiAgICBcbiAgICAgIGJyZWFrICAgIFxuICAgICAgdGhpcy53aXRoVG9vbHRpcCA9IGZhbHNlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgIHRoaXMud2l0aFRvb2x0aXAgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBnZXRXZWVrZGF5KCl7XG4gICByZXR1cm4gKHRoaXMuc2V0TG9jYWxlKCkgPT0gJ2VzJykgPyB0aGlzLndlZWtkYXlzRVMgOiB0aGlzLndlZWtkYXlzQ0FcbiAgfVxuXG4gIHNldFNlcmllcyhuYW1lLCBkYXRhLCBwb2ludFdpZHRoPywgbGluZVdpZHRoPywgY29sb3I/LCBjb2xvcktleT8sIGNvbG9yQnlQb2ludD8pe1xuICAgIGNvbnN0IHNlcmllX25hbWUgPSBuYW1lPyBuYW1lOiB0aGlzLnVuaXRzO1xuICAgIGNvbnN0IHNlcmllX2RhdGEgPSAoZGF0YSAmJiBkYXRhLmxlbmd0aCA+IDApPyBkYXRhOiB0aGlzLmdyYXBoRGF0YVxuICAgIGNvbnN0IHNlcmllX3BvaW50V2lkdGggPSBwb2ludFdpZHRoPyBwb2ludFdpZHRoOnRoaXMucG9pbnRXaWR0aFxuICAgIGNvbnN0IHNlcmllX2NvbG9yQnlQb2ludCA9IGNvbG9yQnlQb2ludD8gdHJ1ZTpmYWxzZTtcbiAgICBsZXQgc2VyaWU6IHNlcmllID0geyBuYW1lOiBzZXJpZV9uYW1lLCBkYXRhOiBzZXJpZV9kYXRhLCBwb2ludFdpZHRoOnNlcmllX3BvaW50V2lkdGgsIGNvbG9yQnlQb2ludDogIHNlcmllX2NvbG9yQnlQb2ludH1cbiAgICAvL2lmIChwb2ludFdpZHRoICE9IHVuZGVmaW5lZCkgc2VyaWVbJ3BvaW50V2lkdGgnXSA9IHBvaW50V2lkdGhcbiAgICBpZiAobGluZVdpZHRoKSBzZXJpZVsnbGluZVdpZHRoJ10gPSBsaW5lV2lkdGhcbiAgICBpZiAoY29sb3IpIHNlcmllWydjb2xvciddID0gY29sb3JcbiAgICBpZiAoY29sb3JLZXkpIHNlcmllWydjb2xvcktleSddID0gY29sb3JLZXlcbiAgICB0aGlzLnNlcmllcyA9IFtdXG4gICAgdGhpcy5zZXJpZXMucHVzaChzZXJpZSlcbiAgfVxuXG4gIC8vIHR5cGU6IHRoaXMudHlwZUNoYXJ0LFxuICAvLyBtYXhSYW5nZTogdGhpcy5taW4uZ2V0VGltZSgpLFxuICAvLyBjYXRlZ29yaWVzOiB0aGlzLndpdGhUb29sdGlwPyB0aGlzLmdyYXBoRGF0ZXM6IG51bGxcbiAgc2V0WEF4aXModHlwZSwgY2F0ZWdvcmllcywgbWF4UmFuZ2U/KXtcbiAgICB0aGlzLnhBeGlzID0ge3R5cGU6IHR5cGUsIG1heFJhbmdlOiBtYXhSYW5nZSwgY2F0ZWdvcmllczogY2F0ZWdvcmllcywgIGNyb3NzaGFpcjogdHJ1ZX1cbiAgfVxuXG4gIHNldFlBeGlzKG1pblksbWF4WSwgcmFuZ2VzLCB0ZXh0KXtcbiAgICAvL2NvbnNvbGUubG9nKCdbQWN0aXZpdHlHb2FsUGFnZV0gZ2VuZXJhdGVDaGFydCgpIG1heFk6ICcsIG1heFkpO1xuICAgIC8vU29sbyBwYXJhIEhQQyByZXF1aWVyZW4gcXVlIGVsIHZhbG9yIG3DrW5pbW8gZGUgZ3LDoWZpY2Egc2VhIDAsIGFxdcOtIHZhbGlkbyBxdWUgc2kgbm8gaGF5IHZhbG9yZXMgbmVnYXRpdm9zIHNlIGVsIG1pblkgPSAwO1xuICAgIGNvbnN0IHlfbWluID0gIG1pblk7Ly8gKG1pblkgPiAwKSA/IDAgOiBtaW5ZO1xuICAgIGNvbnN0IHlfbWF4ID0gKG1heFkpPyBtYXhZOiB0aGlzLm1heFlcbiAgICBjb25zdCB5X3RpdGxlID0ge3RleHQ6IHRleHQsIGFsaWduOiAnaGlnaCd9XG4gICAgdGhpcy55QXhpcyA9IHttaW46IHlfbWluLCBtYXg6IHlfbWF4LCBhbGlnblRpY2tzOiBmYWxzZSwgdGlja0ludGVydmFsOiBudWxsLCBzdGFydE9uVGljazogZmFsc2UsIHRpdGxlOnlfdGl0bGUsIG9wcG9zaXRlOiB0cnVlLCBwbG90QmFuZHM6IHJhbmdlc31cbiAgfVxuXG4gIHNldE1pblkodmFsdWVzQSwgdmFsdWVzQil7XG4gICAgaWYodmFsdWVzQSAmJiB2YWx1ZXNCICYmIHZhbHVlc0IubGVuZ3RoID4gMCl7XG4gICAgICBjb25zdCBBID0gTWF0aC5taW4uYXBwbHkobnVsbCwgdmFsdWVzQSlcbiAgICAgIGNvbnN0IEIgPSBNYXRoLm1pbi5hcHBseShudWxsLCB2YWx1ZXNCKVxuICAgICAgdGhpcy5taW5ZID0gQT5CPyBCOkFcbiAgICAgIHJldHVybiB0aGlzLm1pbllcbiAgICB9ZWxzZXtcbiAgICAgIHRoaXMubWluWSA9IE1hdGgubWluLmFwcGx5KG51bGwsIHZhbHVlc0EpXG4gICAgICByZXR1cm4gdGhpcy5taW5ZXG4gICAgfVxuICB9XG5cbiAgc2V0TWF4WSh2YWx1ZXNBLCB2YWx1ZXNCKXtcbiAgICBpZih2YWx1ZXNBICYmIHZhbHVlc0IgJiYgdmFsdWVzQi5sZW5ndGggPiAwKXtcbiAgICAgIGNvbnN0IEEgPSBNYXRoLm1heC5hcHBseShudWxsLCB2YWx1ZXNBKVxuICAgICAgY29uc3QgQiA9IE1hdGgubWF4LmFwcGx5KG51bGwsIHZhbHVlc0IpXG4gICAgICB0aGlzLm1heFkgPSBBPkI/IEE6QlxuICAgICAgcmV0dXJuIHRoaXMubWF4WVxuICAgIH1lbHNle1xuICAgICAgdGhpcy5tYXhZID0gIE1hdGgubWF4LmFwcGx5KG51bGwsIHZhbHVlc0EpXG4gICAgICByZXR1cm4gdGhpcy5tYXhZXG4gICAgfVxuICB9XG5cblxuICBnZXRPcHRpb25zQ2hhcnQoZ3JhcGhCYXNlT24pIHtcbiAgICAvLy8vY29uc29sZS5sb2coJ1tBY3Rpdml0eUdvYWxQYWdlXSBnZW5lcmF0ZUNoYXJ0KCkgZ3JhcGhCYXNlT246ICcsIGdyYXBoQmFzZU9uKTtcbiAgICBsZXQgIGNoYXJ0cyAvLz0gSGlnaENoYXJ0c1xuICAgIHN3aXRjaCAoZ3JhcGhCYXNlT24pIHtcbiAgICAgIGNhc2UgJ2F2Zyc6ICBcbiAgICAgICAgLy9jaGFydHMuY2hhcnQoJ2NvbnRhaW5lcicsIHtcbiAgICAgICAgY2hhcnRzID0ge1xuICAgICAgICAgIGNoYXJ0OiB7XG4gICAgICAgICAgICByZW5kZXJUbzogJ2NvbnRhaW5lcicsXG4gICAgICAgICAgICB0eXBlOiAnY29sdW1uJyxcbiAgICAgICAgICAgIHpvb21UeXBlOiAneCcsXG4gICAgICAgICAgICBzY3JvbGxhYmxlUGxvdEFyZWE6IHtcbiAgICAgICAgICAgICAgbWluV2lkdGg6IHRoaXMuc2Nyb2xsTWluV2lkdGgsXG4gICAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uWDogMVxuICAgICAgICAgICAgfSAgIFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdGl0bGU6IHtcbiAgICAgICAgICAgIHRleHQ6IHRoaXMudGl0bGUgXG4gICAgICAgICAgfSxcbiAgICAgICAgICB4QXhpczogIHRoaXMueEF4aXMsXG4gICAgICAgICAgeUF4aXM6IHRoaXMueUF4aXMsXG4gICAgICAgICAgcmFuZ2VTZWxlY3Rvcjoge1xuICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGxvdE9wdGlvbnM6IHtcbiAgICAgICAgICAgIHNlcmllczoge1xuICAgICAgICAgICAgICBhbGxvd1BvaW50U2VsZWN0OiB0cnVlLFxuICAgICAgICAgICAgICBib3JkZXJXaWR0aDogMSxcbiAgICAgICAgICAgICAgZGF0YUxhYmVsczoge1xuICAgICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgZm9ybWF0OiAne3BvaW50Lnl9J1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgbGVnZW5kOiB7XG4gICAgICAgICAgICBlbmFibGVkOiBmYWxzZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgY3JlZGl0czoge1xuICAgICAgICAgICAgZW5hYmxlZDogZmFsc2VcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlcmllczogdGhpcy5zZXJpZXMsXG4gICAgICAgICAgdG9vbHRpcDoge1xuICAgICAgICAgICAgdmFsdWVTdWZmaXg6IGAgJHt0aGlzLnVuaXRzfWBcbiAgICAgICAgICB9LFxuICAgICAgICAgIGxhbmc6IHtcbiAgICAgICAgICAgIHdlZWtkYXlzOiB0aGlzLmdldFdlZWtkYXkoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncmFuZ2UnOiAgIFxuICAgICAgIC8vY2hhcnRzLmNoYXJ0KCdjb250YWluZXInLCB7XG4gICAgICAgIGNoYXJ0cyA9IHtcbiAgICAgICAgICBjaGFydDoge1xuICAgICAgICAgICAgcmVuZGVyVG86ICdjb250YWluZXInLFxuICAgICAgICAgICAgdHlwZTogJ2FyZWFyYW5nZScsXG4gICAgICAgICAgICB6b29tVHlwZTogJ3gnLFxuICAgICAgICAgICAgc2Nyb2xsYWJsZVBsb3RBcmVhOiB7XG4gICAgICAgICAgICAgICAgbWluV2lkdGg6IHRoaXMuc2Nyb2xsTWluV2lkdGgsXG4gICAgICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb25YOiAxXG4gICAgICAgICAgICB9ICAgIFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdGl0bGU6IHtcbiAgICAgICAgICAgIHRleHQ6IHRoaXMudGl0bGUgXG4gICAgICAgICAgfSxcbiAgICAgICAgICB4QXhpczogdGhpcy54QXhpcyxcbiAgICAgICAgICB5QXhpczogdGhpcy55QXhpcyxcbiAgICAgICAgICBsZWdlbmQ6IHtcbiAgICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjcmVkaXRzOiB7XG4gICAgICAgICAgICBlbmFibGVkOiBmYWxzZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VyaWVzOiB0aGlzLnNlcmllcyxcbiAgICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgICB2YWx1ZVN1ZmZpeDogYCAke3RoaXMudW5pdHN9YFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbGFuZzoge1xuICAgICAgICAgICAgd2Vla2RheXM6IHRoaXMuZ2V0V2Vla2RheSgpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vKTtcbiAgICAgICAgXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbGFzVmFsdWUnOiAvL2JhcnJhIG8gcHVudG8gdmFsb3IgZGUgMCBhbCBpbmljaW9cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vY2hhcnRzLmNoYXJ0KCdjb250YWluZXInLCB7XG4gICAgICAgIGNoYXJ0cyA9IHtcbiAgICAgICAgICBjaGFydDoge1xuICAgICAgICAgICAgcmVuZGVyVG86ICdjb250YWluZXInLFxuICAgICAgICAgICAgdHlwZTogJ2NvbHVtbicsXG4gICAgICAgICAgICB6b29tVHlwZTogJ3gnLFxuICAgICAgICAgICAgc2Nyb2xsYWJsZVBsb3RBcmVhOiB7XG4gICAgICAgICAgICAgIG1pbldpZHRoOiB0aGlzLnNjcm9sbE1pbldpZHRoLFxuICAgICAgICAgICAgICBzY3JvbGxQb3NpdGlvblg6IDFcbiAgICAgICAgICAgIH0gICBcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRpdGxlOiB7XG4gICAgICAgICAgICB0ZXh0OiB0aGlzLnRpdGxlIFxuICAgICAgICAgIH0sXG4gICAgICAgICAgeEF4aXM6ICB0aGlzLnhBeGlzLFxuICAgICAgICAgIHlBeGlzOiB0aGlzLnlBeGlzLFxuICAgICAgICAgIHJhbmdlU2VsZWN0b3I6IHtcbiAgICAgICAgICAgIGVuYWJsZWQ6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBsb3RPcHRpb25zOiB7XG4gICAgICAgICAgICBzZXJpZXM6IHtcbiAgICAgICAgICAgICAgYWxsb3dQb2ludFNlbGVjdDogdHJ1ZSxcbiAgICAgICAgICAgICAgYm9yZGVyV2lkdGg6IDEsXG4gICAgICAgICAgICAgIGRhdGFMYWJlbHM6IHtcbiAgICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIGZvcm1hdDogJ3twb2ludC55fSdcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGxlZ2VuZDoge1xuICAgICAgICAgICAgZW5hYmxlZDogZmFsc2VcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNyZWRpdHM6IHtcbiAgICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZXJpZXM6IHRoaXMuc2VyaWVzLFxuICAgICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgIHZhbHVlU3VmZml4OiBgICR7dGhpcy51bml0c31gXG4gICAgICAgICAgfSxcbiAgICAgICAgICBsYW5nOiB7XG4gICAgICAgICAgICB3ZWVrZGF5czogdGhpcy5nZXRXZWVrZGF5KClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8pO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cblxuICAgIGlmKHRoaXMud2l0aFRvb2x0aXApe1xuICAgICAgbGV0IHRvb2wgPSBgPHRhYmxlPjx0cj48dGggY29sc3Bhbj1cIjFcIj57cG9pbnQua2V5fSAke3RoaXMuZXh0cmFUb29sdGlwfTwvdGg+PC90cj5gIC8vXG4gICAgICBIaWdoQ2hhcnRzLnNldE9wdGlvbnMoe1xuICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgaGVhZGVyRm9ybWF0OiB0b29sLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNoYXJ0c1xuICB9XG5cbiAgZ3JvdXBCeUNhdGVnb3J5KGludGVydmFsLCBlbGVtZW50KXtcbiAgIGxldCBsYW5ndWFnZT0gdGhpcy5sYW5ndWFnZVNlcnZpY2UuZ2V0Q3VycmVudCgpO1xuICAgIC8vLy9jb25zb2xlLmxvZygnW0hpZ2hjaGFydHNTZXJ2aWNlXSBncm91cEJ5Q2F0ZWdvcnkgJywgZWxlbWVudC5kYXRlX3ZhbHVlKTtcbiAgICBsZXQgZWxlbWVudERhdGUgPSBuZXcgRGF0ZShlbGVtZW50LmRhdGVfdmFsdWUpO1xuICAgIGxldCBncm91cEJ5RGF0ZSA9IFwiXCI7XG4gICAgbGV0IHRvb2x0aXAgPSBcIlwiO1xuICAgIC8vLy9jb25zb2xlLmxvZygnW0hpZ2hjaGFydHNTZXJ2aWNlXSBncm91cEJ5Q2F0ZWdvcnkgJywgZWxlbWVudC5kYXRlX3ZhbHVlKTtcbiAgICBzd2l0Y2ggKGludGVydmFsKSB7XG4gICAgICBjYXNlICcxZCc6Ly8gZ3JvdXAgYnkgZGF5XG4gICAgICAgIGxldCBob3VyID0gZWxlbWVudC5kYXRlPy5zcGxpdCgnICcpWzFdXG4gICAgICAgIGdyb3VwQnlEYXRlID0gaG91clxuICAgICAgICAvLyBsZXQgaXNBbGxWYWx1ZSA9ICh0aGlzLmdyYXBoQmFzZU9uID09ICdsYXNWYWx1ZScgfHwgdGhpcy5ncmFwaEJhc2VPbiA9PSAncmFuZ2UnKT8gdHJ1ZTpmYWxzZVxuICAgICAgICAvLyBncm91cEJ5RGF0ZSA9IGlzQWxsVmFsdWU/IGhvdXIgOiBob3VyLnNwbGl0KCc6JylbMF0gKyAnOicgKyBob3VyLnNwbGl0KCc6JylbMV07XG4gICAgICAgIHRvb2x0aXAgPSBtb21lbnQoZWxlbWVudERhdGUsIFwiWVlZWS1NTS1ERFwiKS5sb2NhbGUoJ2VzJykuZGF0ZSgpICsgJy8nICsgZWxlbWVudERhdGUudG9Mb2NhbGVTdHJpbmcoJ2VzLUVTJywgeyBtb250aDogJ3Nob3J0JyB9KSArICcvJyArIGVsZW1lbnREYXRlLmdldEZ1bGxZZWFyKCkrJyAnK2dyb3VwQnlEYXRlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJzF3JzpcbiAgICAgICAgbGV0IGRhdGUgPSB0aGlzLmZvcm1hdFNlbGVjdGVkRGF0ZShlbGVtZW50LmRhdGVfdmFsdWUpXG4gICAgICAgIGxldCBkYXkgPSBkYXRlLnRvTG9jYWxlU3RyaW5nKGxhbmd1YWdlLCB7IHdlZWtkYXk6ICdzaG9ydCcgfSlcbiAgICAgICAgZ3JvdXBCeURhdGUgPSB0aGlzLnRpdGxlQ2FzZShkYXkpICsnICcrIHRoaXMuZm9ybWF0U2VsZWN0ZWREYXRlMihlbGVtZW50LmRhdGVfdmFsdWUsICdkJylcbiAgICAgICAgdG9vbHRpcCA9IG1vbWVudChlbGVtZW50RGF0ZSwgXCJZWVlZLU1NLUREXCIpLmxvY2FsZSgnZXMnKS5kYXRlKCkgKyAnLycgKyBlbGVtZW50RGF0ZS50b0xvY2FsZVN0cmluZygnZXMtRVMnLCB7IG1vbnRoOiAnc2hvcnQnIH0pICsgJy8nICsgZWxlbWVudERhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICcxbSc6XG4gICAgICAgIC8vbGV0IG1vbnRoID0gZWxlbWVudERhdGUudG9Mb2NhbGVTdHJpbmcoJ2VzLUVTJywgeyBtb250aDogJ3Nob3J0JyB9KTtcbiAgICAgICAgZ3JvdXBCeURhdGUgPSB0aGlzLmZvcm1hdFNlbGVjdGVkRGF0ZTIoZWxlbWVudC5kYXRlX3ZhbHVlLCAnZCcpIC8vKyAnICcgKyBtb250aFxuICAgICAgICB0b29sdGlwID0gbW9tZW50KGVsZW1lbnREYXRlLCBcIllZWVktTU0tRERcIikubG9jYWxlKCdlcycpLmRhdGUoKSArICcvJyArIGVsZW1lbnREYXRlLnRvTG9jYWxlU3RyaW5nKCdlcy1FUycsIHsgbW9udGg6ICdzaG9ydCcgfSkgKyAnLycgKyBlbGVtZW50RGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJzF5JzpcbiAgICAgICAgbGV0IG1vbnRoID0gbmV3IERhdGUoKTsgbW9udGguc2V0TW9udGgoTnVtYmVyKGVsZW1lbnQuZGF0ZV92YWx1ZSktMSk7IFxuICAgICAgICBncm91cEJ5RGF0ZSA9IG1vbnRoLnRvTG9jYWxlU3RyaW5nKGxhbmd1YWdlLCB7IG1vbnRoOiAnc2hvcnQnIH0pXG4gICAgICAgIGdyb3VwQnlEYXRlID0gdGhpcy50aXRsZUNhc2UoZ3JvdXBCeURhdGUpIDtcbiAgICAgICAgdG9vbHRpcCA9ICBtb250aC50b0xvY2FsZVN0cmluZyhsYW5ndWFnZSwgeyBtb250aDogJ3Nob3J0JyB9KSArICcvJyArIG1vbnRoLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWtcbiAgICB9XG4gICAgcmV0dXJuIHtncm91cEJ5RGF0ZTogZ3JvdXBCeURhdGUsIHRvb2x0aXA6IHRvb2x0aXB9XG4gIH1cblxuICBmb3JtYXRTZWxlY3RlZERhdGUyKGQsIGZvcm1hdCkge1xuICAgIHZhciBhdXhkYXRlID0gZC5zcGxpdCgnICcpXG4gICAgZCA9IGQucmVwbGFjZSgnICcsICdUJylcbiAgICBsZXQgZGF0ZTAgPSBuZXcgRGF0ZShkKS50b1VUQ1N0cmluZygpO1xuICAgIGxldCBkYXRlID0gbmV3IERhdGUoZGF0ZTApO1xuICAgIGxldCB0aW1lID0gYXV4ZGF0ZVsxXTtcbiAgICBkYXRlLnNldEhvdXJzKHRpbWUuc3Vic3RyaW5nKDAsIDIpKTtcbiAgICBkYXRlLnNldE1pbnV0ZXModGltZS5zdWJzdHJpbmcoMywgNSkpO1xuICAgIGxldCBsYW5ndWFnZSA9IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLmdldEN1cnJlbnQoKTtcbiAgICBjb25zdCBkYXRlUGlwZTogRGF0ZVBpcGUgPSBuZXcgRGF0ZVBpcGUoJ2VuJyk7XG4gICAgcmV0dXJuIGRhdGVQaXBlLnRyYW5zZm9ybShkYXRlLCBmb3JtYXQpO1xuICB9XG5cbiAgZm9ybWF0U2VsZWN0ZWREYXRlKGQpIHtcbiAgICB2YXIgYXV4ZGF0ZSA9IGQuc3BsaXQoJyAnKVxuICAgIGQgPSBkLnJlcGxhY2UoJyAnLCAnVCcpXG4gICAgbGV0IGRhdGUwID0gbmV3IERhdGUoZCkudG9VVENTdHJpbmcoKTtcbiAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKGRhdGUwKTtcbiAgICBsZXQgdGltZSA9IGF1eGRhdGVbMV07XG4gICAgZGF0ZS5zZXRIb3Vycyh0aW1lLnN1YnN0cmluZygwLCAyKSk7XG4gICAgZGF0ZS5zZXRNaW51dGVzKHRpbWUuc3Vic3RyaW5nKDMsIDUpKTtcbiAgICByZXR1cm4gZGF0ZVxuICB9XG5cbiAgdGl0bGVDYXNlKHdvcmQpe1xuICAgIHJldHVybiB3b3JkLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKVxuICB9XG5cbiAgZ2V0R3JvdXBlZERhdGEoanNvbiwgaW50ZXJ2YWwsIHdpdGhvVG9sdGlwPzpib29sZWFuKXtcbiAgICBsZXQgd2l0aFRvb2x0aXA6IGJvb2xlYW4gPSBmYWxzZVxuICAgIGxldCB0b29sdGlwID0gW11cbiAgICBsZXQgZ3JvdXBEYXRhOiBhbnk7XG4gICAgbGV0IGdyb3VwcyA9IFtdXG4gICAgbGV0IHZhbHVlc0EgPSBbXTtcbiAgICBsZXQgdmFsdWVzQiA9IFtdO1xuICAgIGxldCBkYXRlc0EgPSBbXTtcbiAgICBsZXQgZ3JhcGhEYXRhID0gW107XG4gICAgbGV0IGdyYXBoQmFzZU9uID0ganNvbi5ncmFwaEJhc2VPblxuICAgIHRoaXMuZ3JhcGhCYXNlT24gPSBqc29uLmdyYXBoQmFzZU9uO1xuICAgIHN3aXRjaCAoZ3JhcGhCYXNlT24pIHtcbiAgICAgIGNhc2UgJ2F2ZXJhZ2UnOiBcbiAgICAgIGNhc2UgJ2F2Zyc6IFxuICAgICAgICBncm91cHMgPSBqc29uLnZhbHVlcy5yZWR1Y2UoKGdyb3VwcywgZWxlbWVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gTnVtYmVyKGVsZW1lbnQuYXZnKTtcbiAgICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuZ3JvdXBCeUNhdGVnb3J5KGludGVydmFsLCBlbGVtZW50KVxuICAgICAgICAgIC8vIElmIGRhdGUgZG9lc24ndCBleGlzdCBpbiBhcnJheSwgdGhlbiBjcmVhdGUgaXRcbiAgICAgICAgICBpZiAoIWdyb3Vwc1tncm91cC5ncm91cEJ5RGF0ZV0pIHtcbiAgICAgICAgICAgIGdyb3Vwc1tncm91cC5ncm91cEJ5RGF0ZV0gPSBbXTtcbiAgICAgICAgICAgIGdyb3Vwc1tncm91cC5ncm91cEJ5RGF0ZV0udmFsdWUgPSAwO1xuICAgICAgICAgIH1cbiAgICAgICAgICBncm91cHNbZ3JvdXAuZ3JvdXBCeURhdGVdLnZhbHVlICs9IHZhbHVlO1xuICAgICAgICAgIGdyb3Vwc1tncm91cC5ncm91cEJ5RGF0ZV0udG9vbHRpcCA9IGdyb3VwLnRvb2x0aXAgICAgICAgXG4gICAgICAgICAgcmV0dXJuIGdyb3VwcztcbiAgICAgICAgfSwge30pOyBcbiAgICAgICAgLy8vL2NvbnNvbGUubG9nKCdbSGlnaGNoYXJ0c1NlcnZpY2VdIHJhbmdlR3JhcGgnLCBncm91cHMpOyBcbiAgICAgICAgT2JqZWN0LmtleXMoZ3JvdXBzKS5tYXAoKGRhdGUpID0+IHtcbiAgICAgICAgICBkYXRlc0EucHVzaChkYXRlKTtcbiAgICAgICAgICB2YWx1ZXNBLnB1c2goZ3JvdXBzW2RhdGVdLnZhbHVlKTtcbiAgICAgICAgICAvLyBpZih3aXRoVG9vbHRpcClcbiAgICAgICAgICAvLyAgIGdyYXBoRGF0YS5wdXNoKHt5OiBncm91cHNbZGF0ZV0udG90YWwsIHRvb2x0aXA6IGdyb3Vwc1tkYXRlXS50b29sdGlwfSk7XG4gICAgICAgICAgLy8gZWxzZVxuICAgICAgICAgICAgaWYod2l0aFRvb2x0aXApXG4gICAgICAgICAgICB0b29sdGlwLnB1c2goZ3JvdXBzW2RhdGVdLnRvb2x0aXApXG4gICAgICAgICAgICBncmFwaERhdGEucHVzaChbZGF0ZSwgZ3JvdXBzW2RhdGVdLnZhbHVlXSk7XG4gICAgXG4gICAgICAgIH0pOyAgXG4gICAgICAgIC8vLy9jb25zb2xlLmxvZygnW0hpZ2hjaGFydHNTZXJ2aWNlXSBncmFwaERhdGEnLCBncmFwaERhdGEpO1xuICAgICAgICBncm91cERhdGEgPSB7ZGF0ZXM6IGRhdGVzQSwgdmFsdWVzQTogdmFsdWVzQSwgZ3JhcGhEYXRhOiBncmFwaERhdGF9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdyYW5nZSc6IFxuICAgICAgICBncm91cHMgPSBqc29uLnZhbHVlcy5yZWR1Y2UoKGdyb3VwcywgZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVNYXggPSBOdW1iZXIoZWxlbWVudC5tYXgpO1xuICAgICAgICAgICAgY29uc3QgdmFsdWVNaW4gPSBOdW1iZXIoZWxlbWVudC5taW4pO1xuICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLmdyb3VwQnlDYXRlZ29yeShpbnRlcnZhbCwgZWxlbWVudClcbiAgICAgICAgICAgIC8vIElmIGRhdGUgZG9lc24ndCBleGlzdCBpbiBhcnJheSwgdGhlbiBjcmVhdGUgaXRcbiAgICAgICAgICAgIGlmICghZ3JvdXBzW2dyb3VwLmdyb3VwQnlEYXRlXSkge1xuICAgICAgICAgICAgICBncm91cHNbZ3JvdXAuZ3JvdXBCeURhdGVdID0gW107XG4gICAgICAgICAgICAgIGdyb3Vwc1tncm91cC5ncm91cEJ5RGF0ZV0udmFsdWVNYXggPSAwO1xuICAgICAgICAgICAgICBncm91cHNbZ3JvdXAuZ3JvdXBCeURhdGVdLnZhbHVlTWluID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGdyb3Vwc1tncm91cC5ncm91cEJ5RGF0ZV0udmFsdWVNYXggKz0gdmFsdWVNYXg7XG4gICAgICAgICAgICBncm91cHNbZ3JvdXAuZ3JvdXBCeURhdGVdLnZhbHVlTWluICs9IHZhbHVlTWluO1xuICAgICAgICAgICAgZ3JvdXBzW2dyb3VwLmdyb3VwQnlEYXRlXS50b29sdGlwID0gZ3JvdXAudG9vbHRpcFxuICAgICAgICAgICAgXG4gICAgICAgICAgICByZXR1cm4gZ3JvdXBzO1xuICAgICAgICAgIH0sIHt9KTtcbiAgICAgICAgLy8vL2NvbnNvbGUubG9nKCdbSGlnaGNoYXJ0c1NlcnZpY2VdIHJhbmdlR3JhcGgnLCBncm91cHMpOyBcbiAgICAgICAgICBPYmplY3Qua2V5cyhncm91cHMpLm1hcCgoZGF0ZSkgPT4ge1xuICAgICAgICAgICAgZGF0ZXNBLnB1c2goZGF0ZSk7XG4gICAgICAgICAgICB2YWx1ZXNBLnB1c2goZ3JvdXBzW2RhdGVdLnZhbHVlTWF4KTtcbiAgICAgICAgICAgIHZhbHVlc0IucHVzaChncm91cHNbZGF0ZV0udmFsdWVNaW4pO1xuICAgICAgICAgICAgLy8gaWYod2l0aFRvb2x0aXApXG4gICAgICAgICAgICAvLyAgIGdyYXBoRGF0YS5wdXNoKHt5OiBncm91cHNbZGF0ZV0udG90YWwsIHRvb2x0aXA6IGdyb3Vwc1tkYXRlXS50b29sdGlwfSk7XG4gICAgICAgICAgICAvLyBlbHNlXG4gICAgICAgICAgICAgIGlmKHdpdGhUb29sdGlwKVxuICAgICAgICAgICAgICB0b29sdGlwLnB1c2goZ3JvdXBzW2RhdGVdLnRvb2x0aXApXG4gICAgICAgICAgICAgIGdyYXBoRGF0YS5wdXNoKFtkYXRlLCBncm91cHNbZGF0ZV0udmFsdWVNaW4sIGdyb3Vwc1tkYXRlXS52YWx1ZU1heF0pO1xuICAgICAgXG4gICAgICAgICAgfSk7ICBcbiAgICAgICAgLy8vL2NvbnNvbGUubG9nKCdbSGlnaGNoYXJ0c1NlcnZpY2VdIGdyYXBoRGF0YScsIGdyYXBoRGF0YSk7XG4gICAgICAgIGdyb3VwRGF0YSA9IHtkYXRlczogZGF0ZXNBLCB2YWx1ZXNBOiB2YWx1ZXNBLCB2YWx1ZXNCOiB2YWx1ZXNCLCBncmFwaERhdGE6IGdyYXBoRGF0YX1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3N1bSc6ICBcbiAgICAgICAgZ3JvdXBzID0ganNvbi52YWx1ZXMucmVkdWNlKChncm91cHMsIGVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gTnVtYmVyKGVsZW1lbnQudmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLmdyb3VwQnlDYXRlZ29yeShpbnRlcnZhbCwgZWxlbWVudClcbiAgICAgICAgICAgIC8vIElmIGRhdGUgZG9lc24ndCBleGlzdCBpbiBhcnJheSwgdGhlbiBjcmVhdGUgaXRcbiAgICAgICAgICAgIGlmICghZ3JvdXBzW2dyb3VwLmdyb3VwQnlEYXRlXSkge1xuICAgICAgICAgICAgICBncm91cHNbZ3JvdXAuZ3JvdXBCeURhdGVdID0gW107XG4gICAgICAgICAgICAgIGdyb3Vwc1tncm91cC5ncm91cEJ5RGF0ZV0udmFsdWUgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ3JvdXBzW2dyb3VwLmdyb3VwQnlEYXRlXS52YWx1ZSArPSB2YWx1ZTtcbiAgICAgICAgICAgIGdyb3Vwc1tncm91cC5ncm91cEJ5RGF0ZV0udG9vbHRpcCA9IGdyb3VwLnRvb2x0aXAgICAgICAgXG4gICAgICAgICAgICByZXR1cm4gZ3JvdXBzO1xuICAgICAgICB9LCB7fSk7IFxuICAgICAgICAvLy8vY29uc29sZS5sb2coJ1tIaWdoY2hhcnRzU2VydmljZV0gcmFuZ2VHcmFwaCcsIGdyb3Vwcyk7IFxuICAgICAgICBPYmplY3Qua2V5cyhncm91cHMpLm1hcCgoZGF0ZSkgPT4ge1xuICAgICAgICAgIGRhdGVzQS5wdXNoKGRhdGUpO1xuICAgICAgICAgIHZhbHVlc0EucHVzaChncm91cHNbZGF0ZV0udmFsdWUpO1xuICAgICAgICAgIC8vIGlmKHdpdGhUb29sdGlwKVxuICAgICAgICAgIC8vICAgZ3JhcGhEYXRhLnB1c2goe3k6IGdyb3Vwc1tkYXRlXS50b3RhbCwgdG9vbHRpcDogZ3JvdXBzW2RhdGVdLnRvb2x0aXB9KTtcbiAgICAgICAgICAvLyBlbHNlXG4gICAgICAgICAgICBpZih3aXRoVG9vbHRpcClcbiAgICAgICAgICAgIHRvb2x0aXAucHVzaChncm91cHNbZGF0ZV0udG9vbHRpcClcbiAgICAgICAgICAgIGdyYXBoRGF0YS5wdXNoKFtkYXRlLCBncm91cHNbZGF0ZV0udmFsdWVdKTtcbiAgICAgICAgfSk7ICBcbiAgICAgICAgLy8vL2NvbnNvbGUubG9nKCdbSGlnaGNoYXJ0c1NlcnZpY2VdIGdyYXBoRGF0YScsIGdyYXBoRGF0YSk7XG4gICAgICAgIGdyb3VwRGF0YSA9IHtkYXRlczogZGF0ZXNBLCB2YWx1ZXNBOiB2YWx1ZXNBLCBncmFwaERhdGE6IGdyYXBoRGF0YX1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2xhc1ZhbHVlJzogIFxuICAgICAgZGVmYXVsdDpcbiAgICAgICAganNvbi52YWx1ZXMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IE51bWJlcihlbGVtZW50LnZhbHVlKTtcbiAgICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuZ3JvdXBCeUNhdGVnb3J5KGludGVydmFsLCBlbGVtZW50KVxuICAgICAgICAgIC8vIElmIGRhdGUgZG9lc24ndCBleGlzdCBpbiBhcnJheSwgdGhlbiBjcmVhdGUgaXRcbiAgICAgICAgICBpZiAoIWdyb3Vwc1tncm91cC5ncm91cEJ5RGF0ZV0pIHtcbiAgICAgICAgICAgIGdyb3Vwc1tncm91cC5ncm91cEJ5RGF0ZV0gPSBbXTtcbiAgICAgICAgICAgIGdyb3Vwc1tncm91cC5ncm91cEJ5RGF0ZV0udmFsdWUgPSAwO1xuICAgICAgICAgIH1cbiAgICAgICAgICBncm91cHNbZ3JvdXAuZ3JvdXBCeURhdGVdLnZhbHVlICs9IHZhbHVlO1xuICAgICAgICAgIGdyb3Vwc1tncm91cC5ncm91cEJ5RGF0ZV0udG9vbHRpcCA9IGdyb3VwLnRvb2x0aXAgICAgIFxuICAgICAgICB9KVxuICAgICAgICAvLy8vY29uc29sZS5sb2coJ1tIaWdoY2hhcnRzU2VydmljZV0gcmFuZ2VHcmFwaCcsIGdyb3Vwcyk7IFxuICAgICAgICBPYmplY3Qua2V5cyhncm91cHMpLm1hcCgoZGF0ZSkgPT4ge1xuICAgICAgICAgIGRhdGVzQS5wdXNoKGRhdGUpO1xuICAgICAgICAgIHZhbHVlc0EucHVzaChncm91cHNbZGF0ZV0udmFsdWUpO1xuICAgICAgICAgIC8vIGlmKHdpdGhUb29sdGlwKVxuICAgICAgICAgIC8vICAgZ3JhcGhEYXRhLnB1c2goe3k6IGdyb3Vwc1tkYXRlXS50b3RhbCwgdG9vbHRpcDogZ3JvdXBzW2RhdGVdLnRvb2x0aXB9KTtcbiAgICAgICAgICAvLyBlbHNlXG4gICAgICAgICAgICBpZih3aXRoVG9vbHRpcClcbiAgICAgICAgICAgIHRvb2x0aXAucHVzaChncm91cHNbZGF0ZV0udG9vbHRpcClcbiAgICAgICAgICAgIGdyYXBoRGF0YS5wdXNoKFtkYXRlLCBncm91cHNbZGF0ZV0udmFsdWVdKTsgICBcbiAgICAgICAgfSk7ICBcbiAgICAgICAgLy8vL2NvbnNvbGUubG9nKCdbSGlnaGNoYXJ0c1NlcnZpY2VdIGdyYXBoRGF0YScsIGdyYXBoRGF0YSk7XG4gICAgICAgIGdyb3VwRGF0YSA9IHtkYXRlczogZGF0ZXNBLCB2YWx1ZXNBOiB2YWx1ZXNBLCBncmFwaERhdGE6IGdyYXBoRGF0YX1cbiAgICAgICAgYnJlYWtcbiAgICB9XG4gICAgcmV0dXJuIGdyb3VwRGF0YTtcbiAgfVxuXG4gIGdldFJhbmdlcyhlbGVtZW50LCBtaW4sIG1heCkge1xuICAgIGxldCBub3JtYWxWYWx1ZSA9IFtdXG4gICAgbGV0IG91dFJhbmdlVmFsdWUgPSBbXVxuICAgIGxldCBkYW5nZXJWYWx1ZSA9IFtdXG4gICAgbGV0IHZhbHVlID0gW11cbiAgICBsZXQgcmFuZ2VzID0gZWxlbWVudC5yYW5nZXM7XG5cbiAgICByYW5nZXMuZm9yRWFjaChyYW5nZSA9PiB7XG4gICAgICB2YXIgciA9IFtdO1xuICAgICAgdmFyIGNvbG9yO1xuXG4gICAgICAgIC8qXG4gICAgICAqIE5vIHRvbWEgZW4gY3VlbnRhIGxvcyBkZWNpbWFsZXMgY29uIGNvbWEgKCwpXG4gICAgICAqL1xuICAgICAgcmFuZ2UudmFsdWUxID0gIHBhcnNlRmxvYXQocmFuZ2UudmFsdWUxPy5yZXBsYWNlKFwiLFwiLFwiLlwiKSk7XG4gICAgICByYW5nZS52YWx1ZTIgPSAgcGFyc2VGbG9hdChyYW5nZS52YWx1ZTI/LnJlcGxhY2UoXCIsXCIsXCIuXCIpKTtcblxuICAgICAgaWYgKHJhbmdlLnJhbmdlQ29uZGl0aW9uID09ICc+JyB8fCByYW5nZS5yYW5nZUNvbmRpdGlvbiA9PSAnPT4nKSB7XG4gICAgICAgIHJbXCJmcm9tXCJdID0gcmFuZ2UudmFsdWUxO1xuICAgICAgICBjb25zdCBtYXhWYWx1ZSA9IHRoaXMuZ2V0TWF4UmFuZ2UocmFuZ2UudmFsdWUxLCBtYXgpIDtcbiAgICAgICAgLy9jb25zb2xlLmxvZygnW0FjdGl2aXR5R29hbFBhZ2VdIG1heFZhbHVlICcsIG1heFZhbHVlKTtcbiAgICAgICAgcltcInRvXCJdID0gdGhpcy5nZXRNYXhSYW5nZShyYW5nZS52YWx1ZTEsIG1heCkgO1xuICAgICAgfVxuXG4gICAgICBpZiAocmFuZ2UucmFuZ2VDb25kaXRpb24gPT0gJzwnIHx8IHJhbmdlLnJhbmdlQ29uZGl0aW9uID09ICc8PScpIHtcbiAgICAgICAgcltcImZyb21cIl0gPSBtaW47XG4gICAgICAgIHJbXCJ0b1wiXSA9IHJhbmdlLnZhbHVlMTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJhbmdlLnJhbmdlQ29uZGl0aW9uID09ICdhPHg8YicpIHtcbiAgICAgICAgcltcImZyb21cIl0gPSByYW5nZS52YWx1ZTE7XG4gICAgICAgIHJbXCJ0b1wiXSA9IHJhbmdlLnZhbHVlMjtcbiAgICAgIH1cblxuICAgICAgaWYgKHJhbmdlLnJhbmdlVHlwZSA9PSBcInN1Y2Nlc3NcIilcbiAgICAgICAgY29sb3IgPSAncmdiYSg5NiwgMTczLCAxMjEsIDAuMSknO1xuICAgICAgZWxzZSBpZiAocmFuZ2UucmFuZ2VUeXBlID09IFwid2FybmluZ1wiKVxuICAgICAgICBjb2xvciA9ICdyZ2JhKDI0NSwgMTU3LCAyNCwgMC4xKSc7IC8vJ3JnYigyNDMsIDE1NiwgMTgsIDAuMSknXG4gICAgICBlbHNlIGlmIChyYW5nZS5yYW5nZVR5cGUgPT0gXCJkYW5nZXJcIilcbiAgICAgICAgY29sb3IgPSAncmdiYSgyNDUsIDQ2LCAyNCwgMC4xKSc7IC8vJ3JnYigyMzEsIDc2LCA2MCwgMC4xKSdcblxuICAgICAgcltcImNvbG9yXCJdID0gY29sb3I7XG4gICAgICB2YWx1ZS5wdXNoKHIpO1xuXG4gICAgICBpZiAocmFuZ2UucmFuZ2VUeXBlID09PSBcInN1Y2Nlc3NcIikge1xuICAgICAgICBub3JtYWxWYWx1ZS5wdXNoKHJhbmdlLmNvbmRpdGlvblN0cmluZylcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHJhbmdlLnJhbmdlVHlwZSA9PSBcIndhcm5pbmdcIikge1xuICAgICAgICBvdXRSYW5nZVZhbHVlLnB1c2gocmFuZ2UuY29uZGl0aW9uU3RyaW5nKVxuICAgICAgfVxuICAgICAgZWxzZSBpZiAocmFuZ2UucmFuZ2VUeXBlID09IFwiZGFuZ2VyXCIpIHtcbiAgICAgICAgZGFuZ2VyVmFsdWUucHVzaChyYW5nZS5jb25kaXRpb25TdHJpbmcpXG4gICAgICB9XG5cbiAgICB9KTtcbiAgICBpZiAodmFsdWU/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGxldCByYW5nZXNFbGVtZW50ID0ge1xuICAgICAgICBuYW1lOiBlbGVtZW50Lm5hbWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBlbGVtZW50LmRlc2NyaXB0aW9uLFxuICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgIG5vcm1hbFZhbHVlOiBub3JtYWxWYWx1ZSxcbiAgICAgICAgb3V0UmFuZ2VWYWx1ZTogb3V0UmFuZ2VWYWx1ZSxcbiAgICAgICAgZGFuZ2VyVmFsdWU6IGRhbmdlclZhbHVlXG4gICAgICB9XG4gICAgICAvL2NvbnNvbGUubG9nKCdbQWN0aXZpdHlHb2FsUGFnZV0gZ2V0UmFuZ2VzKCkgcmFuZ2VzOiAnLCByYW5nZXNFbGVtZW50KTtcbiAgICAgIHJldHVybiByYW5nZXNFbGVtZW50XG4gICAgfVxuICAgIGVsc2UgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG4gIC8vQXF1aSBzZSBzZXRlYSBlbCB2YWxvciBtYXggZW4gWSBzdW1hbmRvIGVsIHJhbmdvIG3DoXhpbW8geSB2YWxvciBtw6F4aW1vIGluZ3Jlc2FkbyBkaXZkaWRvIGVudHJlIDJcbiAgZ2V0TWF4UmFuZ2UocmFuZ2VNYXgsIG1heCl7XG4gICAgbGV0IHZhbHVlMSA9IE51bWJlcihyYW5nZU1heClcbiAgICBsZXQgdmFsdWUyID0gTnVtYmVyKG1heClcbiAgICBpZih2YWx1ZTIgPD0gdmFsdWUxKVxuICAgICAgdGhpcy5tYXhZID0gdmFsdWUxICsgdmFsdWUyLzI7ICAgXG4gICAgZWxzZSBcbiAgICAgIHRoaXMubWF4WSA9IHZhbHVlMlxuICAgICAgcmV0dXJuIHRoaXMubWF4WSBcbiAgfVxuXG4gIHNldEhpZ2hjaGFydHNPcHRpb25zKGpzb24sIHBhcmFtcyl7XG4gICAgbGV0IG9wdCA9IGpzb24/LmdyYXBoQmFzZU9uXG4gICAgbGV0IGludGVydmFsID0gcGFyYW1zLmludGVydmFsXG4gICAgbGV0IG5hbWUgPSBqc29uPy5uYW1lXG4gICAgbGV0IHR5cGVDaGFydCA9ICcnXG4gICAgbGV0IHZhbHVlc0EgPSBbXTtcbiAgICBsZXQgdmFsdWVzQiA9IFtdO1xuICAgIGxldCBkYXRlc0EgPSBbXTtcbiAgICBsZXQgZ3JhcGhEYXRhID0gW107XG4gICAgbGV0IHJhbmdlcztcbiAgICBsZXQgbWluWTtcbiAgICBsZXQgbWF4WTtcbiAgICBsZXQgcG9pbnRXaWR0aCA9IDIwXG4gICAgbGV0IHVuaXRzID0ganNvbj8udW5pdHNcblxuICAgIHRoaXMudW5pdHMgPSBqc29uLnVuaXRzXG5cbiAgICBjb25zdCBkYXRhID0gdGhpcy5nZXRHcm91cGVkRGF0YShqc29uLCBpbnRlcnZhbCk7XG4gICAgZ3JhcGhEYXRhID0gZGF0YT8uZ3JhcGhEYXRhXG4gICAgdmFsdWVzQSA9IGRhdGE/LnZhbHVlc0FcbiAgICB2YWx1ZXNCID0gZGF0YT8udmFsdWVzQlxuICAgIGRhdGVzQSA9IGRhdGE/LmRhdGVzXG5cbiAgICBtaW5ZID0gdGhpcy5zZXRNaW5ZKCB2YWx1ZXNBLCB2YWx1ZXNCKTtcbiAgICBtYXhZID0gdGhpcy5zZXRNYXhZKCB2YWx1ZXNBLCB2YWx1ZXNCKTtcbiAgICByYW5nZXMgPSB0aGlzLmdldFJhbmdlcyhqc29uLCBtaW5ZLCBtYXhZKVxuICAgIHRoaXMucmFuZ2VzID0gcmFuZ2VzXG4gICAgcG9pbnRXaWR0aCA9IHRoaXMuc2V0UG9pbnRXaWR0aChpbnRlcnZhbClcblxuICAgIC8vY29uc29sZS5sb2coXCIqIHZhbHVlc0E6IFwiLCB2YWx1ZXNBKTtcbiAgICAvL2NvbnNvbGUubG9nKFwiKiB2YWx1ZXNCOiBcIiwgdmFsdWVzQik7XG4gICAgLy9jb25zb2xlLmxvZyhcIiogZGF0ZXM6IFwiLCBkYXRlc0EpO1xuICAgIC8vY29uc29sZS5sb2coXCIqIGdyYXBoaWM6IFwiLCBncmFwaERhdGEpO1xuXG4gICAgc3dpdGNoIChvcHQpIHtcbiAgICAgIGNhc2UgJ3JhbmdlJzpcbiAgICAgICAgdHlwZUNoYXJ0ID0gJ2FyZWFyYW5nZSdcbiAgICAgICAgYnJlYWs7IFxuICAgICAgY2FzZSAnc3VtJzpcbiAgICAgIGNhc2UgJ2F2Zyc6XG4gICAgICBjYXNlICdsYXNWYWx1ZSc6IFxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdHlwZUNoYXJ0ID0gJ2NhdGVnb3J5J1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICB0aGlzLnNldFhBeGlzKHR5cGVDaGFydCwgZGF0ZXNBKVxuICAgIHRoaXMuc2V0WUF4aXMobWluWSxtYXhZLCByYW5nZXMsIHVuaXRzKVxuICAgIHRoaXMuc2V0U2VyaWVzKG5hbWUsIGdyYXBoRGF0YSwgcG9pbnRXaWR0aClcbiAgfVxuXG59XG4iXX0=
@@ -43,6 +43,7 @@ export class NavigationService {
43
43
  this.back();
44
44
  }
45
45
  redirecPushNotification(data, notification) {
46
+ //console.log("ADVICES LOG: " + JSON.stringify(data))
46
47
  // //console.log("DATA " + data)
47
48
  // //console.log("Notification " + notification)
48
49
  switch (data.action) {
@@ -67,8 +68,9 @@ export class NavigationService {
67
68
  });
68
69
  break;
69
70
  case "EXERCISE":
71
+ let programablePlayId = data?.programable_play_id;
70
72
  this._zone.run(() => {
71
- this.router.navigate([ContentTypePath.ExercisesDetail], { state: { data: data, id: data.id, programable_id: data.programable_play_id } });
73
+ this.router.navigate([ContentTypePath.ExercisesDetail], { state: { data: data, id: data.id, programable_id: data?.id, programable_play: programablePlayId } });
72
74
  });
73
75
  break;
74
76
  case "FORM":
@@ -97,7 +99,7 @@ export class NavigationService {
97
99
  staff = data?.origin;
98
100
  else
99
101
  staff = data?.origin ? JSON.parse(data?.origin) : null;
100
- ////console.log('staff: ', staff);
102
+ //console.log('staff: ', staff);
101
103
  this._zone.run(() => {
102
104
  this.router.navigate([ContentTypePath.Message], { state: { data: data, chat: data.id, staff: staff, customData: data?.user_id } });
103
105
  });
@@ -137,4 +139,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
137
139
  providedIn: 'root'
138
140
  }]
139
141
  }], ctorParameters: () => [{ type: i1.Router }, { type: i2.Location }, { type: i0.NgZone }, { type: i3.Platform }] });
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2VydmljZS1saWIvc3JjL2xpYi9zZXJ2aWNlcy9uYXZpZ2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFFeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7OztBQU03RCxNQUFNLE9BQU8saUJBQWlCO0lBSTVCLFlBQ1UsTUFBYyxFQUNkLFFBQWtCLEVBQ2xCLEtBQWEsRUFDYixRQUFrQjtRQUhsQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQU5wQixZQUFPLEdBQWEsRUFBRSxDQUFDO1FBTzdCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3JDLElBQUksS0FBSyxZQUFZLGFBQWEsRUFBRSxDQUFDO2dCQUNuQyx3REFBd0Q7Z0JBQ3hELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQzdDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDckMsNkNBQTZDO1FBQy9DLENBQUMsQ0FBQyxDQUFBO1FBRUYsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUVqQyxJQUFJLENB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Q0FBQyxDQUFDO2dCQUM3RixDQUFDLENBQUMsQ0FBQztnQkFDSCxNQUFNO1lBQ1IsS0FBSyxVQUFVO2dCQUNiLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtvQkFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNqRyxDQUFDLENBQUMsQ0FBQztnQkFDSCxNQUFNO1lBQ1IsS0FBSyxlQUFlO2dCQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7b0JBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSwyQkFBMkIsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzdHLENBQUMsQ0FBQyxDQUFDO2dCQUNILE1BQU07WUFDUixLQUFLLFdBQVc7Z0JBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO29CQUNwQix5Q0FBeUM7Z0JBQ3pDLENBQUMsQ0FBQyxDQUFDO2dCQUNILE1BQU07WUFDUjtnQkFDRSxPQUFPLENBQUMsS0FBSyxDQUFDLGtGQUFrRixDQUFDLENBQUE7Z0JBQ2xHLHdDQUF3QztnQkFDdkMsTUFBTTtRQUNWLENBQUM7SUFDSCxDQUFDOytHQW5JVSxpQkFBaUI7bUhBQWpCLGlCQUFpQixjQUZoQixNQUFNOzs0RkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBDb250ZW50VHlwZVBhdGggfSBmcm9tICcuLi9tb2RlbHMvc2hhcmVkLWNhcmUtcGxhbic7XG5pbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTmF2aWdhdGlvblNlcnZpY2Uge1xuXG4gIHByaXZhdGUgaGlzdG9yeTogc3RyaW5nW10gPSBbXTtcbiBcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgXG4gICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24sXG4gICAgcHJpdmF0ZSBfem9uZTogTmdab25lLCAgXG4gICAgcHJpdmF0ZSBwbGF0Zm9ybTogUGxhdGZvcm0sKSB7XG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcIk5hdmlnYXRpb25FbmRcIiwgZXZlbnQudXJsQWZ0ZXJSZWRpcmVjdHMpO1xuICAgICAgICB0aGlzLmhpc3RvcnkucHVzaChldmVudC51cmxBZnRlclJlZGlyZWN0cyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiBcbiAgYmFjaygpOiB2b2lkIHtcbiAgICB0aGlzLmhpc3RvcnkuZm9yRWFjaCggKGV2ZW50LCBpbmRleCkgPT4ge1xuICAgICAgLy9jb25zb2xlLmxvZyhcIk5hdmlnYXRpb25FbmRcIiwgaW5kZXgsIGV2ZW50KTtcbiAgICB9KVxuXG4gICAgbGV0IGxhc3RVcmwgPSB0aGlzLmhpc3RvcnkucG9wKCk7XG5cbiAgICB0aGlzLmhpc3RvcnkuZm9yRWFjaCgoZXZlbnQsIGluZGV4KSA9PiB7XG4gICAgICAvL2NvbnNvbGUubG9nKFwiTmF2aWdhdGlvbkVuZCBwb3BcIiwgaW5kZXgsIGV2ZW50KTtcbiAgICB9KVxuXG4gICAgaWYgKHRoaXMuaGlzdG9yeT8ubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5sb2NhdGlvbi5iYWNrKClcbiAgICAgIC8vdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2Ake2xhc3RVcmx9YF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKFwiL2hvbWVcIik7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY2xvc2UobW9kYWxDdHJsPyk6IFByb21pc2U8dm9pZD4gIHtcbiAgICBjb25zdCBtb2RhbCA9IGF3YWl0IG1vZGFsQ3RybD8uZ2V0VG9wKCk7XG4gICAgaWYgKG1vZGFsKVxuICAgICAgYXdhaXQgbW9kYWwuZGlzbWlzcyh7ZXJyb3I6bnVsbH0pO1xuICAgIGVsc2UgdGhpcy5iYWNrKClcbiAgfVxuXG5cblxuICByZWRpcmVjUHVzaE5vdGlmaWNhdGlvbihkYXRhLCBub3RpZmljYXRpb24/KSB7XG5cbiAgICAvLyAvL2NvbnNvbGUubG9nKFwiREFUQSBcIiArIGRhdGEpXG4gICAgLy8gLy9jb25zb2xlLmxvZyhcIk5vdGlmaWNhdGlvbiBcIiArIG5vdGlmaWNhdGlvbilcblxuICAgIHN3aXRjaCAoZGF0YS5hY3Rpb24pIHtcbiAgICAgIGNhc2UgXCJBRFZJQ0VcIjpcbiAgICAgICAgdGhpcy5fem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtDb250ZW50VHlwZVBhdGguQWR2aWNlc0RldGFpbF0sIHsgc3RhdGU6IHsgZGF0YTogZGF0YSwgaWQ6IGRhdGEuaWQgfSB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIkFHRU5EQVwiOlxuICAgICAgICB0aGlzLl96b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW0NvbnRlbnRUeXBlUGF0aC5BZ2VuZGFEZXRhaWxdLCB7IHN0YXRlOiB7IGRhdGE6IGRhdGEsIGlkOiBkYXRhLmlkIH0gfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJESUVUXCI6XG4gICAgICAgIHRoaXMuX3pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbQ29udGVudFR5cGVQYXRoLkRpZXRzRGV0YWlsXSwgeyBzdGF0ZTogeyBkYXRhOiBkYXRhLCBpZDogZGF0YS5pZCB9IH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiRFJVR0lOVEFLRVwiOlxuICAgICAgICB0aGlzLl96b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW0NvbnRlbnRUeXBlUGF0aC5NZWRpY2F0aW9uXSwgeyBzdGF0ZTogeyBkYXRhOiBkYXRhLCBzZWdtZW50OiAnbWVkaWNhdGlvbicgfSB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIkVYRVJDSVNFXCI6XG4gICAgICAgIHRoaXMuX3pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbQ29udGVudFR5cGVQYXRoLkV4ZXJjaXNlc0RldGFpbF0sIHsgc3RhdGU6IHsgZGF0YTogZGF0YSwgaWQ6IGRhdGEuaWQsIHByb2dyYW1hYmxlX2lkOiBkYXRhLnByb2dyYW1hYmxlX3BsYXlfaWQgfSB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIkZPUk1cIjpcbiAgICAgICAgdGhpcy5fem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtDb250ZW50VHlwZVBhdGguRm9ybURldGFpbCwgeyBpZDogZGF0YS5pZCB9XSwgeyBzdGF0ZTogeyBkYXRhOiBkYXRhIH0gfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJHQU1FXCI6XG4gICAgICAgIHRoaXMuX3pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICBpZiAoZGF0YS50eXBlID09ICdmb3JtJykge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW0NvbnRlbnRUeXBlUGF0aC5Gb3JtRGV0YWlsLCB7IGlkOiBkYXRhLmZvcm1faWQgfV0sIHsgc3RhdGU6IHsgZGF0YTogZGF0YSwgZ2FtZV9wbGF5X2lkOiBkYXRhPy5nYW1lX3BsYXlfaWQgfSB9KTtcbiAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtDb250ZW50VHlwZVBhdGguR2FtZXNEZXRhaWxdLCB7IHN0YXRlOiB7IGRhdGE6IGRhdGEsIGlkOiBkYXRhLmlkLCBzZXJ2ZXJfdXJsOiBkYXRhPy5zZXJ2ZXJfdXJsIH0gfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJMRVZFTEFTU0lHTkVEXCI6IC8vR09BTFNcbiAgICAgICAgdGhpcy5fem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtDb250ZW50VHlwZVBhdGguR29hbHNdLCB7IHN0YXRlOiB7IGRhdGE6IGRhdGEgfSB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIk1FU1NBR0VcIjpcbiAgICAgICAgbGV0IHN0YWZmO1xuICAgICAgICAvLyBEaWZmZXJlbnQgcGF5bG9hZHMgZm9yIGlvcyBhbmQgYW5kcm9pZFxuICAgICAgICBpZiAodGhpcy5wbGF0Zm9ybS5pcygnaW9zJykpXG4gICAgICAgICAgc3RhZmYgPSBkYXRhPy5vcmlnaW47XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBzdGFmZiA9IGRhdGE/Lm9yaWdpbiA/IEpTT04ucGFyc2UoZGF0YT8ub3JpZ2luKSA6IG51bGw7XG4gICAgICAgIC8vLy9jb25zb2xlLmxvZygnc3RhZmY6ICcsIHN0YWZmKTtcbiAgICAgICAgdGhpcy5fem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtDb250ZW50VHlwZVBhdGguTWVzc2FnZV0sIHsgc3RhdGU6IHsgZGF0YTogZGF0YSwgY2hhdDogZGF0YS5pZCwgc3RhZmY6IHN0YWZmLCBjdXN0b21EYXRhOiBkYXRhPy51c2VyX2lkIH0gfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJORVdTXCI6XG4gICAgICAgIHRoaXMuX3pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbQ29udGVudFR5cGVQYXRoLk5ld3NEZXRhaWxdLCB7IHN0YXRlOiB7IGRhdGE6IGRhdGEsIGlkOiBkYXRhLmlkIH0gfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJSRU1JTkRFUlwiOlxuICAgICAgICB0aGlzLl96b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW0NvbnRlbnRUeXBlUGF0aC5SZW1pbmRlckRldGFpbF0sIHsgc3RhdGU6IHsgZGF0YTogZGF0YSwgaWQ6IGRhdGEuaWQgfSB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIlNIQVJFQ0FSRVBMQU5cIjpcbiAgICAgICAgdGhpcy5fem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtDb250ZW50VHlwZVBhdGguSG9tZV0sIHsgc3RhdGU6IHsgZGF0YTogZGF0YSwgb3Blbk5vdGlmaWNhdGlvbkFsZXJ0RGlhbG9nOiB0cnVlIH0gfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJWSURFT0NBTExcIjpcbiAgICAgICAgdGhpcy5fem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAvLyAgdGhpcy5yZWRpcmVjVG9WaWRlb2NhbGwobm90aWZpY2F0aW9uKVxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zb2xlLmVycm9yKCdBY3Rpb24gb24gbG9jYWxOb3RpZmljYXRpb25BY3Rpb25QZXJmb3JtZWQgbm90IGZvdW5kLCByZWRpcmVjdGluZyB0byB2aWRlb2NhbGw6ICcpXG4gICAgICAgLy8gdGhpcy5yZWRpcmVjVG9WaWRlb2NhbGwobm90aWZpY2F0aW9uKVxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbn1cbiJdfQ==
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2VydmljZS1saWIvc3JjL2xpYi9zZXJ2aWNlcy9uYXZpZ2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFFeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7OztBQU03RCxNQUFNLE9BQU8saUJBQWlCO0lBSTVCLFlBQ1UsTUFBYyxFQUNkLFFBQWtCLEVBQ2xCLEtBQWEsRUFDYixRQUFrQjtRQUhsQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQU5wQixZQUFPLEdBQWEsRUFBRSxDQUFDO1FBTzdCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3JDLElBQUksS0FBSyxZQUFZLGFBQWEsRUFBRSxDQUFDO2dCQUNuQyx3REFBd0Q7Z0JBQ3hELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQzdDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDckMsNkNBQTZDO1FBQy9DLENBQUMsQ0FBQyxDQUFBO1FBRUYsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUVqQyxJQUFJLENB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QU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBDb250ZW50VHlwZVBhdGggfSBmcm9tICcuLi9tb2RlbHMvc2hhcmVkLWNhcmUtcGxhbic7XG5pbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTmF2aWdhdGlvblNlcnZpY2Uge1xuXG4gIHByaXZhdGUgaGlzdG9yeTogc3RyaW5nW10gPSBbXTtcbiBcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgXG4gICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24sXG4gICAgcHJpdmF0ZSBfem9uZTogTmdab25lLCAgXG4gICAgcHJpdmF0ZSBwbGF0Zm9ybTogUGxhdGZvcm0sKSB7XG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcIk5hdmlnYXRpb25FbmRcIiwgZXZlbnQudXJsQWZ0ZXJSZWRpcmVjdHMpO1xuICAgICAgICB0aGlzLmhpc3RvcnkucHVzaChldmVudC51cmxBZnRlclJlZGlyZWN0cyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiBcbiAgYmFjaygpOiB2b2lkIHtcbiAgICB0aGlzLmhpc3RvcnkuZm9yRWFjaCggKGV2ZW50LCBpbmRleCkgPT4ge1xuICAgICAgLy9jb25zb2xlLmxvZyhcIk5hdmlnYXRpb25FbmRcIiwgaW5kZXgsIGV2ZW50KTtcbiAgICB9KVxuXG4gICAgbGV0IGxhc3RVcmwgPSB0aGlzLmhpc3RvcnkucG9wKCk7XG5cbiAgICB0aGlzLmhpc3RvcnkuZm9yRWFjaCgoZXZlbnQsIGluZGV4KSA9PiB7XG4gICAgICAvL2NvbnNvbGUubG9nKFwiTmF2aWdhdGlvbkVuZCBwb3BcIiwgaW5kZXgsIGV2ZW50KTtcbiAgICB9KVxuXG4gICAgaWYgKHRoaXMuaGlzdG9yeT8ubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5sb2NhdGlvbi5iYWNrKClcbiAgICAgIC8vdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2Ake2xhc3RVcmx9YF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKFwiL2hvbWVcIik7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY2xvc2UobW9kYWxDdHJsPyk6IFByb21pc2U8dm9pZD4gIHtcbiAgICBjb25zdCBtb2RhbCA9IGF3YWl0IG1vZGFsQ3RybD8uZ2V0VG9wKCk7XG4gICAgaWYgKG1vZGFsKVxuICAgICAgYXdhaXQgbW9kYWwuZGlzbWlzcyh7ZXJyb3I6bnVsbH0pO1xuICAgIGVsc2UgdGhpcy5iYWNrKClcbiAgfVxuXG5cblxuICByZWRpcmVjUHVzaE5vdGlmaWNhdGlvbihkYXRhLCBub3RpZmljYXRpb24/KSB7XG4gICAgLy9jb25zb2xlLmxvZyhcIkFEVklDRVMgTE9HOiBcIiArIEpTT04uc3RyaW5naWZ5KGRhdGEpKVxuICAgIC8vIC8vY29uc29sZS5sb2coXCJEQVRBIFwiICsgZGF0YSlcbiAgICAvLyAvL2NvbnNvbGUubG9nKFwiTm90aWZpY2F0aW9uIFwiICsgbm90aWZpY2F0aW9uKVxuXG4gICAgc3dpdGNoIChkYXRhLmFjdGlvbikge1xuICAgICAgY2FzZSBcIkFEVklDRVwiOlxuICAgICAgICB0aGlzLl96b25lLnJ1bigoKSA9PiB7ICAgIFxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtDb250ZW50VHlwZVBhdGguQWR2aWNlc0RldGFpbF0sIHsgc3RhdGU6IHsgZGF0YTogZGF0YSwgaWQ6IGRhdGEuaWQgfSB9KTsgICAgICBcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIkFHRU5EQVwiOlxuICAgICAgICB0aGlzLl96b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW0NvbnRlbnRUeXBlUGF0aC5BZ2VuZGFEZXRhaWxdLCB7IHN0YXRlOiB7IGRhdGE6IGRhdGEsIGlkOiBkYXRhLmlkIH0gfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJESUVUXCI6XG4gICAgICAgIHRoaXMuX3pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbQ29udGVudFR5cGVQYXRoLkRpZXRzRGV0YWlsXSwgeyBzdGF0ZTogeyBkYXRhOiBkYXRhLCBpZDogZGF0YS5pZCB9IH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiRFJVR0lOVEFLRVwiOlxuICAgICAgICB0aGlzLl96b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW0NvbnRlbnRUeXBlUGF0aC5NZWRpY2F0aW9uXSwgeyBzdGF0ZTogeyBkYXRhOiBkYXRhLCBzZWdtZW50OiAnbWVkaWNhdGlvbicgfSB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIkVYRVJDSVNFXCI6XG4gICAgICAgIGxldCBwcm9ncmFtYWJsZVBsYXlJZCA9IGRhdGE/LnByb2dyYW1hYmxlX3BsYXlfaWRcbiAgICAgICAgdGhpcy5fem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtDb250ZW50VHlwZVBhdGguRXhlcmNpc2VzRGV0YWlsXSwgeyBzdGF0ZTogeyBkYXRhOiBkYXRhLCBpZDogZGF0YS5pZCwgcHJvZ3JhbWFibGVfaWQ6IGRhdGE/LmlkLCBwcm9ncmFtYWJsZV9wbGF5OiBwcm9ncmFtYWJsZVBsYXlJZH0gfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJGT1JNXCI6XG4gICAgICAgIHRoaXMuX3pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbQ29udGVudFR5cGVQYXRoLkZvcm1EZXRhaWwsIHsgaWQ6IGRhdGEuaWQgfV0sIHsgc3RhdGU6IHsgZGF0YTogZGF0YSB9IH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiR0FNRVwiOlxuICAgICAgICB0aGlzLl96b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgaWYgKGRhdGEudHlwZSA9PSAnZm9ybScpIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtDb250ZW50VHlwZVBhdGguRm9ybURldGFpbCwgeyBpZDogZGF0YS5mb3JtX2lkIH1dLCB7IHN0YXRlOiB7IGRhdGE6IGRhdGEsIGdhbWVfcGxheV9pZDogZGF0YT8uZ2FtZV9wbGF5X2lkIH0gfSk7XG4gICAgICAgICAgfSBlbHNlXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbQ29udGVudFR5cGVQYXRoLkdhbWVzRGV0YWlsXSwgeyBzdGF0ZTogeyBkYXRhOiBkYXRhLCBpZDogZGF0YS5pZCwgc2VydmVyX3VybDogZGF0YT8uc2VydmVyX3VybCB9IH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiTEVWRUxBU1NJR05FRFwiOiAvL0dPQUxTXG4gICAgICAgIHRoaXMuX3pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbQ29udGVudFR5cGVQYXRoLkdvYWxzXSwgeyBzdGF0ZTogeyBkYXRhOiBkYXRhIH0gfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJNRVNTQUdFXCI6XG4gICAgICAgIGxldCBzdGFmZjtcbiAgICAgICAgLy8gRGlmZmVyZW50IHBheWxvYWRzIGZvciBpb3MgYW5kIGFuZHJvaWRcbiAgICAgICAgaWYgKHRoaXMucGxhdGZvcm0uaXMoJ2lvcycpKVxuICAgICAgICAgIHN0YWZmID0gZGF0YT8ub3JpZ2luO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgc3RhZmYgPSBkYXRhPy5vcmlnaW4gPyBKU09OLnBhcnNlKGRhdGE/Lm9yaWdpbikgOiBudWxsO1xuICAgICAgICAvL2NvbnNvbGUubG9nKCdzdGFmZjogJywgc3RhZmYpO1xuICAgICAgICB0aGlzLl96b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW0NvbnRlbnRUeXBlUGF0aC5NZXNzYWdlXSwgeyBzdGF0ZTogeyBkYXRhOiBkYXRhLCBjaGF0OiBkYXRhLmlkLCBzdGFmZjogc3RhZmYsIGN1c3RvbURhdGE6IGRhdGE/LnVzZXJfaWQgfSB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIk5FV1NcIjpcbiAgICAgICAgdGhpcy5fem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtDb250ZW50VHlwZVBhdGguTmV3c0RldGFpbF0sIHsgc3RhdGU6IHsgZGF0YTogZGF0YSwgaWQ6IGRhdGEuaWQgfSB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIlJFTUlOREVSXCI6XG4gICAgICAgIHRoaXMuX3pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbQ29udGVudFR5cGVQYXRoLlJlbWluZGVyRGV0YWlsXSwgeyBzdGF0ZTogeyBkYXRhOiBkYXRhLCBpZDogZGF0YS5pZCB9IH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiU0hBUkVDQVJFUExBTlwiOlxuICAgICAgICB0aGlzLl96b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW0NvbnRlbnRUeXBlUGF0aC5Ib21lXSwgeyBzdGF0ZTogeyBkYXRhOiBkYXRhLCBvcGVuTm90aWZpY2F0aW9uQWxlcnREaWFsb2c6IHRydWUgfSB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIlZJREVPQ0FMTFwiOlxuICAgICAgICB0aGlzLl96b25lLnJ1bigoKSA9PiB7XG4gICAgICAgIC8vICB0aGlzLnJlZGlyZWNUb1ZpZGVvY2FsbChub3RpZmljYXRpb24pXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FjdGlvbiBvbiBsb2NhbE5vdGlmaWNhdGlvbkFjdGlvblBlcmZvcm1lZCBub3QgZm91bmQsIHJlZGlyZWN0aW5nIHRvIHZpZGVvY2FsbDogJylcbiAgICAgICAvLyB0aGlzLnJlZGlyZWNUb1ZpZGVvY2FsbChub3RpZmljYXRpb24pXG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxufVxuIl19