@schenkerjon/ng-govbr-tw 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/input/br-input.component.mjs +94 -38
- package/esm2022/lib/components/select/br-select.component.mjs +56 -26
- package/esm2022/lib/components/textarea/br-textarea.component.mjs +76 -38
- package/fesm2022/schenkerjon-ng-govbr-tw.mjs +218 -94
- package/fesm2022/schenkerjon-ng-govbr-tw.mjs.map +1 -1
- package/lib/components/input/br-input.component.d.ts +15 -3
- package/lib/components/select/br-select.component.d.ts +14 -3
- package/lib/components/textarea/br-textarea.component.d.ts +14 -3
- package/package.json +1 -1
|
@@ -1,9 +1,32 @@
|
|
|
1
|
-
import { Component, EventEmitter,
|
|
2
|
-
import {
|
|
1
|
+
import { Component, EventEmitter, Input, Optional, Output, Self, ViewEncapsulation, } from '@angular/core';
|
|
2
|
+
import { FormsModule, } from '@angular/forms';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "@angular/forms";
|
|
5
5
|
export class BrInputComponent {
|
|
6
|
-
|
|
6
|
+
static { this.nextId = 0; }
|
|
7
|
+
static { this.defaultErrorMessages = {
|
|
8
|
+
required: 'Campo obrigatório',
|
|
9
|
+
email: 'Email inválido',
|
|
10
|
+
minlength: (err) => {
|
|
11
|
+
const e = err;
|
|
12
|
+
return `Mínimo de ${e.requiredLength} caracteres`;
|
|
13
|
+
},
|
|
14
|
+
maxlength: (err) => {
|
|
15
|
+
const e = err;
|
|
16
|
+
return `Máximo de ${e.requiredLength} caracteres`;
|
|
17
|
+
},
|
|
18
|
+
min: (err) => {
|
|
19
|
+
const e = err;
|
|
20
|
+
return `Valor mínimo: ${e.min}`;
|
|
21
|
+
},
|
|
22
|
+
max: (err) => {
|
|
23
|
+
const e = err;
|
|
24
|
+
return `Valor máximo: ${e.max}`;
|
|
25
|
+
},
|
|
26
|
+
pattern: 'Formato inválido',
|
|
27
|
+
}; }
|
|
28
|
+
constructor(ngControl) {
|
|
29
|
+
this.ngControl = ngControl;
|
|
7
30
|
this.type = 'text';
|
|
8
31
|
this.placeholder = '';
|
|
9
32
|
this.required = false;
|
|
@@ -12,6 +35,8 @@ export class BrInputComponent {
|
|
|
12
35
|
this.highlight = false;
|
|
13
36
|
this.inline = false;
|
|
14
37
|
this.rows = 3;
|
|
38
|
+
/** Mensagens customizadas para erros de validação */
|
|
39
|
+
this.errorMessages = {};
|
|
15
40
|
this.fileSelected = new EventEmitter();
|
|
16
41
|
this.searchSubmit = new EventEmitter();
|
|
17
42
|
this.value = '';
|
|
@@ -21,8 +46,10 @@ export class BrInputComponent {
|
|
|
21
46
|
this.inputId = `br-input-${BrInputComponent.nextId++}`;
|
|
22
47
|
this.onChange = () => { };
|
|
23
48
|
this.onTouched = () => { };
|
|
49
|
+
if (this.ngControl) {
|
|
50
|
+
this.ngControl.valueAccessor = this;
|
|
51
|
+
}
|
|
24
52
|
}
|
|
25
|
-
static { this.nextId = 0; }
|
|
26
53
|
get isStandardInput() {
|
|
27
54
|
return this.type !== 'select' && this.type !== 'file' && this.type !== 'textarea';
|
|
28
55
|
}
|
|
@@ -37,6 +64,42 @@ export class BrInputComponent {
|
|
|
37
64
|
get containerClasses() {
|
|
38
65
|
return this.type !== 'file' ? 'relative' : '';
|
|
39
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* Retorna a mensagem de erro a ser exibida.
|
|
69
|
+
* Prioridade: error manual > erro do validator (se touched/dirty)
|
|
70
|
+
*/
|
|
71
|
+
get displayError() {
|
|
72
|
+
// Erro manual sempre tem prioridade
|
|
73
|
+
if (this.error) {
|
|
74
|
+
return this.error;
|
|
75
|
+
}
|
|
76
|
+
// Se não tem NgControl, não há erro automático
|
|
77
|
+
if (!this.ngControl?.control) {
|
|
78
|
+
return undefined;
|
|
79
|
+
}
|
|
80
|
+
const control = this.ngControl.control;
|
|
81
|
+
// Só mostra erro se o controle foi tocado ou modificado E está inválido
|
|
82
|
+
if (!control.errors || (!control.touched && !control.dirty)) {
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
// Busca a primeira mensagem de erro
|
|
86
|
+
return this.getFirstErrorMessage(control.errors);
|
|
87
|
+
}
|
|
88
|
+
getFirstErrorMessage(errors) {
|
|
89
|
+
for (const key of Object.keys(errors)) {
|
|
90
|
+
// Primeiro verifica mensagens customizadas do usuário
|
|
91
|
+
if (this.errorMessages[key]) {
|
|
92
|
+
return this.errorMessages[key];
|
|
93
|
+
}
|
|
94
|
+
// Depois verifica mensagens padrão
|
|
95
|
+
const defaultMsg = BrInputComponent.defaultErrorMessages[key];
|
|
96
|
+
if (defaultMsg) {
|
|
97
|
+
return typeof defaultMsg === 'function' ? defaultMsg(errors[key]) : defaultMsg;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// Fallback genérico
|
|
101
|
+
return 'Campo inválido';
|
|
102
|
+
}
|
|
40
103
|
get inputClasses() {
|
|
41
104
|
const densityStyles = {
|
|
42
105
|
small: 'text-govbr-sm',
|
|
@@ -57,7 +120,7 @@ export class BrInputComponent {
|
|
|
57
120
|
const highlightCls = this.highlight
|
|
58
121
|
? 'h-[var(--govbr-input-highlight)] bg-govbr-gray-2 border-transparent text-govbr-lg px-6'
|
|
59
122
|
: '';
|
|
60
|
-
const statusCls = this.
|
|
123
|
+
const statusCls = this.displayError
|
|
61
124
|
? 'govbr-input--danger'
|
|
62
125
|
: this.successMessage
|
|
63
126
|
? 'govbr-input--success'
|
|
@@ -108,14 +171,8 @@ export class BrInputComponent {
|
|
|
108
171
|
this.fileSelected.emit(file);
|
|
109
172
|
}
|
|
110
173
|
}
|
|
111
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BrInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
112
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: BrInputComponent, isStandalone: true, selector: "br-input", inputs: { label: "label", type: "type", placeholder: "placeholder", required: "required", error: "error", successMessage: "successMessage", warningMessage: "warningMessage", infoMessage: "infoMessage", helperText: "helperText", icon: "icon", iconRight: "iconRight", density: "density", highlight: "highlight", inline: "inline", maxLength: "maxLength", rows: "rows" }, outputs: { fileSelected: "fileSelected", searchSubmit: "searchSubmit" },
|
|
113
|
-
{
|
|
114
|
-
provide: NG_VALUE_ACCESSOR,
|
|
115
|
-
useExisting: forwardRef(() => BrInputComponent),
|
|
116
|
-
multi: true,
|
|
117
|
-
},
|
|
118
|
-
], ngImport: i0, template: `
|
|
174
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BrInputComponent, deps: [{ token: i1.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
175
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: BrInputComponent, isStandalone: true, selector: "br-input", inputs: { label: "label", type: "type", placeholder: "placeholder", required: "required", error: "error", successMessage: "successMessage", warningMessage: "warningMessage", infoMessage: "infoMessage", helperText: "helperText", icon: "icon", iconRight: "iconRight", density: "density", highlight: "highlight", inline: "inline", maxLength: "maxLength", rows: "rows", errorMessages: "errorMessages" }, outputs: { fileSelected: "fileSelected", searchSubmit: "searchSubmit" }, ngImport: i0, template: `
|
|
119
176
|
<div class="mb-4 font-rawline" [class.inline-input]="inline">
|
|
120
177
|
@if (label) {
|
|
121
178
|
<label
|
|
@@ -256,25 +313,25 @@ export class BrInputComponent {
|
|
|
256
313
|
}
|
|
257
314
|
|
|
258
315
|
<!-- Feedback messages -->
|
|
259
|
-
@if (
|
|
316
|
+
@if (displayError) {
|
|
260
317
|
<span class="flex items-center mt-1 text-govbr-sm text-govbr-danger">
|
|
261
|
-
<i class="fa-solid fa-times-circle mr-1"></i>{{
|
|
318
|
+
<i class="fa-solid fa-times-circle mr-1"></i>{{ displayError }}
|
|
262
319
|
</span>
|
|
263
320
|
}
|
|
264
|
-
|
|
265
|
-
@if (successMessage && !
|
|
321
|
+
|
|
322
|
+
@if (successMessage && !displayError) {
|
|
266
323
|
<span class="flex items-center mt-1 text-govbr-sm text-govbr-success">
|
|
267
324
|
<i class="fa-solid fa-check-circle mr-1"></i>{{ successMessage }}
|
|
268
325
|
</span>
|
|
269
326
|
}
|
|
270
|
-
|
|
271
|
-
@if (warningMessage && !
|
|
327
|
+
|
|
328
|
+
@if (warningMessage && !displayError && !successMessage) {
|
|
272
329
|
<span class="flex items-center mt-1 text-govbr-sm text-govbr-warning">
|
|
273
330
|
<i class="fa-solid fa-exclamation-triangle mr-1"></i>{{ warningMessage }}
|
|
274
331
|
</span>
|
|
275
332
|
}
|
|
276
|
-
|
|
277
|
-
@if (infoMessage && !
|
|
333
|
+
|
|
334
|
+
@if (infoMessage && !displayError && !successMessage && !warningMessage) {
|
|
278
335
|
<span class="flex items-center mt-1 text-govbr-sm text-govbr-info">
|
|
279
336
|
<i class="fa-solid fa-info-circle mr-1"></i>{{ infoMessage }}
|
|
280
337
|
</span>
|
|
@@ -289,13 +346,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
289
346
|
standalone: true,
|
|
290
347
|
imports: [FormsModule],
|
|
291
348
|
encapsulation: ViewEncapsulation.None,
|
|
292
|
-
providers: [
|
|
293
|
-
{
|
|
294
|
-
provide: NG_VALUE_ACCESSOR,
|
|
295
|
-
useExisting: forwardRef(() => BrInputComponent),
|
|
296
|
-
multi: true,
|
|
297
|
-
},
|
|
298
|
-
],
|
|
299
349
|
template: `
|
|
300
350
|
<div class="mb-4 font-rawline" [class.inline-input]="inline">
|
|
301
351
|
@if (label) {
|
|
@@ -437,25 +487,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
437
487
|
}
|
|
438
488
|
|
|
439
489
|
<!-- Feedback messages -->
|
|
440
|
-
@if (
|
|
490
|
+
@if (displayError) {
|
|
441
491
|
<span class="flex items-center mt-1 text-govbr-sm text-govbr-danger">
|
|
442
|
-
<i class="fa-solid fa-times-circle mr-1"></i>{{
|
|
492
|
+
<i class="fa-solid fa-times-circle mr-1"></i>{{ displayError }}
|
|
443
493
|
</span>
|
|
444
494
|
}
|
|
445
|
-
|
|
446
|
-
@if (successMessage && !
|
|
495
|
+
|
|
496
|
+
@if (successMessage && !displayError) {
|
|
447
497
|
<span class="flex items-center mt-1 text-govbr-sm text-govbr-success">
|
|
448
498
|
<i class="fa-solid fa-check-circle mr-1"></i>{{ successMessage }}
|
|
449
499
|
</span>
|
|
450
500
|
}
|
|
451
|
-
|
|
452
|
-
@if (warningMessage && !
|
|
501
|
+
|
|
502
|
+
@if (warningMessage && !displayError && !successMessage) {
|
|
453
503
|
<span class="flex items-center mt-1 text-govbr-sm text-govbr-warning">
|
|
454
504
|
<i class="fa-solid fa-exclamation-triangle mr-1"></i>{{ warningMessage }}
|
|
455
505
|
</span>
|
|
456
506
|
}
|
|
457
|
-
|
|
458
|
-
@if (infoMessage && !
|
|
507
|
+
|
|
508
|
+
@if (infoMessage && !displayError && !successMessage && !warningMessage) {
|
|
459
509
|
<span class="flex items-center mt-1 text-govbr-sm text-govbr-info">
|
|
460
510
|
<i class="fa-solid fa-info-circle mr-1"></i>{{ infoMessage }}
|
|
461
511
|
</span>
|
|
@@ -463,7 +513,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
463
513
|
</div>
|
|
464
514
|
`,
|
|
465
515
|
}]
|
|
466
|
-
}],
|
|
516
|
+
}], ctorParameters: () => [{ type: i1.NgControl, decorators: [{
|
|
517
|
+
type: Self
|
|
518
|
+
}, {
|
|
519
|
+
type: Optional
|
|
520
|
+
}] }], propDecorators: { label: [{
|
|
467
521
|
type: Input
|
|
468
522
|
}], type: [{
|
|
469
523
|
type: Input
|
|
@@ -495,9 +549,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
495
549
|
type: Input
|
|
496
550
|
}], rows: [{
|
|
497
551
|
type: Input
|
|
552
|
+
}], errorMessages: [{
|
|
553
|
+
type: Input
|
|
498
554
|
}], fileSelected: [{
|
|
499
555
|
type: Output
|
|
500
556
|
}], searchSubmit: [{
|
|
501
557
|
type: Output
|
|
502
558
|
}] } });
|
|
503
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnItaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZ292YnItdHcvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0L2JyLWlucHV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixXQUFXLEdBQ1osTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBcUx4QixNQUFNLE9BQU8sZ0JBQWdCO0lBbkw3QjtRQXFMVyxTQUFJLEdBUUksTUFBTSxDQUFDO1FBQ2YsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQU9qQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLFlBQU8sR0FBaUMsUUFBUSxDQUFDO1FBQ2pELGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUVmLFNBQUksR0FBRyxDQUFDLENBQUM7UUFFUixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDeEMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRXBELFVBQUssR0FBVyxFQUFFLENBQUM7UUFDbkIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2QsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFHckIsWUFBTyxHQUFHLFlBQVksZ0JBQWdCLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztRQUVsRCxhQUFRLEdBQTRCLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUM3QyxjQUFTLEdBQWUsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0tBMEdsQzthQTlHZ0Is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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FxS1A7aUJBQ0o7OEJBRVUsS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFTRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUVJLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgRm9ybXNNb2R1bGUsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnItaW5wdXQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbRm9ybXNNb2R1bGVdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEJySW5wdXRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwibWItNCBmb250LXJhd2xpbmVcIiBbY2xhc3MuaW5saW5lLWlucHV0XT1cImlubGluZVwiPlxuICAgICAgQGlmIChsYWJlbCkge1xuICAgICAgICA8bGFiZWxcbiAgICAgICAgICBbZm9yXT1cImlucHV0SWRcIlxuICAgICAgICAgIGNsYXNzPVwiYmxvY2sgdGV4dC1nb3Zici1zbSBmb250LXNlbWlib2xkIHRleHQtZ292YnItZ3JheS04MCBtYi0xXCJcbiAgICAgICAgICBbY2xhc3Muc3Itb25seV09XCJpbmxpbmVcIlxuICAgICAgICAgID5cbiAgICAgICAgICB7eyBsYWJlbCB9fVxuICAgICAgICAgIEBpZiAocmVxdWlyZWQpIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1nb3Zici1kYW5nZXIgbWwtMC41XCI+Kjwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICB9XG4gICAgXG4gICAgICBAaWYgKGhlbHBlclRleHQgJiYgIWVycm9yICYmICFzdWNjZXNzTWVzc2FnZSkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cImJsb2NrIHRleHQtZ292YnIteHMgdGV4dC1nb3Zici1ncmF5LTYwIG1iLTFcIj5cbiAgICAgICAgICB7eyBoZWxwZXJUZXh0IH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIH1cbiAgICBcbiAgICAgIDxkaXYgW2NsYXNzXT1cImNvbnRhaW5lckNsYXNzZXNcIj5cbiAgICAgICAgPCEtLSBJY29uIChsZWZ0KSAtLT5cbiAgICAgICAgQGlmIChpY29uICYmICFpY29uUmlnaHQpIHtcbiAgICAgICAgICA8aVxuICAgICAgICAgICAgW2NsYXNzXT1cIidmYS1zb2xpZCBmYS0nICsgaWNvbiArICcgYWJzb2x1dGUgbGVmdC0zIHRvcC0xLzIgLXRyYW5zbGF0ZS15LTEvMiB0ZXh0LWdvdmJyLWdyYXktNDAgcG9pbnRlci1ldmVudHMtbm9uZSdcIlxuICAgICAgICAgID48L2k+XG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgPCEtLSBTZWxlY3QgLS0+XG4gICAgICAgIEBpZiAodHlwZSA9PT0gJ3NlbGVjdCcpIHtcbiAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICBbaWRdPVwiaW5wdXRJZFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICBbY2xhc3NdPVwiaW5wdXRDbGFzc2VzXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cIm9uU2VsZWN0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgKGJsdXIpPVwib25Ub3VjaGVkKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiIGRpc2FibGVkIFtzZWxlY3RlZF09XCIhdmFsdWVcIj57eyBwbGFjZWhvbGRlciB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICB9XG4gICAgXG4gICAgICAgIDwhLS0gVGV4dGFyZWEgLS0+XG4gICAgICAgIEBpZiAodHlwZSA9PT0gJ3RleHRhcmVhJykge1xuICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgW2lkXT1cImlucHV0SWRcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcbiAgICAgICAgICAgIFtjbGFzc109XCJpbnB1dENsYXNzZXNcIlxuICAgICAgICAgICAgW3Jvd3NdPVwicm93c1wiXG4gICAgICAgICAgICBbYXR0ci5tYXhsZW5ndGhdPVwibWF4TGVuZ3RoIHx8IG51bGxcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgICAgICAgIChpbnB1dCk9XCJvbklucHV0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgKGJsdXIpPVwib25Ub3VjaGVkKClcIlxuICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICB9XG4gICAgXG4gICAgICAgIDwhLS0gRmlsZSAtLT5cbiAgICAgICAgQGlmICh0eXBlID09PSAnZmlsZScpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICBbZm9yXT1cImlucHV0SWRcIlxuICAgICAgICAgICAgICBjbGFzcz1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBweC00IHB5LTIgYmctZ292YnItcHJpbWFyeSB0ZXh0LXdoaXRlIHJvdW5kZWQtZ292YnItcGlsbCBjdXJzb3ItcG9pbnRlciBob3ZlcjpiZy1nb3Zici1wcmltYXJ5LWRhcmsgdHJhbnNpdGlvbi1jb2xvcnMgdGV4dC1nb3Zici1zbSBmb250LXNlbWlib2xkXCJcbiAgICAgICAgICAgICAgW2NsYXNzLm9wYWNpdHktNTBdPVwiaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5jdXJzb3Itbm90LWFsbG93ZWRdPVwiaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS11cGxvYWQgbXItMlwiPjwvaT5cbiAgICAgICAgICAgICAge3sgcGxhY2Vob2xkZXIgfHwgJ1NlbGVjaW9uYXIgYXJxdWl2bycgfX1cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgW2lkXT1cImlucHV0SWRcIlxuICAgICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiaGlkZGVuXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uRmlsZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIEBpZiAoZmlsZU5hbWUpIHtcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtbC0yIHRleHQtZ292YnItc20gdGV4dC1nb3Zici1ncmF5LTYwXCI+e3sgZmlsZU5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgPCEtLSBUZXh0IC8gRW1haWwgLyBQYXNzd29yZCAvIE51bWJlciAvIFNlYXJjaCAtLT5cbiAgICAgICAgQGlmIChpc1N0YW5kYXJkSW5wdXQpIHtcbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIFtpZF09XCJpbnB1dElkXCJcbiAgICAgICAgICAgIFt0eXBlXT1cImFjdHVhbFR5cGVcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcbiAgICAgICAgICAgIFtjbGFzc109XCJpbnB1dENsYXNzZXNcIlxuICAgICAgICAgICAgW2F0dHIubWF4bGVuZ3RoXT1cIm1heExlbmd0aCB8fCBudWxsXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAgICAgICAoaW5wdXQpPVwib25JbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIChibHVyKT1cIm9uVG91Y2hlZCgpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgPCEtLSBQYXNzd29yZCB0b2dnbGUgYnV0dG9uIC0tPlxuICAgICAgICBAaWYgKHR5cGUgPT09ICdwYXNzd29yZCcpIHtcbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgcmlnaHQtMyB0b3AtMS8yIC10cmFuc2xhdGUteS0xLzIgdGV4dC1nb3Zici1wcmltYXJ5IGhvdmVyOnRleHQtZ292YnItcHJpbWFyeS1kYXJrIGdvdmJyLWZvY3VzLXJpbmdcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJzaG93UGFzc3dvcmQgPyAnT2N1bHRhciBzZW5oYScgOiAnTW9zdHJhciBzZW5oYSdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVBhc3N3b3JkKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPGkgW2NsYXNzXT1cInNob3dQYXNzd29yZCA/ICdmYS1zb2xpZCBmYS1leWUtc2xhc2gnIDogJ2ZhLXNvbGlkIGZhLWV5ZSdcIj48L2k+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgPCEtLSBJY29uIChyaWdodCkgLS0+XG4gICAgICAgIEBpZiAoaWNvbiAmJiBpY29uUmlnaHQgJiYgdHlwZSAhPT0gJ3Bhc3N3b3JkJykge1xuICAgICAgICAgIDxpXG4gICAgICAgICAgICBbY2xhc3NdPVwiJ2ZhLXNvbGlkIGZhLScgKyBpY29uICsgJyBhYnNvbHV0ZSByaWdodC0zIHRvcC0xLzIgLXRyYW5zbGF0ZS15LTEvMiB0ZXh0LWdvdmJyLWdyYXktNDAgcG9pbnRlci1ldmVudHMtbm9uZSdcIlxuICAgICAgICAgID48L2k+XG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgPCEtLSBTZWFyY2ggYnV0dG9uIC0tPlxuICAgICAgICBAaWYgKHR5cGUgPT09ICdzZWFyY2gnKSB7XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImFic29sdXRlIHJpZ2h0LTEgdG9wLTEvMiAtdHJhbnNsYXRlLXktMS8yIHctOCBoLTggcm91bmRlZC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtZ292YnItcHJpbWFyeSBob3ZlcjpiZy1nb3Zici1wcmltYXJ5LWxpZ2h0ZXN0IGdvdmJyLWZvY3VzLXJpbmcgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkJ1c2NhclwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2VhcmNoU3VibWl0LmVtaXQodmFsdWUpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtbWFnbmlmeWluZy1nbGFzc1wiPjwvaT5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgXG4gICAgICA8IS0tIENoYXJhY3RlciBjb3VudGVyIC0tPlxuICAgICAgQGlmIChtYXhMZW5ndGggJiYgKHR5cGUgPT09ICd0ZXh0YXJlYScgfHwgaXNTdGFuZGFyZElucHV0KSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWVuZCBtdC0wLjVcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZ292YnIteHMgdGV4dC1nb3Zici1ncmF5LTQwXCI+XG4gICAgICAgICAgICB7eyB2YWx1ZT8ubGVuZ3RoIHx8IDAgfX0ve3sgbWF4TGVuZ3RoIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICBcbiAgICAgIDwhLS0gRmVlZGJhY2sgbWVzc2FnZXMgLS0+XG4gICAgICBAaWYgKGVycm9yKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgbXQtMSB0ZXh0LWdvdmJyLXNtIHRleHQtZ292YnItZGFuZ2VyXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS10aW1lcy1jaXJjbGUgbXItMVwiPjwvaT57eyBlcnJvciB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICB9XG4gICAgXG4gICAgICBAaWYgKHN1Y2Nlc3NNZXNzYWdlICYmICFlcnJvcikge1xuICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIG10LTEgdGV4dC1nb3Zici1zbSB0ZXh0LWdvdmJyLXN1Y2Nlc3NcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWNoZWNrLWNpcmNsZSBtci0xXCI+PC9pPnt7IHN1Y2Nlc3NNZXNzYWdlIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIH1cbiAgICBcbiAgICAgIEBpZiAod2FybmluZ01lc3NhZ2UgJiYgIWVycm9yICYmICFzdWNjZXNzTWVzc2FnZSkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIG10LTEgdGV4dC1nb3Zici1zbSB0ZXh0LWdvdmJyLXdhcm5pbmdcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlIG1yLTFcIj48L2k+e3sgd2FybmluZ01lc3NhZ2UgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgfVxuICAgIFxuICAgICAgQGlmIChpbmZvTWVzc2FnZSAmJiAhZXJyb3IgJiYgIXN1Y2Nlc3NNZXNzYWdlICYmICF3YXJuaW5nTWVzc2FnZSkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIG10LTEgdGV4dC1nb3Zici1zbSB0ZXh0LWdvdmJyLWluZm9cIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWluZm8tY2lyY2xlIG1yLTFcIj48L2k+e3sgaW5mb01lc3NhZ2UgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIGAsXG59KVxuZXhwb3J0IGNsYXNzIEJySW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIEBJbnB1dCgpIGxhYmVsPzogc3RyaW5nO1xuICBASW5wdXQoKSB0eXBlOlxuICAgIHwgJ3RleHQnXG4gICAgfCAnZW1haWwnXG4gICAgfCAncGFzc3dvcmQnXG4gICAgfCAnc2VsZWN0J1xuICAgIHwgJ2ZpbGUnXG4gICAgfCAnbnVtYmVyJ1xuICAgIHwgJ3NlYXJjaCdcbiAgICB8ICd0ZXh0YXJlYScgPSAndGV4dCc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJyc7XG4gIEBJbnB1dCgpIHJlcXVpcmVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVycm9yPzogc3RyaW5nO1xuICBASW5wdXQoKSBzdWNjZXNzTWVzc2FnZT86IHN0cmluZztcbiAgQElucHV0KCkgd2FybmluZ01lc3NhZ2U/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGluZm9NZXNzYWdlPzogc3RyaW5nO1xuICBASW5wdXQoKSBoZWxwZXJUZXh0Pzogc3RyaW5nO1xuICBASW5wdXQoKSBpY29uPzogc3RyaW5nO1xuICBASW5wdXQoKSBpY29uUmlnaHQgPSBmYWxzZTtcbiAgQElucHV0KCkgZGVuc2l0eTogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJyA9ICdtZWRpdW0nO1xuICBASW5wdXQoKSBoaWdobGlnaHQgPSBmYWxzZTtcbiAgQElucHV0KCkgaW5saW5lID0gZmFsc2U7XG4gIEBJbnB1dCgpIG1heExlbmd0aD86IG51bWJlcjtcbiAgQElucHV0KCkgcm93cyA9IDM7XG5cbiAgQE91dHB1dCgpIGZpbGVTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZT4oKTtcbiAgQE91dHB1dCgpIHNlYXJjaFN1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIHZhbHVlOiBzdHJpbmcgPSAnJztcbiAgaXNEaXNhYmxlZCA9IGZhbHNlO1xuICBmaWxlTmFtZSA9ICcnO1xuICBzaG93UGFzc3dvcmQgPSBmYWxzZTtcblxuICBwcml2YXRlIHN0YXRpYyBuZXh0SWQgPSAwO1xuICBpbnB1dElkID0gYGJyLWlucHV0LSR7QnJJbnB1dENvbXBvbmVudC5uZXh0SWQrK31gO1xuXG4gIG9uQ2hhbmdlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCA9ICgpID0+IHt9O1xuICBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICBnZXQgaXNTdGFuZGFyZElucHV0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnR5cGUgIT09ICdzZWxlY3QnICYmIHRoaXMudHlwZSAhPT0gJ2ZpbGUnICYmIHRoaXMudHlwZSAhPT0gJ3RleHRhcmVhJztcbiAgfVxuXG4gIGdldCBhY3R1YWxUeXBlKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ3Bhc3N3b3JkJykge1xuICAgICAgcmV0dXJuIHRoaXMuc2hvd1Bhc3N3b3JkID8gJ3RleHQnIDogJ3Bhc3N3b3JkJztcbiAgICB9XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ3NlYXJjaCcpIHJldHVybiAndGV4dCc7XG4gICAgcmV0dXJuIHRoaXMudHlwZTtcbiAgfVxuXG4gIGdldCBjb250YWluZXJDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSAhPT0gJ2ZpbGUnID8gJ3JlbGF0aXZlJyA6ICcnO1xuICB9XG5cbiAgZ2V0IGlucHV0Q2xhc3NlcygpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRlbnNpdHlTdHlsZXMgPSB7XG4gICAgICBzbWFsbDogJ3RleHQtZ292YnItc20nLFxuICAgICAgbWVkaXVtOiAndGV4dC1nb3Zici1iYXNlJyxcbiAgICAgIGxhcmdlOiAndGV4dC1nb3Zici1sZycsXG4gICAgfSBhcyBjb25zdDtcblxuICAgIGNvbnN0IGRlbnNpdHlIZWlnaHRzID0ge1xuICAgICAgc21hbGw6ICdoLVt2YXIoLS1nb3Zici1pbnB1dC1zbWFsbCldJyxcbiAgICAgIG1lZGl1bTogJ2gtW3ZhcigtLWdvdmJyLWlucHV0LW1lZGl1bSldJyxcbiAgICAgIGxhcmdlOiAnaC1bdmFyKC0tZ292YnItaW5wdXQtbGFyZ2UpXScsXG4gICAgfSBhcyBjb25zdDtcblxuICAgIGNvbnN0IGJhc2UgPSBbXG4gICAgICAndy1mdWxsIHB4LTQgZm9udC1yYXdsaW5lIGdvdmJyLWlucHV0JyxcbiAgICAgIHRoaXMudHlwZSA9PT0gJ3RleHRhcmVhJyA/ICdweS0yJyA6ICcnLFxuICAgIF0uam9pbignICcpO1xuXG4gICAgY29uc3QgZGVuc2l0eSA9IGRlbnNpdHlTdHlsZXNbdGhpcy5kZW5zaXR5XTtcbiAgICBjb25zdCBoZWlnaHQgPSB0aGlzLnR5cGUgIT09ICd0ZXh0YXJlYScgPyBkZW5zaXR5SGVpZ2h0c1t0aGlzLmRlbnNpdHldIDogJyc7XG5cbiAgICBjb25zdCBoaWdobGlnaHRDbHMgPSB0aGlzLmhpZ2hsaWdodFxuICAgICAgPyAnaC1bdmFyKC0tZ292YnItaW5wdXQtaGlnaGxpZ2h0KV0gYmctZ292YnItZ3JheS0yIGJvcmRlci10cmFuc3BhcmVudCB0ZXh0LWdvdmJyLWxnIHB4LTYnXG4gICAgICA6ICcnO1xuXG4gICAgY29uc3Qgc3RhdHVzQ2xzID0gdGhpcy5lcnJvclxuICAgICAgPyAnZ292YnItaW5wdXQtLWRhbmdlcidcbiAgICAgIDogdGhpcy5zdWNjZXNzTWVzc2FnZVxuICAgICAgICA/ICdnb3Zici1pbnB1dC0tc3VjY2VzcydcbiAgICAgICAgOiB0aGlzLndhcm5pbmdNZXNzYWdlXG4gICAgICAgICAgPyAnZ292YnItaW5wdXQtLXdhcm5pbmcnXG4gICAgICAgICAgOiAnJztcblxuICAgIGNvbnN0IGRpc2FibGVkQ2xzID0gdGhpcy5pc0Rpc2FibGVkXG4gICAgICA/ICdiZy1nb3Zici1ncmF5LTIgdGV4dC1nb3Zici1ncmF5LTQwIGN1cnNvci1ub3QtYWxsb3dlZCdcbiAgICAgIDogJ2JnLXdoaXRlIHRleHQtZ292YnItZ3JheS04MCc7XG5cbiAgICBjb25zdCBpY29uUGFkZGluZ0xlZnQgPSB0aGlzLmljb24gJiYgIXRoaXMuaWNvblJpZ2h0ID8gJ3BsLTEwJyA6ICcnO1xuICAgIGNvbnN0IGljb25QYWRkaW5nUmlnaHQgPVxuICAgICAgKHRoaXMuaWNvbiAmJiB0aGlzLmljb25SaWdodCkgfHwgdGhpcy50eXBlID09PSAncGFzc3dvcmQnIHx8IHRoaXMudHlwZSA9PT0gJ3NlYXJjaCdcbiAgICAgICAgPyAncHItMTAnXG4gICAgICAgIDogJyc7XG5cbiAgICByZXR1cm4gW2Jhc2UsIGRlbnNpdHksIGhlaWdodCwgaGlnaGxpZ2h0Q2xzLCBzdGF0dXNDbHMsIGRpc2FibGVkQ2xzLCBpY29uUGFkZGluZ0xlZnQsIGljb25QYWRkaW5nUmlnaHRdXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAuam9pbignICcpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlID8/ICcnO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmlzRGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgdG9nZ2xlUGFzc3dvcmQoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93UGFzc3dvcmQgPSAhdGhpcy5zaG93UGFzc3dvcmQ7XG4gIH1cblxuICBvbklucHV0Q2hhbmdlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFRleHRBcmVhRWxlbWVudDtcbiAgICB0aGlzLnZhbHVlID0gdGFyZ2V0LnZhbHVlO1xuICAgIHRoaXMub25DaGFuZ2UodGFyZ2V0LnZhbHVlKTtcbiAgfVxuXG4gIG9uU2VsZWN0Q2hhbmdlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbCA9IChldmVudC50YXJnZXQgYXMgSFRNTFNlbGVjdEVsZW1lbnQpLnZhbHVlO1xuICAgIHRoaXMudmFsdWUgPSB2YWw7XG4gICAgdGhpcy5vbkNoYW5nZSh2YWwpO1xuICB9XG5cbiAgb25GaWxlQ2hhbmdlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgaWYgKGlucHV0LmZpbGVzICYmIGlucHV0LmZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbGUgPSBpbnB1dC5maWxlc1swXTtcbiAgICAgIHRoaXMuZmlsZU5hbWUgPSBmaWxlLm5hbWU7XG4gICAgICB0aGlzLmZpbGVTZWxlY3RlZC5lbWl0KGZpbGUpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
559
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnItaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZ292YnItdHcvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0L2JyLWlucHV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFFWixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBQ0osaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFHTCxXQUFXLEdBR1osTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBOEt4QixNQUFNLE9BQU8sZ0JBQWdCO2FBc0NaLFdBQU0sR0FBRyxDQUFDLEFBQUosQ0FBSzthQUdGLHlCQUFvQixHQUF3RDtRQUNsRyxRQUFRLEVBQUUsbUJBQW1CO1FBQzdCLEtBQUssRUFBRSxnQkFBZ0I7UUFDdkIsU0FBUyxFQUFFLENBQUMsR0FBWSxFQUFFLEVBQUU7WUFDMUIsTUFBTSxDQUFDLEdBQUcsR0FBaUMsQ0FBQztZQUM1QyxPQUFPLGFBQWEsQ0FBQyxDQUFDLGNBQWMsYUFBYSxDQUFDO1FBQ3BELENBQUM7UUFDRCxTQUFTLEVBQUUsQ0FBQyxHQUFZLEVBQUUsRUFBRTtZQUMxQixNQUFNLENBQUMsR0FBRyxHQUFpQyxDQUFDO1lBQzVDLE9BQU8sYUFBYSxDQUFDLENBQUMsY0FBYyxhQUFhLENBQUM7UUFDcEQsQ0FBQztRQUNELEdBQUcsRUFBRSxDQUFDLEdBQVksRUFBRSxFQUFFO1lBQ3BCLE1BQU0sQ0FBQyxHQUFHLEdBQXNCLENBQUM7WUFDakMsT0FBTyxpQkFBaUIsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2xDLENBQUM7UUFDRCxHQUFHLEVBQUUsQ0FBQyxHQUFZLEVBQUUsRUFBRTtZQUNwQixNQUFNLENBQUMsR0FBRyxHQUFzQixDQUFDO1lBQ2pDLE9BQU8saUJBQWlCLENBQUMs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O3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBR0csYUFBYTtzQkFBckIsS0FBSztnQkFFSSxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFNlbGYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBGb3Jtc01vZHVsZSxcbiAgTmdDb250cm9sLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JyLWlucHV0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0Zvcm1zTW9kdWxlXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwibWItNCBmb250LXJhd2xpbmVcIiBbY2xhc3MuaW5saW5lLWlucHV0XT1cImlubGluZVwiPlxuICAgICAgQGlmIChsYWJlbCkge1xuICAgICAgICA8bGFiZWxcbiAgICAgICAgICBbZm9yXT1cImlucHV0SWRcIlxuICAgICAgICAgIGNsYXNzPVwiYmxvY2sgdGV4dC1nb3Zici1zbSBmb250LXNlbWlib2xkIHRleHQtZ292YnItZ3JheS04MCBtYi0xXCJcbiAgICAgICAgICBbY2xhc3Muc3Itb25seV09XCJpbmxpbmVcIlxuICAgICAgICAgID5cbiAgICAgICAgICB7eyBsYWJlbCB9fVxuICAgICAgICAgIEBpZiAocmVxdWlyZWQpIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1nb3Zici1kYW5nZXIgbWwtMC41XCI+Kjwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICB9XG4gICAgXG4gICAgICBAaWYgKGhlbHBlclRleHQgJiYgIWVycm9yICYmICFzdWNjZXNzTWVzc2FnZSkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cImJsb2NrIHRleHQtZ292YnIteHMgdGV4dC1nb3Zici1ncmF5LTYwIG1iLTFcIj5cbiAgICAgICAgICB7eyBoZWxwZXJUZXh0IH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIH1cbiAgICBcbiAgICAgIDxkaXYgW2NsYXNzXT1cImNvbnRhaW5lckNsYXNzZXNcIj5cbiAgICAgICAgPCEtLSBJY29uIChsZWZ0KSAtLT5cbiAgICAgICAgQGlmIChpY29uICYmICFpY29uUmlnaHQpIHtcbiAgICAgICAgICA8aVxuICAgICAgICAgICAgW2NsYXNzXT1cIidmYS1zb2xpZCBmYS0nICsgaWNvbiArICcgYWJzb2x1dGUgbGVmdC0zIHRvcC0xLzIgLXRyYW5zbGF0ZS15LTEvMiB0ZXh0LWdvdmJyLWdyYXktNDAgcG9pbnRlci1ldmVudHMtbm9uZSdcIlxuICAgICAgICAgID48L2k+XG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgPCEtLSBTZWxlY3QgLS0+XG4gICAgICAgIEBpZiAodHlwZSA9PT0gJ3NlbGVjdCcpIHtcbiAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICBbaWRdPVwiaW5wdXRJZFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICBbY2xhc3NdPVwiaW5wdXRDbGFzc2VzXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cIm9uU2VsZWN0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgKGJsdXIpPVwib25Ub3VjaGVkKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiIGRpc2FibGVkIFtzZWxlY3RlZF09XCIhdmFsdWVcIj57eyBwbGFjZWhvbGRlciB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICB9XG4gICAgXG4gICAgICAgIDwhLS0gVGV4dGFyZWEgLS0+XG4gICAgICAgIEBpZiAodHlwZSA9PT0gJ3RleHRhcmVhJykge1xuICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgW2lkXT1cImlucHV0SWRcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcbiAgICAgICAgICAgIFtjbGFzc109XCJpbnB1dENsYXNzZXNcIlxuICAgICAgICAgICAgW3Jvd3NdPVwicm93c1wiXG4gICAgICAgICAgICBbYXR0ci5tYXhsZW5ndGhdPVwibWF4TGVuZ3RoIHx8IG51bGxcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgICAgICAgIChpbnB1dCk9XCJvbklucHV0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgKGJsdXIpPVwib25Ub3VjaGVkKClcIlxuICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICB9XG4gICAgXG4gICAgICAgIDwhLS0gRmlsZSAtLT5cbiAgICAgICAgQGlmICh0eXBlID09PSAnZmlsZScpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICBbZm9yXT1cImlucHV0SWRcIlxuICAgICAgICAgICAgICBjbGFzcz1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBweC00IHB5LTIgYmctZ292YnItcHJpbWFyeSB0ZXh0LXdoaXRlIHJvdW5kZWQtZ292YnItcGlsbCBjdXJzb3ItcG9pbnRlciBob3ZlcjpiZy1nb3Zici1wcmltYXJ5LWRhcmsgdHJhbnNpdGlvbi1jb2xvcnMgdGV4dC1nb3Zici1zbSBmb250LXNlbWlib2xkXCJcbiAgICAgICAgICAgICAgW2NsYXNzLm9wYWNpdHktNTBdPVwiaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5jdXJzb3Itbm90LWFsbG93ZWRdPVwiaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS11cGxvYWQgbXItMlwiPjwvaT5cbiAgICAgICAgICAgICAge3sgcGxhY2Vob2xkZXIgfHwgJ1NlbGVjaW9uYXIgYXJxdWl2bycgfX1cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgW2lkXT1cImlucHV0SWRcIlxuICAgICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiaGlkZGVuXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uRmlsZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIEBpZiAoZmlsZU5hbWUpIHtcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtbC0yIHRleHQtZ292YnItc20gdGV4dC1nb3Zici1ncmF5LTYwXCI+e3sgZmlsZU5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgPCEtLSBUZXh0IC8gRW1haWwgLyBQYXNzd29yZCAvIE51bWJlciAvIFNlYXJjaCAtLT5cbiAgICAgICAgQGlmIChpc1N0YW5kYXJkSW5wdXQpIHtcbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIFtpZF09XCJpbnB1dElkXCJcbiAgICAgICAgICAgIFt0eXBlXT1cImFjdHVhbFR5cGVcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcbiAgICAgICAgICAgIFtjbGFzc109XCJpbnB1dENsYXNzZXNcIlxuICAgICAgICAgICAgW2F0dHIubWF4bGVuZ3RoXT1cIm1heExlbmd0aCB8fCBudWxsXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAgICAgICAoaW5wdXQpPVwib25JbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIChibHVyKT1cIm9uVG91Y2hlZCgpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgPCEtLSBQYXNzd29yZCB0b2dnbGUgYnV0dG9uIC0tPlxuICAgICAgICBAaWYgKHR5cGUgPT09ICdwYXNzd29yZCcpIHtcbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgcmlnaHQtMyB0b3AtMS8yIC10cmFuc2xhdGUteS0xLzIgdGV4dC1nb3Zici1wcmltYXJ5IGhvdmVyOnRleHQtZ292YnItcHJpbWFyeS1kYXJrIGdvdmJyLWZvY3VzLXJpbmdcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJzaG93UGFzc3dvcmQgPyAnT2N1bHRhciBzZW5oYScgOiAnTW9zdHJhciBzZW5oYSdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVBhc3N3b3JkKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPGkgW2NsYXNzXT1cInNob3dQYXNzd29yZCA/ICdmYS1zb2xpZCBmYS1leWUtc2xhc2gnIDogJ2ZhLXNvbGlkIGZhLWV5ZSdcIj48L2k+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgPCEtLSBJY29uIChyaWdodCkgLS0+XG4gICAgICAgIEBpZiAoaWNvbiAmJiBpY29uUmlnaHQgJiYgdHlwZSAhPT0gJ3Bhc3N3b3JkJykge1xuICAgICAgICAgIDxpXG4gICAgICAgICAgICBbY2xhc3NdPVwiJ2ZhLXNvbGlkIGZhLScgKyBpY29uICsgJyBhYnNvbHV0ZSByaWdodC0zIHRvcC0xLzIgLXRyYW5zbGF0ZS15LTEvMiB0ZXh0LWdvdmJyLWdyYXktNDAgcG9pbnRlci1ldmVudHMtbm9uZSdcIlxuICAgICAgICAgID48L2k+XG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgPCEtLSBTZWFyY2ggYnV0dG9uIC0tPlxuICAgICAgICBAaWYgKHR5cGUgPT09ICdzZWFyY2gnKSB7XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImFic29sdXRlIHJpZ2h0LTEgdG9wLTEvMiAtdHJhbnNsYXRlLXktMS8yIHctOCBoLTggcm91bmRlZC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtZ292YnItcHJpbWFyeSBob3ZlcjpiZy1nb3Zici1wcmltYXJ5LWxpZ2h0ZXN0IGdvdmJyLWZvY3VzLXJpbmcgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkJ1c2NhclwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2VhcmNoU3VibWl0LmVtaXQodmFsdWUpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtbWFnbmlmeWluZy1nbGFzc1wiPjwvaT5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgXG4gICAgICA8IS0tIENoYXJhY3RlciBjb3VudGVyIC0tPlxuICAgICAgQGlmIChtYXhMZW5ndGggJiYgKHR5cGUgPT09ICd0ZXh0YXJlYScgfHwgaXNTdGFuZGFyZElucHV0KSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWVuZCBtdC0wLjVcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZ292YnIteHMgdGV4dC1nb3Zici1ncmF5LTQwXCI+XG4gICAgICAgICAgICB7eyB2YWx1ZT8ubGVuZ3RoIHx8IDAgfX0ve3sgbWF4TGVuZ3RoIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICBcbiAgICAgIDwhLS0gRmVlZGJhY2sgbWVzc2FnZXMgLS0+XG4gICAgICBAaWYgKGRpc3BsYXlFcnJvcikge1xuICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIG10LTEgdGV4dC1nb3Zici1zbSB0ZXh0LWdvdmJyLWRhbmdlclwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtdGltZXMtY2lyY2xlIG1yLTFcIj48L2k+e3sgZGlzcGxheUVycm9yIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIH1cblxuICAgICAgQGlmIChzdWNjZXNzTWVzc2FnZSAmJiAhZGlzcGxheUVycm9yKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgbXQtMSB0ZXh0LWdvdmJyLXNtIHRleHQtZ292YnItc3VjY2Vzc1wiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtY2hlY2stY2lyY2xlIG1yLTFcIj48L2k+e3sgc3VjY2Vzc01lc3NhZ2UgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgfVxuXG4gICAgICBAaWYgKHdhcm5pbmdNZXNzYWdlICYmICFkaXNwbGF5RXJyb3IgJiYgIXN1Y2Nlc3NNZXNzYWdlKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgbXQtMSB0ZXh0LWdvdmJyLXNtIHRleHQtZ292YnItd2FybmluZ1wiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtZXhjbGFtYXRpb24tdHJpYW5nbGUgbXItMVwiPjwvaT57eyB3YXJuaW5nTWVzc2FnZSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICB9XG5cbiAgICAgIEBpZiAoaW5mb01lc3NhZ2UgJiYgIWRpc3BsYXlFcnJvciAmJiAhc3VjY2Vzc01lc3NhZ2UgJiYgIXdhcm5pbmdNZXNzYWdlKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgbXQtMSB0ZXh0LWdvdmJyLXNtIHRleHQtZ292YnItaW5mb1wiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtaW5mby1jaXJjbGUgbXItMVwiPjwvaT57eyBpbmZvTWVzc2FnZSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgYCxcbn0pXG5leHBvcnQgY2xhc3MgQnJJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgQElucHV0KCkgbGFiZWw/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHR5cGU6XG4gICAgfCAndGV4dCdcbiAgICB8ICdlbWFpbCdcbiAgICB8ICdwYXNzd29yZCdcbiAgICB8ICdzZWxlY3QnXG4gICAgfCAnZmlsZSdcbiAgICB8ICdudW1iZXInXG4gICAgfCAnc2VhcmNoJ1xuICAgIHwgJ3RleHRhcmVhJyA9ICd0ZXh0JztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcbiAgQElucHV0KCkgcmVxdWlyZWQgPSBmYWxzZTtcbiAgLyoqIE1lbnNhZ2VtIGRlIGVycm8gbWFudWFsIChzb2JyZXNjcmV2ZSBlcnJvcyBhdXRvbcOhdGljb3MgZG8gdmFsaWRhdG9yKSAqL1xuICBASW5wdXQoKSBlcnJvcj86IHN0cmluZztcbiAgQElucHV0KCkgc3VjY2Vzc01lc3NhZ2U/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHdhcm5pbmdNZXNzYWdlPzogc3RyaW5nO1xuICBASW5wdXQoKSBpbmZvTWVzc2FnZT86IHN0cmluZztcbiAgQElucHV0KCkgaGVscGVyVGV4dD86IHN0cmluZztcbiAgQElucHV0KCkgaWNvbj86IHN0cmluZztcbiAgQElucHV0KCkgaWNvblJpZ2h0ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRlbnNpdHk6ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZScgPSAnbWVkaXVtJztcbiAgQElucHV0KCkgaGlnaGxpZ2h0ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlubGluZSA9IGZhbHNlO1xuICBASW5wdXQoKSBtYXhMZW5ndGg/OiBudW1iZXI7XG4gIEBJbnB1dCgpIHJvd3MgPSAzO1xuXG4gIC8qKiBNZW5zYWdlbnMgY3VzdG9taXphZGFzIHBhcmEgZXJyb3MgZGUgdmFsaWRhw6fDo28gKi9cbiAgQElucHV0KCkgZXJyb3JNZXNzYWdlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gIEBPdXRwdXQoKSBmaWxlU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGU+KCk7XG4gIEBPdXRwdXQoKSBzZWFyY2hTdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICB2YWx1ZTogc3RyaW5nID0gJyc7XG4gIGlzRGlzYWJsZWQgPSBmYWxzZTtcbiAgZmlsZU5hbWUgPSAnJztcbiAgc2hvd1Bhc3N3b3JkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgbmV4dElkID0gMDtcbiAgaW5wdXRJZCA9IGBici1pbnB1dC0ke0JySW5wdXRDb21wb25lbnQubmV4dElkKyt9YDtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBkZWZhdWx0RXJyb3JNZXNzYWdlczogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgKChlcnI6IHVua25vd24pID0+IHN0cmluZyk+ID0ge1xuICAgIHJlcXVpcmVkOiAnQ2FtcG8gb2JyaWdhdMOzcmlvJyxcbiAgICBlbWFpbDogJ0VtYWlsIGludsOhbGlkbycsXG4gICAgbWlubGVuZ3RoOiAoZXJyOiB1bmtub3duKSA9PiB7XG4gICAgICBjb25zdCBlID0gZXJyIGFzIHsgcmVxdWlyZWRMZW5ndGg6IG51bWJlciB9O1xuICAgICAgcmV0dXJuIGBNw61uaW1vIGRlICR7ZS5yZXF1aXJlZExlbmd0aH0gY2FyYWN0ZXJlc2A7XG4gICAgfSxcbiAgICBtYXhsZW5ndGg6IChlcnI6IHVua25vd24pID0+IHtcbiAgICAgIGNvbnN0IGUgPSBlcnIgYXMgeyByZXF1aXJlZExlbmd0aDogbnVtYmVyIH07XG4gICAgICByZXR1cm4gYE3DoXhpbW8gZGUgJHtlLnJlcXVpcmVkTGVuZ3RofSBjYXJhY3RlcmVzYDtcbiAgICB9LFxuICAgIG1pbjogKGVycjogdW5rbm93bikgPT4ge1xuICAgICAgY29uc3QgZSA9IGVyciBhcyB7IG1pbjogbnVtYmVyIH07XG4gICAgICByZXR1cm4gYFZhbG9yIG3DrW5pbW86ICR7ZS5taW59YDtcbiAgICB9LFxuICAgIG1heDogKGVycjogdW5rbm93bikgPT4ge1xuICAgICAgY29uc3QgZSA9IGVyciBhcyB7IG1heDogbnVtYmVyIH07XG4gICAgICByZXR1cm4gYFZhbG9yIG3DoXhpbW86ICR7ZS5tYXh9YDtcbiAgICB9LFxuICAgIHBhdHRlcm46ICdGb3JtYXRvIGludsOhbGlkbycsXG4gIH07XG5cbiAgY29uc3RydWN0b3IoQFNlbGYoKSBAT3B0aW9uYWwoKSBwcml2YXRlIG5nQ29udHJvbDogTmdDb250cm9sKSB7XG4gICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG4gIH1cblxuICBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgZ2V0IGlzU3RhbmRhcmRJbnB1dCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50eXBlICE9PSAnc2VsZWN0JyAmJiB0aGlzLnR5cGUgIT09ICdmaWxlJyAmJiB0aGlzLnR5cGUgIT09ICd0ZXh0YXJlYSc7XG4gIH1cblxuICBnZXQgYWN0dWFsVHlwZSgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnR5cGUgPT09ICdwYXNzd29yZCcpIHtcbiAgICAgIHJldHVybiB0aGlzLnNob3dQYXNzd29yZCA/ICd0ZXh0JyA6ICdwYXNzd29yZCc7XG4gICAgfVxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdzZWFyY2gnKSByZXR1cm4gJ3RleHQnO1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXQgY29udGFpbmVyQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnR5cGUgIT09ICdmaWxlJyA/ICdyZWxhdGl2ZScgOiAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRvcm5hIGEgbWVuc2FnZW0gZGUgZXJybyBhIHNlciBleGliaWRhLlxuICAgKiBQcmlvcmlkYWRlOiBlcnJvciBtYW51YWwgPiBlcnJvIGRvIHZhbGlkYXRvciAoc2UgdG91Y2hlZC9kaXJ0eSlcbiAgICovXG4gIGdldCBkaXNwbGF5RXJyb3IoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAvLyBFcnJvIG1hbnVhbCBzZW1wcmUgdGVtIHByaW9yaWRhZGVcbiAgICBpZiAodGhpcy5lcnJvcikge1xuICAgICAgcmV0dXJuIHRoaXMuZXJyb3I7XG4gICAgfVxuXG4gICAgLy8gU2UgbsOjbyB0ZW0gTmdDb250cm9sLCBuw6NvIGjDoSBlcnJvIGF1dG9tw6F0aWNvXG4gICAgaWYgKCF0aGlzLm5nQ29udHJvbD8uY29udHJvbCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5uZ0NvbnRyb2wuY29udHJvbDtcblxuICAgIC8vIFPDsyBtb3N0cmEgZXJybyBzZSBvIGNvbnRyb2xlIGZvaSB0b2NhZG8gb3UgbW9kaWZpY2FkbyBFIGVzdMOhIGludsOhbGlkb1xuICAgIGlmICghY29udHJvbC5lcnJvcnMgfHwgKCFjb250cm9sLnRvdWNoZWQgJiYgIWNvbnRyb2wuZGlydHkpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIEJ1c2NhIGEgcHJpbWVpcmEgbWVuc2FnZW0gZGUgZXJyb1xuICAgIHJldHVybiB0aGlzLmdldEZpcnN0RXJyb3JNZXNzYWdlKGNvbnRyb2wuZXJyb3JzKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Rmlyc3RFcnJvck1lc3NhZ2UoZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzKTogc3RyaW5nIHtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhlcnJvcnMpKSB7XG4gICAgICAvLyBQcmltZWlybyB2ZXJpZmljYSBtZW5zYWdlbnMgY3VzdG9taXphZGFzIGRvIHVzdcOhcmlvXG4gICAgICBpZiAodGhpcy5lcnJvck1lc3NhZ2VzW2tleV0pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JNZXNzYWdlc1trZXldO1xuICAgICAgfVxuXG4gICAgICAvLyBEZXBvaXMgdmVyaWZpY2EgbWVuc2FnZW5zIHBhZHLDo29cbiAgICAgIGNvbnN0IGRlZmF1bHRNc2cgPSBCcklucHV0Q29tcG9uZW50LmRlZmF1bHRFcnJvck1lc3NhZ2VzW2tleV07XG4gICAgICBpZiAoZGVmYXVsdE1zZykge1xuICAgICAgICByZXR1cm4gdHlwZW9mIGRlZmF1bHRNc2cgPT09ICdmdW5jdGlvbicgPyBkZWZhdWx0TXNnKGVycm9yc1trZXldKSA6IGRlZmF1bHRNc2c7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRmFsbGJhY2sgZ2Vuw6lyaWNvXG4gICAgcmV0dXJuICdDYW1wbyBpbnbDoWxpZG8nO1xuICB9XG5cbiAgZ2V0IGlucHV0Q2xhc3NlcygpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRlbnNpdHlTdHlsZXMgPSB7XG4gICAgICBzbWFsbDogJ3RleHQtZ292YnItc20nLFxuICAgICAgbWVkaXVtOiAndGV4dC1nb3Zici1iYXNlJyxcbiAgICAgIGxhcmdlOiAndGV4dC1nb3Zici1sZycsXG4gICAgfSBhcyBjb25zdDtcblxuICAgIGNvbnN0IGRlbnNpdHlIZWlnaHRzID0ge1xuICAgICAgc21hbGw6ICdoLVt2YXIoLS1nb3Zici1pbnB1dC1zbWFsbCldJyxcbiAgICAgIG1lZGl1bTogJ2gtW3ZhcigtLWdvdmJyLWlucHV0LW1lZGl1bSldJyxcbiAgICAgIGxhcmdlOiAnaC1bdmFyKC0tZ292YnItaW5wdXQtbGFyZ2UpXScsXG4gICAgfSBhcyBjb25zdDtcblxuICAgIGNvbnN0IGJhc2UgPSBbXG4gICAgICAndy1mdWxsIHB4LTQgZm9udC1yYXdsaW5lIGdvdmJyLWlucHV0JyxcbiAgICAgIHRoaXMudHlwZSA9PT0gJ3RleHRhcmVhJyA/ICdweS0yJyA6ICcnLFxuICAgIF0uam9pbignICcpO1xuXG4gICAgY29uc3QgZGVuc2l0eSA9IGRlbnNpdHlTdHlsZXNbdGhpcy5kZW5zaXR5XTtcbiAgICBjb25zdCBoZWlnaHQgPSB0aGlzLnR5cGUgIT09ICd0ZXh0YXJlYScgPyBkZW5zaXR5SGVpZ2h0c1t0aGlzLmRlbnNpdHldIDogJyc7XG5cbiAgICBjb25zdCBoaWdobGlnaHRDbHMgPSB0aGlzLmhpZ2hsaWdodFxuICAgICAgPyAnaC1bdmFyKC0tZ292YnItaW5wdXQtaGlnaGxpZ2h0KV0gYmctZ292YnItZ3JheS0yIGJvcmRlci10cmFuc3BhcmVudCB0ZXh0LWdvdmJyLWxnIHB4LTYnXG4gICAgICA6ICcnO1xuXG4gICAgY29uc3Qgc3RhdHVzQ2xzID0gdGhpcy5kaXNwbGF5RXJyb3JcbiAgICAgID8gJ2dvdmJyLWlucHV0LS1kYW5nZXInXG4gICAgICA6IHRoaXMuc3VjY2Vzc01lc3NhZ2VcbiAgICAgICAgPyAnZ292YnItaW5wdXQtLXN1Y2Nlc3MnXG4gICAgICAgIDogdGhpcy53YXJuaW5nTWVzc2FnZVxuICAgICAgICAgID8gJ2dvdmJyLWlucHV0LS13YXJuaW5nJ1xuICAgICAgICAgIDogJyc7XG5cbiAgICBjb25zdCBkaXNhYmxlZENscyA9IHRoaXMuaXNEaXNhYmxlZFxuICAgICAgPyAnYmctZ292YnItZ3JheS0yIHRleHQtZ292YnItZ3JheS00MCBjdXJzb3Itbm90LWFsbG93ZWQnXG4gICAgICA6ICdiZy13aGl0ZSB0ZXh0LWdvdmJyLWdyYXktODAnO1xuXG4gICAgY29uc3QgaWNvblBhZGRpbmdMZWZ0ID0gdGhpcy5pY29uICYmICF0aGlzLmljb25SaWdodCA/ICdwbC0xMCcgOiAnJztcbiAgICBjb25zdCBpY29uUGFkZGluZ1JpZ2h0ID1cbiAgICAgICh0aGlzLmljb24gJiYgdGhpcy5pY29uUmlnaHQpIHx8IHRoaXMudHlwZSA9PT0gJ3Bhc3N3b3JkJyB8fCB0aGlzLnR5cGUgPT09ICdzZWFyY2gnXG4gICAgICAgID8gJ3ByLTEwJ1xuICAgICAgICA6ICcnO1xuXG4gICAgcmV0dXJuIFtiYXNlLCBkZW5zaXR5LCBoZWlnaHQsIGhpZ2hsaWdodENscywgc3RhdHVzQ2xzLCBkaXNhYmxlZENscywgaWNvblBhZGRpbmdMZWZ0LCBpY29uUGFkZGluZ1JpZ2h0XVxuICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgLmpvaW4oJyAnKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZSA/PyAnJztcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5pc0Rpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHRvZ2dsZVBhc3N3b3JkKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd1Bhc3N3b3JkID0gIXRoaXMuc2hvd1Bhc3N3b3JkO1xuICB9XG5cbiAgb25JbnB1dENoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCB8IEhUTUxUZXh0QXJlYUVsZW1lbnQ7XG4gICAgdGhpcy52YWx1ZSA9IHRhcmdldC52YWx1ZTtcbiAgICB0aGlzLm9uQ2hhbmdlKHRhcmdldC52YWx1ZSk7XG4gIH1cblxuICBvblNlbGVjdENoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB2YWwgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxTZWxlY3RFbGVtZW50KS52YWx1ZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsO1xuICAgIHRoaXMub25DaGFuZ2UodmFsKTtcbiAgfVxuXG4gIG9uRmlsZUNoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGlmIChpbnB1dC5maWxlcyAmJiBpbnB1dC5maWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWxlID0gaW5wdXQuZmlsZXNbMF07XG4gICAgICB0aGlzLmZpbGVOYW1lID0gZmlsZS5uYW1lO1xuICAgICAgdGhpcy5maWxlU2VsZWN0ZWQuZW1pdChmaWxlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,9 +1,14 @@
|
|
|
1
|
-
import { Component, ElementRef, EventEmitter,
|
|
2
|
-
import {
|
|
1
|
+
import { Component, ElementRef, EventEmitter, HostListener, inject, Input, Optional, Output, Self, ViewEncapsulation, } from '@angular/core';
|
|
2
|
+
import { FormsModule } from '@angular/forms';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "@angular/forms";
|
|
5
5
|
export class BrSelectComponent {
|
|
6
|
-
|
|
6
|
+
static { this.nextId = 0; }
|
|
7
|
+
static { this.defaultErrorMessages = {
|
|
8
|
+
required: 'Campo obrigatório',
|
|
9
|
+
}; }
|
|
10
|
+
constructor(ngControl) {
|
|
11
|
+
this.ngControl = ngControl;
|
|
7
12
|
this.placeholder = 'Selecione';
|
|
8
13
|
this.options = [];
|
|
9
14
|
this.required = false;
|
|
@@ -11,6 +16,8 @@ export class BrSelectComponent {
|
|
|
11
16
|
this.searchable = false;
|
|
12
17
|
this.searchPlaceholder = 'Buscar...';
|
|
13
18
|
this.density = 'medium';
|
|
19
|
+
/** Mensagens customizadas para erros de validação */
|
|
20
|
+
this.errorMessages = {};
|
|
14
21
|
this.selectionChange = new EventEmitter();
|
|
15
22
|
this.expanded = false;
|
|
16
23
|
this.searchTerm = '';
|
|
@@ -22,8 +29,38 @@ export class BrSelectComponent {
|
|
|
22
29
|
this.onChange = () => { };
|
|
23
30
|
this.onTouched = () => { };
|
|
24
31
|
this.elementRef = inject(ElementRef);
|
|
32
|
+
if (this.ngControl) {
|
|
33
|
+
this.ngControl.valueAccessor = this;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Retorna a mensagem de erro a ser exibida.
|
|
38
|
+
*/
|
|
39
|
+
get displayError() {
|
|
40
|
+
if (this.error) {
|
|
41
|
+
return this.error;
|
|
42
|
+
}
|
|
43
|
+
if (!this.ngControl?.control) {
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
const control = this.ngControl.control;
|
|
47
|
+
if (!control.errors || (!control.touched && !control.dirty)) {
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
return this.getFirstErrorMessage(control.errors);
|
|
51
|
+
}
|
|
52
|
+
getFirstErrorMessage(errors) {
|
|
53
|
+
for (const key of Object.keys(errors)) {
|
|
54
|
+
if (this.errorMessages[key]) {
|
|
55
|
+
return this.errorMessages[key];
|
|
56
|
+
}
|
|
57
|
+
const defaultMsg = BrSelectComponent.defaultErrorMessages[key];
|
|
58
|
+
if (defaultMsg) {
|
|
59
|
+
return defaultMsg;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return 'Campo inválido';
|
|
25
63
|
}
|
|
26
|
-
static { this.nextId = 0; }
|
|
27
64
|
get displayValue() {
|
|
28
65
|
if (this.multiple) {
|
|
29
66
|
if (this.multipleValues.length === 0)
|
|
@@ -57,7 +94,7 @@ export class BrSelectComponent {
|
|
|
57
94
|
densityStyles[this.density],
|
|
58
95
|
densityHeights[this.density],
|
|
59
96
|
].join(' ');
|
|
60
|
-
const statusCls = this.
|
|
97
|
+
const statusCls = this.displayError
|
|
61
98
|
? 'govbr-input--danger'
|
|
62
99
|
: '';
|
|
63
100
|
const disabledCls = this.isDisabled
|
|
@@ -142,14 +179,8 @@ export class BrSelectComponent {
|
|
|
142
179
|
setDisabledState(isDisabled) {
|
|
143
180
|
this.isDisabled = isDisabled;
|
|
144
181
|
}
|
|
145
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BrSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
146
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: BrSelectComponent, isStandalone: true, selector: "br-select", inputs: { label: "label", placeholder: "placeholder", helperText: "helperText", options: "options", required: "required", error: "error", multiple: "multiple", searchable: "searchable", searchPlaceholder: "searchPlaceholder", density: "density" }, outputs: { selectionChange: "selectionChange" }, host: { listeners: { "document:click": "onDocumentClick($event)" } },
|
|
147
|
-
{
|
|
148
|
-
provide: NG_VALUE_ACCESSOR,
|
|
149
|
-
useExisting: forwardRef(() => BrSelectComponent),
|
|
150
|
-
multi: true,
|
|
151
|
-
},
|
|
152
|
-
], ngImport: i0, template: `
|
|
182
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BrSelectComponent, deps: [{ token: i1.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
183
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: BrSelectComponent, isStandalone: true, selector: "br-select", inputs: { label: "label", placeholder: "placeholder", helperText: "helperText", options: "options", required: "required", error: "error", multiple: "multiple", searchable: "searchable", searchPlaceholder: "searchPlaceholder", density: "density", errorMessages: "errorMessages" }, outputs: { selectionChange: "selectionChange" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, ngImport: i0, template: `
|
|
153
184
|
<div class="relative font-rawline mb-4" #selectContainer>
|
|
154
185
|
@if (label) {
|
|
155
186
|
<label
|
|
@@ -247,9 +278,9 @@ export class BrSelectComponent {
|
|
|
247
278
|
}
|
|
248
279
|
|
|
249
280
|
<!-- Error -->
|
|
250
|
-
@if (
|
|
281
|
+
@if (displayError) {
|
|
251
282
|
<span class="flex items-center mt-1 text-govbr-sm text-govbr-danger">
|
|
252
|
-
<i class="fa-solid fa-times-circle mr-1"></i>{{
|
|
283
|
+
<i class="fa-solid fa-times-circle mr-1"></i>{{ displayError }}
|
|
253
284
|
</span>
|
|
254
285
|
}
|
|
255
286
|
</div>
|
|
@@ -262,13 +293,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
262
293
|
standalone: true,
|
|
263
294
|
imports: [FormsModule],
|
|
264
295
|
encapsulation: ViewEncapsulation.None,
|
|
265
|
-
providers: [
|
|
266
|
-
{
|
|
267
|
-
provide: NG_VALUE_ACCESSOR,
|
|
268
|
-
useExisting: forwardRef(() => BrSelectComponent),
|
|
269
|
-
multi: true,
|
|
270
|
-
},
|
|
271
|
-
],
|
|
272
296
|
template: `
|
|
273
297
|
<div class="relative font-rawline mb-4" #selectContainer>
|
|
274
298
|
@if (label) {
|
|
@@ -367,15 +391,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
367
391
|
}
|
|
368
392
|
|
|
369
393
|
<!-- Error -->
|
|
370
|
-
@if (
|
|
394
|
+
@if (displayError) {
|
|
371
395
|
<span class="flex items-center mt-1 text-govbr-sm text-govbr-danger">
|
|
372
|
-
<i class="fa-solid fa-times-circle mr-1"></i>{{
|
|
396
|
+
<i class="fa-solid fa-times-circle mr-1"></i>{{ displayError }}
|
|
373
397
|
</span>
|
|
374
398
|
}
|
|
375
399
|
</div>
|
|
376
400
|
`,
|
|
377
401
|
}]
|
|
378
|
-
}],
|
|
402
|
+
}], ctorParameters: () => [{ type: i1.NgControl, decorators: [{
|
|
403
|
+
type: Self
|
|
404
|
+
}, {
|
|
405
|
+
type: Optional
|
|
406
|
+
}] }], propDecorators: { label: [{
|
|
379
407
|
type: Input
|
|
380
408
|
}], placeholder: [{
|
|
381
409
|
type: Input
|
|
@@ -395,10 +423,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
395
423
|
type: Input
|
|
396
424
|
}], density: [{
|
|
397
425
|
type: Input
|
|
426
|
+
}], errorMessages: [{
|
|
427
|
+
type: Input
|
|
398
428
|
}], selectionChange: [{
|
|
399
429
|
type: Output
|
|
400
430
|
}], onDocumentClick: [{
|
|
401
431
|
type: HostListener,
|
|
402
432
|
args: ['document:click', ['$event']]
|
|
403
433
|
}] } });
|
|
404
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnItc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWdvdmJyLXR3L3NyYy9saWIvY29tcG9uZW50cy9zZWxlY3QvYnItc2VsZWN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBd0h0RixNQUFNLE9BQU8saUJBQWlCO0lBdEg5QjtRQXdIVyxnQkFBVyxHQUFHLFdBQVcsQ0FBQztRQUUxQixZQUFPLEdBQXFCLEVBQUUsQ0FBQztRQUMvQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixzQkFBaUIsR0FBRyxXQUFXLENBQUM7UUFDaEMsWUFBTyxHQUFpQyxRQUFRLENBQUM7UUFFaEQsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBcUIsQ0FBQztRQUVsRSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUVuQixxQ0FBcUM7UUFDN0IsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsbUJBQWMsR0FBYSxFQUFFLENBQUM7UUFHdEMsYUFBUSxHQUFHLGFBQWEsaUJBQWlCLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztRQUVyRCxhQUFRLEdBQXVDLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUN4RCxjQUFTLEdBQWUsR0FBRyxFQUFFLEdBQUUsQ0FBQyxD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RUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGtCQUFrQixDQUFDOzRCQUNoRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtvQkFDRCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBd0dQO2lCQUNKOzhCQUVVLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUVJLGVBQWU7c0JBQXhCLE1BQU07Z0JBMkhQLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IsIEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdici1zZWxlY3QnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbRm9ybXNNb2R1bGVdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEJyU2VsZWN0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIGZvbnQtcmF3bGluZSBtYi00XCIgI3NlbGVjdENvbnRhaW5lcj5cbiAgICAgIEBpZiAobGFiZWwpIHtcbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgW2Zvcl09XCJzZWxlY3RJZFwiXG4gICAgICAgICAgY2xhc3M9XCJibG9jayB0ZXh0LWdvdmJyLXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1nb3Zici1ncmF5LTgwIG1iLTFcIlxuICAgICAgICAgID5cbiAgICAgICAgICB7eyBsYWJlbCB9fVxuICAgICAgICAgIEBpZiAocmVxdWlyZWQpIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1nb3Zici1kYW5nZXIgbWwtMC41XCI+Kjwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICB9XG4gICAgXG4gICAgICBAaWYgKGhlbHBlclRleHQgJiYgIWVycm9yKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYmxvY2sgdGV4dC1nb3Zici14cyB0ZXh0LWdvdmJyLWdyYXktNjAgbWItMVwiPlxuICAgICAgICAgIHt7IGhlbHBlclRleHQgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgfVxuICAgIFxuICAgICAgPCEtLSBUcmlnZ2VyIC0tPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW2lkXT1cInNlbGVjdElkXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxuICAgICAgICBbY2xhc3NdPVwidHJpZ2dlckNsYXNzZXNcIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlKClcIlxuICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXG4gICAgICAgID5cbiAgICAgICAgPHNwYW4gW2NsYXNzXT1cImRpc3BsYXlWYWx1ZSA/ICd0ZXh0LWdvdmJyLWdyYXktODAnIDogJ3RleHQtZ292YnItZ3JheS00MCdcIj5cbiAgICAgICAgICB7eyBkaXNwbGF5VmFsdWUgfHwgcGxhY2Vob2xkZXIgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8aVxuICAgICAgICAgIGNsYXNzPVwiZmEtc29saWQgZmEtY2hldnJvbi1kb3duIHRleHQtZ292YnItcHJpbWFyeSB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi0yMDBcIlxuICAgICAgICAgIFtjbGFzcy5yb3RhdGUtMTgwXT1cImV4cGFuZGVkXCJcbiAgICAgICAgPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIFxuICAgICAgPCEtLSBEcm9wZG93biAtLT5cbiAgICAgIEBpZiAoZXhwYW5kZWQpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgbGVmdC0wIHJpZ2h0LTAgei0xMCBtdC0xIGJnLXdoaXRlIGJvcmRlciBib3JkZXItZ292YnItZ3JheS0xMCBzaGFkb3ctbGcgbWF4LWgtWzQwNHB4XSBvdmVyZmxvdy15LWF1dG9cIlxuICAgICAgICAgID5cbiAgICAgICAgICA8IS0tIFNlYXJjaCBmaWx0ZXIgLS0+XG4gICAgICAgICAgQGlmIChzZWFyY2hhYmxlKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0yIGJvcmRlci1iIGJvcmRlci1nb3Zici1ncmF5LTEwXCI+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbCBweC0zIHB5LTIgdGV4dC1nb3Zici1zbSBib3JkZXIgYm9yZGVyLWdvdmJyLWdyYXktMjAgcm91bmRlZCBnb3Zici1mb2N1cy1yaW5nXCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwic2VhcmNoUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGVybVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgICA8IS0tIE9wdGlvbnMgLS0+XG4gICAgICAgICAgPHVsIHJvbGU9XCJsaXN0Ym94XCIgY2xhc3M9XCJweS0xXCI+XG4gICAgICAgICAgICBAZm9yIChvcHRpb24gb2YgZmlsdGVyZWRPcHRpb25zOyB0cmFjayBvcHRpb24pIHtcbiAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImlzU2VsZWN0ZWQob3B0aW9uLnZhbHVlKVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cImdldE9wdGlvbkNsYXNzZXMob3B0aW9uKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9wdGlvbihvcHRpb24pOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cInNlbGVjdE9wdGlvbihvcHRpb24pOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8IS0tIE11bHRpcGxlOiBjaGVja2JveCAtLT5cbiAgICAgICAgICAgICAgICBAaWYgKG11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGZsZXgtc2hyaW5rLTAgdy01IGgtNSBtci0zIGJvcmRlci0yIHJvdW5kZWQtc20gdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYmctZ292YnItcHJpbWFyeV09XCJpc1NlbGVjdGVkKG9wdGlvbi52YWx1ZSlcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYm9yZGVyLWdvdmJyLXByaW1hcnldPVwiaXNTZWxlY3RlZChvcHRpb24udmFsdWUpXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1nb3Zici1ncmF5LTQwXT1cIiFpc1NlbGVjdGVkKG9wdGlvbi52YWx1ZSlcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoaXNTZWxlY3RlZChvcHRpb24udmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LTMgaC0zIHRleHQtd2hpdGVcIiB2aWV3Qm94PVwiMCAwIDEyIDEwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBvbHlsaW5lIHBvaW50cz1cIjEuNSA1IDQuNSA4IDEwLjUgMlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0cnVuY2F0ZVwiPnt7IG9wdGlvbi5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoZmlsdGVyZWRPcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJweC00IHB5LTMgdGV4dC1nb3Zici1zbSB0ZXh0LWdvdmJyLWdyYXktNDAgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICBOZW5odW0gcmVzdWx0YWRvIGVuY29udHJhZG9cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICBcbiAgICAgIDwhLS0gRXJyb3IgLS0+XG4gICAgICBAaWYgKGVycm9yKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgbXQtMSB0ZXh0LWdvdmJyLXNtIHRleHQtZ292YnItZGFuZ2VyXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS10aW1lcy1jaXJjbGUgbXItMVwiPjwvaT57eyBlcnJvciB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgYCxcbn0pXG5leHBvcnQgY2xhc3MgQnJTZWxlY3RDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIEBJbnB1dCgpIGxhYmVsPzogc3RyaW5nO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICdTZWxlY2lvbmUnO1xuICBASW5wdXQoKSBoZWxwZXJUZXh0Pzogc3RyaW5nO1xuICBASW5wdXQoKSBvcHRpb25zOiBCclNlbGVjdE9wdGlvbltdID0gW107XG4gIEBJbnB1dCgpIHJlcXVpcmVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVycm9yPzogc3RyaW5nO1xuICBASW5wdXQoKSBtdWx0aXBsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBzZWFyY2hhYmxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNlYXJjaFBsYWNlaG9sZGVyID0gJ0J1c2Nhci4uLic7XG4gIEBJbnB1dCgpIGRlbnNpdHk6ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZScgPSAnbWVkaXVtJztcblxuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBzdHJpbmdbXT4oKTtcblxuICBleHBhbmRlZCA9IGZhbHNlO1xuICBzZWFyY2hUZXJtID0gJyc7XG4gIGlzRGlzYWJsZWQgPSBmYWxzZTtcblxuICAvLyBTaW5nbGUgdmFsdWUgb3IgYXJyYXkgZm9yIG11bHRpcGxlXG4gIHByaXZhdGUgc2luZ2xlVmFsdWUgPSAnJztcbiAgcHJpdmF0ZSBtdWx0aXBsZVZhbHVlczogc3RyaW5nW10gPSBbXTtcblxuICBwcml2YXRlIHN0YXRpYyBuZXh0SWQgPSAwO1xuICBzZWxlY3RJZCA9IGBici1zZWxlY3QtJHtCclNlbGVjdENvbXBvbmVudC5uZXh0SWQrK31gO1xuXG4gIG9uQ2hhbmdlOiAodmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdKSA9PiB2b2lkID0gKCkgPT4ge307XG4gIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gIHByaXZhdGUgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcblxuICBnZXQgZGlzcGxheVZhbHVlKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIGlmICh0aGlzLm11bHRpcGxlVmFsdWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcnO1xuICAgICAgY29uc3QgbGFiZWxzID0gdGhpcy5tdWx0aXBsZVZhbHVlc1xuICAgICAgICAubWFwKHYgPT4gdGhpcy5vcHRpb25zLmZpbmQobyA9PiBvLnZhbHVlID09PSB2KT8ubGFiZWwpXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbik7XG4gICAgICByZXR1cm4gbGFiZWxzLmpvaW4oJywgJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZmluZChvID0+IG8udmFsdWUgPT09IHRoaXMuc2luZ2xlVmFsdWUpPy5sYWJlbCB8fCAnJztcbiAgfVxuXG4gIGdldCBmaWx0ZXJlZE9wdGlvbnMoKTogQnJTZWxlY3RPcHRpb25bXSB7XG4gICAgaWYgKCF0aGlzLnNlYXJjaFRlcm0pIHJldHVybiB0aGlzLm9wdGlvbnM7XG4gICAgY29uc3QgdGVybSA9IHRoaXMuc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZmlsdGVyKG8gPT4gby5sYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pKTtcbiAgfVxuXG4gIGdldCB0cmlnZ2VyQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRlbnNpdHlTdHlsZXMgPSB7XG4gICAgICBzbWFsbDogJ3RleHQtZ292YnItc20nLFxuICAgICAgbWVkaXVtOiAndGV4dC1nb3Zici1iYXNlJyxcbiAgICAgIGxhcmdlOiAndGV4dC1nb3Zici1sZycsXG4gICAgfSBhcyBjb25zdDtcblxuICAgIGNvbnN0IGRlbnNpdHlIZWlnaHRzID0ge1xuICAgICAgc21hbGw6ICdoLVt2YXIoLS1nb3Zici1pbnB1dC1zbWFsbCldJyxcbiAgICAgIG1lZGl1bTogJ2gtW3ZhcigtLWdvdmJyLWlucHV0LW1lZGl1bSldJyxcbiAgICAgIGxhcmdlOiAnaC1bdmFyKC0tZ292YnItaW5wdXQtbGFyZ2UpXScsXG4gICAgfSBhcyBjb25zdDtcblxuICAgIGNvbnN0IGJhc2UgPSBbXG4gICAgICAndy1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBweC00IGZvbnQtcmF3bGluZSBnb3Zici1pbnB1dCcsXG4gICAgICBkZW5zaXR5U3R5bGVzW3RoaXMuZGVuc2l0eV0sXG4gICAgICBkZW5zaXR5SGVpZ2h0c1t0aGlzLmRlbnNpdHldLFxuICAgIF0uam9pbignICcpO1xuXG4gICAgY29uc3Qgc3RhdHVzQ2xzID0gdGhpcy5lcnJvclxuICAgICAgPyAnZ292YnItaW5wdXQtLWRhbmdlcidcbiAgICAgIDogJyc7XG5cbiAgICBjb25zdCBkaXNhYmxlZENscyA9IHRoaXMuaXNEaXNhYmxlZFxuICAgICAgPyAnYmctZ292YnItZ3JheS0yIHRleHQtZ292YnItZ3JheS00MCBjdXJzb3Itbm90LWFsbG93ZWQnXG4gICAgICA6ICdiZy13aGl0ZSBjdXJzb3ItcG9pbnRlcic7XG5cbiAgICByZXR1cm4gW2Jhc2UsIHN0YXR1c0NscywgZGlzYWJsZWRDbHNdLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJyk7XG4gIH1cblxuICBnZXRPcHRpb25DbGFzc2VzKG9wdGlvbjogQnJTZWxlY3RPcHRpb24pOiBzdHJpbmcge1xuICAgIGNvbnN0IGJhc2UgPSAnZmxleCBpdGVtcy1jZW50ZXIgcHgtNCBweS0yLjUgdGV4dC1nb3Zici1zbSB0ZXh0LWdvdmJyLWdyYXktODAgY3Vyc29yLXBvaW50ZXIgdHJhbnNpdGlvbi1jb2xvcnMgaG92ZXI6YmctZ292YnItZ3JheS0yJztcbiAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuaXNTZWxlY3RlZChvcHRpb24udmFsdWUpICYmICF0aGlzLm11bHRpcGxlXG4gICAgICA/ICdiZy1nb3Zici1wcmltYXJ5LWxpZ2h0ZXN0IGZvbnQtc2VtaWJvbGQnXG4gICAgICA6ICcnO1xuICAgIGNvbnN0IGRpc2FibGVkID0gb3B0aW9uLmRpc2FibGVkID8gJ29wYWNpdHktNTAgY3Vyc29yLW5vdC1hbGxvd2VkJyA6ICcnO1xuICAgIHJldHVybiBbYmFzZSwgc2VsZWN0ZWQsIGRpc2FibGVkXS5maWx0ZXIoQm9vbGVhbikuam9pbignICcpO1xuICB9XG5cbiAgaXNTZWxlY3RlZCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIHJldHVybiB0aGlzLm11bHRpcGxlVmFsdWVzLmluY2x1ZGVzKHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2luZ2xlVmFsdWUgPT09IHZhbHVlO1xuICB9XG5cbiAgdG9nZ2xlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0Rpc2FibGVkKSB7XG4gICAgICB0aGlzLmV4cGFuZGVkID0gIXRoaXMuZXhwYW5kZWQ7XG4gICAgICBpZiAoIXRoaXMuZXhwYW5kZWQpIHtcbiAgICAgICAgdGhpcy5zZWFyY2hUZXJtID0gJyc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0T3B0aW9uKG9wdGlvbjogQnJTZWxlY3RPcHRpb24pOiB2b2lkIHtcbiAgICBpZiAob3B0aW9uLmRpc2FibGVkKSByZXR1cm47XG5cbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgY29uc3QgaWR4ID0gdGhpcy5tdWx0aXBsZVZhbHVlcy5pbmRleE9mKG9wdGlvbi52YWx1ZSk7XG4gICAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgICAgdGhpcy5tdWx0aXBsZVZhbHVlcyA9IHRoaXMubXVsdGlwbGVWYWx1ZXMuZmlsdGVyKHYgPT4gdiAhPT0gb3B0aW9uLnZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubXVsdGlwbGVWYWx1ZXMgPSBbLi4udGhpcy5tdWx0aXBsZVZhbHVlcywgb3B0aW9uLnZhbHVlXTtcbiAgICAgIH1cbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5tdWx0aXBsZVZhbHVlcyk7XG4gICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMubXVsdGlwbGVWYWx1ZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNpbmdsZVZhbHVlID0gb3B0aW9uLnZhbHVlO1xuICAgICAgdGhpcy5leHBhbmRlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5zZWFyY2hUZXJtID0gJyc7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuc2luZ2xlVmFsdWUpO1xuICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLnNpbmdsZVZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBvbkJsdXIoKTogdm9pZCB7XG4gICAgLy8gRGVsYXkgdG8gYWxsb3cgY2xpY2sgb24gb3B0aW9uXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSB7XG4gICAgICAgIHRoaXMuZXhwYW5kZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZWFyY2hUZXJtID0gJyc7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICB9XG4gICAgfSwgMjAwKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgb25Eb2N1bWVudENsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgdGhpcy5leHBhbmRlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5zZWFyY2hUZXJtID0gJyc7XG4gICAgfVxuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgdGhpcy5tdWx0aXBsZVZhbHVlcyA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaW5nbGVWYWx1ZSA9ICh2YWx1ZSBhcyBzdHJpbmcpID8/ICcnO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmlzRGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnJTZWxlY3RPcHRpb24ge1xuICBsYWJlbDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG59XG4iXX0=
|
|
434
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnItc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWdvdmJyLXR3L3NyYy9saWIvY29tcG9uZW50cy9zZWxlY3QvYnItc2VsZWN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBQ0osaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBd0IsV0FBVyxFQUErQixNQUFNLGdCQUFnQixDQUFDOzs7QUFpSGhHLE1BQU0sT0FBTyxpQkFBaUI7YUEwQmIsV0FBTSxHQUFHLENBQUMsQUFBSixDQUFLO2FBUUYseUJBQW9CLEdBQTJCO1FBQ3JFLFFBQVEsRUFBRSxtQkFBbUI7S0FDOUIsQUFGMkMsQ0FFMUM7SUFFRixZQUF3QyxTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBcENuRCxnQkFBVyxHQUFHLFdBQVcsQ0FBQztRQUUxQixZQUFPLEdBQXFCLEVBQUUsQ0FBQztRQUMvQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBR2pCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixzQkFBaUIsR0FBRyxXQUFXLENBQUM7UUFDaEMsWUFBTyxHQUFpQyxRQUFRLENBQUM7UUFFMUQscURBQXFEO1FBQzVDLGtCQUFhLEdBQTJCLEVBQUUsQ0FBQztRQUUxQyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO1FBRWxFLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRW5CLHFDQUFxQztRQUM3QixnQkFBVyxHQUFHLEVB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXdHUDtpQkFDSjs7MEJBdUNjLElBQUk7OzBCQUFJLFFBQVE7eUNBckNwQixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVJLGVBQWU7c0JBQXhCLE1BQU07Z0JBdUtQLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFNlbGYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOZ0NvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JyLXNlbGVjdCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtGb3Jtc01vZHVsZV0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIGZvbnQtcmF3bGluZSBtYi00XCIgI3NlbGVjdENvbnRhaW5lcj5cbiAgICAgIEBpZiAobGFiZWwpIHtcbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgW2Zvcl09XCJzZWxlY3RJZFwiXG4gICAgICAgICAgY2xhc3M9XCJibG9jayB0ZXh0LWdvdmJyLXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1nb3Zici1ncmF5LTgwIG1iLTFcIlxuICAgICAgICAgID5cbiAgICAgICAgICB7eyBsYWJlbCB9fVxuICAgICAgICAgIEBpZiAocmVxdWlyZWQpIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1nb3Zici1kYW5nZXIgbWwtMC41XCI+Kjwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICB9XG4gICAgXG4gICAgICBAaWYgKGhlbHBlclRleHQgJiYgIWVycm9yKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYmxvY2sgdGV4dC1nb3Zici14cyB0ZXh0LWdvdmJyLWdyYXktNjAgbWItMVwiPlxuICAgICAgICAgIHt7IGhlbHBlclRleHQgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgfVxuICAgIFxuICAgICAgPCEtLSBUcmlnZ2VyIC0tPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW2lkXT1cInNlbGVjdElkXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxuICAgICAgICBbY2xhc3NdPVwidHJpZ2dlckNsYXNzZXNcIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlKClcIlxuICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXG4gICAgICAgID5cbiAgICAgICAgPHNwYW4gW2NsYXNzXT1cImRpc3BsYXlWYWx1ZSA/ICd0ZXh0LWdvdmJyLWdyYXktODAnIDogJ3RleHQtZ292YnItZ3JheS00MCdcIj5cbiAgICAgICAgICB7eyBkaXNwbGF5VmFsdWUgfHwgcGxhY2Vob2xkZXIgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8aVxuICAgICAgICAgIGNsYXNzPVwiZmEtc29saWQgZmEtY2hldnJvbi1kb3duIHRleHQtZ292YnItcHJpbWFyeSB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi0yMDBcIlxuICAgICAgICAgIFtjbGFzcy5yb3RhdGUtMTgwXT1cImV4cGFuZGVkXCJcbiAgICAgICAgPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIFxuICAgICAgPCEtLSBEcm9wZG93biAtLT5cbiAgICAgIEBpZiAoZXhwYW5kZWQpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgbGVmdC0wIHJpZ2h0LTAgei0xMCBtdC0xIGJnLXdoaXRlIGJvcmRlciBib3JkZXItZ292YnItZ3JheS0xMCBzaGFkb3ctbGcgbWF4LWgtWzQwNHB4XSBvdmVyZmxvdy15LWF1dG9cIlxuICAgICAgICAgID5cbiAgICAgICAgICA8IS0tIFNlYXJjaCBmaWx0ZXIgLS0+XG4gICAgICAgICAgQGlmIChzZWFyY2hhYmxlKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0yIGJvcmRlci1iIGJvcmRlci1nb3Zici1ncmF5LTEwXCI+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbCBweC0zIHB5LTIgdGV4dC1nb3Zici1zbSBib3JkZXIgYm9yZGVyLWdvdmJyLWdyYXktMjAgcm91bmRlZCBnb3Zici1mb2N1cy1yaW5nXCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwic2VhcmNoUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGVybVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgICA8IS0tIE9wdGlvbnMgLS0+XG4gICAgICAgICAgPHVsIHJvbGU9XCJsaXN0Ym94XCIgY2xhc3M9XCJweS0xXCI+XG4gICAgICAgICAgICBAZm9yIChvcHRpb24gb2YgZmlsdGVyZWRPcHRpb25zOyB0cmFjayBvcHRpb24pIHtcbiAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImlzU2VsZWN0ZWQob3B0aW9uLnZhbHVlKVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cImdldE9wdGlvbkNsYXNzZXMob3B0aW9uKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9wdGlvbihvcHRpb24pOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cInNlbGVjdE9wdGlvbihvcHRpb24pOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8IS0tIE11bHRpcGxlOiBjaGVja2JveCAtLT5cbiAgICAgICAgICAgICAgICBAaWYgKG11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGZsZXgtc2hyaW5rLTAgdy01IGgtNSBtci0zIGJvcmRlci0yIHJvdW5kZWQtc20gdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYmctZ292YnItcHJpbWFyeV09XCJpc1NlbGVjdGVkKG9wdGlvbi52YWx1ZSlcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYm9yZGVyLWdvdmJyLXByaW1hcnldPVwiaXNTZWxlY3RlZChvcHRpb24udmFsdWUpXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1nb3Zici1ncmF5LTQwXT1cIiFpc1NlbGVjdGVkKG9wdGlvbi52YWx1ZSlcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoaXNTZWxlY3RlZChvcHRpb24udmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LTMgaC0zIHRleHQtd2hpdGVcIiB2aWV3Qm94PVwiMCAwIDEyIDEwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBvbHlsaW5lIHBvaW50cz1cIjEuNSA1IDQuNSA4IDEwLjUgMlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0cnVuY2F0ZVwiPnt7IG9wdGlvbi5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoZmlsdGVyZWRPcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJweC00IHB5LTMgdGV4dC1nb3Zici1zbSB0ZXh0LWdvdmJyLWdyYXktNDAgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICBOZW5odW0gcmVzdWx0YWRvIGVuY29udHJhZG9cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICBcbiAgICAgIDwhLS0gRXJyb3IgLS0+XG4gICAgICBAaWYgKGRpc3BsYXlFcnJvcikge1xuICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIG10LTEgdGV4dC1nb3Zici1zbSB0ZXh0LWdvdmJyLWRhbmdlclwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtdGltZXMtY2lyY2xlIG1yLTFcIj48L2k+e3sgZGlzcGxheUVycm9yIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICBgLFxufSlcbmV4cG9ydCBjbGFzcyBCclNlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgQElucHV0KCkgbGFiZWw/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJ1NlbGVjaW9uZSc7XG4gIEBJbnB1dCgpIGhlbHBlclRleHQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIG9wdGlvbnM6IEJyU2VsZWN0T3B0aW9uW10gPSBbXTtcbiAgQElucHV0KCkgcmVxdWlyZWQgPSBmYWxzZTtcbiAgLyoqIE1lbnNhZ2VtIGRlIGVycm8gbWFudWFsIChzb2JyZXNjcmV2ZSBlcnJvcyBhdXRvbcOhdGljb3MgZG8gdmFsaWRhdG9yKSAqL1xuICBASW5wdXQoKSBlcnJvcj86IHN0cmluZztcbiAgQElucHV0KCkgbXVsdGlwbGUgPSBmYWxzZTtcbiAgQElucHV0KCkgc2VhcmNoYWJsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBzZWFyY2hQbGFjZWhvbGRlciA9ICdCdXNjYXIuLi4nO1xuICBASW5wdXQoKSBkZW5zaXR5OiAnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnID0gJ21lZGl1bSc7XG5cbiAgLyoqIE1lbnNhZ2VucyBjdXN0b21pemFkYXMgcGFyYSBlcnJvcyBkZSB2YWxpZGHDp8OjbyAqL1xuICBASW5wdXQoKSBlcnJvck1lc3NhZ2VzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgc3RyaW5nW10+KCk7XG5cbiAgZXhwYW5kZWQgPSBmYWxzZTtcbiAgc2VhcmNoVGVybSA9ICcnO1xuICBpc0Rpc2FibGVkID0gZmFsc2U7XG5cbiAgLy8gU2luZ2xlIHZhbHVlIG9yIGFycmF5IGZvciBtdWx0aXBsZVxuICBwcml2YXRlIHNpbmdsZVZhbHVlID0gJyc7XG4gIHByaXZhdGUgbXVsdGlwbGVWYWx1ZXM6IHN0cmluZ1tdID0gW107XG5cbiAgcHJpdmF0ZSBzdGF0aWMgbmV4dElkID0gMDtcbiAgc2VsZWN0SWQgPSBgYnItc2VsZWN0LSR7QnJTZWxlY3RDb21wb25lbnQubmV4dElkKyt9YDtcblxuICBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuICBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICBwcml2YXRlIGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgZGVmYXVsdEVycm9yTWVzc2FnZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgcmVxdWlyZWQ6ICdDYW1wbyBvYnJpZ2F0w7NyaW8nLFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKEBTZWxmKCkgQE9wdGlvbmFsKCkgcHJpdmF0ZSBuZ0NvbnRyb2w6IE5nQ29udHJvbCkge1xuICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldG9ybmEgYSBtZW5zYWdlbSBkZSBlcnJvIGEgc2VyIGV4aWJpZGEuXG4gICAqL1xuICBnZXQgZGlzcGxheUVycm9yKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMuZXJyb3IpIHtcbiAgICAgIHJldHVybiB0aGlzLmVycm9yO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2wpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMubmdDb250cm9sLmNvbnRyb2w7XG5cbiAgICBpZiAoIWNvbnRyb2wuZXJyb3JzIHx8ICghY29udHJvbC50b3VjaGVkICYmICFjb250cm9sLmRpcnR5KSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5nZXRGaXJzdEVycm9yTWVzc2FnZShjb250cm9sLmVycm9ycyk7XG4gIH1cblxuICBwcml2YXRlIGdldEZpcnN0RXJyb3JNZXNzYWdlKGVycm9yczogVmFsaWRhdGlvbkVycm9ycyk6IHN0cmluZyB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoZXJyb3JzKSkge1xuICAgICAgaWYgKHRoaXMuZXJyb3JNZXNzYWdlc1trZXldKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVycm9yTWVzc2FnZXNba2V5XTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRlZmF1bHRNc2cgPSBCclNlbGVjdENvbXBvbmVudC5kZWZhdWx0RXJyb3JNZXNzYWdlc1trZXldO1xuICAgICAgaWYgKGRlZmF1bHRNc2cpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRNc2c7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAnQ2FtcG8gaW52w6FsaWRvJztcbiAgfVxuXG4gIGdldCBkaXNwbGF5VmFsdWUoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgaWYgKHRoaXMubXVsdGlwbGVWYWx1ZXMubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XG4gICAgICBjb25zdCBsYWJlbHMgPSB0aGlzLm11bHRpcGxlVmFsdWVzXG4gICAgICAgIC5tYXAodiA9PiB0aGlzLm9wdGlvbnMuZmluZChvID0+IG8udmFsdWUgPT09IHYpPy5sYWJlbClcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKTtcbiAgICAgIHJldHVybiBsYWJlbHMuam9pbignLCAnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5maW5kKG8gPT4gby52YWx1ZSA9PT0gdGhpcy5zaW5nbGVWYWx1ZSk/LmxhYmVsIHx8ICcnO1xuICB9XG5cbiAgZ2V0IGZpbHRlcmVkT3B0aW9ucygpOiBCclNlbGVjdE9wdGlvbltdIHtcbiAgICBpZiAoIXRoaXMuc2VhcmNoVGVybSkgcmV0dXJuIHRoaXMub3B0aW9ucztcbiAgICBjb25zdCB0ZXJtID0gdGhpcy5zZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5maWx0ZXIobyA9PiBvLmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSkpO1xuICB9XG5cbiAgZ2V0IHRyaWdnZXJDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgY29uc3QgZGVuc2l0eVN0eWxlcyA9IHtcbiAgICAgIHNtYWxsOiAndGV4dC1nb3Zici1zbScsXG4gICAgICBtZWRpdW06ICd0ZXh0LWdvdmJyLWJhc2UnLFxuICAgICAgbGFyZ2U6ICd0ZXh0LWdvdmJyLWxnJyxcbiAgICB9IGFzIGNvbnN0O1xuXG4gICAgY29uc3QgZGVuc2l0eUhlaWdodHMgPSB7XG4gICAgICBzbWFsbDogJ2gtW3ZhcigtLWdvdmJyLWlucHV0LXNtYWxsKV0nLFxuICAgICAgbWVkaXVtOiAnaC1bdmFyKC0tZ292YnItaW5wdXQtbWVkaXVtKV0nLFxuICAgICAgbGFyZ2U6ICdoLVt2YXIoLS1nb3Zici1pbnB1dC1sYXJnZSldJyxcbiAgICB9IGFzIGNvbnN0O1xuXG4gICAgY29uc3QgYmFzZSA9IFtcbiAgICAgICd3LWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHB4LTQgZm9udC1yYXdsaW5lIGdvdmJyLWlucHV0JyxcbiAgICAgIGRlbnNpdHlTdHlsZXNbdGhpcy5kZW5zaXR5XSxcbiAgICAgIGRlbnNpdHlIZWlnaHRzW3RoaXMuZGVuc2l0eV0sXG4gICAgXS5qb2luKCcgJyk7XG5cbiAgICBjb25zdCBzdGF0dXNDbHMgPSB0aGlzLmRpc3BsYXlFcnJvclxuICAgICAgPyAnZ292YnItaW5wdXQtLWRhbmdlcidcbiAgICAgIDogJyc7XG5cbiAgICBjb25zdCBkaXNhYmxlZENscyA9IHRoaXMuaXNEaXNhYmxlZFxuICAgICAgPyAnYmctZ292YnItZ3JheS0yIHRleHQtZ292YnItZ3JheS00MCBjdXJzb3Itbm90LWFsbG93ZWQnXG4gICAgICA6ICdiZy13aGl0ZSBjdXJzb3ItcG9pbnRlcic7XG5cbiAgICByZXR1cm4gW2Jhc2UsIHN0YXR1c0NscywgZGlzYWJsZWRDbHNdLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJyk7XG4gIH1cblxuICBnZXRPcHRpb25DbGFzc2VzKG9wdGlvbjogQnJTZWxlY3RPcHRpb24pOiBzdHJpbmcge1xuICAgIGNvbnN0IGJhc2UgPSAnZmxleCBpdGVtcy1jZW50ZXIgcHgtNCBweS0yLjUgdGV4dC1nb3Zici1zbSB0ZXh0LWdvdmJyLWdyYXktODAgY3Vyc29yLXBvaW50ZXIgdHJhbnNpdGlvbi1jb2xvcnMgaG92ZXI6YmctZ292YnItZ3JheS0yJztcbiAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuaXNTZWxlY3RlZChvcHRpb24udmFsdWUpICYmICF0aGlzLm11bHRpcGxlXG4gICAgICA/ICdiZy1nb3Zici1wcmltYXJ5LWxpZ2h0ZXN0IGZvbnQtc2VtaWJvbGQnXG4gICAgICA6ICcnO1xuICAgIGNvbnN0IGRpc2FibGVkID0gb3B0aW9uLmRpc2FibGVkID8gJ29wYWNpdHktNTAgY3Vyc29yLW5vdC1hbGxvd2VkJyA6ICcnO1xuICAgIHJldHVybiBbYmFzZSwgc2VsZWN0ZWQsIGRpc2FibGVkXS5maWx0ZXIoQm9vbGVhbikuam9pbignICcpO1xuICB9XG5cbiAgaXNTZWxlY3RlZCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIHJldHVybiB0aGlzLm11bHRpcGxlVmFsdWVzLmluY2x1ZGVzKHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2luZ2xlVmFsdWUgPT09IHZhbHVlO1xuICB9XG5cbiAgdG9nZ2xlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0Rpc2FibGVkKSB7XG4gICAgICB0aGlzLmV4cGFuZGVkID0gIXRoaXMuZXhwYW5kZWQ7XG4gICAgICBpZiAoIXRoaXMuZXhwYW5kZWQpIHtcbiAgICAgICAgdGhpcy5zZWFyY2hUZXJtID0gJyc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0T3B0aW9uKG9wdGlvbjogQnJTZWxlY3RPcHRpb24pOiB2b2lkIHtcbiAgICBpZiAob3B0aW9uLmRpc2FibGVkKSByZXR1cm47XG5cbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgY29uc3QgaWR4ID0gdGhpcy5tdWx0aXBsZVZhbHVlcy5pbmRleE9mKG9wdGlvbi52YWx1ZSk7XG4gICAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgICAgdGhpcy5tdWx0aXBsZVZhbHVlcyA9IHRoaXMubXVsdGlwbGVWYWx1ZXMuZmlsdGVyKHYgPT4gdiAhPT0gb3B0aW9uLnZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubXVsdGlwbGVWYWx1ZXMgPSBbLi4udGhpcy5tdWx0aXBsZVZhbHVlcywgb3B0aW9uLnZhbHVlXTtcbiAgICAgIH1cbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5tdWx0aXBsZVZhbHVlcyk7XG4gICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMubXVsdGlwbGVWYWx1ZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNpbmdsZVZhbHVlID0gb3B0aW9uLnZhbHVlO1xuICAgICAgdGhpcy5leHBhbmRlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5zZWFyY2hUZXJtID0gJyc7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuc2luZ2xlVmFsdWUpO1xuICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLnNpbmdsZVZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBvbkJsdXIoKTogdm9pZCB7XG4gICAgLy8gRGVsYXkgdG8gYWxsb3cgY2xpY2sgb24gb3B0aW9uXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSB7XG4gICAgICAgIHRoaXMuZXhwYW5kZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZWFyY2hUZXJtID0gJyc7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICB9XG4gICAgfSwgMjAwKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgb25Eb2N1bWVudENsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgdGhpcy5leHBhbmRlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5zZWFyY2hUZXJtID0gJyc7XG4gICAgfVxuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgdGhpcy5tdWx0aXBsZVZhbHVlcyA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaW5nbGVWYWx1ZSA9ICh2YWx1ZSBhcyBzdHJpbmcpID8/ICcnO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmlzRGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnJTZWxlY3RPcHRpb24ge1xuICBsYWJlbDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG59XG4iXX0=
|