@hitsoft/uretim-yonetimi 1.0.45 → 1.0.46

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.
@@ -22,6 +22,7 @@ export class HitFillingControlComponent {
22
22
  this.qrCode = '';
23
23
  this.lines = [];
24
24
  this.isDataLoadedFromDb = false; // DB'den veri mi geldi yoksa yeni mi
25
+ this.scannedBarcodeKeys = new Set();
25
26
  }
26
27
  ngOnInit() {
27
28
  // Initialization logic
@@ -93,6 +94,21 @@ export class HitFillingControlComponent {
93
94
  this.focusQRInput();
94
95
  return;
95
96
  }
97
+ // Mükerrer barkod kontrolü: aynı iş emri + tartım sıra no kombinasyonu tekrar okutulamaz
98
+ if (parsed.workOrderNo && parsed.weighingSequenceNo) {
99
+ const barcodeKey = `${parsed.workOrderNo}_${parsed.weighingSequenceNo}`;
100
+ if (this.scannedBarcodeKeys.has(barcodeKey)) {
101
+ this.confirmation.error('', 'Aynı barkod tekrar okutulamaz!', {
102
+ hideYesBtn: true,
103
+ cancelText: 'Kapat',
104
+ dismissible: false,
105
+ });
106
+ this.qrCode = '';
107
+ this.focusQRInput();
108
+ return;
109
+ }
110
+ this.scannedBarcodeKeys.add(barcodeKey);
111
+ }
96
112
  // Grid'de bu item'ı bul
97
113
  const line = this.lines.find(x => x.itemCode === parsed.chemicalCode);
98
114
  if (!line) {
@@ -265,6 +281,7 @@ export class HitFillingControlComponent {
265
281
  this.lines = [];
266
282
  this.isDataLoadedFromDb = false;
267
283
  this.isSaving = false;
284
+ this.scannedBarcodeKeys.clear();
268
285
  this.focusOnIsEmriNo();
269
286
  }
270
287
  get showKazanDegisimiButton() {
@@ -309,6 +326,7 @@ export class HitFillingControlComponent {
309
326
  // Grid'i refresh et
310
327
  this.dataGrid.instance.refresh();
311
328
  this.isDataLoadedFromDb = false; // Artık yeni veri girilecek
329
+ this.scannedBarcodeKeys.clear(); // Yeni kazan için okutulmuş barkodları sıfırla
312
330
  // QR input'a focus et
313
331
  this.focusOnQrCode();
314
332
  }
@@ -358,4 +376,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
358
376
  type: ViewChild,
359
377
  args: ['gridLines', { static: false }]
360
378
  }] } });
