@huntsman-cancer-institute/cod 17.3.4 → 17.5.0
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.
- package/components/attribute-absolute.component.d.ts +1 -0
- package/components/attribute-edit.component.d.ts +1 -0
- package/components/attribute-flex.component.d.ts +1 -0
- package/esm2022/components/attribute-absolute.component.mjs +26 -22
- package/esm2022/components/attribute-default.component.mjs +17 -17
- package/esm2022/components/attribute-edit.component.mjs +264 -260
- package/esm2022/components/attribute-flex.component.mjs +71 -63
- package/fesm2022/huntsman-cancer-institute-cod.mjs +374 -358
- package/fesm2022/huntsman-cancer-institute-cod.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -19,9 +19,13 @@ import * as i8 from "./attribute-edit.component";
|
|
|
19
19
|
export class AttributeFlexComponent extends AttributeBase {
|
|
20
20
|
constructor(attributeService, elementRef, renderer, modalService) {
|
|
21
21
|
super(attributeService, elementRef, renderer, modalService);
|
|
22
|
+
this.hciNgAttributeAbsoluteInputDisplayName = "";
|
|
22
23
|
}
|
|
23
24
|
ngAfterViewInit() {
|
|
24
25
|
this.refresh();
|
|
26
|
+
if (this.attribute && this.attribute.displayName) {
|
|
27
|
+
this.hciNgAttributeAbsoluteInputDisplayName = this.attribute.displayName;
|
|
28
|
+
}
|
|
25
29
|
}
|
|
26
30
|
/**
|
|
27
31
|
* Flex needs to extend grid columns because we no longer want to use absolute width. Here we generate percentage
|
|
@@ -71,23 +75,24 @@ export class AttributeFlexComponent extends AttributeBase {
|
|
|
71
75
|
</div>
|
|
72
76
|
</ng-container>
|
|
73
77
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
78
|
+
<!-- String -->
|
|
79
|
+
<ng-container *ngIf="attribute.codeAttributeDataType === 'S'">
|
|
80
|
+
<div #attributeRef
|
|
81
|
+
class="d-flex flex-column cod-type-s">
|
|
82
|
+
<div *ngIf="attribute.displayName" class="d-flex cod-top-label me-1">
|
|
83
|
+
{{ attribute.displayName }}
|
|
84
|
+
</div>
|
|
85
|
+
<div class="d-flex flex-grow-1">
|
|
86
|
+
<input #inputRef
|
|
87
|
+
type="text"
|
|
88
|
+
[(ngModel)]="attributeValues[0].valueString"
|
|
89
|
+
(ngModelChange)="valueStringChange($event)"
|
|
90
|
+
[disabled]="!editInline || attribute.isCalculated === 'Y'"
|
|
91
|
+
class="form-control" attr.aria-label="hci-ng-attribute-flex-input-string-{{hciNgAttributeAbsoluteInputDisplayName}}"/>
|
|
92
|
+
</div>
|
|
93
|
+
</div>
|
|
94
|
+
</ng-container>
|
|
95
|
+
|
|
91
96
|
|
|
92
97
|
<!-- Text -->
|
|
93
98
|
<ng-container *ngIf="attribute.codeAttributeDataType === 'TXT'">
|
|
@@ -124,7 +129,7 @@ export class AttributeFlexComponent extends AttributeBase {
|
|
|
124
129
|
[checked]="attributeValues[0].valueString === 'Y'"
|
|
125
130
|
(change)="valueCheckboxChange($event)"
|
|
126
131
|
[disabled]="!editInline || attribute.isCalculated === 'Y'"
|
|
127
|
-
class="form-control" />
|
|
132
|
+
class="form-control" attr.aria-label="hci-ng-attribute-flex-input-checkbox-{{hciNgAttributeAbsoluteInputDisplayName}}"/>
|
|
128
133
|
</div>
|
|
129
134
|
</div>
|
|
130
135
|
</ng-container>
|
|
@@ -141,8 +146,8 @@ export class AttributeFlexComponent extends AttributeBase {
|
|
|
141
146
|
type="number"
|
|
142
147
|
[(ngModel)]="attributeValues[0].valueNumeric"
|
|
143
148
|
(ngModelChange)="valueNumericChange($event)"
|
|
144
|
-
|
|
145
|
-
class="form-control" />
|
|
149
|
+
[disabled]="!editInline || attribute.isCalculated === 'Y'"
|
|
150
|
+
class="form-control" attr.aria-label="hci-ng-attribute-flex-input-numeric-{{hciNgAttributeAbsoluteInputDisplayName}}"/>
|
|
146
151
|
</div>
|
|
147
152
|
</div>
|
|
148
153
|
</ng-container>
|
|
@@ -159,8 +164,8 @@ export class AttributeFlexComponent extends AttributeBase {
|
|
|
159
164
|
type="number"
|
|
160
165
|
[(ngModel)]="attributeValues[0].valueInteger"
|
|
161
166
|
(ngModelChange)="valueIntegerChange($event)"
|
|
162
|
-
|
|
163
|
-
class="form-control" />
|
|
167
|
+
[disabled]="!editInline || attribute.isCalculated === 'Y'"
|
|
168
|
+
class="form-control" attr.aria-label="hci-ng-attribute-flex-input-integer-{{hciNgAttributeAbsoluteInputDisplayName}}"/>
|
|
164
169
|
</div>
|
|
165
170
|
</div>
|
|
166
171
|
</ng-container>
|
|
@@ -180,7 +185,7 @@ export class AttributeFlexComponent extends AttributeBase {
|
|
|
180
185
|
(ngModelChange)="valueDateChange($event)"
|
|
181
186
|
[matDatepicker]="valueDate"
|
|
182
187
|
[disabled]="!editInline || attribute.isCalculated === 'Y'"
|
|
183
|
-
class="form-control">
|
|
188
|
+
class="form-control" attr.aria-label="hci-ng-attribute-flex-input-date-{{hciNgAttributeAbsoluteInputDisplayName}}">
|
|
184
189
|
<mat-datepicker-toggle matSuffix [for]="valueDate" class="cod-dp-toggle"></mat-datepicker-toggle>
|
|
185
190
|
<mat-datepicker #valueDate></mat-datepicker>
|
|
186
191
|
</div>
|
|
@@ -202,7 +207,7 @@ export class AttributeFlexComponent extends AttributeBase {
|
|
|
202
207
|
[(ngModel)]="attributeValues[0].date"
|
|
203
208
|
(ngModelChange)="valueDateChange($event)"
|
|
204
209
|
[disabled]="!editInline || attribute.isCalculated === 'Y'"
|
|
205
|
-
[ngxMatDatetimePicker]="dtpicker">
|
|
210
|
+
[ngxMatDatetimePicker]="dtpicker" attr.aria-label="hci-ng-attribute-flex-input-date-time-{{hciNgAttributeAbsoluteInputDisplayName}}">
|
|
206
211
|
<mat-datepicker-toggle matSuffix [for]="dtpicker" class="cod-dp-toggle"></mat-datepicker-toggle>
|
|
207
212
|
<ngx-mat-datetime-picker #dtpicker [showSeconds]="true"></ngx-mat-datetime-picker>
|
|
208
213
|
</div>
|
|
@@ -260,10 +265,11 @@ export class AttributeFlexComponent extends AttributeBase {
|
|
|
260
265
|
{{attribute.displayName}}
|
|
261
266
|
</div>
|
|
262
267
|
<div class="d-flex flex-grow-1">
|
|
263
|
-
<select
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
268
|
+
<select
|
|
269
|
+
[ngModel]="(attributeValues[0].valueAttributeChoice)?attributeValues[0].valueAttributeChoice.idAttributeChoice:undefined"
|
|
270
|
+
(ngModelChange)="valueChoiceChange($event)"
|
|
271
|
+
[disabled]="!editInline || attribute.isCalculated === 'Y'"
|
|
272
|
+
class="form-control edit-renderer">
|
|
267
273
|
<option [ngValue]="undefined"></option>
|
|
268
274
|
<option *ngFor="let attributeChoice of attributeChoices"
|
|
269
275
|
[ngValue]="attributeChoice.idAttributeChoice">
|
|
@@ -288,8 +294,8 @@ export class AttributeFlexComponent extends AttributeBase {
|
|
|
288
294
|
[checked]="attributeChoice.value"
|
|
289
295
|
[disabled]="!editInline || attribute.isCalculated === 'Y'"
|
|
290
296
|
(change)="valueMultiChoiceChange(attributeChoice)"
|
|
291
|
-
|
|
292
|
-
class="form-control checkbox" />
|
|
297
|
+
[disabled]="!editInline || attribute.isCalculated === 'Y'"
|
|
298
|
+
class="form-control checkbox" attr.aria-label="hci-ng-attribute-flex-input-choice-multiple-{{attributeChoice.choice}}"/>
|
|
293
299
|
<div class="cod-label ps-1">
|
|
294
300
|
{{attributeChoice.choice}}
|
|
295
301
|
</div>
|
|
@@ -314,7 +320,7 @@ export class AttributeFlexComponent extends AttributeBase {
|
|
|
314
320
|
[disabled]="!editInline || attribute.isCalculated === 'Y'"
|
|
315
321
|
(change)="valueMultiDictChange(entry)"
|
|
316
322
|
[disabled]="!editInline || attribute.isCalculated === 'Y'"
|
|
317
|
-
class="form-control checkbox" />
|
|
323
|
+
class="form-control checkbox" attr.aria-label="hci-ng-attribute-flex-input-dictionary-choice-{{entry.display}}"/>
|
|
318
324
|
<div class="cod-label ps-1">
|
|
319
325
|
{{entry.display}}
|
|
320
326
|
</div>
|
|
@@ -449,23 +455,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
449
455
|
</div>
|
|
450
456
|
</ng-container>
|
|
451
457
|
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
458
|
+
<!-- String -->
|
|
459
|
+
<ng-container *ngIf="attribute.codeAttributeDataType === 'S'">
|
|
460
|
+
<div #attributeRef
|
|
461
|
+
class="d-flex flex-column cod-type-s">
|
|
462
|
+
<div *ngIf="attribute.displayName" class="d-flex cod-top-label me-1">
|
|
463
|
+
{{ attribute.displayName }}
|
|
464
|
+
</div>
|
|
465
|
+
<div class="d-flex flex-grow-1">
|
|
466
|
+
<input #inputRef
|
|
467
|
+
type="text"
|
|
468
|
+
[(ngModel)]="attributeValues[0].valueString"
|
|
469
|
+
(ngModelChange)="valueStringChange($event)"
|
|
470
|
+
[disabled]="!editInline || attribute.isCalculated === 'Y'"
|
|
471
|
+
class="form-control" attr.aria-label="hci-ng-attribute-flex-input-string-{{hciNgAttributeAbsoluteInputDisplayName}}"/>
|
|
472
|
+
</div>
|
|
473
|
+
</div>
|
|
474
|
+
</ng-container>
|
|
475
|
+
|
|
469
476
|
|
|
470
477
|
<!-- Text -->
|
|
471
478
|
<ng-container *ngIf="attribute.codeAttributeDataType === 'TXT'">
|
|
@@ -502,7 +509,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
502
509
|
[checked]="attributeValues[0].valueString === 'Y'"
|
|
503
510
|
(change)="valueCheckboxChange($event)"
|
|
504
511
|
[disabled]="!editInline || attribute.isCalculated === 'Y'"
|
|
505
|
-
class="form-control" />
|
|
512
|
+
class="form-control" attr.aria-label="hci-ng-attribute-flex-input-checkbox-{{hciNgAttributeAbsoluteInputDisplayName}}"/>
|
|
506
513
|
</div>
|
|
507
514
|
</div>
|
|
508
515
|
</ng-container>
|
|
@@ -519,8 +526,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
519
526
|
type="number"
|
|
520
527
|
[(ngModel)]="attributeValues[0].valueNumeric"
|
|
521
528
|
(ngModelChange)="valueNumericChange($event)"
|
|
522
|
-
|
|
523
|
-
class="form-control" />
|
|
529
|
+
[disabled]="!editInline || attribute.isCalculated === 'Y'"
|
|
530
|
+
class="form-control" attr.aria-label="hci-ng-attribute-flex-input-numeric-{{hciNgAttributeAbsoluteInputDisplayName}}"/>
|
|
524
531
|
</div>
|
|
525
532
|
</div>
|
|
526
533
|
</ng-container>
|
|
@@ -537,8 +544,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
537
544
|
type="number"
|
|
538
545
|
[(ngModel)]="attributeValues[0].valueInteger"
|
|
539
546
|
(ngModelChange)="valueIntegerChange($event)"
|
|
540
|
-
|
|
541
|
-
class="form-control" />
|
|
547
|
+
[disabled]="!editInline || attribute.isCalculated === 'Y'"
|
|
548
|
+
class="form-control" attr.aria-label="hci-ng-attribute-flex-input-integer-{{hciNgAttributeAbsoluteInputDisplayName}}"/>
|
|
542
549
|
</div>
|
|
543
550
|
</div>
|
|
544
551
|
</ng-container>
|
|
@@ -558,7 +565,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
558
565
|
(ngModelChange)="valueDateChange($event)"
|
|
559
566
|
[matDatepicker]="valueDate"
|
|
560
567
|
[disabled]="!editInline || attribute.isCalculated === 'Y'"
|
|
561
|
-
class="form-control">
|
|
568
|
+
class="form-control" attr.aria-label="hci-ng-attribute-flex-input-date-{{hciNgAttributeAbsoluteInputDisplayName}}">
|
|
562
569
|
<mat-datepicker-toggle matSuffix [for]="valueDate" class="cod-dp-toggle"></mat-datepicker-toggle>
|
|
563
570
|
<mat-datepicker #valueDate></mat-datepicker>
|
|
564
571
|
</div>
|
|
@@ -580,7 +587,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
580
587
|
[(ngModel)]="attributeValues[0].date"
|
|
581
588
|
(ngModelChange)="valueDateChange($event)"
|
|
582
589
|
[disabled]="!editInline || attribute.isCalculated === 'Y'"
|
|
583
|
-
[ngxMatDatetimePicker]="dtpicker">
|
|
590
|
+
[ngxMatDatetimePicker]="dtpicker" attr.aria-label="hci-ng-attribute-flex-input-date-time-{{hciNgAttributeAbsoluteInputDisplayName}}">
|
|
584
591
|
<mat-datepicker-toggle matSuffix [for]="dtpicker" class="cod-dp-toggle"></mat-datepicker-toggle>
|
|
585
592
|
<ngx-mat-datetime-picker #dtpicker [showSeconds]="true"></ngx-mat-datetime-picker>
|
|
586
593
|
</div>
|
|
@@ -638,10 +645,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
638
645
|
{{attribute.displayName}}
|
|
639
646
|
</div>
|
|
640
647
|
<div class="d-flex flex-grow-1">
|
|
641
|
-
<select
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
648
|
+
<select
|
|
649
|
+
[ngModel]="(attributeValues[0].valueAttributeChoice)?attributeValues[0].valueAttributeChoice.idAttributeChoice:undefined"
|
|
650
|
+
(ngModelChange)="valueChoiceChange($event)"
|
|
651
|
+
[disabled]="!editInline || attribute.isCalculated === 'Y'"
|
|
652
|
+
class="form-control edit-renderer">
|
|
645
653
|
<option [ngValue]="undefined"></option>
|
|
646
654
|
<option *ngFor="let attributeChoice of attributeChoices"
|
|
647
655
|
[ngValue]="attributeChoice.idAttributeChoice">
|
|
@@ -666,8 +674,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
666
674
|
[checked]="attributeChoice.value"
|
|
667
675
|
[disabled]="!editInline || attribute.isCalculated === 'Y'"
|
|
668
676
|
(change)="valueMultiChoiceChange(attributeChoice)"
|
|
669
|
-
|
|
670
|
-
class="form-control checkbox" />
|
|
677
|
+
[disabled]="!editInline || attribute.isCalculated === 'Y'"
|
|
678
|
+
class="form-control checkbox" attr.aria-label="hci-ng-attribute-flex-input-choice-multiple-{{attributeChoice.choice}}"/>
|
|
671
679
|
<div class="cod-label ps-1">
|
|
672
680
|
{{attributeChoice.choice}}
|
|
673
681
|
</div>
|
|
@@ -692,7 +700,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
692
700
|
[disabled]="!editInline || attribute.isCalculated === 'Y'"
|
|
693
701
|
(change)="valueMultiDictChange(entry)"
|
|
694
702
|
[disabled]="!editInline || attribute.isCalculated === 'Y'"
|
|
695
|
-
class="form-control checkbox" />
|
|
703
|
+
class="form-control checkbox" attr.aria-label="hci-ng-attribute-flex-input-dictionary-choice-{{entry.display}}"/>
|
|
696
704
|
<div class="cod-label ps-1">
|
|
697
705
|
{{entry.display}}
|
|
698
706
|
</div>
|
|
@@ -802,4 +810,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
802
810
|
</ng-template>
|
|
803
811
|
`, styles: [".hci-cod button.mat-icon-button.mat-button-base{height:20px;width:20px;line-height:unset}.btn-ga{padding:0;height:18px;width:18px}.ga-icon{font-size:.9em;vertical-align:top}.hci-cod .mat-datepicker-toggle-default-icon{height:20px;width:20px}\n"] }]
|
|
804
812
|
}], ctorParameters: () => [{ type: i1.AttributeService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i2.NgbModal }] });
|
|
805
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLWZsZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29kL3NyYy9jb21wb25lbnRzL2F0dHJpYnV0ZS1mbGV4LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBVSxTQUFTLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBR3BELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7Ozs7OztBQUkvRDs7OztHQUlHO0FBb1pILE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxhQUFhO0lBRXZELFlBQVksZ0JBQWtDLEVBQUUsVUFBc0IsRUFBRSxRQUFtQixFQUFFLFlBQXNCO1FBQ2pILEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxxQkFBcUIsQ0FBQyxVQUFnQyxFQUFFLE9BQWM7UUFDcEUsS0FBSyxDQUFDLHFCQUFxQixDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUVqRCxJQUFJLEtBQUssR0FBVyxDQUFDLENBQUM7UUFDdEIsS0FBSyxJQUFJLFNBQVMsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNqQyxLQUFLLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQztRQUN2QixDQUFDO1FBRUQsS0FBSyxJQUFJLFNBQVMsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNqQyxJQUFJLFlBQVksR0FBVyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUVuRSxLQUFLLElBQUksTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUMzQixJQUFJLE1BQU0sQ0FBQyxjQUFjLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEtBQUssU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUN6RixNQUFNLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUM7b0JBQzlCLE1BQU0sQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO29CQUNuQyxNQUFNO2dCQUNSLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7OEdBcENVLHNCQUFzQjtrR0FBdEIsc0JBQXNCLGlGQWhadkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc1hUOzsyRkEwQlUsc0JBQXNCO2tCQW5abEMsU0FBUzsrQkFDRSxvQkFBb0IsaUJBQ2YsaUJBQWlCLENBQUMsSUFBSSxZQUMzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzWFQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5qZWN0LCBSZW5kZXJlcjIsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge05nYk1vZGFsfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuXHJcblxyXG5pbXBvcnQge0F0dHJpYnV0ZUJhc2V9IGZyb20gXCIuL2F0dHJpYnV0ZS1iYXNlXCI7XHJcbmltcG9ydCB7QXR0cmlidXRlU2VydmljZX0gZnJvbSBcIi4uL3NlcnZpY2VzL2F0dHJpYnV0ZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7QXR0cmlidXRlfSBmcm9tIFwiLi4vbW9kZWwvYXR0cmlidXRlLmVudGl0eVwiO1xyXG5pbXBvcnQge0dyYXBoaWNhbEF0dHJpYnV0ZX0gZnJvbSBcIi4uL21vZGVsL2dyYXBoaWNhbC1hdHRyaWJ1dGUuZW50aXR5XCI7XHJcblxyXG4vKipcclxuICogVGhlIHZpZXcgZm9yIGF0dHJpYnV0ZXMgb3JnYW5pemVkIGluIGEgZmxleCBsYXlvdXQuICBUaGlzIHdpbGwgYXJyYW5nZSBhbGwgYXR0cmlidXRlcyBpbiBhIGZvdXIgY29sdW1uIGxheW91dFxyXG4gKiB3aXRoIGdyaWRzIHRha2luZyB1cCBhbGwgMTIgY29sdW1ucy4gIFRoZSBhdHRyaWJ1dGVzIGhlcmUgd2lsbCBmaWxsIHRoZSB0aGlzIHBhcmVudCBjb21wb25lbnQgd2hpY2ggZGVmaW5lcyB0aGVcclxuICogY29sdW1uIHNpemUuXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJoY2ktYXR0cmlidXRlLWZsZXhcIixcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8IS0tIExpbmUgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ0xJTkUnXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IGNvZC10eXBlLWxpbmVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGNvZC1saW5lIG1lLTEgbXQtYXV0byBtYi1hdXRvIGZsZXgtc2hyaW5rLTBcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29kLXRvcC1sYWJlbCBtZS0xIGZsZXgtc2hyaW5rLTBcIj5cclxuICAgICAgICAgIHt7YXR0cmlidXRlLmRpc3BsYXlOYW1lfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGNvZC1saW5lIGdyb3cgbXQtYXV0byBtYi1hdXRvXCI+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBMYWJlbCAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnTEFCRUwnXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gY29kLXR5cGUtbGFiZWxcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29kLXRvcC1sYWJlbCBtZS0xXCI+XHJcbiAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBTdHJpbmcgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ1MnXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvZC10eXBlLXNcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29kLXRvcC1sYWJlbCBtZS0xXCI+XHJcbiAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgPGlucHV0ICNpbnB1dFJlZlxyXG4gICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZVN0cmluZ1wiXHJcbiAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsdWVTdHJpbmdDaGFuZ2UoJGV2ZW50KVwiXHJcblx0XHRcdFx0ICAgICAgICAgW2Rpc2FibGVkXT1cIiFlZGl0SW5saW5lIHx8IGF0dHJpYnV0ZS5pc0NhbGN1bGF0ZWQgPT09ICdZJ1wiXHJcbiAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gVGV4dCAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnVFhUJ1wiPlxyXG4gICAgICA8ZGl2ICNhdHRyaWJ1dGVSZWZcclxuICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBjb2QtdHlwZS10eHRcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29kLXRvcC1sYWJlbCBtZS0xXCI+XHJcbiAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgPHRleHRhcmVhXHJcbiAgICAgICAgICAgICNpbnB1dFJlZlxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIHNwZWxsY2hlY2s9XCJzcGVsbGNoZWNrXCJcclxuICAgICAgICAgICAgbGFuZz1cImVuXCJcclxuICAgICAgICAgICAgW25nTW9kZWxdPVwiYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlTG9uZ1RleHQudGV4dERhdGFcIlxyXG4gICAgICAgICAgICAoY2hhbmdlKT1cInZhbHVlVGV4dENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFlZGl0SW5saW5lIHx8IGF0dHJpYnV0ZS5pc0NhbGN1bGF0ZWQgPT09ICdZJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCI+XHJcbiAgICAgICAgICA8L3RleHRhcmVhPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gQ2hlY2tib3ggLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ0NCJ1wiPlxyXG4gICAgICA8ZGl2ICNhdHRyaWJ1dGVSZWZcclxuICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBjb2QtdHlwZS1jYlwiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJhdHRyaWJ1dGUuZGlzcGxheU5hbWVcIiBjbGFzcz1cImQtZmxleCBjb2QtdG9wLWxhYmVsIG1lLTFcIj5cclxuICAgICAgICAgIHt7YXR0cmlidXRlLmRpc3BsYXlOYW1lfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgICA8aW5wdXQgI2lucHV0UmVmXHJcbiAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJhdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVTdHJpbmcgPT09ICdZJ1wiXHJcbiAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ2YWx1ZUNoZWNrYm94Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZWRpdElubGluZSB8fCBhdHRyaWJ1dGUuaXNDYWxjdWxhdGVkID09PSAnWSdcIlxyXG4gICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIE51bWVyaWMgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ04nXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvZC10eXBlLW5cIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29kLXRvcC1sYWJlbCBtZS0xXCI+XHJcbiAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgPGlucHV0ICNpbnB1dFJlZlxyXG4gICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlTnVtZXJpY1wiXHJcbiAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsdWVOdW1lcmljQ2hhbmdlKCRldmVudClcIlxyXG5cdFx0XHRcdCAgICAgICAgIFtkaXNhYmxlZF09XCIhZWRpdElubGluZSB8fCBhdHRyaWJ1dGUuaXNDYWxjdWxhdGVkID09PSAnWSdcIlxyXG4gICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIEludGVnZXIgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ0knXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvZC10eXBlLWlcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29kLXRvcC1sYWJlbCBtZS0xXCI+XHJcbiAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgPGlucHV0ICNpbnB1dFJlZlxyXG4gICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlSW50ZWdlclwiXHJcbiAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsdWVJbnRlZ2VyQ2hhbmdlKCRldmVudClcIlxyXG5cdFx0XHRcdCAgICAgICAgIFtkaXNhYmxlZF09XCIhZWRpdElubGluZSB8fCBhdHRyaWJ1dGUuaXNDYWxjdWxhdGVkID09PSAnWSdcIlxyXG4gICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIERhdGUgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ0QnXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvZC10eXBlLWRcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29kLXRvcC1sYWJlbCBtZS0xXCI+XHJcbiAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgIDxpbnB1dCAjaW5wdXRSZWZcclxuICAgICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgIG5hbWU9XCJ2YWx1ZURhdGVcIiAgICAgICAgICBcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZURhdGVcIiBcclxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZURhdGVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwidmFsdWVEYXRlXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWVkaXRJbmxpbmUgfHwgYXR0cmlidXRlLmlzQ2FsY3VsYXRlZCA9PT0gJ1knXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiPlxyXG4gICAgICAgICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlICBtYXRTdWZmaXggW2Zvcl09XCJ2YWx1ZURhdGVcIiBjbGFzcz1cImNvZC1kcC10b2dnbGVcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cclxuICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyICN2YWx1ZURhdGU+PC9tYXQtZGF0ZXBpY2tlcj4gIFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gRGF0ZSBUaW1lIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgPT09ICdEVCdcIj5cclxuICAgICAgPGRpdiAjYXR0cmlidXRlUmVmXHJcbiAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gY29kLXR5cGUtZHRcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29kLXRvcC1sYWJlbCBtZS0xXCI+XHJcbiAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgPGlucHV0ICNpbnB1dFJlZlxyXG4gICAgICAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgbmFtZT1cInZhbHVlRGF0ZVRpbWVcIlxyXG4gICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImF0dHJpYnV0ZVZhbHVlc1swXS5kYXRlXCJcclxuICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZURhdGVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFlZGl0SW5saW5lIHx8IGF0dHJpYnV0ZS5pc0NhbGN1bGF0ZWQgPT09ICdZJ1wiXHJcbiAgICAgICAgICAgICAgICAgW25neE1hdERhdGV0aW1lUGlja2VyXT1cImR0cGlja2VyXCI+XHJcbiAgICAgICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwiZHRwaWNrZXJcIiBjbGFzcz1cImNvZC1kcC10b2dnbGVcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgPG5neC1tYXQtZGF0ZXRpbWUtcGlja2VyICNkdHBpY2tlciBbc2hvd1NlY29uZHNdPVwidHJ1ZVwiPjwvbmd4LW1hdC1kYXRldGltZS1waWNrZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBCb29sZWFuIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgPT09ICdCJ1wiPlxyXG4gICAgICA8ZGl2ICNhdHRyaWJ1dGVSZWZcclxuICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBjb2QtdHlwZS1iXCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImF0dHJpYnV0ZS5kaXNwbGF5TmFtZVwiIGNsYXNzPVwiZC1mbGV4IGNvZC10b3AtbGFiZWwgbWUtMVwiPlxyXG4gICAgICAgICAge3thdHRyaWJ1dGUuZGlzcGxheU5hbWV9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1ncm93LTFcIj5cclxuICAgICAgICAgIDxzZWxlY3QgI2lucHV0UmVmXHJcbiAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZVN0cmluZ1wiXHJcbiAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInZhbHVlU3RyaW5nQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWVkaXRJbmxpbmUgfHwgYXR0cmlidXRlLmlzQ2FsY3VsYXRlZCA9PT0gJ1knXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZWRpdC1yZW5kZXJlclwiPlxyXG4gICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cInVuZGVmaW5lZFwiPjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIidZJ1wiIFtzZWxlY3RlZF09XCJhdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVTdHJpbmcgPT09ICdZJ1wiPlllczwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIidOJ1wiIFtzZWxlY3RlZF09XCJhdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVTdHJpbmcgPT09ICdOJ1wiPk5vPC9vcHRpb24+XHJcbiAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIEV4dGVuZGVkIEJvb2xlYW4gLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ0VCJ1wiPlxyXG4gICAgICA8ZGl2ICNhdHRyaWJ1dGVSZWZcclxuICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBjb2QtdHlwZS1lYlwiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJhdHRyaWJ1dGUuZGlzcGxheU5hbWVcIiBjbGFzcz1cImQtZmxleCBjb2QtdG9wLWxhYmVsIG1lLTFcIj5cclxuICAgICAgICAgIHt7YXR0cmlidXRlLmRpc3BsYXlOYW1lfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgICA8c2VsZWN0ICNpbnB1dFJlZlxyXG4gICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJhdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVTdHJpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZVN0cmluZ0NoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFlZGl0SW5saW5lIHx8IGF0dHJpYnV0ZS5pc0NhbGN1bGF0ZWQgPT09ICdZJ1wiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGVkaXQtcmVuZGVyZXJcIj5cclxuICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJ1bmRlZmluZWRcIj48L29wdGlvbj5cclxuICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCInWSdcIiBbc2VsZWN0ZWRdPVwiYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlU3RyaW5nID09PSAnWSdcIj5ZZXM8L29wdGlvbj5cclxuICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCInTidcIiBbc2VsZWN0ZWRdPVwiYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlU3RyaW5nID09PSAnTidcIj5Obzwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIidVJ1wiIFtzZWxlY3RlZF09XCJhdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVTdHJpbmcgPT09ICdVJ1wiPlVua25vd248L29wdGlvbj5cclxuICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gQ2hvaWNlOiBTaW5nbGUgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ0FDJyAmJiBhdHRyaWJ1dGUuaXNNdWx0aVZhbHVlID09PSAnTidcIj5cclxuICAgICAgPGRpdiAjYXR0cmlidXRlUmVmXHJcbiAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gY29kLXR5cGUtYWMtblwiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJhdHRyaWJ1dGUuZGlzcGxheU5hbWVcIiBjbGFzcz1cImQtZmxleCBjb2QtdG9wLWxhYmVsIG1lLTFcIj5cclxuICAgICAgICAgIHt7YXR0cmlidXRlLmRpc3BsYXlOYW1lfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgICA8c2VsZWN0IFtuZ01vZGVsXT1cIihhdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVBdHRyaWJ1dGVDaG9pY2UpP2F0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZUF0dHJpYnV0ZUNob2ljZS5pZEF0dHJpYnV0ZUNob2ljZTp1bmRlZmluZWRcIlxyXG4gICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZUNob2ljZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICBcdFx0XHRcdCAgW2Rpc2FibGVkXT1cIiFlZGl0SW5saW5lIHx8IGF0dHJpYnV0ZS5pc0NhbGN1bGF0ZWQgPT09ICdZJ1wiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGVkaXQtcmVuZGVyZXJcIj5cclxuICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJ1bmRlZmluZWRcIj48L29wdGlvbj5cclxuICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgYXR0cmlidXRlQ2hvaWNlIG9mIGF0dHJpYnV0ZUNob2ljZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cImF0dHJpYnV0ZUNob2ljZS5pZEF0dHJpYnV0ZUNob2ljZVwiPlxyXG4gICAgICAgICAgICAgIHt7IGF0dHJpYnV0ZUNob2ljZS5jaG9pY2UgfX1cclxuICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIENob2ljZTogTXVsdGkgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ0FDJyAmJiBhdHRyaWJ1dGUuaXNNdWx0aVZhbHVlID09PSAnWSdcIj5cclxuICAgICAgPGRpdiAjYXR0cmlidXRlUmVmXHJcbiAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gY29kLXR5cGUtYWMteVwiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJhdHRyaWJ1dGUuZGlzcGxheU5hbWVcIiBjbGFzcz1cImQtZmxleCBjb2QtdG9wLWxhYmVsIG1lLTFcIj5cclxuICAgICAgICAgIHt7YXR0cmlidXRlLmRpc3BsYXlOYW1lfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtZ3Jvdy0xIGZsZXgtY29sdW1uIHktYXV0b1wiIHN0eWxlPVwibWF4LWhlaWdodDogMTI1cHg7IHJvdy1nYXA6IDVweFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXR0cmlidXRlQ2hvaWNlIG9mIGF0dHJpYnV0ZUNob2ljZXNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXNocmluay0wXCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImF0dHJpYnV0ZUNob2ljZS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZWRpdElubGluZSB8fCBhdHRyaWJ1dGUuaXNDYWxjdWxhdGVkID09PSAnWSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInZhbHVlTXVsdGlDaG9pY2VDaGFuZ2UoYXR0cmlidXRlQ2hvaWNlKVwiXHJcblx0XHRcdFx0XHQgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZWRpdElubGluZSB8fCBhdHRyaWJ1dGUuaXNDYWxjdWxhdGVkID09PSAnWSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBjaGVja2JveFwiIC8+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvZC1sYWJlbCBwcy0xXCI+XHJcbiAgICAgICAgICAgICAgICB7e2F0dHJpYnV0ZUNob2ljZS5jaG9pY2V9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgXHJcbiAgICA8IS0tIERpY3Rpb25hcnk6IE11bHRpIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgPT09ICdESUNUJyAmJiBhdHRyaWJ1dGUuaXNNdWx0aVZhbHVlID09PSAnWSdcIj5cclxuICAgICAgPGRpdiAjYXR0cmlidXRlUmVmXHJcbiAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gY29kLXR5cGUtYWMteVwiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJhdHRyaWJ1dGUuZGlzcGxheU5hbWVcIiBjbGFzcz1cImQtZmxleCBjb2QtdG9wLWxhYmVsIG1lLTFcIj5cclxuICAgICAgICAgIHt7YXR0cmlidXRlLmRpc3BsYXlOYW1lfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtZ3Jvdy0xIGZsZXgtY29sdW1uIHktYXV0b1wiIHN0eWxlPVwibWF4LWhlaWdodDogMTI1cHg7IHJvdy1nYXA6IDVweFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZW50cnkgb2YgZGljdGlvbmFyeUVudHJpZXNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXNocmluay0wXCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImVudHJ5LmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWVkaXRJbmxpbmUgfHwgYXR0cmlidXRlLmlzQ2FsY3VsYXRlZCA9PT0gJ1knXCJcclxuICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ2YWx1ZU11bHRpRGljdENoYW5nZShlbnRyeSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWVkaXRJbmxpbmUgfHwgYXR0cmlidXRlLmlzQ2FsY3VsYXRlZCA9PT0gJ1knXCJcclxuICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgY2hlY2tib3hcIiAvPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2QtbGFiZWwgcHMtMVwiPlxyXG4gICAgICAgICAgICAgICAge3tlbnRyeS5kaXNwbGF5fX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj4gICAgXHJcblxyXG4gICAgPCEtLSBEaWN0aW9uYXJ5IC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgPT09ICdESUNUJyAmJiBhdHRyaWJ1dGUuaXNNdWx0aVZhbHVlID09PSAnTidcIj5cclxuICAgICAgPGRpdiAjYXR0cmlidXRlUmVmXHJcbiAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gY29kLXR5cGUtZGljdFwiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJhdHRyaWJ1dGUuZGlzcGxheU5hbWVcIiBjbGFzcz1cImQtZmxleCBjb2QtdG9wLWxhYmVsIG1lLTFcIj5cclxuICAgICAgICAgIHt7YXR0cmlidXRlLmRpc3BsYXlOYW1lfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgICA8c2VsZWN0ICNpbnB1dFJlZlxyXG4gICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJhdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVJZERpY3Rpb25hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZURpY3RDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZWRpdElubGluZSB8fCBhdHRyaWJ1dGUuaXNDYWxjdWxhdGVkID09PSAnWSdcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBlZGl0LXJlbmRlcmVyXCI+XHJcbiAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwidW5kZWZpbmVkXCI+PC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGVudHJ5IG9mIGRpY3Rpb25hcnlFbnRyaWVzXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdWYWx1ZV09XCJlbnRyeS52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgIHt7IGVudHJ5LmRpc3BsYXkgfX1cclxuICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIEdyaWQgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ0dBJ1wiPlxyXG4gICAgICA8ZGl2ICNhdHRyaWJ1dGVSZWYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gY29kLXR5cGUtZ2FcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmlkQXR0cmlidXRlXCIgY2xhc3M9XCJkLWZsZXggY29kLXRvcC1sYWJlbCBtci0xXCI+XHJcbiAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJlZGl0SW5saW5lXCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogYXV0bztcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4tZ2FcIlxyXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiKCF0aGlzLmF0dHJpYnV0ZVNlcnZpY2UuZWRpdEJ1dHRvbnNFbmFibGVkKVwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGRHcmlkUm93KGVkaXRHcmlkTW9kYWwsIGF0dHJpYnV0ZS5pZEF0dHJpYnV0ZSlcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ2EtaWNvblwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtcGx1cyBmYS14c1wiPjwvaT5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1nYVwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIoIXRoaXMuYXR0cmlidXRlU2VydmljZS5lZGl0QnV0dG9uc0VuYWJsZWQpXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUdyaWRSb3coYXR0cmlidXRlLmlkQXR0cmlidXRlKVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJnYS1pY29uXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1taW51cyBmYS14c1wiPjwvaT5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWdyb3ctMVwiPiAgICAgICAgICAgICBcclxuICAgICAgICAgIDxhZy1ncmlkLWFuZ3VsYXIgI2dyaWRBdHRyaWJ1dGVcclxuICAgICAgICAgICAgICBjbGFzcz1cImFnLXRoZW1lLWFscGluZVwiXHJcbiAgICAgICAgICAgICAgKGdyaWRSZWFkeSk9XCJ0aGlzLm9uR3JpZFJlYWR5KCRldmVudClcIlxyXG4gICAgICAgICAgICAgIChtb2RlbFVwZGF0ZWQpPVwib25Nb2RlbFVwZGF0ZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgKGdyaWRTaXplQ2hhbmdlZCk9XCJvbkdyaWRTaXplQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAocm93RG91YmxlQ2xpY2tlZCk9XCJlZGl0R3JpZFJvdyhlZGl0R3JpZE1vZGFsLCBhdHRyaWJ1dGUuaWRBdHRyaWJ1dGUsICRldmVudClcIlxyXG4gICAgICAgICAgICAgIFtncmlkT3B0aW9uc109XCJ0aGlzLmdyaWRPcHRpb25zXCJcclxuICAgICAgICAgICAgICBbcm93U2VsZWN0aW9uXT1cIidzaW5nbGUnXCJcclxuICAgICAgICAgICAgICBbY29sdW1uRGVmc109XCJncmlkQ29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgW3Jvd0RhdGFdPVwiZ3JpZERhdGFcIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJhdHRyaWJ1dGUudyArICdweCdcIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiYXR0cmlidXRlLmggKyAncHgnXCI+XHJcbiAgICAgICAgICA8L2FnLWdyaWQtYW5ndWxhcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIFxyXG4gICAgPG5nLXRlbXBsYXRlICNlZGl0R3JpZE1vZGFsIGxldC1jbG9zZT1cImNsb3NlXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19IEdyaWQgUm93XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBkLWZsZXggZmxleC1jb2x1bW4gaGNpLWNvZC1lZGl0XCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXR0cmlidXRlIG9mIGVkaXRHcm91cFJvd0F0dHJpYnV0ZXNcIj5cclxuICAgICAgICAgIDxoY2ktYXR0cmlidXRlLWVkaXQgW2lkXT1cIidlZGl0LWlkLWF0dHJpYnV0ZS0nICsgYXR0cmlidXRlLmlkQXR0cmlidXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dyb3VwQXR0cmlidXRlUm93SWRdPVwiZWRpdEdyb3VwQXR0cmlidXRlUm93SWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0cmlidXRlXT1cImF0dHJpYnV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXR0cmlidXRlXCI+PC9oY2ktYXR0cmlidXRlLWVkaXQ+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiKCF0aGlzLmF0dHJpYnV0ZVNlcnZpY2UuZWRpdEJ1dHRvbnNFbmFibGVkKVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZSgnU2F2ZScpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIFNhdmVcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZSgnQ2FuY2VsJylcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgQ2FuY2VsXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgYFxyXG4gICxcclxuICBzdHlsZXM6IFtgXHJcbiAgXHQuaGNpLWNvZCBidXR0b24ubWF0LWljb24tYnV0dG9uLm1hdC1idXR0b24tYmFzZSB7XHJcbiAgICAgIFx0aGVpZ2h0OiAyMHB4O1xyXG4gICAgICBcdHdpZHRoOiAyMHB4O1xyXG4gICAgICBcdGxpbmUtaGVpZ2h0OiB1bnNldDtcclxuICBcdH1cclxuICBcdFxyXG4gICAgLmJ0bi1nYSB7XHJcbiAgICAgIHBhZGRpbmc6IDBweDtcclxuICAgICAgaGVpZ2h0OiAxOHB4O1xyXG4gICAgICB3aWR0aDogMThweDtcclxuICAgIH1cclxuICAgIFxyXG4gICAgLmdhLWljb24ge1xyXG4gICAgICBmb250LXNpemU6IC45ZW07XHJcbiAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XHJcbiAgICB9XHJcblxyXG4gICAgLmhjaS1jb2QgLm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1kZWZhdWx0LWljb24ge1xyXG4gICAgICBoZWlnaHQ6IDIwcHg7XHJcbiAgICAgIHdpZHRoOiAyMHB4O1xyXG4gICAgfVxyXG4gYF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEF0dHJpYnV0ZUZsZXhDb21wb25lbnQgZXh0ZW5kcyBBdHRyaWJ1dGVCYXNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IoYXR0cmlidXRlU2VydmljZTogQXR0cmlidXRlU2VydmljZSwgZWxlbWVudFJlZjogRWxlbWVudFJlZiwgcmVuZGVyZXI6IFJlbmRlcmVyMiwgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCkge1xyXG4gICAgc3VwZXIoYXR0cmlidXRlU2VydmljZSwgZWxlbWVudFJlZiwgcmVuZGVyZXIsIG1vZGFsU2VydmljZSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlZnJlc2goKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZsZXggbmVlZHMgdG8gZXh0ZW5kIGdyaWQgY29sdW1ucyBiZWNhdXNlIHdlIG5vIGxvbmdlciB3YW50IHRvIHVzZSBhYnNvbHV0ZSB3aWR0aC4gIEhlcmUgd2UgZ2VuZXJhdGUgcGVyY2VudGFnZVxyXG4gICAqIGJhc2VkIHVwb24gdGhlIGFic29sdXRlIHdpZHRoLCBidXQgc3RpbGwgdXNlIGFic29sdXRlIHdpZHRoIGZvciB0aGUgbWluIHdpZHRoLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtBdHRyaWJ1dGVbXX0gYXR0cmlidXRlc1xyXG4gICAqIEBwYXJhbSB7YW55W119IGNvbHVtbnNcclxuICAgKi9cclxuICBpbml0aWFsaXplR3JpZENvbHVtbnMoYXR0cmlidXRlczogR3JhcGhpY2FsQXR0cmlidXRlW10sIGNvbHVtbnM6IGFueVtdKSB7XHJcbiAgICBzdXBlci5pbml0aWFsaXplR3JpZENvbHVtbnMoYXR0cmlidXRlcywgY29sdW1ucyk7XHJcblxyXG4gICAgbGV0IHdpZHRoOiBudW1iZXIgPSAwO1xyXG4gICAgZm9yIChsZXQgYXR0cmlidXRlIG9mIGF0dHJpYnV0ZXMpIHtcclxuICAgICAgd2lkdGggKz0gYXR0cmlidXRlLnc7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgYXR0cmlidXRlIG9mIGF0dHJpYnV0ZXMpIHtcclxuICAgICAgbGV0IHdpZHRoUGVyY2VudDogbnVtYmVyID0gTWF0aC5mbG9vcigxMDAgKiAoYXR0cmlidXRlLncgLyB3aWR0aCkpO1xyXG5cclxuICAgICAgZm9yIChsZXQgY29sdW1uIG9mIGNvbHVtbnMpIHtcclxuICAgICAgICBpZiAoY29sdW1uLmV4dGVybmFsQ29uZmlnICYmIGNvbHVtbi5leHRlcm5hbENvbmZpZy5pZEF0dHJpYnV0ZSA9PT0gYXR0cmlidXRlLmlkQXR0cmlidXRlKSB7XHJcbiAgICAgICAgICBjb2x1bW4ubWluV2lkdGggPSBhdHRyaWJ1dGUudztcclxuICAgICAgICAgIGNvbHVtbi53aWR0aFBlcmNlbnQgPSB3aWR0aFBlcmNlbnQ7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
813
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLWZsZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29kL3NyYy9jb21wb25lbnRzL2F0dHJpYnV0ZS1mbGV4LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBVSxTQUFTLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBR3BELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7Ozs7OztBQUkvRDs7OztHQUlHO0FBc1pILE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxhQUFhO0lBRXZELFlBQ0UsZ0JBQWtDLEVBQ2xDLFVBQXNCLEVBQ3RCLFFBQW1CLEVBQ25CLFlBQXNCO1FBRXRCLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBUDlELDJDQUFzQyxHQUFHLEVBQUUsQ0FBQztJQVE1QyxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNmLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxzQ0FBc0MsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQztRQUMzRSxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILHFCQUFxQixDQUFDLFVBQWdDLEVBQUUsT0FBYztRQUNwRSxLQUFLLENBQUMscUJBQXFCLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRWpELElBQUksS0FBSyxHQUFXLENBQUMsQ0FBQztRQUN0QixLQUFLLElBQUksU0FBUyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2pDLEtBQUssSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3ZCLENBQUM7UUFFRCxLQUFLLElBQUksU0FBUyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2pDLElBQUksWUFBWSxHQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBRW5FLEtBQUssSUFBSSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQzNCLElBQUksTUFBTSxDQUFDLGNBQWMsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLFdBQVcsS0FBSyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ3pGLE1BQU0sQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQztvQkFDOUIsTUFBTSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7b0JBQ25DLE1BQU07Z0JBQ1IsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzs4R0E1Q1Usc0JBQXNCO2tHQUF0QixzQkFBc0IsaUZBbFp2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdYVDs7MkZBMEJVLHNCQUFzQjtrQkFyWmxDLFNBQVM7K0JBQ0Usb0JBQW9CLGlCQUNmLGlCQUFpQixDQUFDLElBQUksWUFDM0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3WFQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5qZWN0LCBSZW5kZXJlcjIsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge05nYk1vZGFsfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuXHJcblxyXG5pbXBvcnQge0F0dHJpYnV0ZUJhc2V9IGZyb20gXCIuL2F0dHJpYnV0ZS1iYXNlXCI7XHJcbmltcG9ydCB7QXR0cmlidXRlU2VydmljZX0gZnJvbSBcIi4uL3NlcnZpY2VzL2F0dHJpYnV0ZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7QXR0cmlidXRlfSBmcm9tIFwiLi4vbW9kZWwvYXR0cmlidXRlLmVudGl0eVwiO1xyXG5pbXBvcnQge0dyYXBoaWNhbEF0dHJpYnV0ZX0gZnJvbSBcIi4uL21vZGVsL2dyYXBoaWNhbC1hdHRyaWJ1dGUuZW50aXR5XCI7XHJcblxyXG4vKipcclxuICogVGhlIHZpZXcgZm9yIGF0dHJpYnV0ZXMgb3JnYW5pemVkIGluIGEgZmxleCBsYXlvdXQuICBUaGlzIHdpbGwgYXJyYW5nZSBhbGwgYXR0cmlidXRlcyBpbiBhIGZvdXIgY29sdW1uIGxheW91dFxyXG4gKiB3aXRoIGdyaWRzIHRha2luZyB1cCBhbGwgMTIgY29sdW1ucy4gIFRoZSBhdHRyaWJ1dGVzIGhlcmUgd2lsbCBmaWxsIHRoZSB0aGlzIHBhcmVudCBjb21wb25lbnQgd2hpY2ggZGVmaW5lcyB0aGVcclxuICogY29sdW1uIHNpemUuXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJoY2ktYXR0cmlidXRlLWZsZXhcIixcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8IS0tIExpbmUgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ0xJTkUnXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IGNvZC10eXBlLWxpbmVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGNvZC1saW5lIG1lLTEgbXQtYXV0byBtYi1hdXRvIGZsZXgtc2hyaW5rLTBcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29kLXRvcC1sYWJlbCBtZS0xIGZsZXgtc2hyaW5rLTBcIj5cclxuICAgICAgICAgIHt7YXR0cmlidXRlLmRpc3BsYXlOYW1lfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGNvZC1saW5lIGdyb3cgbXQtYXV0byBtYi1hdXRvXCI+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBMYWJlbCAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnTEFCRUwnXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gY29kLXR5cGUtbGFiZWxcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29kLXRvcC1sYWJlbCBtZS0xXCI+XHJcbiAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDwhLS0gU3RyaW5nIC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnUydcIj5cclxuICAgICAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBjb2QtdHlwZS1zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhdHRyaWJ1dGUuZGlzcGxheU5hbWVcIiBjbGFzcz1cImQtZmxleCBjb2QtdG9wLWxhYmVsIG1lLTFcIj5cclxuICAgICAgICAgICAgICB7eyBhdHRyaWJ1dGUuZGlzcGxheU5hbWUgfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1ncm93LTFcIj5cclxuICAgICAgICAgICAgICA8aW5wdXQgI2lucHV0UmVmXHJcbiAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJhdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVTdHJpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZVN0cmluZ0NoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFlZGl0SW5saW5lIHx8IGF0dHJpYnV0ZS5pc0NhbGN1bGF0ZWQgPT09ICdZJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgYXR0ci5hcmlhLWxhYmVsPVwiaGNpLW5nLWF0dHJpYnV0ZS1mbGV4LWlucHV0LXN0cmluZy17e2hjaU5nQXR0cmlidXRlQWJzb2x1dGVJbnB1dERpc3BsYXlOYW1lfX1cIi8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuICAgIDwhLS0gVGV4dCAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnVFhUJ1wiPlxyXG4gICAgICA8ZGl2ICNhdHRyaWJ1dGVSZWZcclxuICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBjb2QtdHlwZS10eHRcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29kLXRvcC1sYWJlbCBtZS0xXCI+XHJcbiAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgPHRleHRhcmVhXHJcbiAgICAgICAgICAgICNpbnB1dFJlZlxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIHNwZWxsY2hlY2s9XCJzcGVsbGNoZWNrXCJcclxuICAgICAgICAgICAgbGFuZz1cImVuXCJcclxuICAgICAgICAgICAgW25nTW9kZWxdPVwiYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlTG9uZ1RleHQudGV4dERhdGFcIlxyXG4gICAgICAgICAgICAoY2hhbmdlKT1cInZhbHVlVGV4dENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFlZGl0SW5saW5lIHx8IGF0dHJpYnV0ZS5pc0NhbGN1bGF0ZWQgPT09ICdZJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCI+XHJcbiAgICAgICAgICA8L3RleHRhcmVhPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gQ2hlY2tib3ggLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ0NCJ1wiPlxyXG4gICAgICA8ZGl2ICNhdHRyaWJ1dGVSZWZcclxuICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBjb2QtdHlwZS1jYlwiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJhdHRyaWJ1dGUuZGlzcGxheU5hbWVcIiBjbGFzcz1cImQtZmxleCBjb2QtdG9wLWxhYmVsIG1lLTFcIj5cclxuICAgICAgICAgIHt7YXR0cmlidXRlLmRpc3BsYXlOYW1lfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgICA8aW5wdXQgI2lucHV0UmVmXHJcbiAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJhdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVTdHJpbmcgPT09ICdZJ1wiXHJcbiAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ2YWx1ZUNoZWNrYm94Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZWRpdElubGluZSB8fCBhdHRyaWJ1dGUuaXNDYWxjdWxhdGVkID09PSAnWSdcIlxyXG4gICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgYXR0ci5hcmlhLWxhYmVsPVwiaGNpLW5nLWF0dHJpYnV0ZS1mbGV4LWlucHV0LWNoZWNrYm94LXt7aGNpTmdBdHRyaWJ1dGVBYnNvbHV0ZUlucHV0RGlzcGxheU5hbWV9fVwiLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIE51bWVyaWMgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ04nXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvZC10eXBlLW5cIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29kLXRvcC1sYWJlbCBtZS0xXCI+XHJcbiAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgPGlucHV0ICNpbnB1dFJlZlxyXG4gICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlTnVtZXJpY1wiXHJcbiAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsdWVOdW1lcmljQ2hhbmdlKCRldmVudClcIlxyXG5cdFx0XHRcdCBbZGlzYWJsZWRdPVwiIWVkaXRJbmxpbmUgfHwgYXR0cmlidXRlLmlzQ2FsY3VsYXRlZCA9PT0gJ1knXCJcclxuICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIGF0dHIuYXJpYS1sYWJlbD1cImhjaS1uZy1hdHRyaWJ1dGUtZmxleC1pbnB1dC1udW1lcmljLXt7aGNpTmdBdHRyaWJ1dGVBYnNvbHV0ZUlucHV0RGlzcGxheU5hbWV9fVwiLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIEludGVnZXIgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ0knXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvZC10eXBlLWlcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29kLXRvcC1sYWJlbCBtZS0xXCI+XHJcbiAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgPGlucHV0ICNpbnB1dFJlZlxyXG4gICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlSW50ZWdlclwiXHJcbiAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsdWVJbnRlZ2VyQ2hhbmdlKCRldmVudClcIlxyXG5cdFx0XHRcdCBbZGlzYWJsZWRdPVwiIWVkaXRJbmxpbmUgfHwgYXR0cmlidXRlLmlzQ2FsY3VsYXRlZCA9PT0gJ1knXCJcclxuICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIGF0dHIuYXJpYS1sYWJlbD1cImhjaS1uZy1hdHRyaWJ1dGUtZmxleC1pbnB1dC1pbnRlZ2VyLXt7aGNpTmdBdHRyaWJ1dGVBYnNvbHV0ZUlucHV0RGlzcGxheU5hbWV9fVwiLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIERhdGUgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ0QnXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvZC10eXBlLWRcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29kLXRvcC1sYWJlbCBtZS0xXCI+XHJcbiAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgIDxpbnB1dCAjaW5wdXRSZWZcclxuICAgICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgIG5hbWU9XCJ2YWx1ZURhdGVcIiAgICAgICAgICBcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZURhdGVcIiBcclxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZURhdGVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwidmFsdWVEYXRlXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWVkaXRJbmxpbmUgfHwgYXR0cmlidXRlLmlzQ2FsY3VsYXRlZCA9PT0gJ1knXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIGF0dHIuYXJpYS1sYWJlbD1cImhjaS1uZy1hdHRyaWJ1dGUtZmxleC1pbnB1dC1kYXRlLXt7aGNpTmdBdHRyaWJ1dGVBYnNvbHV0ZUlucHV0RGlzcGxheU5hbWV9fVwiPlxyXG4gICAgICAgICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlICBtYXRTdWZmaXggW2Zvcl09XCJ2YWx1ZURhdGVcIiBjbGFzcz1cImNvZC1kcC10b2dnbGVcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cclxuICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyICN2YWx1ZURhdGU+PC9tYXQtZGF0ZXBpY2tlcj4gIFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gRGF0ZSBUaW1lIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgPT09ICdEVCdcIj5cclxuICAgICAgPGRpdiAjYXR0cmlidXRlUmVmXHJcbiAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gY29kLXR5cGUtZHRcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29kLXRvcC1sYWJlbCBtZS0xXCI+XHJcbiAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgPGlucHV0ICNpbnB1dFJlZlxyXG4gICAgICAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgbmFtZT1cInZhbHVlRGF0ZVRpbWVcIlxyXG4gICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImF0dHJpYnV0ZVZhbHVlc1swXS5kYXRlXCJcclxuICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZURhdGVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFlZGl0SW5saW5lIHx8IGF0dHJpYnV0ZS5pc0NhbGN1bGF0ZWQgPT09ICdZJ1wiXHJcbiAgICAgICAgICAgICAgICAgW25neE1hdERhdGV0aW1lUGlja2VyXT1cImR0cGlja2VyXCIgYXR0ci5hcmlhLWxhYmVsPVwiaGNpLW5nLWF0dHJpYnV0ZS1mbGV4LWlucHV0LWRhdGUtdGltZS17e2hjaU5nQXR0cmlidXRlQWJzb2x1dGVJbnB1dERpc3BsYXlOYW1lfX1cIj5cclxuICAgICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJkdHBpY2tlclwiIGNsYXNzPVwiY29kLWRwLXRvZ2dsZVwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICA8bmd4LW1hdC1kYXRldGltZS1waWNrZXIgI2R0cGlja2VyIFtzaG93U2Vjb25kc109XCJ0cnVlXCI+PC9uZ3gtbWF0LWRhdGV0aW1lLXBpY2tlcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIEJvb2xlYW4gLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ0InXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvZC10eXBlLWJcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29kLXRvcC1sYWJlbCBtZS0xXCI+XHJcbiAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgPHNlbGVjdCAjaW5wdXRSZWZcclxuICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlU3RyaW5nXCJcclxuICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsdWVTdHJpbmdDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZWRpdElubGluZSB8fCBhdHRyaWJ1dGUuaXNDYWxjdWxhdGVkID09PSAnWSdcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBlZGl0LXJlbmRlcmVyXCI+XHJcbiAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwidW5kZWZpbmVkXCI+PC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwiJ1knXCIgW3NlbGVjdGVkXT1cImF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZVN0cmluZyA9PT0gJ1knXCI+WWVzPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwiJ04nXCIgW3NlbGVjdGVkXT1cImF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZVN0cmluZyA9PT0gJ04nXCI+Tm88L29wdGlvbj5cclxuICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gRXh0ZW5kZWQgQm9vbGVhbiAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnRUInXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvZC10eXBlLWViXCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImF0dHJpYnV0ZS5kaXNwbGF5TmFtZVwiIGNsYXNzPVwiZC1mbGV4IGNvZC10b3AtbGFiZWwgbWUtMVwiPlxyXG4gICAgICAgICAge3thdHRyaWJ1dGUuZGlzcGxheU5hbWV9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1ncm93LTFcIj5cclxuICAgICAgICAgIDxzZWxlY3QgI2lucHV0UmVmXHJcbiAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZVN0cmluZ1wiXHJcbiAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInZhbHVlU3RyaW5nQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWVkaXRJbmxpbmUgfHwgYXR0cmlidXRlLmlzQ2FsY3VsYXRlZCA9PT0gJ1knXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZWRpdC1yZW5kZXJlclwiPlxyXG4gICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cInVuZGVmaW5lZFwiPjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIidZJ1wiIFtzZWxlY3RlZF09XCJhdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVTdHJpbmcgPT09ICdZJ1wiPlllczwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIidOJ1wiIFtzZWxlY3RlZF09XCJhdHRyaWJ1dGVWYWx1ZXNbMF0udmFsdWVTdHJpbmcgPT09ICdOJ1wiPk5vPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwiJ1UnXCIgW3NlbGVjdGVkXT1cImF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZVN0cmluZyA9PT0gJ1UnXCI+VW5rbm93bjwvb3B0aW9uPlxyXG4gICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBDaG9pY2U6IFNpbmdsZSAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnQUMnICYmIGF0dHJpYnV0ZS5pc011bHRpVmFsdWUgPT09ICdOJ1wiPlxyXG4gICAgICA8ZGl2ICNhdHRyaWJ1dGVSZWZcclxuICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBjb2QtdHlwZS1hYy1uXCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImF0dHJpYnV0ZS5kaXNwbGF5TmFtZVwiIGNsYXNzPVwiZC1mbGV4IGNvZC10b3AtbGFiZWwgbWUtMVwiPlxyXG4gICAgICAgICAge3thdHRyaWJ1dGUuZGlzcGxheU5hbWV9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1ncm93LTFcIj5cclxuICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgW25nTW9kZWxdPVwiKGF0dHJpYnV0ZVZhbHVlc1swXS52YWx1ZUF0dHJpYnV0ZUNob2ljZSk/YXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlQXR0cmlidXRlQ2hvaWNlLmlkQXR0cmlidXRlQ2hvaWNlOnVuZGVmaW5lZFwiXHJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInZhbHVlQ2hvaWNlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgIFx0W2Rpc2FibGVkXT1cIiFlZGl0SW5saW5lIHx8IGF0dHJpYnV0ZS5pc0NhbGN1bGF0ZWQgPT09ICdZJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGVkaXQtcmVuZGVyZXJcIj5cclxuICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJ1bmRlZmluZWRcIj48L29wdGlvbj5cclxuICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgYXR0cmlidXRlQ2hvaWNlIG9mIGF0dHJpYnV0ZUNob2ljZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cImF0dHJpYnV0ZUNob2ljZS5pZEF0dHJpYnV0ZUNob2ljZVwiPlxyXG4gICAgICAgICAgICAgIHt7IGF0dHJpYnV0ZUNob2ljZS5jaG9pY2UgfX1cclxuICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIENob2ljZTogTXVsdGkgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ0FDJyAmJiBhdHRyaWJ1dGUuaXNNdWx0aVZhbHVlID09PSAnWSdcIj5cclxuICAgICAgPGRpdiAjYXR0cmlidXRlUmVmXHJcbiAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gY29kLXR5cGUtYWMteVwiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJhdHRyaWJ1dGUuZGlzcGxheU5hbWVcIiBjbGFzcz1cImQtZmxleCBjb2QtdG9wLWxhYmVsIG1lLTFcIj5cclxuICAgICAgICAgIHt7YXR0cmlidXRlLmRpc3BsYXlOYW1lfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtZ3Jvdy0xIGZsZXgtY29sdW1uIHktYXV0b1wiIHN0eWxlPVwibWF4LWhlaWdodDogMTI1cHg7IHJvdy1nYXA6IDVweFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXR0cmlidXRlQ2hvaWNlIG9mIGF0dHJpYnV0ZUNob2ljZXNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXNocmluay0wXCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImF0dHJpYnV0ZUNob2ljZS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZWRpdElubGluZSB8fCBhdHRyaWJ1dGUuaXNDYWxjdWxhdGVkID09PSAnWSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInZhbHVlTXVsdGlDaG9pY2VDaGFuZ2UoYXR0cmlidXRlQ2hvaWNlKVwiXHJcblx0XHRcdFx0XHQgW2Rpc2FibGVkXT1cIiFlZGl0SW5saW5lIHx8IGF0dHJpYnV0ZS5pc0NhbGN1bGF0ZWQgPT09ICdZJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGNoZWNrYm94XCIgYXR0ci5hcmlhLWxhYmVsPVwiaGNpLW5nLWF0dHJpYnV0ZS1mbGV4LWlucHV0LWNob2ljZS1tdWx0aXBsZS17e2F0dHJpYnV0ZUNob2ljZS5jaG9pY2V9fVwiLz5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29kLWxhYmVsIHBzLTFcIj5cclxuICAgICAgICAgICAgICAgIHt7YXR0cmlidXRlQ2hvaWNlLmNob2ljZX19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICBcclxuICAgIDwhLS0gRGljdGlvbmFyeTogTXVsdGkgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0cmlidXRlLmNvZGVBdHRyaWJ1dGVEYXRhVHlwZSA9PT0gJ0RJQ1QnICYmIGF0dHJpYnV0ZS5pc011bHRpVmFsdWUgPT09ICdZJ1wiPlxyXG4gICAgICA8ZGl2ICNhdHRyaWJ1dGVSZWZcclxuICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBjb2QtdHlwZS1hYy15XCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImF0dHJpYnV0ZS5kaXNwbGF5TmFtZVwiIGNsYXNzPVwiZC1mbGV4IGNvZC10b3AtbGFiZWwgbWUtMVwiPlxyXG4gICAgICAgICAge3thdHRyaWJ1dGUuZGlzcGxheU5hbWV9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1ncm93LTEgZmxleC1jb2x1bW4geS1hdXRvXCIgc3R5bGU9XCJtYXgtaGVpZ2h0OiAxMjVweDsgcm93LWdhcDogNXB4XCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbnRyeSBvZiBkaWN0aW9uYXJ5RW50cmllc1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc2hyaW5rLTBcIj5cclxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiZW50cnkuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZWRpdElubGluZSB8fCBhdHRyaWJ1dGUuaXNDYWxjdWxhdGVkID09PSAnWSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInZhbHVlTXVsdGlEaWN0Q2hhbmdlKGVudHJ5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZWRpdElubGluZSB8fCBhdHRyaWJ1dGUuaXNDYWxjdWxhdGVkID09PSAnWSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBjaGVja2JveFwiIGF0dHIuYXJpYS1sYWJlbD1cImhjaS1uZy1hdHRyaWJ1dGUtZmxleC1pbnB1dC1kaWN0aW9uYXJ5LWNob2ljZS17e2VudHJ5LmRpc3BsYXl9fVwiLz5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29kLWxhYmVsIHBzLTFcIj5cclxuICAgICAgICAgICAgICAgIHt7ZW50cnkuZGlzcGxheX19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+ICAgIFxyXG5cclxuICAgIDwhLS0gRGljdGlvbmFyeSAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHRyaWJ1dGUuY29kZUF0dHJpYnV0ZURhdGFUeXBlID09PSAnRElDVCcgJiYgYXR0cmlidXRlLmlzTXVsdGlWYWx1ZSA9PT0gJ04nXCI+XHJcbiAgICAgIDxkaXYgI2F0dHJpYnV0ZVJlZlxyXG4gICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvZC10eXBlLWRpY3RcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXR0cmlidXRlLmRpc3BsYXlOYW1lXCIgY2xhc3M9XCJkLWZsZXggY29kLXRvcC1sYWJlbCBtZS0xXCI+XHJcbiAgICAgICAgICB7e2F0dHJpYnV0ZS5kaXNwbGF5TmFtZX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgPHNlbGVjdCAjaW5wdXRSZWZcclxuICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiYXR0cmlidXRlVmFsdWVzWzBdLnZhbHVlSWREaWN0aW9uYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsdWVEaWN0Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWVkaXRJbmxpbmUgfHwgYXR0cmlidXRlLmlzQ2FsY3VsYXRlZCA9PT0gJ1knXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZWRpdC1yZW5kZXJlclwiPlxyXG4gICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cInVuZGVmaW5lZFwiPjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBlbnRyeSBvZiBkaWN0aW9uYXJ5RW50cmllc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nVmFsdWVdPVwiZW50cnkudmFsdWVcIj5cclxuICAgICAgICAgICAgICB7eyBlbnRyeS5kaXNwbGF5IH19XHJcbiAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBHcmlkIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF0dHJpYnV0ZS5jb2RlQXR0cmlidXRlRGF0YVR5cGUgPT09ICdHQSdcIj5cclxuICAgICAgPGRpdiAjYXR0cmlidXRlUmVmIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGNvZC10eXBlLWdhXCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImF0dHJpYnV0ZS5pZEF0dHJpYnV0ZVwiIGNsYXNzPVwiZC1mbGV4IGNvZC10b3AtbGFiZWwgbXItMVwiPlxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAge3thdHRyaWJ1dGUuZGlzcGxheU5hbWV9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZWRpdElubGluZVwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IGF1dG87XCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWdhXCJcclxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIighdGhpcy5hdHRyaWJ1dGVTZXJ2aWNlLmVkaXRCdXR0b25zRW5hYmxlZClcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkR3JpZFJvdyhlZGl0R3JpZE1vZGFsLCBhdHRyaWJ1dGUuaWRBdHRyaWJ1dGUpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdhLWljb25cIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXBsdXMgZmEteHNcIj48L2k+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4tZ2FcIlxyXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiKCF0aGlzLmF0dHJpYnV0ZVNlcnZpY2UuZWRpdEJ1dHRvbnNFbmFibGVkKVwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVHcmlkUm93KGF0dHJpYnV0ZS5pZEF0dHJpYnV0ZSlcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ2EtaWNvblwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtbWludXMgZmEteHNcIj48L2k+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1ncm93LTFcIj4gICAgICAgICAgICAgXHJcbiAgICAgICAgICA8YWctZ3JpZC1hbmd1bGFyICNncmlkQXR0cmlidXRlXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJhZy10aGVtZS1hbHBpbmVcIlxyXG4gICAgICAgICAgICAgIChncmlkUmVhZHkpPVwidGhpcy5vbkdyaWRSZWFkeSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAobW9kZWxVcGRhdGVkKT1cIm9uTW9kZWxVcGRhdGVkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgIChncmlkU2l6ZUNoYW5nZWQpPVwib25HcmlkU2l6ZUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgKHJvd0RvdWJsZUNsaWNrZWQpPVwiZWRpdEdyaWRSb3coZWRpdEdyaWRNb2RhbCwgYXR0cmlidXRlLmlkQXR0cmlidXRlLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICBbZ3JpZE9wdGlvbnNdPVwidGhpcy5ncmlkT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgW3Jvd1NlbGVjdGlvbl09XCInc2luZ2xlJ1wiXHJcbiAgICAgICAgICAgICAgW2NvbHVtbkRlZnNdPVwiZ3JpZENvbHVtbnNcIlxyXG4gICAgICAgICAgICAgIFtyb3dEYXRhXT1cImdyaWREYXRhXCJcclxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiYXR0cmlidXRlLncgKyAncHgnXCJcclxuICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cImF0dHJpYnV0ZS5oICsgJ3B4J1wiPlxyXG4gICAgICAgICAgPC9hZy1ncmlkLWFuZ3VsYXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICBcclxuICAgIDxuZy10ZW1wbGF0ZSAjZWRpdEdyaWRNb2RhbCBsZXQtY2xvc2U9XCJjbG9zZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICAgICAge3thdHRyaWJ1dGUuZGlzcGxheU5hbWV9fSBHcmlkIFJvd1xyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgZC1mbGV4IGZsZXgtY29sdW1uIGhjaS1jb2QtZWRpdFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGF0dHJpYnV0ZSBvZiBlZGl0R3JvdXBSb3dBdHRyaWJ1dGVzXCI+XHJcbiAgICAgICAgICA8aGNpLWF0dHJpYnV0ZS1lZGl0IFtpZF09XCInZWRpdC1pZC1hdHRyaWJ1dGUtJyArIGF0dHJpYnV0ZS5pZEF0dHJpYnV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cEF0dHJpYnV0ZVJvd0lkXT1cImVkaXRHcm91cEF0dHJpYnV0ZVJvd0lkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHJpYnV0ZV09XCJhdHRyaWJ1dGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImF0dHJpYnV0ZVwiPjwvaGNpLWF0dHJpYnV0ZS1lZGl0PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIighdGhpcy5hdHRyaWJ1dGVTZXJ2aWNlLmVkaXRCdXR0b25zRW5hYmxlZClcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2UoJ1NhdmUnKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICBTYXZlXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2UoJ0NhbmNlbCcpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIENhbmNlbFxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIGBcclxuICAsXHJcbiAgc3R5bGVzOiBbYFxyXG4gIFx0LmhjaS1jb2QgYnV0dG9uLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWJhc2Uge1xyXG4gICAgICBcdGhlaWdodDogMjBweDtcclxuICAgICAgXHR3aWR0aDogMjBweDtcclxuICAgICAgXHRsaW5lLWhlaWdodDogdW5zZXQ7XHJcbiAgXHR9XHJcbiAgXHRcclxuICAgIC5idG4tZ2Ege1xyXG4gICAgICBwYWRkaW5nOiAwcHg7XHJcbiAgICAgIGhlaWdodDogMThweDtcclxuICAgICAgd2lkdGg6IDE4cHg7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC5nYS1pY29uIHtcclxuICAgICAgZm9udC1zaXplOiAuOWVtO1xyXG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xyXG4gICAgfVxyXG5cclxuICAgIC5oY2ktY29kIC5tYXQtZGF0ZXBpY2tlci10b2dnbGUtZGVmYXVsdC1pY29uIHtcclxuICAgICAgaGVpZ2h0OiAyMHB4O1xyXG4gICAgICB3aWR0aDogMjBweDtcclxuICAgIH1cclxuIGBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdHRyaWJ1dGVGbGV4Q29tcG9uZW50IGV4dGVuZHMgQXR0cmlidXRlQmFzZSB7XHJcbiAgaGNpTmdBdHRyaWJ1dGVBYnNvbHV0ZUlucHV0RGlzcGxheU5hbWUgPSBcIlwiO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgYXR0cmlidXRlU2VydmljZTogQXR0cmlidXRlU2VydmljZSxcclxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbFxyXG4gICkge1xyXG4gICAgc3VwZXIoYXR0cmlidXRlU2VydmljZSwgZWxlbWVudFJlZiwgcmVuZGVyZXIsIG1vZGFsU2VydmljZSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgIGlmICh0aGlzLmF0dHJpYnV0ZSAmJiB0aGlzLmF0dHJpYnV0ZS5kaXNwbGF5TmFtZSkge1xyXG4gICAgICB0aGlzLmhjaU5nQXR0cmlidXRlQWJzb2x1dGVJbnB1dERpc3BsYXlOYW1lID0gdGhpcy5hdHRyaWJ1dGUuZGlzcGxheU5hbWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGbGV4IG5lZWRzIHRvIGV4dGVuZCBncmlkIGNvbHVtbnMgYmVjYXVzZSB3ZSBubyBsb25nZXIgd2FudCB0byB1c2UgYWJzb2x1dGUgd2lkdGguICBIZXJlIHdlIGdlbmVyYXRlIHBlcmNlbnRhZ2VcclxuICAgKiBiYXNlZCB1cG9uIHRoZSBhYnNvbHV0ZSB3aWR0aCwgYnV0IHN0aWxsIHVzZSBhYnNvbHV0ZSB3aWR0aCBmb3IgdGhlIG1pbiB3aWR0aC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7QXR0cmlidXRlW119IGF0dHJpYnV0ZXNcclxuICAgKiBAcGFyYW0ge2FueVtdfSBjb2x1bW5zXHJcbiAgICovXHJcbiAgaW5pdGlhbGl6ZUdyaWRDb2x1bW5zKGF0dHJpYnV0ZXM6IEdyYXBoaWNhbEF0dHJpYnV0ZVtdLCBjb2x1bW5zOiBhbnlbXSkge1xyXG4gICAgc3VwZXIuaW5pdGlhbGl6ZUdyaWRDb2x1bW5zKGF0dHJpYnV0ZXMsIGNvbHVtbnMpO1xyXG5cclxuICAgIGxldCB3aWR0aDogbnVtYmVyID0gMDtcclxuICAgIGZvciAobGV0IGF0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVzKSB7XHJcbiAgICAgIHdpZHRoICs9IGF0dHJpYnV0ZS53O1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGF0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVzKSB7XHJcbiAgICAgIGxldCB3aWR0aFBlcmNlbnQ6IG51bWJlciA9IE1hdGguZmxvb3IoMTAwICogKGF0dHJpYnV0ZS53IC8gd2lkdGgpKTtcclxuXHJcbiAgICAgIGZvciAobGV0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcbiAgICAgICAgaWYgKGNvbHVtbi5leHRlcm5hbENvbmZpZyAmJiBjb2x1bW4uZXh0ZXJuYWxDb25maWcuaWRBdHRyaWJ1dGUgPT09IGF0dHJpYnV0ZS5pZEF0dHJpYnV0ZSkge1xyXG4gICAgICAgICAgY29sdW1uLm1pbldpZHRoID0gYXR0cmlidXRlLnc7XHJcbiAgICAgICAgICBjb2x1bW4ud2lkdGhQZXJjZW50ID0gd2lkdGhQZXJjZW50O1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|