361
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWZpbGxpbmctY29udHJvbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91cmV0aW0teW9uZXRpbWkvc3JjL2xpYi9jb21wb25lbnRzL2hpdC1maWxsaW5nLWNvbnRyb2wvaGl0LWZpbGxpbmctY29udHJvbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91cmV0aW0teW9uZXRpbWkvc3JjL2xpYi9jb21wb25lbnRzL2hpdC1maWxsaW5nLWNvbnRyb2wvaGl0LWZpbGxpbmctY29udHJvbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUs3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7OztBQU9uRCxNQUFNLE9BQU8sMEJBQTBCO0lBZ0JyQyxZQUNVLE9BQWlDLEVBQ2pDLFlBQWlDLEVBQ2pDLE1BQWM7UUFGZCxZQUFPLEdBQVAsT0FBTyxDQUEwQjtRQUNqQyxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDakMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQWJ4QixvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUNqQywyQkFBc0IsR0FBWSxLQUFLLENBQUM7UUFDeEMsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFDeEIsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixXQUFNLEdBQVcsRUFBRSxDQUFDO1FBQ3BCLFVBQUssR0FBeUIsRUFBRSxDQUFDO1FBQ2pDLHVCQUFrQixHQUFZLEtBQUssQ0FBQyxDQUFDLHFDQUFxQztJQU12RSxDQUFDO0lBRUosUUFBUTtRQUNOLHVCQUF1QjtJQUN6QixDQUFDO0lBRUQsZUFBZTtRQUNiLElB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QixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3RDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNSLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDbkIsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN0QyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDUixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O3VIQXZYVSwwQkFBMEI7MkdBQTFCLDBCQUEwQixrV0NadkMsMmpKQStGQTsyRkRuRmEsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLHlCQUF5QjtzS0FLVSxjQUFjO3NCQUExRCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0EsWUFBWTtzQkFBdEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNFLFFBQVE7c0JBQWxELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRHhOdW1iZXJCb3hDb21wb25lbnQsIER4VGV4dEJveENvbXBvbmVudCwgRHhEYXRhR3JpZENvbXBvbmVudCB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhcic7XHJcbmltcG9ydCB7IEhpdEZpbGxpbmdDb250cm9sU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtZmlsbGluZy1jb250cm9sL2hpdC1maWxsaW5nLWNvbnRyb2wuc2VydmljZSc7XHJcbmltcG9ydCB7IEZpbGxpbmdDb250cm9sTGluZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtZmlsbGluZy1jb250cm9sL21vZGVscyc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XHJcbmltcG9ydCB7IEhpdEhlbHBlciB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9tb2RlbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItaGl0LWZpbGxpbmctY29udHJvbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hpdC1maWxsaW5nLWNvbnRyb2wuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2hpdC1maWxsaW5nLWNvbnRyb2wuY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSGl0RmlsbGluZ0NvbnRyb2xDb21wb25lbnQge1xyXG4gIEBWaWV3Q2hpbGQoJ2lzRW1yaU5vUmVmJywgeyBzdGF0aWM6IGZhbHNlIH0pIG5tYkJveElzRW1yaU5vOiBEeE51bWJlckJveENvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdxckNvZGVSZWYnLCB7IHN0YXRpYzogZmFsc2UgfSkgdHh0Qm94UXJDb2RlOiBEeFRleHRCb3hDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnZ3JpZExpbmVzJywgeyBzdGF0aWM6IGZhbHNlIH0pIGRhdGFHcmlkOiBEeERhdGFHcmlkQ29tcG9uZW50O1xyXG5cclxuICBpc0VtcmlObzogbnVtYmVyO1xyXG4gIHNlYXJjaEJhc2lsZGlNaTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzRW1yaUJhcmtvZHVHZWNlcmxpTWk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1NhdmluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGhhdEJpbGdpc2k6IHN0cmluZyA9ICcnO1xyXG4gIGFtYmFsYWpMb3Q6IHN0cmluZyA9ICcnO1xyXG4gIHFyQ29kZTogc3RyaW5nID0gJyc7XHJcbiAgbGluZXM6IEZpbGxpbmdDb250cm9sTGluZVtdID0gW107XHJcbiAgaXNEYXRhTG9hZGVkRnJvbURiOiBib29sZWFuID0gZmFsc2U7IC8vIERCJ2RlbiB2ZXJpIG1pIGdlbGRpIHlva3NhIHllbmkgbWlcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHNlcnZpY2U6IEhpdEZpbGxpbmdDb250cm9sU2VydmljZSxcclxuICAgIHByaXZhdGUgY29uZmlybWF0aW9uOiBDb25maXJtYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICAvLyBJbml0aWFsaXphdGlvbiBsb2dpY1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5mb2N1c09uSXNFbXJpTm8oKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFByb2R1Y3Rpb25PcmRlcigpIHtcclxuICAgIGlmICghdGhpcy5pc0VtcmlObykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5pc0VtcmlCYXJrb2R1R2VjZXJsaU1pID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlYXJjaEJhc2lsZGlNaSA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5zZXJ2aWNlLmdldEZpbGxpbmdDb250cm9sSW5mbyh0aGlzLmlzRW1yaU5vKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiByZXNwb25zZSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlPy5pc1N1Y2Nlc3NmdWwpIHtcclxuICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IChyZXNwb25zZS5pdGVtcz8uc3RhdHVzIHx8ICcnKS50b1N0cmluZygpLnRvVXBwZXJDYXNlKCk7XHJcbiAgICAgICAgICBpZiAoc3RhdHVzID09PSAnUCcpIHtcclxuICAgICAgICAgICAgdGhpcy5jb25maXJtYXRpb24ud2FybignJywgJ0J1IMO8cmV0aW0gc2lwYXJpxZ9pIG9uYXlsYW5tYW3EscWfdMSxciwga29udHJvbCB5YXDEsWxhbWF6LicsIHtcclxuICAgICAgICAgICAgICBoaWRlWWVzQnRuOiB0cnVlLFxyXG4gICAgICAgICAgICAgIGNhbmNlbFRleHQ6ICdLYXBhdCcsXHJcbiAgICAgICAgICAgICAgZGlzbWlzc2libGU6IGZhbHNlLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5jbGVhckFsbCgpO1xyXG4gICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5oYXRCaWxnaXNpID0gcmVzcG9uc2UuaXRlbXMudV9IYXQ7XHJcbiAgICAgICAgICB0aGlzLmFtYmFsYWpMb3QgPSByZXNwb25zZS5pdGVtcy51X1RSS0FNQkFMQUpMT1Q7XHJcbiAgICAgICAgICB0aGlzLmxpbmVzID0gcmVzcG9uc2UuaXRlbXMubGluZXM7XHJcbiAgICAgICAgICB0aGlzLmlzRW1yaUJhcmtvZHVHZWNlcmxpTWkgPSB0cnVlO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAvLyBEQidkZW4gdmVyaSBnZWxpcCBnZWxtZWRpxJ9pbmkga29udHJvbCBldCAoZW4gYXogYmlyIHNhdMSxcmRhIGJhdGNoTnVtYmVyIHZhcnNhIERCJ2RlbiBnZWxtacWfdGlyKVxyXG4gICAgICAgICAgdGhpcy5pc0RhdGFMb2FkZWRGcm9tRGIgPSB0aGlzLmxpbmVzLnNvbWUoeCA9PiB4LmJhdGNoTnVtYmVyICYmIHguYmF0Y2hOdW1iZXIudHJpbSgpICE9PSAnJyk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmZvY3VzT25RckNvZGUoKTtcclxuICAgICAgICAgIH0sIDEwMCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuaXNFbXJpQmFya29kdUdlY2VybGlNaSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogZSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc0VtcmlCYXJrb2R1R2VjZXJsaU1pID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hCYXNpbGRpTWkgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jb25maXJtYXRpb24uc3RhdHVzJC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNsZWFyQWxsKCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblFyQ29kZUNoYW5nZSgpIHtcclxuICAgIGlmICghdGhpcy5xckNvZGUgfHwgdGhpcy5xckNvZGUudHJpbSgpID09PSAnJykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgZGVidWdnZXI7XHJcblxyXG4gICAgY29uc3QgcGFyc2VkID0gSGl0SGVscGVyLnBhcnNlUVIodGhpcy5xckNvZGUpO1xyXG4gICAgaWYgKCFwYXJzZWQpIHtcclxuICAgICAgdGhpcy5jb25maXJtYXRpb24uZXJyb3IoJycsICdHZcOnZXJzaXogUVIga29kIGZvcm1hdMSxIScsIHtcclxuICAgICAgICBoaWRlWWVzQnRuOiB0cnVlLFxyXG4gICAgICAgIGNhbmNlbFRleHQ6ICdLYXBhdCcsXHJcbiAgICAgICAgZGlzbWlzc2libGU6IGZhbHNlLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5xckNvZGUgPSAnJztcclxuICAgICAgdGhpcy5mb2N1c1FSSW5wdXQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEdyaWQnZGUgYnUgaXRlbSfEsSBidWxcclxuICAgIGNvbnN0IGxpbmUgPSB0aGlzLmxpbmVzLmZpbmQoeCA9PiB4Lml0ZW1Db2RlID09PSBwYXJzZWQuY2hlbWljYWxDb2RlKTtcclxuICAgIGlmICghbGluZSkge1xyXG4gICAgICB0aGlzLmNvbmZpcm1hdGlvbi5lcnJvcignJywgYCR7cGFyc2VkLmNoZW1pY2FsQ29kZX0ga29kbHUgw7xyw7xuIGJ1IGnFnyBlbXJpbmRlIGJ1bHVuYW1hZMSxIWAsIHtcclxuICAgICAgICBoaWRlWWVzQnRuOiB0cnVlLFxyXG4gICAgICAgIGNhbmNlbFRleHQ6ICdLYXBhdCcsXHJcbiAgICAgICAgZGlzbWlzc2libGU6IGZhbHNlLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5xckNvZGUgPSAnJztcclxuICAgICAgdGhpcy5mb2N1c1FSSW5wdXQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIMSwbGsgb2t1dG1hIGtvbnRyb2zDvCAtIEhpw6cga29udHJvbCBlZGlsbWVtacWfIHNhdMSxciB2YXJzYSwgYnUgaWxrIG9rdXRtYSBkZW1la3RpclxyXG4gICAgY29uc3QgaXNGaXJzdFNjYW4gPSAhdGhpcy5saW5lcy5zb21lKHggPT4geC5pc0NvbnRyb2xsZWQpO1xyXG4gICAgaWYgKGlzRmlyc3RTY2FuKSB7XHJcbiAgICAgIC8vIMSwbGsgb2t1dG1hIGnDp2luIMO8csO8biBhxJ9hY8SxIHZlIGthbGl0ZSBrb250cm9sw7wgeWFwXHJcbiAgICAgIGNvbnNvbGUubG9nKCfEsGxrIG9rdXRtYSB0ZXNwaXQgZWRpbGRpLCDDvHLDvG4gYcSfYWPEsSBrb250cm9sw7wgeWFwxLFsxLF5b3I6JywgcGFyc2VkLmNoZW1pY2FsQ29kZSk7XHJcbiAgICAgIHRoaXMuc2VydmljZS5oYXNQcm9kdWN0aW9uVHJlZShwYXJzZWQuY2hlbWljYWxDb2RlLCB0aGlzLmlzRW1yaU5vKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdIYXNQcm9kdWN0aW9uVHJlZSByZXNwb25zZTonLCByZXNwb25zZSk7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2U/LmlzU3VjY2Vzc2Z1bCAmJiByZXNwb25zZS5pdGVtcyA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAvLyDDnHLDvG4gYcSfYWPEsSB2YXIsIGthbGl0ZSBrb250cm9sw7wgeWFwXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCfDnHLDvG4gYcSfYWPEsSBidWx1bmR1LCBrYWxpdGUga29udHJvbMO8IHlhcMSxbMSxeW9yJyk7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tRdWFsaXR5QW5kUHJvY2VzcyhsaW5lLCBwYXJzZWQubG90TnVtYmVyLCBpc0ZpcnN0U2Nhbik7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyDDnHLDvG4gYcSfYWPEsSB5b2ssIGhhdGEgZ8O2c3RlclxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnw5xyw7xuIGHEn2FjxLEgYnVsdW5hbWFkxLEhJyk7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uLmVycm9yKCcnLCAnxLBsayBva3V0bWEgacWfbGVtaSB5YXLEsSBtYW3DvGwgacOnaW4geWFwxLFsbWFsxLEhJywge1xyXG4gICAgICAgICAgICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICAgICAgICAgICAgY2FuY2VsVGV4dDogJ0thcGF0JyxcclxuICAgICAgICAgICAgICBkaXNtaXNzaWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnFyQ29kZSA9ICcnO1xyXG4gICAgICAgICAgICB0aGlzLmZvY3VzUVJJbnB1dCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0hhc1Byb2R1Y3Rpb25UcmVlIGVycm9yOicsIGVycik7XHJcbiAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi5lcnJvcignJywgJ8OccsO8biBhxJ9hY8SxIGtvbnRyb2zDvCB5YXDEsWzEsXJrZW4gaGF0YSBvbHXFn3R1IScsIHtcclxuICAgICAgICAgICAgaGlkZVllc0J0bjogdHJ1ZSxcclxuICAgICAgICAgICAgY2FuY2VsVGV4dDogJ0thcGF0JyxcclxuICAgICAgICAgICAgZGlzbWlzc2libGU6IGZhbHNlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnFyQ29kZSA9ICcnO1xyXG4gICAgICAgICAgdGhpcy5mb2N1c1FSSW5wdXQoKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIMSwbGsgb2t1dG1hIGRlxJ9pbHNlIGRpcmVrdCBpxZ9sZVxyXG4gICAgICBjb25zb2xlLmxvZygnxLBsayBva3V0bWEgZGXEn2lsLCBkaXJla3QgacWfbGVuaXlvcicpO1xyXG4gICAgICB0aGlzLnByb2Nlc3NRclNjYW4obGluZSwgcGFyc2VkLmxvdE51bWJlcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrUXVhbGl0eUFuZFByb2Nlc3MobGluZTogRmlsbGluZ0NvbnRyb2xMaW5lLCBiYXRjaE51bWJlcjogc3RyaW5nLCBpc0ZpcnN0U2NhbjogYm9vbGVhbikge1xyXG4gICAgLy8gS2FsaXRlIGR1cnVtdSBrb250cm9sw7wgeWFwXHJcbiAgICB0aGlzLnNlcnZpY2UuY2hlY2tRdWFsaXR5U3RhdHVzKGJhdGNoTnVtYmVyLCB0aGlzLmlzRW1yaU5vLCBsaW5lLml0ZW1Db2RlKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiByZXNwb25zZSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0NoZWNrUXVhbGl0eVN0YXR1cyByZXNwb25zZTonLCByZXNwb25zZSk7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlPy5pc1N1Y2Nlc3NmdWwgJiYgcmVzcG9uc2UuaXRlbXMpIHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZS5pdGVtcy5pc0FwcHJvdmVkKSB7XHJcbiAgICAgICAgICAgIC8vIEthbGl0ZSBvbmF5bGFuZMSxLCBva3V0bWF5YSBkZXZhbSBldFxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnS2FsaXRlIGtvbnRyb2zDvCBvbmF5bGFuZMSxLCBva3V0bWF5YSBkZXZhbSBlZGlsaXlvcicpO1xyXG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NRclNjYW4obGluZSwgYmF0Y2hOdW1iZXIsIGlzRmlyc3RTY2FuKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIEthbGl0ZSBSRUQsIGhhdGEgZ8O2c3RlclxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnS2FsaXRlIGtvbnRyb2zDvCByZWRkZWRpbGRpOicsIHJlc3BvbnNlLml0ZW1zLmVycm9yTWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uLmVycm9yKCcnLCByZXNwb25zZS5pdGVtcy5lcnJvck1lc3NhZ2UgfHwgJ0thbGl0ZSBrb250cm9sw7wgcmVkZGVkaWxkaSEnLCB7XHJcbiAgICAgICAgICAgICAgaGlkZVllc0J0bjogdHJ1ZSxcclxuICAgICAgICAgICAgICBjYW5jZWxUZXh0OiAnS2FwYXQnLFxyXG4gICAgICAgICAgICAgIGRpc21pc3NpYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMucXJDb2RlID0gJyc7XHJcbiAgICAgICAgICAgIHRoaXMuZm9jdXNRUklucHV0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIFNvcmd1IHNvbnVjdSBudWxsIGdlbGRpIHZleWEgYmHFn2FyxLFzxLF6XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnS2FsaXRlIGtvbnRyb2zDvCBzb3JndXN1IHNvbnXDpyBkw7ZuZMO8cm1lZGknKTtcclxuICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uLmVycm9yKCcnLCAnQnUgbG90IG51bWFyYXPEsSBpw6dpbiBrYWxpdGUgYmlsZ2lzaSBidWx1bmFtYWTEsSEnLCB7XHJcbiAgICAgICAgICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICAgICAgICAgIGNhbmNlbFRleHQ6ICdLYXBhdCcsXHJcbiAgICAgICAgICAgIGRpc21pc3NpYmxlOiBmYWxzZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5xckNvZGUgPSAnJztcclxuICAgICAgICAgIHRoaXMuZm9jdXNRUklucHV0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0NoZWNrUXVhbGl0eVN0YXR1cyBlcnJvcjonLCBlcnIpO1xyXG4gICAgICAgIHRoaXMuY29uZmlybWF0aW9uLmVycm9yKCcnLCAnS2FsaXRlIGtvbnRyb2zDvCB5YXDEsWzEsXJrZW4gaGF0YSBvbHXFn3R1IScsIHtcclxuICAgICAgICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICAgICAgICBjYW5jZWxUZXh0OiAnS2FwYXQnLFxyXG4gICAgICAgICAgZGlzbWlzc2libGU6IGZhbHNlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMucXJDb2RlID0gJyc7XHJcbiAgICAgICAgdGhpcy5mb2N1c1FSSW5wdXQoKTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcm9jZXNzUXJTY2FuKGxpbmU6IEZpbGxpbmdDb250cm9sTGluZSwgYmF0Y2hOdW1iZXI6IHN0cmluZywgaXNGaXJzdFNjYW46IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgLy8gS29udHJvbCBlZGlsZGkgb2xhcmFrIGnFn2FyZXRsZSB2ZSBwYXJ0aSBudW1hcmFzxLFuxLEgc2V0IGV0XHJcbiAgICBsaW5lLmlzQ29udHJvbGxlZCA9IHRydWU7XHJcbiAgICBpZiAoaXNGaXJzdFNjYW4pIHtcclxuICAgICAgbGluZS5iYXRjaE51bWJlciA9IGJhdGNoTnVtYmVyO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEdyaWQnaSByZWZyZXNoIGV0XHJcbiAgICB0aGlzLmRhdGFHcmlkLmluc3RhbmNlLnJlZnJlc2goKTtcclxuXHJcbiAgICAvLyBRUiBpbnB1dCd1IHRlbWl6bGUgdmUgZm9jdXMgZXRcclxuICAgIHRoaXMucXJDb2RlID0gJyc7XHJcbiAgICB0aGlzLmZvY3VzUVJJbnB1dCgpO1xyXG4gIH1cclxuXHJcbiAgc2F2ZSgpIHtcclxuICAgIGlmICghdGhpcy5pc0VtcmlObyB8fCB0aGlzLmxpbmVzLmxlbmd0aCA9PT0gMCB8fCB0aGlzLmlzU2F2aW5nKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUw7xtIGtvbnRyb2xsZXIgdGFtYW1sYW5txLHFnyBtxLEga29udHJvbMO8XHJcbiAgICBpZiAoIXRoaXMubGluZXMuZXZlcnkoeCA9PiB4LmlzQ29udHJvbGxlZCkpIHtcclxuICAgICAgdGhpcy5jb25maXJtYXRpb24ud2FybignJywgJ1TDvG0ga29udHJvbGxlciB0YW1hbWxhbm1hZGFuIGthecSxdCBpxZ9sZW1pIHlhcMSxbGFtYXouJywge1xyXG4gICAgICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICAgICAgY2FuY2VsVGV4dDogJ0thcGF0JyxcclxuICAgICAgICBkaXNtaXNzaWJsZTogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2F2ZURhdGEgPSB7XHJcbiAgICAgIHdvcmtPcmRlck5vOiB0aGlzLmlzRW1yaU5vLFxyXG4gICAgICBsaW5lczogdGhpcy5saW5lcy5tYXAobGluZSA9PiAoe1xyXG4gICAgICAgIGxpbmVOdW06IGxpbmUubGluZU51bSxcclxuICAgICAgICBpdGVtQ29kZTogbGluZS5pdGVtQ29kZSxcclxuICAgICAgICBpc0NvbnRyb2xsZWQ6IGxpbmUuaXNDb250cm9sbGVkLFxyXG4gICAgICAgIGJhdGNoTnVtYmVyOiBsaW5lLmJhdGNoTnVtYmVyIHx8ICcnXHJcbiAgICAgIH0pKVxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmlzU2F2aW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VydmljZS5zYXZlRmlsbGluZ0NvbnRyb2woc2F2ZURhdGEpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IHJlc3BvbnNlID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2U/LmlzU3VjY2Vzc2Z1bCkge1xyXG4gICAgICAgICAgdGhpcy5jb25maXJtYXRpb24uc3VjY2VzcygnJywgJ0thecSxdCBiYcWfYXLEsWzEsSEnLCB7XHJcbiAgICAgICAgICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICAgICAgICAgIGNhbmNlbFRleHQ6ICdLYXBhdCcsXHJcbiAgICAgICAgICAgIGRpc21pc3NpYmxlOiBmYWxzZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jbGVhckFsbCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmlzU2F2aW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IGUgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNTYXZpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY29uZmlybWF0aW9uLnN0YXR1cyQuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgICAgLy8gSGF0YSBzb25yYXPEsSBpxZ9sZW1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNsZWFyQWxsKCkge1xyXG4gICAgdGhpcy5pc0VtcmlCYXJrb2R1R2VjZXJsaU1pID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlYXJjaEJhc2lsZGlNaSA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0VtcmlObyA9IG51bGw7XHJcbiAgICB0aGlzLmhhdEJpbGdpc2kgPSAnJztcclxuICAgIHRoaXMuYW1iYWxhakxvdCA9ICcnO1xyXG4gICAgdGhpcy5xckNvZGUgPSAnJztcclxuICAgIHRoaXMubGluZXMgPSBbXTtcclxuICAgIHRoaXMuaXNEYXRhTG9hZGVkRnJvbURiID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzU2F2aW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLmZvY3VzT25Jc0VtcmlObygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNob3dLYXphbkRlZ2lzaW1pQnV0dG9uKCk6IGJvb2xlYW4ge1xyXG4gICAgLy8gU2FkZWNlIERCJ2RlbiB2ZXJpIGdlbG1pxZ9zZSwgacWfIGVtcmkgb2t1dHVsbXXFnyB2ZSB0w7xtIHNhdMSxcmxhciBrb250cm9sIGVkaWxtacWfIGlzZSBnw7ZzdGVyXHJcbiAgICByZXR1cm4gdGhpcy5pc0RhdGFMb2FkZWRGcm9tRGIgJiZcclxuICAgICAgICAgICB0aGlzLmlzRW1yaUJhcmtvZHVHZWNlcmxpTWkgJiYgXHJcbiAgICAgICAgICAgdGhpcy5saW5lcy5sZW5ndGggPiAwICYmIFxyXG4gICAgICAgICAgIHRoaXMubGluZXMuZXZlcnkoeCA9PiB4LmlzQ29udHJvbGxlZCk7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNTYXZlQnV0dG9uRGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICAvLyDEsMWfIGVtcmkgeW9rc2EgdmV5YSBzYXTEsXIgeW9rc2EgdmV5YSB0w7xtIHNhdMSxcmxhciBrb250cm9sIGVkaWxtZW1pxZ9zZSB2ZXlhIGtheWRldG1lIGnFn2xlbWkgZGV2YW0gZWRpeW9yc2EgZGlzYWJsZVxyXG4gICAgcmV0dXJuICF0aGlzLmlzRW1yaU5vIHx8IFxyXG4gICAgICAgICAgIHRoaXMubGluZXMubGVuZ3RoID09PSAwIHx8IFxyXG4gICAgICAgICAgICF0aGlzLmxpbmVzLmV2ZXJ5KHggPT4geC5pc0NvbnRyb2xsZWQpIHx8XHJcbiAgICAgICAgICAgdGhpcy5pc1NhdmluZztcclxuICB9XHJcblxyXG4gIGthemFuRGVnaXNpbWkoKSB7XHJcbiAgICAvLyDEsGxrIHNvcnU6IEJ1IGthemFuYSBhaXQgdMO8bSDDvHJldGltZGVuIGdpcmnFn2xlcmkgdGFtYW1sYWTEsW7EsXogbcSxP1xyXG4gICAgdGhpcy5jb25maXJtYXRpb24ud2FybihcclxuICAgICAgJycsXHJcbiAgICAgICdCdSBrYXphbmEgYWl0IHTDvG0gw7xyZXRpbWRlbiBnaXJpxZ9sZXJpIHRhbWFtbGFkxLFuxLF6IG3EsT8nLFxyXG4gICAgICB7XHJcbiAgICAgICAgeWVzVGV4dDogJ0V2ZXQnLFxyXG4gICAgICAgIGNhbmNlbFRleHQ6ICdIYXnEsXInXHJcbiAgICAgIH1cclxuICAgICkuc3Vic2NyaWJlKHN0YXR1cyA9PiB7XHJcbiAgICAgIGlmIChzdGF0dXMgPT09ICdjb25maXJtJykge1xyXG4gICAgICAgIC8vIMSwa2luY2kgc29ydTogS2F6YW4gZGXEn2nFn2ltaSDDtm5jZXNpbmRlIGthemFuIFlNIGZpcmUgw6fEsWvEscWfxLEgZ2Vyw6dla2xlxZ90aXJpbGRpIG1pP1xyXG4gICAgICAgIHRoaXMuY29uZmlybWF0aW9uLndhcm4oXHJcbiAgICAgICAgICAnJyxcclxuICAgICAgICAgICdLYXphbiBkZcSfacWfaW1pIMO2bmNlc2luZGUga2F6YW4gWU0gZmlyZSDDp8Sxa8SxxZ/EsSBnZXLDp2VrbGXFn3RpcmlsZGkgbWk/JyxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgeWVzVGV4dDogJ0V2ZXQnLFxyXG4gICAgICAgICAgICBjYW5jZWxUZXh0OiAnSGF5xLFyJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICkuc3Vic2NyaWJlKHN0YXR1czIgPT4ge1xyXG4gICAgICAgICAgaWYgKHN0YXR1czIgPT09ICdjb25maXJtJykge1xyXG4gICAgICAgICAgICAvLyDDnMOnw7xuY8O8IHNvcnU6IEJpbGXFn2VuIGZpcmUgw6fEsWvEscWfxLEgZ2Vyw6dla2xlxZ90aXJpbGRpIG1pP1xyXG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi53YXJuKFxyXG4gICAgICAgICAgICAgICcnLFxyXG4gICAgICAgICAgICAgICdCaWxlxZ9lbiBmaXJlIMOnxLFrxLHFn8SxIGdlcsOnZWtsZcWfdGlyaWxkaSBtaT8nLFxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHllc1RleHQ6ICdFdmV0JyxcclxuICAgICAgICAgICAgICAgIGNhbmNlbFRleHQ6ICdIYXnEsXInXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApLnN1YnNjcmliZShzdGF0dXMzID0+IHtcclxuICAgICAgICAgICAgICBpZiAoc3RhdHVzMyA9PT0gJ2NvbmZpcm0nKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBUw7xtIG9uYXlsYXIgdmVyaWxkaSwga2F6YW4gZGXEn2nFn2ltaSBpxZ9sZW1pbmkgZ2Vyw6dla2xlxZ90aXJcclxuICAgICAgICAgICAgICAgIC8vIFTDvG0gc2F0xLFybGFyxLFuIElzQ29udHJvbGxlZCBhbGFuxLFuxLEgZmFsc2UgeWFwXHJcbiAgICAgICAgICAgICAgICB0aGlzLmxpbmVzLmZvckVhY2gobGluZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGxpbmUuaXNDb250cm9sbGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIGxpbmUuYmF0Y2hOdW1iZXIgPSAnJztcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAvLyBHcmlkJ2kgcmVmcmVzaCBldFxyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC5pbnN0YW5jZS5yZWZyZXNoKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzRGF0YUxvYWRlZEZyb21EYiA9IGZhbHNlOyAvLyBBcnTEsWsgeWVuaSB2ZXJpIGdpcmlsZWNla1xyXG4gICAgICAgICAgICAgICAgLy8gUVIgaW5wdXQnYSBmb2N1cyBldFxyXG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c09uUXJDb2RlKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIC8vIHN0YXR1czMgIT09ICdjb25maXJtJyBpc2Ugw7zDp8O8bmPDvCBzb3J1eWEgaGF5xLFyIGRlbmRpLCBpxZ9sZW0gaXB0YWxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyBzdGF0dXMyICE9PSAnY29uZmlybScgaXNlIGlraW5jaSBzb3J1eWEgaGF5xLFyIGRlbmRpLCBpxZ9sZW0gaXB0YWxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICAvLyBzdGF0dXMgIT09ICdjb25maXJtJyBpc2UgaWxrIHNvcnV5YSBoYXnEsXIgZGVuZGksIGnFn2xlbSBpcHRhbFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBmb2N1c09uSXNFbXJpTm8oKSB7XHJcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLm5tYkJveElzRW1yaU5vPy5pbnN0YW5jZS5mb2N1cygpO1xyXG4gICAgICB9LCAwKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZm9jdXNPblFyQ29kZSgpIHtcclxuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudHh0Qm94UXJDb2RlPy5pbnN0YW5jZS5mb2N1cygpO1xyXG4gICAgICB9LCAwKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZm9jdXNRUklucHV0KCkge1xyXG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy50eHRCb3hRckNvZGU/Lmluc3RhbmNlLmZvY3VzKCk7XHJcbiAgICAgIH0sIDApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxhYnAtcGFnZSBbYnJlYWRjcnVtYl09XCJmYWxzZVwiPlxyXG4gIDxhYnAtcGFnZS10b29sYmFyLWNvbnRhaW5lciBjbGFzcz1cImNvbFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICA8aDMgY2xhc3M9XCJwYWdlLXRpdGxlXCI+XHJcbiAgICAgICAge3sgJ1VyZXRpbVlvbmV0aW1pOjpGaWxsaW5nQ29udHJvbC5UaXRsZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgPC9oMz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyB0ZXh0LWxnLWVuZCBwdC0yXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3MgYnRuLXNtXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzYXZlKClcIiBbZGlzYWJsZWRdPVwiaXNTYXZlQnV0dG9uRGlzYWJsZWRcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtc2F2ZSBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAge3sgJ1VyZXRpbVlvbmV0aW1pOjpGaWxsaW5nQ29udHJvbC5TYXZlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCIgKm5nSWY9XCJzaG93S2F6YW5EZWdpc2ltaUJ1dHRvblwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWluZm8gYnRuLXNtXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJrYXphbkRlZ2lzaW1pKClcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcmVjeWNsZSBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAgS2F6YW4gRGXEn2nFn2ltaVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4td2FybmluZyBidG4tc21cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsZWFyQWxsKClcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYnJvb20gbWUtMVwiPjwvaT5cclxuICAgICAgICAgIHt7ICdVcmV0aW1Zb25ldGltaTo6RmlsbGluZ0NvbnRyb2wuQ2xlYW4nIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9hYnAtcGFnZS10b29sYmFyLWNvbnRhaW5lcj5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZCBtdC0yXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCIgc3R5bGU9XCJoZWlnaHQ6IGNhbGMoMTAwdmggLSAyNDFweCk7IG92ZXJmbG93OiBhdXRvO1wiPlxyXG4gICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjtcIj5cclxuICAgICAgICA8ZHgtbnVtYmVyLWJveCAjaXNFbXJpTm9SZWYgY2xhc3M9XCJtZS0xXCIgc3R5bGU9XCJ3aWR0aDoxMDAlO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidVcmV0aW1Zb25ldGltaTo6RmlsbGluZ0NvbnRyb2wuV29ya09yZGVyTm8nIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbKHZhbHVlKV09XCJpc0VtcmlOb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cImdldFByb2R1Y3Rpb25PcmRlcigpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKG9uRW50ZXJLZXkpPVwiZ2V0UHJvZHVjdGlvbk9yZGVyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzZWFyY2hCYXNpbGRpTWkgfHwgaXNFbXJpQmFya29kdUdlY2VybGlNaVwiPlxyXG4gICAgICAgIDwvZHgtbnVtYmVyLWJveD5cclxuICAgICAgICA8ZHgtYnV0dG9uIHN0eWxlPVwibWFyZ2luLXRvcDogNy41cHg7XCIgXHJcbiAgICAgICAgICAgICAgICAgICBpY29uPVwic2VhcmNoXCIgXHJcbiAgICAgICAgICAgICAgICAgICB0eXBlPVwiZGVmYXVsdFwiIFxyXG4gICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiZ2V0UHJvZHVjdGlvbk9yZGVyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNlYXJjaEJhc2lsZGlNaSB8fCBpc0VtcmlCYXJrb2R1R2VjZXJsaU1pXCI+XHJcbiAgICAgICAgPC9keC1idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIiAqbmdJZj1cImlzRW1yaUJhcmtvZHVHZWNlcmxpTWlcIj5cclxuICAgICAgICA8ZHgtdGV4dC1ib3ggc3R5bGU9XCJ3aWR0aDoxMDAlO1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1VyZXRpbVlvbmV0aW1pOjpGaWxsaW5nQ29udHJvbC5MaW5lSW5mbycgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICBbKHZhbHVlKV09XCJoYXRCaWxnaXNpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCI+XHJcbiAgICAgICAgPC9keC10ZXh0LWJveD5cclxuXHJcbiAgICAgICAgICA8ZHgtdGV4dC1ib3ggc3R5bGU9XCJ3aWR0aDoxMDAlO1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIkFtYmFsYWogTG90XCJcclxuICAgICAgICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwiYW1iYWxhakxvdFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiPlxyXG4gICAgICAgIDwvZHgtdGV4dC1ib3g+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyO1wiPlxyXG4gICAgICAgICAgPGR4LXRleHQtYm94ICNxckNvZGVSZWYgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDoxMDAlO1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidVcmV0aW1Zb25ldGltaTo6RmlsbGluZ0NvbnRyb2wuUVJDb2RlJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwicXJDb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAob25FbnRlcktleSk9XCJvblFyQ29kZUNoYW5nZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1VyZXRpbVlvbmV0aW1pOjpGaWxsaW5nQ29udHJvbC5RUkNvZGUuUGxhY2Vob2xkZXInIHwgYWJwTG9jYWxpemF0aW9uXCI+XHJcbiAgICAgICAgICA8L2R4LXRleHQtYm94PlxyXG4gICAgICAgICAgPGR4LWJ1dHRvbiBzdHlsZT1cIm1hcmdpbi10b3A6IDcuNXB4O1wiIGljb249XCJwbHVzXCIgdHlwZT1cImRlZmF1bHRcIiAob25DbGljayk9XCJvblFyQ29kZUNoYW5nZSgpXCI+XHJcbiAgICAgICAgICA8L2R4LWJ1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGR4LWRhdGEtZ3JpZCAjZ3JpZExpbmVzIFxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC0zXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJsaW5lc1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtzaG93Qm9yZGVyc109XCJ0cnVlXCI+XHJcbiAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJpdGVtQ29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2FwdGlvbl09XCInVXJldGltWW9uZXRpbWk6OkZpbGxpbmdDb250cm9sLkl0ZW1Db2RlJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiaXRlbU5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NhcHRpb25dPVwiJ1VyZXRpbVlvbmV0aW1pOjpGaWxsaW5nQ29udHJvbC5JdGVtTmFtZScgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImlzQ29udHJvbGxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2FwdGlvbl09XCInVXJldGltWW9uZXRpbWk6OkZpbGxpbmdDb250cm9sLklzQ29udHJvbGxlZCcgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU9XCJib29sZWFuXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJiYXRjaE51bWJlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2FwdGlvbl09XCInVXJldGltWW9uZXRpbWk6OkZpbGxpbmdDb250cm9sLkJhdGNoTnVtYmVyJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDwvZHgtZGF0YS1ncmlkPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2FicC1wYWdlPlxyXG4iXX0=
379
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWZpbGxpbmctY29udHJvbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91cmV0aW0teW9uZXRpbWkvc3JjL2xpYi9jb21wb25lbnRzL2hpdC1maWxsaW5nLWNvbnRyb2wvaGl0LWZpbGxpbmctY29udHJvbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91cmV0aW0teW9uZXRpbWkvc3JjL2xpYi9jb21wb25lbnRzL2hpdC1maWxsaW5nLWNvbnRyb2wvaGl0LWZpbGxpbmctY29udHJvbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUs3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7OztBQU9uRCxNQUFNLE9BQU8sMEJBQTBCO0lBaUJyQyxZQUNVLE9BQWlDLEVBQ2pDLFlBQWlDLEVBQ2pDLE1BQWM7UUFGZCxZQUFPLEdBQVAsT0FBTyxDQUEwQjtRQUNqQyxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDakMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQWR4QixvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUNqQywyQkFBc0IsR0FBWSxLQUFLLENBQUM7UUFDeEMsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFDeEIsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixXQUFNLEdBQVcsRUFBRSxDQUFDO1FBQ3BCLFVBQUssR0FBeUIsRUFBRSxDQUFDO1FBQ2pDLHVCQUFrQixHQUFZLEtBQUssQ0FBQyxDQUFDLHFDQUFxQztRQUNsRSx1QkFBa0IsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBTTVDLENBQUM7SUFFSixRQUFRO1FB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Q0FBQyxDQUFDLENBQUM7UUFDUixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O3VIQTFZVSwwQkFBMEI7MkdBQTFCLDBCQUEwQixrV0NadkMsMmpKQStGQTsyRkRuRmEsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLHlCQUF5QjtzS0FLVSxjQUFjO3NCQUExRCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0EsWUFBWTtzQkFBdEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNFLFFBQVE7c0JBQWxELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRHhOdW1iZXJCb3hDb21wb25lbnQsIER4VGV4dEJveENvbXBvbmVudCwgRHhEYXRhR3JpZENvbXBvbmVudCB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhcic7XHJcbmltcG9ydCB7IEhpdEZpbGxpbmdDb250cm9sU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtZmlsbGluZy1jb250cm9sL2hpdC1maWxsaW5nLWNvbnRyb2wuc2VydmljZSc7XHJcbmltcG9ydCB7IEZpbGxpbmdDb250cm9sTGluZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtZmlsbGluZy1jb250cm9sL21vZGVscyc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XHJcbmltcG9ydCB7IEhpdEhlbHBlciB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9tb2RlbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItaGl0LWZpbGxpbmctY29udHJvbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hpdC1maWxsaW5nLWNvbnRyb2wuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2hpdC1maWxsaW5nLWNvbnRyb2wuY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSGl0RmlsbGluZ0NvbnRyb2xDb21wb25lbnQge1xyXG4gIEBWaWV3Q2hpbGQoJ2lzRW1yaU5vUmVmJywgeyBzdGF0aWM6IGZhbHNlIH0pIG5tYkJveElzRW1yaU5vOiBEeE51bWJlckJveENvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdxckNvZGVSZWYnLCB7IHN0YXRpYzogZmFsc2UgfSkgdHh0Qm94UXJDb2RlOiBEeFRleHRCb3hDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnZ3JpZExpbmVzJywgeyBzdGF0aWM6IGZhbHNlIH0pIGRhdGFHcmlkOiBEeERhdGFHcmlkQ29tcG9uZW50O1xyXG5cclxuICBpc0VtcmlObzogbnVtYmVyO1xyXG4gIHNlYXJjaEJhc2lsZGlNaTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzRW1yaUJhcmtvZHVHZWNlcmxpTWk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1NhdmluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGhhdEJpbGdpc2k6IHN0cmluZyA9ICcnO1xyXG4gIGFtYmFsYWpMb3Q6IHN0cmluZyA9ICcnO1xyXG4gIHFyQ29kZTogc3RyaW5nID0gJyc7XHJcbiAgbGluZXM6IEZpbGxpbmdDb250cm9sTGluZVtdID0gW107XHJcbiAgaXNEYXRhTG9hZGVkRnJvbURiOiBib29sZWFuID0gZmFsc2U7IC8vIERCJ2RlbiB2ZXJpIG1pIGdlbGRpIHlva3NhIHllbmkgbWlcclxuICBwcml2YXRlIHNjYW5uZWRCYXJjb2RlS2V5cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgc2VydmljZTogSGl0RmlsbGluZ0NvbnRyb2xTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb25maXJtYXRpb246IENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIC8vIEluaXRpYWxpemF0aW9uIGxvZ2ljXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmZvY3VzT25Jc0VtcmlObygpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0UHJvZHVjdGlvbk9yZGVyKCkge1xyXG4gICAgaWYgKCF0aGlzLmlzRW1yaU5vKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmlzRW1yaUJhcmtvZHVHZWNlcmxpTWkgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VhcmNoQmFzaWxkaU1pID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLnNlcnZpY2UuZ2V0RmlsbGluZ0NvbnRyb2xJbmZvKHRoaXMuaXNFbXJpTm8pLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IHJlc3BvbnNlID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2U/LmlzU3VjY2Vzc2Z1bCkge1xyXG4gICAgICAgICAgY29uc3Qgc3RhdHVzID0gKHJlc3BvbnNlLml0ZW1zPy5zdGF0dXMgfHwgJycpLnRvU3RyaW5nKCkudG9VcHBlckNhc2UoKTtcclxuICAgICAgICAgIGlmIChzdGF0dXMgPT09ICdQJykge1xyXG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi53YXJuKCcnLCAnQnUgw7xyZXRpbSBzaXBhcmnFn2kgb25heWxhbm1hbcSxxZ90xLFyLCBrb250cm9sIHlhcMSxbGFtYXouJywge1xyXG4gICAgICAgICAgICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICAgICAgICAgICAgY2FuY2VsVGV4dDogJ0thcGF0JyxcclxuICAgICAgICAgICAgICBkaXNtaXNzaWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmNsZWFyQWxsKCk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLmhhdEJpbGdpc2kgPSByZXNwb25zZS5pdGVtcy51X0hhdDtcclxuICAgICAgICAgIHRoaXMuYW1iYWxhakxvdCA9IHJlc3BvbnNlLml0ZW1zLnVfVFJLQU1CQUxBSkxPVDtcclxuICAgICAgICAgIHRoaXMubGluZXMgPSByZXNwb25zZS5pdGVtcy5saW5lcztcclxuICAgICAgICAgIHRoaXMuaXNFbXJpQmFya29kdUdlY2VybGlNaSA9IHRydWU7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIC8vIERCJ2RlbiB2ZXJpIGdlbGlwIGdlbG1lZGnEn2luaSBrb250cm9sIGV0IChlbiBheiBiaXIgc2F0xLFyZGEgYmF0Y2hOdW1iZXIgdmFyc2EgREInZGVuIGdlbG1pxZ90aXIpXHJcbiAgICAgICAgICB0aGlzLmlzRGF0YUxvYWRlZEZyb21EYiA9IHRoaXMubGluZXMuc29tZSh4ID0+IHguYmF0Y2hOdW1iZXIgJiYgeC5iYXRjaE51bWJlci50cmltKCkgIT09ICcnKTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9jdXNPblFyQ29kZSgpO1xyXG4gICAgICAgICAgfSwgMTAwKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5pc0VtcmlCYXJrb2R1R2VjZXJsaU1pID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiBlID0+IHtcclxuICAgICAgICB0aGlzLmlzRW1yaUJhcmtvZHVHZWNlcmxpTWkgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNlYXJjaEJhc2lsZGlNaSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi5zdGF0dXMkLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xlYXJBbGwoKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uUXJDb2RlQ2hhbmdlKCkge1xyXG4gICAgaWYgKCF0aGlzLnFyQ29kZSB8fCB0aGlzLnFyQ29kZS50cmltKCkgPT09ICcnKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBkZWJ1Z2dlcjtcclxuXHJcbiAgICBjb25zdCBwYXJzZWQgPSBIaXRIZWxwZXIucGFyc2VRUih0aGlzLnFyQ29kZSk7XHJcbiAgICBpZiAoIXBhcnNlZCkge1xyXG4gICAgICB0aGlzLmNvbmZpcm1hdGlvbi5lcnJvcignJywgJ0dlw6dlcnNpeiBRUiBrb2QgZm9ybWF0xLEhJywge1xyXG4gICAgICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICAgICAgY2FuY2VsVGV4dDogJ0thcGF0JyxcclxuICAgICAgICBkaXNtaXNzaWJsZTogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnFyQ29kZSA9ICcnO1xyXG4gICAgICB0aGlzLmZvY3VzUVJJbnB1dCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTcO8a2VycmVyIGJhcmtvZCBrb250cm9sw7w6IGF5bsSxIGnFnyBlbXJpICsgdGFydMSxbSBzxLFyYSBubyBrb21iaW5hc3lvbnUgdGVrcmFyIG9rdXR1bGFtYXpcclxuICAgIGlmIChwYXJzZWQud29ya09yZGVyTm8gJiYgcGFyc2VkLndlaWdoaW5nU2VxdWVuY2VObykge1xyXG4gICAgICBjb25zdCBiYXJjb2RlS2V5ID0gYCR7cGFyc2VkLndvcmtPcmRlck5vfV8ke3BhcnNlZC53ZWlnaGluZ1NlcXVlbmNlTm99YDtcclxuICAgICAgaWYgKHRoaXMuc2Nhbm5lZEJhcmNvZGVLZXlzLmhhcyhiYXJjb2RlS2V5KSkge1xyXG4gICAgICAgIHRoaXMuY29uZmlybWF0aW9uLmVycm9yKCcnLCAnQXluxLEgYmFya29kIHRla3JhciBva3V0dWxhbWF6IScsIHtcclxuICAgICAgICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICAgICAgICBjYW5jZWxUZXh0OiAnS2FwYXQnLFxyXG4gICAgICAgICAgZGlzbWlzc2libGU6IGZhbHNlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMucXJDb2RlID0gJyc7XHJcbiAgICAgICAgdGhpcy5mb2N1c1FSSW5wdXQoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zY2FubmVkQmFyY29kZUtleXMuYWRkKGJhcmNvZGVLZXkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEdyaWQnZGUgYnUgaXRlbSfEsSBidWxcclxuICAgIGNvbnN0IGxpbmUgPSB0aGlzLmxpbmVzLmZpbmQoeCA9PiB4Lml0ZW1Db2RlID09PSBwYXJzZWQuY2hlbWljYWxDb2RlKTtcclxuICAgIGlmICghbGluZSkge1xyXG4gICAgICB0aGlzLmNvbmZpcm1hdGlvbi5lcnJvcignJywgYCR7cGFyc2VkLmNoZW1pY2FsQ29kZX0ga29kbHUgw7xyw7xuIGJ1IGnFnyBlbXJpbmRlIGJ1bHVuYW1hZMSxIWAsIHtcclxuICAgICAgICBoaWRlWWVzQnRuOiB0cnVlLFxyXG4gICAgICAgIGNhbmNlbFRleHQ6ICdLYXBhdCcsXHJcbiAgICAgICAgZGlzbWlzc2libGU6IGZhbHNlLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5xckNvZGUgPSAnJztcclxuICAgICAgdGhpcy5mb2N1c1FSSW5wdXQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIMSwbGsgb2t1dG1hIGtvbnRyb2zDvCAtIEhpw6cga29udHJvbCBlZGlsbWVtacWfIHNhdMSxciB2YXJzYSwgYnUgaWxrIG9rdXRtYSBkZW1la3RpclxyXG4gICAgY29uc3QgaXNGaXJzdFNjYW4gPSAhdGhpcy5saW5lcy5zb21lKHggPT4geC5pc0NvbnRyb2xsZWQpO1xyXG4gICAgaWYgKGlzRmlyc3RTY2FuKSB7XHJcbiAgICAgIC8vIMSwbGsgb2t1dG1hIGnDp2luIMO8csO8biBhxJ9hY8SxIHZlIGthbGl0ZSBrb250cm9sw7wgeWFwXHJcbiAgICAgIGNvbnNvbGUubG9nKCfEsGxrIG9rdXRtYSB0ZXNwaXQgZWRpbGRpLCDDvHLDvG4gYcSfYWPEsSBrb250cm9sw7wgeWFwxLFsxLF5b3I6JywgcGFyc2VkLmNoZW1pY2FsQ29kZSk7XHJcbiAgICAgIHRoaXMuc2VydmljZS5oYXNQcm9kdWN0aW9uVHJlZShwYXJzZWQuY2hlbWljYWxDb2RlLCB0aGlzLmlzRW1yaU5vKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdIYXNQcm9kdWN0aW9uVHJlZSByZXNwb25zZTonLCByZXNwb25zZSk7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2U/LmlzU3VjY2Vzc2Z1bCAmJiByZXNwb25zZS5pdGVtcyA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAvLyDDnHLDvG4gYcSfYWPEsSB2YXIsIGthbGl0ZSBrb250cm9sw7wgeWFwXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCfDnHLDvG4gYcSfYWPEsSBidWx1bmR1LCBrYWxpdGUga29udHJvbMO8IHlhcMSxbMSxeW9yJyk7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tRdWFsaXR5QW5kUHJvY2VzcyhsaW5lLCBwYXJzZWQubG90TnVtYmVyLCBpc0ZpcnN0U2Nhbik7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyDDnHLDvG4gYcSfYWPEsSB5b2ssIGhhdGEgZ8O2c3RlclxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnw5xyw7xuIGHEn2FjxLEgYnVsdW5hbWFkxLEhJyk7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uLmVycm9yKCcnLCAnxLBsayBva3V0bWEgacWfbGVtaSB5YXLEsSBtYW3DvGwgacOnaW4geWFwxLFsbWFsxLEhJywge1xyXG4gICAgICAgICAgICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICAgICAgICAgICAgY2FuY2VsVGV4dDogJ0thcGF0JyxcclxuICAgICAgICAgICAgICBkaXNtaXNzaWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnFyQ29kZSA9ICcnO1xyXG4gICAgICAgICAgICB0aGlzLmZvY3VzUVJJbnB1dCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0hhc1Byb2R1Y3Rpb25UcmVlIGVycm9yOicsIGVycik7XHJcbiAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi5lcnJvcignJywgJ8OccsO8biBhxJ9hY8SxIGtvbnRyb2zDvCB5YXDEsWzEsXJrZW4gaGF0YSBvbHXFn3R1IScsIHtcclxuICAgICAgICAgICAgaGlkZVllc0J0bjogdHJ1ZSxcclxuICAgICAgICAgICAgY2FuY2VsVGV4dDogJ0thcGF0JyxcclxuICAgICAgICAgICAgZGlzbWlzc2libGU6IGZhbHNlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnFyQ29kZSA9ICcnO1xyXG4gICAgICAgICAgdGhpcy5mb2N1c1FSSW5wdXQoKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIMSwbGsgb2t1dG1hIGRlxJ9pbHNlIGRpcmVrdCBpxZ9sZVxyXG4gICAgICBjb25zb2xlLmxvZygnxLBsayBva3V0bWEgZGXEn2lsLCBkaXJla3QgacWfbGVuaXlvcicpO1xyXG4gICAgICB0aGlzLnByb2Nlc3NRclNjYW4obGluZSwgcGFyc2VkLmxvdE51bWJlcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrUXVhbGl0eUFuZFByb2Nlc3MobGluZTogRmlsbGluZ0NvbnRyb2xMaW5lLCBiYXRjaE51bWJlcjogc3RyaW5nLCBpc0ZpcnN0U2NhbjogYm9vbGVhbikge1xyXG4gICAgLy8gS2FsaXRlIGR1cnVtdSBrb250cm9sw7wgeWFwXHJcbiAgICB0aGlzLnNlcnZpY2UuY2hlY2tRdWFsaXR5U3RhdHVzKGJhdGNoTnVtYmVyLCB0aGlzLmlzRW1yaU5vLCBsaW5lLml0ZW1Db2RlKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiByZXNwb25zZSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0NoZWNrUXVhbGl0eVN0YXR1cyByZXNwb25zZTonLCByZXNwb25zZSk7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlPy5pc1N1Y2Nlc3NmdWwgJiYgcmVzcG9uc2UuaXRlbXMpIHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZS5pdGVtcy5pc0FwcHJvdmVkKSB7XHJcbiAgICAgICAgICAgIC8vIEthbGl0ZSBvbmF5bGFuZMSxLCBva3V0bWF5YSBkZXZhbSBldFxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnS2FsaXRlIGtvbnRyb2zDvCBvbmF5bGFuZMSxLCBva3V0bWF5YSBkZXZhbSBlZGlsaXlvcicpO1xyXG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NRclNjYW4obGluZSwgYmF0Y2hOdW1iZXIsIGlzRmlyc3RTY2FuKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIEthbGl0ZSBSRUQsIGhhdGEgZ8O2c3RlclxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnS2FsaXRlIGtvbnRyb2zDvCByZWRkZWRpbGRpOicsIHJlc3BvbnNlLml0ZW1zLmVycm9yTWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uLmVycm9yKCcnLCByZXNwb25zZS5pdGVtcy5lcnJvck1lc3NhZ2UgfHwgJ0thbGl0ZSBrb250cm9sw7wgcmVkZGVkaWxkaSEnLCB7XHJcbiAgICAgICAgICAgICAgaGlkZVllc0J0bjogdHJ1ZSxcclxuICAgICAgICAgICAgICBjYW5jZWxUZXh0OiAnS2FwYXQnLFxyXG4gICAgICAgICAgICAgIGRpc21pc3NpYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMucXJDb2RlID0gJyc7XHJcbiAgICAgICAgICAgIHRoaXMuZm9jdXNRUklucHV0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIFNvcmd1IHNvbnVjdSBudWxsIGdlbGRpIHZleWEgYmHFn2FyxLFzxLF6XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnS2FsaXRlIGtvbnRyb2zDvCBzb3JndXN1IHNvbnXDpyBkw7ZuZMO8cm1lZGknKTtcclxuICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uLmVycm9yKCcnLCAnQnUgbG90IG51bWFyYXPEsSBpw6dpbiBrYWxpdGUgYmlsZ2lzaSBidWx1bmFtYWTEsSEnLCB7XHJcbiAgICAgICAgICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICAgICAgICAgIGNhbmNlbFRleHQ6ICdLYXBhdCcsXHJcbiAgICAgICAgICAgIGRpc21pc3NpYmxlOiBmYWxzZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5xckNvZGUgPSAnJztcclxuICAgICAgICAgIHRoaXMuZm9jdXNRUklucHV0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0NoZWNrUXVhbGl0eVN0YXR1cyBlcnJvcjonLCBlcnIpO1xyXG4gICAgICAgIHRoaXMuY29uZmlybWF0aW9uLmVycm9yKCcnLCAnS2FsaXRlIGtvbnRyb2zDvCB5YXDEsWzEsXJrZW4gaGF0YSBvbHXFn3R1IScsIHtcclxuICAgICAgICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICAgICAgICBjYW5jZWxUZXh0OiAnS2FwYXQnLFxyXG4gICAgICAgICAgZGlzbWlzc2libGU6IGZhbHNlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMucXJDb2RlID0gJyc7XHJcbiAgICAgICAgdGhpcy5mb2N1c1FSSW5wdXQoKTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcm9jZXNzUXJTY2FuKGxpbmU6IEZpbGxpbmdDb250cm9sTGluZSwgYmF0Y2hOdW1iZXI6IHN0cmluZywgaXNGaXJzdFNjYW46IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgLy8gS29udHJvbCBlZGlsZGkgb2xhcmFrIGnFn2FyZXRsZSB2ZSBwYXJ0aSBudW1hcmFzxLFuxLEgc2V0IGV0XHJcbiAgICBsaW5lLmlzQ29udHJvbGxlZCA9IHRydWU7XHJcbiAgICBpZiAoaXNGaXJzdFNjYW4pIHtcclxuICAgICAgbGluZS5iYXRjaE51bWJlciA9IGJhdGNoTnVtYmVyO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEdyaWQnaSByZWZyZXNoIGV0XHJcbiAgICB0aGlzLmRhdGFHcmlkLmluc3RhbmNlLnJlZnJlc2goKTtcclxuXHJcbiAgICAvLyBRUiBpbnB1dCd1IHRlbWl6bGUgdmUgZm9jdXMgZXRcclxuICAgIHRoaXMucXJDb2RlID0gJyc7XHJcbiAgICB0aGlzLmZvY3VzUVJJbnB1dCgpO1xyXG4gIH1cclxuXHJcbiAgc2F2ZSgpIHtcclxuICAgIGlmICghdGhpcy5pc0VtcmlObyB8fCB0aGlzLmxpbmVzLmxlbmd0aCA9PT0gMCB8fCB0aGlzLmlzU2F2aW5nKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUw7xtIGtvbnRyb2xsZXIgdGFtYW1sYW5txLHFnyBtxLEga29udHJvbMO8XHJcbiAgICBpZiAoIXRoaXMubGluZXMuZXZlcnkoeCA9PiB4LmlzQ29udHJvbGxlZCkpIHtcclxuICAgICAgdGhpcy5jb25maXJtYXRpb24ud2FybignJywgJ1TDvG0ga29udHJvbGxlciB0YW1hbWxhbm1hZGFuIGthecSxdCBpxZ9sZW1pIHlhcMSxbGFtYXouJywge1xyXG4gICAgICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICAgICAgY2FuY2VsVGV4dDogJ0thcGF0JyxcclxuICAgICAgICBkaXNtaXNzaWJsZTogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2F2ZURhdGEgPSB7XHJcbiAgICAgIHdvcmtPcmRlck5vOiB0aGlzLmlzRW1yaU5vLFxyXG4gICAgICBsaW5lczogdGhpcy5saW5lcy5tYXAobGluZSA9PiAoe1xyXG4gICAgICAgIGxpbmVOdW06IGxpbmUubGluZU51bSxcclxuICAgICAgICBpdGVtQ29kZTogbGluZS5pdGVtQ29kZSxcclxuICAgICAgICBpc0NvbnRyb2xsZWQ6IGxpbmUuaXNDb250cm9sbGVkLFxyXG4gICAgICAgIGJhdGNoTnVtYmVyOiBsaW5lLmJhdGNoTnVtYmVyIHx8ICcnXHJcbiAgICAgIH0pKVxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmlzU2F2aW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VydmljZS5zYXZlRmlsbGluZ0NvbnRyb2woc2F2ZURhdGEpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IHJlc3BvbnNlID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2U/LmlzU3VjY2Vzc2Z1bCkge1xyXG4gICAgICAgICAgdGhpcy5jb25maXJtYXRpb24uc3VjY2VzcygnJywgJ0thecSxdCBiYcWfYXLEsWzEsSEnLCB7XHJcbiAgICAgICAgICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICAgICAgICAgIGNhbmNlbFRleHQ6ICdLYXBhdCcsXHJcbiAgICAgICAgICAgIGRpc21pc3NpYmxlOiBmYWxzZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jbGVhckFsbCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmlzU2F2aW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IGUgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNTYXZpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY29uZmlybWF0aW9uLnN0YXR1cyQuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgICAgLy8gSGF0YSBzb25yYXPEsSBpxZ9sZW1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNsZWFyQWxsKCkge1xyXG4gICAgdGhpcy5pc0VtcmlCYXJrb2R1R2VjZXJsaU1pID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlYXJjaEJhc2lsZGlNaSA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0VtcmlObyA9IG51bGw7XHJcbiAgICB0aGlzLmhhdEJpbGdpc2kgPSAnJztcclxuICAgIHRoaXMuYW1iYWxhakxvdCA9ICcnO1xyXG4gICAgdGhpcy5xckNvZGUgPSAnJztcclxuICAgIHRoaXMubGluZXMgPSBbXTtcclxuICAgIHRoaXMuaXNEYXRhTG9hZGVkRnJvbURiID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzU2F2aW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLnNjYW5uZWRCYXJjb2RlS2V5cy5jbGVhcigpO1xyXG4gICAgdGhpcy5mb2N1c09uSXNFbXJpTm8oKTtcclxuICB9XHJcblxyXG4gIGdldCBzaG93S2F6YW5EZWdpc2ltaUJ1dHRvbigpOiBib29sZWFuIHtcclxuICAgIC8vIFNhZGVjZSBEQidkZW4gdmVyaSBnZWxtacWfc2UsIGnFnyBlbXJpIG9rdXR1bG11xZ8gdmUgdMO8bSBzYXTEsXJsYXIga29udHJvbCBlZGlsbWnFnyBpc2UgZ8O2c3RlclxyXG4gICAgcmV0dXJuIHRoaXMuaXNEYXRhTG9hZGVkRnJvbURiICYmXHJcbiAgICAgICAgICAgdGhpcy5pc0VtcmlCYXJrb2R1R2VjZXJsaU1pICYmIFxyXG4gICAgICAgICAgIHRoaXMubGluZXMubGVuZ3RoID4gMCAmJiBcclxuICAgICAgICAgICB0aGlzLmxpbmVzLmV2ZXJ5KHggPT4geC5pc0NvbnRyb2xsZWQpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzU2F2ZUJ1dHRvbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgLy8gxLDFnyBlbXJpIHlva3NhIHZleWEgc2F0xLFyIHlva3NhIHZleWEgdMO8bSBzYXTEsXJsYXIga29udHJvbCBlZGlsbWVtacWfc2UgdmV5YSBrYXlkZXRtZSBpxZ9sZW1pIGRldmFtIGVkaXlvcnNhIGRpc2FibGVcclxuICAgIHJldHVybiAhdGhpcy5pc0VtcmlObyB8fCBcclxuICAgICAgICAgICB0aGlzLmxpbmVzLmxlbmd0aCA9PT0gMCB8fCBcclxuICAgICAgICAgICAhdGhpcy5saW5lcy5ldmVyeSh4ID0+IHguaXNDb250cm9sbGVkKSB8fFxyXG4gICAgICAgICAgIHRoaXMuaXNTYXZpbmc7XHJcbiAgfVxyXG5cclxuICBrYXphbkRlZ2lzaW1pKCkge1xyXG4gICAgLy8gxLBsayBzb3J1OiBCdSBrYXphbmEgYWl0IHTDvG0gw7xyZXRpbWRlbiBnaXJpxZ9sZXJpIHRhbWFtbGFkxLFuxLF6IG3EsT9cclxuICAgIHRoaXMuY29uZmlybWF0aW9uLndhcm4oXHJcbiAgICAgICcnLFxyXG4gICAgICAnQnUga2F6YW5hIGFpdCB0w7xtIMO8cmV0aW1kZW4gZ2lyacWfbGVyaSB0YW1hbWxhZMSxbsSxeiBtxLE/JyxcclxuICAgICAge1xyXG4gICAgICAgIHllc1RleHQ6ICdFdmV0JyxcclxuICAgICAgICBjYW5jZWxUZXh0OiAnSGF5xLFyJ1xyXG4gICAgICB9XHJcbiAgICApLnN1YnNjcmliZShzdGF0dXMgPT4ge1xyXG4gICAgICBpZiAoc3RhdHVzID09PSAnY29uZmlybScpIHtcclxuICAgICAgICAvLyDEsGtpbmNpIHNvcnU6IEthemFuIGRlxJ9pxZ9pbWkgw7ZuY2VzaW5kZSBrYXphbiBZTSBmaXJlIMOnxLFrxLHFn8SxIGdlcsOnZWtsZcWfdGlyaWxkaSBtaT9cclxuICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi53YXJuKFxyXG4gICAgICAgICAgJycsXHJcbiAgICAgICAgICAnS2F6YW4gZGXEn2nFn2ltaSDDtm5jZXNpbmRlIGthemFuIFlNIGZpcmUgw6fEsWvEscWfxLEgZ2Vyw6dla2xlxZ90aXJpbGRpIG1pPycsXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHllc1RleHQ6ICdFdmV0JyxcclxuICAgICAgICAgICAgY2FuY2VsVGV4dDogJ0hhecSxcidcclxuICAgICAgICAgIH1cclxuICAgICAgICApLnN1YnNjcmliZShzdGF0dXMyID0+IHtcclxuICAgICAgICAgIGlmIChzdGF0dXMyID09PSAnY29uZmlybScpIHtcclxuICAgICAgICAgICAgLy8gw5zDp8O8bmPDvCBzb3J1OiBCaWxlxZ9lbiBmaXJlIMOnxLFrxLHFn8SxIGdlcsOnZWtsZcWfdGlyaWxkaSBtaT9cclxuICAgICAgICAgICAgdGhpcy5jb25maXJtYXRpb24ud2FybihcclxuICAgICAgICAgICAgICAnJyxcclxuICAgICAgICAgICAgICAnQmlsZcWfZW4gZmlyZSDDp8Sxa8SxxZ/EsSBnZXLDp2VrbGXFn3RpcmlsZGkgbWk/JyxcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB5ZXNUZXh0OiAnRXZldCcsXHJcbiAgICAgICAgICAgICAgICBjYW5jZWxUZXh0OiAnSGF5xLFyJ1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKS5zdWJzY3JpYmUoc3RhdHVzMyA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHN0YXR1czMgPT09ICdjb25maXJtJykge1xyXG4gICAgICAgICAgICAgICAgLy8gVMO8bSBvbmF5bGFyIHZlcmlsZGksIGthemFuIGRlxJ9pxZ9pbWkgacWfbGVtaW5pIGdlcsOnZWtsZcWfdGlyXHJcbiAgICAgICAgICAgICAgICAvLyBUw7xtIHNhdMSxcmxhcsSxbiBJc0NvbnRyb2xsZWQgYWxhbsSxbsSxIGZhbHNlIHlhcFxyXG4gICAgICAgICAgICAgICAgdGhpcy5saW5lcy5mb3JFYWNoKGxpbmUgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBsaW5lLmlzQ29udHJvbGxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICBsaW5lLmJhdGNoTnVtYmVyID0gJyc7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBHcmlkJ2kgcmVmcmVzaCBldFxyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC5pbnN0YW5jZS5yZWZyZXNoKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzRGF0YUxvYWRlZEZyb21EYiA9IGZhbHNlOyAvLyBBcnTEsWsgeWVuaSB2ZXJpIGdpcmlsZWNla1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY2FubmVkQmFyY29kZUtleXMuY2xlYXIoKTsgLy8gWWVuaSBrYXphbiBpw6dpbiBva3V0dWxtdcWfIGJhcmtvZGxhcsSxIHPEsWbEsXJsYVxyXG4gICAgICAgICAgICAgICAgLy8gUVIgaW5wdXQnYSBmb2N1cyBldFxyXG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c09uUXJDb2RlKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIC8vIHN0YXR1czMgIT09ICdjb25maXJtJyBpc2Ugw7zDp8O8bmPDvCBzb3J1eWEgaGF5xLFyIGRlbmRpLCBpxZ9sZW0gaXB0YWxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyBzdGF0dXMyICE9PSAnY29uZmlybScgaXNlIGlraW5jaSBzb3J1eWEgaGF5xLFyIGRlbmRpLCBpxZ9sZW0gaXB0YWxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICAvLyBzdGF0dXMgIT09ICdjb25maXJtJyBpc2UgaWxrIHNvcnV5YSBoYXnEsXIgZGVuZGksIGnFn2xlbSBpcHRhbFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBmb2N1c09uSXNFbXJpTm8oKSB7XHJcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLm5tYkJveElzRW1yaU5vPy5pbnN0YW5jZS5mb2N1cygpO1xyXG4gICAgICB9LCAwKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZm9jdXNPblFyQ29kZSgpIHtcclxuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudHh0Qm94UXJDb2RlPy5pbnN0YW5jZS5mb2N1cygpO1xyXG4gICAgICB9LCAwKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZm9jdXNRUklucHV0KCkge1xyXG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy50eHRCb3hRckNvZGU/Lmluc3RhbmNlLmZvY3VzKCk7XHJcbiAgICAgIH0sIDApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxhYnAtcGFnZSBbYnJlYWRjcnVtYl09XCJmYWxzZVwiPlxyXG4gIDxhYnAtcGFnZS10b29sYmFyLWNvbnRhaW5lciBjbGFzcz1cImNvbFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICA8aDMgY2xhc3M9XCJwYWdlLXRpdGxlXCI+XHJcbiAgICAgICAge3sgJ1VyZXRpbVlvbmV0aW1pOjpGaWxsaW5nQ29udHJvbC5UaXRsZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgPC9oMz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyB0ZXh0LWxnLWVuZCBwdC0yXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3MgYnRuLXNtXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzYXZlKClcIiBbZGlzYWJsZWRdPVwiaXNTYXZlQnV0dG9uRGlzYWJsZWRcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtc2F2ZSBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAge3sgJ1VyZXRpbVlvbmV0aW1pOjpGaWxsaW5nQ29udHJvbC5TYXZlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCIgKm5nSWY9XCJzaG93S2F6YW5EZWdpc2ltaUJ1dHRvblwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWluZm8gYnRuLXNtXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJrYXphbkRlZ2lzaW1pKClcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcmVjeWNsZSBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAgS2F6YW4gRGXEn2nFn2ltaVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4td2FybmluZyBidG4tc21cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsZWFyQWxsKClcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYnJvb20gbWUtMVwiPjwvaT5cclxuICAgICAgICAgIHt7ICdVcmV0aW1Zb25ldGltaTo6RmlsbGluZ0NvbnRyb2wuQ2xlYW4nIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9hYnAtcGFnZS10b29sYmFyLWNvbnRhaW5lcj5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZCBtdC0yXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCIgc3R5bGU9XCJoZWlnaHQ6IGNhbGMoMTAwdmggLSAyNDFweCk7IG92ZXJmbG93OiBhdXRvO1wiPlxyXG4gICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjtcIj5cclxuICAgICAgICA8ZHgtbnVtYmVyLWJveCAjaXNFbXJpTm9SZWYgY2xhc3M9XCJtZS0xXCIgc3R5bGU9XCJ3aWR0aDoxMDAlO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidVcmV0aW1Zb25ldGltaTo6RmlsbGluZ0NvbnRyb2wuV29ya09yZGVyTm8nIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbKHZhbHVlKV09XCJpc0VtcmlOb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cImdldFByb2R1Y3Rpb25PcmRlcigpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKG9uRW50ZXJLZXkpPVwiZ2V0UHJvZHVjdGlvbk9yZGVyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzZWFyY2hCYXNpbGRpTWkgfHwgaXNFbXJpQmFya29kdUdlY2VybGlNaVwiPlxyXG4gICAgICAgIDwvZHgtbnVtYmVyLWJveD5cclxuICAgICAgICA8ZHgtYnV0dG9uIHN0eWxlPVwibWFyZ2luLXRvcDogNy41cHg7XCIgXHJcbiAgICAgICAgICAgICAgICAgICBpY29uPVwic2VhcmNoXCIgXHJcbiAgICAgICAgICAgICAgICAgICB0eXBlPVwiZGVmYXVsdFwiIFxyXG4gICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiZ2V0UHJvZHVjdGlvbk9yZGVyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNlYXJjaEJhc2lsZGlNaSB8fCBpc0VtcmlCYXJrb2R1R2VjZXJsaU1pXCI+XHJcbiAgICAgICAgPC9keC1idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIiAqbmdJZj1cImlzRW1yaUJhcmtvZHVHZWNlcmxpTWlcIj5cclxuICAgICAgICA8ZHgtdGV4dC1ib3ggc3R5bGU9XCJ3aWR0aDoxMDAlO1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1VyZXRpbVlvbmV0aW1pOjpGaWxsaW5nQ29udHJvbC5MaW5lSW5mbycgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICBbKHZhbHVlKV09XCJoYXRCaWxnaXNpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCI+XHJcbiAgICAgICAgPC9keC10ZXh0LWJveD5cclxuXHJcbiAgICAgICAgICA8ZHgtdGV4dC1ib3ggc3R5bGU9XCJ3aWR0aDoxMDAlO1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIkFtYmFsYWogTG90XCJcclxuICAgICAgICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwiYW1iYWxhakxvdFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiPlxyXG4gICAgICAgIDwvZHgtdGV4dC1ib3g+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyO1wiPlxyXG4gICAgICAgICAgPGR4LXRleHQtYm94ICNxckNvZGVSZWYgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDoxMDAlO1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidVcmV0aW1Zb25ldGltaTo6RmlsbGluZ0NvbnRyb2wuUVJDb2RlJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwicXJDb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAob25FbnRlcktleSk9XCJvblFyQ29kZUNoYW5nZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1VyZXRpbVlvbmV0aW1pOjpGaWxsaW5nQ29udHJvbC5RUkNvZGUuUGxhY2Vob2xkZXInIHwgYWJwTG9jYWxpemF0aW9uXCI+XHJcbiAgICAgICAgICA8L2R4LXRleHQtYm94PlxyXG4gICAgICAgICAgPGR4LWJ1dHRvbiBzdHlsZT1cIm1hcmdpbi10b3A6IDcuNXB4O1wiIGljb249XCJwbHVzXCIgdHlwZT1cImRlZmF1bHRcIiAob25DbGljayk9XCJvblFyQ29kZUNoYW5nZSgpXCI+XHJcbiAgICAgICAgICA8L2R4LWJ1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGR4LWRhdGEtZ3JpZCAjZ3JpZExpbmVzIFxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC0zXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJsaW5lc1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtzaG93Qm9yZGVyc109XCJ0cnVlXCI+XHJcbiAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJpdGVtQ29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2FwdGlvbl09XCInVXJldGltWW9uZXRpbWk6OkZpbGxpbmdDb250cm9sLkl0ZW1Db2RlJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiaXRlbU5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NhcHRpb25dPVwiJ1VyZXRpbVlvbmV0aW1pOjpGaWxsaW5nQ29udHJvbC5JdGVtTmFtZScgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImlzQ29udHJvbGxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2FwdGlvbl09XCInVXJldGltWW9uZXRpbWk6OkZpbGxpbmdDb250cm9sLklzQ29udHJvbGxlZCcgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU9XCJib29sZWFuXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJiYXRjaE51bWJlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2FwdGlvbl09XCInVXJldGltWW9uZXRpbWk6OkZpbGxpbmdDb250cm9sLkJhdGNoTnVtYmVyJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDwvZHgtZGF0YS1ncmlkPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2FicC1wYWdlPlxyXG4iXX0=